From 5522b00ad27afe45643631b0873a12f7a5b6e928 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Fri, 8 Aug 2025 14:26:48 +0200 Subject: [PATCH 01/69] Experimental Platform split --- site/content/3.12/_index.md | 4 ++-- .../3.12/about-arangodb/features/platform.md | 12 +++++----- site/content/3.12/aql/functions/vector.md | 2 +- site/content/3.12/deploy/_index.md | 2 +- .../working-with-indexes/vector-indexes.md | 2 +- site/content/platform/_index.md | 24 +++++++++++++++++++ .../about-the-platform/_index.md} | 4 ++-- .../{3.12 => platform}/data-science/_index.md | 18 +++++++------- .../data-science/graphml/_index.md | 0 .../data-science/graphml/notebooks-api.md | 2 +- .../data-science/graphml/quickstart.md | 0 .../data-science/graphml/ui.md | 0 .../data-science/graphrag/_index.md | 0 .../data-science/graphrag/services/_index.md | 0 .../data-science/graphrag/services/gen-ai.md | 2 +- .../graphrag/services/importer.md | 0 .../data-science/graphrag/services/mlflow.md | 2 +- .../services/natural-language-to-aql.md | 0 .../graphrag/services/retriever.md | 0 .../services/triton-inference-server.md | 0 .../graphrag/tutorial-notebook.md | 2 +- .../data-science/graphrag/web-interface.md | 2 +- .../data-science/integrations/_index.md | 0 .../integrations/arangodb-cugraph-adapter.md | 0 .../integrations/arangodb-dgl-adapter.md | 0 .../integrations/arangodb-networkx-adapter.md | 0 .../integrations/arangodb-pyg-adapter.md | 0 .../integrations/arangodb-rdf-adapter.md | 0 .../data-science/integrations/langchain.md | 0 .../data-science/notebook-servers.md | 2 +- .../platform/graph-intelligence/_index.md | 5 ++++ .../graph-intelligence}/graph-analytics.md | 12 +++++----- .../graph-intelligence}/graph-visualizer.md | 4 ++-- .../platform.md => platform/release-notes.md} | 8 +++---- site/data/versions.yaml | 5 ++++ .../layouts/partials/shortcodes/version.html | 4 +++- .../arangoproxy/internal/service/service.go | 3 +++ 37 files changed, 80 insertions(+), 41 deletions(-) create mode 100644 site/content/platform/_index.md rename site/content/{3.12/components/platform.md => platform/about-the-platform/_index.md} (98%) rename site/content/{3.12 => platform}/data-science/_index.md (89%) rename site/content/{3.12 => platform}/data-science/graphml/_index.md (100%) rename site/content/{3.12 => platform}/data-science/graphml/notebooks-api.md (99%) rename site/content/{3.12 => platform}/data-science/graphml/quickstart.md (100%) rename site/content/{3.12 => platform}/data-science/graphml/ui.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/_index.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/services/_index.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/services/gen-ai.md (98%) rename site/content/{3.12 => platform}/data-science/graphrag/services/importer.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/services/mlflow.md (98%) rename site/content/{3.12 => platform}/data-science/graphrag/services/natural-language-to-aql.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/services/retriever.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/services/triton-inference-server.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/tutorial-notebook.md (99%) rename site/content/{3.12 => platform}/data-science/graphrag/web-interface.md (98%) rename site/content/{3.12 => platform}/data-science/integrations/_index.md (100%) rename site/content/{3.12 => platform}/data-science/integrations/arangodb-cugraph-adapter.md (100%) rename site/content/{3.12 => platform}/data-science/integrations/arangodb-dgl-adapter.md (100%) rename site/content/{3.12 => platform}/data-science/integrations/arangodb-networkx-adapter.md (100%) rename site/content/{3.12 => platform}/data-science/integrations/arangodb-pyg-adapter.md (100%) rename site/content/{3.12 => platform}/data-science/integrations/arangodb-rdf-adapter.md (100%) rename site/content/{3.12 => platform}/data-science/integrations/langchain.md (100%) rename site/content/{3.12 => platform}/data-science/notebook-servers.md (96%) create mode 100644 site/content/platform/graph-intelligence/_index.md rename site/content/{3.12/graphs => platform/graph-intelligence}/graph-analytics.md (98%) rename site/content/{3.12/graphs => platform/graph-intelligence}/graph-visualizer.md (99%) rename site/content/{3.12/release-notes/platform.md => platform/release-notes.md} (82%) diff --git a/site/content/3.12/_index.md b/site/content/3.12/_index.md index 55372ec34b..cc569bfae0 100644 --- a/site/content/3.12/_index.md +++ b/site/content/3.12/_index.md @@ -26,11 +26,11 @@ ArangoDB's Query Language AQL lets you use graphs, JSON documents, and search via a single, composable query language. {{% /card %}} -{{% card title="GenAI & Data Science" link="data-science/" %}} +{{% card title="GenAI & Data Science" link="../platform/data-science/" %}} Discover the graph-powered machine learning and GraphRAG features of ArangoDB. {{% /card %}} -{{% card title="ArangoDB Platform" link="components/platform/" %}} +{{% card title="ArangoDB Platform" link="../platform/" %}} The ArangoDB Platform is the umbrella for hosting the entire ArangoDB offering of products, including GraphML and GraphRAG. {{% /card %}} diff --git a/site/content/3.12/about-arangodb/features/platform.md b/site/content/3.12/about-arangodb/features/platform.md index 2b833379d4..d6ef7fd320 100644 --- a/site/content/3.12/about-arangodb/features/platform.md +++ b/site/content/3.12/about-arangodb/features/platform.md @@ -8,7 +8,7 @@ description: >- solution with a unified interface --- For in-depth information about the ArangoDB Platform as a whole and how to -deploy and use it, see [The ArangoDB Platform](../../components/platform.md). +deploy and use it, see [The ArangoDB Platform](../../../platform/about-the-platform/_index.md). ## Architecture @@ -34,24 +34,24 @@ deploy and use it, see [The ArangoDB Platform](../../components/platform.md). - [**ArangoDB Core**](core.md): The ArangoDB database system with support for graphs, documents, key-value, full-text search, and vector search. -- [**Graph Visualizer**](../../graphs/graph-visualizer.md): +- [**Graph Visualizer**](../../../platform/graph-intelligence/graph-visualizer.md): A web-based tool for exploring your graph data with an intuitive interface and sophisticated querying capabilities. -- [**Graph Analytics**](../../graphs/graph-analytics.md): +- [**Graph Analytics**](../../../platform/graph-intelligence/graph-analytics.md): A service that can efficiently load graph data from the core database system and run graph algorithms such as PageRank and many more. -- [**GenAI Suite**](../../data-science/_index.md): +- [**GenAI Suite**](../../../platform/data-science/_index.md): ArangoDB's graph-powered machine learning (GraphML) as well as GraphRAG for automatically building knowledge graphs from text and taking advantage of both excerpts and higher-level summaries as context for turbocharging GenAI applications. -- [**Notebook servers**](../../data-science/notebook-servers.md): +- [**Notebook servers**](../../../platform/data-science/notebook-servers.md): Run Jupyter kernels in the Platform for hosting interactive, Python-based notebooks to experiment and develop applications. -- [**MLflow integration**](../../data-science/graphrag/services/mlflow.md): +- [**MLflow integration**](../../../platform/data-science/graphrag/services/mlflow.md): Use the popular MLflow for machine learning practitioners as part of the ArangoDB Platform. diff --git a/site/content/3.12/aql/functions/vector.md b/site/content/3.12/aql/functions/vector.md index 45341b8ea8..987de8e45e 100644 --- a/site/content/3.12/aql/functions/vector.md +++ b/site/content/3.12/aql/functions/vector.md @@ -12,7 +12,7 @@ To use vector search, you need to have vector embeddings stored in documents and the attribute that stores them needs to be indexed by a [vector index](../../index-and-search/indexing/working-with-indexes/vector-indexes.md). -You can calculate vector embeddings using [ArangoDB's GraphML](../../data-science/graphml/_index.md) +You can calculate vector embeddings using [ArangoDB's GraphML](../../../platform/data-science/graphml/_index.md) capabilities (available in ArangoGraph) or using external tools. {{< warning >}} diff --git a/site/content/3.12/deploy/_index.md b/site/content/3.12/deploy/_index.md index e0d36ebcd0..e99d1d56e5 100644 --- a/site/content/3.12/deploy/_index.md +++ b/site/content/3.12/deploy/_index.md @@ -50,7 +50,7 @@ ArangoDB product offering with a unified interface in a Kubernetes cluster. It is offered for self-hosting on-prem or in the cloud and as a managed service, superseding the ArangoGraph Insights Platform. -See [The ArangoDB Platform](../components/platform.md) for details. +See [The ArangoDB Platform](../../platform/about-the-platform/_index.md) for details. ## How to deploy diff --git a/site/content/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md index 17d9be8fe3..955051efc6 100644 --- a/site/content/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md +++ b/site/content/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md @@ -33,7 +33,7 @@ startup option needs to be enabled on the deployment you want to restore to. {{< /warning >}} 1. Enable the experimental vector index feature. -2. Calculate vector embeddings using [ArangoDB's GraphML](../../../data-science/graphml/_index.md) +2. Calculate vector embeddings using [ArangoDB's GraphML](../../../../platform/data-science/graphml/_index.md) capabilities (available in ArangoGraph) or using external tools. Store each vector as an attribute in the respective document. 3. Create a vector index over this attribute. You need to choose which diff --git a/site/content/platform/_index.md b/site/content/platform/_index.md new file mode 100644 index 0000000000..a70a2b36e7 --- /dev/null +++ b/site/content/platform/_index.md @@ -0,0 +1,24 @@ +--- +title: Recommended Resources +menuTitle: 'Platform' +weight: 0 +layout: default +--- +{{< cloudbanner >}} + +{{< cards >}} + +{{% card title="What is the ArangoDB Platform?" link="about-the-platform/" %}} +The ArangoDB Platform is the umbrella for hosting the entire ArangoDB offering +of products, including GraphML and GraphRAG. +{{% /card %}} + +{{% card title="Graph Intelligence" link="graph-intelligence/" %}} +Analyze and visualize your data with the Graph Analytics and Graph Visualizer features. +{{% /card %}} + +{{% card title="GenAI & Data Science" link="data-science/" %}} +Discover the graph-powered machine learning and GraphRAG features of ArangoDB. +{{% /card %}} + +{{< /cards >}} diff --git a/site/content/3.12/components/platform.md b/site/content/platform/about-the-platform/_index.md similarity index 98% rename from site/content/3.12/components/platform.md rename to site/content/platform/about-the-platform/_index.md index ba034f43cf..e643b843c7 100644 --- a/site/content/3.12/components/platform.md +++ b/site/content/platform/about-the-platform/_index.md @@ -1,7 +1,7 @@ --- title: The ArangoDB Platform menuTitle: Platform -weight: 169 +weight: 5 description: >- The ArangoDB Platform brings everything ArangoDB offers together to a single solution that you can deploy on-prem or use as a managed service @@ -65,7 +65,7 @@ of the platform features. ### Use the ArangoDB Platform as a managed service The ArangoDB Platform is not available as a managed service yet, but it will -become available for the [ArangoGraph Insights Platform](../arangograph/_index.md) +become available for the [ArangoGraph Insights Platform](../../3.12/arangograph/_index.md) in the future. Until then, you can request early access to the self-hosted ArangoDB Platform for testing. diff --git a/site/content/3.12/data-science/_index.md b/site/content/platform/data-science/_index.md similarity index 89% rename from site/content/3.12/data-science/_index.md rename to site/content/platform/data-science/_index.md index 3e0f3d853d..c6981e809c 100644 --- a/site/content/3.12/data-science/_index.md +++ b/site/content/platform/data-science/_index.md @@ -1,7 +1,7 @@ --- title: Generative Artificial Intelligence (GenAI) and Data Science menuTitle: GenAI & Data Science -weight: 115 +weight: 15 description: >- ArangoDB's set of tools and technologies enables analytics, machine learning, and GenAI applications powered by graph data @@ -48,16 +48,16 @@ ArangoDB Platform web interface, guiding you through the process. Alongside these components, you also get the following additional features: -- [**Graph Visualizer**](../graphs/graph-visualizer.md): A web-based tool for exploring your graph data with an +- [**Graph Visualizer**](../graph-intelligence/graph-visualizer.md): A web-based tool for exploring your graph data with an intuitive interface and sophisticated querying capabilities. - [**Jupyter notebooks**](notebook-servers.md): Run a Jupyter kernel in the platform for hosting interactive notebooks for experimentation and development of applications that use ArangoDB as their backend. - **Public and private LLM support**: Use public LLMs such as OpenAI - or private LLMs with [Triton Inference Server](../data-science/graphrag/services/triton-inference-server.md). -- [**MLflow integration**](./graphrag/services/mlflow.md): Use the popular MLflow as a model registry for private LLMs + or private LLMs with [Triton Inference Server](graphrag/services/triton-inference-server.md). +- [**MLflow integration**](graphrag/services/mlflow.md): Use the popular MLflow as a model registry for private LLMs or to run machine learning experiments as part of the ArangoDB Platform. -- [**Integrations**](./integrations/_index.md): Use ArangoDB together with cuGraph, NetworkX, +- [**Integrations**](integrations/_index.md): Use ArangoDB together with cuGraph, NetworkX, and other data science tools. - **Application Programming Interfaces**: Use the underlying APIs of the GenAI Suite services and build your own integrations. See the @@ -69,7 +69,7 @@ Alongside these components, you also get the following additional features: The ArangoDB Platform includes the following features independent of the GenAI Suite: -- [**Graph Analytics**](../graphs/graph-analytics.md): Run graph algorithms such as PageRank +- [**Graph Analytics**](../graph-intelligence/graph-analytics.md): Run graph algorithms such as PageRank on dedicated compute resources. ## From graph to AI @@ -92,7 +92,7 @@ Graph queries can answer questions like _**Who can introduce me to person X**_? ![Graph Query](../../images/graph-query.png) -See [Graphs in AQL](../aql/graphs/_index.md) for the supported graph queries. +See [Graphs in AQL](../../3.12/aql/graphs/_index.md) for the supported graph queries. ### Graph Analytics @@ -106,7 +106,7 @@ Graph analytics can answer questions like _**Who are the most connected persons* ArangoDB offers _Graph Analytics Engines_ to run algorithms such as connected components, label propagation, and PageRank on your data. This feature is available for the ArangoGraph Insights Platform. See -[Graph Analytics](../graphs/graph-analytics.md) for details. +[Graph Analytics](../graph-intelligence/graph-analytics.md) for details. ### GraphML @@ -168,5 +168,5 @@ the following tasks: ## Sample datasets If you want to try out ArangoDB's data science features, you may use the -[`arango-datasets` Python package](../components/tools/arango-datasets.md) +[`arango-datasets` Python package](../../3.12/components/tools/arango-datasets.md) to load sample datasets into a deployment. diff --git a/site/content/3.12/data-science/graphml/_index.md b/site/content/platform/data-science/graphml/_index.md similarity index 100% rename from site/content/3.12/data-science/graphml/_index.md rename to site/content/platform/data-science/graphml/_index.md diff --git a/site/content/3.12/data-science/graphml/notebooks-api.md b/site/content/platform/data-science/graphml/notebooks-api.md similarity index 99% rename from site/content/3.12/data-science/graphml/notebooks-api.md rename to site/content/platform/data-science/graphml/notebooks-api.md index c9ade4cacf..9b0d593a2a 100644 --- a/site/content/3.12/data-science/graphml/notebooks-api.md +++ b/site/content/platform/data-science/graphml/notebooks-api.md @@ -82,7 +82,7 @@ news sources, and locations are interconnected into a large graph. ![Example Event](../../../images/ArangoML_open_intelligence_visualization.png) -The [`arango-datasets`](../../components/tools/arango-datasets.md) Python package +The [`arango-datasets`](../../../3.12/components/tools/arango-datasets.md) Python package allows you to load pre-defined datasets into ArangoDB Platform. It comes pre-installed in the GraphML notebook environment. diff --git a/site/content/3.12/data-science/graphml/quickstart.md b/site/content/platform/data-science/graphml/quickstart.md similarity index 100% rename from site/content/3.12/data-science/graphml/quickstart.md rename to site/content/platform/data-science/graphml/quickstart.md diff --git a/site/content/3.12/data-science/graphml/ui.md b/site/content/platform/data-science/graphml/ui.md similarity index 100% rename from site/content/3.12/data-science/graphml/ui.md rename to site/content/platform/data-science/graphml/ui.md diff --git a/site/content/3.12/data-science/graphrag/_index.md b/site/content/platform/data-science/graphrag/_index.md similarity index 100% rename from site/content/3.12/data-science/graphrag/_index.md rename to site/content/platform/data-science/graphrag/_index.md diff --git a/site/content/3.12/data-science/graphrag/services/_index.md b/site/content/platform/data-science/graphrag/services/_index.md similarity index 100% rename from site/content/3.12/data-science/graphrag/services/_index.md rename to site/content/platform/data-science/graphrag/services/_index.md diff --git a/site/content/3.12/data-science/graphrag/services/gen-ai.md b/site/content/platform/data-science/graphrag/services/gen-ai.md similarity index 98% rename from site/content/3.12/data-science/graphrag/services/gen-ai.md rename to site/content/platform/data-science/graphrag/services/gen-ai.md index 280dfd2511..a87c3c44df 100644 --- a/site/content/3.12/data-science/graphrag/services/gen-ai.md +++ b/site/content/platform/data-science/graphrag/services/gen-ai.md @@ -98,7 +98,7 @@ curl -X POST https://:8529/_open/auth \ This returns a JWT token that you can use as your Bearer token. For more details about ArangoDB authentication and JWT tokens, see -the [ArangoDB Authentication](../../../develop/http-api/authentication/#jwt-user-tokens) +the [ArangoDB Authentication](../../../../3.12/develop/http-api/authentication/#jwt-user-tokens) documentation. ## Complete Service lifecycle example diff --git a/site/content/3.12/data-science/graphrag/services/importer.md b/site/content/platform/data-science/graphrag/services/importer.md similarity index 100% rename from site/content/3.12/data-science/graphrag/services/importer.md rename to site/content/platform/data-science/graphrag/services/importer.md diff --git a/site/content/3.12/data-science/graphrag/services/mlflow.md b/site/content/platform/data-science/graphrag/services/mlflow.md similarity index 98% rename from site/content/3.12/data-science/graphrag/services/mlflow.md rename to site/content/platform/data-science/graphrag/services/mlflow.md index 0de3c91d3b..305ea90a1b 100644 --- a/site/content/3.12/data-science/graphrag/services/mlflow.md +++ b/site/content/platform/data-science/graphrag/services/mlflow.md @@ -93,7 +93,7 @@ curl -X POST https://:8529/_open/auth \ This returns a JWT token that you can use as your Bearer token. For more details about ArangoDB authentication and JWT tokens, see the -[ArangoDB Authentication](https://docs.arangodb.com/stable/develop/http-api/authentication/#jwt-user-tokens) +[ArangoDB Authentication](../../../../3.12/develop/http-api/authentication/#jwt-user-tokens) documentation. ## Installation diff --git a/site/content/3.12/data-science/graphrag/services/natural-language-to-aql.md b/site/content/platform/data-science/graphrag/services/natural-language-to-aql.md similarity index 100% rename from site/content/3.12/data-science/graphrag/services/natural-language-to-aql.md rename to site/content/platform/data-science/graphrag/services/natural-language-to-aql.md diff --git a/site/content/3.12/data-science/graphrag/services/retriever.md b/site/content/platform/data-science/graphrag/services/retriever.md similarity index 100% rename from site/content/3.12/data-science/graphrag/services/retriever.md rename to site/content/platform/data-science/graphrag/services/retriever.md diff --git a/site/content/3.12/data-science/graphrag/services/triton-inference-server.md b/site/content/platform/data-science/graphrag/services/triton-inference-server.md similarity index 100% rename from site/content/3.12/data-science/graphrag/services/triton-inference-server.md rename to site/content/platform/data-science/graphrag/services/triton-inference-server.md diff --git a/site/content/3.12/data-science/graphrag/tutorial-notebook.md b/site/content/platform/data-science/graphrag/tutorial-notebook.md similarity index 99% rename from site/content/3.12/data-science/graphrag/tutorial-notebook.md rename to site/content/platform/data-science/graphrag/tutorial-notebook.md index 00df23951e..2738493dcc 100644 --- a/site/content/3.12/data-science/graphrag/tutorial-notebook.md +++ b/site/content/platform/data-science/graphrag/tutorial-notebook.md @@ -201,7 +201,7 @@ pprint(importerResponse) ### Visualize and interact with the Knowledge Graph Once the importer service has processed the document, you can visualize and -interact with the generated Knowledge Graph using the [Graph Visualizer](../../graphs/graph-visualizer.md) +interact with the generated Knowledge Graph using the [Graph Visualizer](../../graph-intelligence/graph-visualizer.md) directly from the ArangoDB Platform web interface. 1. In the ArangoDB Platform web interface, select the database you have previously used. diff --git a/site/content/3.12/data-science/graphrag/web-interface.md b/site/content/platform/data-science/graphrag/web-interface.md similarity index 98% rename from site/content/3.12/data-science/graphrag/web-interface.md rename to site/content/platform/data-science/graphrag/web-interface.md index b167f66616..275bbeb81a 100644 --- a/site/content/3.12/data-science/graphrag/web-interface.md +++ b/site/content/platform/data-science/graphrag/web-interface.md @@ -107,7 +107,7 @@ You can only import a single file, either in `.md` or `.txt` format. You can open and explore the Knowledge Graph that has been generated by clicking on the **Explore in visualizer** button. -For more information, see the [Graph Visualizer](../../graphs/graph-visualizer.md) documentation. +For more information, see the [Graph Visualizer](../../graph-intelligence/graph-visualizer.md) documentation. ## Configure the Retriever service diff --git a/site/content/3.12/data-science/integrations/_index.md b/site/content/platform/data-science/integrations/_index.md similarity index 100% rename from site/content/3.12/data-science/integrations/_index.md rename to site/content/platform/data-science/integrations/_index.md diff --git a/site/content/3.12/data-science/integrations/arangodb-cugraph-adapter.md b/site/content/platform/data-science/integrations/arangodb-cugraph-adapter.md similarity index 100% rename from site/content/3.12/data-science/integrations/arangodb-cugraph-adapter.md rename to site/content/platform/data-science/integrations/arangodb-cugraph-adapter.md diff --git a/site/content/3.12/data-science/integrations/arangodb-dgl-adapter.md b/site/content/platform/data-science/integrations/arangodb-dgl-adapter.md similarity index 100% rename from site/content/3.12/data-science/integrations/arangodb-dgl-adapter.md rename to site/content/platform/data-science/integrations/arangodb-dgl-adapter.md diff --git a/site/content/3.12/data-science/integrations/arangodb-networkx-adapter.md b/site/content/platform/data-science/integrations/arangodb-networkx-adapter.md similarity index 100% rename from site/content/3.12/data-science/integrations/arangodb-networkx-adapter.md rename to site/content/platform/data-science/integrations/arangodb-networkx-adapter.md diff --git a/site/content/3.12/data-science/integrations/arangodb-pyg-adapter.md b/site/content/platform/data-science/integrations/arangodb-pyg-adapter.md similarity index 100% rename from site/content/3.12/data-science/integrations/arangodb-pyg-adapter.md rename to site/content/platform/data-science/integrations/arangodb-pyg-adapter.md diff --git a/site/content/3.12/data-science/integrations/arangodb-rdf-adapter.md b/site/content/platform/data-science/integrations/arangodb-rdf-adapter.md similarity index 100% rename from site/content/3.12/data-science/integrations/arangodb-rdf-adapter.md rename to site/content/platform/data-science/integrations/arangodb-rdf-adapter.md diff --git a/site/content/3.12/data-science/integrations/langchain.md b/site/content/platform/data-science/integrations/langchain.md similarity index 100% rename from site/content/3.12/data-science/integrations/langchain.md rename to site/content/platform/data-science/integrations/langchain.md diff --git a/site/content/3.12/data-science/notebook-servers.md b/site/content/platform/data-science/notebook-servers.md similarity index 96% rename from site/content/3.12/data-science/notebook-servers.md rename to site/content/platform/data-science/notebook-servers.md index e84a9ebbb7..c9b8f67a05 100644 --- a/site/content/3.12/data-science/notebook-servers.md +++ b/site/content/platform/data-science/notebook-servers.md @@ -35,7 +35,7 @@ The notebooks are primarily focused on the following solutions: The ArangoDB Notebooks include the following: - Automatically connect to ArangoDB databases and GenAI platform services -- [Magic commands](../arangograph/notebooks.md#arangograph-magic-commands) +- [Magic commands](../../3.12/arangograph/notebooks.md#arangograph-magic-commands) that simplify database interactions - Example notebooks for learning diff --git a/site/content/platform/graph-intelligence/_index.md b/site/content/platform/graph-intelligence/_index.md new file mode 100644 index 0000000000..9d5ac11917 --- /dev/null +++ b/site/content/platform/graph-intelligence/_index.md @@ -0,0 +1,5 @@ +--- +title: Graph intelligence +menuTitle: Graph intelligence +weight: 10 +--- diff --git a/site/content/3.12/graphs/graph-analytics.md b/site/content/platform/graph-intelligence/graph-analytics.md similarity index 98% rename from site/content/3.12/graphs/graph-analytics.md rename to site/content/platform/graph-intelligence/graph-analytics.md index ee01851ba8..ef55508402 100644 --- a/site/content/3.12/graphs/graph-analytics.md +++ b/site/content/platform/graph-intelligence/graph-analytics.md @@ -1,7 +1,7 @@ --- title: Graph Analytics menuTitle: Graph Analytics -weight: 115 +weight: 5 description: | ArangoGraph offers Graph Analytics Engines to run graph algorithms on your data separately from your ArangoDB deployments @@ -64,22 +64,22 @@ Single server deployments using ArangoDB version 3.11 are not supported. The [Management API](#management-api) for deploying and deleting engines requires an ArangoGraph **API key**. See -[Generating an API Key](../arangograph/api/get-started.md#generating-an-api-key) +[Generating an API Key](../../3.12/arangograph/api/get-started.md#generating-an-api-key) on how to create one. You then need to generate an **access token** using the API key. See -[Authenticating with Oasisctl](../arangograph/api/get-started.md#authenticating-with-oasisctl) +[Authenticating with Oasisctl](../../3.12/arangograph/api/get-started.md#authenticating-with-oasisctl) on how to do so using `oasisctl login`. The [Engine API](#engine-api) uses one of two authentication methods, depending -on the [__auto login to database UI__](../arangograph/deployments/_index.md#auto-login-to-database-ui) +on the [__auto login to database UI__](../../3.12/arangograph/deployments/_index.md#auto-login-to-database-ui) setting in ArangoGraph: - **Enabled**: You can use an ArangoGraph access token created with an API key (see above), allowing you to use one token for both the Management API and the Engine API. - **Disabled**: You need use a JWT user token created from ArangoDB credentials. These session tokens need to be renewed every hour by default. See - [HTTP API Authentication](../develop/http-api/authentication.md#jwt-user-tokens) + [HTTP API Authentication](../../3.12/develop/http-api/authentication.md#jwt-user-tokens) for details. ## Management API @@ -246,7 +246,7 @@ Request and response payloads are JSON-encoded in the engine API. Import graph data from a database of the ArangoDB deployment. You can import named graphs as well as sets of vertex and edge collections (see -[Managed and unmanaged graphs](../graphs/_index.md#managed-and-unmanaged-graphs)). +[Managed and unmanaged graphs](../../3.12/graphs/_index.md#managed-and-unmanaged-graphs)). ```bash curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d '{"database":"_system","graph_name":"connectedComponentsGraph"}' "$ENGINE_URL/v1/loaddata" diff --git a/site/content/3.12/graphs/graph-visualizer.md b/site/content/platform/graph-intelligence/graph-visualizer.md similarity index 99% rename from site/content/3.12/graphs/graph-visualizer.md rename to site/content/platform/graph-intelligence/graph-visualizer.md index f3125d6d4d..76d34e383d 100644 --- a/site/content/3.12/graphs/graph-visualizer.md +++ b/site/content/platform/graph-intelligence/graph-visualizer.md @@ -1,7 +1,7 @@ --- title: Graph Visualizer menuTitle: Graph Visualizer -weight: 102 +weight: 10 description: >- Visually explore and interact with your ArangoDB graphs through an intuitive interface --- @@ -24,7 +24,7 @@ create new nodes (vertices) and relations (edges). {{< info >}} Graph creation is **not** performed within the Graph Visualizer. Graphs must be created in the **Management** section under **Graphs** of the second-level -navigation in the [web interface](../components/web-interface/graphs.md). Once +navigation in the [web interface](../../3.12/components/web-interface/graphs.md). Once created, you can select a graph from the list for exploration and visualization. {{< /info >}} diff --git a/site/content/3.12/release-notes/platform.md b/site/content/platform/release-notes.md similarity index 82% rename from site/content/3.12/release-notes/platform.md rename to site/content/platform/release-notes.md index 84ecec3536..22e37bf1ee 100644 --- a/site/content/3.12/release-notes/platform.md +++ b/site/content/platform/release-notes.md @@ -1,7 +1,7 @@ --- title: What's new in the ArangoDB Platform -menuTitle: ArangoDB Platform -weight: 5 +menuTitle: Release notes +weight: 50 description: >- Features and improvements in the ArangoDB Platform --- @@ -20,7 +20,7 @@ of the core ArangoDB database system along with graph-powered machine learning and GenAI capabilities as a single solution with a unified interface. Deploy the Platform on-premise or in the cloud on top of Kubernetes. -To get started, see [Self-host the ArangoDB Platform](../components/platform.md#self-host-the-arangodb-platform). +To get started, see [Self-host the ArangoDB Platform](about-the-platform/_index.md#self-host-the-arangodb-platform). ### GenAI Suite @@ -35,5 +35,5 @@ user-friendly interface seamlessly integrated into the ArangoDB Platform web int - MLflow integration - Graph Visualizer -To learn more, see the [GenAI Suite](../data-science/_index.md#genai-suite) +To learn more, see the [GenAI Suite](data-science/_index.md#genai-suite) documentation. diff --git a/site/data/versions.yaml b/site/data/versions.yaml index f58386be72..f3da90f719 100644 --- a/site/data/versions.yaml +++ b/site/data/versions.yaml @@ -1,3 +1,8 @@ +- name: "platform" + version: "0.1.0" + alias: "platform" + deprecated: false + - name: "3.13" version: "3.13.0" alias: "devel" diff --git a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html index add77a0252..520418c334 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html @@ -6,7 +6,9 @@ {{- $page.Store.Set "versionShort" $version.name }} {{- $page.Store.Set "alias" $version.alias }} {{- $page.Store.Set "deprecated" $version.deprecated }} - {{- template "checkVersionIsInDevelopment" dict "page" $page "pageVersion" $version.name "versions" $versions }} + {{- if ne $version.name "platform" }} + {{- template "checkVersionIsInDevelopment" dict "page" $page "pageVersion" $version.name "versions" $versions }} + {{- end }} {{- end }} {{- end }} diff --git a/toolchain/arangoproxy/internal/service/service.go b/toolchain/arangoproxy/internal/service/service.go index b9f3b6caab..6f525ca79c 100644 --- a/toolchain/arangoproxy/internal/service/service.go +++ b/toolchain/arangoproxy/internal/service/service.go @@ -226,6 +226,9 @@ func (service OpenapiService) ValidateOpenapiGlobalSpec() { models.Logger.Summary("

OPENAPI

") for _, version := range Versions { + if version.Name == "platform" { + continue + } wg.Add(1) go service.ValidateFile(version.Name, &wg) } From 55dfbbf3bb1467e04058bab1b2695ac38f621f2e Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Fri, 8 Aug 2025 14:45:17 +0200 Subject: [PATCH 02/69] WIP: Don't attempt to navigate to path but different version between Platform and Core docs --- site/themes/arangodb-docs-theme/static/js/theme.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index cf6e186757..208f8e9d66 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -466,8 +466,13 @@ function changeVersion() { changeVersion(); } - - var newUrl = window.location.pathname.replace(getVersionFromURL(), getVersionInfo(newVersion).alias) + window.location.hash; + var currentVersion = getVersionFromURL(); + var newVersionAlias = getVersionInfo(newVersion).alias; + if (currentVersion == "platform" || newVersion == "platform") { + var newUrl = window.location.pathname = "/" + newVersionAlias + "/"; + } else { + var newUrl = window.location.pathname.replace(currentVersion, newVersionAlias) + window.location.hash; + } updateHistory(newUrl); } From d7a9917e98d35c3710ffe4f73357fc9c12c2a036 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 4 Sep 2025 14:26:11 +0200 Subject: [PATCH 03/69] WIP: Navigation --- site/config/_default/config.yaml | 6 + .../layouts/_default/home.navigation.html | 13 +- .../layouts/partials/meta.html | 6 - .../layouts/partials/shortcodes/version.html | 3 +- .../layouts/partials/version-selector.html | 4 + .../arangodb-docs-theme/static/js/theme.js | 448 ++++++++++++------ 6 files changed, 314 insertions(+), 166 deletions(-) diff --git a/site/config/_default/config.yaml b/site/config/_default/config.yaml index 67c2321b61..e2b7760a81 100644 --- a/site/config/_default/config.yaml +++ b/site/config/_default/config.yaml @@ -19,6 +19,12 @@ module: - source: "static" target: "static" + - source: content/3.12 + target: content/stable + + - source: content/3.13 + target: content/devel + # Version folders can be ignored temporarily for faster local builds # of a single version (here: 3.12) # - excludeFiles: diff --git a/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html b/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html index a1ca735f4d..55ad423ade 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html @@ -3,14 +3,11 @@
    - {{- range .Site.Sections.ByWeight }} - {{/* version folders */}} - {{- if ne .Type "hooks" }} -
      {{/* TODO: hide non-stable versions by default? */}} - {{- template "section-tree-nav" . }} -
    - {{- end }} - {{- end }} + {{- range .Site.Sections.ByWeight }} +
      {{/* TODO: hide non-stable versions by default? */}} + {{- template "section-tree-nav" . }} +
    + {{- end }}
diff --git a/site/themes/arangodb-docs-theme/layouts/partials/meta.html b/site/themes/arangodb-docs-theme/layouts/partials/meta.html index 67aadd8e32..0a1a0e646f 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/meta.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/meta.html @@ -25,9 +25,3 @@ {{- end }} {{- end }} -{{- if or (eq .Type "hooks") (.IsHome) }} - {{- $redirectPath := printf "/%s" (index (where site.Data.versions "alias" "stable") 0).alias }} - -{{- end }} diff --git a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html index 520418c334..c82297d40e 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html @@ -1,7 +1,7 @@ {{- $page := .page }} {{- $versions := site.Data.versions }} {{- range $i, $version := $versions }} - {{- if eq $page.Type $version.name }} + {{- if or (eq $page.Type $version.name) (eq $page.Type $version.alias) }} {{- $page.Store.Set "version" $version.version }} {{- $page.Store.Set "versionShort" $version.name }} {{- $page.Store.Set "alias" $version.alias }} @@ -9,6 +9,7 @@ {{- if ne $version.name "platform" }} {{- template "checkVersionIsInDevelopment" dict "page" $page "pageVersion" $version.name "versions" $versions }} {{- end }} + {{- break }} {{- end }} {{- end }} diff --git a/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html b/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html index 71a3db016c..918cbf161c 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html @@ -2,6 +2,10 @@ diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index da7da401c2..5efc2c16a2 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -9,7 +9,16 @@ function toggleMenuItem(event) { if (listItem.classList.contains("leaf")) return; listItem.querySelector("label").classList.toggle("open"); - $(listItem.querySelector(".submenu")).slideToggle(); + slideToggle(listItem.querySelector(".submenu")); +} + +// Vanilla JS slideToggle implementation +function slideToggle(element) { + if (element.style.display === "none" || element.style.display === "") { + element.style.display = "block"; + } else { + element.style.display = "none"; + } } function menuToggleClick(event) { @@ -18,21 +27,17 @@ function menuToggleClick(event) { toggleMenuItem(event); } -function menuEntryClickListener() { - $('.menu-link').on("click", function(event) { - event.preventDefault(); - if (event.target.pathname == window.location.pathname) { - toggleMenuItem(event) - return - } - updateHistory(event.target.getAttribute('href')) - $('.sidebar.mobile').removeClass("active") +function renderVersion() { + var version = getVersionFromURL(); - }); -} + var versionSelector = document.querySelector(".arangodb-version"); + if (!version || version === "platform") { + versionSelector.style.display = "none"; + } else { + versionSelector.style.display = "block"; + } -function renderVersion() { - var version = localStorage.getItem('docs-version'); + version = "version-" + version.replace('.', '_'); var menuEntry = document.getElementsByClassName('version-menu'); for ( let entry of menuEntry ) { if (entry.classList.contains(version)) { @@ -44,38 +49,74 @@ function renderVersion() { } function closeAllEntries() { - $(".dd-item.active").removeClass("active"); - $(".dd-item > label.open").removeClass("open"); - $(".submenu").hide(); - $(".dd-item.parent").removeClass("parent"); + document.querySelectorAll(".dd-item.active").forEach(el => el.classList.remove("active")); + document.querySelectorAll(".dd-item > label.open").forEach(el => el.classList.remove("open")); + document.querySelectorAll(".submenu").forEach(el => el.style.display = "none"); + document.querySelectorAll(".dd-item.parent").forEach(el => el.classList.remove("parent")); } function loadMenu(url) { closeAllEntries(); var version = getVersionFromURL() - $('.version-menu.'+version).find('a').each(function() { - $(this).attr("href", function(index, old) { - return old.replace(old.split("/")[1], version) - }); + document.querySelectorAll('.version-menu.version-' + version.replace('.', '_') + ' a').forEach(function(link) { + const oldHref = link.getAttribute('href'); + const newHref = oldHref.replace(oldHref.split("/")[1], version); + link.setAttribute('href', newHref); }); - var current = $('.dd-item > a[href="' + url + '"]').parent(); - current.addClass("active"); - while (current.length > 0 && current.prop("class") != "topics collapsible-menu") { - if (current.prop("tagName") == "LI") { - current.addClass("parent"); - current.children("label:first").addClass("open"); - current.children(".submenu:first").show(); + // Try to find the menu item - first try exact match, then try without hash + console.log('loadMenu: Looking for URL:', url); + var current = document.querySelector('.dd-item > a[href="' + url + '"]'); + console.log('loadMenu: Exact match found:', current); + + if (!current && url.includes('#')) { + // Try without the hash fragment + const urlWithoutHash = url.split('#')[0]; + console.log('loadMenu: Trying without hash:', urlWithoutHash); + current = document.querySelector('.dd-item > a[href="' + urlWithoutHash + '"]'); + console.log('loadMenu: Without hash found:', current); + } + if (!current) { + // Try to find by pathname only (in case of different origins or protocols) + const pathname = new URL(url, window.location.origin).pathname; + console.log('loadMenu: Trying pathname only:', pathname); + current = document.querySelector('.dd-item > a[href="' + pathname + '"]'); + console.log('loadMenu: Pathname match found:', current); + } + + if (current) { + console.log('loadMenu: Found menu item, expanding parents'); + current = current.parentNode; + current.classList.add("active"); + let expandedCount = 0; + while (current && !current.classList.contains("topics") && !current.classList.contains("collapsible-menu")) { + if (current.tagName === "LI") { + console.log('loadMenu: Expanding parent LI:', current); + current.classList.add("parent"); + const label = current.querySelector("label"); + if (label) { + label.classList.add("open"); + console.log('loadMenu: Added open class to label'); + } + const submenu = current.querySelector(".submenu"); + if (submenu) { + submenu.style.display = "block"; + expandedCount++; + console.log('loadMenu: Set submenu display to block, count:', expandedCount); + } + } + current = current.parentNode; } - - current = current.parent(); + console.log('loadMenu: Total submenus expanded:', expandedCount); + } else { + console.log('loadMenu: No menu item found for URL:', url); } } function showSidebarHandler() { - $(".sidebar").toggleClass("active"); - } + document.querySelectorAll(".sidebar").forEach(el => el.classList.toggle("active")); +} /* @@ -96,6 +137,16 @@ function replaceArticle(href, newDoc) { var re = /(.*?)<\/title>/; var match = re.exec(newDoc); + /* TODO: Replace with DOMParser? + const tempDiv = document.createElement('div'); + tempDiv.innerHTML = newDoc; + const newContainer = tempDiv.querySelector(".container-main"); + const currentContainer = document.querySelector(".container-main"); + + if (newContainer && currentContainer) { + currentContainer.parentNode.replaceChild(newContainer, currentContainer); + } + */ $(".container-main").replaceWith($(".container-main", newDoc)); if (match) { document.title = decodeHtmlEntities(match[1]); @@ -108,7 +159,7 @@ function replaceArticle(href, newDoc) { function updateHistory(urlPath) { - if (urlPath == window.location.pathname + window.location.hash) { + if (!urlPath || urlPath == window.location.pathname + window.location.hash) { return } @@ -131,21 +182,22 @@ function styleImages() { } function loadNotFoundPage() { - $.get({ - url: window.location.origin + "/notfound.html", - success: function(newDoc) { + fetch(window.location.origin + "/notfound.html") + .then(response => response.text()) + .then(newDoc => { replaceArticle("", newDoc) initArticle(""); return true; - }, - }); + }) + .catch(error => console.error('Error loading not found page:', error)); } function loadPage(target) { var href = target; - if (getVersionInfo(getVersionFromURL()) == undefined) { + var versionUrl = getVersionFromURL(); + if (versionUrl !== "platform" && getVersionInfo(versionUrl) == undefined) { loadNotFoundPage(); return; } @@ -155,15 +207,16 @@ function loadPage(target) { loadMenu(new URL(href).pathname); var version = getVersionInfo(getVersionFromURL()).name; href = href.replace(getVersionFromURL(), version); - var xhr = new XMLHttpRequest(); - $.get({ - xhr: function() { return xhr; }, - url: href, - success: function(newDoc) { - if (xhr.responseURL && href.replace(/#.*/, "") !== xhr.responseURL) { - updateHistory(xhr.responseURL.replace(version, getVersionFromURL())); + fetch(href) + .then(response => { + if (response.url && href.replace(/#.*/, "") !== response.url) { + updateHistory(response.url.replace(version, getVersionFromURL())); return; } + return response.text(); + }) + .then(newDoc => { + if (!newDoc) return; if (!newDoc.includes("<body>")) { // https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/alias.html var match = /<title>(.*?)<\/title>/.exec(newDoc)[1]; @@ -174,35 +227,10 @@ function loadPage(target) { scrollToFragment(); initArticle(href); return true; - }, - error: function(newDoc) { + }) + .catch(error => { loadNotFoundPage(href) - }, - }); -} - -function internalLinkListener() { - $('.link').on("click", function(event) { - if (event.target.getAttribute("target")) { - // external link - return; - } - event.preventDefault(); - updateHistory(event.target.getAttribute('href')) - }); - - $('.card-link').on('click', function(event) { - event.preventDefault(); - updateHistory(this.getAttribute('href')) - }); -} - -function codeShowMoreListener() { - $('article').on('click', '.code-show-more', function(event) { - var t = $(event.target) - t.toggleClass("expanded") - t.prev().toggleClass("expanded") - }); + }); } function trackPageView(title, urlPath) { @@ -222,25 +250,24 @@ function initArticle(url) { restoreTabSelections(); initCopyToClipboard(); addShowMoreButton('article'); - initClickHandlers(); + hideEmptyOpenapiDiv(); goToTop(); styleImages(); - internalLinkListener(); - codeShowMoreListener(); - aliazeLinks('article', 'a.link:not([target]), a.card-link, a.header-link'); - aliazeLinks('.breadcrumbs', 'a') + //aliazeLinks('article', 'a.link:not([target]), a.card-link, a.header-link'); + //aliazeLinks('.breadcrumbs', 'a') + linkToVersionedContent(); } -$(window).on('popstate', function (e) { - var state = e.originalEvent.state; +window.addEventListener('popstate', function (e) { + var state = e.state; if (state !== null) { loadPage(window.location.href); } }); -$(window).on('hashchange', function (e) { +window.addEventListener('hashchange', function (e) { window.history.pushState("popstate", "ArangoDB Documentation", window.location.href); scrollToFragment() }); @@ -273,7 +300,7 @@ function tocHiglighter() { if (window.innerWidth <= 768) return; var anchors = getAllAnchors(); - var scrollTop = $(document).scrollTop(); + var scrollTop = window.pageYOffset || document.documentElement.scrollTop; anchors.forEach(anchor => { const rect = anchor.getBoundingClientRect(); @@ -303,7 +330,7 @@ function throttle(callback, limit) { } } -$(window).scroll(throttle(function() { +window.addEventListener('scroll', throttle(function() { tocHiglighter(); backToTopButton(); }, 250)); @@ -314,17 +341,28 @@ $(window).scroll(throttle(function() { */ function switchTab(tabGroup, tabId, event) { - var tabs = jQuery(".tab-panel").has("[data-tab-group='"+tabGroup+"'][data-tab-item='"+tabId+"']"); - var allTabItems = tabs.find("[data-tab-group='"+tabGroup+"']"); - var targetTabItems = tabs.find("[data-tab-group='"+tabGroup+"'][data-tab-item='"+tabId+"']"); + var tabs = document.querySelectorAll(".tab-panel"); + var allTabItems = []; + var targetTabItems = []; + + tabs.forEach(tab => { + const groupItems = tab.querySelectorAll("[data-tab-group='" + tabGroup + "']"); + const targetItems = tab.querySelectorAll("[data-tab-group='" + tabGroup + "'][data-tab-item='" + tabId + "']"); + if (targetItems.length > 0) { + allTabItems.push(...groupItems); + targetTabItems.push(...targetItems); + } + }); + if (event) { var clickedTab = event.target; var topBefore = clickedTab.getBoundingClientRect().top; } - allTabItems.removeClass("selected"); - targetTabItems.addClass("selected"); - addShowMoreButton(targetTabItems); + allTabItems.forEach(item => item.classList.remove("selected")); + targetTabItems.forEach(item => item.classList.add("selected")); + targetTabItems.forEach(item => addShowMoreButton(item)); + if (event) { // Keep relative offset of tab in viewport to avoid jumping content var topAfter = clickedTab.getBoundingClientRect().top; @@ -394,15 +432,14 @@ function aliazeLinks(parentSelector, linkSelector) { nameAliasMapping[v.name] = v.alias; } - $(parentSelector).find(linkSelector).each(function() { - $(this).attr("href", function(index, old) { - if (old == undefined || old.startsWith("#")) return old; - let splitLink = old.split("/"); - let linkVersion = splitLink[1]; - let alias = nameAliasMapping[linkVersion] || linkVersion; - splitLink.splice(1, 1, alias); - return splitLink.join("/"); - }); + document.querySelectorAll(parentSelector + ' ' + linkSelector).forEach(function(link) { + const old = link.getAttribute("href"); + if (old == undefined || old.startsWith("#")) return; + let splitLink = old.split("/"); + let linkVersion = splitLink[1]; + let alias = nameAliasMapping[linkVersion] || linkVersion; + splitLink.splice(1, 1, alias); + link.setAttribute("href", splitLink.join("/")); }); } @@ -414,45 +451,44 @@ function setVersionSelector(version) { } } -function getCurrentVersion() { - var urlVersion = stableVersion.name +function getCurrentVersion(href) { + var newVersion = stableVersion.name if (window.location.pathname.split("/").length > 0) { - newVersion = getVersionFromURL() - - if (getVersionInfo(newVersion) == undefined) { + newVersion = getVersionFromURL(); + if (newVersion === "platform") { + return; + } + if ((href === "" || href === "/") && getVersionInfo(newVersion) == undefined) { loadNotFoundPage(); return; } - - urlVersion = getVersionInfo(newVersion).name } - localStorage.setItem('docs-version', urlVersion); - setVersionSelector(urlVersion); + localStorage.setItem('docs-version', newVersion); + setVersionSelector(newVersion); } function changeVersion() { - var oldVersion = localStorage.getItem('docs-version'); var versionSelector = document.querySelector(".arangodb-version"); - var newVersion = versionSelector.options[versionSelector.selectedIndex].value; + var newVersion = versionSelector.options[versionSelector.selectedIndex].value; try { - localStorage.setItem('docs-version', newVersion); - renderVersion(); - window.setupDocSearch(newVersion); + localStorage.setItem('docs-version', newVersion); + renderVersion(); + window.setupDocSearch(newVersion); } catch(exception) { console.log({exception}) - changeVersion(); + changeVersion(); } var currentVersion = getVersionFromURL(); - var newVersionAlias = getVersionInfo(newVersion).alias; + //var newVersionAlias = getVersionInfo(newVersion).alias; if (currentVersion == "platform" || newVersion == "platform") { - var newUrl = window.location.pathname = "/" + newVersionAlias + "/"; + var newUrl = window.location.pathname = "/" + newVersion + "/"; } else { - var newUrl = window.location.pathname.replace(currentVersion, newVersionAlias) + window.location.hash; + var newUrl = window.location.pathname.replace(currentVersion, newVersion) + window.location.hash; } updateHistory(newUrl); } @@ -466,8 +502,9 @@ function changeVersion() { function hideEmptyOpenapiDiv() { var lists = document.getElementsByClassName("openapi-parameters") for (let list of lists) { - if ($(list).find(".openapi-table").text().trim() == "") { - $(list).addClass("hidden"); + const table = list.querySelector(".openapi-table"); + if (table && table.textContent.trim() == "") { + list.classList.add("hidden"); } } } @@ -492,23 +529,6 @@ function hideEmptyOpenapiDiv() { } } -function initClickHandlers() { - hideEmptyOpenapiDiv(); - - $(".openapi-prop").on("click", function(event) { - if (this === event.target) { - $(event.target).toggleClass("collapsed"); - $(event.target).find('.openapi-prop-content').first().toggleClass("hidden"); - } - }); - - $(".openapi-table.show-children").on("click", function(event) { - $(event.target).toggleClass("collapsed"); - $(event.target).next(".openapi-table").toggleClass("hidden"); - }); - -} - /* Common custom functions @@ -548,17 +568,144 @@ function copyURI(evt) { } function toggleExpandShortcode(event) { - var t = $(event.target.closest("a")); - if (t.parent('.expand-expanded.expand-marked').length) { - t.next().css('display','none'); - } else if (t.parent('.expand-marked').length) { - t.next().css('display','block') + var t = event.target.closest("a"); + var parent = t.parentNode; + if (parent.classList.contains('expand-expanded') && parent.classList.contains('expand-marked')) { + t.nextElementSibling.style.display = 'none'; + } else if (parent.classList.contains('expand-marked')) { + t.nextElementSibling.style.display = 'block'; } else { - t.next('.expand-content').slideToggle(100); + const nextElement = t.querySelector('.expand-content') || t.nextElementSibling; + if (nextElement) { + slideToggle(nextElement); + } } - t.parent().toggleClass('expand-expanded'); + parent.classList.toggle('expand-expanded'); } +function linkToVersionedContent() { + const currentVersion = getVersionFromURL(); + if (currentVersion !== "platform") return; + document.querySelectorAll("a.link:not([target])").forEach(el => { + const matches = el.getAttribute("href").match(/^\/(\d\.\d{1,2})(\/.*)/); + const previousVersion = localStorage.getItem('docs-version') || "stable"; + if (matches && matches.length > 2 && previousVersion) { + el.setAttribute("href", "/" + previousVersion + matches[2]); + } + }); +} + +// Central click handler using event delegation +function handleDocumentClick(event) { + const target = event.target; + const closest = (selector) => target.closest(selector); + + // Menu link clicks + if (closest('.menu-link')) { + event.preventDefault(); + const menuLink = closest('.menu-link'); + const href = menuLink.getAttribute('href'); + if (href) { + updateHistory(href); + } + document.querySelectorAll('.sidebar.mobile').forEach(el => el.classList.remove("active")); + return; + } + + // Internal link clicks (.link) + const linkElement = closest('.link'); + if (linkElement && !linkElement.getAttribute("target")) { + event.preventDefault(); + let href = linkElement.getAttribute('href'); + if (href) { + updateHistory(href); + } + return; + } + + // Card link clicks + if (closest('.card-link')) { + event.preventDefault(); + const cardLink = closest('.card-link'); + const href = cardLink.getAttribute('href'); + if (href) { + updateHistory(href); + } + return; + } + + // Code show more button clicks + if (closest('.code-show-more')) { + target.classList.toggle("expanded"); + const prevElement = target.previousElementSibling; + if (prevElement) prevElement.classList.toggle("expanded"); + return; + } + + // OpenAPI property clicks + if (closest('.openapi-prop') && target === closest('.openapi-prop')) { + target.classList.toggle("collapsed"); + const content = target.querySelector('.openapi-prop-content'); + if (content) content.classList.toggle("hidden"); + return; + } + + // OpenAPI table show children clicks + if (closest('.openapi-table.show-children')) { + target.classList.toggle("collapsed"); + const nextTable = target.nextElementSibling; + if (nextTable && nextTable.classList.contains('openapi-table')) { + nextTable.classList.toggle("hidden"); + } + return; + } + + // Menu toggle clicks (labels) + if (target.tagName === "LABEL" && closest('.sidebar')) { + event.preventDefault(); + toggleMenuItem(event); + return; + } + + // Tab clicks + if (target.hasAttribute('data-tab-group') && target.hasAttribute('data-tab-item')) { + event.preventDefault(); + switchTab(target.getAttribute('data-tab-group'), target.getAttribute('data-tab-item'), event); + return; + } + + // Back to top button + if (closest('.back-to-top')) { + event.preventDefault(); + goToTop(event); + return; + } + + // Copy URI clicks + if (closest('.header-link')) { + copyURI(event); + return; + } + + // Expand shortcode clicks + if (closest('.expand-label')) { + event.preventDefault(); + toggleExpandShortcode(event); + return; + } + + // Homepage clicks + if (closest('.home-link')) { + goToHomepage(event); + return; + } + + // Sidebar toggle + if (closest('.sidebar-toggle')) { + showSidebarHandler(); + return; + } +} window.onload = () => { window.history.pushState("popstate", "ArangoDB Documentation", window.location.href); @@ -571,7 +718,6 @@ window.onload = () => { iframe.replaceWith(content); getCurrentVersion(window.location.href); - menuEntryClickListener(); renderVersion(); loadPage(window.location.href) @@ -579,17 +725,17 @@ window.onload = () => { window.setupDocSearch(getVersionInfo(getVersionFromURL()).name); } else { window.setupDocSearch(stableVersion); - } - content.addEventListener("click", menuToggleClick); - + // Add central click handler to document + document.addEventListener("click", handleDocumentClick); var isMobile = window.innerWidth <= 768; if (isMobile) { - $('.sidebar').addClass("mobile"); - $('.sidebar.mobile').removeClass("active"); + document.querySelectorAll('.sidebar').forEach(el => el.classList.add("mobile")); + document.querySelectorAll('.sidebar.mobile').forEach(el => el.classList.remove("active")); } - $('.page-wrapper').css("opacity", "1") + const pageWrapper = document.querySelector('.page-wrapper'); + if (pageWrapper) pageWrapper.style.opacity = "1"; } \ No newline at end of file From 1085cbdb904d77e14e32b9f3f81aa64b933c0cf6 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 4 Sep 2025 14:26:32 +0200 Subject: [PATCH 04/69] Fix link --- site/content/platform/graph-intelligence/graph-analytics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/platform/graph-intelligence/graph-analytics.md b/site/content/platform/graph-intelligence/graph-analytics.md index a3d013b046..2c273b0c38 100644 --- a/site/content/platform/graph-intelligence/graph-analytics.md +++ b/site/content/platform/graph-intelligence/graph-analytics.md @@ -19,7 +19,7 @@ and network flow analysis. ArangoDB offers a feature for running algorithms on your graph data, called Graph Analytics Engines (GAEs). It is available on request for the [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) -and included in the [ArangoDB Platform](../components/platform.md). +and included in the [ArangoDB Platform](../about-the-platform/_index.md). Key features: From 599f2ceb2f8ad55a044bdf692539cb3e813d2a80 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 4 Sep 2025 14:26:42 +0200 Subject: [PATCH 05/69] Test: Links between Platform and Core --- site/content/3.12/aql/_index.md | 2 ++ site/content/3.13/aql/_index.md | 2 ++ site/content/platform/data-science/_index.md | 2 ++ 3 files changed, 6 insertions(+) diff --git a/site/content/3.12/aql/_index.md b/site/content/3.12/aql/_index.md index 688215f3dc..befe676097 100644 --- a/site/content/3.12/aql/_index.md +++ b/site/content/3.12/aql/_index.md @@ -6,6 +6,8 @@ description: >- The ArangoDB Query Language (AQL) lets you store, retrieve, and modify data in various ways in ArangoDB --- +- [Link to Platform](../../platform/data-science/_index.md) + AQL is mainly a declarative language, meaning that a query expresses what result should be achieved but not how it should be achieved. AQL aims to be human-readable and therefore uses keywords from the English language. Another diff --git a/site/content/3.13/aql/_index.md b/site/content/3.13/aql/_index.md index 688215f3dc..befe676097 100644 --- a/site/content/3.13/aql/_index.md +++ b/site/content/3.13/aql/_index.md @@ -6,6 +6,8 @@ description: >- The ArangoDB Query Language (AQL) lets you store, retrieve, and modify data in various ways in ArangoDB --- +- [Link to Platform](../../platform/data-science/_index.md) + AQL is mainly a declarative language, meaning that a query expresses what result should be achieved but not how it should be achieved. AQL aims to be human-readable and therefore uses keywords from the English language. Another diff --git a/site/content/platform/data-science/_index.md b/site/content/platform/data-science/_index.md index ec24ec73ea..485687e4d7 100644 --- a/site/content/platform/data-science/_index.md +++ b/site/content/platform/data-science/_index.md @@ -8,6 +8,8 @@ description: >- aliases: - data-science/overview --- +- [Link to 3.12](../../3.12/aql/_index.md) + {{< tag "ArangoDB Platform" >}} {{< tip >}} From 4237c0c4d9757acf95ee81fe6699bc0263cdae98 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 4 Sep 2025 15:40:57 +0200 Subject: [PATCH 06/69] Try to exclude aliases in link check --- .../layouts/_default/_markup/render-link.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html b/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html index 74b4be1301..70df3678d4 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html @@ -41,7 +41,7 @@ {{- end }} {{- $permalink = printf "%s%s" $page.RelPermalink $fragment }} {{- else }} - {{- if ne $currentPage "/" }} + {{- if and (ne $currentPage "/") (not (or (strings.HasPrefix $currentPage "/stable/") (strings.HasPrefix $currentPage "/devel/"))) }} {{- if site.Params.failOnBrokenLinks }} {{- errorf "<error code=1> Broken link '%v' found in %s </error><br>" $link $currentFile }} {{- else }} From 0fb6d21a76e40136cd95ea03f2f7d2e66a717f37 Mon Sep 17 00:00:00 2001 From: Palash Karia <2976363+palashkaria@users.noreply.github.com> Date: Thu, 2 Oct 2025 15:41:17 +0530 Subject: [PATCH 07/69] chore: update greens/reds --- .../arangodb-docs-theme/static/css/theme.css | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index 09be3245c1..a90a85fe9a 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -1,25 +1,25 @@ :root { - --green-50: #f5faeb; - --green-100: #e9f4d3; - --green-200: #d5e9ad; - --green-300: #b8da7c; - --green-400: #9dc853; - --green-500: #7ead35; - --green-600: #608726; - --green-700: #4b6922; - --green-800: #3e5420; - --green-900: #35481f; + --green-50: #e3f2e0; + --green-100: #dcebd9; + --green-200: #98D78C; + --green-300: #55AB45; + --green-400: #217846; + --green-500: #007339; + --green-600: #006532; + --green-700: #005329; + --green-800: #004020; + --green-900: #002e17; --green-950: #1a270c; - --red-50: #fff2f1; - --red-100: #ffe1df; - --red-200: #ffc7c4; - --red-300: #ffa19b; - --red-400: #ff6a61; - --red-500: #ff3b30; - --red-600: #e6190d; - --red-700: #cc1409; - --red-800: #a8150c; - --red-900: #8b1811; + --red-50: #f8c5c6; + --red-100: #f5acae; + --red-200: #f18b8e; + --red-300: #ed6a6e; + --red-400: #e9494d; + --red-500: #e63035; + --red-600: #da1a20; + --red-700: #b3161a; + --red-800: #8b1114; + --red-900: #630c0e; --red-950: #4c0703; --orange-50: #fff4ed; --orange-100: #ffe6d5; From 549bb30a08ae945f13ba95d1b54edc3d204d7c17 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Mon, 13 Oct 2025 12:21:39 +0200 Subject: [PATCH 08/69] Hugo config: Temporarily disable aliases and exclude legacy versions --- site/config/_default/config.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/site/config/_default/config.yaml b/site/config/_default/config.yaml index e2b7760a81..0a7d2c1541 100644 --- a/site/config/_default/config.yaml +++ b/site/config/_default/config.yaml @@ -19,20 +19,20 @@ module: - source: "static" target: "static" - - source: content/3.12 - target: content/stable +# - source: content/arangodb/3.12 +# target: content/arangodb/stable - - source: content/3.13 - target: content/devel +# - source: content/arangodb/3.13 +# target: content/arangodb/devel # Version folders can be ignored temporarily for faster local builds # of a single version (here: 3.12) -# - excludeFiles: -# - 3.10/* -# - 3.11/* -# - 3.13/* -# source: content -# target: content + - source: content + target: content + excludeFiles: + - arangodb/3.10/* + - arangodb/3.11/* +# - arangodb/3.13/* markup: highlight: From c643c101a034c83b78507334b3da09f2d66e3929 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Mon, 13 Oct 2025 12:24:49 +0200 Subject: [PATCH 09/69] Preliminary support for versioned subfolders --- site/data/versions.yaml | 37 ++++---- .../layouts/partials/breadcrumbs.html | 16 ++-- .../layouts/partials/javascript.html | 2 +- .../layouts/partials/meta.html | 4 +- .../layouts/partials/shortcodes/version.html | 23 ++--- .../layouts/partials/version-selector.html | 4 +- .../layouts/shortcodes/card.html | 2 +- .../layouts/shortcodes/full-version.html | 2 +- .../arangoproxy/internal/models/version.go | 4 +- .../arangoproxy/internal/service/service.go | 87 ++++++++++--------- 10 files changed, 95 insertions(+), 86 deletions(-) diff --git a/site/data/versions.yaml b/site/data/versions.yaml index f3da90f719..d8f36acdb9 100644 --- a/site/data/versions.yaml +++ b/site/data/versions.yaml @@ -1,24 +1,21 @@ -- name: "platform" - version: "0.1.0" - alias: "platform" - deprecated: false +/arangodb/: -- name: "3.13" - version: "3.13.0" - alias: "devel" - deprecated: false + - name: "3.13" + version: "3.13.0" + alias: "devel" + deprecated: false -- name: "3.12" - version: "3.12.5" - alias: "stable" - deprecated: false + - name: "3.12" + version: "3.12.5" + alias: "stable" + deprecated: false -- name: "3.11" - version: "3.11.14" - alias: "3.11" - deprecated: true + - name: "3.11" + version: "3.11.14" + alias: "3.11" + deprecated: true -- name: "3.10" - version: "3.10.14" - alias: "3.10" - deprecated: true + - name: "3.10" + version: "3.10.14" + alias: "3.10" + deprecated: true diff --git a/site/themes/arangodb-docs-theme/layouts/partials/breadcrumbs.html b/site/themes/arangodb-docs-theme/layouts/partials/breadcrumbs.html index 7e4d6f9eb7..cc19ff682d 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/breadcrumbs.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/breadcrumbs.html @@ -7,8 +7,9 @@ <meta itemprop="position" content="{{ .Params.menuTitle | markdownify }}" /> <a itemprop="item" class="link" href="{{ .RelPermalink }}"> <span itemprop="name" class="breadcrumb-entry"> - {{ if eq (len .Ancestors) 1 -}} - {{ template "getVersionLong" dict "pageType" .Page.Type -}} + {{ if eq .Path "/arangodb/" -}} + {{ $coreVersion := index (split .Path "/") 2 }} + {{ template "getVersionLong" dict "coreVersion" $coreVersion -}} {{ else -}} {{ .Params.menuTitle | markdownify -}} {{ end -}} @@ -23,8 +24,9 @@ <meta itemprop="position" content="{{ .Params.menuTitle | markdownify }}" /> <a itemprop="item" class="link" href="{{ .RelPermalink }}"> <span itemprop="name" class="breadcrumb-entry"> - {{ if eq (len .Ancestors) 1 -}} - {{ template "getVersionLong" dict "pageType" .Page.Type -}} + {{ if eq .Path "/arangodb/" -}} + {{ $coreVersion := index (split .Path "/") 2 }} + {{ template "getVersionLong" dict "coreVersion" $coreVersion -}} {{ else -}} {{ .Params.menuTitle | markdownify -}} {{ end -}} @@ -36,10 +38,10 @@ </nav> {{ define "getVersionLong" -}} - {{ $pageType := .pageType -}} - {{ $versions := site.Data.versions -}} + {{ $coreVersion := .coreVersion -}} + {{ $versions := index site.Data.versions "/arangodb/" -}} {{ range $i, $version := $versions -}} - {{ if eq $pageType $version.name -}} + {{ if eq $coreVersion $version.name -}} {{ $version.version -}} {{ end -}} {{ end -}} diff --git a/site/themes/arangodb-docs-theme/layouts/partials/javascript.html b/site/themes/arangodb-docs-theme/layouts/partials/javascript.html index 760d1179fb..b1cdae7133 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/javascript.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/javascript.html @@ -2,7 +2,7 @@ <script src="{{"js/clipboard.min.js" | relURL}}{{ if not .Site.Params.disableAssetsBusting }}?{{ now.Unix }}{{ end }}" defer></script> <script src="{{"js/featherlight.min.js" | relURL}}{{ if not .Site.Params.disableAssetsBusting }}?{{ now.Unix }}{{ end }}" defer></script> -{{ $versions := site.Data.versions -}} +{{ $versions := index site.Data.versions "/arangodb/" -}} <script> var versions = {{ $versions }} </script> diff --git a/site/themes/arangodb-docs-theme/layouts/partials/meta.html b/site/themes/arangodb-docs-theme/layouts/partials/meta.html index 0a1a0e646f..a94a868890 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/meta.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/meta.html @@ -17,9 +17,9 @@ {{- with $versionShort }} <meta name="docsearch:version" content="{{ . }}"> {{- end }} -{{- if .Page.IsHome }} +{{- if eq .Path "/arangodb/" }} {{- $shortVersions := slice }} - {{- $versions := site.Data.versions }} + {{- $versions := index site.Data.versions "/arangodb/" }} {{- range $version := $versions }} {{- $shortVersions = $shortVersions | append $version.name }} {{- end }} diff --git a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html index c82297d40e..3466579da1 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html @@ -1,15 +1,18 @@ {{- $page := .page }} -{{- $versions := site.Data.versions }} -{{- range $i, $version := $versions }} - {{- if or (eq $page.Type $version.name) (eq $page.Type $version.alias) }} - {{- $page.Store.Set "version" $version.version }} - {{- $page.Store.Set "versionShort" $version.name }} - {{- $page.Store.Set "alias" $version.alias }} - {{- $page.Store.Set "deprecated" $version.deprecated }} - {{- if ne $version.name "platform" }} - {{- template "checkVersionIsInDevelopment" dict "page" $page "pageVersion" $version.name "versions" $versions }} +{{- if hasPrefix $page.Path "/arangodb/" }} + {{- $versions := index site.Data.versions "/arangodb/" }} + {{- $coreVersion := index (split $page.Path "/") 2 }} + {{- range $i, $version := $versions }} + {{- if or (eq $coreVersion $version.name) (eq $coreVersion $version.alias) }} + {{- $page.Store.Set "version" $version.version }} + {{- $page.Store.Set "versionShort" $version.name }} + {{- $page.Store.Set "alias" $version.alias }} + {{- $page.Store.Set "deprecated" $version.deprecated }} + {{- if ne $version.name "platform" }} + {{- template "checkVersionIsInDevelopment" dict "page" $page "pageVersion" $version.name "versions" $versions }} + {{- end }} + {{- break }} {{- end }} - {{- break }} {{- end }} {{- end }} diff --git a/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html b/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html index 918cbf161c..059dc6eec9 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html @@ -1,8 +1,8 @@ <div class="version-selector"> <select class="arangodb-version" onchange="changeVersion();"> - {{ $versions := site.Data.versions }} + {{ $versions := index site.Data.versions "/arangodb/" }} {{ range $i, $version := $versions }} - {{ if eq $version.name "platform" }}{{ continue }}{{ end }} + {{/* if eq $version.name "platform" }}{{ continue }}{{ end */}} {{ if ne $version.name $version.alias }} <option value="{{ $version.alias }}">{{ $version.alias }}</option> {{ end }} diff --git a/site/themes/arangodb-docs-theme/layouts/shortcodes/card.html b/site/themes/arangodb-docs-theme/layouts/shortcodes/card.html index 715ea43acf..0fc929d810 100644 --- a/site/themes/arangodb-docs-theme/layouts/shortcodes/card.html +++ b/site/themes/arangodb-docs-theme/layouts/shortcodes/card.html @@ -1,7 +1,7 @@ {{- $title := .Get "title" }} {{- $link := .Get "link" }} {{- $image := resources.GetMatch (printf "images/%s" ( .Get "icon" )) }} -{{- $versions := .Site.Data.versions }} +{{- $versions := index .Site.Data.versions "/arangodb/" }} {{- $stableVersion := (index (where $versions "alias" "stable") 0).name }} {{- /* TODO: Check if relative links are resolved in the context of the linking page */}} {{- partial "shortcodes/card.html" (dict diff --git a/site/themes/arangodb-docs-theme/layouts/shortcodes/full-version.html b/site/themes/arangodb-docs-theme/layouts/shortcodes/full-version.html index 9e1f7961ed..20883b4ac0 100644 --- a/site/themes/arangodb-docs-theme/layouts/shortcodes/full-version.html +++ b/site/themes/arangodb-docs-theme/layouts/shortcodes/full-version.html @@ -1,5 +1,5 @@ {{ $ver := (.Get 0) -}} -{{- $versions := (where .Site.Data.versions "name" $ver) -}} +{{- $versions := (where (index .Site.Data.versions "/arangodb/") "name" $ver) -}} {{ if $versions -}} {{ (index $versions 0).version | htmlEscape -}} {{ else -}} diff --git a/toolchain/arangoproxy/internal/models/version.go b/toolchain/arangoproxy/internal/models/version.go index 7d6ddf7dfa..6b1383a397 100644 --- a/toolchain/arangoproxy/internal/models/version.go +++ b/toolchain/arangoproxy/internal/models/version.go @@ -13,8 +13,8 @@ type Version struct { Alias string `yaml:"alias,omitempty" json:"alias,omitempty"` } -func LoadVersions() []Version { - versions := []Version{} +func LoadVersions() map[string][]Version { + versions := map[string][]Version{} yamlFile, _ := os.ReadFile("/home/site/data/versions.yaml") yaml.Unmarshal(yamlFile, &versions) diff --git a/toolchain/arangoproxy/internal/service/service.go b/toolchain/arangoproxy/internal/service/service.go index 600bb90e60..fbda00d06b 100644 --- a/toolchain/arangoproxy/internal/service/service.go +++ b/toolchain/arangoproxy/internal/service/service.go @@ -136,50 +136,55 @@ type OpenapiService struct{} var OpenapiFormatter = format.OpenapiFormatter{} var OpenapiGlobalMap map[string]interface{} -var Versions []models.Version +var Versions map[string][]models.Version func init() { OpenapiGlobalMap = make(map[string]interface{}) Versions = models.LoadVersions() - for _, version := range Versions { - tags := []map[string]string{} - yamlFile, err := os.ReadFile("/home/site/data/openapi_tags.yaml") - if err != nil { - models.Logger.Printf("[ERROR] Opening openapi_tags file: %s", err.Error()) - os.Exit(1) + for key, versionList := range Versions { + if key != "/arangodb/" { + continue } + for _, version := range versionList { + tags := []map[string]string{} + yamlFile, err := os.ReadFile("/home/site/data/openapi_tags.yaml") + if err != nil { + models.Logger.Printf("[ERROR] Opening openapi_tags file: %s", err.Error()) + os.Exit(1) + } - yaml.Unmarshal(yamlFile, &tags) + yaml.Unmarshal(yamlFile, &tags) - // License of the exposed API (but we assume it is the same as the source code) - license := map[string]interface{}{ - "name": "Business Source License 1.1", - "url": "https://github.com/arangodb/arangodb/blob/devel/LICENSE", - } - if version.Name == "3.10" || version.Name == "3.11" { - license["name"] = "Apache 2.0" - license["url"] = fmt.Sprintf("https://github.com/arangodb/arangodb/blob/%s/LICENSE", version.Name) - } + // License of the exposed API (but we assume it is the same as the source code) + license := map[string]interface{}{ + "name": "Business Source License 1.1", + "url": "https://github.com/arangodb/arangodb/blob/devel/LICENSE", + } + if version.Name == "3.10" || version.Name == "3.11" { + license["name"] = "Apache 2.0" + license["url"] = fmt.Sprintf("https://github.com/arangodb/arangodb/blob/%s/LICENSE", version.Name) + } - OpenapiGlobalMap[version.Name] = map[string]interface{}{ - "openapi": "3.1.0", - "info": map[string]interface{}{ - "title": "ArangoDB Core API", - "summary": "The RESTful HTTP API of the ArangoDB Core Database System", - "version": version.Version, - "license": license, - "contact": map[string]interface{}{ - "name": "ArangoDB Inc.", - "url": "https://arangodb.com", + OpenapiGlobalMap[version.Name] = map[string]interface{}{ + "openapi": "3.1.0", + "info": map[string]interface{}{ + "title": "ArangoDB Core API", + "summary": "The RESTful HTTP API of the ArangoDB Core Database System", + "version": version.Version, + "license": license, + "contact": map[string]interface{}{ + "name": "ArangoDB Inc.", + "url": "https://arangodb.com", + }, }, - }, - "paths": make(map[string]interface{}), - "tags": tags, - "externalDocs": map[string]interface{}{ - "description": "ArangoDB Documentation", - "url": "https://docs.arangodb.com", - }, + "paths": make(map[string]interface{}), + "tags": tags, + "externalDocs": map[string]interface{}{ + "description": "ArangoDB Documentation", + "url": "https://docs.arangodb.com", + }, + } } } } @@ -223,15 +228,17 @@ func (service OpenapiService) ValidateOpenapiGlobalSpec() { var wg sync.WaitGroup models.Logger.Summary("<h2>OPENAPI</h2>") - for _, version := range Versions { - if version.Name == "platform" { + for key, versionList := range Versions { + if key != "/arangodb/" { continue } - wg.Add(1) - go service.ValidateFile(version.Name, &wg) - } + for _, version := range versionList { + wg.Add(1) + go service.ValidateFile(version.Name, &wg) + } - wg.Wait() + wg.Wait() + } } func (service OpenapiService) ValidateFile(version string, wg *sync.WaitGroup) error { From 29c47638cd175ec07671b4e15df54659cf42c57a Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Mon, 13 Oct 2025 12:26:09 +0200 Subject: [PATCH 10/69] Content re-organization and product renaming --- README.md | 23 +- site/content/3.10/arangograph/_index.md | 38 - site/content/3.10/arangograph/api/_index.md | 37 - .../3.10/arangograph/api/get-started.md | 481 ---------- site/content/3.10/arangograph/backups.md | 172 ---- .../3.10/arangograph/data-loader/_index.md | 70 -- .../3.10/arangograph/data-loader/add-files.md | 59 -- .../arangograph/data-loader/design-graph.md | 68 -- .../3.10/arangograph/deployments/_index.md | 301 ------ .../deployments/private-endpoints.md | 221 ----- .../3.10/arangograph/migrate-to-the-cloud.md | 259 ------ .../arangograph/monitoring-and-metrics.md | 137 --- site/content/3.10/arangograph/my-account.md | 171 ---- site/content/3.10/arangograph/notebooks.md | 170 ---- .../3.10/arangograph/organizations/_index.md | 111 --- .../3.10/arangograph/organizations/billing.md | 36 - .../security-and-access-control/_index.md | 698 -------------- .../single-sign-on/_index.md | 94 -- .../single-sign-on/scim-provisioning.md | 76 -- .../x-509-certificates.md | 179 ---- .../data-science/arangograph-notebooks.md | 22 - .../3.11/arangograph/api/get-started.md | 481 ---------- .../arangograph/api/set-up-a-connection.md | 108 --- site/content/3.11/arangograph/backups.md | 172 ---- .../3.11/arangograph/data-loader/_index.md | 62 -- .../arangograph/data-loader/design-graph.md | 68 -- .../3.11/arangograph/data-loader/example.md | 103 -- .../3.11/arangograph/data-loader/import.md | 72 -- .../3.11/arangograph/deployments/_index.md | 301 ------ .../deployments/private-endpoints.md | 168 ---- .../deployments/upgrades-and-versioning.md | 92 -- .../arangograph/monitoring-and-metrics.md | 137 --- site/content/3.11/arangograph/my-account.md | 171 ---- site/content/3.11/arangograph/notebooks.md | 170 ---- .../3.11/arangograph/oasisctl/_index.md | 18 - .../arangograph/oasisctl/accept/_index.md | 29 - .../accept/accept-organization-invite.md | 30 - .../oasisctl/accept/accept-organization.md | 29 - .../3.11/arangograph/oasisctl/add/_index.md | 30 - .../oasisctl/add/add-auditlog-destination.md | 37 - .../arangograph/oasisctl/add/add-auditlog.md | 29 - .../oasisctl/add/add-group-members.md | 31 - .../arangograph/oasisctl/add/add-group.md | 29 - .../arangograph/oasisctl/auditlog/_index.md | 31 - .../oasisctl/auditlog/auditlog-attach.md | 31 - .../oasisctl/auditlog/auditlog-detach.md | 30 - .../auditlog/auditlog-get-attached-project.md | 30 - .../auditlog/auditlog-get-attached.md | 29 - .../oasisctl/auditlog/auditlog-get.md | 29 - .../arangograph/oasisctl/backup/_index.md | 30 - .../oasisctl/backup/backup-copy.md | 30 - .../oasisctl/backup/backup-download.md | 32 - .../3.11/arangograph/oasisctl/clone/_index.md | 29 - .../oasisctl/clone/clone-deployment-backup.md | 33 - .../oasisctl/clone/clone-deployment.md | 29 - .../3.11/arangograph/oasisctl/completion.md | 39 - .../arangograph/oasisctl/create/_index.md | 42 - .../oasisctl/create/create-apikey.md | 30 - .../oasisctl/create/create-auditlog.md | 32 - .../oasisctl/create/create-backup-policy.md | 50 - .../oasisctl/create/create-backup.md | 34 - .../oasisctl/create/create-cacertificate.md | 33 - .../oasisctl/create/create-deployment.md | 54 -- .../create/create-example-installation.md | 32 - .../oasisctl/create/create-example.md | 29 - .../oasisctl/create/create-group.md | 31 - .../oasisctl/create/create-ipallowlist.md | 34 - .../oasisctl/create/create-metrics-token.md | 34 - .../oasisctl/create/create-metrics.md | 29 - .../oasisctl/create/create-notebook.md | 35 - .../create/create-organization-invite.md | 30 - .../oasisctl/create/create-organization.md | 31 - .../create/create-private-endpoint-service.md | 38 - .../create/create-private-endpoint.md | 29 - .../oasisctl/create/create-private.md | 29 - .../oasisctl/create/create-project.md | 31 - .../oasisctl/create/create-role.md | 32 - .../arangograph/oasisctl/delete/_index.md | 41 - .../oasisctl/delete/delete-apikey.md | 29 - .../delete/delete-auditlog-archive-events.md | 30 - .../delete/delete-auditlog-archive.md | 30 - .../delete/delete-auditlog-destination.md | 33 - .../oasisctl/delete/delete-auditlog.md | 32 - .../oasisctl/delete/delete-backup-policy.md | 31 - .../oasisctl/delete/delete-backup.md | 30 - .../oasisctl/delete/delete-cacertificate.md | 31 - .../oasisctl/delete/delete-deployment.md | 31 - .../delete/delete-example-installation.md | 32 - .../oasisctl/delete/delete-example.md | 29 - .../oasisctl/delete/delete-group-members.md | 31 - .../oasisctl/delete/delete-group.md | 31 - .../oasisctl/delete/delete-ipallowlist.md | 31 - .../oasisctl/delete/delete-metrics-token.md | 32 - .../oasisctl/delete/delete-metrics.md | 29 - .../oasisctl/delete/delete-notebook.md | 29 - .../delete/delete-organization-invite.md | 30 - .../delete/delete-organization-members.md | 30 - .../oasisctl/delete/delete-organization.md | 31 - .../oasisctl/delete/delete-project.md | 30 - .../oasisctl/delete/delete-role.md | 30 - .../arangograph/oasisctl/disable/_index.md | 29 - ...isable-scheduled-root-password-rotation.md | 31 - .../arangograph/oasisctl/enable/_index.md | 29 - ...enable-scheduled-root-password-rotation.md | 31 - .../arangograph/oasisctl/generate-docs.md | 31 - .../3.11/arangograph/oasisctl/get/_index.md | 47 - .../oasisctl/get/get-auditlog-archive.md | 29 - .../oasisctl/get/get-auditlog-events.md | 35 - .../arangograph/oasisctl/get/get-auditlog.md | 32 - .../oasisctl/get/get-backup-policy.md | 29 - .../arangograph/oasisctl/get/get-backup.md | 30 - .../oasisctl/get/get-cacertificate.md | 31 - .../oasisctl/get/get-deployment.md | 32 - .../oasisctl/get/get-example-installation.md | 32 - .../arangograph/oasisctl/get/get-example.md | 30 - .../arangograph/oasisctl/get/get-group.md | 30 - .../oasisctl/get/get-ipallowlist.md | 31 - .../oasisctl/get/get-metrics-token.md | 32 - .../arangograph/oasisctl/get/get-metrics.md | 29 - .../arangograph/oasisctl/get/get-notebook.md | 29 - ...t-organization-authentication-providers.md | 29 - .../get/get-organization-authentication.md | 29 - ...-organization-email-domain-restrictions.md | 29 - .../get/get-organization-email-domain.md | 29 - .../oasisctl/get/get-organization-email.md | 29 - .../oasisctl/get/get-organization-invite.md | 30 - .../oasisctl/get/get-organization.md | 32 - .../arangograph/oasisctl/get/get-policy.md | 29 - .../get/get-private-endpoint-service.md | 31 - .../oasisctl/get/get-private-endpoint.md | 29 - .../arangograph/oasisctl/get/get-private.md | 29 - .../arangograph/oasisctl/get/get-project.md | 30 - .../arangograph/oasisctl/get/get-provider.md | 30 - .../arangograph/oasisctl/get/get-region.md | 31 - .../3.11/arangograph/oasisctl/get/get-role.md | 30 - .../3.11/arangograph/oasisctl/get/get-self.md | 28 - .../oasisctl/get/get-server-status.md | 31 - .../arangograph/oasisctl/get/get-server.md | 29 - .../arangograph/oasisctl/get/get-tandc.md | 30 - .../3.11/arangograph/oasisctl/import.md | 46 - .../3.11/arangograph/oasisctl/list/_index.md | 56 -- .../arangograph/oasisctl/list/list-apikeys.md | 28 - .../oasisctl/list/list-arangodb-versions.md | 29 - .../oasisctl/list/list-arangodb.md | 29 - .../oasisctl/list/list-auditlog-archives.md | 30 - .../list/list-auditlog-destinations.md | 30 - .../oasisctl/list/list-auditlog.md | 30 - .../oasisctl/list/list-auditlogs.md | 29 - .../oasisctl/list/list-backup-policies.md | 30 - .../arangograph/oasisctl/list/list-backup.md | 29 - .../arangograph/oasisctl/list/list-backups.md | 31 - .../oasisctl/list/list-cacertificates.md | 30 - .../oasisctl/list/list-cpusizes.md | 31 - .../oasisctl/list/list-deployments.md | 30 - .../oasisctl/list/list-diskperformances.md | 33 - .../list/list-effective-permissions.md | 29 - .../oasisctl/list/list-effective.md | 29 - .../list/list-example-installations.md | 31 - .../arangograph/oasisctl/list/list-example.md | 29 - .../oasisctl/list/list-examples.md | 29 - .../oasisctl/list/list-group-members.md | 30 - .../arangograph/oasisctl/list/list-group.md | 29 - .../arangograph/oasisctl/list/list-groups.md | 29 - .../oasisctl/list/list-ipallowlists.md | 30 - .../oasisctl/list/list-metrics-tokens.md | 31 - .../arangograph/oasisctl/list/list-metrics.md | 29 - .../oasisctl/list/list-nodesizes.md | 33 - .../oasisctl/list/list-notebookmodels.md | 31 - .../oasisctl/list/list-notebooks.md | 31 - .../list/list-organization-invites.md | 29 - .../list/list-organization-members.md | 29 - .../oasisctl/list/list-organization.md | 30 - .../oasisctl/list/list-organizations.md | 28 - .../oasisctl/list/list-permissions.md | 28 - .../oasisctl/list/list-projects.md | 29 - .../oasisctl/list/list-providers.md | 29 - .../arangograph/oasisctl/list/list-regions.md | 30 - .../arangograph/oasisctl/list/list-roles.md | 29 - .../arangograph/oasisctl/list/list-servers.md | 28 - .../3.11/arangograph/oasisctl/lock/_index.md | 34 - .../oasisctl/lock/lock-cacertificate.md | 31 - .../oasisctl/lock/lock-deployment.md | 31 - .../oasisctl/lock/lock-ipallowlist.md | 31 - .../oasisctl/lock/lock-organization.md | 29 - .../arangograph/oasisctl/lock/lock-policy.md | 29 - .../arangograph/oasisctl/lock/lock-project.md | 30 - .../3.11/arangograph/oasisctl/login.md | 36 - .../content/3.11/arangograph/oasisctl/logs.md | 35 - .../3.11/arangograph/oasisctl/options.md | 57 -- .../3.11/arangograph/oasisctl/pause/_index.md | 29 - .../oasisctl/pause/pause-notebook.md | 29 - .../arangograph/oasisctl/rebalance/_index.md | 29 - .../rebalance/rebalance-deployment-shards.md | 29 - .../rebalance/rebalance-deployment.md | 29 - .../arangograph/oasisctl/reject/_index.md | 29 - .../reject/reject-organization-invite.md | 30 - .../oasisctl/reject/reject-organization.md | 29 - .../3.11/arangograph/oasisctl/renew/_index.md | 29 - .../oasisctl/renew/renew-apikey-token.md | 31 - .../oasisctl/renew/renew-apikey.md | 29 - .../arangograph/oasisctl/resume/_index.md | 30 - .../oasisctl/resume/resume-deployment.md | 31 - .../oasisctl/resume/resume-notebook.md | 29 - .../arangograph/oasisctl/revoke/_index.md | 30 - .../oasisctl/revoke/revoke-apikey-token.md | 31 - .../oasisctl/revoke/revoke-apikey.md | 30 - .../oasisctl/revoke/revoke-metrics-token.md | 32 - .../oasisctl/revoke/revoke-metrics.md | 29 - .../arangograph/oasisctl/rotate/_index.md | 29 - .../rotate/rotate-deployment-server.md | 32 - .../oasisctl/rotate/rotate-deployment.md | 29 - site/content/3.11/arangograph/oasisctl/top.md | 31 - .../arangograph/oasisctl/unlock/_index.md | 34 - .../oasisctl/unlock/unlock-cacertificate.md | 31 - .../oasisctl/unlock/unlock-deployment.md | 31 - .../oasisctl/unlock/unlock-ipallowlist.md | 31 - .../oasisctl/unlock/unlock-organization.md | 29 - .../oasisctl/unlock/unlock-policy.md | 29 - .../oasisctl/unlock/unlock-project.md | 30 - .../arangograph/oasisctl/update/_index.md | 41 - .../oasisctl/update/update-auditlog.md | 33 - .../oasisctl/update/update-backup-policy.md | 50 - .../oasisctl/update/update-backup.md | 34 - .../oasisctl/update/update-cacertificate.md | 34 - .../oasisctl/update/update-deployment.md | 52 -- .../oasisctl/update/update-group.md | 32 - .../oasisctl/update/update-ipallowlist.md | 36 - .../oasisctl/update/update-metrics-token.md | 34 - .../oasisctl/update/update-metrics.md | 29 - .../oasisctl/update/update-notebook.md | 33 - ...e-organization-authentication-providers.md | 34 - .../update-organization-authentication.md | 29 - ...-organization-email-domain-restrictions.md | 30 - .../update-organization-email-domain.md | 29 - .../update/update-organization-email.md | 29 - .../oasisctl/update/update-organization.md | 33 - .../update/update-policy-add-binding.md | 32 - .../oasisctl/update/update-policy-add.md | 29 - .../update/update-policy-delete-binding.md | 32 - .../oasisctl/update/update-policy-delete.md | 29 - .../oasisctl/update/update-policy.md | 30 - .../update/update-private-endpoint-service.md | 38 - .../update/update-private-endpoint.md | 29 - .../oasisctl/update/update-private.md | 29 - .../oasisctl/update/update-project.md | 32 - .../oasisctl/update/update-role.md | 34 - .../3.11/arangograph/oasisctl/upgrade.md | 33 - .../3.11/arangograph/oasisctl/version.md | 28 - .../3.11/arangograph/oasisctl/wait/_index.md | 29 - .../oasisctl/wait/wait-deployment.md | 32 - .../3.11/arangograph/organizations/_index.md | 111 --- .../organizations/credits-and-usage.md | 147 --- .../organizations/users-and-groups.md | 125 --- site/content/3.11/arangograph/projects.md | 82 -- .../security-and-access-control/_index.md | 699 -------------- .../single-sign-on/scim-provisioning.md | 76 -- .../x-509-certificates.md | 178 ---- .../data-science/arangograph-notebooks.md | 22 - .../3.12/about-arangodb/features/platform.md | 57 -- site/content/3.12/arangograph/_index.md | 38 - site/content/3.12/arangograph/api/_index.md | 37 - .../3.12/arangograph/api/get-started.md | 481 ---------- .../arangograph/api/set-up-a-connection.md | 108 --- .../3.12/arangograph/data-loader/add-files.md | 59 -- .../3.12/arangograph/data-loader/example.md | 103 -- .../3.12/arangograph/data-loader/import.md | 72 -- .../deployments/upgrades-and-versioning.md | 92 -- .../3.12/arangograph/migrate-to-the-cloud.md | 259 ------ .../3.12/arangograph/oasisctl/_index.md | 18 - .../arangograph/oasisctl/accept/_index.md | 29 - .../accept/accept-organization-invite.md | 30 - .../oasisctl/accept/accept-organization.md | 29 - .../3.12/arangograph/oasisctl/add/_index.md | 30 - .../oasisctl/add/add-auditlog-destination.md | 37 - .../arangograph/oasisctl/add/add-auditlog.md | 29 - .../oasisctl/add/add-group-members.md | 31 - .../arangograph/oasisctl/add/add-group.md | 29 - .../arangograph/oasisctl/auditlog/_index.md | 31 - .../oasisctl/auditlog/auditlog-attach.md | 31 - .../oasisctl/auditlog/auditlog-detach.md | 30 - .../auditlog/auditlog-get-attached-project.md | 30 - .../auditlog/auditlog-get-attached.md | 29 - .../oasisctl/auditlog/auditlog-get.md | 29 - .../arangograph/oasisctl/backup/_index.md | 30 - .../oasisctl/backup/backup-copy.md | 30 - .../oasisctl/backup/backup-download.md | 32 - .../3.12/arangograph/oasisctl/clone/_index.md | 29 - .../oasisctl/clone/clone-deployment-backup.md | 33 - .../oasisctl/clone/clone-deployment.md | 29 - .../3.12/arangograph/oasisctl/completion.md | 39 - .../arangograph/oasisctl/create/_index.md | 42 - .../oasisctl/create/create-apikey.md | 30 - .../oasisctl/create/create-auditlog.md | 32 - .../oasisctl/create/create-backup-policy.md | 50 - .../oasisctl/create/create-backup.md | 34 - .../oasisctl/create/create-cacertificate.md | 33 - .../oasisctl/create/create-deployment.md | 54 -- .../create/create-example-installation.md | 32 - .../oasisctl/create/create-example.md | 29 - .../oasisctl/create/create-group.md | 31 - .../oasisctl/create/create-ipallowlist.md | 34 - .../oasisctl/create/create-metrics-token.md | 34 - .../oasisctl/create/create-metrics.md | 29 - .../oasisctl/create/create-notebook.md | 35 - .../create/create-organization-invite.md | 30 - .../oasisctl/create/create-organization.md | 31 - .../create/create-private-endpoint-service.md | 38 - .../create/create-private-endpoint.md | 29 - .../oasisctl/create/create-private.md | 29 - .../oasisctl/create/create-project.md | 31 - .../oasisctl/create/create-role.md | 32 - .../arangograph/oasisctl/delete/_index.md | 41 - .../oasisctl/delete/delete-apikey.md | 29 - .../delete/delete-auditlog-archive-events.md | 30 - .../delete/delete-auditlog-archive.md | 30 - .../delete/delete-auditlog-destination.md | 33 - .../oasisctl/delete/delete-auditlog.md | 32 - .../oasisctl/delete/delete-backup-policy.md | 31 - .../oasisctl/delete/delete-backup.md | 30 - .../oasisctl/delete/delete-cacertificate.md | 31 - .../oasisctl/delete/delete-deployment.md | 31 - .../delete/delete-example-installation.md | 32 - .../oasisctl/delete/delete-example.md | 29 - .../oasisctl/delete/delete-group-members.md | 31 - .../oasisctl/delete/delete-group.md | 31 - .../oasisctl/delete/delete-ipallowlist.md | 31 - .../oasisctl/delete/delete-metrics-token.md | 32 - .../oasisctl/delete/delete-metrics.md | 29 - .../oasisctl/delete/delete-notebook.md | 29 - .../delete/delete-organization-invite.md | 30 - .../delete/delete-organization-members.md | 30 - .../oasisctl/delete/delete-organization.md | 31 - .../oasisctl/delete/delete-project.md | 30 - .../oasisctl/delete/delete-role.md | 30 - .../arangograph/oasisctl/disable/_index.md | 29 - ...isable-scheduled-root-password-rotation.md | 31 - .../arangograph/oasisctl/enable/_index.md | 29 - ...enable-scheduled-root-password-rotation.md | 31 - .../arangograph/oasisctl/generate-docs.md | 31 - .../3.12/arangograph/oasisctl/get/_index.md | 47 - .../oasisctl/get/get-auditlog-archive.md | 29 - .../oasisctl/get/get-auditlog-events.md | 35 - .../arangograph/oasisctl/get/get-auditlog.md | 32 - .../oasisctl/get/get-backup-policy.md | 29 - .../arangograph/oasisctl/get/get-backup.md | 30 - .../oasisctl/get/get-cacertificate.md | 31 - .../oasisctl/get/get-deployment.md | 32 - .../oasisctl/get/get-example-installation.md | 32 - .../arangograph/oasisctl/get/get-example.md | 30 - .../arangograph/oasisctl/get/get-group.md | 30 - .../oasisctl/get/get-ipallowlist.md | 31 - .../oasisctl/get/get-metrics-token.md | 32 - .../arangograph/oasisctl/get/get-metrics.md | 29 - .../arangograph/oasisctl/get/get-notebook.md | 29 - ...t-organization-authentication-providers.md | 29 - .../get/get-organization-authentication.md | 29 - ...-organization-email-domain-restrictions.md | 29 - .../get/get-organization-email-domain.md | 29 - .../oasisctl/get/get-organization-email.md | 29 - .../oasisctl/get/get-organization-invite.md | 30 - .../oasisctl/get/get-organization.md | 32 - .../arangograph/oasisctl/get/get-policy.md | 29 - .../get/get-private-endpoint-service.md | 31 - .../oasisctl/get/get-private-endpoint.md | 29 - .../arangograph/oasisctl/get/get-private.md | 29 - .../arangograph/oasisctl/get/get-project.md | 30 - .../arangograph/oasisctl/get/get-provider.md | 30 - .../arangograph/oasisctl/get/get-region.md | 31 - .../3.12/arangograph/oasisctl/get/get-role.md | 30 - .../3.12/arangograph/oasisctl/get/get-self.md | 28 - .../oasisctl/get/get-server-status.md | 31 - .../arangograph/oasisctl/get/get-server.md | 29 - .../arangograph/oasisctl/get/get-tandc.md | 30 - .../3.12/arangograph/oasisctl/import.md | 46 - .../3.12/arangograph/oasisctl/list/_index.md | 56 -- .../arangograph/oasisctl/list/list-apikeys.md | 28 - .../oasisctl/list/list-arangodb-versions.md | 29 - .../oasisctl/list/list-arangodb.md | 29 - .../oasisctl/list/list-auditlog-archives.md | 30 - .../list/list-auditlog-destinations.md | 30 - .../oasisctl/list/list-auditlog.md | 30 - .../oasisctl/list/list-auditlogs.md | 29 - .../oasisctl/list/list-backup-policies.md | 30 - .../arangograph/oasisctl/list/list-backup.md | 29 - .../arangograph/oasisctl/list/list-backups.md | 31 - .../oasisctl/list/list-cacertificates.md | 30 - .../oasisctl/list/list-cpusizes.md | 31 - .../oasisctl/list/list-deployments.md | 30 - .../oasisctl/list/list-diskperformances.md | 33 - .../list/list-effective-permissions.md | 29 - .../oasisctl/list/list-effective.md | 29 - .../list/list-example-installations.md | 31 - .../arangograph/oasisctl/list/list-example.md | 29 - .../oasisctl/list/list-examples.md | 29 - .../oasisctl/list/list-group-members.md | 30 - .../arangograph/oasisctl/list/list-group.md | 29 - .../arangograph/oasisctl/list/list-groups.md | 29 - .../oasisctl/list/list-ipallowlists.md | 30 - .../oasisctl/list/list-metrics-tokens.md | 31 - .../arangograph/oasisctl/list/list-metrics.md | 29 - .../oasisctl/list/list-nodesizes.md | 33 - .../oasisctl/list/list-notebookmodels.md | 31 - .../oasisctl/list/list-notebooks.md | 31 - .../list/list-organization-invites.md | 29 - .../list/list-organization-members.md | 29 - .../oasisctl/list/list-organization.md | 30 - .../oasisctl/list/list-organizations.md | 28 - .../oasisctl/list/list-permissions.md | 28 - .../oasisctl/list/list-projects.md | 29 - .../oasisctl/list/list-providers.md | 29 - .../arangograph/oasisctl/list/list-regions.md | 30 - .../arangograph/oasisctl/list/list-roles.md | 29 - .../arangograph/oasisctl/list/list-servers.md | 28 - .../3.12/arangograph/oasisctl/lock/_index.md | 34 - .../oasisctl/lock/lock-cacertificate.md | 31 - .../oasisctl/lock/lock-deployment.md | 31 - .../oasisctl/lock/lock-ipallowlist.md | 31 - .../oasisctl/lock/lock-organization.md | 29 - .../arangograph/oasisctl/lock/lock-policy.md | 29 - .../arangograph/oasisctl/lock/lock-project.md | 30 - .../3.12/arangograph/oasisctl/login.md | 36 - .../content/3.12/arangograph/oasisctl/logs.md | 35 - .../3.12/arangograph/oasisctl/options.md | 57 -- .../3.12/arangograph/oasisctl/pause/_index.md | 29 - .../oasisctl/pause/pause-notebook.md | 29 - .../arangograph/oasisctl/rebalance/_index.md | 29 - .../rebalance/rebalance-deployment-shards.md | 29 - .../rebalance/rebalance-deployment.md | 29 - .../arangograph/oasisctl/reject/_index.md | 29 - .../reject/reject-organization-invite.md | 30 - .../oasisctl/reject/reject-organization.md | 29 - .../3.12/arangograph/oasisctl/renew/_index.md | 29 - .../oasisctl/renew/renew-apikey-token.md | 31 - .../oasisctl/renew/renew-apikey.md | 29 - .../arangograph/oasisctl/resume/_index.md | 30 - .../oasisctl/resume/resume-deployment.md | 31 - .../oasisctl/resume/resume-notebook.md | 29 - .../arangograph/oasisctl/revoke/_index.md | 30 - .../oasisctl/revoke/revoke-apikey-token.md | 31 - .../oasisctl/revoke/revoke-apikey.md | 30 - .../oasisctl/revoke/revoke-metrics-token.md | 32 - .../oasisctl/revoke/revoke-metrics.md | 29 - .../arangograph/oasisctl/rotate/_index.md | 29 - .../rotate/rotate-deployment-server.md | 32 - .../oasisctl/rotate/rotate-deployment.md | 29 - site/content/3.12/arangograph/oasisctl/top.md | 31 - .../arangograph/oasisctl/unlock/_index.md | 34 - .../oasisctl/unlock/unlock-cacertificate.md | 31 - .../oasisctl/unlock/unlock-deployment.md | 31 - .../oasisctl/unlock/unlock-ipallowlist.md | 31 - .../oasisctl/unlock/unlock-organization.md | 29 - .../oasisctl/unlock/unlock-policy.md | 29 - .../oasisctl/unlock/unlock-project.md | 30 - .../arangograph/oasisctl/update/_index.md | 41 - .../oasisctl/update/update-auditlog.md | 33 - .../oasisctl/update/update-backup-policy.md | 50 - .../oasisctl/update/update-backup.md | 34 - .../oasisctl/update/update-cacertificate.md | 34 - .../oasisctl/update/update-deployment.md | 52 -- .../oasisctl/update/update-group.md | 32 - .../oasisctl/update/update-ipallowlist.md | 36 - .../oasisctl/update/update-metrics-token.md | 34 - .../oasisctl/update/update-metrics.md | 29 - .../oasisctl/update/update-notebook.md | 33 - ...e-organization-authentication-providers.md | 34 - .../update-organization-authentication.md | 29 - ...-organization-email-domain-restrictions.md | 30 - .../update-organization-email-domain.md | 29 - .../update/update-organization-email.md | 29 - .../oasisctl/update/update-organization.md | 33 - .../update/update-policy-add-binding.md | 32 - .../oasisctl/update/update-policy-add.md | 29 - .../update/update-policy-delete-binding.md | 32 - .../oasisctl/update/update-policy-delete.md | 29 - .../oasisctl/update/update-policy.md | 30 - .../update/update-private-endpoint-service.md | 38 - .../update/update-private-endpoint.md | 29 - .../oasisctl/update/update-private.md | 29 - .../oasisctl/update/update-project.md | 32 - .../oasisctl/update/update-role.md | 34 - .../3.12/arangograph/oasisctl/upgrade.md | 33 - .../3.12/arangograph/oasisctl/version.md | 28 - .../3.12/arangograph/oasisctl/wait/_index.md | 29 - .../oasisctl/wait/wait-deployment.md | 32 - .../3.12/arangograph/organizations/_index.md | 111 --- .../3.12/arangograph/organizations/billing.md | 36 - .../organizations/credits-and-usage.md | 147 --- .../organizations/users-and-groups.md | 125 --- site/content/3.12/arangograph/projects.md | 82 -- .../single-sign-on/_index.md | 104 --- site/content/3.13/arangograph/_index.md | 38 - site/content/3.13/arangograph/api/_index.md | 37 - .../arangograph/api/set-up-a-connection.md | 108 --- site/content/3.13/arangograph/backups.md | 172 ---- .../3.13/arangograph/data-loader/_index.md | 62 -- .../3.13/arangograph/data-loader/add-files.md | 59 -- .../arangograph/data-loader/design-graph.md | 68 -- .../3.13/arangograph/data-loader/example.md | 103 -- .../3.13/arangograph/data-loader/import.md | 72 -- .../3.13/arangograph/deployments/_index.md | 314 ------- .../deployments/private-endpoints.md | 168 ---- .../deployments/upgrades-and-versioning.md | 92 -- .../3.13/arangograph/migrate-to-the-cloud.md | 259 ------ .../arangograph/monitoring-and-metrics.md | 137 --- site/content/3.13/arangograph/my-account.md | 171 ---- site/content/3.13/arangograph/notebooks.md | 170 ---- .../3.13/arangograph/oasisctl/_index.md | 18 - .../arangograph/oasisctl/accept/_index.md | 29 - .../accept/accept-organization-invite.md | 30 - .../oasisctl/accept/accept-organization.md | 29 - .../3.13/arangograph/oasisctl/add/_index.md | 30 - .../oasisctl/add/add-auditlog-destination.md | 37 - .../arangograph/oasisctl/add/add-auditlog.md | 29 - .../oasisctl/add/add-group-members.md | 31 - .../arangograph/oasisctl/add/add-group.md | 29 - .../arangograph/oasisctl/auditlog/_index.md | 31 - .../oasisctl/auditlog/auditlog-attach.md | 31 - .../oasisctl/auditlog/auditlog-detach.md | 30 - .../auditlog/auditlog-get-attached-project.md | 30 - .../auditlog/auditlog-get-attached.md | 29 - .../oasisctl/auditlog/auditlog-get.md | 29 - .../arangograph/oasisctl/backup/_index.md | 30 - .../oasisctl/backup/backup-copy.md | 30 - .../oasisctl/backup/backup-download.md | 32 - .../3.13/arangograph/oasisctl/clone/_index.md | 29 - .../oasisctl/clone/clone-deployment-backup.md | 33 - .../oasisctl/clone/clone-deployment.md | 29 - .../3.13/arangograph/oasisctl/completion.md | 39 - .../arangograph/oasisctl/create/_index.md | 42 - .../oasisctl/create/create-apikey.md | 30 - .../oasisctl/create/create-auditlog.md | 32 - .../oasisctl/create/create-backup-policy.md | 50 - .../oasisctl/create/create-backup.md | 34 - .../oasisctl/create/create-cacertificate.md | 33 - .../oasisctl/create/create-deployment.md | 54 -- .../create/create-example-installation.md | 32 - .../oasisctl/create/create-example.md | 29 - .../oasisctl/create/create-group.md | 31 - .../oasisctl/create/create-ipallowlist.md | 34 - .../oasisctl/create/create-metrics-token.md | 34 - .../oasisctl/create/create-metrics.md | 29 - .../oasisctl/create/create-notebook.md | 35 - .../create/create-organization-invite.md | 30 - .../oasisctl/create/create-organization.md | 31 - .../create/create-private-endpoint-service.md | 38 - .../create/create-private-endpoint.md | 29 - .../oasisctl/create/create-private.md | 29 - .../oasisctl/create/create-project.md | 31 - .../oasisctl/create/create-role.md | 32 - .../arangograph/oasisctl/delete/_index.md | 41 - .../oasisctl/delete/delete-apikey.md | 29 - .../delete/delete-auditlog-archive-events.md | 30 - .../delete/delete-auditlog-archive.md | 30 - .../delete/delete-auditlog-destination.md | 33 - .../oasisctl/delete/delete-auditlog.md | 32 - .../oasisctl/delete/delete-backup-policy.md | 31 - .../oasisctl/delete/delete-backup.md | 30 - .../oasisctl/delete/delete-cacertificate.md | 31 - .../oasisctl/delete/delete-deployment.md | 31 - .../delete/delete-example-installation.md | 32 - .../oasisctl/delete/delete-example.md | 29 - .../oasisctl/delete/delete-group-members.md | 31 - .../oasisctl/delete/delete-group.md | 31 - .../oasisctl/delete/delete-ipallowlist.md | 31 - .../oasisctl/delete/delete-metrics-token.md | 32 - .../oasisctl/delete/delete-metrics.md | 29 - .../oasisctl/delete/delete-notebook.md | 29 - .../delete/delete-organization-invite.md | 30 - .../delete/delete-organization-members.md | 30 - .../oasisctl/delete/delete-organization.md | 31 - .../oasisctl/delete/delete-project.md | 30 - .../oasisctl/delete/delete-role.md | 30 - .../arangograph/oasisctl/disable/_index.md | 29 - ...isable-scheduled-root-password-rotation.md | 31 - .../arangograph/oasisctl/enable/_index.md | 29 - ...enable-scheduled-root-password-rotation.md | 31 - .../arangograph/oasisctl/generate-docs.md | 31 - .../3.13/arangograph/oasisctl/get/_index.md | 47 - .../oasisctl/get/get-auditlog-archive.md | 29 - .../oasisctl/get/get-auditlog-events.md | 35 - .../arangograph/oasisctl/get/get-auditlog.md | 32 - .../oasisctl/get/get-backup-policy.md | 29 - .../arangograph/oasisctl/get/get-backup.md | 30 - .../oasisctl/get/get-cacertificate.md | 31 - .../oasisctl/get/get-deployment.md | 32 - .../oasisctl/get/get-example-installation.md | 32 - .../arangograph/oasisctl/get/get-example.md | 30 - .../arangograph/oasisctl/get/get-group.md | 30 - .../oasisctl/get/get-ipallowlist.md | 31 - .../oasisctl/get/get-metrics-token.md | 32 - .../arangograph/oasisctl/get/get-metrics.md | 29 - .../arangograph/oasisctl/get/get-notebook.md | 29 - ...t-organization-authentication-providers.md | 29 - .../get/get-organization-authentication.md | 29 - ...-organization-email-domain-restrictions.md | 29 - .../get/get-organization-email-domain.md | 29 - .../oasisctl/get/get-organization-email.md | 29 - .../oasisctl/get/get-organization-invite.md | 30 - .../oasisctl/get/get-organization.md | 32 - .../arangograph/oasisctl/get/get-policy.md | 29 - .../get/get-private-endpoint-service.md | 31 - .../oasisctl/get/get-private-endpoint.md | 29 - .../arangograph/oasisctl/get/get-private.md | 29 - .../arangograph/oasisctl/get/get-project.md | 30 - .../arangograph/oasisctl/get/get-provider.md | 30 - .../arangograph/oasisctl/get/get-region.md | 31 - .../3.13/arangograph/oasisctl/get/get-role.md | 30 - .../3.13/arangograph/oasisctl/get/get-self.md | 28 - .../oasisctl/get/get-server-status.md | 31 - .../arangograph/oasisctl/get/get-server.md | 29 - .../arangograph/oasisctl/get/get-tandc.md | 30 - .../3.13/arangograph/oasisctl/import.md | 46 - .../3.13/arangograph/oasisctl/list/_index.md | 56 -- .../arangograph/oasisctl/list/list-apikeys.md | 28 - .../oasisctl/list/list-arangodb-versions.md | 29 - .../oasisctl/list/list-arangodb.md | 29 - .../oasisctl/list/list-auditlog-archives.md | 30 - .../list/list-auditlog-destinations.md | 30 - .../oasisctl/list/list-auditlog.md | 30 - .../oasisctl/list/list-auditlogs.md | 29 - .../oasisctl/list/list-backup-policies.md | 30 - .../arangograph/oasisctl/list/list-backup.md | 29 - .../arangograph/oasisctl/list/list-backups.md | 31 - .../oasisctl/list/list-cacertificates.md | 30 - .../oasisctl/list/list-cpusizes.md | 31 - .../oasisctl/list/list-deployments.md | 30 - .../oasisctl/list/list-diskperformances.md | 33 - .../list/list-effective-permissions.md | 29 - .../oasisctl/list/list-effective.md | 29 - .../list/list-example-installations.md | 31 - .../arangograph/oasisctl/list/list-example.md | 29 - .../oasisctl/list/list-examples.md | 29 - .../oasisctl/list/list-group-members.md | 30 - .../arangograph/oasisctl/list/list-group.md | 29 - .../arangograph/oasisctl/list/list-groups.md | 29 - .../oasisctl/list/list-ipallowlists.md | 30 - .../oasisctl/list/list-metrics-tokens.md | 31 - .../arangograph/oasisctl/list/list-metrics.md | 29 - .../oasisctl/list/list-nodesizes.md | 33 - .../oasisctl/list/list-notebookmodels.md | 31 - .../oasisctl/list/list-notebooks.md | 31 - .../list/list-organization-invites.md | 29 - .../list/list-organization-members.md | 29 - .../oasisctl/list/list-organization.md | 30 - .../oasisctl/list/list-organizations.md | 28 - .../oasisctl/list/list-permissions.md | 28 - .../oasisctl/list/list-projects.md | 29 - .../oasisctl/list/list-providers.md | 29 - .../arangograph/oasisctl/list/list-regions.md | 30 - .../arangograph/oasisctl/list/list-roles.md | 29 - .../arangograph/oasisctl/list/list-servers.md | 28 - .../3.13/arangograph/oasisctl/lock/_index.md | 34 - .../oasisctl/lock/lock-cacertificate.md | 31 - .../oasisctl/lock/lock-deployment.md | 31 - .../oasisctl/lock/lock-ipallowlist.md | 31 - .../oasisctl/lock/lock-organization.md | 29 - .../arangograph/oasisctl/lock/lock-policy.md | 29 - .../arangograph/oasisctl/lock/lock-project.md | 30 - .../3.13/arangograph/oasisctl/login.md | 36 - .../content/3.13/arangograph/oasisctl/logs.md | 35 - .../3.13/arangograph/oasisctl/options.md | 57 -- .../3.13/arangograph/oasisctl/pause/_index.md | 29 - .../oasisctl/pause/pause-notebook.md | 29 - .../arangograph/oasisctl/rebalance/_index.md | 29 - .../rebalance/rebalance-deployment-shards.md | 29 - .../rebalance/rebalance-deployment.md | 29 - .../arangograph/oasisctl/reject/_index.md | 29 - .../reject/reject-organization-invite.md | 30 - .../oasisctl/reject/reject-organization.md | 29 - .../3.13/arangograph/oasisctl/renew/_index.md | 29 - .../oasisctl/renew/renew-apikey-token.md | 31 - .../oasisctl/renew/renew-apikey.md | 29 - .../arangograph/oasisctl/resume/_index.md | 30 - .../oasisctl/resume/resume-deployment.md | 31 - .../oasisctl/resume/resume-notebook.md | 29 - .../arangograph/oasisctl/revoke/_index.md | 30 - .../oasisctl/revoke/revoke-apikey-token.md | 31 - .../oasisctl/revoke/revoke-apikey.md | 30 - .../oasisctl/revoke/revoke-metrics-token.md | 32 - .../oasisctl/revoke/revoke-metrics.md | 29 - .../arangograph/oasisctl/rotate/_index.md | 29 - .../rotate/rotate-deployment-server.md | 32 - .../oasisctl/rotate/rotate-deployment.md | 29 - site/content/3.13/arangograph/oasisctl/top.md | 31 - .../arangograph/oasisctl/unlock/_index.md | 34 - .../oasisctl/unlock/unlock-cacertificate.md | 31 - .../oasisctl/unlock/unlock-deployment.md | 31 - .../oasisctl/unlock/unlock-ipallowlist.md | 31 - .../oasisctl/unlock/unlock-organization.md | 29 - .../oasisctl/unlock/unlock-policy.md | 29 - .../oasisctl/unlock/unlock-project.md | 30 - .../arangograph/oasisctl/update/_index.md | 41 - .../oasisctl/update/update-auditlog.md | 33 - .../oasisctl/update/update-backup-policy.md | 50 - .../oasisctl/update/update-backup.md | 34 - .../oasisctl/update/update-cacertificate.md | 34 - .../oasisctl/update/update-deployment.md | 52 -- .../oasisctl/update/update-group.md | 32 - .../oasisctl/update/update-ipallowlist.md | 36 - .../oasisctl/update/update-metrics-token.md | 34 - .../oasisctl/update/update-metrics.md | 29 - .../oasisctl/update/update-notebook.md | 33 - ...e-organization-authentication-providers.md | 34 - .../update-organization-authentication.md | 29 - ...-organization-email-domain-restrictions.md | 30 - .../update-organization-email-domain.md | 29 - .../update/update-organization-email.md | 29 - .../oasisctl/update/update-organization.md | 33 - .../update/update-policy-add-binding.md | 32 - .../oasisctl/update/update-policy-add.md | 29 - .../update/update-policy-delete-binding.md | 32 - .../oasisctl/update/update-policy-delete.md | 29 - .../oasisctl/update/update-policy.md | 30 - .../update/update-private-endpoint-service.md | 38 - .../update/update-private-endpoint.md | 29 - .../oasisctl/update/update-private.md | 29 - .../oasisctl/update/update-project.md | 32 - .../oasisctl/update/update-role.md | 34 - .../3.13/arangograph/oasisctl/upgrade.md | 33 - .../3.13/arangograph/oasisctl/version.md | 28 - .../3.13/arangograph/oasisctl/wait/_index.md | 29 - .../oasisctl/wait/wait-deployment.md | 32 - .../3.13/arangograph/organizations/billing.md | 36 - .../organizations/credits-and-usage.md | 147 --- .../organizations/users-and-groups.md | 125 --- site/content/3.13/arangograph/projects.md | 82 -- .../security-and-access-control/_index.md | 699 -------------- .../single-sign-on/_index.md | 104 --- .../single-sign-on/scim-provisioning.md | 76 -- .../x-509-certificates.md | 178 ---- .../3.13/data-science/graphrag/_index.md | 163 ---- site/content/3.13/graphs/graph-visualizer.md | 299 ------ .../{3.11/arangograph => amp}/_index.md | 14 +- .../{3.11/arangograph => amp}/api/_index.md | 17 +- .../arangograph => amp}/api/get-started.md | 32 +- .../api/set-up-a-connection.md | 0 .../{3.12/arangograph => amp}/backups.md | 30 +- .../arangograph => amp}/data-loader/_index.md | 10 +- .../data-loader/add-files.md | 2 +- .../data-loader/design-graph.md | 6 +- .../data-loader/example.md | 14 +- .../arangograph => amp}/data-loader/import.md | 0 .../arangograph => amp}/deployments/_index.md | 18 +- .../deployments/private-endpoints.md | 16 +- .../deployments/upgrades-and-versioning.md | 0 .../migrate-to-the-cloud.md | 4 +- .../monitoring-and-metrics.md | 14 +- .../{3.12/arangograph => amp}/my-account.md | 26 +- .../{3.12/arangograph => amp}/notebooks.md | 4 +- .../arangograph => amp}/oasisctl/_index.md | 0 .../oasisctl/accept/_index.md | 0 .../accept/accept-organization-invite.md | 0 .../oasisctl/accept/accept-organization.md | 0 .../oasisctl/add/_index.md | 0 .../oasisctl/add/add-auditlog-destination.md | 0 .../oasisctl/add/add-auditlog.md | 0 .../oasisctl/add/add-group-members.md | 0 .../oasisctl/add/add-group.md | 0 .../oasisctl/auditlog/_index.md | 0 .../oasisctl/auditlog/auditlog-attach.md | 0 .../oasisctl/auditlog/auditlog-detach.md | 0 .../auditlog/auditlog-get-attached-project.md | 0 .../auditlog/auditlog-get-attached.md | 0 .../oasisctl/auditlog/auditlog-get.md | 0 .../oasisctl/backup/_index.md | 0 .../oasisctl/backup/backup-copy.md | 0 .../oasisctl/backup/backup-download.md | 0 .../oasisctl/clone/_index.md | 0 .../oasisctl/clone/clone-deployment-backup.md | 0 .../oasisctl/clone/clone-deployment.md | 0 .../oasisctl/completion.md | 0 .../oasisctl/create/_index.md | 0 .../oasisctl/create/create-apikey.md | 0 .../oasisctl/create/create-auditlog.md | 0 .../oasisctl/create/create-backup-policy.md | 0 .../oasisctl/create/create-backup.md | 0 .../oasisctl/create/create-cacertificate.md | 0 .../oasisctl/create/create-deployment.md | 0 .../create/create-example-installation.md | 0 .../oasisctl/create/create-example.md | 0 .../oasisctl/create/create-group.md | 0 .../oasisctl/create/create-ipallowlist.md | 0 .../oasisctl/create/create-metrics-token.md | 0 .../oasisctl/create/create-metrics.md | 0 .../oasisctl/create/create-notebook.md | 0 .../create/create-organization-invite.md | 0 .../oasisctl/create/create-organization.md | 0 .../create/create-private-endpoint-service.md | 0 .../create/create-private-endpoint.md | 0 .../oasisctl/create/create-private.md | 0 .../oasisctl/create/create-project.md | 0 .../oasisctl/create/create-role.md | 0 .../oasisctl/delete/_index.md | 0 .../oasisctl/delete/delete-apikey.md | 0 .../delete/delete-auditlog-archive-events.md | 0 .../delete/delete-auditlog-archive.md | 0 .../delete/delete-auditlog-destination.md | 0 .../oasisctl/delete/delete-auditlog.md | 0 .../oasisctl/delete/delete-backup-policy.md | 0 .../oasisctl/delete/delete-backup.md | 0 .../oasisctl/delete/delete-cacertificate.md | 0 .../oasisctl/delete/delete-deployment.md | 0 .../delete/delete-example-installation.md | 0 .../oasisctl/delete/delete-example.md | 0 .../oasisctl/delete/delete-group-members.md | 0 .../oasisctl/delete/delete-group.md | 0 .../oasisctl/delete/delete-ipallowlist.md | 0 .../oasisctl/delete/delete-metrics-token.md | 0 .../oasisctl/delete/delete-metrics.md | 0 .../oasisctl/delete/delete-notebook.md | 0 .../delete/delete-organization-invite.md | 0 .../delete/delete-organization-members.md | 0 .../oasisctl/delete/delete-organization.md | 0 .../oasisctl/delete/delete-project.md | 0 .../oasisctl/delete/delete-role.md | 0 .../oasisctl/disable/_index.md | 0 ...isable-scheduled-root-password-rotation.md | 0 .../oasisctl/enable/_index.md | 0 ...enable-scheduled-root-password-rotation.md | 0 .../oasisctl/generate-docs.md | 0 .../oasisctl/get/_index.md | 0 .../oasisctl/get/get-auditlog-archive.md | 0 .../oasisctl/get/get-auditlog-events.md | 0 .../oasisctl/get/get-auditlog.md | 0 .../oasisctl/get/get-backup-policy.md | 0 .../oasisctl/get/get-backup.md | 0 .../oasisctl/get/get-cacertificate.md | 0 .../oasisctl/get/get-deployment.md | 0 .../oasisctl/get/get-example-installation.md | 0 .../oasisctl/get/get-example.md | 0 .../oasisctl/get/get-group.md | 0 .../oasisctl/get/get-ipallowlist.md | 0 .../oasisctl/get/get-metrics-token.md | 0 .../oasisctl/get/get-metrics.md | 0 .../oasisctl/get/get-notebook.md | 0 ...t-organization-authentication-providers.md | 0 .../get/get-organization-authentication.md | 0 ...-organization-email-domain-restrictions.md | 0 .../get/get-organization-email-domain.md | 0 .../oasisctl/get/get-organization-email.md | 0 .../oasisctl/get/get-organization-invite.md | 0 .../oasisctl/get/get-organization.md | 0 .../oasisctl/get/get-policy.md | 0 .../get/get-private-endpoint-service.md | 0 .../oasisctl/get/get-private-endpoint.md | 0 .../oasisctl/get/get-private.md | 0 .../oasisctl/get/get-project.md | 0 .../oasisctl/get/get-provider.md | 0 .../oasisctl/get/get-region.md | 0 .../oasisctl/get/get-role.md | 0 .../oasisctl/get/get-self.md | 0 .../oasisctl/get/get-server-status.md | 0 .../oasisctl/get/get-server.md | 0 .../oasisctl/get/get-tandc.md | 0 .../arangograph => amp}/oasisctl/import.md | 0 .../oasisctl/list/_index.md | 0 .../oasisctl/list/list-apikeys.md | 0 .../oasisctl/list/list-arangodb-versions.md | 0 .../oasisctl/list/list-arangodb.md | 0 .../oasisctl/list/list-auditlog-archives.md | 0 .../list/list-auditlog-destinations.md | 0 .../oasisctl/list/list-auditlog.md | 0 .../oasisctl/list/list-auditlogs.md | 0 .../oasisctl/list/list-backup-policies.md | 0 .../oasisctl/list/list-backup.md | 0 .../oasisctl/list/list-backups.md | 0 .../oasisctl/list/list-cacertificates.md | 0 .../oasisctl/list/list-cpusizes.md | 0 .../oasisctl/list/list-deployments.md | 0 .../oasisctl/list/list-diskperformances.md | 0 .../list/list-effective-permissions.md | 0 .../oasisctl/list/list-effective.md | 0 .../list/list-example-installations.md | 0 .../oasisctl/list/list-example.md | 0 .../oasisctl/list/list-examples.md | 0 .../oasisctl/list/list-group-members.md | 0 .../oasisctl/list/list-group.md | 0 .../oasisctl/list/list-groups.md | 0 .../oasisctl/list/list-ipallowlists.md | 0 .../oasisctl/list/list-metrics-tokens.md | 0 .../oasisctl/list/list-metrics.md | 0 .../oasisctl/list/list-nodesizes.md | 0 .../oasisctl/list/list-notebookmodels.md | 0 .../oasisctl/list/list-notebooks.md | 0 .../list/list-organization-invites.md | 0 .../list/list-organization-members.md | 0 .../oasisctl/list/list-organization.md | 0 .../oasisctl/list/list-organizations.md | 0 .../oasisctl/list/list-permissions.md | 0 .../oasisctl/list/list-projects.md | 0 .../oasisctl/list/list-providers.md | 0 .../oasisctl/list/list-regions.md | 0 .../oasisctl/list/list-roles.md | 0 .../oasisctl/list/list-servers.md | 0 .../oasisctl/lock/_index.md | 0 .../oasisctl/lock/lock-cacertificate.md | 0 .../oasisctl/lock/lock-deployment.md | 0 .../oasisctl/lock/lock-ipallowlist.md | 0 .../oasisctl/lock/lock-organization.md | 0 .../oasisctl/lock/lock-policy.md | 0 .../oasisctl/lock/lock-project.md | 0 .../arangograph => amp}/oasisctl/login.md | 0 .../arangograph => amp}/oasisctl/logs.md | 0 .../arangograph => amp}/oasisctl/options.md | 0 .../oasisctl/pause/_index.md | 0 .../oasisctl/pause/pause-notebook.md | 0 .../oasisctl/rebalance/_index.md | 0 .../rebalance/rebalance-deployment-shards.md | 0 .../rebalance/rebalance-deployment.md | 0 .../oasisctl/reject/_index.md | 0 .../reject/reject-organization-invite.md | 0 .../oasisctl/reject/reject-organization.md | 0 .../oasisctl/renew/_index.md | 0 .../oasisctl/renew/renew-apikey-token.md | 0 .../oasisctl/renew/renew-apikey.md | 0 .../oasisctl/resume/_index.md | 0 .../oasisctl/resume/resume-deployment.md | 0 .../oasisctl/resume/resume-notebook.md | 0 .../oasisctl/revoke/_index.md | 0 .../oasisctl/revoke/revoke-apikey-token.md | 0 .../oasisctl/revoke/revoke-apikey.md | 0 .../oasisctl/revoke/revoke-metrics-token.md | 0 .../oasisctl/revoke/revoke-metrics.md | 0 .../oasisctl/rotate/_index.md | 0 .../rotate/rotate-deployment-server.md | 0 .../oasisctl/rotate/rotate-deployment.md | 0 .../{3.10/arangograph => amp}/oasisctl/top.md | 0 .../oasisctl/unlock/_index.md | 0 .../oasisctl/unlock/unlock-cacertificate.md | 0 .../oasisctl/unlock/unlock-deployment.md | 0 .../oasisctl/unlock/unlock-ipallowlist.md | 0 .../oasisctl/unlock/unlock-organization.md | 0 .../oasisctl/unlock/unlock-policy.md | 0 .../oasisctl/unlock/unlock-project.md | 0 .../oasisctl/update/_index.md | 0 .../oasisctl/update/update-auditlog.md | 0 .../oasisctl/update/update-backup-policy.md | 0 .../oasisctl/update/update-backup.md | 0 .../oasisctl/update/update-cacertificate.md | 0 .../oasisctl/update/update-deployment.md | 0 .../oasisctl/update/update-group.md | 0 .../oasisctl/update/update-ipallowlist.md | 0 .../oasisctl/update/update-metrics-token.md | 0 .../oasisctl/update/update-metrics.md | 0 .../oasisctl/update/update-notebook.md | 0 ...e-organization-authentication-providers.md | 0 .../update-organization-authentication.md | 0 ...-organization-email-domain-restrictions.md | 0 .../update-organization-email-domain.md | 0 .../update/update-organization-email.md | 0 .../oasisctl/update/update-organization.md | 0 .../update/update-policy-add-binding.md | 0 .../oasisctl/update/update-policy-add.md | 0 .../update/update-policy-delete-binding.md | 0 .../oasisctl/update/update-policy-delete.md | 0 .../oasisctl/update/update-policy.md | 0 .../update/update-private-endpoint-service.md | 0 .../update/update-private-endpoint.md | 0 .../oasisctl/update/update-private.md | 0 .../oasisctl/update/update-project.md | 0 .../oasisctl/update/update-role.md | 0 .../arangograph => amp}/oasisctl/upgrade.md | 0 .../arangograph => amp}/oasisctl/version.md | 0 .../oasisctl/wait/_index.md | 0 .../oasisctl/wait/wait-deployment.md | 0 .../organizations/_index.md | 8 +- .../organizations/billing.md | 4 +- .../organizations/credits-and-usage.md | 2 +- .../organizations/users-and-groups.md | 12 +- .../{3.10/arangograph => amp}/projects.md | 6 +- .../security-and-access-control/_index.md | 12 +- .../single-sign-on/_index.md | 12 +- .../single-sign-on/scim-provisioning.md | 2 +- .../x-509-certificates.md | 10 +- site/content/{ => arangodb}/3.10/_index.md | 8 +- .../3.10/about}/_index.md | 12 +- .../3.10/about}/features/_index.md | 4 +- .../3.10/about}/features/community-edition.md | 0 .../about}/features/enterprise-edition.md | 2 +- .../about}/features/highlights-by-version.md | 0 .../3.10/about}/use-cases.md | 24 +- .../content/{ => arangodb}/3.10/aql/_index.md | 0 .../{ => arangodb}/3.10/aql/common-errors.md | 0 .../{ => arangodb}/3.10/aql/data-queries.md | 0 .../aql/examples-and-query-patterns/_index.md | 0 .../actors-and-movies-dataset-queries.md | 0 .../examples-and-query-patterns/counting.md | 0 .../create-test-data.md | 0 .../diffing-two-documents.md | 0 .../dynamic-attribute-names.md | 0 .../examples-and-query-patterns/grouping.md | 0 .../aql/examples-and-query-patterns/joins.md | 0 .../projections-and-filters.md | 0 .../queries-without-collections.md | 0 .../remove-vertex.md | 4 +- .../examples-and-query-patterns/traversals.md | 2 +- .../upsert-repsert-guide.md | 0 .../aql/execution-and-performance/_index.md | 0 .../caching-query-results.md | 0 .../explaining-queries.md | 0 .../parsing-queries.md | 0 .../query-optimization.md | 0 .../query-profiling.md | 0 .../query-statistics.md | 0 .../3.10/aql/functions/_index.md | 0 .../3.10/aql/functions/arangosearch.md | 0 .../3.10/aql/functions/array.md | 0 .../{ => arangodb}/3.10/aql/functions/bit.md | 0 .../{ => arangodb}/3.10/aql/functions/date.md | 0 .../3.10/aql/functions/document-object.md | 0 .../3.10/aql/functions/fulltext.md | 0 .../{ => arangodb}/3.10/aql/functions/geo.md | 6 +- .../3.10/aql/functions/miscellaneous.md | 0 .../3.10/aql/functions/numeric.md | 0 .../3.10/aql/functions/string.md | 0 .../3.10/aql/functions/type-check-and-cast.md | 0 .../3.10/aql/fundamentals/_index.md | 0 .../accessing-data-from-collections.md | 0 .../3.10/aql/fundamentals/bind-parameters.md | 0 .../3.10/aql/fundamentals/data-types.md | 0 .../3.10/aql/fundamentals/limitations.md | 0 .../3.10/aql/fundamentals/query-errors.md | 0 .../3.10/aql/fundamentals/query-results.md | 0 .../3.10/aql/fundamentals/subqueries.md | 0 .../3.10/aql/fundamentals/syntax.md | 0 .../aql/fundamentals/type-and-value-order.md | 0 .../{ => arangodb}/3.10/aql/graphs/_index.md | 0 .../3.10/aql/graphs/all-shortest-paths.md | 4 +- .../{ => arangodb}/3.10/aql/graphs/k-paths.md | 4 +- .../3.10/aql/graphs/k-shortest-paths.md | 4 +- .../3.10/aql/graphs/shortest-path.md | 4 +- .../3.10/aql/graphs/traversals-explained.md | 16 +- .../3.10/aql/graphs/traversals.md | 4 +- .../3.10/aql/high-level-operations/_index.md | 0 .../3.10/aql/high-level-operations/collect.md | 0 .../3.10/aql/high-level-operations/filter.md | 0 .../3.10/aql/high-level-operations/for.md | 0 .../3.10/aql/high-level-operations/insert.md | 0 .../3.10/aql/high-level-operations/let.md | 0 .../3.10/aql/high-level-operations/limit.md | 0 .../3.10/aql/high-level-operations/remove.md | 0 .../3.10/aql/high-level-operations/replace.md | 0 .../3.10/aql/high-level-operations/return.md | 0 .../3.10/aql/high-level-operations/search.md | 0 .../3.10/aql/high-level-operations/sort.md | 0 .../3.10/aql/high-level-operations/update.md | 0 .../3.10/aql/high-level-operations/upsert.md | 0 .../3.10/aql/high-level-operations/window.md | 0 .../3.10/aql/high-level-operations/with.md | 0 .../3.10/aql/how-to-invoke-aql/_index.md | 0 .../aql/how-to-invoke-aql/with-arangosh.md | 0 .../with-the-web-interface.md | 0 .../{ => arangodb}/3.10/aql/operators.md | 0 .../3.10/aql/user-defined-functions.md | 0 .../{ => arangodb}/3.10/components/_index.md | 0 .../3.10/components/arangodb-server/_index.md | 4 +- .../arangodb-server/environment-variables.md | 0 .../3.10/components/arangodb-server/ldap.md | 0 .../components/arangodb-server/options.md | 0 .../arangodb-server/storage-engine.md | 0 .../3.10/components/tools/_index.md | 2 +- .../components/tools/arangobackup/_index.md | 0 .../components/tools/arangobackup/examples.md | 0 .../components/tools/arangobackup/options.md | 0 .../components/tools/arangobench/_index.md | 0 .../components/tools/arangobench/options.md | 0 .../components/tools/arangodb-shell/_index.md | 0 .../tools/arangodb-shell/details.md | 0 .../tools/arangodb-shell/examples.md | 0 .../tools/arangodb-shell/options.md | 0 .../tools/arangodb-starter/_index.md | 0 .../tools/arangodb-starter/architecture.md | 0 .../tools/arangodb-starter/options.md | 0 .../tools/arangodb-starter/security.md | 0 .../components/tools/arangodump/_index.md | 0 .../components/tools/arangodump/examples.md | 0 .../tools/arangodump/limitations.md | 0 .../components/tools/arangodump/maskings.md | 0 .../components/tools/arangodump/options.md | 0 .../components/tools/arangoexport/_index.md | 0 .../components/tools/arangoexport/examples.md | 0 .../components/tools/arangoexport/options.md | 0 .../components/tools/arangoimport/_index.md | 0 .../components/tools/arangoimport/details.md | 0 .../tools/arangoimport/examples-csv.md | 0 .../tools/arangoimport/examples-json.md | 0 .../components/tools/arangoimport/options.md | 0 .../components/tools/arangoinspect/_index.md | 0 .../tools/arangoinspect/examples.md | 0 .../components/tools/arangoinspect/options.md | 0 .../components/tools/arangorestore/_index.md | 0 .../tools/arangorestore/examples.md | 0 .../arangorestore/fast-cluster-restore.md | 0 .../components/tools/arangorestore/options.md | 0 .../components/tools/arangovpack/_index.md | 0 .../components/tools/arangovpack/options.md | 0 .../3.10/components/tools/foxx-cli/_index.md | 0 .../3.10/components/tools/foxx-cli/details.md | 0 .../3.10}/components/web-interface/_index.md | 2 +- .../3.10/components/web-interface/cluster.md | 6 +- .../components/web-interface/collections.md | 4 +- .../components/web-interface/dashboard.md | 2 +- .../components/web-interface/document.md | 2 +- .../3.10/components/web-interface/graphs.md | 6 +- .../3.10}/components/web-interface/logs.md | 2 +- .../3.10/components/web-interface/queries.md | 12 +- .../3.10/components/web-interface/services.md | 6 +- .../3.10}/components/web-interface/users.md | 6 +- .../{ => arangodb}/3.10/concepts/_index.md | 0 .../3.10/concepts/data-models.md | 0 .../3.10/concepts/data-retrieval.md | 0 .../3.10/concepts/data-structure/_index.md | 0 .../concepts/data-structure/collections.md | 0 .../3.10/concepts/data-structure/databases.md | 0 .../data-structure/documents/_index.md | 0 .../documents/computed-values.md | 0 .../documents/schema-validation.md | 0 .../3.10/concepts/data-structure/views.md | 0 .../3.10/data-science/_index.md | 10 +- .../3.10/data-science/adapters/_index.md | 0 .../adapters/arangodb-cugraph-adapter.md | 0 .../adapters/arangodb-dgl-adapter.md | 0 .../adapters/arangodb-networkx-adapter.md | 0 .../adapters/arangodb-pyg-adapter.md | 0 .../adapters/arangodb-rdf-adapter.md | 0 .../data-science/arangograph-notebooks.md | 22 + .../3.10/data-science/arangographml/_index.md | 4 +- .../3.10/data-science/arangographml/deploy.md | 12 +- .../arangographml/getting-started.md | 4 +- .../3.10/data-science/llm-knowledge-graphs.md | 2 +- .../3.10/data-science/pregel/_index.md | 0 .../3.10/data-science/pregel/algorithms.md | 6 +- .../{ => arangodb}/3.10/deploy/_index.md | 2 +- .../3.10/deploy/active-failover/_index.md | 2 +- .../deploy/active-failover/administration.md | 0 .../deploy/active-failover/manual-start.md | 0 .../using-the-arangodb-starter.md | 0 .../3.10/deploy/arangosync/_index.md | 2 +- .../3.10/deploy/arangosync/administration.md | 0 .../deploy/arangosync/deployment/_index.md | 0 .../arangosync/deployment/arangodb-cluster.md | 0 .../deployment/arangosync-master.md | 0 .../deployment/arangosync-workers.md | 0 .../deployment/prometheus-and-grafana.md | 0 .../3.10/deploy/arangosync/monitoring.md | 0 .../arangosync/operations-and-maintenance.md | 0 .../3.10/deploy/arangosync/security.md | 0 .../3.10/deploy/arangosync/troubleshooting.md | 0 .../3.10/deploy/architecture/_index.md | 0 .../3.10/deploy/architecture/data-sharding.md | 4 +- .../3.10/deploy/architecture/replication.md | 0 .../3.10/deploy/architecture/scalability.md | 0 .../3.10/deploy/cluster/_index.md | 6 +- .../3.10/deploy/cluster/administration.md | 0 .../3.10/deploy/cluster/deployment/_index.md | 2 +- .../deploy/cluster/deployment/manual-start.md | 0 .../deployment/using-the-arangodb-starter.md | 0 .../3.10/deploy/cluster/limitations.md | 0 .../3.10/deploy/in-the-cloud.md | 0 .../{ => arangodb}/3.10/deploy/kubernetes.md | 0 .../3.10}/deploy/oneshard.md | 2 +- .../3.10/deploy/production-checklist.md | 0 .../3.10/deploy/single-instance-vs-cluster.md | 0 .../3.10/deploy/single-instance/_index.md | 0 .../deploy/single-instance/manual-start.md | 0 .../using-the-arangodb-starter.md | 0 .../{ => arangodb}/3.10/develop/_index.md | 0 .../3.10/develop/drivers/_index.md | 0 .../3.10/develop/drivers/csharp-dotnet.md | 0 .../{ => arangodb}/3.10/develop/drivers/go.md | 0 .../3.10/develop/drivers/java/_index.md | 0 .../java/reference-version-6/_index.md | 0 .../java/reference-version-6/driver-setup.md | 0 .../java/reference-version-6/serialization.md | 0 .../java/reference-version-7/_index.md | 0 .../changes-in-version-7.md | 0 .../java/reference-version-7/driver-setup.md | 0 .../java/reference-version-7/serialization.md | 0 .../3.10/develop/drivers/nodejs.md | 0 .../3.10/develop/drivers/python.md | 0 .../3.10/develop/error-codes-and-meanings.md | 0 .../3.10/develop/foxx-microservices/_index.md | 0 .../develop/foxx-microservices/deployment.md | 0 .../foxx-microservices/getting-started.md | 0 .../foxx-microservices/guides/_index.md | 0 .../guides/access-from-the-browser.md | 0 .../guides/authentication-and-sessions.md | 0 .../guides/development-mode.md | 0 .../guides/foxx-in-a-cluster.md | 0 .../guides/linking-services-together.md | 0 .../guides/making-requests.md | 0 .../guides/scripts-and-scheduling.md | 0 .../guides/testing-foxx-services.md | 0 .../guides/using-node-modules.md | 0 .../guides/using-webpack-with-foxx.md | 0 .../guides/working-with-collections.md | 0 .../guides/working-with-files.md | 0 .../guides/working-with-routers.md | 0 .../guides/writing-queries.md | 0 .../foxx-microservices/reference/_index.md | 0 .../reference/configuration.md | 0 .../reference/related-modules/_index.md | 0 .../related-modules/authentication.md | 0 .../reference/related-modules/graphql.md | 0 .../reference/related-modules/oauth-1-0a.md | 0 .../reference/related-modules/oauth-2-0.md | 0 .../reference/related-modules/queues.md | 0 .../reference/routers/_index.md | 0 .../reference/routers/endpoints.md | 0 .../reference/routers/middleware.md | 0 .../reference/routers/request.md | 0 .../reference/routers/response.md | 0 .../reference/service-context.md | 0 .../reference/service-manifest.md | 0 .../reference/sessions-middleware/_index.md | 0 .../session-storages/_index.md | 0 .../session-storages/collection-storage.md | 0 .../session-storages/jwt-storage.md | 0 .../session-transports/_index.md | 0 .../session-transports/cookie-transport.md | 0 .../session-transports/header-transport.md | 0 .../3.10/develop/http-api/_index.md | 2 +- .../3.10/develop/http-api/administration.md | 0 .../3.10/develop/http-api/analyzers.md | 0 .../3.10/develop/http-api/authentication.md | 0 .../3.10/develop/http-api/batch-requests.md | 0 .../3.10/develop/http-api/cluster.md | 0 .../3.10/develop/http-api/collections.md | 0 .../3.10/develop/http-api/databases.md | 0 .../3.10/develop/http-api/documents.md | 0 .../3.10/develop/http-api/foxx.md | 0 .../http-api/general-request-handling.md | 0 .../3.10/develop/http-api/graphs/_index.md | 0 .../3.10/develop/http-api/graphs/edges.md | 0 .../develop/http-api/graphs/named-graphs.md | 4 +- .../3.10/develop/http-api/hot-backups.md | 0 .../3.10/develop/http-api/import.md | 0 .../3.10/develop/http-api/indexes/_index.md | 0 .../3.10/develop/http-api/indexes/fulltext.md | 0 .../develop/http-api/indexes/geo-spatial.md | 0 .../3.10/develop/http-api/indexes/inverted.md | 0 .../http-api/indexes/multi-dimensional.md | 0 .../develop/http-api/indexes/persistent.md | 0 .../3.10/develop/http-api/indexes/ttl.md | 0 .../3.10/develop/http-api/jobs.md | 0 .../develop/http-api/monitoring/_index.md | 0 .../3.10/develop/http-api/monitoring/logs.md | 0 .../develop/http-api/monitoring/metrics.md | 0 .../develop/http-api/monitoring/statistics.md | 0 .../3.10/develop/http-api/pregel.md | 0 .../3.10/develop/http-api/queries/_index.md | 0 .../develop/http-api/queries/aql-queries.md | 0 .../queries/aql-query-results-cache.md | 0 .../queries/user-defined-aql-functions.md | 0 .../develop/http-api/replication/_index.md | 0 .../replication/other-replication-commands.md | 0 .../replication/replication-applier.md | 0 .../http-api/replication/replication-dump.md | 0 .../replication/replication-logger.md | 0 .../http-api/replication/write-ahead-log.md | 0 .../3.10/develop/http-api/security.md | 0 .../3.10/develop/http-api/tasks.md | 0 .../develop/http-api/transactions/_index.md | 0 .../transactions/javascript-transactions.md | 0 .../transactions/stream-transactions.md | 0 .../3.10/develop/http-api/users.md | 0 .../3.10/develop/http-api/views/_index.md | 0 .../http-api/views/arangosearch-views.md | 0 .../http-api/views/search-alias-views.md | 0 .../3.10/develop/integrations/_index.md | 0 .../arangodb-datasource-for-apache-spark.md | 2 +- .../_index.md | 0 .../configuration.md | 0 .../integrations/spring-boot-arangodb.md | 0 .../spring-data-arangodb/_index.md | 0 .../spring-data-arangodb/migration.md | 0 .../reference-version-3/_index.md | 0 .../reference-version-3/mapping/_index.md | 0 .../reference-version-3/mapping/auditing.md | 0 .../reference-version-3/mapping/converter.md | 0 .../reference-version-3/mapping/document.md | 0 .../reference-version-3/mapping/edge.md | 0 .../reference-version-3/mapping/events.md | 0 .../reference-version-3/mapping/indexes.md | 0 .../reference-version-3/mapping/reference.md | 0 .../reference-version-3/mapping/relations.md | 0 .../repositories/_index.md | 0 .../repositories/queries/_index.md | 0 .../repositories/queries/derived-queries.md | 0 .../repositories/queries/named-queries.md | 0 .../repositories/queries/query-methods.md | 0 .../reference-version-3/template.md | 0 .../reference-version-4/_index.md | 0 .../reference-version-4/mapping/_index.md | 0 .../reference-version-4/mapping/auditing.md | 0 .../mapping/computed-values.md | 0 .../reference-version-4/mapping/converter.md | 0 .../reference-version-4/mapping/document.md | 0 .../reference-version-4/mapping/edge.md | 0 .../reference-version-4/mapping/events.md | 0 .../reference-version-4/mapping/indexes.md | 0 .../reference-version-4/mapping/reference.md | 0 .../reference-version-4/mapping/relations.md | 0 .../repositories/_index.md | 0 .../repositories/queries/_index.md | 0 .../repositories/queries/derived-queries.md | 0 .../repositories/queries/named-queries.md | 0 .../repositories/queries/query-methods.md | 0 .../reference-version-4/template.md | 0 .../javascript-api/@arangodb/_index.md | 0 .../@arangodb/collection-object.md | 0 .../javascript-api/@arangodb/cursor-object.md | 0 .../javascript-api/@arangodb/db-object.md | 0 .../javascript-api/@arangodb/view-object.md | 0 .../3.10/develop/javascript-api/_index.md | 0 .../3.10/develop/javascript-api/actions.md | 0 .../3.10/develop/javascript-api/analyzers.md | 0 .../develop/javascript-api/aql-queries.md | 0 .../3.10/develop/javascript-api/console.md | 0 .../3.10/develop/javascript-api/crypto.md | 0 .../3.10/develop/javascript-api/fs.md | 0 .../3.10/develop/javascript-api/request.md | 0 .../3.10/develop/javascript-api/tasks.md | 0 .../3.10/develop/operational-factors.md | 0 .../3.10/develop/satellitecollections.md | 0 .../{ => arangodb}/3.10/develop/smartjoins.md | 0 .../3.10/develop/transactions/_index.md | 0 .../3.10/develop/transactions/durability.md | 0 .../transactions/javascript-transactions.md | 0 .../3.10/develop/transactions/limitations.md | 0 .../transactions/locking-and-isolation.md | 0 .../transactions/stream-transactions.md | 0 .../{ => arangodb}/3.10/get-started/_index.md | 0 .../how-to-interact-with-arangodb.md | 0 .../get-started/on-premises-installation.md | 6 +- .../get-started/set-up-a-cloud-instance.md | 56 +- .../3.10/get-started/start-using-aql.md | 0 .../{ => arangodb}/3.10/graphs/_index.md | 14 +- .../3.10/graphs/enterprisegraphs/_index.md | 0 .../enterprisegraphs/getting-started.md | 2 +- .../graphs/enterprisegraphs/management.md | 0 .../3.10}/graphs/example-graphs.md | 16 +- .../3.10/graphs/general-graphs/_index.md | 2 +- .../3.10}/graphs/general-graphs/functions.md | 2 +- .../3.10/graphs/general-graphs/management.md | 0 .../3.10/graphs/satellitegraphs/_index.md | 2 +- .../3.10/graphs/satellitegraphs/details.md | 0 .../3.10/graphs/satellitegraphs/management.md | 0 .../3.10/graphs/smartgraphs/_index.md | 8 +- .../graphs/smartgraphs/getting-started.md | 2 +- .../3.10/graphs/smartgraphs/management.md | 0 .../testing-graphs-on-single-server.md | 0 .../3.10/graphs/working-with-edges.md | 0 .../3.10/index-and-search/_index.md | 0 .../3.10/index-and-search/analyzers.md | 0 .../index-and-search/arangosearch/_index.md | 2 +- .../arangosearch-views-reference.md | 0 .../case-sensitivity-and-diacritics.md | 0 .../arangosearch/exact-value-matching.md | 0 .../arangosearch/example-datasets.md | 0 .../arangosearch/faceted-search.md | 0 .../arangosearch/full-text-token-search.md | 0 .../arangosearch/fuzzy-search.md | 0 .../arangosearch/geospatial-search.md | 6 +- .../arangosearch/nested-search.md | 0 .../arangosearch/performance.md | 0 .../phrase-and-proximity-search.md | 0 .../arangosearch/prefix-matching.md | 0 .../arangosearch/range-queries.md | 0 .../index-and-search/arangosearch/ranking.md | 0 .../search-alias-views-reference.md | 0 .../arangosearch/search-highlighting.md | 0 .../arangosearch/wildcard-search.md | 0 .../3.10/index-and-search/indexing/_index.md | 0 .../3.10/index-and-search/indexing/basics.md | 0 .../indexing/index-utilization.md | 0 .../indexing/which-index-to-use-when.md | 0 .../indexing/working-with-indexes/_index.md | 0 .../working-with-indexes/fulltext-indexes.md | 0 .../geo-spatial-indexes.md | 0 .../working-with-indexes/inverted-indexes.md | 0 .../multi-dimensional-indexes.md | 0 .../persistent-indexes.md | 0 .../working-with-indexes/ttl-indexes.md | 0 .../vertex-centric-indexes.md | 0 .../{ => arangodb}/3.10/operations/_index.md | 0 .../3.10/operations/administration/_index.md | 0 .../administration/arangodb-starter/_index.md | 0 .../arangodb-starter/recovery-procedure.md | 0 .../arangodb-starter/removal-procedure.md | 0 .../administration/configuration.md | 0 .../administration/import-and-export.md | 0 .../administration/license-management.md | 0 .../operations/administration/log-levels.md | 0 .../administration/reduce-memory-footprint.md | 2 +- .../administration/user-management/_index.md | 0 .../user-management/in-arangosh.md | 0 .../3.10/operations/backup-and-restore.md | 0 .../3.10/operations/installation/_index.md | 2 +- .../installation/compiling/_index.md | 0 .../compiling/compile-on-debian.md | 0 .../compiling/compile-on-windows.md | 2 +- .../compiling/recompiling-jemalloc.md | 0 .../compiling/running-custom-build.md | 0 .../3.10/operations/installation/docker.md | 0 .../operations/installation/linux/_index.md | 0 .../linux/linux-os-tuning-script-examples.md | 0 .../linux/operating-system-configuration.md | 0 .../3.10/operations/installation/macos.md | 0 .../operations/installation/uninstallation.md | 0 .../3.10/operations/installation/windows.md | 0 .../3.10/operations/security/_index.md | 0 .../3.10/operations/security/audit-logging.md | 2 +- .../security/change-root-password.md | 0 .../operations/security/encryption-at-rest.md | 4 +- .../security/securing-starter-deployments.md | 0 .../operations/security/security-options.md | 0 .../3.10/operations/troubleshooting/_index.md | 0 .../operations/troubleshooting/arangod.md | 0 .../troubleshooting/cluster/_index.md | 0 .../troubleshooting/cluster/agency-dump.md | 0 .../troubleshooting/emergency-console.md | 0 .../troubleshooting/query-debug-packages.md | 0 .../3.10/operations/upgrading/_index.md | 0 .../community-to-enterprise-upgrade.md | 0 .../3.10/operations/upgrading/downgrading.md | 0 .../upgrading/manual-deployments/_index.md | 0 .../manual-deployments/active-failover.md | 0 .../upgrading/manual-deployments/cluster.md | 0 .../os-specific-information/_index.md | 0 .../os-specific-information/linux.md | 0 .../os-specific-information/macos.md | 2 +- .../os-specific-information/windows.md | 6 +- .../upgrading/starter-deployments.md | 0 .../3.10/release-notes/_index.md | 0 .../deprecated-and-removed-features.md | 0 .../3.10/release-notes/version-3.0/_index.md | 0 .../incompatible-changes-in-3-0.md | 0 .../version-3.0/whats-new-in-3-0.md | 0 .../3.10/release-notes/version-3.1/_index.md | 0 .../incompatible-changes-in-3-1.md | 0 .../version-3.1/whats-new-in-3-1.md | 0 .../3.10/release-notes/version-3.10/_index.md | 0 .../version-3.10/api-changes-in-3-10.md | 0 .../incompatible-changes-in-3-10.md | 0 .../version-3.10/known-issues-in-3-10.md | 0 .../version-3.10/whats-new-in-3-10.md | 0 .../3.10/release-notes/version-3.2/_index.md | 0 .../incompatible-changes-in-3-2.md | 0 .../version-3.2/known-issues-in-3-2.md | 0 .../version-3.2/whats-new-in-3-2.md | 0 .../3.10/release-notes/version-3.3/_index.md | 0 .../incompatible-changes-in-3-3.md | 0 .../version-3.3/known-issues-in-3-3.md | 0 .../version-3.3/whats-new-in-3-3.md | 0 .../3.10/release-notes/version-3.4/_index.md | 0 .../incompatible-changes-in-3-4.md | 0 .../version-3.4/known-issues-in-3-4.md | 0 .../version-3.4/whats-new-in-3-4.md | 0 .../3.10/release-notes/version-3.5/_index.md | 0 .../incompatible-changes-in-3-5.md | 0 .../version-3.5/known-issues-in-3-5.md | 0 .../version-3.5/whats-new-in-3-5.md | 0 .../3.10/release-notes/version-3.6/_index.md | 0 .../incompatible-changes-in-3-6.md | 0 .../version-3.6/known-issues-in-3-6.md | 0 .../version-3.6/whats-new-in-3-6.md | 0 .../3.10/release-notes/version-3.7/_index.md | 0 .../version-3.7/api-changes-in-3-7.md | 0 .../incompatible-changes-in-3-7.md | 0 .../version-3.7/known-issues-in-3-7.md | 0 .../version-3.7/whats-new-in-3-7.md | 0 .../3.10/release-notes/version-3.8/_index.md | 0 .../version-3.8/api-changes-in-3-8.md | 0 .../incompatible-changes-in-3-8.md | 0 .../version-3.8/known-issues-in-3-8.md | 0 .../version-3.8/whats-new-in-3-8.md | 0 .../3.10/release-notes/version-3.9/_index.md | 0 .../version-3.9/api-changes-in-3-9.md | 0 .../incompatible-changes-in-3-9.md | 0 .../version-3.9/known-issues-in-3-9.md | 0 .../version-3.9/whats-new-in-3-9.md | 0 site/content/{ => arangodb}/3.11/_index.md | 6 +- .../3.11/about}/_index.md | 12 +- .../3.11/about}/features/_index.md | 4 +- .../3.11/about}/features/community-edition.md | 0 .../about}/features/enterprise-edition.md | 0 .../about}/features/highlights-by-version.md | 0 .../3.11/about}/use-cases.md | 24 +- .../content/{ => arangodb}/3.11/aql/_index.md | 0 .../{ => arangodb}/3.11/aql/common-errors.md | 0 .../{ => arangodb}/3.11/aql/data-queries.md | 0 .../aql/examples-and-query-patterns/_index.md | 0 .../actors-and-movies-dataset-queries.md | 0 .../examples-and-query-patterns/counting.md | 0 .../create-test-data.md | 0 .../diffing-two-documents.md | 0 .../dynamic-attribute-names.md | 0 .../examples-and-query-patterns/grouping.md | 0 .../aql/examples-and-query-patterns/joins.md | 0 .../projections-and-filters.md | 0 .../queries-without-collections.md | 0 .../remove-vertex.md | 4 +- .../examples-and-query-patterns/traversals.md | 2 +- .../upsert-repsert-guide.md | 0 .../aql/execution-and-performance/_index.md | 0 .../caching-query-results.md | 0 .../explaining-queries.md | 0 .../parsing-queries.md | 0 .../query-optimization.md | 0 .../query-profiling.md | 0 .../query-statistics.md | 0 .../3.11/aql/functions/_index.md | 0 .../3.11/aql/functions/arangosearch.md | 0 .../3.11/aql/functions/array.md | 0 .../{ => arangodb}/3.11/aql/functions/bit.md | 0 .../{ => arangodb}/3.11/aql/functions/date.md | 0 .../3.11/aql/functions/document-object.md | 0 .../3.11/aql/functions/fulltext.md | 0 .../3.11}/aql/functions/geo.md | 6 +- .../3.11/aql/functions/miscellaneous.md | 0 .../3.11/aql/functions/numeric.md | 0 .../3.11/aql/functions/string.md | 0 .../3.11/aql/functions/type-check-and-cast.md | 0 .../3.11/aql/fundamentals/_index.md | 0 .../accessing-data-from-collections.md | 0 .../3.11/aql/fundamentals/bind-parameters.md | 0 .../3.11/aql/fundamentals/data-types.md | 0 .../3.11/aql/fundamentals/limitations.md | 0 .../3.11/aql/fundamentals/query-errors.md | 0 .../3.11/aql/fundamentals/query-results.md | 0 .../3.11/aql/fundamentals/subqueries.md | 0 .../3.11/aql/fundamentals/syntax.md | 0 .../aql/fundamentals/type-and-value-order.md | 0 .../{ => arangodb}/3.11/aql/graphs/_index.md | 0 .../3.11/aql/graphs/all-shortest-paths.md | 4 +- .../{ => arangodb}/3.11/aql/graphs/k-paths.md | 4 +- .../3.11/aql/graphs/k-shortest-paths.md | 4 +- .../3.11/aql/graphs/shortest-path.md | 4 +- .../3.11/aql/graphs/traversals-explained.md | 16 +- .../3.11/aql/graphs/traversals.md | 4 +- .../3.11/aql/high-level-operations/_index.md | 0 .../3.11/aql/high-level-operations/collect.md | 0 .../3.11/aql/high-level-operations/filter.md | 0 .../3.11/aql/high-level-operations/for.md | 0 .../3.11/aql/high-level-operations/insert.md | 0 .../3.11/aql/high-level-operations/let.md | 0 .../3.11/aql/high-level-operations/limit.md | 0 .../3.11/aql/high-level-operations/remove.md | 0 .../3.11/aql/high-level-operations/replace.md | 0 .../3.11/aql/high-level-operations/return.md | 0 .../3.11/aql/high-level-operations/search.md | 0 .../3.11/aql/high-level-operations/sort.md | 0 .../3.11/aql/high-level-operations/update.md | 0 .../3.11/aql/high-level-operations/upsert.md | 0 .../3.11/aql/high-level-operations/window.md | 0 .../3.11/aql/high-level-operations/with.md | 0 .../3.11/aql/how-to-invoke-aql/_index.md | 0 .../aql/how-to-invoke-aql/with-arangosh.md | 0 .../with-the-web-interface.md | 0 .../{ => arangodb}/3.11/aql/operators.md | 0 .../3.11/aql/user-defined-functions.md | 0 .../{ => arangodb}/3.11/components/_index.md | 0 .../3.11/components/arangodb-server/_index.md | 4 +- .../arangodb-server/environment-variables.md | 0 .../3.11/components/arangodb-server/ldap.md | 0 .../components/arangodb-server/options.md | 0 .../arangodb-server/storage-engine.md | 0 .../3.11}/components/tools/_index.md | 2 +- .../3.11/components/tools/arango-datasets.md | 0 .../components/tools/arangobackup/_index.md | 0 .../components/tools/arangobackup/examples.md | 0 .../components/tools/arangobackup/options.md | 0 .../components/tools/arangobench/_index.md | 0 .../components/tools/arangobench/options.md | 0 .../components/tools/arangodb-shell/_index.md | 0 .../tools/arangodb-shell/details.md | 0 .../tools/arangodb-shell/examples.md | 0 .../tools/arangodb-shell/options.md | 0 .../tools/arangodb-starter/_index.md | 0 .../tools/arangodb-starter/architecture.md | 0 .../tools/arangodb-starter/options.md | 0 .../tools/arangodb-starter/security.md | 0 .../components/tools/arangodump/_index.md | 0 .../components/tools/arangodump/examples.md | 0 .../tools/arangodump/limitations.md | 0 .../components/tools/arangodump/maskings.md | 0 .../components/tools/arangodump/options.md | 0 .../components/tools/arangoexport/_index.md | 0 .../components/tools/arangoexport/examples.md | 0 .../components/tools/arangoexport/options.md | 0 .../components/tools/arangoimport/_index.md | 0 .../components/tools/arangoimport/details.md | 0 .../tools/arangoimport/examples-csv.md | 0 .../tools/arangoimport/examples-json.md | 0 .../components/tools/arangoimport/options.md | 0 .../components/tools/arangoinspect/_index.md | 0 .../tools/arangoinspect/examples.md | 0 .../components/tools/arangoinspect/options.md | 0 .../components/tools/arangorestore/_index.md | 0 .../tools/arangorestore/examples.md | 0 .../components/tools/arangorestore/options.md | 0 .../components/tools/arangovpack/_index.md | 0 .../components/tools/arangovpack/options.md | 0 .../3.11/components/tools/foxx-cli/_index.md | 0 .../3.11/components/tools/foxx-cli/details.md | 0 .../3.11}/components/web-interface/_index.md | 2 +- .../3.11/components/web-interface/cluster.md | 6 +- .../components/web-interface/collections.md | 4 +- .../components/web-interface/dashboard.md | 2 +- .../components/web-interface/document.md | 2 +- .../3.11/components/web-interface/graphs.md | 4 +- .../3.11}/components/web-interface/logs.md | 2 +- .../3.11/components/web-interface/queries.md | 12 +- .../3.11/components/web-interface/services.md | 6 +- .../3.11}/components/web-interface/users.md | 6 +- .../{ => arangodb}/3.11/concepts/_index.md | 0 .../3.11/concepts/data-models.md | 0 .../3.11/concepts/data-retrieval.md | 0 .../3.11/concepts/data-structure/_index.md | 0 .../concepts/data-structure/collections.md | 0 .../3.11/concepts/data-structure/databases.md | 0 .../data-structure/documents/_index.md | 0 .../documents/computed-values.md | 0 .../documents/schema-validation.md | 0 .../3.11/concepts/data-structure/views.md | 0 .../3.11/data-science/_index.md | 10 +- .../3.11/data-science/adapters/_index.md | 0 .../adapters/arangodb-cugraph-adapter.md | 0 .../adapters/arangodb-dgl-adapter.md | 0 .../adapters/arangodb-networkx-adapter.md | 0 .../adapters/arangodb-pyg-adapter.md | 0 .../adapters/arangodb-rdf-adapter.md | 0 .../data-science/arangograph-notebooks.md | 22 + .../3.11/data-science/arangographml/_index.md | 4 +- .../3.11/data-science/arangographml/deploy.md | 4 +- .../arangographml/getting-started.md | 4 +- .../3.11/data-science/graph-analytics.md | 12 +- .../3.11/data-science/llm-knowledge-graphs.md | 2 +- .../3.11/data-science/pregel/_index.md | 0 .../3.11/data-science/pregel/algorithms.md | 6 +- .../{ => arangodb}/3.11/deploy/_index.md | 4 +- .../3.11/deploy/active-failover/_index.md | 2 +- .../deploy/active-failover/administration.md | 0 .../deploy/active-failover/manual-start.md | 0 .../using-the-arangodb-starter.md | 0 .../3.11/deploy/arangosync/_index.md | 2 +- .../3.11/deploy/arangosync/administration.md | 0 .../deploy/arangosync/deployment/_index.md | 0 .../arangosync/deployment/arangodb-cluster.md | 0 .../deployment/arangosync-master.md | 0 .../deployment/arangosync-workers.md | 0 .../deployment/prometheus-and-grafana.md | 0 .../3.11/deploy/arangosync/monitoring.md | 0 .../arangosync/operations-and-maintenance.md | 0 .../3.11/deploy/arangosync/security.md | 0 .../3.11/deploy/arangosync/troubleshooting.md | 0 .../3.11/deploy/architecture/_index.md | 0 .../3.11/deploy/architecture/data-sharding.md | 4 +- .../3.11/deploy/architecture/replication.md | 0 .../3.11/deploy/architecture/scalability.md | 0 .../3.11/deploy/cluster/_index.md | 6 +- .../3.11/deploy/cluster/administration.md | 0 .../3.11/deploy/cluster/deployment/_index.md | 2 +- .../deploy/cluster/deployment/manual-start.md | 0 .../deployment/using-the-arangodb-starter.md | 0 .../3.11/deploy/cluster/limitations.md | 0 .../3.11/deploy/in-the-cloud.md | 0 .../{ => arangodb}/3.11/deploy/kubernetes.md | 0 .../3.11}/deploy/oneshard.md | 2 +- .../3.11/deploy/production-checklist.md | 0 .../3.11/deploy/single-instance-vs-cluster.md | 0 .../3.11/deploy/single-instance/_index.md | 0 .../deploy/single-instance/manual-start.md | 0 .../using-the-arangodb-starter.md | 0 .../{ => arangodb}/3.11/develop/_index.md | 0 .../3.11/develop/drivers/_index.md | 0 .../{ => arangodb}/3.11/develop/drivers/go.md | 0 .../3.11/develop/drivers/java/_index.md | 0 .../java/reference-version-6/_index.md | 0 .../java/reference-version-6/driver-setup.md | 0 .../java/reference-version-6/serialization.md | 0 .../java/reference-version-7/_index.md | 0 .../changes-in-version-7.md | 0 .../java/reference-version-7/driver-setup.md | 0 .../java/reference-version-7/serialization.md | 0 .../3.11/develop/drivers/javascript.md | 0 .../3.11/develop/drivers/python.md | 0 .../3.11/develop/error-codes.md | 0 .../{ => arangodb}/3.11/develop/exit-codes.md | 0 .../3.11/develop/foxx-microservices/_index.md | 0 .../develop/foxx-microservices/deployment.md | 0 .../foxx-microservices/getting-started.md | 0 .../foxx-microservices/guides/_index.md | 0 .../guides/access-from-the-browser.md | 0 .../guides/authentication-and-sessions.md | 0 .../guides/development-mode.md | 0 .../guides/foxx-in-a-cluster.md | 0 .../guides/linking-services-together.md | 0 .../guides/making-requests.md | 0 .../guides/scripts-and-scheduling.md | 0 .../guides/testing-foxx-services.md | 0 .../guides/using-node-modules.md | 0 .../guides/using-webpack-with-foxx.md | 0 .../guides/working-with-collections.md | 0 .../guides/working-with-files.md | 0 .../guides/working-with-routers.md | 0 .../guides/writing-queries.md | 0 .../foxx-microservices/reference/_index.md | 0 .../reference/configuration.md | 0 .../reference/related-modules/_index.md | 0 .../related-modules/authentication.md | 0 .../reference/related-modules/graphql.md | 0 .../reference/related-modules/oauth-1-0a.md | 0 .../reference/related-modules/oauth-2-0.md | 0 .../reference/related-modules/queues.md | 0 .../reference/routers/_index.md | 0 .../reference/routers/endpoints.md | 0 .../reference/routers/middleware.md | 0 .../reference/routers/request.md | 0 .../reference/routers/response.md | 0 .../reference/service-context.md | 0 .../reference/service-manifest.md | 0 .../reference/sessions-middleware/_index.md | 0 .../session-storages/_index.md | 0 .../session-storages/collection-storage.md | 0 .../session-storages/jwt-storage.md | 0 .../session-transports/_index.md | 0 .../session-transports/cookie-transport.md | 0 .../session-transports/header-transport.md | 0 .../3.11/develop/http-api/_index.md | 2 +- .../3.11/develop/http-api/administration.md | 0 .../3.11/develop/http-api/analyzers.md | 0 .../3.11/develop/http-api/authentication.md | 0 .../3.11/develop/http-api/batch-requests.md | 0 .../3.11/develop/http-api/cluster.md | 0 .../3.11/develop/http-api/collections.md | 0 .../3.11/develop/http-api/databases.md | 0 .../3.11/develop/http-api/documents.md | 0 .../3.11/develop/http-api/foxx.md | 0 .../http-api/general-request-handling.md | 0 .../3.11/develop/http-api/graphs/_index.md | 0 .../3.11/develop/http-api/graphs/edges.md | 0 .../develop/http-api/graphs/named-graphs.md | 4 +- .../3.11/develop/http-api/hot-backups.md | 0 .../3.11/develop/http-api/import.md | 0 .../3.11/develop/http-api/indexes/_index.md | 0 .../3.11/develop/http-api/indexes/fulltext.md | 0 .../develop/http-api/indexes/geo-spatial.md | 0 .../3.11/develop/http-api/indexes/inverted.md | 0 .../http-api/indexes/multi-dimensional.md | 0 .../develop/http-api/indexes/persistent.md | 0 .../3.11/develop/http-api/indexes/ttl.md | 0 .../3.11/develop/http-api/jobs.md | 0 .../develop/http-api/monitoring/_index.md | 0 .../3.11/develop/http-api/monitoring/logs.md | 0 .../develop/http-api/monitoring/metrics.md | 0 .../develop/http-api/monitoring/statistics.md | 0 .../3.11/develop/http-api/pregel.md | 0 .../3.11/develop/http-api/queries/_index.md | 0 .../develop/http-api/queries/aql-queries.md | 0 .../queries/aql-query-results-cache.md | 0 .../queries/user-defined-aql-functions.md | 0 .../develop/http-api/replication/_index.md | 0 .../replication/other-replication-commands.md | 0 .../replication/replication-applier.md | 0 .../http-api/replication/replication-dump.md | 0 .../replication/replication-logger.md | 0 .../http-api/replication/write-ahead-log.md | 0 .../3.11/develop/http-api/security.md | 0 .../3.11/develop/http-api/tasks.md | 0 .../develop/http-api/transactions/_index.md | 0 .../transactions/javascript-transactions.md | 0 .../transactions/stream-transactions.md | 0 .../3.11/develop/http-api/users.md | 0 .../3.11/develop/http-api/views/_index.md | 0 .../http-api/views/arangosearch-views.md | 0 .../http-api/views/search-alias-views.md | 0 .../3.11/develop/integrations/_index.md | 0 .../arangodb-datasource-for-apache-spark.md | 2 +- .../_index.md | 0 .../configuration.md | 0 .../integrations/spring-boot-arangodb.md | 0 .../spring-data-arangodb/_index.md | 0 .../spring-data-arangodb/migration.md | 0 .../reference-version-3/_index.md | 0 .../reference-version-3/mapping/_index.md | 0 .../reference-version-3/mapping/auditing.md | 0 .../reference-version-3/mapping/converter.md | 0 .../reference-version-3/mapping/document.md | 0 .../reference-version-3/mapping/edge.md | 0 .../reference-version-3/mapping/events.md | 0 .../reference-version-3/mapping/indexes.md | 0 .../reference-version-3/mapping/reference.md | 0 .../reference-version-3/mapping/relations.md | 0 .../repositories/_index.md | 0 .../repositories/queries/_index.md | 0 .../repositories/queries/derived-queries.md | 0 .../repositories/queries/named-queries.md | 0 .../repositories/queries/query-methods.md | 0 .../reference-version-3/template.md | 0 .../reference-version-4/_index.md | 0 .../reference-version-4/mapping/_index.md | 0 .../reference-version-4/mapping/auditing.md | 0 .../mapping/computed-values.md | 0 .../reference-version-4/mapping/converter.md | 0 .../reference-version-4/mapping/document.md | 0 .../reference-version-4/mapping/edge.md | 0 .../reference-version-4/mapping/events.md | 0 .../reference-version-4/mapping/indexes.md | 0 .../reference-version-4/mapping/reference.md | 0 .../reference-version-4/mapping/relations.md | 0 .../repositories/_index.md | 0 .../repositories/queries/_index.md | 0 .../repositories/queries/derived-queries.md | 0 .../repositories/queries/named-queries.md | 0 .../repositories/queries/query-methods.md | 0 .../reference-version-4/template.md | 0 .../javascript-api/@arangodb/_index.md | 0 .../@arangodb/collection-object.md | 0 .../javascript-api/@arangodb/cursor-object.md | 0 .../javascript-api/@arangodb/db-object.md | 0 .../javascript-api/@arangodb/view-object.md | 0 .../3.11/develop/javascript-api/_index.md | 0 .../3.11/develop/javascript-api/actions.md | 0 .../3.11/develop/javascript-api/analyzers.md | 0 .../develop/javascript-api/aql-queries.md | 0 .../3.11/develop/javascript-api/console.md | 0 .../3.11/develop/javascript-api/crypto.md | 0 .../3.11/develop/javascript-api/fs.md | 0 .../3.11/develop/javascript-api/request.md | 0 .../3.11/develop/javascript-api/tasks.md | 0 .../3.11/develop/operational-factors.md | 0 .../3.11/develop/satellitecollections.md | 0 .../{ => arangodb}/3.11/develop/smartjoins.md | 0 .../3.11/develop/transactions/_index.md | 0 .../3.11/develop/transactions/durability.md | 0 .../transactions/javascript-transactions.md | 0 .../3.11/develop/transactions/limitations.md | 0 .../transactions/locking-and-isolation.md | 0 .../transactions/stream-transactions.md | 0 .../{ => arangodb}/3.11/get-started/_index.md | 0 .../how-to-interact-with-arangodb.md | 0 .../get-started/on-premises-installation.md | 6 +- .../get-started/set-up-a-cloud-instance.md | 56 +- .../get-started/start-using-aql/_index.md | 0 .../3.11/get-started/start-using-aql/crud.md | 0 .../get-started/start-using-aql/dataset.md | 0 .../get-started/start-using-aql/filter.md | 0 .../3.11/get-started/start-using-aql/geo.md | 0 .../get-started/start-using-aql/graphs.md | 4 +- .../3.11/get-started/start-using-aql/joins.md | 0 .../get-started/start-using-aql/sort-limit.md | 0 .../{ => arangodb}/3.11/graphs/_index.md | 14 +- .../3.11/graphs/enterprisegraphs/_index.md | 0 .../enterprisegraphs/getting-started.md | 2 +- .../graphs/enterprisegraphs/management.md | 0 .../3.11}/graphs/example-graphs.md | 16 +- .../3.11/graphs/general-graphs/_index.md | 2 +- .../3.11}/graphs/general-graphs/functions.md | 2 +- .../3.11/graphs/general-graphs/management.md | 0 .../3.11/graphs/satellitegraphs/_index.md | 2 +- .../3.11/graphs/satellitegraphs/details.md | 0 .../3.11/graphs/satellitegraphs/management.md | 0 .../3.11/graphs/smartgraphs/_index.md | 8 +- .../graphs/smartgraphs/getting-started.md | 2 +- .../3.11/graphs/smartgraphs/management.md | 0 .../testing-graphs-on-single-server.md | 0 .../3.11/graphs/working-with-edges.md | 0 .../3.11/index-and-search/_index.md | 0 .../3.11/index-and-search/analyzers.md | 0 .../index-and-search/arangosearch/_index.md | 2 +- .../arangosearch-views-reference.md | 2 +- .../case-sensitivity-and-diacritics.md | 0 .../arangosearch/exact-value-matching.md | 0 .../arangosearch/example-datasets.md | 0 .../arangosearch/faceted-search.md | 0 .../arangosearch/full-text-token-search.md | 0 .../arangosearch/fuzzy-search.md | 0 .../arangosearch/geospatial-search.md | 6 +- .../arangosearch/nested-search.md | 0 .../arangosearch/performance.md | 0 .../phrase-and-proximity-search.md | 0 .../arangosearch/prefix-matching.md | 0 .../arangosearch/range-queries.md | 0 .../index-and-search/arangosearch/ranking.md | 0 .../search-alias-views-reference.md | 2 +- .../arangosearch/search-highlighting.md | 0 .../arangosearch/wildcard-search.md | 0 .../3.11/index-and-search/indexing/_index.md | 0 .../3.11/index-and-search/indexing/basics.md | 0 .../indexing/index-utilization.md | 0 .../indexing/which-index-to-use-when.md | 0 .../indexing/working-with-indexes/_index.md | 0 .../working-with-indexes/fulltext-indexes.md | 0 .../geo-spatial-indexes.md | 0 .../working-with-indexes/inverted-indexes.md | 0 .../multi-dimensional-indexes.md | 0 .../persistent-indexes.md | 0 .../working-with-indexes/ttl-indexes.md | 0 .../vertex-centric-indexes.md | 0 .../{ => arangodb}/3.11/operations/_index.md | 0 .../3.11/operations/administration/_index.md | 0 .../administration/arangodb-starter/_index.md | 0 .../arangodb-starter/recovery-procedure.md | 0 .../arangodb-starter/removal-procedure.md | 0 .../administration/configuration.md | 0 .../administration/import-and-export.md | 0 .../administration/license-management.md | 0 .../operations/administration/log-levels.md | 0 .../administration/reduce-memory-footprint.md | 2 +- .../operations/administration/telemetrics.md | 0 .../administration/user-management/_index.md | 0 .../user-management/in-arangosh.md | 0 .../3.11/operations/backup-and-restore.md | 0 .../3.11/operations/installation/_index.md | 2 +- .../installation/compiling/_index.md | 0 .../compiling/compile-on-debian.md | 0 .../compiling/compile-on-windows.md | 2 +- .../compiling/recompiling-jemalloc.md | 0 .../compiling/running-custom-build.md | 0 .../3.11/operations/installation/docker.md | 0 .../operations/installation/linux/_index.md | 0 .../linux/linux-os-tuning-script-examples.md | 0 .../linux/operating-system-configuration.md | 0 .../3.11/operations/installation/macos.md | 0 .../operations/installation/uninstallation.md | 0 .../3.11/operations/installation/windows.md | 0 .../3.11/operations/security/_index.md | 0 .../3.11/operations/security/audit-logging.md | 2 +- .../security/change-root-password.md | 0 .../operations/security/encryption-at-rest.md | 4 +- .../security/securing-starter-deployments.md | 0 .../operations/security/security-options.md | 0 .../3.11/operations/troubleshooting/_index.md | 0 .../operations/troubleshooting/arangod.md | 0 .../troubleshooting/cluster/_index.md | 0 .../troubleshooting/cluster/agency-dump.md | 0 .../troubleshooting/emergency-console.md | 0 .../troubleshooting/query-debug-packages.md | 0 .../3.11/operations/upgrading/_index.md | 0 .../community-to-enterprise-upgrade.md | 0 .../3.11/operations/upgrading/downgrading.md | 0 .../upgrading/manual-deployments/_index.md | 0 .../manual-deployments/active-failover.md | 0 .../upgrading/manual-deployments/cluster.md | 0 .../os-specific-information/_index.md | 0 .../os-specific-information/linux.md | 0 .../os-specific-information/macos.md | 2 +- .../os-specific-information/windows.md | 6 +- .../upgrading/starter-deployments.md | 0 .../3.11/release-notes/_index.md | 0 .../deprecated-and-removed-features.md | 0 .../3.11/release-notes/version-3.0/_index.md | 0 .../incompatible-changes-in-3-0.md | 0 .../version-3.0/whats-new-in-3-0.md | 0 .../3.11/release-notes/version-3.1/_index.md | 0 .../incompatible-changes-in-3-1.md | 0 .../version-3.1/whats-new-in-3-1.md | 0 .../3.11/release-notes/version-3.10/_index.md | 0 .../version-3.10/api-changes-in-3-10.md | 0 .../incompatible-changes-in-3-10.md | 0 .../version-3.10/known-issues-in-3-10.md | 0 .../version-3.10/whats-new-in-3-10.md | 0 .../3.11/release-notes/version-3.11/_index.md | 0 .../version-3.11/api-changes-in-3-11.md | 0 .../incompatible-changes-in-3-11.md | 0 .../version-3.11/known-issues-in-3-11.md | 0 .../version-3.11/whats-new-in-3-11.md | 2 +- .../3.11/release-notes/version-3.2/_index.md | 0 .../incompatible-changes-in-3-2.md | 0 .../version-3.2/known-issues-in-3-2.md | 0 .../version-3.2/whats-new-in-3-2.md | 0 .../3.11/release-notes/version-3.3/_index.md | 0 .../incompatible-changes-in-3-3.md | 0 .../version-3.3/known-issues-in-3-3.md | 0 .../version-3.3/whats-new-in-3-3.md | 0 .../3.11/release-notes/version-3.4/_index.md | 0 .../incompatible-changes-in-3-4.md | 0 .../version-3.4/known-issues-in-3-4.md | 0 .../version-3.4/whats-new-in-3-4.md | 0 .../3.11/release-notes/version-3.5/_index.md | 0 .../incompatible-changes-in-3-5.md | 0 .../version-3.5/known-issues-in-3-5.md | 0 .../version-3.5/whats-new-in-3-5.md | 0 .../3.11/release-notes/version-3.6/_index.md | 0 .../incompatible-changes-in-3-6.md | 0 .../version-3.6/known-issues-in-3-6.md | 0 .../version-3.6/whats-new-in-3-6.md | 0 .../3.11/release-notes/version-3.7/_index.md | 0 .../version-3.7/api-changes-in-3-7.md | 0 .../incompatible-changes-in-3-7.md | 0 .../version-3.7/known-issues-in-3-7.md | 0 .../version-3.7/whats-new-in-3-7.md | 0 .../3.11/release-notes/version-3.8/_index.md | 0 .../version-3.8/api-changes-in-3-8.md | 0 .../incompatible-changes-in-3-8.md | 0 .../version-3.8/known-issues-in-3-8.md | 0 .../version-3.8/whats-new-in-3-8.md | 0 .../3.11/release-notes/version-3.9/_index.md | 0 .../version-3.9/api-changes-in-3-9.md | 0 .../incompatible-changes-in-3-9.md | 0 .../version-3.9/known-issues-in-3-9.md | 0 .../version-3.9/whats-new-in-3-9.md | 0 site/content/{ => arangodb}/3.12/_index.md | 17 +- .../3.12/about}/_index.md | 12 +- .../3.12/about}/features/_index.md | 8 +- .../about}/features/highlights-by-version.md | 0 .../3.12/about/features/list.md} | 0 .../3.12/about}/use-cases.md | 24 +- .../content/{ => arangodb}/3.12/aql/_index.md | 2 +- .../{ => arangodb}/3.12/aql/common-errors.md | 0 .../{ => arangodb}/3.12/aql/data-queries.md | 0 .../aql/examples-and-query-patterns/_index.md | 0 .../actors-and-movies-dataset-queries.md | 0 .../examples-and-query-patterns/counting.md | 0 .../create-test-data.md | 0 .../diffing-two-documents.md | 0 .../dynamic-attribute-names.md | 0 .../examples-and-query-patterns/grouping.md | 0 .../aql/examples-and-query-patterns/joins.md | 0 .../projections-and-filters.md | 0 .../queries-without-collections.md | 0 .../remove-nodes.md | 4 +- .../examples-and-query-patterns/traversals.md | 2 +- .../upsert-repsert-guide.md | 0 .../aql/execution-and-performance/_index.md | 0 .../caching-query-plans.md | 0 .../caching-query-results.md | 0 .../explaining-queries.md | 0 .../parsing-queries.md | 0 .../query-logging.md | 0 .../query-optimization.md | 0 .../query-profiling.md | 0 .../query-statistics.md | 0 .../3.12/aql/functions/_index.md | 0 .../3.12/aql/functions/arangosearch.md | 0 .../3.12/aql/functions/array.md | 0 .../{ => arangodb}/3.12/aql/functions/bit.md | 0 .../{ => arangodb}/3.12/aql/functions/date.md | 0 .../3.12/aql/functions/document-object.md | 0 .../3.12/aql/functions/fulltext.md | 0 .../3.12}/aql/functions/geo.md | 6 +- .../3.12/aql/functions/miscellaneous.md | 0 .../3.12/aql/functions/numeric.md | 0 .../3.12/aql/functions/string.md | 0 .../3.12/aql/functions/type-check-and-cast.md | 0 .../3.12}/aql/functions/vector.md | 2 +- .../3.12/aql/fundamentals/_index.md | 0 .../accessing-data-from-collections.md | 0 .../3.12/aql/fundamentals/bind-parameters.md | 0 .../3.12/aql/fundamentals/data-types.md | 0 .../3.12/aql/fundamentals/limitations.md | 0 .../3.12/aql/fundamentals/query-errors.md | 0 .../3.12/aql/fundamentals/query-results.md | 0 .../3.12/aql/fundamentals/subqueries.md | 0 .../3.12/aql/fundamentals/syntax.md | 0 .../aql/fundamentals/type-and-value-order.md | 0 .../{ => arangodb}/3.12/aql/graphs/_index.md | 0 .../3.12/aql/graphs/all-shortest-paths.md | 4 +- .../{ => arangodb}/3.12/aql/graphs/k-paths.md | 4 +- .../3.12}/aql/graphs/k-shortest-paths.md | 4 +- .../3.12}/aql/graphs/shortest-path.md | 4 +- .../3.12}/aql/graphs/traversals-explained.md | 16 +- .../3.12/aql/graphs/traversals.md | 4 +- .../3.12/aql/high-level-operations/_index.md | 0 .../3.12/aql/high-level-operations/collect.md | 0 .../3.12/aql/high-level-operations/filter.md | 0 .../3.12/aql/high-level-operations/for.md | 0 .../3.12/aql/high-level-operations/insert.md | 0 .../3.12/aql/high-level-operations/let.md | 0 .../3.12/aql/high-level-operations/limit.md | 0 .../3.12/aql/high-level-operations/remove.md | 0 .../3.12/aql/high-level-operations/replace.md | 0 .../3.12/aql/high-level-operations/return.md | 0 .../3.12/aql/high-level-operations/search.md | 0 .../3.12/aql/high-level-operations/sort.md | 0 .../3.12/aql/high-level-operations/update.md | 0 .../3.12/aql/high-level-operations/upsert.md | 0 .../3.12/aql/high-level-operations/window.md | 0 .../3.12/aql/high-level-operations/with.md | 0 .../3.12/aql/how-to-invoke-aql/_index.md | 0 .../aql/how-to-invoke-aql/with-arangosh.md | 0 .../with-the-web-interface.md | 0 .../{ => arangodb}/3.12/aql/operators.md | 0 .../3.12/aql/user-defined-functions.md | 0 .../{ => arangodb}/3.12/components/_index.md | 0 .../3.12/components/arangodb-server/_index.md | 0 .../arangodb-server/environment-variables.md | 0 .../components/arangodb-server/options.md | 0 .../arangodb-server/storage-engine.md | 0 .../3.12}/components/tools/_index.md | 2 +- .../3.12/components/tools/arango-datasets.md | 0 .../components/tools/arangobackup/_index.md | 4 +- .../components/tools/arangobackup/examples.md | 0 .../components/tools/arangobackup/options.md | 0 .../components/tools/arangobench/_index.md | 0 .../components/tools/arangobench/options.md | 0 .../components/tools/arangodb-shell/_index.md | 0 .../tools/arangodb-shell/details.md | 0 .../tools/arangodb-shell/examples.md | 0 .../tools/arangodb-shell/options.md | 0 .../tools/arangodb-starter/_index.md | 0 .../tools/arangodb-starter/architecture.md | 0 .../tools/arangodb-starter/options.md | 0 .../tools/arangodb-starter/security.md | 0 .../components/tools/arangodump/_index.md | 0 .../components/tools/arangodump/examples.md | 0 .../tools/arangodump/limitations.md | 0 .../components/tools/arangodump/maskings.md | 0 .../components/tools/arangodump/options.md | 0 .../components/tools/arangoexport/_index.md | 0 .../components/tools/arangoexport/examples.md | 0 .../components/tools/arangoexport/options.md | 0 .../components/tools/arangoimport/_index.md | 0 .../components/tools/arangoimport/details.md | 0 .../tools/arangoimport/examples-csv.md | 0 .../tools/arangoimport/examples-json.md | 0 .../components/tools/arangoimport/options.md | 0 .../components/tools/arangoinspect/_index.md | 0 .../tools/arangoinspect/examples.md | 0 .../components/tools/arangoinspect/options.md | 0 .../components/tools/arangorestore/_index.md | 0 .../tools/arangorestore/examples.md | 0 .../components/tools/arangorestore/options.md | 0 .../components/tools/arangovpack/_index.md | 0 .../components/tools/arangovpack/options.md | 0 .../3.12/components/tools/foxx-cli/_index.md | 0 .../3.12/components/tools/foxx-cli/details.md | 0 .../3.12/components/web-interface/_index.md | 2 +- .../3.12/components/web-interface/cluster.md | 2 +- .../components/web-interface/collections.md | 0 .../components/web-interface/dashboard.md | 2 +- .../3.12/components/web-interface/document.md | 0 .../3.12}/components/web-interface/graphs.md | 2 +- .../3.12/components/web-interface/logs.md | 0 .../3.12/components/web-interface/queries.md | 2 +- .../3.12/components/web-interface/services.md | 0 .../3.12/components/web-interface/users.md | 0 .../{ => arangodb}/3.12/concepts/_index.md | 0 .../3.12/concepts/data-models.md | 0 .../3.12/concepts/data-retrieval.md | 0 .../3.12/concepts/data-structure/_index.md | 0 .../concepts/data-structure/collections.md | 0 .../3.12/concepts/data-structure/databases.md | 0 .../data-structure/documents/_index.md | 0 .../documents/computed-values.md | 0 .../documents/schema-validation.md | 0 .../3.12/concepts/data-structure/views.md | 0 .../{ => arangodb}/3.12/deploy/_index.md | 8 +- .../3.12/deploy/architecture/_index.md | 0 .../3.12/deploy/architecture/data-sharding.md | 4 +- .../3.12/deploy/architecture/replication.md | 0 .../3.12/deploy/architecture/scalability.md | 0 .../3.12/deploy/cluster/_index.md | 6 +- .../3.12/deploy/cluster/administration.md | 0 .../3.12/deploy/cluster/deployment/_index.md | 2 +- .../deploy/cluster/deployment/manual-start.md | 0 .../deployment/using-the-arangodb-starter.md | 0 .../3.12/deploy/cluster/limitations.md | 0 .../3.12/deploy/in-the-cloud.md | 0 .../{ => arangodb}/3.12/deploy/kubernetes.md | 0 .../{ => arangodb}/3.12/deploy/oneshard.md | 2 +- .../3.12/deploy/production-checklist.md | 0 .../3.12/deploy/single-instance-vs-cluster.md | 0 .../3.12/deploy/single-instance/_index.md | 0 .../deploy/single-instance/manual-start.md | 0 .../using-the-arangodb-starter.md | 0 .../{ => arangodb}/3.12/develop/_index.md | 0 .../3.12/develop/drivers/_index.md | 0 .../{ => arangodb}/3.12/develop/drivers/go.md | 0 .../3.12/develop/drivers/java/_index.md | 0 .../java/reference-version-6/_index.md | 0 .../java/reference-version-6/driver-setup.md | 0 .../java/reference-version-6/serialization.md | 0 .../java/reference-version-7/_index.md | 0 .../changes-in-version-7.md | 0 .../java/reference-version-7/driver-setup.md | 0 .../java/reference-version-7/serialization.md | 0 .../3.12/develop/drivers/javascript.md | 0 .../3.12/develop/drivers/python.md | 0 .../3.12/develop/error-codes.md | 0 .../{ => arangodb}/3.12/develop/exit-codes.md | 0 .../3.12/develop/foxx-microservices/_index.md | 0 .../develop/foxx-microservices/deployment.md | 0 .../foxx-microservices/getting-started.md | 0 .../foxx-microservices/guides/_index.md | 0 .../guides/access-from-the-browser.md | 0 .../guides/authentication-and-sessions.md | 0 .../guides/development-mode.md | 0 .../guides/foxx-in-a-cluster.md | 0 .../guides/linking-services-together.md | 0 .../guides/making-requests.md | 0 .../guides/scripts-and-scheduling.md | 0 .../guides/testing-foxx-services.md | 0 .../guides/using-node-modules.md | 0 .../guides/using-webpack-with-foxx.md | 0 .../guides/working-with-collections.md | 0 .../guides/working-with-files.md | 0 .../guides/working-with-routers.md | 0 .../guides/writing-queries.md | 0 .../foxx-microservices/reference/_index.md | 0 .../reference/configuration.md | 0 .../reference/related-modules/_index.md | 0 .../related-modules/authentication.md | 0 .../reference/related-modules/graphql.md | 0 .../reference/related-modules/oauth-1-0a.md | 0 .../reference/related-modules/oauth-2-0.md | 0 .../reference/related-modules/queues.md | 0 .../reference/routers/_index.md | 0 .../reference/routers/endpoints.md | 0 .../reference/routers/middleware.md | 0 .../reference/routers/request.md | 0 .../reference/routers/response.md | 0 .../reference/service-context.md | 0 .../reference/service-manifest.md | 0 .../reference/sessions-middleware/_index.md | 0 .../session-storages/_index.md | 0 .../session-storages/collection-storage.md | 0 .../session-storages/jwt-storage.md | 0 .../session-transports/_index.md | 0 .../session-transports/cookie-transport.md | 0 .../session-transports/header-transport.md | 0 .../3.12/develop/http-api/_index.md | 2 +- .../3.12/develop/http-api/administration.md | 0 .../3.12/develop/http-api/analyzers.md | 0 .../3.12/develop/http-api/authentication.md | 2 +- .../3.12/develop/http-api/batch-requests.md | 0 .../3.12/develop/http-api/cluster.md | 0 .../3.12/develop/http-api/collections.md | 0 .../3.12/develop/http-api/databases.md | 0 .../3.12/develop/http-api/documents.md | 0 .../3.12/develop/http-api/foxx.md | 0 .../http-api/general-request-handling.md | 0 .../3.12/develop/http-api/graphs/_index.md | 0 .../3.12/develop/http-api/graphs/edges.md | 0 .../develop/http-api/graphs/named-graphs.md | 4 +- .../3.12/develop/http-api/hot-backups.md | 4 +- .../3.12/develop/http-api/import.md | 0 .../3.12/develop/http-api/indexes/_index.md | 0 .../3.12/develop/http-api/indexes/fulltext.md | 0 .../develop/http-api/indexes/geo-spatial.md | 0 .../3.12/develop/http-api/indexes/inverted.md | 0 .../http-api/indexes/multi-dimensional.md | 0 .../develop/http-api/indexes/persistent.md | 0 .../3.12/develop/http-api/indexes/ttl.md | 0 .../3.12/develop/http-api/indexes/vector.md | 0 .../3.12/develop/http-api/jobs.md | 0 .../develop/http-api/monitoring/_index.md | 0 .../3.12/develop/http-api/monitoring/logs.md | 0 .../develop/http-api/monitoring/metrics.md | 0 .../develop/http-api/monitoring/statistics.md | 0 .../3.12/develop/http-api/queries/_index.md | 0 .../develop/http-api/queries/aql-queries.md | 0 .../http-api/queries/aql-query-plan-cache.md | 0 .../queries/aql-query-results-cache.md | 0 .../queries/user-defined-aql-functions.md | 0 .../develop/http-api/replication/_index.md | 0 .../replication/other-replication-commands.md | 0 .../replication/replication-applier.md | 0 .../http-api/replication/replication-dump.md | 0 .../replication/replication-logger.md | 0 .../http-api/replication/write-ahead-log.md | 0 .../3.12/develop/http-api/security.md | 0 .../3.12/develop/http-api/tasks.md | 0 .../develop/http-api/transactions/_index.md | 0 .../transactions/javascript-transactions.md | 0 .../transactions/stream-transactions.md | 0 .../3.12/develop/http-api/users.md | 0 .../3.12/develop/http-api/views/_index.md | 0 .../http-api/views/arangosearch-views.md | 0 .../http-api/views/search-alias-views.md | 0 .../3.12/develop/integrations/_index.md | 0 .../arangodb-datasource-for-apache-spark.md | 2 +- .../_index.md | 0 .../configuration.md | 0 .../integrations/spring-boot-arangodb.md | 0 .../spring-data-arangodb/_index.md | 0 .../spring-data-arangodb/migration.md | 0 .../reference-version-3/_index.md | 0 .../reference-version-3/mapping/_index.md | 0 .../reference-version-3/mapping/auditing.md | 0 .../reference-version-3/mapping/converter.md | 0 .../reference-version-3/mapping/document.md | 0 .../reference-version-3/mapping/edge.md | 0 .../reference-version-3/mapping/events.md | 0 .../reference-version-3/mapping/indexes.md | 0 .../reference-version-3/mapping/reference.md | 0 .../reference-version-3/mapping/relations.md | 0 .../repositories/_index.md | 0 .../repositories/queries/_index.md | 0 .../repositories/queries/derived-queries.md | 0 .../repositories/queries/named-queries.md | 0 .../repositories/queries/query-methods.md | 0 .../reference-version-3/template.md | 0 .../reference-version-4/_index.md | 0 .../reference-version-4/mapping/_index.md | 0 .../reference-version-4/mapping/auditing.md | 0 .../mapping/computed-values.md | 0 .../reference-version-4/mapping/converter.md | 0 .../reference-version-4/mapping/document.md | 0 .../reference-version-4/mapping/edge.md | 0 .../reference-version-4/mapping/events.md | 0 .../reference-version-4/mapping/indexes.md | 0 .../reference-version-4/mapping/reference.md | 0 .../reference-version-4/mapping/relations.md | 0 .../repositories/_index.md | 0 .../repositories/queries/_index.md | 0 .../repositories/queries/derived-queries.md | 0 .../repositories/queries/named-queries.md | 0 .../repositories/queries/query-methods.md | 0 .../reference-version-4/template.md | 0 .../javascript-api/@arangodb/_index.md | 0 .../@arangodb/collection-object.md | 0 .../javascript-api/@arangodb/cursor-object.md | 0 .../javascript-api/@arangodb/db-object.md | 0 .../javascript-api/@arangodb/view-object.md | 0 .../3.12/develop/javascript-api/_index.md | 0 .../3.12/develop/javascript-api/actions.md | 0 .../3.12/develop/javascript-api/analyzers.md | 0 .../develop/javascript-api/aql-queries.md | 0 .../3.12/develop/javascript-api/console.md | 0 .../3.12/develop/javascript-api/crypto.md | 0 .../3.12/develop/javascript-api/fs.md | 0 .../3.12/develop/javascript-api/request.md | 0 .../3.12/develop/javascript-api/tasks.md | 0 .../3.12/develop/operational-factors.md | 0 .../3.12/develop/satellitecollections.md | 0 .../{ => arangodb}/3.12/develop/smartjoins.md | 0 .../3.12/develop/transactions/_index.md | 0 .../3.12/develop/transactions/durability.md | 0 .../transactions/javascript-transactions.md | 0 .../3.12/develop/transactions/limitations.md | 0 .../transactions/locking-and-isolation.md | 0 .../transactions/stream-transactions.md | 0 .../{ => arangodb}/3.12/get-started/_index.md | 0 .../how-to-interact-with-arangodb.md | 0 .../get-started/on-premises-installation.md | 6 +- .../get-started/set-up-a-cloud-instance.md | 54 +- .../get-started/start-using-aql/_index.md | 0 .../3.12/get-started/start-using-aql/crud.md | 0 .../get-started/start-using-aql/dataset.md | 0 .../get-started/start-using-aql/filter.md | 0 .../3.12/get-started/start-using-aql/geo.md | 0 .../get-started/start-using-aql/graphs.md | 4 +- .../3.12/get-started/start-using-aql/joins.md | 0 .../get-started/start-using-aql/sort-limit.md | 0 .../{ => arangodb}/3.12/graphs/_index.md | 14 +- .../3.12/graphs/enterprisegraphs/_index.md | 0 .../enterprisegraphs/getting-started.md | 2 +- .../graphs/enterprisegraphs/management.md | 0 .../3.12}/graphs/example-graphs.md | 16 +- .../3.12/graphs/general-graphs/_index.md | 2 +- .../3.12}/graphs/general-graphs/functions.md | 2 +- .../3.12/graphs/general-graphs/management.md | 0 .../3.12/graphs/satellitegraphs/_index.md | 2 +- .../3.12/graphs/satellitegraphs/details.md | 0 .../3.12/graphs/satellitegraphs/management.md | 0 .../3.12}/graphs/smartgraphs/_index.md | 8 +- .../graphs/smartgraphs/getting-started.md | 2 +- .../3.12/graphs/smartgraphs/management.md | 0 .../testing-graphs-on-single-server.md | 0 .../3.12/graphs/working-with-edges.md | 0 .../3.12/index-and-search/_index.md | 0 .../3.12/index-and-search/analyzers.md | 0 .../index-and-search/arangosearch/_index.md | 2 +- .../arangosearch-views-reference.md | 2 +- .../case-sensitivity-and-diacritics.md | 0 .../arangosearch/exact-value-matching.md | 0 .../arangosearch/example-datasets.md | 0 .../arangosearch/faceted-search.md | 0 .../arangosearch/full-text-token-search.md | 0 .../arangosearch/fuzzy-search.md | 0 .../arangosearch/geospatial-search.md | 6 +- .../arangosearch/nested-search.md | 0 .../arangosearch/performance.md | 0 .../phrase-and-proximity-search.md | 0 .../arangosearch/prefix-matching.md | 0 .../arangosearch/range-queries.md | 0 .../index-and-search/arangosearch/ranking.md | 0 .../search-alias-views-reference.md | 2 +- .../arangosearch/search-highlighting.md | 0 .../arangosearch/wildcard-search.md | 0 .../3.12/index-and-search/indexing/_index.md | 0 .../3.12/index-and-search/indexing/basics.md | 0 .../indexing/index-utilization.md | 0 .../indexing/which-index-to-use-when.md | 0 .../indexing/working-with-indexes/_index.md | 0 .../working-with-indexes/fulltext-indexes.md | 0 .../geo-spatial-indexes.md | 0 .../working-with-indexes/inverted-indexes.md | 0 .../multi-dimensional-indexes.md | 0 .../persistent-indexes.md | 0 .../working-with-indexes/ttl-indexes.md | 0 .../working-with-indexes/vector-indexes.md | 2 +- .../vertex-centric-indexes.md | 0 .../{ => arangodb}/3.12/operations/_index.md | 0 .../3.12/operations/administration/_index.md | 0 .../administration/arangodb-starter/_index.md | 0 .../arangodb-starter/recovery-procedure.md | 0 .../arangodb-starter/removal-procedure.md | 0 .../administration/configuration.md | 0 .../administration/import-and-export.md | 0 .../administration/license-management.md | 2 +- .../operations/administration/log-levels.md | 0 .../administration/reduce-memory-footprint.md | 2 +- .../operations/administration/telemetrics.md | 0 .../administration/user-management/_index.md | 0 .../user-management/in-arangosh.md | 0 .../3.12/operations/backup-and-restore.md | 0 .../3.12/operations/installation/_index.md | 2 +- .../3.12/operations/installation/docker.md | 0 .../operations/installation/linux/_index.md | 0 .../linux/linux-os-tuning-script-examples.md | 0 .../linux/operating-system-configuration.md | 0 .../operations/installation/uninstallation.md | 0 .../3.12/operations/security/_index.md | 0 .../3.12/operations/security/audit-logging.md | 2 +- .../security/change-root-password.md | 0 .../operations/security/encryption-at-rest.md | 4 +- .../security/securing-starter-deployments.md | 0 .../operations/security/security-options.md | 0 .../3.12/operations/troubleshooting/_index.md | 0 .../operations/troubleshooting/arangod.md | 0 .../troubleshooting/cluster/_index.md | 0 .../troubleshooting/cluster/agency-dump.md | 0 .../troubleshooting/emergency-console.md | 0 .../troubleshooting/query-debug-packages.md | 0 .../3.12/operations/upgrading/_index.md | 0 .../community-to-enterprise-upgrade.md | 2 +- .../3.12/operations/upgrading/downgrading.md | 0 .../upgrading/manual-deployments/_index.md | 0 .../upgrading/manual-deployments/cluster.md | 0 .../manual-deployments/single-server.md | 0 .../upgrading/starter-deployments.md | 0 .../3.12/release-notes/_index.md | 0 .../deprecated-and-removed-features.md | 0 .../3.12/release-notes/version-3.0/_index.md | 0 .../incompatible-changes-in-3-0.md | 0 .../version-3.0/whats-new-in-3-0.md | 0 .../3.12/release-notes/version-3.1/_index.md | 0 .../incompatible-changes-in-3-1.md | 0 .../version-3.1/whats-new-in-3-1.md | 0 .../3.12/release-notes/version-3.10/_index.md | 0 .../version-3.10/api-changes-in-3-10.md | 0 .../incompatible-changes-in-3-10.md | 0 .../version-3.10/known-issues-in-3-10.md | 0 .../version-3.10/whats-new-in-3-10.md | 0 .../3.12/release-notes/version-3.11/_index.md | 0 .../version-3.11/api-changes-in-3-11.md | 0 .../incompatible-changes-in-3-11.md | 0 .../version-3.11/known-issues-in-3-11.md | 0 .../version-3.11/whats-new-in-3-11.md | 2 +- .../3.12/release-notes/version-3.12/_index.md | 0 .../version-3.12/api-changes-in-3-12.md | 0 .../incompatible-changes-in-3-12.md | 0 .../version-3.12/known-issues-in-3-12.md | 0 .../version-3.12/whats-new-in-3-12.md | 0 .../3.12/release-notes/version-3.2/_index.md | 0 .../incompatible-changes-in-3-2.md | 0 .../version-3.2/known-issues-in-3-2.md | 0 .../version-3.2/whats-new-in-3-2.md | 0 .../3.12/release-notes/version-3.3/_index.md | 0 .../incompatible-changes-in-3-3.md | 0 .../version-3.3/known-issues-in-3-3.md | 0 .../version-3.3/whats-new-in-3-3.md | 0 .../3.12/release-notes/version-3.4/_index.md | 0 .../incompatible-changes-in-3-4.md | 0 .../version-3.4/known-issues-in-3-4.md | 0 .../version-3.4/whats-new-in-3-4.md | 0 .../3.12/release-notes/version-3.5/_index.md | 0 .../incompatible-changes-in-3-5.md | 0 .../version-3.5/known-issues-in-3-5.md | 0 .../version-3.5/whats-new-in-3-5.md | 0 .../3.12/release-notes/version-3.6/_index.md | 0 .../incompatible-changes-in-3-6.md | 0 .../version-3.6/known-issues-in-3-6.md | 0 .../version-3.6/whats-new-in-3-6.md | 0 .../3.12/release-notes/version-3.7/_index.md | 0 .../version-3.7/api-changes-in-3-7.md | 0 .../incompatible-changes-in-3-7.md | 0 .../version-3.7/known-issues-in-3-7.md | 0 .../version-3.7/whats-new-in-3-7.md | 0 .../3.12/release-notes/version-3.8/_index.md | 0 .../version-3.8/api-changes-in-3-8.md | 0 .../incompatible-changes-in-3-8.md | 0 .../version-3.8/known-issues-in-3-8.md | 0 .../version-3.8/whats-new-in-3-8.md | 0 .../3.12/release-notes/version-3.9/_index.md | 0 .../version-3.9/api-changes-in-3-9.md | 0 .../incompatible-changes-in-3-9.md | 0 .../version-3.9/known-issues-in-3-9.md | 0 .../version-3.9/whats-new-in-3-9.md | 0 site/content/{ => arangodb}/3.13/_index.md | 15 +- .../3.13/about}/_index.md | 12 +- .../3.13/about}/features/_index.md | 8 +- .../about}/features/highlights-by-version.md | 0 .../3.13/about/features/list.md} | 0 .../3.13/about}/use-cases.md | 24 +- .../content/{ => arangodb}/3.13/aql/_index.md | 2 +- .../{ => arangodb}/3.13/aql/common-errors.md | 0 .../{ => arangodb}/3.13/aql/data-queries.md | 0 .../aql/examples-and-query-patterns/_index.md | 0 .../actors-and-movies-dataset-queries.md | 0 .../examples-and-query-patterns/counting.md | 0 .../create-test-data.md | 0 .../diffing-two-documents.md | 0 .../dynamic-attribute-names.md | 0 .../examples-and-query-patterns/grouping.md | 0 .../aql/examples-and-query-patterns/joins.md | 0 .../projections-and-filters.md | 0 .../queries-without-collections.md | 0 .../remove-nodes.md | 4 +- .../examples-and-query-patterns/traversals.md | 2 +- .../upsert-repsert-guide.md | 0 .../aql/execution-and-performance/_index.md | 0 .../caching-query-plans.md | 0 .../caching-query-results.md | 0 .../explaining-queries.md | 0 .../parsing-queries.md | 0 .../query-logging.md | 0 .../query-optimization.md | 0 .../query-profiling.md | 0 .../query-statistics.md | 0 .../3.13/aql/functions/_index.md | 0 .../3.13/aql/functions/arangosearch.md | 0 .../3.13/aql/functions/array.md | 0 .../{ => arangodb}/3.13/aql/functions/bit.md | 0 .../{ => arangodb}/3.13/aql/functions/date.md | 0 .../3.13/aql/functions/document-object.md | 0 .../3.13/aql/functions/fulltext.md | 0 .../3.13}/aql/functions/geo.md | 6 +- .../3.13/aql/functions/miscellaneous.md | 0 .../3.13/aql/functions/numeric.md | 0 .../3.13/aql/functions/string.md | 0 .../3.13/aql/functions/type-check-and-cast.md | 0 .../3.13}/aql/functions/vector.md | 2 +- .../3.13/aql/fundamentals/_index.md | 0 .../accessing-data-from-collections.md | 0 .../3.13/aql/fundamentals/bind-parameters.md | 0 .../3.13/aql/fundamentals/data-types.md | 0 .../3.13/aql/fundamentals/limitations.md | 0 .../3.13/aql/fundamentals/query-errors.md | 0 .../3.13/aql/fundamentals/query-results.md | 0 .../3.13/aql/fundamentals/subqueries.md | 0 .../3.13/aql/fundamentals/syntax.md | 0 .../aql/fundamentals/type-and-value-order.md | 0 .../{ => arangodb}/3.13/aql/graphs/_index.md | 0 .../3.13/aql/graphs/all-shortest-paths.md | 4 +- .../{ => arangodb}/3.13/aql/graphs/k-paths.md | 4 +- .../3.13}/aql/graphs/k-shortest-paths.md | 4 +- .../3.13}/aql/graphs/shortest-path.md | 4 +- .../3.13}/aql/graphs/traversals-explained.md | 16 +- .../3.13/aql/graphs/traversals.md | 4 +- .../3.13/aql/high-level-operations/_index.md | 0 .../3.13/aql/high-level-operations/collect.md | 0 .../3.13/aql/high-level-operations/filter.md | 0 .../3.13/aql/high-level-operations/for.md | 0 .../3.13/aql/high-level-operations/insert.md | 0 .../3.13/aql/high-level-operations/let.md | 0 .../3.13/aql/high-level-operations/limit.md | 0 .../3.13/aql/high-level-operations/remove.md | 0 .../3.13/aql/high-level-operations/replace.md | 0 .../3.13/aql/high-level-operations/return.md | 0 .../3.13/aql/high-level-operations/search.md | 0 .../3.13/aql/high-level-operations/sort.md | 0 .../3.13/aql/high-level-operations/update.md | 0 .../3.13/aql/high-level-operations/upsert.md | 0 .../3.13/aql/high-level-operations/window.md | 0 .../3.13/aql/high-level-operations/with.md | 0 .../3.13/aql/how-to-invoke-aql/_index.md | 0 .../aql/how-to-invoke-aql/with-arangosh.md | 0 .../with-the-web-interface.md | 0 .../{ => arangodb}/3.13/aql/operators.md | 0 .../3.13/aql/user-defined-functions.md | 0 .../{ => arangodb}/3.13/components/_index.md | 0 .../3.13/components/arangodb-server/_index.md | 0 .../arangodb-server/environment-variables.md | 0 .../components/arangodb-server/options.md | 0 .../arangodb-server/storage-engine.md | 0 .../3.13/components/platform.md | 4 +- .../3.13/components/tools/_index.md | 2 +- .../3.13/components/tools/arango-datasets.md | 0 .../components/tools/arangobackup/_index.md | 4 +- .../components/tools/arangobackup/examples.md | 0 .../components/tools/arangobackup/options.md | 0 .../components/tools/arangobench/_index.md | 0 .../components/tools/arangobench/options.md | 0 .../components/tools/arangodb-shell/_index.md | 0 .../tools/arangodb-shell/details.md | 0 .../tools/arangodb-shell/examples.md | 0 .../tools/arangodb-shell/options.md | 0 .../tools/arangodb-starter/_index.md | 0 .../tools/arangodb-starter/architecture.md | 0 .../tools/arangodb-starter/options.md | 0 .../tools/arangodb-starter/security.md | 0 .../components/tools/arangodump/_index.md | 0 .../components/tools/arangodump/examples.md | 0 .../tools/arangodump/limitations.md | 0 .../components/tools/arangodump/maskings.md | 0 .../components/tools/arangodump/options.md | 0 .../components/tools/arangoexport/_index.md | 0 .../components/tools/arangoexport/examples.md | 0 .../components/tools/arangoexport/options.md | 0 .../components/tools/arangoimport/_index.md | 0 .../components/tools/arangoimport/details.md | 0 .../tools/arangoimport/examples-csv.md | 0 .../tools/arangoimport/examples-json.md | 0 .../components/tools/arangoimport/options.md | 0 .../components/tools/arangoinspect/_index.md | 0 .../tools/arangoinspect/examples.md | 0 .../components/tools/arangoinspect/options.md | 0 .../components/tools/arangorestore/_index.md | 0 .../tools/arangorestore/examples.md | 0 .../components/tools/arangorestore/options.md | 0 .../components/tools/arangovpack/_index.md | 0 .../components/tools/arangovpack/options.md | 0 .../3.13/components/tools/foxx-cli/_index.md | 0 .../3.13/components/tools/foxx-cli/details.md | 0 .../3.13/components/web-interface/_index.md | 2 +- .../3.13/components/web-interface/cluster.md | 2 +- .../components/web-interface/collections.md | 0 .../components/web-interface/dashboard.md | 2 +- .../3.13/components/web-interface/document.md | 0 .../3.13}/components/web-interface/graphs.md | 2 +- .../3.13/components/web-interface/logs.md | 0 .../3.13/components/web-interface/queries.md | 2 +- .../3.13/components/web-interface/services.md | 0 .../3.13/components/web-interface/users.md | 0 .../{ => arangodb}/3.13/concepts/_index.md | 0 .../3.13/concepts/data-models.md | 0 .../3.13/concepts/data-retrieval.md | 0 .../3.13/concepts/data-structure/_index.md | 0 .../concepts/data-structure/collections.md | 0 .../3.13/concepts/data-structure/databases.md | 0 .../data-structure/documents/_index.md | 0 .../documents/computed-values.md | 0 .../documents/schema-validation.md | 0 .../3.13/concepts/data-structure/views.md | 0 .../{ => arangodb}/3.13/deploy/_index.md | 6 +- .../3.13/deploy/architecture/_index.md | 0 .../3.13/deploy/architecture/data-sharding.md | 4 +- .../3.13/deploy/architecture/replication.md | 0 .../3.13/deploy/architecture/scalability.md | 0 .../3.13/deploy/cluster/_index.md | 6 +- .../3.13/deploy/cluster/administration.md | 0 .../3.13/deploy/cluster/deployment/_index.md | 2 +- .../deploy/cluster/deployment/manual-start.md | 0 .../deployment/using-the-arangodb-starter.md | 0 .../3.13/deploy/cluster/limitations.md | 0 .../3.13/deploy/in-the-cloud.md | 0 .../{ => arangodb}/3.13/deploy/kubernetes.md | 0 .../{ => arangodb}/3.13/deploy/oneshard.md | 2 +- .../3.13/deploy/production-checklist.md | 0 .../3.13/deploy/single-instance-vs-cluster.md | 0 .../3.13/deploy/single-instance/_index.md | 0 .../deploy/single-instance/manual-start.md | 0 .../using-the-arangodb-starter.md | 0 .../{ => arangodb}/3.13/develop/_index.md | 0 .../3.13/develop/drivers/_index.md | 0 .../{ => arangodb}/3.13/develop/drivers/go.md | 0 .../3.13/develop/drivers/java/_index.md | 0 .../java/reference-version-7/_index.md | 0 .../changes-in-version-7.md | 0 .../java/reference-version-7/driver-setup.md | 0 .../java/reference-version-7/serialization.md | 0 .../3.13/develop/drivers/javascript.md | 0 .../3.13/develop/drivers/python.md | 0 .../3.13/develop/error-codes.md | 0 .../{ => arangodb}/3.13/develop/exit-codes.md | 0 .../3.13/develop/foxx-microservices/_index.md | 0 .../develop/foxx-microservices/deployment.md | 0 .../foxx-microservices/getting-started.md | 0 .../foxx-microservices/guides/_index.md | 0 .../guides/access-from-the-browser.md | 0 .../guides/authentication-and-sessions.md | 0 .../guides/development-mode.md | 0 .../guides/foxx-in-a-cluster.md | 0 .../guides/linking-services-together.md | 0 .../guides/making-requests.md | 0 .../guides/scripts-and-scheduling.md | 0 .../guides/testing-foxx-services.md | 0 .../guides/using-node-modules.md | 0 .../guides/using-webpack-with-foxx.md | 0 .../guides/working-with-collections.md | 0 .../guides/working-with-files.md | 0 .../guides/working-with-routers.md | 0 .../guides/writing-queries.md | 0 .../foxx-microservices/reference/_index.md | 0 .../reference/configuration.md | 0 .../reference/related-modules/_index.md | 0 .../related-modules/authentication.md | 0 .../reference/related-modules/graphql.md | 0 .../reference/related-modules/oauth-1-0a.md | 0 .../reference/related-modules/oauth-2-0.md | 0 .../reference/related-modules/queues.md | 0 .../reference/routers/_index.md | 0 .../reference/routers/endpoints.md | 0 .../reference/routers/middleware.md | 0 .../reference/routers/request.md | 0 .../reference/routers/response.md | 0 .../reference/service-context.md | 0 .../reference/service-manifest.md | 0 .../reference/sessions-middleware/_index.md | 0 .../session-storages/_index.md | 0 .../session-storages/collection-storage.md | 0 .../session-storages/jwt-storage.md | 0 .../session-transports/_index.md | 0 .../session-transports/cookie-transport.md | 0 .../session-transports/header-transport.md | 0 .../3.13/develop/http-api/_index.md | 2 +- .../3.13/develop/http-api/administration.md | 0 .../3.13/develop/http-api/analyzers.md | 0 .../3.13/develop/http-api/authentication.md | 2 +- .../3.13/develop/http-api/cluster.md | 0 .../3.13/develop/http-api/collections.md | 0 .../3.13/develop/http-api/databases.md | 0 .../3.13/develop/http-api/documents.md | 0 .../3.13/develop/http-api/foxx.md | 0 .../http-api/general-request-handling.md | 0 .../3.13/develop/http-api/graphs/_index.md | 0 .../3.13/develop/http-api/graphs/edges.md | 0 .../develop/http-api/graphs/named-graphs.md | 4 +- .../3.13/develop/http-api/hot-backups.md | 4 +- .../3.13/develop/http-api/import.md | 0 .../3.13/develop/http-api/indexes/_index.md | 0 .../3.13/develop/http-api/indexes/fulltext.md | 0 .../develop/http-api/indexes/geo-spatial.md | 0 .../3.13/develop/http-api/indexes/inverted.md | 0 .../http-api/indexes/multi-dimensional.md | 0 .../develop/http-api/indexes/persistent.md | 0 .../3.13/develop/http-api/indexes/ttl.md | 0 .../3.13/develop/http-api/indexes/vector.md | 0 .../3.13/develop/http-api/jobs.md | 0 .../develop/http-api/monitoring/_index.md | 0 .../3.13/develop/http-api/monitoring/logs.md | 0 .../develop/http-api/monitoring/metrics.md | 0 .../develop/http-api/monitoring/statistics.md | 0 .../3.13/develop/http-api/queries/_index.md | 0 .../develop/http-api/queries/aql-queries.md | 0 .../http-api/queries/aql-query-plan-cache.md | 0 .../queries/aql-query-results-cache.md | 0 .../queries/user-defined-aql-functions.md | 0 .../develop/http-api/replication/_index.md | 0 .../replication/other-replication-commands.md | 0 .../replication/replication-applier.md | 0 .../http-api/replication/replication-dump.md | 0 .../replication/replication-logger.md | 0 .../http-api/replication/write-ahead-log.md | 0 .../3.13/develop/http-api/security.md | 0 .../3.13/develop/http-api/tasks.md | 0 .../develop/http-api/transactions/_index.md | 0 .../transactions/javascript-transactions.md | 0 .../transactions/stream-transactions.md | 0 .../3.13/develop/http-api/users.md | 0 .../3.13/develop/http-api/views/_index.md | 0 .../http-api/views/arangosearch-views.md | 0 .../http-api/views/search-alias-views.md | 0 .../3.13/develop/integrations/_index.md | 0 .../arangodb-datasource-for-apache-spark.md | 2 +- .../_index.md | 0 .../configuration.md | 0 .../integrations/spring-boot-arangodb.md | 0 .../spring-data-arangodb/_index.md | 0 .../spring-data-arangodb/migration.md | 0 .../reference-version-4/_index.md | 0 .../reference-version-4/mapping/_index.md | 0 .../reference-version-4/mapping/auditing.md | 0 .../mapping/computed-values.md | 0 .../reference-version-4/mapping/converter.md | 0 .../reference-version-4/mapping/document.md | 0 .../reference-version-4/mapping/edge.md | 0 .../reference-version-4/mapping/events.md | 0 .../reference-version-4/mapping/indexes.md | 0 .../reference-version-4/mapping/reference.md | 0 .../reference-version-4/mapping/relations.md | 0 .../repositories/_index.md | 0 .../repositories/queries/_index.md | 0 .../repositories/queries/derived-queries.md | 0 .../repositories/queries/named-queries.md | 0 .../repositories/queries/query-methods.md | 0 .../reference-version-4/template.md | 0 .../javascript-api/@arangodb/_index.md | 0 .../@arangodb/collection-object.md | 0 .../javascript-api/@arangodb/cursor-object.md | 0 .../javascript-api/@arangodb/db-object.md | 0 .../javascript-api/@arangodb/view-object.md | 0 .../3.13/develop/javascript-api/_index.md | 0 .../3.13/develop/javascript-api/actions.md | 0 .../3.13/develop/javascript-api/analyzers.md | 0 .../develop/javascript-api/aql-queries.md | 0 .../3.13/develop/javascript-api/console.md | 0 .../3.13/develop/javascript-api/crypto.md | 0 .../3.13/develop/javascript-api/fs.md | 0 .../3.13/develop/javascript-api/request.md | 0 .../3.13/develop/javascript-api/tasks.md | 0 .../3.13/develop/operational-factors.md | 0 .../3.13/develop/satellitecollections.md | 0 .../{ => arangodb}/3.13/develop/smartjoins.md | 0 .../3.13/develop/transactions/_index.md | 0 .../3.13/develop/transactions/durability.md | 0 .../transactions/javascript-transactions.md | 0 .../3.13/develop/transactions/limitations.md | 0 .../transactions/locking-and-isolation.md | 0 .../transactions/stream-transactions.md | 0 .../{ => arangodb}/3.13/get-started/_index.md | 0 .../how-to-interact-with-arangodb.md | 0 .../get-started/on-premises-installation.md | 6 +- .../get-started/set-up-a-cloud-instance.md | 54 +- .../get-started/start-using-aql/_index.md | 0 .../3.13/get-started/start-using-aql/crud.md | 0 .../get-started/start-using-aql/dataset.md | 0 .../get-started/start-using-aql/filter.md | 0 .../3.13/get-started/start-using-aql/geo.md | 0 .../get-started/start-using-aql/graphs.md | 4 +- .../3.13/get-started/start-using-aql/joins.md | 0 .../get-started/start-using-aql/sort-limit.md | 0 .../{ => arangodb}/3.13/graphs/_index.md | 14 +- .../3.13/graphs/enterprisegraphs/_index.md | 0 .../enterprisegraphs/getting-started.md | 2 +- .../graphs/enterprisegraphs/management.md | 0 .../3.13}/graphs/example-graphs.md | 16 +- .../3.13/graphs/general-graphs/_index.md | 2 +- .../3.13}/graphs/general-graphs/functions.md | 2 +- .../3.13/graphs/general-graphs/management.md | 0 .../3.13/graphs/satellitegraphs/_index.md | 2 +- .../3.13/graphs/satellitegraphs/details.md | 0 .../3.13/graphs/satellitegraphs/management.md | 0 .../3.13}/graphs/smartgraphs/_index.md | 8 +- .../graphs/smartgraphs/getting-started.md | 2 +- .../3.13/graphs/smartgraphs/management.md | 0 .../testing-graphs-on-single-server.md | 0 .../3.13/graphs/working-with-edges.md | 0 .../3.13/index-and-search/_index.md | 0 .../3.13/index-and-search/analyzers.md | 0 .../index-and-search/arangosearch/_index.md | 2 +- .../arangosearch-views-reference.md | 2 +- .../case-sensitivity-and-diacritics.md | 0 .../arangosearch/exact-value-matching.md | 0 .../arangosearch/example-datasets.md | 0 .../arangosearch/faceted-search.md | 0 .../arangosearch/full-text-token-search.md | 0 .../arangosearch/fuzzy-search.md | 0 .../arangosearch/geospatial-search.md | 6 +- .../arangosearch/nested-search.md | 0 .../arangosearch/performance.md | 0 .../phrase-and-proximity-search.md | 0 .../arangosearch/prefix-matching.md | 0 .../arangosearch/range-queries.md | 0 .../index-and-search/arangosearch/ranking.md | 0 .../search-alias-views-reference.md | 2 +- .../arangosearch/search-highlighting.md | 0 .../arangosearch/wildcard-search.md | 0 .../3.13/index-and-search/indexing/_index.md | 0 .../3.13/index-and-search/indexing/basics.md | 0 .../indexing/index-utilization.md | 0 .../indexing/which-index-to-use-when.md | 0 .../indexing/working-with-indexes/_index.md | 0 .../working-with-indexes/fulltext-indexes.md | 0 .../geo-spatial-indexes.md | 0 .../working-with-indexes/inverted-indexes.md | 0 .../multi-dimensional-indexes.md | 0 .../persistent-indexes.md | 0 .../working-with-indexes/ttl-indexes.md | 0 .../working-with-indexes/vector-indexes.md | 2 +- .../vertex-centric-indexes.md | 0 .../{ => arangodb}/3.13/operations/_index.md | 0 .../3.13/operations/administration/_index.md | 0 .../administration/arangodb-starter/_index.md | 0 .../arangodb-starter/recovery-procedure.md | 0 .../arangodb-starter/removal-procedure.md | 0 .../administration/configuration.md | 0 .../administration/import-and-export.md | 0 .../administration/license-management.md | 2 +- .../operations/administration/log-levels.md | 0 .../administration/reduce-memory-footprint.md | 2 +- .../operations/administration/telemetrics.md | 0 .../administration/user-management/_index.md | 0 .../user-management/in-arangosh.md | 0 .../3.13/operations/backup-and-restore.md | 0 .../3.13/operations/installation/_index.md | 2 +- .../3.13/operations/installation/docker.md | 0 .../operations/installation/linux/_index.md | 0 .../linux/linux-os-tuning-script-examples.md | 0 .../linux/operating-system-configuration.md | 0 .../operations/installation/uninstallation.md | 0 .../3.13/operations/security/_index.md | 0 .../3.13/operations/security/audit-logging.md | 2 +- .../security/change-root-password.md | 0 .../operations/security/encryption-at-rest.md | 4 +- .../security/securing-starter-deployments.md | 0 .../operations/security/security-options.md | 0 .../3.13/operations/troubleshooting/_index.md | 0 .../operations/troubleshooting/arangod.md | 0 .../troubleshooting/cluster/_index.md | 0 .../troubleshooting/cluster/agency-dump.md | 0 .../troubleshooting/emergency-console.md | 0 .../troubleshooting/query-debug-packages.md | 0 .../3.13/operations/upgrading/_index.md | 0 .../3.13/operations/upgrading/downgrading.md | 0 .../upgrading/manual-deployments/_index.md | 0 .../upgrading/manual-deployments/cluster.md | 0 .../manual-deployments/single-server.md | 0 .../upgrading/starter-deployments.md | 0 .../3.13/release-notes/_index.md | 0 .../deprecated-and-removed-features.md | 0 .../3.13/release-notes/platform.md | 2 +- .../3.13/release-notes/version-3.0/_index.md | 0 .../incompatible-changes-in-3-0.md | 0 .../version-3.0/whats-new-in-3-0.md | 0 .../3.13/release-notes/version-3.1/_index.md | 0 .../incompatible-changes-in-3-1.md | 0 .../version-3.1/whats-new-in-3-1.md | 0 .../3.13/release-notes/version-3.10/_index.md | 0 .../version-3.10/api-changes-in-3-10.md | 0 .../incompatible-changes-in-3-10.md | 0 .../version-3.10/known-issues-in-3-10.md | 0 .../version-3.10/whats-new-in-3-10.md | 0 .../3.13/release-notes/version-3.11/_index.md | 0 .../version-3.11/api-changes-in-3-11.md | 0 .../incompatible-changes-in-3-11.md | 0 .../version-3.11/known-issues-in-3-11.md | 0 .../version-3.11/whats-new-in-3-11.md | 2 +- .../3.13/release-notes/version-3.12/_index.md | 0 .../version-3.12/api-changes-in-3-12.md | 0 .../incompatible-changes-in-3-12.md | 0 .../version-3.12/known-issues-in-3-12.md | 0 .../version-3.12/whats-new-in-3-12.md | 0 .../3.13/release-notes/version-3.13/_index.md | 0 .../version-3.13/api-changes-in-3-13.md | 0 .../incompatible-changes-in-3-13.md | 0 .../version-3.13/known-issues-in-3-13.md | 0 .../version-3.13/whats-new-in-3-13.md | 0 .../3.13/release-notes/version-3.2/_index.md | 0 .../incompatible-changes-in-3-2.md | 0 .../version-3.2/known-issues-in-3-2.md | 0 .../version-3.2/whats-new-in-3-2.md | 0 .../3.13/release-notes/version-3.3/_index.md | 0 .../incompatible-changes-in-3-3.md | 0 .../version-3.3/known-issues-in-3-3.md | 0 .../version-3.3/whats-new-in-3-3.md | 0 .../3.13/release-notes/version-3.4/_index.md | 0 .../incompatible-changes-in-3-4.md | 0 .../version-3.4/known-issues-in-3-4.md | 0 .../version-3.4/whats-new-in-3-4.md | 0 .../3.13/release-notes/version-3.5/_index.md | 0 .../incompatible-changes-in-3-5.md | 0 .../version-3.5/known-issues-in-3-5.md | 0 .../version-3.5/whats-new-in-3-5.md | 0 .../3.13/release-notes/version-3.6/_index.md | 0 .../incompatible-changes-in-3-6.md | 0 .../version-3.6/known-issues-in-3-6.md | 0 .../version-3.6/whats-new-in-3-6.md | 0 .../3.13/release-notes/version-3.7/_index.md | 0 .../version-3.7/api-changes-in-3-7.md | 0 .../incompatible-changes-in-3-7.md | 0 .../version-3.7/known-issues-in-3-7.md | 0 .../version-3.7/whats-new-in-3-7.md | 0 .../3.13/release-notes/version-3.8/_index.md | 0 .../version-3.8/api-changes-in-3-8.md | 0 .../incompatible-changes-in-3-8.md | 0 .../version-3.8/known-issues-in-3-8.md | 0 .../version-3.8/whats-new-in-3-8.md | 0 .../3.13/release-notes/version-3.9/_index.md | 0 .../version-3.9/api-changes-in-3-9.md | 0 .../incompatible-changes-in-3-9.md | 0 .../version-3.9/known-issues-in-3-9.md | 0 .../version-3.9/whats-new-in-3-9.md | 0 site/content/arangodb/_index.md | 7 + site/content/data-platform/_index.md | 20 + .../about}/_index.md | 4 +- .../about/features.md} | 15 +- .../graph-visualizer.md | 16 +- .../release-notes.md | 4 +- site/content/ecosystem/_index.md | 6 + .../adapters}/_index.md | 0 .../adapters}/arangodb-cugraph-adapter.md | 0 .../adapters}/arangodb-dgl-adapter.md | 0 .../adapters}/arangodb-networkx-adapter.md | 0 .../adapters}/arangodb-pyg-adapter.md | 0 .../adapters}/arangodb-rdf-adapter.md | 0 .../adapters}/langchain.md | 0 site/content/gen-ai/_index.md | 24 + .../graphs => gen-ai}/graph-analytics.md | 32 +- .../_index.md => gen-ai/graph-to-ai.md} | 28 +- .../data-science => gen-ai}/graphml/_index.md | 6 +- .../graphml/notebooks-api.md | 6 +- .../graphml/quickstart.md | 6 +- .../data-science => gen-ai}/graphml/ui.md | 14 +- .../graphrag/_index.md | 8 +- .../graphrag/tutorial-notebook.md | 2 +- .../graphrag/web-interface.md | 30 +- .../notebook-servers.md | 6 +- .../graphrag => gen-ai}/services/_index.md | 2 +- .../graphrag => gen-ai}/services/gen-ai.md | 2 +- .../graphrag => gen-ai}/services/importer.md | 2 +- .../graphrag => gen-ai}/services/mlflow.md | 2 +- .../services/natural-language-to-aql.md | 0 .../graphrag => gen-ai}/services/retriever.md | 2 +- .../services/triton-inference-server.md | 0 site/content/platform/_index.md | 24 - site/content/platform/data-science/_index.md | 174 ---- .../platform/data-science/graphml/_index.md | 207 ----- .../data-science/graphml/notebooks-api.md | 860 ----------------- .../data-science/graphml/quickstart.md | 58 -- .../platform/data-science/graphml/ui.md | 236 ----- .../data-science/graphrag/services/_index.md | 6 - .../data-science/graphrag/services/gen-ai.md | 216 ----- .../graphrag/services/importer.md | 350 ------- .../data-science/graphrag/services/mlflow.md | 162 ---- .../services/natural-language-to-aql.md | 241 ----- .../graphrag/services/retriever.md | 269 ------ .../services/triton-inference-server.md | 197 ---- .../graphrag/tutorial-notebook.md | 412 -------- .../data-science/graphrag/web-interface.md | 176 ---- .../data-science/integrations/_index.md | 22 - .../integrations/arangodb-cugraph-adapter.md | 151 --- .../integrations/arangodb-dgl-adapter.md | 253 ----- .../integrations/arangodb-networkx-adapter.md | 204 ---- .../integrations/arangodb-pyg-adapter.md | 261 ------ .../integrations/arangodb-rdf-adapter.md | 171 ---- .../data-science/integrations/langchain.md | 29 - .../platform/data-science/notebook-servers.md | 58 -- .../platform/graph-intelligence/_index.md | 5 - .../graph-intelligence/graph-analytics.md | 877 ------------------ .../layouts/shortcodes/tag.html | 7 +- 3026 files changed, 1003 insertions(+), 39710 deletions(-) delete mode 100644 site/content/3.10/arangograph/_index.md delete mode 100644 site/content/3.10/arangograph/api/_index.md delete mode 100644 site/content/3.10/arangograph/api/get-started.md delete mode 100644 site/content/3.10/arangograph/backups.md delete mode 100644 site/content/3.10/arangograph/data-loader/_index.md delete mode 100644 site/content/3.10/arangograph/data-loader/add-files.md delete mode 100644 site/content/3.10/arangograph/data-loader/design-graph.md delete mode 100644 site/content/3.10/arangograph/deployments/_index.md delete mode 100644 site/content/3.10/arangograph/deployments/private-endpoints.md delete mode 100644 site/content/3.10/arangograph/migrate-to-the-cloud.md delete mode 100644 site/content/3.10/arangograph/monitoring-and-metrics.md delete mode 100644 site/content/3.10/arangograph/my-account.md delete mode 100644 site/content/3.10/arangograph/notebooks.md delete mode 100644 site/content/3.10/arangograph/organizations/_index.md delete mode 100644 site/content/3.10/arangograph/organizations/billing.md delete mode 100644 site/content/3.10/arangograph/security-and-access-control/_index.md delete mode 100644 site/content/3.10/arangograph/security-and-access-control/single-sign-on/_index.md delete mode 100644 site/content/3.10/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md delete mode 100644 site/content/3.10/arangograph/security-and-access-control/x-509-certificates.md delete mode 100644 site/content/3.10/data-science/arangograph-notebooks.md delete mode 100644 site/content/3.11/arangograph/api/get-started.md delete mode 100644 site/content/3.11/arangograph/api/set-up-a-connection.md delete mode 100644 site/content/3.11/arangograph/backups.md delete mode 100644 site/content/3.11/arangograph/data-loader/_index.md delete mode 100644 site/content/3.11/arangograph/data-loader/design-graph.md delete mode 100644 site/content/3.11/arangograph/data-loader/example.md delete mode 100644 site/content/3.11/arangograph/data-loader/import.md delete mode 100644 site/content/3.11/arangograph/deployments/_index.md delete mode 100644 site/content/3.11/arangograph/deployments/private-endpoints.md delete mode 100644 site/content/3.11/arangograph/deployments/upgrades-and-versioning.md delete mode 100644 site/content/3.11/arangograph/monitoring-and-metrics.md delete mode 100644 site/content/3.11/arangograph/my-account.md delete mode 100644 site/content/3.11/arangograph/notebooks.md delete mode 100644 site/content/3.11/arangograph/oasisctl/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/accept/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/accept/accept-organization-invite.md delete mode 100644 site/content/3.11/arangograph/oasisctl/accept/accept-organization.md delete mode 100644 site/content/3.11/arangograph/oasisctl/add/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/add/add-auditlog-destination.md delete mode 100644 site/content/3.11/arangograph/oasisctl/add/add-auditlog.md delete mode 100644 site/content/3.11/arangograph/oasisctl/add/add-group-members.md delete mode 100644 site/content/3.11/arangograph/oasisctl/add/add-group.md delete mode 100644 site/content/3.11/arangograph/oasisctl/auditlog/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/auditlog/auditlog-attach.md delete mode 100644 site/content/3.11/arangograph/oasisctl/auditlog/auditlog-detach.md delete mode 100644 site/content/3.11/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md delete mode 100644 site/content/3.11/arangograph/oasisctl/auditlog/auditlog-get-attached.md delete mode 100644 site/content/3.11/arangograph/oasisctl/auditlog/auditlog-get.md delete mode 100644 site/content/3.11/arangograph/oasisctl/backup/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/backup/backup-copy.md delete mode 100644 site/content/3.11/arangograph/oasisctl/backup/backup-download.md delete mode 100644 site/content/3.11/arangograph/oasisctl/clone/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/clone/clone-deployment-backup.md delete mode 100644 site/content/3.11/arangograph/oasisctl/clone/clone-deployment.md delete mode 100644 site/content/3.11/arangograph/oasisctl/completion.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-apikey.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-auditlog.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-backup-policy.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-backup.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-cacertificate.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-deployment.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-example-installation.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-example.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-group.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-ipallowlist.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-metrics-token.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-metrics.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-notebook.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-organization-invite.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-organization.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-private-endpoint-service.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-private-endpoint.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-private.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-project.md delete mode 100644 site/content/3.11/arangograph/oasisctl/create/create-role.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-apikey.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-auditlog-archive-events.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-auditlog-archive.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-auditlog-destination.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-auditlog.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-backup-policy.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-backup.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-cacertificate.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-deployment.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-example-installation.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-example.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-group-members.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-group.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-ipallowlist.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-metrics-token.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-metrics.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-notebook.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-organization-invite.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-organization-members.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-organization.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-project.md delete mode 100644 site/content/3.11/arangograph/oasisctl/delete/delete-role.md delete mode 100644 site/content/3.11/arangograph/oasisctl/disable/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md delete mode 100644 site/content/3.11/arangograph/oasisctl/enable/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md delete mode 100644 site/content/3.11/arangograph/oasisctl/generate-docs.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-auditlog-archive.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-auditlog-events.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-auditlog.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-backup-policy.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-backup.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-cacertificate.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-deployment.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-example-installation.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-example.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-group.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-ipallowlist.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-metrics-token.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-metrics.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-notebook.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-organization-authentication-providers.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-organization-authentication.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-organization-email-domain.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-organization-email.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-organization-invite.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-organization.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-policy.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-private-endpoint-service.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-private-endpoint.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-private.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-project.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-provider.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-region.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-role.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-self.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-server-status.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-server.md delete mode 100644 site/content/3.11/arangograph/oasisctl/get/get-tandc.md delete mode 100644 site/content/3.11/arangograph/oasisctl/import.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-apikeys.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-arangodb-versions.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-arangodb.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-auditlog-archives.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-auditlog-destinations.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-auditlog.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-auditlogs.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-backup-policies.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-backup.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-backups.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-cacertificates.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-cpusizes.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-deployments.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-diskperformances.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-effective-permissions.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-effective.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-example-installations.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-example.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-examples.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-group-members.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-group.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-groups.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-ipallowlists.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-metrics-tokens.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-metrics.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-nodesizes.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-notebookmodels.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-notebooks.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-organization-invites.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-organization-members.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-organization.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-organizations.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-permissions.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-projects.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-providers.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-regions.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-roles.md delete mode 100644 site/content/3.11/arangograph/oasisctl/list/list-servers.md delete mode 100644 site/content/3.11/arangograph/oasisctl/lock/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/lock/lock-cacertificate.md delete mode 100644 site/content/3.11/arangograph/oasisctl/lock/lock-deployment.md delete mode 100644 site/content/3.11/arangograph/oasisctl/lock/lock-ipallowlist.md delete mode 100644 site/content/3.11/arangograph/oasisctl/lock/lock-organization.md delete mode 100644 site/content/3.11/arangograph/oasisctl/lock/lock-policy.md delete mode 100644 site/content/3.11/arangograph/oasisctl/lock/lock-project.md delete mode 100644 site/content/3.11/arangograph/oasisctl/login.md delete mode 100644 site/content/3.11/arangograph/oasisctl/logs.md delete mode 100644 site/content/3.11/arangograph/oasisctl/options.md delete mode 100644 site/content/3.11/arangograph/oasisctl/pause/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/pause/pause-notebook.md delete mode 100644 site/content/3.11/arangograph/oasisctl/rebalance/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md delete mode 100644 site/content/3.11/arangograph/oasisctl/rebalance/rebalance-deployment.md delete mode 100644 site/content/3.11/arangograph/oasisctl/reject/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/reject/reject-organization-invite.md delete mode 100644 site/content/3.11/arangograph/oasisctl/reject/reject-organization.md delete mode 100644 site/content/3.11/arangograph/oasisctl/renew/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/renew/renew-apikey-token.md delete mode 100644 site/content/3.11/arangograph/oasisctl/renew/renew-apikey.md delete mode 100644 site/content/3.11/arangograph/oasisctl/resume/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/resume/resume-deployment.md delete mode 100644 site/content/3.11/arangograph/oasisctl/resume/resume-notebook.md delete mode 100644 site/content/3.11/arangograph/oasisctl/revoke/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/revoke/revoke-apikey-token.md delete mode 100644 site/content/3.11/arangograph/oasisctl/revoke/revoke-apikey.md delete mode 100644 site/content/3.11/arangograph/oasisctl/revoke/revoke-metrics-token.md delete mode 100644 site/content/3.11/arangograph/oasisctl/revoke/revoke-metrics.md delete mode 100644 site/content/3.11/arangograph/oasisctl/rotate/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/rotate/rotate-deployment-server.md delete mode 100644 site/content/3.11/arangograph/oasisctl/rotate/rotate-deployment.md delete mode 100644 site/content/3.11/arangograph/oasisctl/top.md delete mode 100644 site/content/3.11/arangograph/oasisctl/unlock/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/unlock/unlock-cacertificate.md delete mode 100644 site/content/3.11/arangograph/oasisctl/unlock/unlock-deployment.md delete mode 100644 site/content/3.11/arangograph/oasisctl/unlock/unlock-ipallowlist.md delete mode 100644 site/content/3.11/arangograph/oasisctl/unlock/unlock-organization.md delete mode 100644 site/content/3.11/arangograph/oasisctl/unlock/unlock-policy.md delete mode 100644 site/content/3.11/arangograph/oasisctl/unlock/unlock-project.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-auditlog.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-backup-policy.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-backup.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-cacertificate.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-deployment.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-group.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-ipallowlist.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-metrics-token.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-metrics.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-notebook.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-organization-authentication-providers.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-organization-authentication.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-organization-email-domain.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-organization-email.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-organization.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-policy-add-binding.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-policy-add.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-policy-delete-binding.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-policy-delete.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-policy.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-private-endpoint-service.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-private-endpoint.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-private.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-project.md delete mode 100644 site/content/3.11/arangograph/oasisctl/update/update-role.md delete mode 100644 site/content/3.11/arangograph/oasisctl/upgrade.md delete mode 100644 site/content/3.11/arangograph/oasisctl/version.md delete mode 100644 site/content/3.11/arangograph/oasisctl/wait/_index.md delete mode 100644 site/content/3.11/arangograph/oasisctl/wait/wait-deployment.md delete mode 100644 site/content/3.11/arangograph/organizations/_index.md delete mode 100644 site/content/3.11/arangograph/organizations/credits-and-usage.md delete mode 100644 site/content/3.11/arangograph/organizations/users-and-groups.md delete mode 100644 site/content/3.11/arangograph/projects.md delete mode 100644 site/content/3.11/arangograph/security-and-access-control/_index.md delete mode 100644 site/content/3.11/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md delete mode 100644 site/content/3.11/arangograph/security-and-access-control/x-509-certificates.md delete mode 100644 site/content/3.11/data-science/arangograph-notebooks.md delete mode 100644 site/content/3.12/about-arangodb/features/platform.md delete mode 100644 site/content/3.12/arangograph/_index.md delete mode 100644 site/content/3.12/arangograph/api/_index.md delete mode 100644 site/content/3.12/arangograph/api/get-started.md delete mode 100644 site/content/3.12/arangograph/api/set-up-a-connection.md delete mode 100644 site/content/3.12/arangograph/data-loader/add-files.md delete mode 100644 site/content/3.12/arangograph/data-loader/example.md delete mode 100644 site/content/3.12/arangograph/data-loader/import.md delete mode 100644 site/content/3.12/arangograph/deployments/upgrades-and-versioning.md delete mode 100644 site/content/3.12/arangograph/migrate-to-the-cloud.md delete mode 100644 site/content/3.12/arangograph/oasisctl/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/accept/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/accept/accept-organization-invite.md delete mode 100644 site/content/3.12/arangograph/oasisctl/accept/accept-organization.md delete mode 100644 site/content/3.12/arangograph/oasisctl/add/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/add/add-auditlog-destination.md delete mode 100644 site/content/3.12/arangograph/oasisctl/add/add-auditlog.md delete mode 100644 site/content/3.12/arangograph/oasisctl/add/add-group-members.md delete mode 100644 site/content/3.12/arangograph/oasisctl/add/add-group.md delete mode 100644 site/content/3.12/arangograph/oasisctl/auditlog/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/auditlog/auditlog-attach.md delete mode 100644 site/content/3.12/arangograph/oasisctl/auditlog/auditlog-detach.md delete mode 100644 site/content/3.12/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md delete mode 100644 site/content/3.12/arangograph/oasisctl/auditlog/auditlog-get-attached.md delete mode 100644 site/content/3.12/arangograph/oasisctl/auditlog/auditlog-get.md delete mode 100644 site/content/3.12/arangograph/oasisctl/backup/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/backup/backup-copy.md delete mode 100644 site/content/3.12/arangograph/oasisctl/backup/backup-download.md delete mode 100644 site/content/3.12/arangograph/oasisctl/clone/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/clone/clone-deployment-backup.md delete mode 100644 site/content/3.12/arangograph/oasisctl/clone/clone-deployment.md delete mode 100644 site/content/3.12/arangograph/oasisctl/completion.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-apikey.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-auditlog.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-backup-policy.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-backup.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-cacertificate.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-deployment.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-example-installation.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-example.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-group.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-ipallowlist.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-metrics-token.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-metrics.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-notebook.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-organization-invite.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-organization.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-private-endpoint-service.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-private-endpoint.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-private.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-project.md delete mode 100644 site/content/3.12/arangograph/oasisctl/create/create-role.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-apikey.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-auditlog-archive-events.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-auditlog-archive.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-auditlog-destination.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-auditlog.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-backup-policy.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-backup.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-cacertificate.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-deployment.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-example-installation.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-example.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-group-members.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-group.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-ipallowlist.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-metrics-token.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-metrics.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-notebook.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-organization-invite.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-organization-members.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-organization.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-project.md delete mode 100644 site/content/3.12/arangograph/oasisctl/delete/delete-role.md delete mode 100644 site/content/3.12/arangograph/oasisctl/disable/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md delete mode 100644 site/content/3.12/arangograph/oasisctl/enable/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md delete mode 100644 site/content/3.12/arangograph/oasisctl/generate-docs.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-auditlog-archive.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-auditlog-events.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-auditlog.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-backup-policy.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-backup.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-cacertificate.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-deployment.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-example-installation.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-example.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-group.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-ipallowlist.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-metrics-token.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-metrics.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-notebook.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-organization-authentication-providers.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-organization-authentication.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-organization-email-domain.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-organization-email.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-organization-invite.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-organization.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-policy.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-private-endpoint-service.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-private-endpoint.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-private.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-project.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-provider.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-region.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-role.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-self.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-server-status.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-server.md delete mode 100644 site/content/3.12/arangograph/oasisctl/get/get-tandc.md delete mode 100644 site/content/3.12/arangograph/oasisctl/import.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-apikeys.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-arangodb-versions.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-arangodb.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-auditlog-archives.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-auditlog-destinations.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-auditlog.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-auditlogs.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-backup-policies.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-backup.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-backups.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-cacertificates.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-cpusizes.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-deployments.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-diskperformances.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-effective-permissions.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-effective.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-example-installations.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-example.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-examples.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-group-members.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-group.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-groups.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-ipallowlists.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-metrics-tokens.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-metrics.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-nodesizes.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-notebookmodels.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-notebooks.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-organization-invites.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-organization-members.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-organization.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-organizations.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-permissions.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-projects.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-providers.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-regions.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-roles.md delete mode 100644 site/content/3.12/arangograph/oasisctl/list/list-servers.md delete mode 100644 site/content/3.12/arangograph/oasisctl/lock/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/lock/lock-cacertificate.md delete mode 100644 site/content/3.12/arangograph/oasisctl/lock/lock-deployment.md delete mode 100644 site/content/3.12/arangograph/oasisctl/lock/lock-ipallowlist.md delete mode 100644 site/content/3.12/arangograph/oasisctl/lock/lock-organization.md delete mode 100644 site/content/3.12/arangograph/oasisctl/lock/lock-policy.md delete mode 100644 site/content/3.12/arangograph/oasisctl/lock/lock-project.md delete mode 100644 site/content/3.12/arangograph/oasisctl/login.md delete mode 100644 site/content/3.12/arangograph/oasisctl/logs.md delete mode 100644 site/content/3.12/arangograph/oasisctl/options.md delete mode 100644 site/content/3.12/arangograph/oasisctl/pause/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/pause/pause-notebook.md delete mode 100644 site/content/3.12/arangograph/oasisctl/rebalance/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md delete mode 100644 site/content/3.12/arangograph/oasisctl/rebalance/rebalance-deployment.md delete mode 100644 site/content/3.12/arangograph/oasisctl/reject/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/reject/reject-organization-invite.md delete mode 100644 site/content/3.12/arangograph/oasisctl/reject/reject-organization.md delete mode 100644 site/content/3.12/arangograph/oasisctl/renew/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/renew/renew-apikey-token.md delete mode 100644 site/content/3.12/arangograph/oasisctl/renew/renew-apikey.md delete mode 100644 site/content/3.12/arangograph/oasisctl/resume/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/resume/resume-deployment.md delete mode 100644 site/content/3.12/arangograph/oasisctl/resume/resume-notebook.md delete mode 100644 site/content/3.12/arangograph/oasisctl/revoke/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/revoke/revoke-apikey-token.md delete mode 100644 site/content/3.12/arangograph/oasisctl/revoke/revoke-apikey.md delete mode 100644 site/content/3.12/arangograph/oasisctl/revoke/revoke-metrics-token.md delete mode 100644 site/content/3.12/arangograph/oasisctl/revoke/revoke-metrics.md delete mode 100644 site/content/3.12/arangograph/oasisctl/rotate/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/rotate/rotate-deployment-server.md delete mode 100644 site/content/3.12/arangograph/oasisctl/rotate/rotate-deployment.md delete mode 100644 site/content/3.12/arangograph/oasisctl/top.md delete mode 100644 site/content/3.12/arangograph/oasisctl/unlock/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/unlock/unlock-cacertificate.md delete mode 100644 site/content/3.12/arangograph/oasisctl/unlock/unlock-deployment.md delete mode 100644 site/content/3.12/arangograph/oasisctl/unlock/unlock-ipallowlist.md delete mode 100644 site/content/3.12/arangograph/oasisctl/unlock/unlock-organization.md delete mode 100644 site/content/3.12/arangograph/oasisctl/unlock/unlock-policy.md delete mode 100644 site/content/3.12/arangograph/oasisctl/unlock/unlock-project.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-auditlog.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-backup-policy.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-backup.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-cacertificate.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-deployment.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-group.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-ipallowlist.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-metrics-token.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-metrics.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-notebook.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-organization-authentication-providers.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-organization-authentication.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-organization-email-domain.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-organization-email.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-organization.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-policy-add-binding.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-policy-add.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-policy-delete-binding.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-policy-delete.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-policy.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-private-endpoint-service.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-private-endpoint.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-private.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-project.md delete mode 100644 site/content/3.12/arangograph/oasisctl/update/update-role.md delete mode 100644 site/content/3.12/arangograph/oasisctl/upgrade.md delete mode 100644 site/content/3.12/arangograph/oasisctl/version.md delete mode 100644 site/content/3.12/arangograph/oasisctl/wait/_index.md delete mode 100644 site/content/3.12/arangograph/oasisctl/wait/wait-deployment.md delete mode 100644 site/content/3.12/arangograph/organizations/_index.md delete mode 100644 site/content/3.12/arangograph/organizations/billing.md delete mode 100644 site/content/3.12/arangograph/organizations/credits-and-usage.md delete mode 100644 site/content/3.12/arangograph/organizations/users-and-groups.md delete mode 100644 site/content/3.12/arangograph/projects.md delete mode 100644 site/content/3.12/arangograph/security-and-access-control/single-sign-on/_index.md delete mode 100644 site/content/3.13/arangograph/_index.md delete mode 100644 site/content/3.13/arangograph/api/_index.md delete mode 100644 site/content/3.13/arangograph/api/set-up-a-connection.md delete mode 100644 site/content/3.13/arangograph/backups.md delete mode 100644 site/content/3.13/arangograph/data-loader/_index.md delete mode 100644 site/content/3.13/arangograph/data-loader/add-files.md delete mode 100644 site/content/3.13/arangograph/data-loader/design-graph.md delete mode 100644 site/content/3.13/arangograph/data-loader/example.md delete mode 100644 site/content/3.13/arangograph/data-loader/import.md delete mode 100644 site/content/3.13/arangograph/deployments/_index.md delete mode 100644 site/content/3.13/arangograph/deployments/private-endpoints.md delete mode 100644 site/content/3.13/arangograph/deployments/upgrades-and-versioning.md delete mode 100644 site/content/3.13/arangograph/migrate-to-the-cloud.md delete mode 100644 site/content/3.13/arangograph/monitoring-and-metrics.md delete mode 100644 site/content/3.13/arangograph/my-account.md delete mode 100644 site/content/3.13/arangograph/notebooks.md delete mode 100644 site/content/3.13/arangograph/oasisctl/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/accept/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/accept/accept-organization-invite.md delete mode 100644 site/content/3.13/arangograph/oasisctl/accept/accept-organization.md delete mode 100644 site/content/3.13/arangograph/oasisctl/add/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/add/add-auditlog-destination.md delete mode 100644 site/content/3.13/arangograph/oasisctl/add/add-auditlog.md delete mode 100644 site/content/3.13/arangograph/oasisctl/add/add-group-members.md delete mode 100644 site/content/3.13/arangograph/oasisctl/add/add-group.md delete mode 100644 site/content/3.13/arangograph/oasisctl/auditlog/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/auditlog/auditlog-attach.md delete mode 100644 site/content/3.13/arangograph/oasisctl/auditlog/auditlog-detach.md delete mode 100644 site/content/3.13/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md delete mode 100644 site/content/3.13/arangograph/oasisctl/auditlog/auditlog-get-attached.md delete mode 100644 site/content/3.13/arangograph/oasisctl/auditlog/auditlog-get.md delete mode 100644 site/content/3.13/arangograph/oasisctl/backup/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/backup/backup-copy.md delete mode 100644 site/content/3.13/arangograph/oasisctl/backup/backup-download.md delete mode 100644 site/content/3.13/arangograph/oasisctl/clone/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/clone/clone-deployment-backup.md delete mode 100644 site/content/3.13/arangograph/oasisctl/clone/clone-deployment.md delete mode 100644 site/content/3.13/arangograph/oasisctl/completion.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-apikey.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-auditlog.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-backup-policy.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-backup.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-cacertificate.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-deployment.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-example-installation.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-example.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-group.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-ipallowlist.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-metrics-token.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-metrics.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-notebook.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-organization-invite.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-organization.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-private-endpoint-service.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-private-endpoint.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-private.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-project.md delete mode 100644 site/content/3.13/arangograph/oasisctl/create/create-role.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-apikey.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-auditlog-archive-events.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-auditlog-archive.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-auditlog-destination.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-auditlog.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-backup-policy.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-backup.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-cacertificate.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-deployment.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-example-installation.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-example.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-group-members.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-group.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-ipallowlist.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-metrics-token.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-metrics.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-notebook.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-organization-invite.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-organization-members.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-organization.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-project.md delete mode 100644 site/content/3.13/arangograph/oasisctl/delete/delete-role.md delete mode 100644 site/content/3.13/arangograph/oasisctl/disable/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md delete mode 100644 site/content/3.13/arangograph/oasisctl/enable/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md delete mode 100644 site/content/3.13/arangograph/oasisctl/generate-docs.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-auditlog-archive.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-auditlog-events.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-auditlog.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-backup-policy.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-backup.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-cacertificate.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-deployment.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-example-installation.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-example.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-group.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-ipallowlist.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-metrics-token.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-metrics.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-notebook.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-organization-authentication-providers.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-organization-authentication.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-organization-email-domain.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-organization-email.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-organization-invite.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-organization.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-policy.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-private-endpoint-service.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-private-endpoint.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-private.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-project.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-provider.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-region.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-role.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-self.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-server-status.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-server.md delete mode 100644 site/content/3.13/arangograph/oasisctl/get/get-tandc.md delete mode 100644 site/content/3.13/arangograph/oasisctl/import.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-apikeys.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-arangodb-versions.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-arangodb.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-auditlog-archives.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-auditlog-destinations.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-auditlog.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-auditlogs.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-backup-policies.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-backup.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-backups.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-cacertificates.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-cpusizes.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-deployments.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-diskperformances.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-effective-permissions.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-effective.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-example-installations.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-example.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-examples.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-group-members.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-group.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-groups.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-ipallowlists.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-metrics-tokens.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-metrics.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-nodesizes.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-notebookmodels.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-notebooks.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-organization-invites.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-organization-members.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-organization.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-organizations.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-permissions.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-projects.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-providers.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-regions.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-roles.md delete mode 100644 site/content/3.13/arangograph/oasisctl/list/list-servers.md delete mode 100644 site/content/3.13/arangograph/oasisctl/lock/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/lock/lock-cacertificate.md delete mode 100644 site/content/3.13/arangograph/oasisctl/lock/lock-deployment.md delete mode 100644 site/content/3.13/arangograph/oasisctl/lock/lock-ipallowlist.md delete mode 100644 site/content/3.13/arangograph/oasisctl/lock/lock-organization.md delete mode 100644 site/content/3.13/arangograph/oasisctl/lock/lock-policy.md delete mode 100644 site/content/3.13/arangograph/oasisctl/lock/lock-project.md delete mode 100644 site/content/3.13/arangograph/oasisctl/login.md delete mode 100644 site/content/3.13/arangograph/oasisctl/logs.md delete mode 100644 site/content/3.13/arangograph/oasisctl/options.md delete mode 100644 site/content/3.13/arangograph/oasisctl/pause/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/pause/pause-notebook.md delete mode 100644 site/content/3.13/arangograph/oasisctl/rebalance/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md delete mode 100644 site/content/3.13/arangograph/oasisctl/rebalance/rebalance-deployment.md delete mode 100644 site/content/3.13/arangograph/oasisctl/reject/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/reject/reject-organization-invite.md delete mode 100644 site/content/3.13/arangograph/oasisctl/reject/reject-organization.md delete mode 100644 site/content/3.13/arangograph/oasisctl/renew/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/renew/renew-apikey-token.md delete mode 100644 site/content/3.13/arangograph/oasisctl/renew/renew-apikey.md delete mode 100644 site/content/3.13/arangograph/oasisctl/resume/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/resume/resume-deployment.md delete mode 100644 site/content/3.13/arangograph/oasisctl/resume/resume-notebook.md delete mode 100644 site/content/3.13/arangograph/oasisctl/revoke/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/revoke/revoke-apikey-token.md delete mode 100644 site/content/3.13/arangograph/oasisctl/revoke/revoke-apikey.md delete mode 100644 site/content/3.13/arangograph/oasisctl/revoke/revoke-metrics-token.md delete mode 100644 site/content/3.13/arangograph/oasisctl/revoke/revoke-metrics.md delete mode 100644 site/content/3.13/arangograph/oasisctl/rotate/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/rotate/rotate-deployment-server.md delete mode 100644 site/content/3.13/arangograph/oasisctl/rotate/rotate-deployment.md delete mode 100644 site/content/3.13/arangograph/oasisctl/top.md delete mode 100644 site/content/3.13/arangograph/oasisctl/unlock/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/unlock/unlock-cacertificate.md delete mode 100644 site/content/3.13/arangograph/oasisctl/unlock/unlock-deployment.md delete mode 100644 site/content/3.13/arangograph/oasisctl/unlock/unlock-ipallowlist.md delete mode 100644 site/content/3.13/arangograph/oasisctl/unlock/unlock-organization.md delete mode 100644 site/content/3.13/arangograph/oasisctl/unlock/unlock-policy.md delete mode 100644 site/content/3.13/arangograph/oasisctl/unlock/unlock-project.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-auditlog.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-backup-policy.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-backup.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-cacertificate.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-deployment.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-group.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-ipallowlist.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-metrics-token.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-metrics.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-notebook.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-organization-authentication-providers.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-organization-authentication.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-organization-email-domain.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-organization-email.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-organization.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-policy-add-binding.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-policy-add.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-policy-delete-binding.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-policy-delete.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-policy.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-private-endpoint-service.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-private-endpoint.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-private.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-project.md delete mode 100644 site/content/3.13/arangograph/oasisctl/update/update-role.md delete mode 100644 site/content/3.13/arangograph/oasisctl/upgrade.md delete mode 100644 site/content/3.13/arangograph/oasisctl/version.md delete mode 100644 site/content/3.13/arangograph/oasisctl/wait/_index.md delete mode 100644 site/content/3.13/arangograph/oasisctl/wait/wait-deployment.md delete mode 100644 site/content/3.13/arangograph/organizations/billing.md delete mode 100644 site/content/3.13/arangograph/organizations/credits-and-usage.md delete mode 100644 site/content/3.13/arangograph/organizations/users-and-groups.md delete mode 100644 site/content/3.13/arangograph/projects.md delete mode 100644 site/content/3.13/arangograph/security-and-access-control/_index.md delete mode 100644 site/content/3.13/arangograph/security-and-access-control/single-sign-on/_index.md delete mode 100644 site/content/3.13/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md delete mode 100644 site/content/3.13/arangograph/security-and-access-control/x-509-certificates.md delete mode 100644 site/content/3.13/data-science/graphrag/_index.md delete mode 100644 site/content/3.13/graphs/graph-visualizer.md rename site/content/{3.11/arangograph => amp}/_index.md (79%) rename site/content/{3.11/arangograph => amp}/api/_index.md (65%) rename site/content/{3.13/arangograph => amp}/api/get-started.md (93%) rename site/content/{3.10/arangograph => amp}/api/set-up-a-connection.md (100%) rename site/content/{3.12/arangograph => amp}/backups.md (83%) rename site/content/{3.12/arangograph => amp}/data-loader/_index.md (84%) rename site/content/{3.11/arangograph => amp}/data-loader/add-files.md (95%) rename site/content/{3.12/arangograph => amp}/data-loader/design-graph.md (91%) rename site/content/{3.10/arangograph => amp}/data-loader/example.md (85%) rename site/content/{3.10/arangograph => amp}/data-loader/import.md (100%) rename site/content/{3.12/arangograph => amp}/deployments/_index.md (94%) rename site/content/{3.12/arangograph => amp}/deployments/private-endpoints.md (91%) rename site/content/{3.10/arangograph => amp}/deployments/upgrades-and-versioning.md (100%) rename site/content/{3.11/arangograph => amp}/migrate-to-the-cloud.md (98%) rename site/content/{3.12/arangograph => amp}/monitoring-and-metrics.md (89%) rename site/content/{3.12/arangograph => amp}/my-account.md (85%) rename site/content/{3.12/arangograph => amp}/notebooks.md (98%) rename site/content/{3.10/arangograph => amp}/oasisctl/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/accept/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/accept/accept-organization-invite.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/accept/accept-organization.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/add/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/add/add-auditlog-destination.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/add/add-auditlog.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/add/add-group-members.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/add/add-group.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/auditlog/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/auditlog/auditlog-attach.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/auditlog/auditlog-detach.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/auditlog/auditlog-get-attached-project.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/auditlog/auditlog-get-attached.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/auditlog/auditlog-get.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/backup/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/backup/backup-copy.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/backup/backup-download.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/clone/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/clone/clone-deployment-backup.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/clone/clone-deployment.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/completion.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-apikey.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-auditlog.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-backup-policy.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-backup.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-cacertificate.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-deployment.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-example-installation.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-example.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-group.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-ipallowlist.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-metrics-token.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-metrics.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-notebook.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-organization-invite.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-organization.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-private-endpoint-service.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-private-endpoint.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-private.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-project.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/create/create-role.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-apikey.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-auditlog-archive-events.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-auditlog-archive.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-auditlog-destination.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-auditlog.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-backup-policy.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-backup.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-cacertificate.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-deployment.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-example-installation.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-example.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-group-members.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-group.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-ipallowlist.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-metrics-token.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-metrics.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-notebook.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-organization-invite.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-organization-members.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-organization.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-project.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/delete/delete-role.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/disable/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/disable/disable-scheduled-root-password-rotation.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/enable/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/enable/enable-scheduled-root-password-rotation.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/generate-docs.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-auditlog-archive.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-auditlog-events.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-auditlog.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-backup-policy.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-backup.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-cacertificate.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-deployment.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-example-installation.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-example.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-group.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-ipallowlist.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-metrics-token.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-metrics.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-notebook.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-organization-authentication-providers.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-organization-authentication.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-organization-email-domain-restrictions.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-organization-email-domain.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-organization-email.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-organization-invite.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-organization.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-policy.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-private-endpoint-service.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-private-endpoint.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-private.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-project.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-provider.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-region.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-role.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-self.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-server-status.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-server.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/get/get-tandc.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/import.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-apikeys.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-arangodb-versions.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-arangodb.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-auditlog-archives.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-auditlog-destinations.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-auditlog.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-auditlogs.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-backup-policies.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-backup.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-backups.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-cacertificates.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-cpusizes.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-deployments.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-diskperformances.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-effective-permissions.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-effective.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-example-installations.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-example.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-examples.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-group-members.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-group.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-groups.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-ipallowlists.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-metrics-tokens.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-metrics.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-nodesizes.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-notebookmodels.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-notebooks.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-organization-invites.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-organization-members.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-organization.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-organizations.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-permissions.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-projects.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-providers.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-regions.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-roles.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/list/list-servers.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/lock/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/lock/lock-cacertificate.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/lock/lock-deployment.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/lock/lock-ipallowlist.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/lock/lock-organization.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/lock/lock-policy.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/lock/lock-project.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/login.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/logs.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/options.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/pause/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/pause/pause-notebook.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/rebalance/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/rebalance/rebalance-deployment-shards.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/rebalance/rebalance-deployment.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/reject/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/reject/reject-organization-invite.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/reject/reject-organization.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/renew/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/renew/renew-apikey-token.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/renew/renew-apikey.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/resume/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/resume/resume-deployment.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/resume/resume-notebook.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/revoke/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/revoke/revoke-apikey-token.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/revoke/revoke-apikey.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/revoke/revoke-metrics-token.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/revoke/revoke-metrics.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/rotate/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/rotate/rotate-deployment-server.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/rotate/rotate-deployment.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/top.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/unlock/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/unlock/unlock-cacertificate.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/unlock/unlock-deployment.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/unlock/unlock-ipallowlist.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/unlock/unlock-organization.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/unlock/unlock-policy.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/unlock/unlock-project.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-auditlog.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-backup-policy.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-backup.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-cacertificate.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-deployment.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-group.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-ipallowlist.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-metrics-token.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-metrics.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-notebook.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-organization-authentication-providers.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-organization-authentication.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-organization-email-domain-restrictions.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-organization-email-domain.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-organization-email.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-organization.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-policy-add-binding.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-policy-add.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-policy-delete-binding.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-policy-delete.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-policy.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-private-endpoint-service.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-private-endpoint.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-private.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-project.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/update/update-role.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/upgrade.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/version.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/wait/_index.md (100%) rename site/content/{3.10/arangograph => amp}/oasisctl/wait/wait-deployment.md (100%) rename site/content/{3.13/arangograph => amp}/organizations/_index.md (92%) rename site/content/{3.11/arangograph => amp}/organizations/billing.md (85%) rename site/content/{3.10/arangograph => amp}/organizations/credits-and-usage.md (98%) rename site/content/{3.10/arangograph => amp}/organizations/users-and-groups.md (90%) rename site/content/{3.10/arangograph => amp}/projects.md (93%) rename site/content/{3.12/arangograph => amp}/security-and-access-control/_index.md (98%) rename site/content/{3.11/arangograph => amp}/security-and-access-control/single-sign-on/_index.md (87%) rename site/content/{3.12/arangograph => amp}/security-and-access-control/single-sign-on/scim-provisioning.md (97%) rename site/content/{3.12/arangograph => amp}/security-and-access-control/x-509-certificates.md (94%) rename site/content/{ => arangodb}/3.10/_index.md (82%) rename site/content/{3.11/about-arangodb => arangodb/3.10/about}/_index.md (82%) rename site/content/{3.10/about-arangodb => arangodb/3.10/about}/features/_index.md (98%) rename site/content/{3.10/about-arangodb => arangodb/3.10/about}/features/community-edition.md (100%) rename site/content/{3.11/about-arangodb => arangodb/3.10/about}/features/enterprise-edition.md (98%) rename site/content/{3.10/about-arangodb => arangodb/3.10/about}/features/highlights-by-version.md (100%) rename site/content/{3.13/about-arangodb => arangodb/3.10/about}/use-cases.md (77%) rename site/content/{ => arangodb}/3.10/aql/_index.md (100%) rename site/content/{ => arangodb}/3.10/aql/common-errors.md (100%) rename site/content/{ => arangodb}/3.10/aql/data-queries.md (100%) rename site/content/{ => arangodb}/3.10/aql/examples-and-query-patterns/_index.md (100%) rename site/content/{ => arangodb}/3.10/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md (100%) rename site/content/{ => arangodb}/3.10/aql/examples-and-query-patterns/counting.md (100%) rename site/content/{ => arangodb}/3.10/aql/examples-and-query-patterns/create-test-data.md (100%) rename site/content/{ => arangodb}/3.10/aql/examples-and-query-patterns/diffing-two-documents.md (100%) rename site/content/{ => arangodb}/3.10/aql/examples-and-query-patterns/dynamic-attribute-names.md (100%) rename site/content/{ => arangodb}/3.10/aql/examples-and-query-patterns/grouping.md (100%) rename site/content/{ => arangodb}/3.10/aql/examples-and-query-patterns/joins.md (100%) rename site/content/{ => arangodb}/3.10/aql/examples-and-query-patterns/projections-and-filters.md (100%) rename site/content/{ => arangodb}/3.10/aql/examples-and-query-patterns/queries-without-collections.md (100%) rename site/content/{ => arangodb}/3.10/aql/examples-and-query-patterns/remove-vertex.md (96%) rename site/content/{ => arangodb}/3.10/aql/examples-and-query-patterns/traversals.md (98%) rename site/content/{ => arangodb}/3.10/aql/examples-and-query-patterns/upsert-repsert-guide.md (100%) rename site/content/{ => arangodb}/3.10/aql/execution-and-performance/_index.md (100%) rename site/content/{ => arangodb}/3.10/aql/execution-and-performance/caching-query-results.md (100%) rename site/content/{ => arangodb}/3.10/aql/execution-and-performance/explaining-queries.md (100%) rename site/content/{ => arangodb}/3.10/aql/execution-and-performance/parsing-queries.md (100%) rename site/content/{ => arangodb}/3.10/aql/execution-and-performance/query-optimization.md (100%) rename site/content/{ => arangodb}/3.10/aql/execution-and-performance/query-profiling.md (100%) rename site/content/{ => arangodb}/3.10/aql/execution-and-performance/query-statistics.md (100%) rename site/content/{ => arangodb}/3.10/aql/functions/_index.md (100%) rename site/content/{ => arangodb}/3.10/aql/functions/arangosearch.md (100%) rename site/content/{ => arangodb}/3.10/aql/functions/array.md (100%) rename site/content/{ => arangodb}/3.10/aql/functions/bit.md (100%) rename site/content/{ => arangodb}/3.10/aql/functions/date.md (100%) rename site/content/{ => arangodb}/3.10/aql/functions/document-object.md (100%) rename site/content/{ => arangodb}/3.10/aql/functions/fulltext.md (100%) rename site/content/{ => arangodb}/3.10/aql/functions/geo.md (99%) rename site/content/{ => arangodb}/3.10/aql/functions/miscellaneous.md (100%) rename site/content/{ => arangodb}/3.10/aql/functions/numeric.md (100%) rename site/content/{ => arangodb}/3.10/aql/functions/string.md (100%) rename site/content/{ => arangodb}/3.10/aql/functions/type-check-and-cast.md (100%) rename site/content/{ => arangodb}/3.10/aql/fundamentals/_index.md (100%) rename site/content/{ => arangodb}/3.10/aql/fundamentals/accessing-data-from-collections.md (100%) rename site/content/{ => arangodb}/3.10/aql/fundamentals/bind-parameters.md (100%) rename site/content/{ => arangodb}/3.10/aql/fundamentals/data-types.md (100%) rename site/content/{ => arangodb}/3.10/aql/fundamentals/limitations.md (100%) rename site/content/{ => arangodb}/3.10/aql/fundamentals/query-errors.md (100%) rename site/content/{ => arangodb}/3.10/aql/fundamentals/query-results.md (100%) rename site/content/{ => arangodb}/3.10/aql/fundamentals/subqueries.md (100%) rename site/content/{ => arangodb}/3.10/aql/fundamentals/syntax.md (100%) rename site/content/{ => arangodb}/3.10/aql/fundamentals/type-and-value-order.md (100%) rename site/content/{ => arangodb}/3.10/aql/graphs/_index.md (100%) rename site/content/{ => arangodb}/3.10/aql/graphs/all-shortest-paths.md (98%) rename site/content/{ => arangodb}/3.10/aql/graphs/k-paths.md (98%) rename site/content/{ => arangodb}/3.10/aql/graphs/k-shortest-paths.md (98%) rename site/content/{ => arangodb}/3.10/aql/graphs/shortest-path.md (98%) rename site/content/{ => arangodb}/3.10/aql/graphs/traversals-explained.md (83%) rename site/content/{ => arangodb}/3.10/aql/graphs/traversals.md (99%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/_index.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/collect.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/filter.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/for.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/insert.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/let.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/limit.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/remove.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/replace.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/return.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/search.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/sort.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/update.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/upsert.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/window.md (100%) rename site/content/{ => arangodb}/3.10/aql/high-level-operations/with.md (100%) rename site/content/{ => arangodb}/3.10/aql/how-to-invoke-aql/_index.md (100%) rename site/content/{ => arangodb}/3.10/aql/how-to-invoke-aql/with-arangosh.md (100%) rename site/content/{ => arangodb}/3.10/aql/how-to-invoke-aql/with-the-web-interface.md (100%) rename site/content/{ => arangodb}/3.10/aql/operators.md (100%) rename site/content/{ => arangodb}/3.10/aql/user-defined-functions.md (100%) rename site/content/{ => arangodb}/3.10/components/_index.md (100%) rename site/content/{ => arangodb}/3.10/components/arangodb-server/_index.md (88%) rename site/content/{ => arangodb}/3.10/components/arangodb-server/environment-variables.md (100%) rename site/content/{ => arangodb}/3.10/components/arangodb-server/ldap.md (100%) rename site/content/{ => arangodb}/3.10/components/arangodb-server/options.md (100%) rename site/content/{ => arangodb}/3.10/components/arangodb-server/storage-engine.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/_index.md (94%) rename site/content/{ => arangodb}/3.10/components/tools/arangobackup/_index.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangobackup/examples.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangobackup/options.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangobench/_index.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangobench/options.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangodb-shell/_index.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangodb-shell/details.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangodb-shell/examples.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangodb-shell/options.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangodb-starter/_index.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangodb-starter/architecture.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangodb-starter/options.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangodb-starter/security.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangodump/_index.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangodump/examples.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangodump/limitations.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangodump/maskings.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangodump/options.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangoexport/_index.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangoexport/examples.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangoexport/options.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangoimport/_index.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangoimport/details.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangoimport/examples-csv.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangoimport/examples-json.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangoimport/options.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangoinspect/_index.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangoinspect/examples.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangoinspect/options.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangorestore/_index.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangorestore/examples.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangorestore/fast-cluster-restore.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangorestore/options.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangovpack/_index.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/arangovpack/options.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/foxx-cli/_index.md (100%) rename site/content/{ => arangodb}/3.10/components/tools/foxx-cli/details.md (100%) rename site/content/{3.11 => arangodb/3.10}/components/web-interface/_index.md (90%) rename site/content/{ => arangodb}/3.10/components/web-interface/cluster.md (94%) rename site/content/{ => arangodb}/3.10/components/web-interface/collections.md (91%) rename site/content/{ => arangodb}/3.10/components/web-interface/dashboard.md (92%) rename site/content/{3.11 => arangodb/3.10}/components/web-interface/document.md (87%) rename site/content/{ => arangodb}/3.10/components/web-interface/graphs.md (95%) rename site/content/{3.11 => arangodb/3.10}/components/web-interface/logs.md (87%) rename site/content/{ => arangodb}/3.10/components/web-interface/queries.md (91%) rename site/content/{ => arangodb}/3.10/components/web-interface/services.md (87%) rename site/content/{3.11 => arangodb/3.10}/components/web-interface/users.md (90%) rename site/content/{ => arangodb}/3.10/concepts/_index.md (100%) rename site/content/{ => arangodb}/3.10/concepts/data-models.md (100%) rename site/content/{ => arangodb}/3.10/concepts/data-retrieval.md (100%) rename site/content/{ => arangodb}/3.10/concepts/data-structure/_index.md (100%) rename site/content/{ => arangodb}/3.10/concepts/data-structure/collections.md (100%) rename site/content/{ => arangodb}/3.10/concepts/data-structure/databases.md (100%) rename site/content/{ => arangodb}/3.10/concepts/data-structure/documents/_index.md (100%) rename site/content/{ => arangodb}/3.10/concepts/data-structure/documents/computed-values.md (100%) rename site/content/{ => arangodb}/3.10/concepts/data-structure/documents/schema-validation.md (100%) rename site/content/{ => arangodb}/3.10/concepts/data-structure/views.md (100%) rename site/content/{ => arangodb}/3.10/data-science/_index.md (95%) rename site/content/{ => arangodb}/3.10/data-science/adapters/_index.md (100%) rename site/content/{ => arangodb}/3.10/data-science/adapters/arangodb-cugraph-adapter.md (100%) rename site/content/{ => arangodb}/3.10/data-science/adapters/arangodb-dgl-adapter.md (100%) rename site/content/{ => arangodb}/3.10/data-science/adapters/arangodb-networkx-adapter.md (100%) rename site/content/{ => arangodb}/3.10/data-science/adapters/arangodb-pyg-adapter.md (100%) rename site/content/{ => arangodb}/3.10/data-science/adapters/arangodb-rdf-adapter.md (100%) create mode 100644 site/content/arangodb/3.10/data-science/arangograph-notebooks.md rename site/content/{ => arangodb}/3.10/data-science/arangographml/_index.md (97%) rename site/content/{ => arangodb}/3.10/data-science/arangographml/deploy.md (79%) rename site/content/{ => arangodb}/3.10/data-science/arangographml/getting-started.md (99%) rename site/content/{ => arangodb}/3.10/data-science/llm-knowledge-graphs.md (97%) rename site/content/{ => arangodb}/3.10/data-science/pregel/_index.md (100%) rename site/content/{ => arangodb}/3.10/data-science/pregel/algorithms.md (98%) rename site/content/{ => arangodb}/3.10/deploy/_index.md (98%) rename site/content/{ => arangodb}/3.10/deploy/active-failover/_index.md (98%) rename site/content/{ => arangodb}/3.10/deploy/active-failover/administration.md (100%) rename site/content/{ => arangodb}/3.10/deploy/active-failover/manual-start.md (100%) rename site/content/{ => arangodb}/3.10/deploy/active-failover/using-the-arangodb-starter.md (100%) rename site/content/{ => arangodb}/3.10/deploy/arangosync/_index.md (99%) rename site/content/{ => arangodb}/3.10/deploy/arangosync/administration.md (100%) rename site/content/{ => arangodb}/3.10/deploy/arangosync/deployment/_index.md (100%) rename site/content/{ => arangodb}/3.10/deploy/arangosync/deployment/arangodb-cluster.md (100%) rename site/content/{ => arangodb}/3.10/deploy/arangosync/deployment/arangosync-master.md (100%) rename site/content/{ => arangodb}/3.10/deploy/arangosync/deployment/arangosync-workers.md (100%) rename site/content/{ => arangodb}/3.10/deploy/arangosync/deployment/prometheus-and-grafana.md (100%) rename site/content/{ => arangodb}/3.10/deploy/arangosync/monitoring.md (100%) rename site/content/{ => arangodb}/3.10/deploy/arangosync/operations-and-maintenance.md (100%) rename site/content/{ => arangodb}/3.10/deploy/arangosync/security.md (100%) rename site/content/{ => arangodb}/3.10/deploy/arangosync/troubleshooting.md (100%) rename site/content/{ => arangodb}/3.10/deploy/architecture/_index.md (100%) rename site/content/{ => arangodb}/3.10/deploy/architecture/data-sharding.md (98%) rename site/content/{ => arangodb}/3.10/deploy/architecture/replication.md (100%) rename site/content/{ => arangodb}/3.10/deploy/architecture/scalability.md (100%) rename site/content/{ => arangodb}/3.10/deploy/cluster/_index.md (98%) rename site/content/{ => arangodb}/3.10/deploy/cluster/administration.md (100%) rename site/content/{ => arangodb}/3.10/deploy/cluster/deployment/_index.md (97%) rename site/content/{ => arangodb}/3.10/deploy/cluster/deployment/manual-start.md (100%) rename site/content/{ => arangodb}/3.10/deploy/cluster/deployment/using-the-arangodb-starter.md (100%) rename site/content/{ => arangodb}/3.10/deploy/cluster/limitations.md (100%) rename site/content/{ => arangodb}/3.10/deploy/in-the-cloud.md (100%) rename site/content/{ => arangodb}/3.10/deploy/kubernetes.md (100%) rename site/content/{3.11 => arangodb/3.10}/deploy/oneshard.md (99%) rename site/content/{ => arangodb}/3.10/deploy/production-checklist.md (100%) rename site/content/{ => arangodb}/3.10/deploy/single-instance-vs-cluster.md (100%) rename site/content/{ => arangodb}/3.10/deploy/single-instance/_index.md (100%) rename site/content/{ => arangodb}/3.10/deploy/single-instance/manual-start.md (100%) rename site/content/{ => arangodb}/3.10/deploy/single-instance/using-the-arangodb-starter.md (100%) rename site/content/{ => arangodb}/3.10/develop/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/drivers/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/drivers/csharp-dotnet.md (100%) rename site/content/{ => arangodb}/3.10/develop/drivers/go.md (100%) rename site/content/{ => arangodb}/3.10/develop/drivers/java/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/drivers/java/reference-version-6/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/drivers/java/reference-version-6/driver-setup.md (100%) rename site/content/{ => arangodb}/3.10/develop/drivers/java/reference-version-6/serialization.md (100%) rename site/content/{ => arangodb}/3.10/develop/drivers/java/reference-version-7/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/drivers/java/reference-version-7/changes-in-version-7.md (100%) rename site/content/{ => arangodb}/3.10/develop/drivers/java/reference-version-7/driver-setup.md (100%) rename site/content/{ => arangodb}/3.10/develop/drivers/java/reference-version-7/serialization.md (100%) rename site/content/{ => arangodb}/3.10/develop/drivers/nodejs.md (100%) rename site/content/{ => arangodb}/3.10/develop/drivers/python.md (100%) rename site/content/{ => arangodb}/3.10/develop/error-codes-and-meanings.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/deployment.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/getting-started.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/access-from-the-browser.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/authentication-and-sessions.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/development-mode.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/foxx-in-a-cluster.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/linking-services-together.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/making-requests.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/scripts-and-scheduling.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/testing-foxx-services.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/using-node-modules.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/using-webpack-with-foxx.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/working-with-collections.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/working-with-files.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/working-with-routers.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/guides/writing-queries.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/configuration.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/related-modules/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/related-modules/authentication.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/related-modules/graphql.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/related-modules/oauth-2-0.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/related-modules/queues.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/routers/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/routers/endpoints.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/routers/middleware.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/routers/request.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/routers/response.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/service-context.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/service-manifest.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/sessions-middleware/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md (100%) rename site/content/{ => arangodb}/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/_index.md (98%) rename site/content/{ => arangodb}/3.10/develop/http-api/administration.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/analyzers.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/authentication.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/batch-requests.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/cluster.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/collections.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/databases.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/documents.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/foxx.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/general-request-handling.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/graphs/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/graphs/edges.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/graphs/named-graphs.md (99%) rename site/content/{ => arangodb}/3.10/develop/http-api/hot-backups.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/import.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/indexes/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/indexes/fulltext.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/indexes/geo-spatial.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/indexes/inverted.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/indexes/multi-dimensional.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/indexes/persistent.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/indexes/ttl.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/jobs.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/monitoring/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/monitoring/logs.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/monitoring/metrics.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/monitoring/statistics.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/pregel.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/queries/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/queries/aql-queries.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/queries/aql-query-results-cache.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/queries/user-defined-aql-functions.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/replication/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/replication/other-replication-commands.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/replication/replication-applier.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/replication/replication-dump.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/replication/replication-logger.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/replication/write-ahead-log.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/security.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/tasks.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/transactions/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/transactions/javascript-transactions.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/transactions/stream-transactions.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/users.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/views/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/views/arangosearch-views.md (100%) rename site/content/{ => arangodb}/3.10/develop/http-api/views/search-alias-views.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/arangodb-datasource-for-apache-spark.md (99%) rename site/content/{ => arangodb}/3.10/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-boot-arangodb.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/migration.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-3/template.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md (100%) rename site/content/{ => arangodb}/3.10/develop/integrations/spring-data-arangodb/reference-version-4/template.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/@arangodb/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/@arangodb/collection-object.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/@arangodb/cursor-object.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/@arangodb/db-object.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/@arangodb/view-object.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/actions.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/analyzers.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/aql-queries.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/console.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/crypto.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/fs.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/request.md (100%) rename site/content/{ => arangodb}/3.10/develop/javascript-api/tasks.md (100%) rename site/content/{ => arangodb}/3.10/develop/operational-factors.md (100%) rename site/content/{ => arangodb}/3.10/develop/satellitecollections.md (100%) rename site/content/{ => arangodb}/3.10/develop/smartjoins.md (100%) rename site/content/{ => arangodb}/3.10/develop/transactions/_index.md (100%) rename site/content/{ => arangodb}/3.10/develop/transactions/durability.md (100%) rename site/content/{ => arangodb}/3.10/develop/transactions/javascript-transactions.md (100%) rename site/content/{ => arangodb}/3.10/develop/transactions/limitations.md (100%) rename site/content/{ => arangodb}/3.10/develop/transactions/locking-and-isolation.md (100%) rename site/content/{ => arangodb}/3.10/develop/transactions/stream-transactions.md (100%) rename site/content/{ => arangodb}/3.10/get-started/_index.md (100%) rename site/content/{ => arangodb}/3.10/get-started/how-to-interact-with-arangodb.md (100%) rename site/content/{ => arangodb}/3.10/get-started/on-premises-installation.md (94%) rename site/content/{ => arangodb}/3.10/get-started/set-up-a-cloud-instance.md (70%) rename site/content/{ => arangodb}/3.10/get-started/start-using-aql.md (100%) rename site/content/{ => arangodb}/3.10/graphs/_index.md (97%) rename site/content/{ => arangodb}/3.10/graphs/enterprisegraphs/_index.md (100%) rename site/content/{ => arangodb}/3.10/graphs/enterprisegraphs/getting-started.md (99%) rename site/content/{ => arangodb}/3.10/graphs/enterprisegraphs/management.md (100%) rename site/content/{3.11 => arangodb/3.10}/graphs/example-graphs.md (94%) rename site/content/{ => arangodb}/3.10/graphs/general-graphs/_index.md (98%) rename site/content/{3.11 => arangodb/3.10}/graphs/general-graphs/functions.md (99%) rename site/content/{ => arangodb}/3.10/graphs/general-graphs/management.md (100%) rename site/content/{ => arangodb}/3.10/graphs/satellitegraphs/_index.md (98%) rename site/content/{ => arangodb}/3.10/graphs/satellitegraphs/details.md (100%) rename site/content/{ => arangodb}/3.10/graphs/satellitegraphs/management.md (100%) rename site/content/{ => arangodb}/3.10/graphs/smartgraphs/_index.md (94%) rename site/content/{ => arangodb}/3.10/graphs/smartgraphs/getting-started.md (99%) rename site/content/{ => arangodb}/3.10/graphs/smartgraphs/management.md (100%) rename site/content/{ => arangodb}/3.10/graphs/smartgraphs/testing-graphs-on-single-server.md (100%) rename site/content/{ => arangodb}/3.10/graphs/working-with-edges.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/_index.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/analyzers.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/_index.md (99%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/arangosearch-views-reference.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/case-sensitivity-and-diacritics.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/exact-value-matching.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/example-datasets.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/faceted-search.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/full-text-token-search.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/fuzzy-search.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/geospatial-search.md (99%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/nested-search.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/performance.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/phrase-and-proximity-search.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/prefix-matching.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/range-queries.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/ranking.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/search-alias-views-reference.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/search-highlighting.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/arangosearch/wildcard-search.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/indexing/_index.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/indexing/basics.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/indexing/index-utilization.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/indexing/which-index-to-use-when.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/indexing/working-with-indexes/_index.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/indexing/working-with-indexes/fulltext-indexes.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/indexing/working-with-indexes/inverted-indexes.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/indexing/working-with-indexes/persistent-indexes.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/indexing/working-with-indexes/ttl-indexes.md (100%) rename site/content/{ => arangodb}/3.10/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md (100%) rename site/content/{ => arangodb}/3.10/operations/_index.md (100%) rename site/content/{ => arangodb}/3.10/operations/administration/_index.md (100%) rename site/content/{ => arangodb}/3.10/operations/administration/arangodb-starter/_index.md (100%) rename site/content/{ => arangodb}/3.10/operations/administration/arangodb-starter/recovery-procedure.md (100%) rename site/content/{ => arangodb}/3.10/operations/administration/arangodb-starter/removal-procedure.md (100%) rename site/content/{ => arangodb}/3.10/operations/administration/configuration.md (100%) rename site/content/{ => arangodb}/3.10/operations/administration/import-and-export.md (100%) rename site/content/{ => arangodb}/3.10/operations/administration/license-management.md (100%) rename site/content/{ => arangodb}/3.10/operations/administration/log-levels.md (100%) rename site/content/{ => arangodb}/3.10/operations/administration/reduce-memory-footprint.md (99%) rename site/content/{ => arangodb}/3.10/operations/administration/user-management/_index.md (100%) rename site/content/{ => arangodb}/3.10/operations/administration/user-management/in-arangosh.md (100%) rename site/content/{ => arangodb}/3.10/operations/backup-and-restore.md (100%) rename site/content/{ => arangodb}/3.10/operations/installation/_index.md (97%) rename site/content/{ => arangodb}/3.10/operations/installation/compiling/_index.md (100%) rename site/content/{ => arangodb}/3.10/operations/installation/compiling/compile-on-debian.md (100%) rename site/content/{ => arangodb}/3.10/operations/installation/compiling/compile-on-windows.md (99%) rename site/content/{ => arangodb}/3.10/operations/installation/compiling/recompiling-jemalloc.md (100%) rename site/content/{ => arangodb}/3.10/operations/installation/compiling/running-custom-build.md (100%) rename site/content/{ => arangodb}/3.10/operations/installation/docker.md (100%) rename site/content/{ => arangodb}/3.10/operations/installation/linux/_index.md (100%) rename site/content/{ => arangodb}/3.10/operations/installation/linux/linux-os-tuning-script-examples.md (100%) rename site/content/{ => arangodb}/3.10/operations/installation/linux/operating-system-configuration.md (100%) rename site/content/{ => arangodb}/3.10/operations/installation/macos.md (100%) rename site/content/{ => arangodb}/3.10/operations/installation/uninstallation.md (100%) rename site/content/{ => arangodb}/3.10/operations/installation/windows.md (100%) rename site/content/{ => arangodb}/3.10/operations/security/_index.md (100%) rename site/content/{ => arangodb}/3.10/operations/security/audit-logging.md (98%) rename site/content/{ => arangodb}/3.10/operations/security/change-root-password.md (100%) rename site/content/{ => arangodb}/3.10/operations/security/encryption-at-rest.md (97%) rename site/content/{ => arangodb}/3.10/operations/security/securing-starter-deployments.md (100%) rename site/content/{ => arangodb}/3.10/operations/security/security-options.md (100%) rename site/content/{ => arangodb}/3.10/operations/troubleshooting/_index.md (100%) rename site/content/{ => arangodb}/3.10/operations/troubleshooting/arangod.md (100%) rename site/content/{ => arangodb}/3.10/operations/troubleshooting/cluster/_index.md (100%) rename site/content/{ => arangodb}/3.10/operations/troubleshooting/cluster/agency-dump.md (100%) rename site/content/{ => arangodb}/3.10/operations/troubleshooting/emergency-console.md (100%) rename site/content/{ => arangodb}/3.10/operations/troubleshooting/query-debug-packages.md (100%) rename site/content/{ => arangodb}/3.10/operations/upgrading/_index.md (100%) rename site/content/{ => arangodb}/3.10/operations/upgrading/community-to-enterprise-upgrade.md (100%) rename site/content/{ => arangodb}/3.10/operations/upgrading/downgrading.md (100%) rename site/content/{ => arangodb}/3.10/operations/upgrading/manual-deployments/_index.md (100%) rename site/content/{ => arangodb}/3.10/operations/upgrading/manual-deployments/active-failover.md (100%) rename site/content/{ => arangodb}/3.10/operations/upgrading/manual-deployments/cluster.md (100%) rename site/content/{ => arangodb}/3.10/operations/upgrading/os-specific-information/_index.md (100%) rename site/content/{ => arangodb}/3.10/operations/upgrading/os-specific-information/linux.md (100%) rename site/content/{ => arangodb}/3.10/operations/upgrading/os-specific-information/macos.md (95%) rename site/content/{ => arangodb}/3.10/operations/upgrading/os-specific-information/windows.md (96%) rename site/content/{ => arangodb}/3.10/operations/upgrading/starter-deployments.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/_index.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/deprecated-and-removed-features.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.0/_index.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.0/incompatible-changes-in-3-0.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.0/whats-new-in-3-0.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.1/_index.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.1/incompatible-changes-in-3-1.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.1/whats-new-in-3-1.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.10/_index.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.10/api-changes-in-3-10.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.10/incompatible-changes-in-3-10.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.10/known-issues-in-3-10.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.10/whats-new-in-3-10.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.2/_index.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.2/incompatible-changes-in-3-2.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.2/known-issues-in-3-2.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.2/whats-new-in-3-2.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.3/_index.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.3/incompatible-changes-in-3-3.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.3/known-issues-in-3-3.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.3/whats-new-in-3-3.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.4/_index.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.4/incompatible-changes-in-3-4.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.4/known-issues-in-3-4.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.4/whats-new-in-3-4.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.5/_index.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.5/incompatible-changes-in-3-5.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.5/known-issues-in-3-5.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.5/whats-new-in-3-5.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.6/_index.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.6/incompatible-changes-in-3-6.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.6/known-issues-in-3-6.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.6/whats-new-in-3-6.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.7/_index.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.7/api-changes-in-3-7.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.7/incompatible-changes-in-3-7.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.7/known-issues-in-3-7.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.7/whats-new-in-3-7.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.8/_index.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.8/api-changes-in-3-8.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.8/incompatible-changes-in-3-8.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.8/known-issues-in-3-8.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.8/whats-new-in-3-8.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.9/_index.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.9/api-changes-in-3-9.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.9/incompatible-changes-in-3-9.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.9/known-issues-in-3-9.md (100%) rename site/content/{ => arangodb}/3.10/release-notes/version-3.9/whats-new-in-3-9.md (100%) rename site/content/{ => arangodb}/3.11/_index.md (88%) rename site/content/{3.10/about-arangodb => arangodb/3.11/about}/_index.md (82%) rename site/content/{3.11/about-arangodb => arangodb/3.11/about}/features/_index.md (98%) rename site/content/{3.11/about-arangodb => arangodb/3.11/about}/features/community-edition.md (100%) rename site/content/{3.10/about-arangodb => arangodb/3.11/about}/features/enterprise-edition.md (100%) rename site/content/{3.11/about-arangodb => arangodb/3.11/about}/features/highlights-by-version.md (100%) rename site/content/{3.10/about-arangodb => arangodb/3.11/about}/use-cases.md (77%) rename site/content/{ => arangodb}/3.11/aql/_index.md (100%) rename site/content/{ => arangodb}/3.11/aql/common-errors.md (100%) rename site/content/{ => arangodb}/3.11/aql/data-queries.md (100%) rename site/content/{ => arangodb}/3.11/aql/examples-and-query-patterns/_index.md (100%) rename site/content/{ => arangodb}/3.11/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md (100%) rename site/content/{ => arangodb}/3.11/aql/examples-and-query-patterns/counting.md (100%) rename site/content/{ => arangodb}/3.11/aql/examples-and-query-patterns/create-test-data.md (100%) rename site/content/{ => arangodb}/3.11/aql/examples-and-query-patterns/diffing-two-documents.md (100%) rename site/content/{ => arangodb}/3.11/aql/examples-and-query-patterns/dynamic-attribute-names.md (100%) rename site/content/{ => arangodb}/3.11/aql/examples-and-query-patterns/grouping.md (100%) rename site/content/{ => arangodb}/3.11/aql/examples-and-query-patterns/joins.md (100%) rename site/content/{ => arangodb}/3.11/aql/examples-and-query-patterns/projections-and-filters.md (100%) rename site/content/{ => arangodb}/3.11/aql/examples-and-query-patterns/queries-without-collections.md (100%) rename site/content/{ => arangodb}/3.11/aql/examples-and-query-patterns/remove-vertex.md (96%) rename site/content/{ => arangodb}/3.11/aql/examples-and-query-patterns/traversals.md (98%) rename site/content/{ => arangodb}/3.11/aql/examples-and-query-patterns/upsert-repsert-guide.md (100%) rename site/content/{ => arangodb}/3.11/aql/execution-and-performance/_index.md (100%) rename site/content/{ => arangodb}/3.11/aql/execution-and-performance/caching-query-results.md (100%) rename site/content/{ => arangodb}/3.11/aql/execution-and-performance/explaining-queries.md (100%) rename site/content/{ => arangodb}/3.11/aql/execution-and-performance/parsing-queries.md (100%) rename site/content/{ => arangodb}/3.11/aql/execution-and-performance/query-optimization.md (100%) rename site/content/{ => arangodb}/3.11/aql/execution-and-performance/query-profiling.md (100%) rename site/content/{ => arangodb}/3.11/aql/execution-and-performance/query-statistics.md (100%) rename site/content/{ => arangodb}/3.11/aql/functions/_index.md (100%) rename site/content/{ => arangodb}/3.11/aql/functions/arangosearch.md (100%) rename site/content/{ => arangodb}/3.11/aql/functions/array.md (100%) rename site/content/{ => arangodb}/3.11/aql/functions/bit.md (100%) rename site/content/{ => arangodb}/3.11/aql/functions/date.md (100%) rename site/content/{ => arangodb}/3.11/aql/functions/document-object.md (100%) rename site/content/{ => arangodb}/3.11/aql/functions/fulltext.md (100%) rename site/content/{3.12 => arangodb/3.11}/aql/functions/geo.md (99%) rename site/content/{ => arangodb}/3.11/aql/functions/miscellaneous.md (100%) rename site/content/{ => arangodb}/3.11/aql/functions/numeric.md (100%) rename site/content/{ => arangodb}/3.11/aql/functions/string.md (100%) rename site/content/{ => arangodb}/3.11/aql/functions/type-check-and-cast.md (100%) rename site/content/{ => arangodb}/3.11/aql/fundamentals/_index.md (100%) rename site/content/{ => arangodb}/3.11/aql/fundamentals/accessing-data-from-collections.md (100%) rename site/content/{ => arangodb}/3.11/aql/fundamentals/bind-parameters.md (100%) rename site/content/{ => arangodb}/3.11/aql/fundamentals/data-types.md (100%) rename site/content/{ => arangodb}/3.11/aql/fundamentals/limitations.md (100%) rename site/content/{ => arangodb}/3.11/aql/fundamentals/query-errors.md (100%) rename site/content/{ => arangodb}/3.11/aql/fundamentals/query-results.md (100%) rename site/content/{ => arangodb}/3.11/aql/fundamentals/subqueries.md (100%) rename site/content/{ => arangodb}/3.11/aql/fundamentals/syntax.md (100%) rename site/content/{ => arangodb}/3.11/aql/fundamentals/type-and-value-order.md (100%) rename site/content/{ => arangodb}/3.11/aql/graphs/_index.md (100%) rename site/content/{ => arangodb}/3.11/aql/graphs/all-shortest-paths.md (98%) rename site/content/{ => arangodb}/3.11/aql/graphs/k-paths.md (98%) rename site/content/{ => arangodb}/3.11/aql/graphs/k-shortest-paths.md (98%) rename site/content/{ => arangodb}/3.11/aql/graphs/shortest-path.md (98%) rename site/content/{ => arangodb}/3.11/aql/graphs/traversals-explained.md (83%) rename site/content/{ => arangodb}/3.11/aql/graphs/traversals.md (99%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/_index.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/collect.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/filter.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/for.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/insert.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/let.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/limit.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/remove.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/replace.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/return.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/search.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/sort.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/update.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/upsert.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/window.md (100%) rename site/content/{ => arangodb}/3.11/aql/high-level-operations/with.md (100%) rename site/content/{ => arangodb}/3.11/aql/how-to-invoke-aql/_index.md (100%) rename site/content/{ => arangodb}/3.11/aql/how-to-invoke-aql/with-arangosh.md (100%) rename site/content/{ => arangodb}/3.11/aql/how-to-invoke-aql/with-the-web-interface.md (100%) rename site/content/{ => arangodb}/3.11/aql/operators.md (100%) rename site/content/{ => arangodb}/3.11/aql/user-defined-functions.md (100%) rename site/content/{ => arangodb}/3.11/components/_index.md (100%) rename site/content/{ => arangodb}/3.11/components/arangodb-server/_index.md (88%) rename site/content/{ => arangodb}/3.11/components/arangodb-server/environment-variables.md (100%) rename site/content/{ => arangodb}/3.11/components/arangodb-server/ldap.md (100%) rename site/content/{ => arangodb}/3.11/components/arangodb-server/options.md (100%) rename site/content/{ => arangodb}/3.11/components/arangodb-server/storage-engine.md (100%) rename site/content/{3.12 => arangodb/3.11}/components/tools/_index.md (94%) rename site/content/{ => arangodb}/3.11/components/tools/arango-datasets.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangobackup/_index.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangobackup/examples.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangobackup/options.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangobench/_index.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangobench/options.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangodb-shell/_index.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangodb-shell/details.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangodb-shell/examples.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangodb-shell/options.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangodb-starter/_index.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangodb-starter/architecture.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangodb-starter/options.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangodb-starter/security.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangodump/_index.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangodump/examples.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangodump/limitations.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangodump/maskings.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangodump/options.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangoexport/_index.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangoexport/examples.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangoexport/options.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangoimport/_index.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangoimport/details.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangoimport/examples-csv.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangoimport/examples-json.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangoimport/options.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangoinspect/_index.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangoinspect/examples.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangoinspect/options.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangorestore/_index.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangorestore/examples.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangorestore/options.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangovpack/_index.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/arangovpack/options.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/foxx-cli/_index.md (100%) rename site/content/{ => arangodb}/3.11/components/tools/foxx-cli/details.md (100%) rename site/content/{3.10 => arangodb/3.11}/components/web-interface/_index.md (90%) rename site/content/{ => arangodb}/3.11/components/web-interface/cluster.md (94%) rename site/content/{ => arangodb}/3.11/components/web-interface/collections.md (91%) rename site/content/{ => arangodb}/3.11/components/web-interface/dashboard.md (92%) rename site/content/{3.10 => arangodb/3.11}/components/web-interface/document.md (87%) rename site/content/{ => arangodb}/3.11/components/web-interface/graphs.md (98%) rename site/content/{3.10 => arangodb/3.11}/components/web-interface/logs.md (87%) rename site/content/{ => arangodb}/3.11/components/web-interface/queries.md (91%) rename site/content/{ => arangodb}/3.11/components/web-interface/services.md (87%) rename site/content/{3.10 => arangodb/3.11}/components/web-interface/users.md (90%) rename site/content/{ => arangodb}/3.11/concepts/_index.md (100%) rename site/content/{ => arangodb}/3.11/concepts/data-models.md (100%) rename site/content/{ => arangodb}/3.11/concepts/data-retrieval.md (100%) rename site/content/{ => arangodb}/3.11/concepts/data-structure/_index.md (100%) rename site/content/{ => arangodb}/3.11/concepts/data-structure/collections.md (100%) rename site/content/{ => arangodb}/3.11/concepts/data-structure/databases.md (100%) rename site/content/{ => arangodb}/3.11/concepts/data-structure/documents/_index.md (100%) rename site/content/{ => arangodb}/3.11/concepts/data-structure/documents/computed-values.md (100%) rename site/content/{ => arangodb}/3.11/concepts/data-structure/documents/schema-validation.md (100%) rename site/content/{ => arangodb}/3.11/concepts/data-structure/views.md (100%) rename site/content/{ => arangodb}/3.11/data-science/_index.md (94%) rename site/content/{ => arangodb}/3.11/data-science/adapters/_index.md (100%) rename site/content/{ => arangodb}/3.11/data-science/adapters/arangodb-cugraph-adapter.md (100%) rename site/content/{ => arangodb}/3.11/data-science/adapters/arangodb-dgl-adapter.md (100%) rename site/content/{ => arangodb}/3.11/data-science/adapters/arangodb-networkx-adapter.md (100%) rename site/content/{ => arangodb}/3.11/data-science/adapters/arangodb-pyg-adapter.md (100%) rename site/content/{ => arangodb}/3.11/data-science/adapters/arangodb-rdf-adapter.md (100%) create mode 100644 site/content/arangodb/3.11/data-science/arangograph-notebooks.md rename site/content/{ => arangodb}/3.11/data-science/arangographml/_index.md (98%) rename site/content/{ => arangodb}/3.11/data-science/arangographml/deploy.md (94%) rename site/content/{ => arangodb}/3.11/data-science/arangographml/getting-started.md (99%) rename site/content/{ => arangodb}/3.11/data-science/graph-analytics.md (98%) rename site/content/{ => arangodb}/3.11/data-science/llm-knowledge-graphs.md (97%) rename site/content/{ => arangodb}/3.11/data-science/pregel/_index.md (100%) rename site/content/{ => arangodb}/3.11/data-science/pregel/algorithms.md (98%) rename site/content/{ => arangodb}/3.11/deploy/_index.md (97%) rename site/content/{ => arangodb}/3.11/deploy/active-failover/_index.md (99%) rename site/content/{ => arangodb}/3.11/deploy/active-failover/administration.md (100%) rename site/content/{ => arangodb}/3.11/deploy/active-failover/manual-start.md (100%) rename site/content/{ => arangodb}/3.11/deploy/active-failover/using-the-arangodb-starter.md (100%) rename site/content/{ => arangodb}/3.11/deploy/arangosync/_index.md (99%) rename site/content/{ => arangodb}/3.11/deploy/arangosync/administration.md (100%) rename site/content/{ => arangodb}/3.11/deploy/arangosync/deployment/_index.md (100%) rename site/content/{ => arangodb}/3.11/deploy/arangosync/deployment/arangodb-cluster.md (100%) rename site/content/{ => arangodb}/3.11/deploy/arangosync/deployment/arangosync-master.md (100%) rename site/content/{ => arangodb}/3.11/deploy/arangosync/deployment/arangosync-workers.md (100%) rename site/content/{ => arangodb}/3.11/deploy/arangosync/deployment/prometheus-and-grafana.md (100%) rename site/content/{ => arangodb}/3.11/deploy/arangosync/monitoring.md (100%) rename site/content/{ => arangodb}/3.11/deploy/arangosync/operations-and-maintenance.md (100%) rename site/content/{ => arangodb}/3.11/deploy/arangosync/security.md (100%) rename site/content/{ => arangodb}/3.11/deploy/arangosync/troubleshooting.md (100%) rename site/content/{ => arangodb}/3.11/deploy/architecture/_index.md (100%) rename site/content/{ => arangodb}/3.11/deploy/architecture/data-sharding.md (98%) rename site/content/{ => arangodb}/3.11/deploy/architecture/replication.md (100%) rename site/content/{ => arangodb}/3.11/deploy/architecture/scalability.md (100%) rename site/content/{ => arangodb}/3.11/deploy/cluster/_index.md (98%) rename site/content/{ => arangodb}/3.11/deploy/cluster/administration.md (100%) rename site/content/{ => arangodb}/3.11/deploy/cluster/deployment/_index.md (97%) rename site/content/{ => arangodb}/3.11/deploy/cluster/deployment/manual-start.md (100%) rename site/content/{ => arangodb}/3.11/deploy/cluster/deployment/using-the-arangodb-starter.md (100%) rename site/content/{ => arangodb}/3.11/deploy/cluster/limitations.md (100%) rename site/content/{ => arangodb}/3.11/deploy/in-the-cloud.md (100%) rename site/content/{ => arangodb}/3.11/deploy/kubernetes.md (100%) rename site/content/{3.10 => arangodb/3.11}/deploy/oneshard.md (99%) rename site/content/{ => arangodb}/3.11/deploy/production-checklist.md (100%) rename site/content/{ => arangodb}/3.11/deploy/single-instance-vs-cluster.md (100%) rename site/content/{ => arangodb}/3.11/deploy/single-instance/_index.md (100%) rename site/content/{ => arangodb}/3.11/deploy/single-instance/manual-start.md (100%) rename site/content/{ => arangodb}/3.11/deploy/single-instance/using-the-arangodb-starter.md (100%) rename site/content/{ => arangodb}/3.11/develop/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/drivers/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/drivers/go.md (100%) rename site/content/{ => arangodb}/3.11/develop/drivers/java/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/drivers/java/reference-version-6/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/drivers/java/reference-version-6/driver-setup.md (100%) rename site/content/{ => arangodb}/3.11/develop/drivers/java/reference-version-6/serialization.md (100%) rename site/content/{ => arangodb}/3.11/develop/drivers/java/reference-version-7/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/drivers/java/reference-version-7/changes-in-version-7.md (100%) rename site/content/{ => arangodb}/3.11/develop/drivers/java/reference-version-7/driver-setup.md (100%) rename site/content/{ => arangodb}/3.11/develop/drivers/java/reference-version-7/serialization.md (100%) rename site/content/{ => arangodb}/3.11/develop/drivers/javascript.md (100%) rename site/content/{ => arangodb}/3.11/develop/drivers/python.md (100%) rename site/content/{ => arangodb}/3.11/develop/error-codes.md (100%) rename site/content/{ => arangodb}/3.11/develop/exit-codes.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/deployment.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/getting-started.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/access-from-the-browser.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/authentication-and-sessions.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/development-mode.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/foxx-in-a-cluster.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/linking-services-together.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/making-requests.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/scripts-and-scheduling.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/testing-foxx-services.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/using-node-modules.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/using-webpack-with-foxx.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/working-with-collections.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/working-with-files.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/working-with-routers.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/guides/writing-queries.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/configuration.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/related-modules/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/related-modules/authentication.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/related-modules/graphql.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/related-modules/oauth-2-0.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/related-modules/queues.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/routers/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/routers/endpoints.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/routers/middleware.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/routers/request.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/routers/response.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/service-context.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/service-manifest.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/sessions-middleware/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md (100%) rename site/content/{ => arangodb}/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/_index.md (98%) rename site/content/{ => arangodb}/3.11/develop/http-api/administration.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/analyzers.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/authentication.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/batch-requests.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/cluster.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/collections.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/databases.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/documents.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/foxx.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/general-request-handling.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/graphs/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/graphs/edges.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/graphs/named-graphs.md (99%) rename site/content/{ => arangodb}/3.11/develop/http-api/hot-backups.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/import.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/indexes/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/indexes/fulltext.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/indexes/geo-spatial.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/indexes/inverted.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/indexes/multi-dimensional.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/indexes/persistent.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/indexes/ttl.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/jobs.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/monitoring/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/monitoring/logs.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/monitoring/metrics.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/monitoring/statistics.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/pregel.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/queries/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/queries/aql-queries.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/queries/aql-query-results-cache.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/queries/user-defined-aql-functions.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/replication/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/replication/other-replication-commands.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/replication/replication-applier.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/replication/replication-dump.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/replication/replication-logger.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/replication/write-ahead-log.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/security.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/tasks.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/transactions/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/transactions/javascript-transactions.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/transactions/stream-transactions.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/users.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/views/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/views/arangosearch-views.md (100%) rename site/content/{ => arangodb}/3.11/develop/http-api/views/search-alias-views.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/arangodb-datasource-for-apache-spark.md (99%) rename site/content/{ => arangodb}/3.11/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-boot-arangodb.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/migration.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-3/template.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md (100%) rename site/content/{ => arangodb}/3.11/develop/integrations/spring-data-arangodb/reference-version-4/template.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/@arangodb/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/@arangodb/collection-object.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/@arangodb/cursor-object.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/@arangodb/db-object.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/@arangodb/view-object.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/actions.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/analyzers.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/aql-queries.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/console.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/crypto.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/fs.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/request.md (100%) rename site/content/{ => arangodb}/3.11/develop/javascript-api/tasks.md (100%) rename site/content/{ => arangodb}/3.11/develop/operational-factors.md (100%) rename site/content/{ => arangodb}/3.11/develop/satellitecollections.md (100%) rename site/content/{ => arangodb}/3.11/develop/smartjoins.md (100%) rename site/content/{ => arangodb}/3.11/develop/transactions/_index.md (100%) rename site/content/{ => arangodb}/3.11/develop/transactions/durability.md (100%) rename site/content/{ => arangodb}/3.11/develop/transactions/javascript-transactions.md (100%) rename site/content/{ => arangodb}/3.11/develop/transactions/limitations.md (100%) rename site/content/{ => arangodb}/3.11/develop/transactions/locking-and-isolation.md (100%) rename site/content/{ => arangodb}/3.11/develop/transactions/stream-transactions.md (100%) rename site/content/{ => arangodb}/3.11/get-started/_index.md (100%) rename site/content/{ => arangodb}/3.11/get-started/how-to-interact-with-arangodb.md (100%) rename site/content/{ => arangodb}/3.11/get-started/on-premises-installation.md (94%) rename site/content/{ => arangodb}/3.11/get-started/set-up-a-cloud-instance.md (71%) rename site/content/{ => arangodb}/3.11/get-started/start-using-aql/_index.md (100%) rename site/content/{ => arangodb}/3.11/get-started/start-using-aql/crud.md (100%) rename site/content/{ => arangodb}/3.11/get-started/start-using-aql/dataset.md (100%) rename site/content/{ => arangodb}/3.11/get-started/start-using-aql/filter.md (100%) rename site/content/{ => arangodb}/3.11/get-started/start-using-aql/geo.md (100%) rename site/content/{ => arangodb}/3.11/get-started/start-using-aql/graphs.md (98%) rename site/content/{ => arangodb}/3.11/get-started/start-using-aql/joins.md (100%) rename site/content/{ => arangodb}/3.11/get-started/start-using-aql/sort-limit.md (100%) rename site/content/{ => arangodb}/3.11/graphs/_index.md (97%) rename site/content/{ => arangodb}/3.11/graphs/enterprisegraphs/_index.md (100%) rename site/content/{ => arangodb}/3.11/graphs/enterprisegraphs/getting-started.md (99%) rename site/content/{ => arangodb}/3.11/graphs/enterprisegraphs/management.md (100%) rename site/content/{3.10 => arangodb/3.11}/graphs/example-graphs.md (94%) rename site/content/{ => arangodb}/3.11/graphs/general-graphs/_index.md (98%) rename site/content/{3.10 => arangodb/3.11}/graphs/general-graphs/functions.md (99%) rename site/content/{ => arangodb}/3.11/graphs/general-graphs/management.md (100%) rename site/content/{ => arangodb}/3.11/graphs/satellitegraphs/_index.md (98%) rename site/content/{ => arangodb}/3.11/graphs/satellitegraphs/details.md (100%) rename site/content/{ => arangodb}/3.11/graphs/satellitegraphs/management.md (100%) rename site/content/{ => arangodb}/3.11/graphs/smartgraphs/_index.md (94%) rename site/content/{ => arangodb}/3.11/graphs/smartgraphs/getting-started.md (99%) rename site/content/{ => arangodb}/3.11/graphs/smartgraphs/management.md (100%) rename site/content/{ => arangodb}/3.11/graphs/smartgraphs/testing-graphs-on-single-server.md (100%) rename site/content/{ => arangodb}/3.11/graphs/working-with-edges.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/_index.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/analyzers.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/_index.md (99%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/arangosearch-views-reference.md (99%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/case-sensitivity-and-diacritics.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/exact-value-matching.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/example-datasets.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/faceted-search.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/full-text-token-search.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/fuzzy-search.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/geospatial-search.md (99%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/nested-search.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/performance.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/phrase-and-proximity-search.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/prefix-matching.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/range-queries.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/ranking.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/search-alias-views-reference.md (97%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/search-highlighting.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/arangosearch/wildcard-search.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/indexing/_index.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/indexing/basics.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/indexing/index-utilization.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/indexing/which-index-to-use-when.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/indexing/working-with-indexes/_index.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/indexing/working-with-indexes/fulltext-indexes.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/indexing/working-with-indexes/inverted-indexes.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/indexing/working-with-indexes/persistent-indexes.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/indexing/working-with-indexes/ttl-indexes.md (100%) rename site/content/{ => arangodb}/3.11/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md (100%) rename site/content/{ => arangodb}/3.11/operations/_index.md (100%) rename site/content/{ => arangodb}/3.11/operations/administration/_index.md (100%) rename site/content/{ => arangodb}/3.11/operations/administration/arangodb-starter/_index.md (100%) rename site/content/{ => arangodb}/3.11/operations/administration/arangodb-starter/recovery-procedure.md (100%) rename site/content/{ => arangodb}/3.11/operations/administration/arangodb-starter/removal-procedure.md (100%) rename site/content/{ => arangodb}/3.11/operations/administration/configuration.md (100%) rename site/content/{ => arangodb}/3.11/operations/administration/import-and-export.md (100%) rename site/content/{ => arangodb}/3.11/operations/administration/license-management.md (100%) rename site/content/{ => arangodb}/3.11/operations/administration/log-levels.md (100%) rename site/content/{ => arangodb}/3.11/operations/administration/reduce-memory-footprint.md (99%) rename site/content/{ => arangodb}/3.11/operations/administration/telemetrics.md (100%) rename site/content/{ => arangodb}/3.11/operations/administration/user-management/_index.md (100%) rename site/content/{ => arangodb}/3.11/operations/administration/user-management/in-arangosh.md (100%) rename site/content/{ => arangodb}/3.11/operations/backup-and-restore.md (100%) rename site/content/{ => arangodb}/3.11/operations/installation/_index.md (97%) rename site/content/{ => arangodb}/3.11/operations/installation/compiling/_index.md (100%) rename site/content/{ => arangodb}/3.11/operations/installation/compiling/compile-on-debian.md (100%) rename site/content/{ => arangodb}/3.11/operations/installation/compiling/compile-on-windows.md (99%) rename site/content/{ => arangodb}/3.11/operations/installation/compiling/recompiling-jemalloc.md (100%) rename site/content/{ => arangodb}/3.11/operations/installation/compiling/running-custom-build.md (100%) rename site/content/{ => arangodb}/3.11/operations/installation/docker.md (100%) rename site/content/{ => arangodb}/3.11/operations/installation/linux/_index.md (100%) rename site/content/{ => arangodb}/3.11/operations/installation/linux/linux-os-tuning-script-examples.md (100%) rename site/content/{ => arangodb}/3.11/operations/installation/linux/operating-system-configuration.md (100%) rename site/content/{ => arangodb}/3.11/operations/installation/macos.md (100%) rename site/content/{ => arangodb}/3.11/operations/installation/uninstallation.md (100%) rename site/content/{ => arangodb}/3.11/operations/installation/windows.md (100%) rename site/content/{ => arangodb}/3.11/operations/security/_index.md (100%) rename site/content/{ => arangodb}/3.11/operations/security/audit-logging.md (98%) rename site/content/{ => arangodb}/3.11/operations/security/change-root-password.md (100%) rename site/content/{ => arangodb}/3.11/operations/security/encryption-at-rest.md (97%) rename site/content/{ => arangodb}/3.11/operations/security/securing-starter-deployments.md (100%) rename site/content/{ => arangodb}/3.11/operations/security/security-options.md (100%) rename site/content/{ => arangodb}/3.11/operations/troubleshooting/_index.md (100%) rename site/content/{ => arangodb}/3.11/operations/troubleshooting/arangod.md (100%) rename site/content/{ => arangodb}/3.11/operations/troubleshooting/cluster/_index.md (100%) rename site/content/{ => arangodb}/3.11/operations/troubleshooting/cluster/agency-dump.md (100%) rename site/content/{ => arangodb}/3.11/operations/troubleshooting/emergency-console.md (100%) rename site/content/{ => arangodb}/3.11/operations/troubleshooting/query-debug-packages.md (100%) rename site/content/{ => arangodb}/3.11/operations/upgrading/_index.md (100%) rename site/content/{ => arangodb}/3.11/operations/upgrading/community-to-enterprise-upgrade.md (100%) rename site/content/{ => arangodb}/3.11/operations/upgrading/downgrading.md (100%) rename site/content/{ => arangodb}/3.11/operations/upgrading/manual-deployments/_index.md (100%) rename site/content/{ => arangodb}/3.11/operations/upgrading/manual-deployments/active-failover.md (100%) rename site/content/{ => arangodb}/3.11/operations/upgrading/manual-deployments/cluster.md (100%) rename site/content/{ => arangodb}/3.11/operations/upgrading/os-specific-information/_index.md (100%) rename site/content/{ => arangodb}/3.11/operations/upgrading/os-specific-information/linux.md (100%) rename site/content/{ => arangodb}/3.11/operations/upgrading/os-specific-information/macos.md (95%) rename site/content/{ => arangodb}/3.11/operations/upgrading/os-specific-information/windows.md (96%) rename site/content/{ => arangodb}/3.11/operations/upgrading/starter-deployments.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/_index.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/deprecated-and-removed-features.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.0/_index.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.0/incompatible-changes-in-3-0.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.0/whats-new-in-3-0.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.1/_index.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.1/incompatible-changes-in-3-1.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.1/whats-new-in-3-1.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.10/_index.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.10/api-changes-in-3-10.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.10/incompatible-changes-in-3-10.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.10/known-issues-in-3-10.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.10/whats-new-in-3-10.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.11/_index.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.11/api-changes-in-3-11.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.11/incompatible-changes-in-3-11.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.11/known-issues-in-3-11.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.11/whats-new-in-3-11.md (99%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.2/_index.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.2/incompatible-changes-in-3-2.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.2/known-issues-in-3-2.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.2/whats-new-in-3-2.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.3/_index.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.3/incompatible-changes-in-3-3.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.3/known-issues-in-3-3.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.3/whats-new-in-3-3.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.4/_index.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.4/incompatible-changes-in-3-4.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.4/known-issues-in-3-4.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.4/whats-new-in-3-4.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.5/_index.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.5/incompatible-changes-in-3-5.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.5/known-issues-in-3-5.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.5/whats-new-in-3-5.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.6/_index.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.6/incompatible-changes-in-3-6.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.6/known-issues-in-3-6.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.6/whats-new-in-3-6.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.7/_index.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.7/api-changes-in-3-7.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.7/incompatible-changes-in-3-7.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.7/known-issues-in-3-7.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.7/whats-new-in-3-7.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.8/_index.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.8/api-changes-in-3-8.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.8/incompatible-changes-in-3-8.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.8/known-issues-in-3-8.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.8/whats-new-in-3-8.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.9/_index.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.9/api-changes-in-3-9.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.9/incompatible-changes-in-3-9.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.9/known-issues-in-3-9.md (100%) rename site/content/{ => arangodb}/3.11/release-notes/version-3.9/whats-new-in-3-9.md (100%) rename site/content/{ => arangodb}/3.12/_index.md (58%) rename site/content/{3.12/about-arangodb => arangodb/3.12/about}/_index.md (83%) rename site/content/{3.13/about-arangodb => arangodb/3.12/about}/features/_index.md (94%) rename site/content/{3.12/about-arangodb => arangodb/3.12/about}/features/highlights-by-version.md (100%) rename site/content/{3.12/about-arangodb/features/core.md => arangodb/3.12/about/features/list.md} (100%) rename site/content/{3.11/about-arangodb => arangodb/3.12/about}/use-cases.md (77%) rename site/content/{ => arangodb}/3.12/aql/_index.md (96%) rename site/content/{ => arangodb}/3.12/aql/common-errors.md (100%) rename site/content/{ => arangodb}/3.12/aql/data-queries.md (100%) rename site/content/{ => arangodb}/3.12/aql/examples-and-query-patterns/_index.md (100%) rename site/content/{ => arangodb}/3.12/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md (100%) rename site/content/{ => arangodb}/3.12/aql/examples-and-query-patterns/counting.md (100%) rename site/content/{ => arangodb}/3.12/aql/examples-and-query-patterns/create-test-data.md (100%) rename site/content/{ => arangodb}/3.12/aql/examples-and-query-patterns/diffing-two-documents.md (100%) rename site/content/{ => arangodb}/3.12/aql/examples-and-query-patterns/dynamic-attribute-names.md (100%) rename site/content/{ => arangodb}/3.12/aql/examples-and-query-patterns/grouping.md (100%) rename site/content/{ => arangodb}/3.12/aql/examples-and-query-patterns/joins.md (100%) rename site/content/{ => arangodb}/3.12/aql/examples-and-query-patterns/projections-and-filters.md (100%) rename site/content/{ => arangodb}/3.12/aql/examples-and-query-patterns/queries-without-collections.md (100%) rename site/content/{ => arangodb}/3.12/aql/examples-and-query-patterns/remove-nodes.md (96%) rename site/content/{ => arangodb}/3.12/aql/examples-and-query-patterns/traversals.md (97%) rename site/content/{ => arangodb}/3.12/aql/examples-and-query-patterns/upsert-repsert-guide.md (100%) rename site/content/{ => arangodb}/3.12/aql/execution-and-performance/_index.md (100%) rename site/content/{ => arangodb}/3.12/aql/execution-and-performance/caching-query-plans.md (100%) rename site/content/{ => arangodb}/3.12/aql/execution-and-performance/caching-query-results.md (100%) rename site/content/{ => arangodb}/3.12/aql/execution-and-performance/explaining-queries.md (100%) rename site/content/{ => arangodb}/3.12/aql/execution-and-performance/parsing-queries.md (100%) rename site/content/{ => arangodb}/3.12/aql/execution-and-performance/query-logging.md (100%) rename site/content/{ => arangodb}/3.12/aql/execution-and-performance/query-optimization.md (100%) rename site/content/{ => arangodb}/3.12/aql/execution-and-performance/query-profiling.md (100%) rename site/content/{ => arangodb}/3.12/aql/execution-and-performance/query-statistics.md (100%) rename site/content/{ => arangodb}/3.12/aql/functions/_index.md (100%) rename site/content/{ => arangodb}/3.12/aql/functions/arangosearch.md (100%) rename site/content/{ => arangodb}/3.12/aql/functions/array.md (100%) rename site/content/{ => arangodb}/3.12/aql/functions/bit.md (100%) rename site/content/{ => arangodb}/3.12/aql/functions/date.md (100%) rename site/content/{ => arangodb}/3.12/aql/functions/document-object.md (100%) rename site/content/{ => arangodb}/3.12/aql/functions/fulltext.md (100%) rename site/content/{3.13 => arangodb/3.12}/aql/functions/geo.md (99%) rename site/content/{ => arangodb}/3.12/aql/functions/miscellaneous.md (100%) rename site/content/{ => arangodb}/3.12/aql/functions/numeric.md (100%) rename site/content/{ => arangodb}/3.12/aql/functions/string.md (100%) rename site/content/{ => arangodb}/3.12/aql/functions/type-check-and-cast.md (100%) rename site/content/{3.13 => arangodb/3.12}/aql/functions/vector.md (99%) rename site/content/{ => arangodb}/3.12/aql/fundamentals/_index.md (100%) rename site/content/{ => arangodb}/3.12/aql/fundamentals/accessing-data-from-collections.md (100%) rename site/content/{ => arangodb}/3.12/aql/fundamentals/bind-parameters.md (100%) rename site/content/{ => arangodb}/3.12/aql/fundamentals/data-types.md (100%) rename site/content/{ => arangodb}/3.12/aql/fundamentals/limitations.md (100%) rename site/content/{ => arangodb}/3.12/aql/fundamentals/query-errors.md (100%) rename site/content/{ => arangodb}/3.12/aql/fundamentals/query-results.md (100%) rename site/content/{ => arangodb}/3.12/aql/fundamentals/subqueries.md (100%) rename site/content/{ => arangodb}/3.12/aql/fundamentals/syntax.md (100%) rename site/content/{ => arangodb}/3.12/aql/fundamentals/type-and-value-order.md (100%) rename site/content/{ => arangodb}/3.12/aql/graphs/_index.md (100%) rename site/content/{ => arangodb}/3.12/aql/graphs/all-shortest-paths.md (98%) rename site/content/{ => arangodb}/3.12/aql/graphs/k-paths.md (98%) rename site/content/{3.13 => arangodb/3.12}/aql/graphs/k-shortest-paths.md (98%) rename site/content/{3.13 => arangodb/3.12}/aql/graphs/shortest-path.md (98%) rename site/content/{3.13 => arangodb/3.12}/aql/graphs/traversals-explained.md (83%) rename site/content/{ => arangodb}/3.12/aql/graphs/traversals.md (99%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/_index.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/collect.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/filter.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/for.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/insert.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/let.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/limit.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/remove.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/replace.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/return.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/search.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/sort.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/update.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/upsert.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/window.md (100%) rename site/content/{ => arangodb}/3.12/aql/high-level-operations/with.md (100%) rename site/content/{ => arangodb}/3.12/aql/how-to-invoke-aql/_index.md (100%) rename site/content/{ => arangodb}/3.12/aql/how-to-invoke-aql/with-arangosh.md (100%) rename site/content/{ => arangodb}/3.12/aql/how-to-invoke-aql/with-the-web-interface.md (100%) rename site/content/{ => arangodb}/3.12/aql/operators.md (100%) rename site/content/{ => arangodb}/3.12/aql/user-defined-functions.md (100%) rename site/content/{ => arangodb}/3.12/components/_index.md (100%) rename site/content/{ => arangodb}/3.12/components/arangodb-server/_index.md (100%) rename site/content/{ => arangodb}/3.12/components/arangodb-server/environment-variables.md (100%) rename site/content/{ => arangodb}/3.12/components/arangodb-server/options.md (100%) rename site/content/{ => arangodb}/3.12/components/arangodb-server/storage-engine.md (100%) rename site/content/{3.11 => arangodb/3.12}/components/tools/_index.md (94%) rename site/content/{ => arangodb}/3.12/components/tools/arango-datasets.md (100%) rename site/content/{3.13 => arangodb/3.12}/components/tools/arangobackup/_index.md (92%) rename site/content/{ => arangodb}/3.12/components/tools/arangobackup/examples.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangobackup/options.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangobench/_index.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangobench/options.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangodb-shell/_index.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangodb-shell/details.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangodb-shell/examples.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangodb-shell/options.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangodb-starter/_index.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangodb-starter/architecture.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangodb-starter/options.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangodb-starter/security.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangodump/_index.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangodump/examples.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangodump/limitations.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangodump/maskings.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangodump/options.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangoexport/_index.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangoexport/examples.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangoexport/options.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangoimport/_index.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangoimport/details.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangoimport/examples-csv.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangoimport/examples-json.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangoimport/options.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangoinspect/_index.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangoinspect/examples.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangoinspect/options.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangorestore/_index.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangorestore/examples.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangorestore/options.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangovpack/_index.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/arangovpack/options.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/foxx-cli/_index.md (100%) rename site/content/{ => arangodb}/3.12/components/tools/foxx-cli/details.md (100%) rename site/content/{ => arangodb}/3.12/components/web-interface/_index.md (89%) rename site/content/{ => arangodb}/3.12/components/web-interface/cluster.md (97%) rename site/content/{ => arangodb}/3.12/components/web-interface/collections.md (100%) rename site/content/{ => arangodb}/3.12/components/web-interface/dashboard.md (90%) rename site/content/{ => arangodb}/3.12/components/web-interface/document.md (100%) rename site/content/{3.13 => arangodb/3.12}/components/web-interface/graphs.md (98%) rename site/content/{ => arangodb}/3.12/components/web-interface/logs.md (100%) rename site/content/{ => arangodb}/3.12/components/web-interface/queries.md (98%) rename site/content/{ => arangodb}/3.12/components/web-interface/services.md (100%) rename site/content/{ => arangodb}/3.12/components/web-interface/users.md (100%) rename site/content/{ => arangodb}/3.12/concepts/_index.md (100%) rename site/content/{ => arangodb}/3.12/concepts/data-models.md (100%) rename site/content/{ => arangodb}/3.12/concepts/data-retrieval.md (100%) rename site/content/{ => arangodb}/3.12/concepts/data-structure/_index.md (100%) rename site/content/{ => arangodb}/3.12/concepts/data-structure/collections.md (100%) rename site/content/{ => arangodb}/3.12/concepts/data-structure/databases.md (100%) rename site/content/{ => arangodb}/3.12/concepts/data-structure/documents/_index.md (100%) rename site/content/{ => arangodb}/3.12/concepts/data-structure/documents/computed-values.md (100%) rename site/content/{ => arangodb}/3.12/concepts/data-structure/documents/schema-validation.md (100%) rename site/content/{ => arangodb}/3.12/concepts/data-structure/views.md (100%) rename site/content/{ => arangodb}/3.12/deploy/_index.md (94%) rename site/content/{ => arangodb}/3.12/deploy/architecture/_index.md (100%) rename site/content/{ => arangodb}/3.12/deploy/architecture/data-sharding.md (98%) rename site/content/{ => arangodb}/3.12/deploy/architecture/replication.md (100%) rename site/content/{ => arangodb}/3.12/deploy/architecture/scalability.md (100%) rename site/content/{ => arangodb}/3.12/deploy/cluster/_index.md (98%) rename site/content/{ => arangodb}/3.12/deploy/cluster/administration.md (100%) rename site/content/{ => arangodb}/3.12/deploy/cluster/deployment/_index.md (97%) rename site/content/{ => arangodb}/3.12/deploy/cluster/deployment/manual-start.md (100%) rename site/content/{ => arangodb}/3.12/deploy/cluster/deployment/using-the-arangodb-starter.md (100%) rename site/content/{ => arangodb}/3.12/deploy/cluster/limitations.md (100%) rename site/content/{ => arangodb}/3.12/deploy/in-the-cloud.md (100%) rename site/content/{ => arangodb}/3.12/deploy/kubernetes.md (100%) rename site/content/{ => arangodb}/3.12/deploy/oneshard.md (99%) rename site/content/{ => arangodb}/3.12/deploy/production-checklist.md (100%) rename site/content/{ => arangodb}/3.12/deploy/single-instance-vs-cluster.md (100%) rename site/content/{ => arangodb}/3.12/deploy/single-instance/_index.md (100%) rename site/content/{ => arangodb}/3.12/deploy/single-instance/manual-start.md (100%) rename site/content/{ => arangodb}/3.12/deploy/single-instance/using-the-arangodb-starter.md (100%) rename site/content/{ => arangodb}/3.12/develop/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/drivers/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/drivers/go.md (100%) rename site/content/{ => arangodb}/3.12/develop/drivers/java/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/drivers/java/reference-version-6/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/drivers/java/reference-version-6/driver-setup.md (100%) rename site/content/{ => arangodb}/3.12/develop/drivers/java/reference-version-6/serialization.md (100%) rename site/content/{ => arangodb}/3.12/develop/drivers/java/reference-version-7/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/drivers/java/reference-version-7/changes-in-version-7.md (100%) rename site/content/{ => arangodb}/3.12/develop/drivers/java/reference-version-7/driver-setup.md (100%) rename site/content/{ => arangodb}/3.12/develop/drivers/java/reference-version-7/serialization.md (100%) rename site/content/{ => arangodb}/3.12/develop/drivers/javascript.md (100%) rename site/content/{ => arangodb}/3.12/develop/drivers/python.md (100%) rename site/content/{ => arangodb}/3.12/develop/error-codes.md (100%) rename site/content/{ => arangodb}/3.12/develop/exit-codes.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/deployment.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/getting-started.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/access-from-the-browser.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/authentication-and-sessions.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/development-mode.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/foxx-in-a-cluster.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/linking-services-together.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/making-requests.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/scripts-and-scheduling.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/testing-foxx-services.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/using-node-modules.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/using-webpack-with-foxx.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/working-with-collections.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/working-with-files.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/working-with-routers.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/guides/writing-queries.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/configuration.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/related-modules/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/related-modules/authentication.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/related-modules/graphql.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/related-modules/oauth-2-0.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/related-modules/queues.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/routers/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/routers/endpoints.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/routers/middleware.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/routers/request.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/routers/response.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/service-context.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/service-manifest.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/sessions-middleware/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md (100%) rename site/content/{ => arangodb}/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/_index.md (98%) rename site/content/{ => arangodb}/3.12/develop/http-api/administration.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/analyzers.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/authentication.md (99%) rename site/content/{ => arangodb}/3.12/develop/http-api/batch-requests.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/cluster.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/collections.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/databases.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/documents.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/foxx.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/general-request-handling.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/graphs/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/graphs/edges.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/graphs/named-graphs.md (99%) rename site/content/{ => arangodb}/3.12/develop/http-api/hot-backups.md (99%) rename site/content/{ => arangodb}/3.12/develop/http-api/import.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/indexes/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/indexes/fulltext.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/indexes/geo-spatial.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/indexes/inverted.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/indexes/multi-dimensional.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/indexes/persistent.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/indexes/ttl.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/indexes/vector.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/jobs.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/monitoring/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/monitoring/logs.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/monitoring/metrics.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/monitoring/statistics.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/queries/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/queries/aql-queries.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/queries/aql-query-plan-cache.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/queries/aql-query-results-cache.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/queries/user-defined-aql-functions.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/replication/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/replication/other-replication-commands.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/replication/replication-applier.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/replication/replication-dump.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/replication/replication-logger.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/replication/write-ahead-log.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/security.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/tasks.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/transactions/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/transactions/javascript-transactions.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/transactions/stream-transactions.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/users.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/views/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/views/arangosearch-views.md (100%) rename site/content/{ => arangodb}/3.12/develop/http-api/views/search-alias-views.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/arangodb-datasource-for-apache-spark.md (99%) rename site/content/{ => arangodb}/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-boot-arangodb.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/migration.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-3/template.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md (100%) rename site/content/{ => arangodb}/3.12/develop/integrations/spring-data-arangodb/reference-version-4/template.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/@arangodb/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/@arangodb/collection-object.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/@arangodb/cursor-object.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/@arangodb/db-object.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/@arangodb/view-object.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/actions.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/analyzers.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/aql-queries.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/console.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/crypto.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/fs.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/request.md (100%) rename site/content/{ => arangodb}/3.12/develop/javascript-api/tasks.md (100%) rename site/content/{ => arangodb}/3.12/develop/operational-factors.md (100%) rename site/content/{ => arangodb}/3.12/develop/satellitecollections.md (100%) rename site/content/{ => arangodb}/3.12/develop/smartjoins.md (100%) rename site/content/{ => arangodb}/3.12/develop/transactions/_index.md (100%) rename site/content/{ => arangodb}/3.12/develop/transactions/durability.md (100%) rename site/content/{ => arangodb}/3.12/develop/transactions/javascript-transactions.md (100%) rename site/content/{ => arangodb}/3.12/develop/transactions/limitations.md (100%) rename site/content/{ => arangodb}/3.12/develop/transactions/locking-and-isolation.md (100%) rename site/content/{ => arangodb}/3.12/develop/transactions/stream-transactions.md (100%) rename site/content/{ => arangodb}/3.12/get-started/_index.md (100%) rename site/content/{ => arangodb}/3.12/get-started/how-to-interact-with-arangodb.md (100%) rename site/content/{ => arangodb}/3.12/get-started/on-premises-installation.md (93%) rename site/content/{ => arangodb}/3.12/get-started/set-up-a-cloud-instance.md (71%) rename site/content/{ => arangodb}/3.12/get-started/start-using-aql/_index.md (100%) rename site/content/{ => arangodb}/3.12/get-started/start-using-aql/crud.md (100%) rename site/content/{ => arangodb}/3.12/get-started/start-using-aql/dataset.md (100%) rename site/content/{ => arangodb}/3.12/get-started/start-using-aql/filter.md (100%) rename site/content/{ => arangodb}/3.12/get-started/start-using-aql/geo.md (100%) rename site/content/{ => arangodb}/3.12/get-started/start-using-aql/graphs.md (98%) rename site/content/{ => arangodb}/3.12/get-started/start-using-aql/joins.md (100%) rename site/content/{ => arangodb}/3.12/get-started/start-using-aql/sort-limit.md (100%) rename site/content/{ => arangodb}/3.12/graphs/_index.md (97%) rename site/content/{ => arangodb}/3.12/graphs/enterprisegraphs/_index.md (100%) rename site/content/{ => arangodb}/3.12/graphs/enterprisegraphs/getting-started.md (99%) rename site/content/{ => arangodb}/3.12/graphs/enterprisegraphs/management.md (100%) rename site/content/{3.13 => arangodb/3.12}/graphs/example-graphs.md (94%) rename site/content/{ => arangodb}/3.12/graphs/general-graphs/_index.md (98%) rename site/content/{3.13 => arangodb/3.12}/graphs/general-graphs/functions.md (99%) rename site/content/{ => arangodb}/3.12/graphs/general-graphs/management.md (100%) rename site/content/{ => arangodb}/3.12/graphs/satellitegraphs/_index.md (98%) rename site/content/{ => arangodb}/3.12/graphs/satellitegraphs/details.md (100%) rename site/content/{ => arangodb}/3.12/graphs/satellitegraphs/management.md (100%) rename site/content/{3.13 => arangodb/3.12}/graphs/smartgraphs/_index.md (94%) rename site/content/{3.13 => arangodb/3.12}/graphs/smartgraphs/getting-started.md (99%) rename site/content/{ => arangodb}/3.12/graphs/smartgraphs/management.md (100%) rename site/content/{ => arangodb}/3.12/graphs/smartgraphs/testing-graphs-on-single-server.md (100%) rename site/content/{ => arangodb}/3.12/graphs/working-with-edges.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/_index.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/analyzers.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/_index.md (99%) rename site/content/{3.13 => arangodb/3.12}/index-and-search/arangosearch/arangosearch-views-reference.md (99%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/case-sensitivity-and-diacritics.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/exact-value-matching.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/example-datasets.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/faceted-search.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/full-text-token-search.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/fuzzy-search.md (100%) rename site/content/{3.13 => arangodb/3.12}/index-and-search/arangosearch/geospatial-search.md (99%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/nested-search.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/performance.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/phrase-and-proximity-search.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/prefix-matching.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/range-queries.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/ranking.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/search-alias-views-reference.md (97%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/search-highlighting.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/arangosearch/wildcard-search.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/indexing/_index.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/indexing/basics.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/indexing/index-utilization.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/indexing/which-index-to-use-when.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/indexing/working-with-indexes/_index.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/indexing/working-with-indexes/fulltext-indexes.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/indexing/working-with-indexes/inverted-indexes.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/indexing/working-with-indexes/persistent-indexes.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/indexing/working-with-indexes/ttl-indexes.md (100%) rename site/content/{ => arangodb}/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md (99%) rename site/content/{ => arangodb}/3.12/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md (100%) rename site/content/{ => arangodb}/3.12/operations/_index.md (100%) rename site/content/{ => arangodb}/3.12/operations/administration/_index.md (100%) rename site/content/{ => arangodb}/3.12/operations/administration/arangodb-starter/_index.md (100%) rename site/content/{ => arangodb}/3.12/operations/administration/arangodb-starter/recovery-procedure.md (100%) rename site/content/{ => arangodb}/3.12/operations/administration/arangodb-starter/removal-procedure.md (100%) rename site/content/{ => arangodb}/3.12/operations/administration/configuration.md (100%) rename site/content/{ => arangodb}/3.12/operations/administration/import-and-export.md (100%) rename site/content/{ => arangodb}/3.12/operations/administration/license-management.md (99%) rename site/content/{ => arangodb}/3.12/operations/administration/log-levels.md (100%) rename site/content/{3.13 => arangodb/3.12}/operations/administration/reduce-memory-footprint.md (99%) rename site/content/{ => arangodb}/3.12/operations/administration/telemetrics.md (100%) rename site/content/{ => arangodb}/3.12/operations/administration/user-management/_index.md (100%) rename site/content/{ => arangodb}/3.12/operations/administration/user-management/in-arangosh.md (100%) rename site/content/{ => arangodb}/3.12/operations/backup-and-restore.md (100%) rename site/content/{ => arangodb}/3.12/operations/installation/_index.md (97%) rename site/content/{ => arangodb}/3.12/operations/installation/docker.md (100%) rename site/content/{ => arangodb}/3.12/operations/installation/linux/_index.md (100%) rename site/content/{ => arangodb}/3.12/operations/installation/linux/linux-os-tuning-script-examples.md (100%) rename site/content/{ => arangodb}/3.12/operations/installation/linux/operating-system-configuration.md (100%) rename site/content/{ => arangodb}/3.12/operations/installation/uninstallation.md (100%) rename site/content/{ => arangodb}/3.12/operations/security/_index.md (100%) rename site/content/{ => arangodb}/3.12/operations/security/audit-logging.md (98%) rename site/content/{ => arangodb}/3.12/operations/security/change-root-password.md (100%) rename site/content/{3.13 => arangodb/3.12}/operations/security/encryption-at-rest.md (97%) rename site/content/{ => arangodb}/3.12/operations/security/securing-starter-deployments.md (100%) rename site/content/{ => arangodb}/3.12/operations/security/security-options.md (100%) rename site/content/{ => arangodb}/3.12/operations/troubleshooting/_index.md (100%) rename site/content/{ => arangodb}/3.12/operations/troubleshooting/arangod.md (100%) rename site/content/{ => arangodb}/3.12/operations/troubleshooting/cluster/_index.md (100%) rename site/content/{ => arangodb}/3.12/operations/troubleshooting/cluster/agency-dump.md (100%) rename site/content/{ => arangodb}/3.12/operations/troubleshooting/emergency-console.md (100%) rename site/content/{ => arangodb}/3.12/operations/troubleshooting/query-debug-packages.md (100%) rename site/content/{ => arangodb}/3.12/operations/upgrading/_index.md (100%) rename site/content/{ => arangodb}/3.12/operations/upgrading/community-to-enterprise-upgrade.md (97%) rename site/content/{ => arangodb}/3.12/operations/upgrading/downgrading.md (100%) rename site/content/{ => arangodb}/3.12/operations/upgrading/manual-deployments/_index.md (100%) rename site/content/{ => arangodb}/3.12/operations/upgrading/manual-deployments/cluster.md (100%) rename site/content/{ => arangodb}/3.12/operations/upgrading/manual-deployments/single-server.md (100%) rename site/content/{ => arangodb}/3.12/operations/upgrading/starter-deployments.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/deprecated-and-removed-features.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.0/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.0/incompatible-changes-in-3-0.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.0/whats-new-in-3-0.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.1/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.1/incompatible-changes-in-3-1.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.1/whats-new-in-3-1.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.10/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.10/api-changes-in-3-10.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.10/incompatible-changes-in-3-10.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.10/known-issues-in-3-10.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.10/whats-new-in-3-10.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.11/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.11/api-changes-in-3-11.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.11/incompatible-changes-in-3-11.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.11/known-issues-in-3-11.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.11/whats-new-in-3-11.md (99%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.12/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.12/api-changes-in-3-12.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.12/known-issues-in-3-12.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.12/whats-new-in-3-12.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.2/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.2/incompatible-changes-in-3-2.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.2/known-issues-in-3-2.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.2/whats-new-in-3-2.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.3/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.3/incompatible-changes-in-3-3.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.3/known-issues-in-3-3.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.3/whats-new-in-3-3.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.4/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.4/incompatible-changes-in-3-4.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.4/known-issues-in-3-4.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.4/whats-new-in-3-4.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.5/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.5/incompatible-changes-in-3-5.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.5/known-issues-in-3-5.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.5/whats-new-in-3-5.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.6/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.6/incompatible-changes-in-3-6.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.6/known-issues-in-3-6.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.6/whats-new-in-3-6.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.7/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.7/api-changes-in-3-7.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.7/incompatible-changes-in-3-7.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.7/known-issues-in-3-7.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.7/whats-new-in-3-7.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.8/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.8/api-changes-in-3-8.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.8/incompatible-changes-in-3-8.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.8/known-issues-in-3-8.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.8/whats-new-in-3-8.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.9/_index.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.9/api-changes-in-3-9.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.9/incompatible-changes-in-3-9.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.9/known-issues-in-3-9.md (100%) rename site/content/{ => arangodb}/3.12/release-notes/version-3.9/whats-new-in-3-9.md (100%) rename site/content/{ => arangodb}/3.13/_index.md (59%) rename site/content/{3.13/about-arangodb => arangodb/3.13/about}/_index.md (82%) rename site/content/{3.12/about-arangodb => arangodb/3.13/about}/features/_index.md (94%) rename site/content/{3.13/about-arangodb => arangodb/3.13/about}/features/highlights-by-version.md (100%) rename site/content/{3.13/about-arangodb/features/core.md => arangodb/3.13/about/features/list.md} (100%) rename site/content/{3.12/about-arangodb => arangodb/3.13/about}/use-cases.md (77%) rename site/content/{ => arangodb}/3.13/aql/_index.md (96%) rename site/content/{ => arangodb}/3.13/aql/common-errors.md (100%) rename site/content/{ => arangodb}/3.13/aql/data-queries.md (100%) rename site/content/{ => arangodb}/3.13/aql/examples-and-query-patterns/_index.md (100%) rename site/content/{ => arangodb}/3.13/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md (100%) rename site/content/{ => arangodb}/3.13/aql/examples-and-query-patterns/counting.md (100%) rename site/content/{ => arangodb}/3.13/aql/examples-and-query-patterns/create-test-data.md (100%) rename site/content/{ => arangodb}/3.13/aql/examples-and-query-patterns/diffing-two-documents.md (100%) rename site/content/{ => arangodb}/3.13/aql/examples-and-query-patterns/dynamic-attribute-names.md (100%) rename site/content/{ => arangodb}/3.13/aql/examples-and-query-patterns/grouping.md (100%) rename site/content/{ => arangodb}/3.13/aql/examples-and-query-patterns/joins.md (100%) rename site/content/{ => arangodb}/3.13/aql/examples-and-query-patterns/projections-and-filters.md (100%) rename site/content/{ => arangodb}/3.13/aql/examples-and-query-patterns/queries-without-collections.md (100%) rename site/content/{ => arangodb}/3.13/aql/examples-and-query-patterns/remove-nodes.md (96%) rename site/content/{ => arangodb}/3.13/aql/examples-and-query-patterns/traversals.md (97%) rename site/content/{ => arangodb}/3.13/aql/examples-and-query-patterns/upsert-repsert-guide.md (100%) rename site/content/{ => arangodb}/3.13/aql/execution-and-performance/_index.md (100%) rename site/content/{ => arangodb}/3.13/aql/execution-and-performance/caching-query-plans.md (100%) rename site/content/{ => arangodb}/3.13/aql/execution-and-performance/caching-query-results.md (100%) rename site/content/{ => arangodb}/3.13/aql/execution-and-performance/explaining-queries.md (100%) rename site/content/{ => arangodb}/3.13/aql/execution-and-performance/parsing-queries.md (100%) rename site/content/{ => arangodb}/3.13/aql/execution-and-performance/query-logging.md (100%) rename site/content/{ => arangodb}/3.13/aql/execution-and-performance/query-optimization.md (100%) rename site/content/{ => arangodb}/3.13/aql/execution-and-performance/query-profiling.md (100%) rename site/content/{ => arangodb}/3.13/aql/execution-and-performance/query-statistics.md (100%) rename site/content/{ => arangodb}/3.13/aql/functions/_index.md (100%) rename site/content/{ => arangodb}/3.13/aql/functions/arangosearch.md (100%) rename site/content/{ => arangodb}/3.13/aql/functions/array.md (100%) rename site/content/{ => arangodb}/3.13/aql/functions/bit.md (100%) rename site/content/{ => arangodb}/3.13/aql/functions/date.md (100%) rename site/content/{ => arangodb}/3.13/aql/functions/document-object.md (100%) rename site/content/{ => arangodb}/3.13/aql/functions/fulltext.md (100%) rename site/content/{3.11 => arangodb/3.13}/aql/functions/geo.md (99%) rename site/content/{ => arangodb}/3.13/aql/functions/miscellaneous.md (100%) rename site/content/{ => arangodb}/3.13/aql/functions/numeric.md (100%) rename site/content/{ => arangodb}/3.13/aql/functions/string.md (100%) rename site/content/{ => arangodb}/3.13/aql/functions/type-check-and-cast.md (100%) rename site/content/{3.12 => arangodb/3.13}/aql/functions/vector.md (99%) rename site/content/{ => arangodb}/3.13/aql/fundamentals/_index.md (100%) rename site/content/{ => arangodb}/3.13/aql/fundamentals/accessing-data-from-collections.md (100%) rename site/content/{ => arangodb}/3.13/aql/fundamentals/bind-parameters.md (100%) rename site/content/{ => arangodb}/3.13/aql/fundamentals/data-types.md (100%) rename site/content/{ => arangodb}/3.13/aql/fundamentals/limitations.md (100%) rename site/content/{ => arangodb}/3.13/aql/fundamentals/query-errors.md (100%) rename site/content/{ => arangodb}/3.13/aql/fundamentals/query-results.md (100%) rename site/content/{ => arangodb}/3.13/aql/fundamentals/subqueries.md (100%) rename site/content/{ => arangodb}/3.13/aql/fundamentals/syntax.md (100%) rename site/content/{ => arangodb}/3.13/aql/fundamentals/type-and-value-order.md (100%) rename site/content/{ => arangodb}/3.13/aql/graphs/_index.md (100%) rename site/content/{ => arangodb}/3.13/aql/graphs/all-shortest-paths.md (98%) rename site/content/{ => arangodb}/3.13/aql/graphs/k-paths.md (98%) rename site/content/{3.12 => arangodb/3.13}/aql/graphs/k-shortest-paths.md (98%) rename site/content/{3.12 => arangodb/3.13}/aql/graphs/shortest-path.md (98%) rename site/content/{3.12 => arangodb/3.13}/aql/graphs/traversals-explained.md (83%) rename site/content/{ => arangodb}/3.13/aql/graphs/traversals.md (99%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/_index.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/collect.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/filter.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/for.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/insert.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/let.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/limit.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/remove.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/replace.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/return.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/search.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/sort.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/update.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/upsert.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/window.md (100%) rename site/content/{ => arangodb}/3.13/aql/high-level-operations/with.md (100%) rename site/content/{ => arangodb}/3.13/aql/how-to-invoke-aql/_index.md (100%) rename site/content/{ => arangodb}/3.13/aql/how-to-invoke-aql/with-arangosh.md (100%) rename site/content/{ => arangodb}/3.13/aql/how-to-invoke-aql/with-the-web-interface.md (100%) rename site/content/{ => arangodb}/3.13/aql/operators.md (100%) rename site/content/{ => arangodb}/3.13/aql/user-defined-functions.md (100%) rename site/content/{ => arangodb}/3.13/components/_index.md (100%) rename site/content/{ => arangodb}/3.13/components/arangodb-server/_index.md (100%) rename site/content/{ => arangodb}/3.13/components/arangodb-server/environment-variables.md (100%) rename site/content/{ => arangodb}/3.13/components/arangodb-server/options.md (100%) rename site/content/{ => arangodb}/3.13/components/arangodb-server/storage-engine.md (100%) rename site/content/{ => arangodb}/3.13/components/platform.md (98%) rename site/content/{ => arangodb}/3.13/components/tools/_index.md (94%) rename site/content/{ => arangodb}/3.13/components/tools/arango-datasets.md (100%) rename site/content/{3.12 => arangodb/3.13}/components/tools/arangobackup/_index.md (92%) rename site/content/{ => arangodb}/3.13/components/tools/arangobackup/examples.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangobackup/options.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangobench/_index.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangobench/options.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangodb-shell/_index.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangodb-shell/details.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangodb-shell/examples.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangodb-shell/options.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangodb-starter/_index.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangodb-starter/architecture.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangodb-starter/options.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangodb-starter/security.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangodump/_index.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangodump/examples.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangodump/limitations.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangodump/maskings.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangodump/options.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangoexport/_index.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangoexport/examples.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangoexport/options.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangoimport/_index.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangoimport/details.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangoimport/examples-csv.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangoimport/examples-json.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangoimport/options.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangoinspect/_index.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangoinspect/examples.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangoinspect/options.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangorestore/_index.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangorestore/examples.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangorestore/options.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangovpack/_index.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/arangovpack/options.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/foxx-cli/_index.md (100%) rename site/content/{ => arangodb}/3.13/components/tools/foxx-cli/details.md (100%) rename site/content/{ => arangodb}/3.13/components/web-interface/_index.md (89%) rename site/content/{ => arangodb}/3.13/components/web-interface/cluster.md (97%) rename site/content/{ => arangodb}/3.13/components/web-interface/collections.md (100%) rename site/content/{ => arangodb}/3.13/components/web-interface/dashboard.md (90%) rename site/content/{ => arangodb}/3.13/components/web-interface/document.md (100%) rename site/content/{3.12 => arangodb/3.13}/components/web-interface/graphs.md (98%) rename site/content/{ => arangodb}/3.13/components/web-interface/logs.md (100%) rename site/content/{ => arangodb}/3.13/components/web-interface/queries.md (98%) rename site/content/{ => arangodb}/3.13/components/web-interface/services.md (100%) rename site/content/{ => arangodb}/3.13/components/web-interface/users.md (100%) rename site/content/{ => arangodb}/3.13/concepts/_index.md (100%) rename site/content/{ => arangodb}/3.13/concepts/data-models.md (100%) rename site/content/{ => arangodb}/3.13/concepts/data-retrieval.md (100%) rename site/content/{ => arangodb}/3.13/concepts/data-structure/_index.md (100%) rename site/content/{ => arangodb}/3.13/concepts/data-structure/collections.md (100%) rename site/content/{ => arangodb}/3.13/concepts/data-structure/databases.md (100%) rename site/content/{ => arangodb}/3.13/concepts/data-structure/documents/_index.md (100%) rename site/content/{ => arangodb}/3.13/concepts/data-structure/documents/computed-values.md (100%) rename site/content/{ => arangodb}/3.13/concepts/data-structure/documents/schema-validation.md (100%) rename site/content/{ => arangodb}/3.13/concepts/data-structure/views.md (100%) rename site/content/{ => arangodb}/3.13/deploy/_index.md (96%) rename site/content/{ => arangodb}/3.13/deploy/architecture/_index.md (100%) rename site/content/{ => arangodb}/3.13/deploy/architecture/data-sharding.md (98%) rename site/content/{ => arangodb}/3.13/deploy/architecture/replication.md (100%) rename site/content/{ => arangodb}/3.13/deploy/architecture/scalability.md (100%) rename site/content/{ => arangodb}/3.13/deploy/cluster/_index.md (98%) rename site/content/{ => arangodb}/3.13/deploy/cluster/administration.md (100%) rename site/content/{ => arangodb}/3.13/deploy/cluster/deployment/_index.md (97%) rename site/content/{ => arangodb}/3.13/deploy/cluster/deployment/manual-start.md (100%) rename site/content/{ => arangodb}/3.13/deploy/cluster/deployment/using-the-arangodb-starter.md (100%) rename site/content/{ => arangodb}/3.13/deploy/cluster/limitations.md (100%) rename site/content/{ => arangodb}/3.13/deploy/in-the-cloud.md (100%) rename site/content/{ => arangodb}/3.13/deploy/kubernetes.md (100%) rename site/content/{ => arangodb}/3.13/deploy/oneshard.md (99%) rename site/content/{ => arangodb}/3.13/deploy/production-checklist.md (100%) rename site/content/{ => arangodb}/3.13/deploy/single-instance-vs-cluster.md (100%) rename site/content/{ => arangodb}/3.13/deploy/single-instance/_index.md (100%) rename site/content/{ => arangodb}/3.13/deploy/single-instance/manual-start.md (100%) rename site/content/{ => arangodb}/3.13/deploy/single-instance/using-the-arangodb-starter.md (100%) rename site/content/{ => arangodb}/3.13/develop/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/drivers/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/drivers/go.md (100%) rename site/content/{ => arangodb}/3.13/develop/drivers/java/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/drivers/java/reference-version-7/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/drivers/java/reference-version-7/changes-in-version-7.md (100%) rename site/content/{ => arangodb}/3.13/develop/drivers/java/reference-version-7/driver-setup.md (100%) rename site/content/{ => arangodb}/3.13/develop/drivers/java/reference-version-7/serialization.md (100%) rename site/content/{ => arangodb}/3.13/develop/drivers/javascript.md (100%) rename site/content/{ => arangodb}/3.13/develop/drivers/python.md (100%) rename site/content/{ => arangodb}/3.13/develop/error-codes.md (100%) rename site/content/{ => arangodb}/3.13/develop/exit-codes.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/deployment.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/getting-started.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/access-from-the-browser.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/authentication-and-sessions.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/development-mode.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/foxx-in-a-cluster.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/linking-services-together.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/making-requests.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/scripts-and-scheduling.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/testing-foxx-services.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/using-node-modules.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/using-webpack-with-foxx.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/working-with-collections.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/working-with-files.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/working-with-routers.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/guides/writing-queries.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/configuration.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/related-modules/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/related-modules/authentication.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/related-modules/graphql.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/related-modules/oauth-2-0.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/related-modules/queues.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/routers/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/routers/endpoints.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/routers/middleware.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/routers/request.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/routers/response.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/service-context.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/service-manifest.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/sessions-middleware/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md (100%) rename site/content/{ => arangodb}/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/_index.md (98%) rename site/content/{ => arangodb}/3.13/develop/http-api/administration.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/analyzers.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/authentication.md (99%) rename site/content/{ => arangodb}/3.13/develop/http-api/cluster.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/collections.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/databases.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/documents.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/foxx.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/general-request-handling.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/graphs/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/graphs/edges.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/graphs/named-graphs.md (99%) rename site/content/{ => arangodb}/3.13/develop/http-api/hot-backups.md (99%) rename site/content/{ => arangodb}/3.13/develop/http-api/import.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/indexes/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/indexes/fulltext.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/indexes/geo-spatial.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/indexes/inverted.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/indexes/multi-dimensional.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/indexes/persistent.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/indexes/ttl.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/indexes/vector.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/jobs.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/monitoring/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/monitoring/logs.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/monitoring/metrics.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/monitoring/statistics.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/queries/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/queries/aql-queries.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/queries/aql-query-plan-cache.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/queries/aql-query-results-cache.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/queries/user-defined-aql-functions.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/replication/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/replication/other-replication-commands.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/replication/replication-applier.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/replication/replication-dump.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/replication/replication-logger.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/replication/write-ahead-log.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/security.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/tasks.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/transactions/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/transactions/javascript-transactions.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/transactions/stream-transactions.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/users.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/views/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/views/arangosearch-views.md (100%) rename site/content/{ => arangodb}/3.13/develop/http-api/views/search-alias-views.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/arangodb-datasource-for-apache-spark.md (99%) rename site/content/{ => arangodb}/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-boot-arangodb.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/migration.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md (100%) rename site/content/{ => arangodb}/3.13/develop/integrations/spring-data-arangodb/reference-version-4/template.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/@arangodb/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/@arangodb/collection-object.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/@arangodb/cursor-object.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/@arangodb/db-object.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/@arangodb/view-object.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/actions.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/analyzers.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/aql-queries.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/console.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/crypto.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/fs.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/request.md (100%) rename site/content/{ => arangodb}/3.13/develop/javascript-api/tasks.md (100%) rename site/content/{ => arangodb}/3.13/develop/operational-factors.md (100%) rename site/content/{ => arangodb}/3.13/develop/satellitecollections.md (100%) rename site/content/{ => arangodb}/3.13/develop/smartjoins.md (100%) rename site/content/{ => arangodb}/3.13/develop/transactions/_index.md (100%) rename site/content/{ => arangodb}/3.13/develop/transactions/durability.md (100%) rename site/content/{ => arangodb}/3.13/develop/transactions/javascript-transactions.md (100%) rename site/content/{ => arangodb}/3.13/develop/transactions/limitations.md (100%) rename site/content/{ => arangodb}/3.13/develop/transactions/locking-and-isolation.md (100%) rename site/content/{ => arangodb}/3.13/develop/transactions/stream-transactions.md (100%) rename site/content/{ => arangodb}/3.13/get-started/_index.md (100%) rename site/content/{ => arangodb}/3.13/get-started/how-to-interact-with-arangodb.md (100%) rename site/content/{ => arangodb}/3.13/get-started/on-premises-installation.md (93%) rename site/content/{ => arangodb}/3.13/get-started/set-up-a-cloud-instance.md (71%) rename site/content/{ => arangodb}/3.13/get-started/start-using-aql/_index.md (100%) rename site/content/{ => arangodb}/3.13/get-started/start-using-aql/crud.md (100%) rename site/content/{ => arangodb}/3.13/get-started/start-using-aql/dataset.md (100%) rename site/content/{ => arangodb}/3.13/get-started/start-using-aql/filter.md (100%) rename site/content/{ => arangodb}/3.13/get-started/start-using-aql/geo.md (100%) rename site/content/{ => arangodb}/3.13/get-started/start-using-aql/graphs.md (98%) rename site/content/{ => arangodb}/3.13/get-started/start-using-aql/joins.md (100%) rename site/content/{ => arangodb}/3.13/get-started/start-using-aql/sort-limit.md (100%) rename site/content/{ => arangodb}/3.13/graphs/_index.md (97%) rename site/content/{ => arangodb}/3.13/graphs/enterprisegraphs/_index.md (100%) rename site/content/{ => arangodb}/3.13/graphs/enterprisegraphs/getting-started.md (99%) rename site/content/{ => arangodb}/3.13/graphs/enterprisegraphs/management.md (100%) rename site/content/{3.12 => arangodb/3.13}/graphs/example-graphs.md (94%) rename site/content/{ => arangodb}/3.13/graphs/general-graphs/_index.md (98%) rename site/content/{3.12 => arangodb/3.13}/graphs/general-graphs/functions.md (99%) rename site/content/{ => arangodb}/3.13/graphs/general-graphs/management.md (100%) rename site/content/{ => arangodb}/3.13/graphs/satellitegraphs/_index.md (98%) rename site/content/{ => arangodb}/3.13/graphs/satellitegraphs/details.md (100%) rename site/content/{ => arangodb}/3.13/graphs/satellitegraphs/management.md (100%) rename site/content/{3.12 => arangodb/3.13}/graphs/smartgraphs/_index.md (94%) rename site/content/{3.12 => arangodb/3.13}/graphs/smartgraphs/getting-started.md (99%) rename site/content/{ => arangodb}/3.13/graphs/smartgraphs/management.md (100%) rename site/content/{ => arangodb}/3.13/graphs/smartgraphs/testing-graphs-on-single-server.md (100%) rename site/content/{ => arangodb}/3.13/graphs/working-with-edges.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/_index.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/analyzers.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/_index.md (99%) rename site/content/{3.12 => arangodb/3.13}/index-and-search/arangosearch/arangosearch-views-reference.md (99%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/case-sensitivity-and-diacritics.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/exact-value-matching.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/example-datasets.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/faceted-search.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/full-text-token-search.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/fuzzy-search.md (100%) rename site/content/{3.12 => arangodb/3.13}/index-and-search/arangosearch/geospatial-search.md (99%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/nested-search.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/performance.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/phrase-and-proximity-search.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/prefix-matching.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/range-queries.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/ranking.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/search-alias-views-reference.md (97%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/search-highlighting.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/arangosearch/wildcard-search.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/indexing/_index.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/indexing/basics.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/indexing/index-utilization.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/indexing/which-index-to-use-when.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/indexing/working-with-indexes/_index.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/indexing/working-with-indexes/fulltext-indexes.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/indexing/working-with-indexes/inverted-indexes.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/indexing/working-with-indexes/persistent-indexes.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/indexing/working-with-indexes/ttl-indexes.md (100%) rename site/content/{ => arangodb}/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md (99%) rename site/content/{ => arangodb}/3.13/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md (100%) rename site/content/{ => arangodb}/3.13/operations/_index.md (100%) rename site/content/{ => arangodb}/3.13/operations/administration/_index.md (100%) rename site/content/{ => arangodb}/3.13/operations/administration/arangodb-starter/_index.md (100%) rename site/content/{ => arangodb}/3.13/operations/administration/arangodb-starter/recovery-procedure.md (100%) rename site/content/{ => arangodb}/3.13/operations/administration/arangodb-starter/removal-procedure.md (100%) rename site/content/{ => arangodb}/3.13/operations/administration/configuration.md (100%) rename site/content/{ => arangodb}/3.13/operations/administration/import-and-export.md (100%) rename site/content/{ => arangodb}/3.13/operations/administration/license-management.md (99%) rename site/content/{ => arangodb}/3.13/operations/administration/log-levels.md (100%) rename site/content/{3.12 => arangodb/3.13}/operations/administration/reduce-memory-footprint.md (99%) rename site/content/{ => arangodb}/3.13/operations/administration/telemetrics.md (100%) rename site/content/{ => arangodb}/3.13/operations/administration/user-management/_index.md (100%) rename site/content/{ => arangodb}/3.13/operations/administration/user-management/in-arangosh.md (100%) rename site/content/{ => arangodb}/3.13/operations/backup-and-restore.md (100%) rename site/content/{ => arangodb}/3.13/operations/installation/_index.md (97%) rename site/content/{ => arangodb}/3.13/operations/installation/docker.md (100%) rename site/content/{ => arangodb}/3.13/operations/installation/linux/_index.md (100%) rename site/content/{ => arangodb}/3.13/operations/installation/linux/linux-os-tuning-script-examples.md (100%) rename site/content/{ => arangodb}/3.13/operations/installation/linux/operating-system-configuration.md (100%) rename site/content/{ => arangodb}/3.13/operations/installation/uninstallation.md (100%) rename site/content/{ => arangodb}/3.13/operations/security/_index.md (100%) rename site/content/{ => arangodb}/3.13/operations/security/audit-logging.md (98%) rename site/content/{ => arangodb}/3.13/operations/security/change-root-password.md (100%) rename site/content/{3.12 => arangodb/3.13}/operations/security/encryption-at-rest.md (97%) rename site/content/{ => arangodb}/3.13/operations/security/securing-starter-deployments.md (100%) rename site/content/{ => arangodb}/3.13/operations/security/security-options.md (100%) rename site/content/{ => arangodb}/3.13/operations/troubleshooting/_index.md (100%) rename site/content/{ => arangodb}/3.13/operations/troubleshooting/arangod.md (100%) rename site/content/{ => arangodb}/3.13/operations/troubleshooting/cluster/_index.md (100%) rename site/content/{ => arangodb}/3.13/operations/troubleshooting/cluster/agency-dump.md (100%) rename site/content/{ => arangodb}/3.13/operations/troubleshooting/emergency-console.md (100%) rename site/content/{ => arangodb}/3.13/operations/troubleshooting/query-debug-packages.md (100%) rename site/content/{ => arangodb}/3.13/operations/upgrading/_index.md (100%) rename site/content/{ => arangodb}/3.13/operations/upgrading/downgrading.md (100%) rename site/content/{ => arangodb}/3.13/operations/upgrading/manual-deployments/_index.md (100%) rename site/content/{ => arangodb}/3.13/operations/upgrading/manual-deployments/cluster.md (100%) rename site/content/{ => arangodb}/3.13/operations/upgrading/manual-deployments/single-server.md (100%) rename site/content/{ => arangodb}/3.13/operations/upgrading/starter-deployments.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/deprecated-and-removed-features.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/platform.md (94%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.0/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.0/incompatible-changes-in-3-0.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.0/whats-new-in-3-0.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.1/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.1/incompatible-changes-in-3-1.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.1/whats-new-in-3-1.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.10/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.10/api-changes-in-3-10.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.10/incompatible-changes-in-3-10.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.10/known-issues-in-3-10.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.10/whats-new-in-3-10.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.11/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.11/api-changes-in-3-11.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.11/incompatible-changes-in-3-11.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.11/known-issues-in-3-11.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.11/whats-new-in-3-11.md (99%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.12/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.12/api-changes-in-3-12.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.12/known-issues-in-3-12.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.12/whats-new-in-3-12.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.13/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.13/api-changes-in-3-13.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.13/incompatible-changes-in-3-13.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.13/known-issues-in-3-13.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.13/whats-new-in-3-13.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.2/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.2/incompatible-changes-in-3-2.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.2/known-issues-in-3-2.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.2/whats-new-in-3-2.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.3/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.3/incompatible-changes-in-3-3.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.3/known-issues-in-3-3.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.3/whats-new-in-3-3.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.4/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.4/incompatible-changes-in-3-4.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.4/known-issues-in-3-4.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.4/whats-new-in-3-4.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.5/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.5/incompatible-changes-in-3-5.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.5/known-issues-in-3-5.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.5/whats-new-in-3-5.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.6/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.6/incompatible-changes-in-3-6.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.6/known-issues-in-3-6.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.6/whats-new-in-3-6.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.7/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.7/api-changes-in-3-7.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.7/incompatible-changes-in-3-7.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.7/known-issues-in-3-7.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.7/whats-new-in-3-7.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.8/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.8/api-changes-in-3-8.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.8/incompatible-changes-in-3-8.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.8/known-issues-in-3-8.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.8/whats-new-in-3-8.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.9/_index.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.9/api-changes-in-3-9.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.9/incompatible-changes-in-3-9.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.9/known-issues-in-3-9.md (100%) rename site/content/{ => arangodb}/3.13/release-notes/version-3.9/whats-new-in-3-9.md (100%) create mode 100644 site/content/arangodb/_index.md create mode 100644 site/content/data-platform/_index.md rename site/content/{platform/about-the-platform => data-platform/about}/_index.md (97%) rename site/content/{3.13/about-arangodb/features/platform.md => data-platform/about/features.md} (78%) rename site/content/{platform/graph-intelligence => data-platform}/graph-visualizer.md (95%) rename site/content/{platform => data-platform}/release-notes.md (85%) create mode 100644 site/content/ecosystem/_index.md rename site/content/{3.13/data-science/integrations => ecosystem/adapters}/_index.md (100%) rename site/content/{3.13/data-science/integrations => ecosystem/adapters}/arangodb-cugraph-adapter.md (100%) rename site/content/{3.13/data-science/integrations => ecosystem/adapters}/arangodb-dgl-adapter.md (100%) rename site/content/{3.13/data-science/integrations => ecosystem/adapters}/arangodb-networkx-adapter.md (100%) rename site/content/{3.13/data-science/integrations => ecosystem/adapters}/arangodb-pyg-adapter.md (100%) rename site/content/{3.13/data-science/integrations => ecosystem/adapters}/arangodb-rdf-adapter.md (100%) rename site/content/{3.13/data-science/integrations => ecosystem/adapters}/langchain.md (100%) create mode 100644 site/content/gen-ai/_index.md rename site/content/{3.13/graphs => gen-ai}/graph-analytics.md (96%) rename site/content/{3.13/data-science/_index.md => gen-ai/graph-to-ai.md} (86%) rename site/content/{3.13/data-science => gen-ai}/graphml/_index.md (98%) rename site/content/{3.13/data-science => gen-ai}/graphml/notebooks-api.md (99%) rename site/content/{3.13/data-science => gen-ai}/graphml/quickstart.md (88%) rename site/content/{3.13/data-science => gen-ai}/graphml/ui.md (96%) rename site/content/{platform/data-science => gen-ai}/graphrag/_index.md (97%) rename site/content/{3.13/data-science => gen-ai}/graphrag/tutorial-notebook.md (99%) rename site/content/{3.13/data-science => gen-ai}/graphrag/web-interface.md (80%) rename site/content/{3.13/data-science => gen-ai}/notebook-servers.md (93%) rename site/content/{3.13/data-science/graphrag => gen-ai}/services/_index.md (64%) rename site/content/{3.13/data-science/graphrag => gen-ai}/services/gen-ai.md (98%) rename site/content/{3.13/data-science/graphrag => gen-ai}/services/importer.md (99%) rename site/content/{3.13/data-science/graphrag => gen-ai}/services/mlflow.md (98%) rename site/content/{3.13/data-science/graphrag => gen-ai}/services/natural-language-to-aql.md (100%) rename site/content/{3.13/data-science/graphrag => gen-ai}/services/retriever.md (99%) rename site/content/{3.13/data-science/graphrag => gen-ai}/services/triton-inference-server.md (100%) delete mode 100644 site/content/platform/_index.md delete mode 100644 site/content/platform/data-science/_index.md delete mode 100644 site/content/platform/data-science/graphml/_index.md delete mode 100644 site/content/platform/data-science/graphml/notebooks-api.md delete mode 100644 site/content/platform/data-science/graphml/quickstart.md delete mode 100644 site/content/platform/data-science/graphml/ui.md delete mode 100644 site/content/platform/data-science/graphrag/services/_index.md delete mode 100644 site/content/platform/data-science/graphrag/services/gen-ai.md delete mode 100644 site/content/platform/data-science/graphrag/services/importer.md delete mode 100644 site/content/platform/data-science/graphrag/services/mlflow.md delete mode 100644 site/content/platform/data-science/graphrag/services/natural-language-to-aql.md delete mode 100644 site/content/platform/data-science/graphrag/services/retriever.md delete mode 100644 site/content/platform/data-science/graphrag/services/triton-inference-server.md delete mode 100644 site/content/platform/data-science/graphrag/tutorial-notebook.md delete mode 100644 site/content/platform/data-science/graphrag/web-interface.md delete mode 100644 site/content/platform/data-science/integrations/_index.md delete mode 100644 site/content/platform/data-science/integrations/arangodb-cugraph-adapter.md delete mode 100644 site/content/platform/data-science/integrations/arangodb-dgl-adapter.md delete mode 100644 site/content/platform/data-science/integrations/arangodb-networkx-adapter.md delete mode 100644 site/content/platform/data-science/integrations/arangodb-pyg-adapter.md delete mode 100644 site/content/platform/data-science/integrations/arangodb-rdf-adapter.md delete mode 100644 site/content/platform/data-science/integrations/langchain.md delete mode 100644 site/content/platform/data-science/notebook-servers.md delete mode 100644 site/content/platform/graph-intelligence/_index.md delete mode 100644 site/content/platform/graph-intelligence/graph-analytics.md diff --git a/README.md b/README.md index 0466fbd353..56f14f3459 100644 --- a/README.md +++ b/README.md @@ -367,8 +367,8 @@ Inner shortcode Tags let you display badges, usually below a headline. This is mainly used for pointing out if a feature is only available in the -ArangoDB Platform, the ArangoGraph Insights Platform, or both. -See [Environment remarks](#environment-remarks) for details. +GenAI Suite, the Data Platform, the Arango Managed Platform (AMP), or multiple +of them. See [Environment remarks](#environment-remarks) for details. It is also used for [Edition remarks](#edition-remarks) in content before version 3.12.5. @@ -570,7 +570,7 @@ The following shortcodes also exist but are rarely used: - _DB-Server_, not ~~dbserver~~, ~~db-server~~, ~~DBserver~~ (unless it is a code value) - _Coordinator_ (uppercase C) - _Agent_, _Agency_ (uppercase A) - - _ArangoGraph Insights Platform_ and _ArangoGraph_ for short, but not + - _Arango Managed Platform (AMP)_ and _ArangoGraph_ for short, but not ~~Oasis~~, ~~ArangoDB Oasis~~, or ~~ArangoDB Cloud~~ - _Deployment mode_ (single server, cluster, etc.), not ~~deployment type~~ @@ -586,7 +586,7 @@ For external links, use standard Markdown. Clicking these links automatically opens them in a new tab: ```markdown -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud) +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud) ``` For internal links, use relative paths to the Markdown files. Always link to @@ -674,25 +674,26 @@ deprecated features in the same manner with `Deprecated in: ...`. ### Environment remarks Pages and sections about features that are only available in certain environments -such as the ArangoDB Platform, the ArangoGraph Insight Platform, or the +such as the GenAI Suite, the Data Platform, the Arango Managed Platform (AMP), or the ArangoDB Shell should indicate where they are available using the `tag` shortcode. -In the unified Platform and ArangoGraph but not in the Core: +In the Data Platform (and therefore also in the GenAI Data Suite) and +Arango Managed Platform but not in ArangoDB: ```markdown -{{< tag "ArangoDB Platform" "ArangoGraph" >}} +{{< tag "Data Platform" "AMP" >}} ``` -In the unified Platform only: +In the GenAI Data Platform only: ```markdown -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} ``` -In ArangoGraph only: +In the Arango Managed Platform only: ```markdown -{{< tag "ArangoGraph" >}} +{{< tag "AMP" >}} ``` In the ArangoDB Shell but not the server-side JavaScript API: diff --git a/site/content/3.10/arangograph/_index.md b/site/content/3.10/arangograph/_index.md deleted file mode 100644 index 9ba6efedf4..0000000000 --- a/site/content/3.10/arangograph/_index.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: ArangoGraph Insights Platform -menuTitle: ArangoGraph -weight: 65 -description: >- - The ArangoGraph Insights Platform provides the entire functionality of - ArangoDB as a service, without the need to run or manage databases yourself -aliases: - - arangograph/changelog ---- -The [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), -formerly called Oasis, provides ArangoDB databases as a Service (DBaaS). -It enables you to use the entire functionality of an ArangoDB cluster -deployment without the need to run or manage the system yourself. - -The ArangoGraph Insights Platform... - -- runs your databases in data centers of the cloud provider - of your choice: Google Cloud Platform (GCP), Amazon Web Services (AWS), - Microsoft Azure. This optimizes performance and reduces cost. - -- ensures that your databases are always available and - healthy by monitoring them 24/7. - -- ensures that your databases are kept up to date by - installing new versions without service interruption. - -- ensures that your data is safe by providing encryption & - audit logs and making frequent data backups. - -- guarantees that your data always remains your property and - access to it is protected with industry standard safeguards. - -For more information see -[dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) - -For quick start guide, see -[Use ArangoDB in the Cloud](../get-started/set-up-a-cloud-instance.md). diff --git a/site/content/3.10/arangograph/api/_index.md b/site/content/3.10/arangograph/api/_index.md deleted file mode 100644 index ee4f21371f..0000000000 --- a/site/content/3.10/arangograph/api/_index.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: The ArangoGraph API -menuTitle: ArangoGraph API -weight: 60 -description: >- - Interface to control all resources inside ArangoGraph in a scriptable manner -aliases: - - arangograph-api ---- -The [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), -comes with its own API. This API enables you to control all -resources inside ArangoGraph in a scriptable manner. Typical use cases are spinning -up ArangoGraph deployments during continuous integration and infrastructure as code. - -The ArangoGraph API… - -- is a well-specified API that uses - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - as interface definition and [gRPC](https://grpc.io/) as - underlying protocol. - -- allows for automatic generation of clients for a large list of languages. - A Go client is available out of the box. - -- uses API keys for authentication. API keys impersonate a user and inherit - the permissions of that user. - -- is also available as a command-line tool called [oasisctl](../oasisctl/_index.md). - -- is also available as a - [Terraform plugin](https://github.com/arangodb-managed/terraform-provider-oasis/). - This plugin makes integration of ArangoGraph in infrastructure as code projects - very simple. To learn more, refer to the [plugin documentation](https://registry.terraform.io/providers/arangodb-managed/oasis/latest/docs). - -Also see: -- [github.com/arangodb-managed/apis](https://github.com/arangodb-managed/apis/) -- [API definitions](https://arangodb-managed.github.io/apis/index.html) diff --git a/site/content/3.10/arangograph/api/get-started.md b/site/content/3.10/arangograph/api/get-started.md deleted file mode 100644 index ee72c989a8..0000000000 --- a/site/content/3.10/arangograph/api/get-started.md +++ /dev/null @@ -1,481 +0,0 @@ ---- -title: Get started with the ArangoGraph API and Oasisctl -menuTitle: Get started with Oasisctl -weight: 10 -description: >- - A tutorial that guides you through the ArangoGraph API as well as the Oasisctl - command-line tool -aliases: - - ../arangograph-api/getting-started ---- -This tutorial shows you how to do the following: - -- Generate an API key and authenticate with Oasisctl -- View information related to your organizations, projects, and deployments -- Configure, create and delete a deployment - -With Oasisctl the general command structure is to execute commands such as: - -``` -oasisctl list deployments -``` - -This command lists all deployments available to the authenticated user and we -will explore it in more detail later. Most commands also have associated -`--flags` that are required or provide additional options, this aligns with the -interaction method for many command line utilities. If you aren’t already -familiar with this, follow along as there are many examples in this guide that -will familiarize you with this command structure and using flags, along with -how to use OasisCtl to access the ArangoGraph API. - -Note: A good rule of thumb for all variables, resource names, and identifiers -is to **assume they are all case sensitive**, when being used with Oasisctl. - -## API Authentication - -### Generating an API Key - -The first step to using the ArangoGraph API is to generate an API key. To generate a -key you will need to be signed into your account at -[dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -Once you are signed in, hover over the profile icon in the top right corner. - -![Profile Icon](../../../images/arangograph-my-account-hover.png) - -Click _My API keys_. - -This will bring you to your API key management screen. From this screen you can -create, reject, and delete API keys. - -Click the _New API key_ button. - -![Blank API Screen](../../../images/arangograph-my-api-keys.png) - -The pop-up box that follows has a few options for customizing the access level -of this API key. - -The options you have available include: - -- Limit access to 1 organization or all organizations this user has access to -- Set an expiration time, specified in number of hours -- Limit key to read-only access - -Once you have configured the API key access options, you will be presented with -your API key ID and API key secret. It is very important that you capture the -API key secret before clicking the close button. There is no way to retrieve -the API key secret after closing this pop-up window. - -![API Secret Key](../../../images/arangograph-api-key-secret.png) - -Once you have securely stored your API key ID and secret, click close. - -That is all there is to setting up API access to your ArangoGraph organizations. - -### Authenticating with Oasisctl - -Now that you have API access it is time to login with Oasisctl. - -Running the Oasisctl utility without any arguments is the equivalent of -including the --help flag. This shows all of the top level commands available -and you can continue exploring each command by typing the command name -followed by the --help flag to see the options available for that command. - -Let’s start with doing that for the login command: - -```bash -oasisctl login --help -``` - -You should see an output similar to this: - -![login help output](../../../images/oasisctl-login-help.png) - -This shows two additional flags are available, aside from the help flag. - -- `--key-id` -- `--key-secret` - -These require the values we received when creating the API key. Once you run -this command you will receive an authentication token that can be used for the -remainder of the session. - -```bash -oasisctl login \ - --key-id cncApiKeyId \ - --key-secret 873-secret-key-id -``` - -Upon successful login you should receive an authentication token: - -![On Successful Login](../../../images/oasisctl-login-success.png) - -Depending on your environment, you could instead store this token for easier -access. For example: - -With Linux: - -```bash -export OASIS_TOKEN=$(oasisctl login --key-id cncApiKeyId --key-secret 873-secret-key-id) -``` - -Or Windows Powershell: - -```powershell -setx OASIS_TOKEN (oasisctl login --key-id cncApiKeyId --key-secret 873-secret-key-id) -``` - -In the coming sections you will see how to authenticate with this token when -using other commands that require authentication. - -## Viewing and Managing Organizations and Deployments - -### Format - -This section covers the basics of retrieving information from the ArangoGraph API. -Depending on the data you are requesting from the ArangoGraph API, being able to read -it in the command line can start to become difficult. To make text easier to -read for humans and your applications, Oasisctl offers two options for -formatting the data received: - -- Table -- JSON - -You can define the format of the data by supplying the `--format` flag along -with your preferred format, like so: - -```bash -oasisctl --format json -``` - -### Viewing Information with the List Command - -This section will cover the two main functions of retrieving data with the -ArangoGraph API. These are: - -- `list` - List resources -- `get` - Get information - -Before you can jump right into making new deployments you need to be aware of -what resources you have available. This is where the list command comes in. -List serves as a way to retrieve general information, you can see all of the -available list options by accessing its help output. - -```bash -oasisctl list --help -``` - -This should output a screen similar to: - -![List help output](../../../images/oasisctl-list-help.png) - -As you can see you can get information on anything you would need about your -ArangoGraph organizations, deployments, and access control. To start, let’s take a -look at a few examples of listing information and then getting more details on -our results. - -### List Organizations - -One of the first pieces of information you may be interested in is the -organizations you have access to. This is useful to know because most commands -require an explicit declaration of the organization you are interacting with. -To find this, use list to list your available organizations: - -```bash -oasisctl list organizations --format json -``` - -Once you have your available organizations you can refer to your desired -organization using its name or id. - -![List organizations output](../../../images/oasisctl-list-org.png) - -Note: You may also notice the url attribute, this is for internal use only and -should not be treated as a publicly accessible path. - -### List Projects - -Once you have the organization name that you wish to interact with, the next -step is to list the available projects within that organization. Do this by -following the same command structure as before and instead exchange -organizations for projects, this time providing the desired organization name -with the `--organization-id` flag. - -```bash -oasisctl list projects \ - --organization-id "ArangoGraph Organization" \ - --format json -``` - -This will return information on all projects that the authenticated user has -access to. - -![List projects output](../../../images/oasisctl-list-projects.png) - -### List Deployments - -Things start getting a bit more interesting with information related to -deployments. Now that you have obtained an organization iD and a project ID, -you can list all of the associated deployments for that project. - -```bash -oasisctl list deployments \ - --organization-id "ArangoGraph Organization" \ - --project-id "Getting Started with ArangoGraph" \ - --format json - ``` - -![List deployments output](../../../images/oasisctl-list-deployments.png) - -This provides some basic details for all of the deployments associated with the -project. Namely, it provides a deployment ID which we can use to start making -modifications to the deployment or to get more detailed information, with the -`get` command. - -### Using the Get Command - -In Oasisctl, you use the get command to obtain more detailed information about -any of your available resources. It follows the same command structure as the -previous commands but typically requires a bit more information. For example, -to get more information on a specific deployment means you need to know at -least: - -- Organization ID -- Project ID -- Deployment ID - -To get more information about our example deployment we would need to execute -the following command: - -```bash -oasisctl get deployment \ - --organization-id "ArangoGraph Organization" \ - --project-id "Getting Started with ArangoGraph" \ - --deployment-id "abc123DeploymentID" \ - --format json -``` - -This returns quite a bit more information about the deployment including more -detailed server information, the endpoint URL where you can access the web interface, -and optionally the root user password. - -![Get deployment details](../../../images/oasisctl-get-deployment.png) - -### Node Size ID - -We won’t be exploring every flag available for creating a deployment but it is -a good idea to explore the concept of the node size ID value. This is an -indicator that is unique to each provider (Google, Azure, AWS) and indicates -the CPU and memory. Depending on the provider and region this can also -determine the available disk sizes for your deployment. In other words, it is -pretty important to know which `node-size-id` your deployment will be using. - -The command you execute will determine on the available providers and regions -for your organization but here is an example command that lists the available -options in the US West region for the Google Cloud Platform: - -```bash -oasisctl list nodesizes \ - --organization-id "ArangoGraph Organization" \ - --provider-id "Google Cloud Platform" \ - --region-id gcp-us-west2 -``` - -The output you will see will be similar to this: - -![List node size id](../../../images/oasisctl-list-node-size-id.png) - -It is important to note that you can scale up with more disk size but you are -unable to scale down your deployment disk size. The only way to revert back to -a lower disk size is to destroy and recreate your deployment. - -Once you have decided what your starting deployment needs are you can reference -your decision with the Id value for the corresponding configuration. So, for -our example, we will be choosing the c4-a4 configuration. The availability and -options are different for each provider and region, so be sure to confirm the -node size options before creating a new deployment. - -### Challenge - -You can use this combination of listing and getting to obtain all of the -information you want for your ArangoGraph organizations. We only explored a few of -the commands available but you can explore them all within the utility by -utilizing the `--help` flag or you can see all of the available options -in the [documentation](../oasisctl/options.md). - -Something that might be useful practice before moving on is getting the rest -of the information that you need to create a deployment. Here are a list of -items that won’t have defaults available when you attempt to create your -first deployment and you will need to supply: - -- CA Certificate ID (name) -- IP Allowlist ID (id) (optional) -- Node Size ID (id) -- Node Disk Size (GB disk size dependent on Node Size ID) -- Organization ID (name) -- Project ID (name) -- Region ID (name) - -Try looking up that information to get more familiar with how to find -information with Oasisctl. When in doubt use the `--help` flag with any -command. - -## Creating Resources - -Now that you have seen how to obtain information about your available -resources, it’s time to start using those skills to start creating your own -deployment. To create resources with Oasisctl you use the create command. -To see all the possible options you can start with the following command: - -```bash -oasisctl create --help -``` - -![Create command help output](../../../images/oasisctl-create-help.png) - -### Create a Deployment - -To take a look at all of the options available when creating a deployment the -best place to start is with our trusty help command. - -```bash -oasisctl create deployment --help -``` - -![Create deployment help output](../../../images/oasisctl-create-deployment-help.png) - -As you can see there are a lot of default options but also a few that require -some knowledge of our pre-existing resources. Attempting to create a deployment -without one of the required options will return an error indicating which value -is missing or invalid. - -Once you have collected all of the necessary information the command for -creating a deployment is simply supplying the values along with the appropriate -flags. This command will create a deployment: - -```bash -oasisctl create deployment \ - --region-id gcp-us-west2 \ - --node-size-id c4-a4 \ - --node-disk-size 10 \ - --version 3.9.2 \ - --cacertificate-id OasisCert \ - --organization-id "ArangoGraph Organization" \ - --project-id "Getting Started with ArangoGraph" \ - --name "First Oasisctl Deployment" \ - --description "The first deployment created using the awesome Oasisctl utility!" -``` - -If everything went according to play you should see similar output: - -![Deployment created successfully](../../../images/oasisctl-create-first-deployment-success.png) - -### Wait on Deployment Status - -When you create a deployment it begins the process of _bootstrapping_ which is -getting the deployment ready for use. This should happen quickly and to see if -it is ready for use you can run the wait command using the ID of the newly -created deployment, shown at the top of the information you received above. - -```bash -oasisctl wait deployment \ - --deployment-id hmkuedzw9oavvjmjdo0i -``` - -Once you receive a response of _Deployment Ready_, your deployment is indeed -ready to use. You can get some new details by running the get command. - -```bash -oasisctl get deployment \ - --organization-id "ArangoGraph Organization" \ - --deployment-id hmkuedzw9oavvjmjdo0i -``` - -![Get deployment bootstrap status](../../../images/oasisctl-get-first-deployment-bootstrapped.png) - -Once the deployment is ready you will get two new pieces of information, the -endpoint URL and Bootstrapped-At will indicate the time it became available. -If you would like to login to the web interface to verify that your server is in fact -up and running you will need to supply the `--show-root-password` flag along -with the get command, this flag does not take a value. - -### The Update Command - -The inevitable time comes when something about your deployment must change and -this is where the update command comes in. You can use update to change or -update a number of things including updating the groups, policies, and roles -for user access control. You can also update some of your deployment -information or, for our situation, add an IP Allowlist if you didn’t add one -during creation. - -There are, of course, many options available and it is always recommended to -start with the --help flag to read about all of them. - -### Update a Deployment - -This section will show an example of how to update a deployment to use a -pre-existing allowlist. To add an IP Allowlist after the fact we are really -just updating the IP Allowlist value, which is currently empty. In order to -update the IP Allowlist of a deployment you must create a allowlist and then -you can simply reference its id like so: - -```bash -oasisctl update deployment \ - --deployment-id hmkuedzw9oavvjmjdo0i \ - --ipallowlist-id abc123AllowlistID -``` - -You should receive a response with the deployment information and an indication -that deployment was updated at the top. - -You can use the update command to update everything about your deployments as -well. If you run: - -```bash -oasisctl update deployment --help -``` - -You will see the full list of options available that will allow you to scale -your deployment as needed. - -![Update deployment help output](../../../images/oasisctl-update-deployment-help.png) - -## Delete a Deployment - -There may come a day where you need to delete a resource. The process for this -follows right along with the conventions for the other commands detailed -throughout this guide. - -### The Delete Command - -For the final example in this guide we will delete the deployment that has -been created. This only requires the deployment ID and the permissions to -delete the deployment. - -```bash -oasisctl delete deployment \ - --deployment-id hmkuedzw9oavvjmjdo0i -``` - -Once the deployment has been deleted you can confirm it is gone by listing -your deployments. - -```bash -oasisctl list deployments \ - --organization-id "ArangoGraph Organization" \ - --format json -``` - -## Next Steps - -As promised, this guide covered the basics of using Oasisctl with the ArangoDB -API. While we primarily focused on viewing and managing deployments there is -also a lot more to explore, including: - -- Organization Invites Management -- Backups -- API Key Management -- Certificate Management -- User Access Control - -You can check out all these features and further details on the ones discussed -in this guide in the documentation. diff --git a/site/content/3.10/arangograph/backups.md b/site/content/3.10/arangograph/backups.md deleted file mode 100644 index e4adcd0a0e..0000000000 --- a/site/content/3.10/arangograph/backups.md +++ /dev/null @@ -1,172 +0,0 @@ ---- -title: Backups in ArangoGraph -menuTitle: Backups -weight: 50 -description: >- - You can manually create backups or use a backup policy to schedule periodic - backups, and both ways allow you to store your backups in multiple regions simultaneously ---- -## How to create backups - -To backup data in ArangoGraph for an ArangoDB installation, navigate to the -**Backups** section of your deployment created previously. - -![Backup ArangoDB](../../images/arangograph-backup-section.png) - -There are two ways to create backups. Create periodic backups using a -**Backup policy**, or create a backup manually. -Both ways allow you to create [backups in multiple regions](#multi-region-backups) -as well. - -### Periodic backups - -Periodic backups are created at a given schedule. To see when the new backup is -due, observe the schedule section. - -![Backup Policy schedule](../../images/arangograph-backup-policy-schedule.png) - -When a new deployment is created, a default **Backup policy** is created for it -as well. This policy creates backups every two hours. To edit this policy -(or any policy), highlight it in the row above and hit the pencil icon. - -![Edit Backup Policy](../../images/arangograph-edit-backup-policy.png) - -These backups are not automatically uploaded. To enable this, use the -**Upload backup to storage** option and choose a retention period that -specifies how long backups are retained after creation. - -If the **Upload backup to storage** option is enabled for a backup policy, -you can then create backups in different regions than the default one. -The regions where the default backup is copied are shown in the -**Additional regions** column in the **Policies** section. - -### Manual backups - -It's also possible to create a backup on demand. To do this, click **Back up now**. - -![Back up Now](../../images/arangograph-back-up-now.png) - -![Back up Now Dialog](../../images/arangograph-back-up-now-dialog.png) - -If you want to manually copy a backup to a different region than the default -one, first ensure that the **Upload backup to storage** option is enabled. -Then, highlight the backup row and use the -**Copy backup to a different region** button from the **Actions** column. - -The source backup ID from -which the copy is created is displayed in the **Copied from Backup** column. - -![Copy backup to a different region](../../images/arangograph-copy-backup-different-region.png) - -![Multiple Backups](../../images/arangograph-multiple-backups.png) - -### Uploading backups - -By default, a backup is not uploaded to the cloud, instead it remains on the -servers of the deployment. To make a backup that is resilient against server -(disk) failures, upload the backup to cloud storage. - -When the **Upload backup to cloud storage** option is enabled, the backup is -preserved for a long time and does not occupy any disk space on the servers. -This also allows copying the backup to different regions and it can be -configured in the **Multiple region backup** section. - -Uploaded backups are -required for [cloning](#how-to-clone-deployments-using-backups). - -#### Best practices for uploading backups - -When utilizing the **Upload backup to cloud storage** feature, a recommended -approach is to implement a backup strategy that balances granularity and storage -efficiency. - -One effective strategy involves creating a combination of backup intervals and -retention periods. For instance, consider the following example: - -1. Perform a backup every 4 hours with a retention period of 24 hours. This - provides frequent snapshots of your data, allowing you to recover recent - changes. -2. Perform a backup every day with a retention period of a week. Daily backups - offer a broader time range for recovery, enabling you to restore data from - any point within the past week. -3. Perform a backup every week with a retention period of a month. Weekly - backups allow you to recover from more extensive data. -4. Perform a backup every month with a retention period of a year. Monthly - backups provide a long-term perspective, enabling you to restore data from - any month within the past year. - -This backup strategy offers good granularity, providing multiple recovery -options for different timeframes. By implementing this approach, you have a -total number of backups that is considerable lower in comparison to other -alternatives such as having hourly backups with a retention period of a year. - -## Multi-region backups - -Using the multi-region backup feature, you can store backups in multiple regions -simultaneously either manually or automatically as part of a **Backup policy**. -If a backup created in one region goes down, it is still available in other -regions, significantly improving reliability. - -Multiple region backup is only available when the -**Upload backup to cloud storage** option is enabled. - -![Multiple Region Backup](../../images/arangograph-multi-region-backup.png) - -## How to restore backups - -To restore a database from a backup, highlight the desired backup and click the restore icon. - -{{< warning >}} -All current data will be lost when restoring. To make sure that new data that -has been inserted after the backup creation is also restored, create a new -backup before using the **Restore Backup** feature. - -During restore, the deployment is temporarily not available. -{{< /warning >}} - -![Restore From Backup](../../images/arangograph-restore-from-backup.png) - -![Restore From Backup Dialog](../../images/arangograph-restore-from-backup-dialog.png) - -![Restore From Backup Status Pending](../../images/arangograph-restore-from-backup-status-pending.png) - -![Restore From Backup Status Restored](../../images/arangograph-restore-from-backup-status-restored.png) - -## How to clone deployments using backups - -Creating a deployment from a backup allows you to duplicate an existing -deployment with all its data, for example, to create a test environment or to -move to a different cloud provider or region within ArangoGraph. - -{{< info >}} -This feature is only available if the backup you wish to clone has been -uploaded to cloud storage. -{{< /info >}} - -{{< info >}} -The cloned deployment will have the exact same features as the previous -deployment including node size and model. The cloud provider and the region -can stay the same or you can select a different one. -For restoring a deployment as quick as possible, it is recommended to create a -deployment in the same region as where the backup resides to avoid cross-region -data transfer. -The data contained in the backup will be restored to this new deployment. - -The *root password* for this deployment will be different. -{{< /info >}} - -1. Highlight the backup you wish to clone from and hit **Clone backup to new deployment**. - - ![ArangoGraph Clone Deployment From Backup](../../images/arangograph-clone-deployment-from-backup.png) - -2. Choose whether the clone should be created using the current provider and in - the same region as the backup or using a different provider, a different region, - or both. - - ![ArangoGraph Clone Deployment Select Region](../../images/arangograph-clone-deployment-select.png) - -3. The view should navigate to the new deployment being bootstrapped. - - ![ArangoGraph Cloned Deployment](../../images/arangograph-cloned-deployment.png) - -This feature is also available through [oasisctl](oasisctl/_index.md). diff --git a/site/content/3.10/arangograph/data-loader/_index.md b/site/content/3.10/arangograph/data-loader/_index.md deleted file mode 100644 index 38f96ab442..0000000000 --- a/site/content/3.10/arangograph/data-loader/_index.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Load your data into ArangoGraph -menuTitle: Data Loader -weight: 22 -description: >- - Load your data into ArangoGraph and transform it into richly-connected graph - structures, without needing to write any code or deploy any infrastructure ---- - -ArangoGraph provides different ways of loading your data into the platform, -based on your migration use case. - -## Transform data into a graph - -The ArangoGraph Data Loader allows you to transform existing data from CSV file -formats into data that can be analyzed by the ArangoGraph platform. - -You provide your data in CSV format, a common format used for exports of data -from various systems. Then, using a no-code editor, you can model the schema of -this data and the relationships between them. This allows you to ingest your -existing datasets into your ArangoGraph database, without the need for any -development effort. - -You can get started in a few easy steps. - -{{< tabs "data-loader-steps" >}} - -{{< tab "1. Create database" >}} -Choose an existing database or create a new one and enter a name for your new graph. -{{< /tab >}} - -{{< tab "2. Add files" >}} -Drag and drop your data files in CSV format. -{{< /tab >}} - -{{< tab "3. Design your graph" >}} -Model your graph schema by adding nodes and connecting them via edges. -{{< /tab >}} - -{{< tab "4. Import data" >}} -Once you are ready, save and start the import. The resulting graph is an -[EnterpriseGraph](../../graphs/enterprisegraphs/_index.md) with its -corresponding collections, available in your ArangoDB web interface. -{{< /tab >}} - -{{< /tabs >}} - -Follow this [working example](../data-loader/example.md) to see how easy it is -to transform existing data into a graph. - -## Import data to the cloud - -To import data from various files into collections **without creating a graph**, -get the ArangoDB client tools for your operating system from the -[download page](https://arangodb.com/download-major/). - -- To import data to ArangoGraph from an existing ArangoDB instance, see - [arangodump](../../components/tools/arangodump/) and - [arangorestore](../../components/tools/arangorestore/). -- To import pre-existing data in JSON, CSV, or TSV format, see - [arangoimport](../../components/tools/arangoimport/). - -## How to access the Data Loader - -1. If you do not have a deployment yet, [create a deployment](../deployments/_index.md#how-to-create-a-new-deployment) first. -2. Open the deployment you want to load data into. -3. In the **Load Data** section, click the **Load your data** button. -4. Select your migration use case. - -![ArangoGraph Data Loader Migration Use Cases](../../../images/arangograph-data-loader-migration-use-cases.png) \ No newline at end of file diff --git a/site/content/3.10/arangograph/data-loader/add-files.md b/site/content/3.10/arangograph/data-loader/add-files.md deleted file mode 100644 index 114b588e40..0000000000 --- a/site/content/3.10/arangograph/data-loader/add-files.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Add files into Data Loader -menuTitle: Add files -weight: 5 -description: >- - Provide your set of files in CSV format containing the data to be imported ---- - -The Data Loader allows you to upload your data files in CSV format into -ArangoGraph and then use these data sources to design a graph using the -built-in graph designer. - -## Upload your files - -You can upload your CSV files in the following ways: - -- Drag and drop your files in the designated area. -- Click the **Browse files** button and select the files you want to add. - -![ArangoGraph Data Loader Upload Files](../../../images/arangograph-data-loader-upload-files.png) - -You have the option to either upload several files collectively as a batch or -add them individually. Furthermore, you can supplement additional files later on. -After a file has been uploaded, you can expand it to preview both the header and -the first row of data within the file. - -In case you upload CSV files without fields, they will not be available for -manipulation. - -Once the files are uploaded, you can start [designing your graph](../data-loader/design-graph.md). - -### File formatting limitations - -Ensure that the files you upload are correctly formatted. Otherwise, errors may -occur, the upload may fail, or the data may not be correctly mapped. - -The following restrictions and limitations apply: - -- The only supported file format is CSV. If you submit an invalid file format, - the upload of that specific file will be prevented. -- It is required that all CSV files have a header row. If you upload a file - without a header, the first row of data is treated as the header. To avoid - losing the first row of the data, make sure to include headers in your files. -- The CSV file should have unique header names. It is not possible to have two - columns with the same name within the same file. - -For more details, see the [File validation](../data-loader/import.md#file-validation) section. - -### Upload limits - -Note that there is a cumulative file upload limit of 1GB. This means that the -combined size of all files you upload should not exceed 1GB. If the total size -of the uploaded files surpasses this limit, the upload may not be successful. - -## Delete files - -You can remove uploaded files by clicking the **Delete file** button in the -**Your files** panel. Please keep in mind that in order to delete a file, -you must first remove all graph associations associated with it. \ No newline at end of file diff --git a/site/content/3.10/arangograph/data-loader/design-graph.md b/site/content/3.10/arangograph/data-loader/design-graph.md deleted file mode 100644 index b1c5eaf3af..0000000000 --- a/site/content/3.10/arangograph/data-loader/design-graph.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Design your graph -menuTitle: Design graph -weight: 10 -description: >- - Design your graph database schema using the integrated graph modeler in the Data Loader ---- - -Based on the data you have uploaded, you can start designing your graph. -The graph designer allows you to create a schema using nodes and edges. -Once this is done, you can save and start the import. The resulting -[EnterpriseGraph](../../graphs/enterprisegraphs/_index.md) and the -corresponding collections are created in your ArangoDB database instance. - -## How to add a node - -Nodes are the main objects in your data model and include the attributes of the -objects. - -1. To create a new node, click the **Add node** button. -2. In the graph designer, click on the newly created node to view the **Node details**. -3. In the **Node details** panel, fill in the following fields: - - For **Node label**, enter a name you want to use for the node. - - For **File**, select a file from the list to associate it with the node. - - For **Primary Identifier**, select a field from the list. This is used to - reference the nodes when you define relations with edges. - - For **File Headers**, select one or more attributes from the list. - -![ArangoGraph Data Loader Add Node](../../../images/arangograph-data-loader-add-node.png) - -## How to connect nodes - -Nodes can be connected by edges to express and categorize the relations between -them. A relation always has a direction, going from one node to another. You can -define this direction in the graph designer by dragging your cursor from one -particular node to another. - -To connect two nodes, you can use the **Connect node(s)** button. Click on any -node to self-reference it or drag it to connect it to another node. Alternatively, -when you select a node, a plus sign will appear, allowing you to directly add a -new node with an edge. - -{{< tip >}} -To quickly recenter your elements on the canvas, you can use the **Center View** -button located in the bottom right corner. This brings your nodes and edges back -into focus. -{{< /tip >}} - -The edge needs to be associated with a file and must have a label. Note that a -node and an edge cannot have the same label. - -See below the steps to add details to an edge. - -1. Click on an edge in the graph designer. -2. In the **Edit Edge** panel, fill in the following fields: - - For **Edge label**, enter a name you want to use for the edge. - - For **Relation file**, select a file from the list to associate it with the edge. - - To define how the relation points from one node to another, select the - corresponding relation file header for both the origin file (`_from`) and the - destination file (`_to`). - - For **File Headers**, select one or more attributes from the list. - -![ArangoGraph Data Loader Edit Edge](../../../images/arangograph-data-loader-edit-edge.png) - -## How to delete elements - -To remove a node or an edge, simply select it in the graph designer and click the -**Delete** icon. \ No newline at end of file diff --git a/site/content/3.10/arangograph/deployments/_index.md b/site/content/3.10/arangograph/deployments/_index.md deleted file mode 100644 index b8dd98d490..0000000000 --- a/site/content/3.10/arangograph/deployments/_index.md +++ /dev/null @@ -1,301 +0,0 @@ ---- -title: Deployments in ArangoGraph -menuTitle: Deployments -weight: 20 -description: >- - How to create and manage deployments in ArangoGraph ---- -An ArangoGraph deployment is an ArangoDB cluster or single server, configured -as you choose. - -Each deployment belongs to a project, which belongs to an organization in turn. -You can have any number of deployments under one project. - -**Organizations → Projects → <u>Deployments</u>** - -![ArangoGraph Deployments](../../../images/arangograph-deployments-page.png) - -## How to create a new deployment - -1. If you do not have a project yet, - [create a project](../projects.md#how-to-create-a-new-project) first. -2. In the main navigation, click __Deployments__. -3. Click the __New deployment__ button. -4. Select the project you want to create the deployment for. -5. Set up your deployment. The configuration options are described below. - -{{< info >}} -Deployments contain exactly **one policy**. Within that policy, you can define -role bindings to regulate access control on a deployment level. -{{< /info >}} - -### In the **General** section - -- Enter the __Name__ and optionally a __Short description__ for the deployment. -- Select the __Provider__ and __Region__ of the provider. - {{< warning >}} - Once a deployment has been created, it is not possible to change the - provider and region anymore. - {{< /warning >}} - -![ArangoGraph New Deployment General](../../../images/arangograph-new-deployment-general.png) - -### In the **Sizing** section - -- Choose a __Model__ for the deployment: - - - __OneShard__ deployments are suitable when your data set fits in a single node. - They are ideal for graph use cases. This model has a fixed number of 3 nodes. - - - __Sharded__ deployments are suitable when your data set is larger than a single - node. The data will be sharded across multiple nodes. You can select the - __Number of nodes__ for this deployment model. The more nodes you have, the - higher the replication factor can be. - - - __Single Server__ deployments are suitable when you want to try out ArangoDB without - the need for high availability or scalability. The deployment will contain a - single server only. Your data will not be replicated and your deployment can - be restarted at any time. - -- Select a __NODE SIZE__ from the list of available options. Each option is a - combination of vCPUs, memory, and disk space per node. - -![ArangoGraph New Deployment Sizing](../../../images/arangograph-new-deployment-sizing.png) - -### In the **Advanced** section - -- Select the __DB Version__. - If you don't know which DB version to select, use the version selected by default. -- Select the desired __Support Plan__. Click the link below the field to get - more information about the different support plans. -- In the __Certificate__ field: - - The default certificate created for your project is selected automatically. - - If you have no default certificate, or want to use a new certificate, - create a new certificate by typing the desired name for it and hitting - enter or clicking __Create "\<name\>"__ when done. - - Or, if you already have multiple certificates, select the desired one. -- _Optional but strongly recommended:_ In the __IP allowlist__ field, select the - desired one in case you want to limit access to your deployment to certain - IP ranges. To create a allowlist, navigate to your project and select the - __IP allowlists__ tab. See [How to manage IP allowlists](../projects.md#how-to-manage-ip-allowlists) - for details. - {{< security >}} - For any kind of production deployment it is strongly advise to use an IP allowlist. - {{< /security >}} -- Select a __Deployment Profile__. Profile options are only available on request. - -![ArangoGraph New Deployment Advanced](../../../images/arangograph-new-deployment-advanced.png) - -### In the **Summary** panel - -1. Review the configuration, and if you're okay with the setup, press the - __Create deployment__ button. -2. You are taken to the deployment overview page. - **Note:** Your deployment is being bootstrapped at that point. This process - takes a few minutes. Once the deployment is ready, you receive a confirmation - email. - -## How to access your deployment - -1. In the main navigation, click the __Dashboard__ icon and then click __Projects__. -2. In the __Projects__ page, click the project for - which you created a deployment earlier. -3. Alternatively, you can access your deployment by clicking __Deployments__ in the - dashboard navigation. This page shows all deployments from all projects. - Click the name of the deployment you want to view. -4. For each deployment in your project, you see the status. While your new - deployment is being set up, it displays the __bootstrapping__ status. -5. Press the __View__ button to show the deployment page. -6. When a deployment displays a status of __OK__, you can access it. -7. Click the __Open database UI__ button or on the database UI link to open - the dashboard of your new ArangoDB deployment. - -At this point your ArangoDB deployment is available for you to use — **Have fun!** - -If you have disabled the [auto-login option](#auto-login-to-database-ui) to the -database web interface, you need to follow the additional steps outlined below -to access your deployment: - -1. Click the copy icon next to the root password. This copies the deployment - root password to your clipboard. You can also click the view icon to unmask - the root password to see it. - {{< security >}} - Do not use the root username/password for everyday operations. It is recommended - to use them only to create other user accounts with appropriate permissions. - {{< /security >}} -2. Click the __Open database UI__ button or on the database UI link to open - the dashboard of your new ArangoDB deployment. -3. In the __username__ field type `root`, and in the __password__ field paste the - password that you copied earlier. -4. Press the __Login__ button. -5. Press the __Select DB: \_system__ button. - -{{< info >}} -Each deployment is accessible on two ports: - -- Port `8529` is the standard port recommended for use by web-browsers. -- Port `18529` is the alternate port that is recommended for use by automated services. - -The difference between these ports is the certificate used. If you enable -__Use well-known certificate__, the certificates used on port `8529` is well-known -and automatically accepted by most web browsers. The certificate used on port -`18529` is a self-signed certificate. For securing automated services, the use of -a self-signed certificate is recommended. Read more on the -[Certificates](../security-and-access-control/x-509-certificates.md) page. -{{< /info >}} - -## Password settings - -### How to enable the automatic root user password rotation - -Password rotation refers to changing passwords regularly - a security best -practice to reduce the vulnerability to password-based attacks and exploits -by limiting for how long passwords are valid. The ArangoGraph Insights Platform -can automatically change the `root` user password of an ArangoDB deployment -periodically to improve security. - -1. Navigate to the __Deployment__ for which you want to enable an automatic - password rotation for the root user. -2. In the __Quick start__ section, click the button with the __gear__ icon next to the - __ROOT PASSWORD__. -3. In the __Password Settings__ dialog, turn the automatic password rotation on - and click the __Confirm__ button. - - ![ArangoGraph Deployment Password Rotation](../../../images/arangograph-deployment-password-rotation.png) -4. You can expand the __Root password__ panel to see when the password was - rotated last. The rotation takes place every three months. - -### Auto login to database UI - -ArangoGraph provides the ability to automatically login to your database using -your existing ArangoGraph credentials. This not only provides a seamless -experience, preventing you from having to manage multiple sets of credentials -but also improves the overall security of your database. As your credentials -are shared between ArangoGraph and your database, you can benefit from -end-to-end audit traceability for a given user, as well as integration with -ArangoGraph SSO. - -You can enable this feature in the **Password Settings** dialog. Please note -that it may take a few minutes to get activated. -Once enabled, you no longer have to fill in the `root` user and password of -your ArangoDB deployment. - -{{< info >}} -If you use the auto login feature with AWS -[private endpoints](../deployments/private-endpoints.md), it is recommended -to switch off the `custom DNS` setting. -{{< /info >}} - -This feature can be disabled at any time. You may wish to consider explicitly -disabling this feature in the following situations: -- Your workflow requires you to access the database UI using different accounts - with differing permission sets, as you cannot switch database users when - automatic login is enabled. -- You need to give individuals access to a database's UI without giving them - any access to ArangoGraph. Note, however, that it's possible to only give an - ArangoGraph user database UI access, without other ArangoGraph permissions. - -{{< warning >}} -When the auto login feature is enabled, users cannot edit their permissions on -the ArangoDB database web interface as all permissions are managed by the -ArangoGraph platform. -{{< /warning >}} - -Before getting started, make sure you are signed into ArangoGraph as a user -with one of the following permissions in your project: -- `data.deployment.full-access` -- `data.deployment.read-only-access` - -Organization owners have these permissions enabled by default. -The `deployment-full-access-user` and `deployment-read-only-user` roles which -contain these permissions can also be granted to other members of the -organization. See how to create a -[role binding](../security-and-access-control/_index.md#how-to-view-edit-or-remove-role-bindings-of-a-policy). - -{{< warning >}} -This feature is available on `443` port only. -{{< /warning >}} - -## How to edit a deployment - -You can modify a deployment's configuration, including the ArangoDB version -that is being used, change the memory size, or even switch from -a OneShard deployment to a Sharded one if your data set no longer fits in a -single node. - -{{< tip >}} -To edit an existing deployment, you must have the necessary set of permissions -attached to your role. Read more about [roles and permissions](../security-and-access-control/_index.md#roles). -{{< /tip >}} - -1. In the main navigation, click **Deployments** and select an existing - deployment from the list, or click **Projects**, select a project, and then - select a deployment. -2. In the **Quick start** section, click the **Edit** button. -3. In the **General** section, you can do the following: - - Change the deployment name - - Change the deployment description -4. In the **Sizing** section, you can do the following: - - Change **OneShard** deployments into **Sharded** deployments. To do so, - select **Sharded** in the **Model** dropdown list. You can select the - number of nodes for your deployment. This can also be modified later on. - {{< warning >}} - You cannot switch from **Sharded** back to **OneShard**. - {{< /warning >}} - - Change **Single Server** deployments into **OneShard** or **Sharded** deployments. - {{< warning >}} - You cannot switch from **Sharded** or **OneShard** back to **Single Server**. - {{< /warning >}} - - Scale up or down the node size. - {{< warning >}} - When scaling up or down the size in AWS deployments, the new value gets locked - and cannot be changed again until the cloud provider rate limit is reset. - {{< /warning >}} -5. In the **Advanced** section, you can do the following: - - Upgrade the ArangoDB version that is currently being used. See also - [Upgrades and Versioning](upgrades-and-versioning.md) - - Select a different certificate. - - Add or remove an IP allowlist. - - Select a deployment profile. -6. All changes are reflected in the **Summary** panel. Review the new - configuration and click **Save changes**. - -## How to connect a driver to your deployment - -[ArangoDB drivers](../../develop/drivers/_index.md) allow you to use your ArangoGraph -deployment as a database system for your applications. Drivers act as interfaces -between different programming languages and ArangoDB, which enable you to -connect to and manipulate ArangoDB deployments from within compiled programs -or using scripting languages. - -To get started, open a deployment. -In the **Quick start** section, click on the **Connecting drivers** button and -select your programming language. The code snippets provide examples on how to -connect to your instance. - -{{< tip >}} -Note that ArangoGraph Insights Platform runs deployments in a cluster -configuration. To achieve the best possible availability, your client -application has to handle connection failures by retrying operations if needed. -{{< /tip >}} - -![ArangoGraph Connecting Drivers Example](../../../images/arangograph-connecting-drivers-example.png) - -## How to delete a deployment - -{{< danger >}} -Deleting a deployment deletes all its data and backups. -This operation is **irreversible**. Please proceed with caution. -{{< /danger >}} - -1. In the main navigation, in the __Projects__ section, click the project that - holds the deployment you wish to delete. -2. In the __Deployments__ page, click the deployment you wish to delete. -3. Click the __Delete/Lock__ entry in the navigation. -4. Click the __Delete deployment__ button. -5. In the modal dialog, confirm the deletion by entering `Delete!` into the - designated text field. -6. Confirm the deletion by pressing the __Yes__ button. -7. You will be taken back to the deployments page of the project. - The deployment being deleted will display the __Deleting__ status until it has - been successfully removed. diff --git a/site/content/3.10/arangograph/deployments/private-endpoints.md b/site/content/3.10/arangograph/deployments/private-endpoints.md deleted file mode 100644 index 39e42514fd..0000000000 --- a/site/content/3.10/arangograph/deployments/private-endpoints.md +++ /dev/null @@ -1,221 +0,0 @@ ---- -title: Private endpoint deployments in ArangoGraph -menuTitle: Private endpoints -weight: 5 -description: >- - Use the private endpoint feature to isolate your deployments and increase - security ---- -This topic describes how to create a private endpoint deployment and -securely deploy to various cloud providers such as Google Cloud Platform (GCP), -Microsoft Azure, and Amazon Web Services (AWS). Follow the steps outlined below -to get started. - -{{< tip >}} -Private endpoints on Microsoft Azure can be cross region; in AWS they should be -located in the same region. -{{< /tip >}} - -{{< info >}} -For more information about the certificates used for private endpoints, please -refer to the [How to manage certificates](../security-and-access-control/x-509-certificates.md) -section. -{{< /info >}} - -## Google Cloud Platform (GCP) - -Google Cloud Platform (GCP) offers a feature called -[Private Service Connect](https://cloud.google.com/vpc/docs/private-service-connect) -that allows private consumption of services across VPC networks that belong to -different groups, teams, projects, or organizations. You can publish and consume -services using the defined IP addresses which are internal to your VPC network. - -In ArangoGraph, you can -[create a regular deployment](_index.md#how-to-create-a-new-deployment) -and change it to a private endpoint deployment afterwards. - -Such a deployment is not reachable from the internet anymore, other than via -the ArangoGraph dashboard to administrate it. To revert to a public deployment, -please contact support via **Request help** in the help menu. - -To configure a private endpoint for GCP, you need to provide your Google project -names. ArangoGraph then configures a **Private Endpoint Service** that automatically -connect to private endpoints that are created for those projects. - -After the creation of the **Private Endpoint Service**, you should receive a -service attachment that you need during the creation of your private endpoint(s). - -1. Open the deployment you want to change. -2. In the **Quick start** section, click the **Edit** button with an ellipsis (`…`) - icon. -3. Click **Change to private endpoint** in the menu. - ![ArangoGraph Deployment Private Endpoint Menu](../../../images/arangograph-gcp-change.png) -4. In the configuration wizard, click **Next** to enter your configuration details. -5. Enter one or more Google project names. You can also add them later in the summary view. - Click **Next**. - ![ArangoGraph Deployment Private Endpoint Setup 2](../../../images/arangograph-gcp-private-endpoint.png) -6. Configure custom DNS names. This step is optional and disabled by default. - Note that, once enabled, this setting is immutable and cannot be reverted. - Click **Next** to continue. - {{< info >}} - By default, your private endpoint is available to all VPCs that connect to it - at `https://<endpoint_id>-pe.arangodb.cloud` with the - [well-known certificate](../security-and-access-control/x-509-certificates.md#well-known-x509-certificates). - If the custom DNS is enabled, you will be responsible for the DNS of your - private endpoints. - {{< /info >}} - ![ArangoGraph Private Endpoint Custom DNS](../../../images/arangograph-gcp-custom-dns.png) -7. Click **Confirm Settings** to change the deployment. -8. Back in the **Overview** page, scroll down to the **Private Endpoint** section - that is now displayed to see the connection status and to change the - configuration. -9. ArangoGraph configures a **Private Endpoint Service**. As soon as the - **Service Attachment** is ready, you can use it to configure the Private - Service Connect in your VPC. - -{{< tip >}} -When you create a private endpoint in ArangoGraph, both endpoints (the regular -one and the new private one) are available for two hours. During this time period, -you can switch your application to the new private endpoint. After this period, -the old endpoint is not available anymore. -{{< /tip >}} - -## Microsoft Azure - -Microsoft Azure offers a feature called -[Azure Private Link](https://docs.microsoft.com/en-us/azure/private-link) -that allows you to limit communication between different Azure servers and -services to Microsoft's backbone network without exposure to the internet. -It can lower network latency and increase security. - -If you want to connect an ArangoGraph deployment running on Azure with other -services you run on Azure using such a tunnel, then -[create a regular deployment](_index.md#how-to-create-a-new-deployment) -and change it to a private endpoint deployment afterwards. - -The deployment is not reachable from the internet anymore, other than via -the ArangoGraph dashboard to administrate it. To revert to a public deployment, -please contact support via **Request help** in the help menu. - -1. Open the deployment you want to change. -2. In the **Quick start** section, click the **Edit** button with an ellipsis (`…`) - icon. -3. Click **Change to private endpoint** in the menu. - ![ArangoGraph Deployment Private Endpoint Menu](../../../images/arangograph-deployment-private-endpoint-menu.png) -4. In the configuration wizard, click **Next** to enter your configuration details. -5. Enter one or more Azure Subscription IDs (GUIDs). They cannot be - changed anymore once a connection has been established. - Proceed by clicking **Next**. - ![ArangoGraph Deployment Private Endpoint Setup 2](../../../images/arangograph-deployment-private-endpoint-setup2.png) -6. Configure custom DNS names. This step is optional and disabled by default, - you can also add or change them later from the summary view. - Click **Next** to continue. - {{< info >}} - When using custom DNS names on private endpoints running on Azure, you need - to use the [self-signed certificate](../security-and-access-control/x-509-certificates.md#self-signed-x509-certificates). - {{< /info >}} -7. Click **Confirm Settings** to change the deployment. -8. Back in the **Overview** page, scroll down to the **Private Endpoint** section - that is now displayed to see the connection status and to change the - configuration. -9. ArangoGraph configures a **Private Endpoint Service**. As soon as the **Azure alias** - becomes available, you can copy it and then go to your Microsoft Azure portal - to create Private Endpoints using this alias. The number of established - **Connections** increases and you can view the connection details by - clicking it. - -{{< tip >}} -When you create a private endpoint in ArangoGraph, both endpoints (the regular -one and the new private one) are available for two hours. During this time period, -you can switch your application to the new private endpoint. After this period, -the old endpoint is not available anymore. -{{< /tip >}} - -## Amazon Web Services (AWS) - -AWS offers a feature called [AWS PrivateLink](https://aws.amazon.com/privatelink) -that enables you to privately connect your Virtual Private Cloud (VPC) to -services, without exposure to the internet. You can control the specific API -endpoints, sites, and services that are reachable from your VPC. - -Amazon VPC allows you to launch AWS resources into a -virtual network that you have defined. It closely resembles a traditional -network that you would normally operate, with the benefits of using the AWS -scalable infrastructure. - -In ArangoGraph, you can -[create a regular deployment](_index.md#how-to-create-a-new-deployment) and change it -to a private endpoint deployment afterwards. - -The ArangoDB private endpoint deployment is not exposed to public internet -anymore, other than via the ArangoGraph dashboard to administrate it. To revert -it to a public deployment, please contact the support team via **Request help** -in the help menu. - -To configure a private endpoint for AWS, you need to provide the AWS principals related -to your VPC. The ArangoGraph Insights Platform configures a **Private Endpoint Service** -that automatically connects to private endpoints that are created in those principals. - -1. Open the deployment you want to change. -2. In the **Quick start** section, click the **Edit** button with an ellipsis (`…`) - icon. -3. Click **Change to private endpoint** in the menu. - ![ArangoGraph Deployment AWS Change to Private Endpoint](../../../images/arangograph-aws-change-to-private-endpoint.png) -4. In the configuration wizard, click **Next** to enter your configuration details. -5. Click **Add Principal** to start configuring the AWS principal(s). - You need to enter a valid account, which is your 12 digit AWS account ID. - Adding usernames or role names is optional. You can also - skip this step and add them later from the summary view. - {{< info >}} - Principals cannot be changed anymore once a connection has been established. - {{< /info >}} - {{< warning >}} - To verify your endpoint service in AWS, you must use the same principal as - configured in ArangoGraph. Otherwise, the service name cannot be verified. - {{< /warning >}} - ![ArangoGraph AWS Private Endpoint Configure Principals](../../../images/arangograph-aws-endpoint-configure-principals.png) -6. Configure custom DNS names. This step is optional and disabled by default, - you can also add or change them later from the summary view. - Click **Next** to continue. - {{< info >}} - By default, your private endpoint is available to all VPCs that connect to it - at `https://<endpoint_id>-pe.arangodb.cloud` with the well-known certificate. - If the custom DNS is enabled, you will be responsible for the DNS of your - private endpoints. - {{< /info >}} - ![ArangoGraph AWS Private Endpoint Alternate DNS](../../../images/arangograph-aws-private-endpoint-dns.png) -7. Confirm that you want to use a private endpoint for your deployment by - clicking **Confirm Settings**. -8. Back in the **Overview** page, scroll down to the **Private Endpoint** section - that is now displayed to see the connection status and change the - configuration, if needed. - ![ArangoGraph AWS Private Endpoint Overview](../../../images/arangograph-aws-private-endpoint-overview.png) - {{< info >}} - Note that - [Availability Zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones) - are independently mapped for each AWS account. The physical location of a - zone may differ from one account to another account. To coordinate - Availability Zones across AWS accounts, you must use the - [Availability Zone ID](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html). - {{< /info >}} - - {{< tip >}} - To learn more or request help from the ArangoGraph support team, click **Help** - in the top right corner of the **Private Endpoint** section. - {{< /tip >}} -9. ArangoGraph configures a **Private Endpoint Service**. As soon as this is available, - you can use it in the AWS portal to create an interface endpoint to connect - to your endpoint service. For more details, see - [How to connect to an endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-endpoint-service.html#share-endpoint-service). - -{{< tip >}} -To establish connectivity and enable traffic flow, make sure you add a route -from the originating machine to the interface endpoint. -{{< /tip >}} - -{{< tip >}} -When you create a private endpoint in ArangoGraph, both endpoints (the regular -one and the new private one) are available for two hours. During this time period, -you can switch your application to the new private endpoint. After this period, -the old endpoint is not available anymore. -{{< /tip >}} diff --git a/site/content/3.10/arangograph/migrate-to-the-cloud.md b/site/content/3.10/arangograph/migrate-to-the-cloud.md deleted file mode 100644 index 8a3f4a9802..0000000000 --- a/site/content/3.10/arangograph/migrate-to-the-cloud.md +++ /dev/null @@ -1,259 +0,0 @@ ---- -title: Cloud Migration Tool -menuTitle: Migrate to the cloud -weight: 30 -description: >- - Migrating data from bare metal servers to the cloud with minimal downtime -draft: true ---- -The `arangosync-migration` tool allows you to easily move from on-premises to -the cloud while ensuring a smooth transition with minimal downtime. -Start the cloud migration, let the tool do the job and, at the same time, -keep your local cluster up and running. - -Some of the key benefits of the cloud migration tool include: -- Safety comes first - pre-checks and potential failures are carefully handled. -- Your data is secure and fully encrypted. -- Ease-of-use with a live migration while your local cluster is still in use. -- Get access to what a cloud-based fully managed service has to offer: - high availability and reliability, elastic scalability, and much more. - -## Downloading the tool - -The `arangosync-migration` tool is available to download for the following -operating systems: - -**Linux** -- [AMD64 (x86_64) architecture](https://download.arangodb.com/arangosync-migration/linux/amd64/arangosync-migration) -- [ARM64 (AArch64) architecture](https://download.arangodb.com/arangosync-migration/linux/arm64/arangosync-migration) - -**macOS / Darwin** -- [AMD64 (x86_64) architecture](https://download.arangodb.com/arangosync-migration/darwin/amd64/arangosync-migration) -- [ARM64 (AArch64) architecture](https://download.arangodb.com/arangosync-migration/darwin/arm64/arangosync-migration) - -**Windows** -- [AMD64 (x86_64) architecture](https://download.arangodb.com/arangosync-migration/windows/amd64/arangosync-migration.exe) -- [ARM64 (AArch64) architecture](https://download.arangodb.com/arangosync-migration/windows/arm64/arangosync-migration.exe) - -For macOS as well as other Unix-based operating systems, run the following -command to make sure you can execute the binary: - -```bash -chmod 755 ./arangosync-migration -``` - -## Prerequisites - -Before getting started, make sure the following prerequisites are in place: - -- Go to the [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home) - and sign in. If you don’t have an account yet, sign-up to create one. - -- Generate an ArangoGraph API key and API secret. See a detailed guide on - [how to create an API key](api/set-up-a-connection.md#creating-an-api-key). - -{{< info >}} -The cloud migration tool is only available for clusters. -{{< /info >}} - -### Setting up the target deployment in ArangoGraph - -Continue by [creating a new ArangoGraph deployment](deployments/_index.md#how-to-create-a-new-deployment) -or choose an existing one. - -The target deployment in ArangoGraph requires specific configuration rules to be -set up before the migration can start: - -- **Configuration settings**: The target deployment must be compatible with the - source data cluster. This includes the ArangoDB version that is being used, - the DB-Servers count, and disk space. -- **Deployment region and cloud provider**: Choose the closest region to your - data cluster. This factor can speed up your migration to the cloud. - -After setting up your ArangoGraph deployment, wait for a few minutes for it to become -fully operational. - -{{< info >}} -Note that Developer mode deployments are not supported. -{{< /info >}} - -## Running the migration tool - -The `arangosync-migration` tool provides a set of commands that allow you to: -- start the migration process -- check whether your source and target clusters are fully compatible -- get the current status of the migration process -- stop or abort the migration process -- switch the local cluster to read-only mode - -### Starting the migration process - -To start the migration process, run the following command: - -```bash -arangosync-migration start -``` -The `start` command runs some pre-checks. Among other things, it measures -the disk space which is occupied by your ArangoDB cluster. If you are using the -same data volume for ArangoDB servers and other data as well, the measurements -can be incorrect. Provide the `--source.ignore-metrics` option to overcome this. - -You also have the option of doing a `--check-only` without starting the actual -migration. If specified, this checks if your local cluster and target deployment -are compatible without sending any data to ArangoGraph. - -Once the migration starts, the local cluster enters into monitoring mode and the -synchronization status is displayed in real-time. If you don't want to see the -status you can terminate this process, as the underlying agent process -continues to work. If something goes wrong, restarting the same command restores -the replication state. - -To restart the migration, first `stop` or `stop --abort` the migration. Then, -start it again using the `start` command. - -{{< warning >}} -Starting the migration creates a full copy of all data from the source cluster -to the target deployment in ArangoGraph. All data that has previously existed in the -target deployment will be lost. -{{< /warning >}} - -### During the migration - -The following takes place during an active migration: -- The source data cluster remains usable. -- The target deployment in ArangoGraph is switched to read-only mode. -- Your root user password is not copied to the target deployment in ArangoGraph. - To get your root password, select the target deployment from the ArangoGraph - Dashboard and go to the **Overview** tab. All other users are fully synchronized. - -{{< warning >}} -The migration tool increases the CPU and memory usage of the server you are -running it on. Depending on your ArangoDB usage pattern, it may take a lot of CPU -to handle the replication. You can stop the migration process anytime -if you see any problems. -{{< /warning >}} - -```bash -./arangosync-migration start \ - --source.endpoint=$COORDINATOR_ENDPOINT \ - --source.jwt-secret=/path-to/jwt-secret.file \ - --arango-graph.api-key=$ARANGO_GRAPH_API_KEY \ - --arango-graph.api-secret=$ARANGO_GRAPH_API_SECRET \ - --arango-graph.deployment-id=$ARANGO_GRAPH_DEPLOYMENT_ID -``` - -### How long does it take? - -The total time required to complete the migration depends on how much data you -have and how often write operations are executed during the process. - -You can also track the progress by checking the **Migration status** section of -your target deployment in ArangoGraph dashboard. - -![ArangoGraph Cloud Migration Progress](../../images/arangograph-migration-agent.png) - -### Getting the current status - -To print the current status of the migration, run the following command: - -```bash -./arangosync-migration status \ - --arango-graph.api-key=$ARANGO_GRAPH_API_KEY \ - --arango-graph.api-secret=$ARANGO_GRAPH_API_SECRET \ - --arango-graph.deployment-id=$ARANGO_GRAPH_DEPLOYMENT_ID -``` - -You can also add the `--watch` option to start monitoring the status in real-time. - -### Stopping the migration process - -The `arangosync-migration stop` command stops the migration and terminates -the migration agent process. - -If replication is running normally, the command waits until all shards are -in sync. The local cluster is then switched into read-only mode. -After all shards are in-sync and the migration stopped, the target deployment -is switched into the mode specified in `--source.server-mode` option. If no -option is specified, it defaults to the read/write mode. - -```bash -./arangosync-migration stop \ - --arango-graph.api-key=$ARANGO_GRAPH_API_KEY \ - --arango-graph.api-secret=$ARANGO_GRAPH_API_SECRET \ - --arango-graph.deployment-id=$ARANGO_GRAPH_DEPLOYMENT_ID -``` - -The additional `--abort` option is supported. If specified, the `stop` command -will not check anymore if both deployments are in-sync and stops all -migration-related processes as soon as possible. - -### Switching the local cluster to read-only mode - -The `arangosync-migration set-server-mode` command allows switching -[read-only mode](../develop/http-api/administration.md#set-the-server-mode-to-read-only-or-default) -for your local cluster on and off. - -In a read-only mode, all write operations are going to fail with an error code -of `1004` (ERROR_READ_ONLY). -Creating or dropping databases and collections are also going to fail with -error code `11` (ERROR_FORBIDDEN). - -```bash -./arangosync-migration set-server-mode \ - --source.endpoint=$COORDINATOR_ENDPOINT \ - --source.jwt-secret=/path-to/jwt-secret.file \ - --source.server-mode=readonly -``` -The `--source.server-mode` option allows you to specify the desired server mode. -Allowed values are `readonly` or `default`. - -### Supported environment variables - -The `arangosync-migration` tool supports the following environment variables: - -- `$ARANGO_GRAPH_API_KEY` -- `$ARANGO_GRAPH_API_SECRET` -- `$ARANGO_GRAPH_DEPLOYMENT_ID` - -Using these environment variables is highly recommended to ensure a secure way -of providing sensitive data to the application. - -### Restrictions and limitations - -When running the migration, ensure that your target deployment has the same (or -bigger) amount of resources (CPU, RAM) than your cluster. Otherwise, the -migration process might get stuck or require manual intervention. This is closely -connected to the type of data you have and how it is distributed between shards -and collections. - -In general, the most important parameters are: -- Total number of leader shards -- The amount of data in bytes per collection - -Both parameters can be retrieved from the ArangoDB Web Interface. - -The `arangosync-migration` tool supports migrating large datasets of up to -5 TB of data and 3800 leader shards, as well as collections as big as 250 GB. - -In case you have any questions, please -[reach out to us](https://www.arangodb.com/contact). - -## Cloud migration workflow for minimal downtime - -1. Download and start the `arangosync-migration` tool. The target deployment - is switched into read-only mode automatically. -2. Wait until all shards are in sync. You can use the `status` or the `start` - command with the same parameters to track that. -3. Optionally, when all shards are in-sync, you can switch your applications - to use the endpoint of the ArangoGraph deployment, but note that it stays in - read-only mode until the migration process is fully completed. -4. Stop the migration using the `stop` subcommand. The following steps are executed: - - The source data cluster is switched into read-only mode. - - It waits until all shards are synchronized. - - The target deployment is switched into default read/write mode. - - {{< info >}} - If you switched the source data cluster into read-only mode, - you can switch it back to default (read/write) mode using the - `set-server-mode` subcommand. - {{< /info >}} diff --git a/site/content/3.10/arangograph/monitoring-and-metrics.md b/site/content/3.10/arangograph/monitoring-and-metrics.md deleted file mode 100644 index 2b9ede4b4a..0000000000 --- a/site/content/3.10/arangograph/monitoring-and-metrics.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Monitoring & Metrics in ArangoGraph -menuTitle: Monitoring & Metrics -weight: 40 -description: >- - ArangoGraph provides various built-in tools and integrations to help you - monitor your deployment ---- -The ArangoGraph Insights Platform provides integrated charts, metrics, and logs -to help you monitor your deployment. This allows you to track your deployment's -performance, resource utilization, and its overall status. - -The key features include: -- **Built-in monitoring**: Get immediate access to monitoring capabilities for - your deployments without any additional setup. -- **Chart-based metrics representation**: Visualize the usage of the DB-Servers - and Coordinators over a selected timeframe. -- **Integration with Prometheus and Grafana**: Connect your metrics to Prometheus - and Grafana for in-depth visualization and analysis. - -To get started, select an existing deployment from within a project and -click **Monitoring** in the navigation. - -![ArangoGraph Monitoring tab](../../images/arangograph-monitoring-tab.png) - -## Built-in monitoring and metrics - -### In the **Servers** section - -The **Servers** section offers an overview of the DB-Servers, Coordinators, -and Agents used in your deployment. It provides essential details such as each -server's ID and type, the running ArangoDB version, as well as their memory, -CPU, and disk usage. - -In case you need to perform a restart on a server, you can do so by using the -**Gracefully restart this server** action button. This shuts down all services -normally, allowing ongoing operations to finish gracefully before the restart -occurs. - -Additionally, you can access detailed logs via the **Logs** button. This allows -you to apply filters to obtain logs from all server types or select specific ones -(i.e. only Coordinators or only DB-Servers) within a timeframe. To download the -logs, click the **Save** button. - -![ArangoGraph Monitoring Servers](../../images/arangograph-monitoring-servers.png) - -### In the **Metrics** section - -The **Metrics** section displays a chart-based representation depicting the -resource utilization of DB-Servers and Coordinators within a specified timeframe. - -You can select one or more DB-Servers and choose **CPU**, **Memory**, or **Disk** -to visualize their respective usage. The search box enables you to easily find -a server by its ID, particularly useful when having a large number of servers -or when needing to quickly find a particular one among many. - -Similarly, you can repeat the process for Coordinators to see the **CPU** and -**Memory** usage. - -![Arangograph Monitoring Metrics Chart](../../images/arangograph-monitoring-metrics-chart.png) - -## Connect with Prometheus and Grafana - -The ArangoGraph Insights Platform provides metrics for each deployment in a -[Prometheus](https://prometheus.io/)-compatible format. -You can use these metrics to gather detailed insights into the current -and previous states of your deployment. -Once metrics are collected by Prometheus, you can inspect them using tools -such as [Grafana](https://grafana.com/oss/grafana/). - -![ArangoGraph Connect Metrics Section](../../images/arangograph-connect-metrics-section.png) - -### Metrics tokens - -The **Metrics tokens** section allows you to create a new metrics token, -which is required for connecting to Prometheus. - -1. To create a metrics token, click **New metrics token**. -2. For **Name**, enter a name for the metrics token. -3. Optionally, you can also enter a **Short description**. -4. Select the **Lifetime** of the metrics token. -5. Click **Create**. - -![ArangoGraph Metrics Tokens](../../images/arangograph-metrics-token.png) - -### How to connect Prometheus - -1. In the **Metrics** section, click **Connect Prometheus**. -2. Create the `prometheus.yml` file with the following content: - ```yaml - global: - scrape_interval: 60s - scrape_configs: - - job_name: 'deployment' - bearer_token: '<fill-your-metrics-token-here>' - scheme: 'https' - static_configs: - - targets: ['6775e7d48152.arangodb.cloud:8829'] - tls_config: - insecure_skip_verify: true - ``` -3. Start Prometheus with the following command: - ```sh - docker run -d \ - -p 9090:9090 -p 3000:3000 --name prometheus \ - -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml:ro \ - prom/prometheus - ``` - {{< info >}} - This command also opens a port 3000 for Grafana. In a production environment, - this is not needed and not recommended to have it open. - {{< /info >}} - -### How to connect Grafana - -1. Start Grafana with the following command: - ```sh - docker run -d \ - --network container:prometheus \ - grafana/grafana - ``` -2. Go to `localhost:3000` and log in with the following credentials: - - For username, enter *admin*. - - For password, enter *admin*. - - {{< tip >}} - After the initial login, make sure to change your password. - {{< /tip >}} - -3. To add a data source, click **Add your first data source** and then do the following: - - Select **Prometheus**. - - For **HTTP URL**, enter `http://localhost:9090`. - - Click **Save & Test**. -4. To add a dashboard, open the menu and click **Create** and then **Import**. -5. Download the [Grafana dashboard for ArangoGraph](https://github.com/arangodb-managed/grafana-dashboards). -6. Copy the contents of the `main.json` file into the **Import via panel json** field in Grafana. -7. Click **Load**. diff --git a/site/content/3.10/arangograph/my-account.md b/site/content/3.10/arangograph/my-account.md deleted file mode 100644 index e79415060a..0000000000 --- a/site/content/3.10/arangograph/my-account.md +++ /dev/null @@ -1,171 +0,0 @@ ---- -title: My Account in ArangoGraph -menuTitle: My Account -weight: 35 -description: >- - How to manage your user account, your organizations, and your API keys in ArangoGraph ---- -You can access information related to your account via the __User Toolbar__. -The toolbar is in the top right corner in the ArangoGraph dashboard and -accessible from every view. There are two elements: - -- __Question mark icon__: Help -- __User icon__: My Account - -![ArangoGraph My Account](../../images/arangograph-my-account.png) - -## Overview - -### How to view my account - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __Overview__ in the __My account__ section. -3. The __Overview__ displays your name, email address, company and when the - account was created. - -### How to edit the profile of my account - -1. Hover over or click the user icon in the __User Toolbar__ in the top right corner. -2. Click __Overview__ in the __My account__ section. -3. Click the __Edit__ button. -4. Change your personal information and __Save__. - -![ArangoGraph My Account Info](../../images/arangograph-my-account-info.png) - -## Organizations - -### How to view my organizations - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My organizations__ in the __My account__ section. -3. Your organizations are listed in a table. - Click the organization name or the eye icon in the __Actions__ column to - jump to the organization overview. - -### How to create a new organization - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My organizations__ in the __My account__ section. -3. Click the __New organization__ button. -4. Enter a name and and a description for the new organization and click the - __Create__ button. - -{{< info >}} -The free to try tier is limited to a single organization. -{{< /info >}} - -### How to delete an organization - -{{< danger >}} -Removing an organization implies the deletion of projects and deployments. -This operation cannot be undone and **all deployment data will be lost**. -Please proceed with caution. -{{< /danger >}} - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My organizations__ in the __My account__ section. -3. Click the __recycle bin__ icon in the __Actions__ column. -4. Enter `Delete!` to confirm and click __Yes__. - -{{< info >}} -If you are no longer a member of any organization, then a new organization is -created for you when you log in again. -{{< /info >}} - -![ArangoGraph New Organization](../../images/arangograph-new-org.png) - -## Invites - -Invitations are requests to join organizations. You can accept or reject -pending invites. - -### How to create invites - -See [Users and Groups: How to add a new member to the organization](organizations/users-and-groups.md#how-to-add-a-new-member-to-the-organization) - -### How to respond to my invites - -#### I am not a member of an organization yet - -1. Once invited, you will receive an email asking to join your - ArangoGraph organization. - ![ArangoGraph Organization Invite Email](../../images/arangograph-org-invite-email.png) -2. Click the __View my organization invite__ link in the email. You will be - asked to log in or to create a new account. -3. To sign up for a new account, click the __Start Free__ button or the - __Sign up__ link in the header navigation. - ![ArangoGraph Homepage](../../images/arangograph-homepage.png) -4. After successfully signing up, you will receive a verification email. -5. Click the __Verify my email address__ link in the email. It takes you back - to the ArangoGraph Insights Platform site. - ![ArangoGraph Organization Invite Email Verify](../../images/arangograph-org-invite-email-verify.png) -6. After successfully logging in, you can accept or reject the invite to - join your organization. - ![ArangoGraph Organization Invite](../../images/arangograph-org-invite.png) -7. After accepting the invite, you become a member of your organization and - will be granted access to the organization and its related projects and - deployments. - -#### I am already a member of an organization - -1. Once invited, you will receive an email asking to join your - ArangoGraph organization, as well as a notification in the ArangoGraph dashboard. -2. Click the __View my organization invites__ link in the email, or hover over the - user icon in the top right corner of the dashboard and click - __My organization invites__. - ![ArangoGraph Organization Invite Notification](../../images/arangograph-org-invite-notification.png) -3. On the __Invites__ tab of the __My account__ view, you can accept or reject - pending invitations, as well as see past invitations that you accepted or - rejected. Click the button with a checkmark icon to join the organization. - ![ArangoGraph Organization Invites Accept](../../images/arangograph-org-invites-accept.png) - -## API Keys - -API keys are authentication tokens intended to be used for scripting. -They allow a script to authenticate on behalf of a user. - -An API key consists of a key and a secret. You need both to complete -authentication. - -### How to view my API keys - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My API keys__ in the __My account__ section. -3. Information about the API keys are listed in the __My API keys__ section. - -![ArangoGraph My API keys](../../images/arangograph-my-api-keys.png) - -### How to create a new API key - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My API keys__ in the __My account__ section. -3. Click the __New API key__ button. -4. Optionally limit the API key to a specific organization. -5. Optionally specify after how many hours the API key should expire into the - __Time to live__ field. -6. Optionally limit the API key to read-only APIs -7. Click the __Create__ button. -8. Copy the API key ID and Secret, then click the __Close__ button. - -{{< security >}} -The secret is only shown once at creation time. -You have to store it in a safe place. -{{< /security >}} - -![ArangoGraph New API key](../../images/arangograph-new-api-key.png) - -![ArangoGraph API key Secret](../../images/arangograph-api-key-secret.png) - -### How to revoke or delete an API key - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My API keys__ in the __My account__ section. -3. Click an icon in the __Actions__ column: - - __Counter-clockwise arrow__ icon: Revoke API key - - __Recycle bin__ icon: Delete API key -4. Click the __Yes__ button to confirm. - -{{% comment %}} -TODO: Copy to clipboard button -Access token that should expire after 1 hour unless renewed, might get removed as it's confusing. -{{% /comment %}} diff --git a/site/content/3.10/arangograph/notebooks.md b/site/content/3.10/arangograph/notebooks.md deleted file mode 100644 index b581dc44d8..0000000000 --- a/site/content/3.10/arangograph/notebooks.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -title: ArangoGraph Notebooks -menuTitle: Notebooks -weight: 25 -description: >- - How to create and manage colocated Jupyter Notebooks within ArangoGraph ---- -{{< info >}} -This documentation describes the beta version of the Notebooks feature and is -subject to change. The beta version is free for all. -{{< /info >}} - -The ArangoGraph Notebook is a JupyterLab notebook embedded in the ArangoGraph -Insights Platform. The notebook integrates seamlessly with platform, -automatically connecting to ArangoGraph services, including ArangoDB and the -ArangoML platform services. This makes it much easier to leverage these -resources without having to download any data locally or to remember user IDs, -passwords, and endpoint URLs. - -![ArangoGraph Notebooks Architecture](../../images/arangograph-notebooks-architecture.png) - -The ArangoGraph Notebook has built-in [ArangoGraph Magic Commands](#arangograph-magic-commands) -that answer questions like: -- What ArangoDB database am I connected to at the moment? -- What data does the ArangoDB instance contain? -- How can I access certain documents? -- How do I create a graph? - -The ArangoGraph Notebook also pre-installs [python-arango](https://docs.python-arango.com/en/main/) -and ArangoML connectors -to [PyG](https://github.com/arangoml/pyg-adapter), -[DGL](https://github.com/arangoml/dgl-adapter), -[CuGraph](https://github.com/arangoml/cugraph-adapter), as well as the -[FastGraphML](https://github.com/arangoml/fastgraphml) -library, so you can get started -right away accessing data in ArangoDB to develop GraphML models using your -favorite GraphML libraries with GPUs. - -## How to create a new notebook - -1. Open the deployment in which you want to create the notebook. -2. Go to the **Data science** section and click the **Create Notebook** button. -3. Enter a name and optionally a description for your new notebook. -4. Select a configuration model from the dropdown menu. Click **Save**. -5. The notebook's phase is set to **Initializing**. Once the phase changes to - **Running**, the notebook's endpoint is accessible. -6. Click the **Open notebook** button to access your notebook. -7. To access your notebook, you need to be signed into ArangoGraph as a user with - the `notebook.notebook.execute` permission in your project. Organization - owners have this permission enabled by default. The `notebook-executor` role - which contains the permission can also be granted to other members of the - organization via roles. See how to create a - [role binding](security-and-access-control/_index.md#how-to-view-edit-or-remove-role-bindings-of-a-policy). - -{{< info >}} -Depending on the tier your organization belongs to, different limitations apply: -- On-Demand and Committed: you can create up to three notebooks per deployment. -- Free-to-try: you can only create one notebook per deployment. -{{< /info >}} - -![Notebooks](../../images/arangograph-notebooks.png) - -{{< info >}} -Notebooks in beta version have a fixed configuration of 10 GB of disk size. -{{< /info >}} - -## How to edit a notebook - -1. Select the notebook that you want to change from the **Notebooks** tab. -2. Click **Edit notebook**. You can modify its name and description. -3. To pause a notebook, click the **Pause notebook** button. You can resume it -at anytime. The notebook's phase is updated accordingly. - -## How to delete a notebook - -1. Select the notebook that you want to remove from the **Notebooks** tab. -2. Click the **Delete notebook** button. - -## Getting Started notebook - -To get a better understanding of how to interact with your ArangoDB database -cluster, use the ArangoGraph Getting Started template. -The ArangoGraph Notebook automatically connects to the ArangoDB service -endpoint, so you can immediately start interacting with it. - -1. Log in to the notebook you have created by using your deployment's root password. -2. Select the `GettingStarted.ipynb` template from the file browser. - -## ArangoGraph Magic Commands - -A list of the available magic commands you can interact with. -Single line commands have `%` prefix and multi-line commands have `%%` prefix. - -**Database Commands** - -- `%listDatabases` - lists the databases on the database server. -- `%whichDatabase` - returns the database name you are connected to. -- `%createDatabase databaseName` - creates a database. -- `%selectDatabase databaseName` - selects a database as the current database. -- `%useDatabase databasename` - uses a database as the current database; - alias for `%selectDatabase`. -- `%getDatabase databaseName` - gets a database. Used for assigning a database, - e.g. `studentDB` = `getDatabase student_database`. -- `%deleteDatabase databaseName` - deletes the database. - -**Graph Commands** - -- `%listGraphs` - lists the graphs defined in the currently selected database. -- `%whichGraph` - returns the graph name that is currently selected. -- `%createGraph graphName` - creates a named graph. -- `%selectGraph graphName` - selects the graph as the current graph. -- `%useGraph graphName` - uses the graph as the current graph; - alias for `%selectGraph`. -- `%getGraph graphName` - gets the graph for variable assignment, - e.g. `studentGraph` = `%getGraph student-graph`. -- `%deleteGraph graphName` - deletes a graph. - -**Collection Commands** - -- `%listCollections` - lists the collections on the selected current database. -- `%whichCollection` - returns the collection name that is currently selected. -- `%createCollection collectionName` - creates a collection. -- `%selectCollection collectionName` - selects a collection as the current collection. -- `%useCollection collectionName` - uses the collection as the current collection; - alias for `%selectCollection`. -- `%getCollection collectionName` - gets a collection for variable assignment, - e.g. `student` = `% getCollection Student`. -- `%createEdgeCollection` - creates an edge collection. -- `%createVertexCollection` - creates a vertex collection. -- `%createEdgeDefinition` - creates an edge definition. -- `%deleteCollection collectionName` - deletes the collection. -- `%truncateCollection collectionName` - truncates the collection. -- `%sampleCollection collectionName` - returns a random document from the collection. - If no collection is specified, then it uses the selected collection. - -**Document Commands** - -- `%insertDocument jsonDocument` - inserts the document into the currently selected collection. -- `%replaceDocument jsonDocument` - replaces the document in the currently selected collection. -- `%updateDocument jsonDocument` - updates the document in the currently selected collection. -- `%deleteDocument jsonDocument` - deletes the document from the currently selected collection. -- `%%importBulk jsonDocumentArray` - imports an array of documents into the currently selected collection. - -**AQL Commands** - -- `%aql single-line_aql_query` - executes a single line AQL query. -- `%%aqlm multi-line_aql_query` - executes a multi-line AQL query. - -**Variables** - -- `_endpoint` - the endpoint (URL) of the ArangoDB Server. -- `_system` - the system database used for creating, listing, and deleting databases. -- `_db` - the selected (current) database. To select a different database, use `%selectDatabase`. -- `_graph` - the selected (current) graph. To select a different graph, use `%selectGraph`. -- `_collection` - the selected (current) collection. To select a different collection, use `%selectCollection`. -- `_user` - the current user. - -You can use these variables directly, for example, `_db.collections()` to list -collections or `_system.databases` to list databases. - -You can also create your own variable assignments, such as: - -- `schoolDB` = `%getDatabase schoolDB` -- `school_graph` = `%getGraph school_graph` -- `student` = `%getCollection Student` - -**Reset environment** - -In the event that any of the above variables have been unintentionally changed, -you can revert all of them to the default state with `reset_environment()`. diff --git a/site/content/3.10/arangograph/organizations/_index.md b/site/content/3.10/arangograph/organizations/_index.md deleted file mode 100644 index 85ee2c7656..0000000000 --- a/site/content/3.10/arangograph/organizations/_index.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Organizations in ArangoGraph -menuTitle: Organizations -weight: 10 -description: >- - How to manage organizations and what type of packages ArangoGraph offers ---- -An ArangoGraph organizations is a container for projects. An organization -typically represents a (commercial) entity such as a company, a company division, -an institution, or a non-profit organization. - -**<u>Organizations</u> → Projects → Deployments** - -Users can be members of one or more organizations. However, you can only be a -member of one _Free-to-try_ tier organization at a time. - -## How to switch between my organizations - -1. The first entry in the main navigation (with a double arrow icon) indicates - the current organization. -2. Click it to bring up a dropdown menu to select another organization of which you - are a member. -3. The overview will open for the selected organization, showing the number of - projects, the tier and when it was created. - -![ArangoGraph Organization Switcher](../../../images/arangograph-organization-switcher.png) - -![ArangoGraph Organization Overview](../../../images/arangograph-organization-overview.png) - -## ArangoGraph Packages - -With the ArangoGraph Insights Platform, your organization can choose one of the -following packages. - -### Free Trial - -ArangoGraph comes with a free-to-try tier that lets you test ArangoGraph for -free for 14 days. You can get started quickly, without needing to enter a -credit card. - -The free trial gives you access to: -- One small deployment (4GB) in a region of your choice for 14 days -- Local backups -- One ArangoGraph Notebook for learning and data science - -After the trial period, your deployment will be deleted automatically. - -### On-Demand - -Add a payment payment method to gain access to ArangoGraph's full feature set. -Pay monthly via a credit card for what you actually use. - -This package unlocks all ArangoGraph functionality, including: -- Multiple and larger deployments -- Backups to cloud storage, with multi-region support -- Enhanced security features such as Private Endpoints - -### Committed - -Commit up-front for a year and pay via the Sales team. This package provides -the same flexibility of On-Demand, but at a lower price. - -In addition, you gain access to: -- 24/7 Premium Support -- ArangoDB Professional Services Engagements -- Ability to transact via the AWS and GCP marketplaces - -To take advantage of this, you need to get in touch with the ArangoDB -team. [Contact us](https://www.arangodb.com/contact/) for more details. - -## How to unlock all features - -You can unlock all features in ArangoGraph at any time by adding your billing -details and a payment method. As soon as you have added a payment method, all -ArangoGraph functionalities are immediately unlocked. From that point on, your -deployments will no longer expire and you can create more and larger deployments. - -See [Billing: How to add billing details / payment methods](billing.md) - -![ArangoGraph Billing](../../../images/arangograph-billing.png) - -## How to create a new organization - -See [My Account: How to create a new organization](../my-account.md#how-to-create-a-new-organization) - -## How to restrict access to an organization - -If you want to restrict access to an organization, you can do it by specifying which authentication providers are accepted for users trying to access the organization. For more information, refer to the [Access Control](../security-and-access-control/_index.md#restricting-access-to-organizations) section. - -## How to delete the current organization - -{{< danger >}} -Removing an organization implies the deletion of projects and deployments. -This operation cannot be undone and **all deployment data will be lost**. -Please proceed with caution. -{{< /danger >}} - -1. Click **Overview** in the **Organization** section of the main navigation. -2. Open the **Danger zone** tab. -3. Click the **Delete organization** button. -4. Enter `Delete!` to confirm and click **Yes**. - -{{< info >}} -If you are no longer a member of any organization, then a new organization is -created for you when you log in again. -{{< /info >}} - -{{< tip >}} -If the organization has a locked resource (a project or a deployment), you need to [unlock](../security-and-access-control/_index.md#locked-resources) -that resource first to be able to delete the organization. -{{< /tip >}} diff --git a/site/content/3.10/arangograph/organizations/billing.md b/site/content/3.10/arangograph/organizations/billing.md deleted file mode 100644 index 9b892b5500..0000000000 --- a/site/content/3.10/arangograph/organizations/billing.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Billing in ArangoGraph -menuTitle: Billing -weight: 10 -description: >- - How to manage billing details and payment methods in ArangoGraph ---- -## How to add billing details - -1. In the main navigation menu, click the **Organization** icon. -2. Click **Billing** in the **Organization** section. -3. In the **Billing Details** section, click **Edit**. -4. Enter your company name, billing address, and EU VAT identification number (if applicable). -5. Optionally, enter the email address(es) to which invoices should be emailed - to automatically. -6. Click **Save**. - -![ArangoGraph Billing Details](../../../images/arangograph-billing-details.png) - -## How to add a payment method - -1. In the main navigation menu, click the **Organization** icon. -2. Click **Billing** in the **Organization** section. -3. In the **Payment methods** section, click **Add**. -4. Fill out the form with your credit card details. Currently, a credit card is the only available payment method. -5. Click **Save**. - -![ArangoGraph Payment Method](../../../images/arangograph-add-payment-method-credit-card.png) - -{{% comment %}} -TODO: Need screenshot with invoice - -### How to view invoices - - -{{% /comment %}} diff --git a/site/content/3.10/arangograph/security-and-access-control/_index.md b/site/content/3.10/arangograph/security-and-access-control/_index.md deleted file mode 100644 index 27742b57b3..0000000000 --- a/site/content/3.10/arangograph/security-and-access-control/_index.md +++ /dev/null @@ -1,698 +0,0 @@ ---- -title: Security and access control in ArangoGraph -menuTitle: Security and Access Control -weight: 45 -description: >- - This guide explains which access control concepts are available in - ArangoGraph and how to use them ---- -The ArangoGraph Insights Platform has a structured set of resources that are subject to security and -access control: - -- Organizations -- Projects -- Deployments - -For each of these resources, you can perform various operations. -For example, you can create a project in an organization and create a deployment -inside a project. - -## Locked resources - -In ArangoGraph, you can lock the resources to prevent accidental deletion. When -a resource is locked, it cannot be deleted and must be unlocked first. - -The hierarchical structure of the resources (organization-project-deployment) -is used in the locking functionality: if a child resource is locked -(for example, a deployment), you cannot delete the parent project without -unlocking that deployment first. - -{{< info >}} -If you lock a backup policy of a deployment or an IP allowlist, CA certificate, -and IAM provider of a project, it is still possible to delete -the corresponding parent resource without unlocking those properties first. -{{< /info >}} - -## Policy - -Various actions in ArangoGraph require different permissions, which can be -granted to users via **roles**. - -The association of a member with a role is called a **role binding**. -All role bindings of a resource comprise a **policy**. - -Roles can be bound on an organization, project, and deployment level (listed in -the high to low level order, with lower levels inheriting permissions from their -parents). This means that there is a unique policy per resource (an organization, -a project, or a deployment). - -For example, an organization has exactly one policy, -which binds roles to members of the organization. These bindings are used to -give the users permissions to perform operations in this organization. -This is useful when, as an organization owner, you need to extend the permissions -for an organization member. - -{{< info >}} -Permissions linked to predefined roles vary between organization owners and -organization members. If you need to extend permissions for an organization -member, you can create a new role binding. The complete list of roles and -their respective permissions for both organization owners and members can be -viewed on the **Policy** page of an organization within the ArangoGraph dashboard. -{{< /info >}} - -### How to view, edit, or remove role bindings of a policy - -Decide whether you want to edit the policy for an organization, a project, -or a deployment: - -- **Organization**: In the main navigation, click the __Organization__ icon and - then click __Policy__. -- **Project**: In the main navigation, click the __Dashboard__ icon, then click - __Projects__, click the name of the desired project, and finally click __Policy__. -- **Deployment**: In the main navigation, click the __Dashboard__ icon, then - click __Deployments__, click the name of the desired deployment, and finally - click __Policy__. - -To delete a role binding, click the **Recycle Bin** icon in the **Actions** column. - -{{< info >}} -Currently, you cannot edit a role binding, you can only delete it. -{{< /info >}} - -![ArangoGraph Project Policy](../../../images/arangograph-policy-page.png) - -### How to add a role binding to a policy - -1. Navigate to the **Policy** tab of an organization, a project or a deployment. -2. Click the **New role binding** button. -3. Select one or more users and/or groups. -4. Select one or more roles you want to assign to the specified members. -5. Click **Create**. - -![ArangoGraph New Role Binding](../../../images/arangograph-new-policy-role-binding.png) - -## Roles - -Operations on resources in ArangoGraph require zero (just an authentication) or -more permissions. Since the -number of permissions is large and very detailed, it is not practical to assign -permissions directly to users. Instead, ArangoGraph uses **roles**. - -A role is a set of permissions. Roles can be bound to groups (preferably) -or individual users. You can create such bindings for the respective organization, -project, or deployment policy. - -There are predefined roles, but you can also create custom ones. - -![ArangoGraph Roles](../../../images/arangograph-access-control-roles.png) - -### Predefined roles - -Predefined roles are created by ArangoGraph and group related permissions together. -An example of a predefined role is `deployment-viewer`. This role -contains all permissions needed to view deployments in a project. - -Predefined roles cannot be deleted. Note that permissions linked to predefined -roles vary between organization owners and organization members. - -{{% comment %}} -Command to generate below list with (Git)Bash: - -export OASIS_TOKEN='<TOKEN>' -./oasisctl list roles --organization-id <ID> --format json | jq -r '.[] | select(.predefined == true) | "**\(.description)** (`\(.id)`):\n\(.permissions | split(", ") | map("- `\(.)`\n") | join(""))"' -{{% /comment %}} - -{{< details summary="List of predefined roles and their permissions" >}} - -{{</* tip */>}} -The roles below are described following this pattern: - -**Role description** (`role ID`): -- `Permission` -{{</* /tip */>}} - -**Audit Log Admin** (`auditlog-admin`): -- `audit.auditlog.create` -- `audit.auditlog.delete` -- `audit.auditlog.get` -- `audit.auditlog.list` -- `audit.auditlog.set-default` -- `audit.auditlog.test-https-post-destination` -- `audit.auditlog.update` - -**Audit Log Archive Admin** (`auditlog-archive-admin`): -- `audit.auditlogarchive.delete` -- `audit.auditlogarchive.get` -- `audit.auditlogarchive.list` - -**Audit Log Archive Viewer** (`auditlog-archive-viewer`): -- `audit.auditlogarchive.get` -- `audit.auditlogarchive.list` - -**Audit Log Attachment Admin** (`auditlog-attachment-admin`): -- `audit.auditlogattachment.create` -- `audit.auditlogattachment.delete` -- `audit.auditlogattachment.get` - -**Audit Log Attachment Viewer** (`auditlog-attachment-viewer`): -- `audit.auditlogattachment.get` - -**Audit Log Event Admin** (`auditlog-event-admin`): -- `audit.auditlogevent.delete` -- `audit.auditlogevents.get` - -**Audit Log Event Viewer** (`auditlog-event-viewer`): -- `audit.auditlogevents.get` - -**Audit Log Viewer** (`auditlog-viewer`): -- `audit.auditlog.get` -- `audit.auditlog.list` - -**Backup Administrator** (`backup-admin`): -- `backup.backup.copy` -- `backup.backup.create` -- `backup.backup.delete` -- `backup.backup.download` -- `backup.backup.get` -- `backup.backup.list` -- `backup.backup.restore` -- `backup.backup.update` -- `backup.feature.get` -- `data.deployment.restore-backup` - -**Backup Viewer** (`backup-viewer`): -- `backup.backup.get` -- `backup.backup.list` -- `backup.feature.get` - -**Backup Policy Administrator** (`backuppolicy-admin`): -- `backup.backuppolicy.create` -- `backup.backuppolicy.delete` -- `backup.backuppolicy.get` -- `backup.backuppolicy.list` -- `backup.backuppolicy.update` -- `backup.feature.get` - -**Backup Policy Viewer** (`backuppolicy-viewer`): -- `backup.backuppolicy.get` -- `backup.backuppolicy.list` -- `backup.feature.get` - -**Billing Administrator** (`billing-admin`): -- `billing.config.get` -- `billing.config.set` -- `billing.invoice.get` -- `billing.invoice.get-preliminary` -- `billing.invoice.get-statistics` -- `billing.invoice.list` -- `billing.organization.get` -- `billing.paymentmethod.create` -- `billing.paymentmethod.delete` -- `billing.paymentmethod.get` -- `billing.paymentmethod.get-default` -- `billing.paymentmethod.list` -- `billing.paymentmethod.set-default` -- `billing.paymentmethod.update` -- `billing.paymentprovider.list` - -**Billing Viewer** (`billing-viewer`): -- `billing.config.get` -- `billing.invoice.get` -- `billing.invoice.get-preliminary` -- `billing.invoice.get-statistics` -- `billing.invoice.list` -- `billing.organization.get` -- `billing.paymentmethod.get` -- `billing.paymentmethod.get-default` -- `billing.paymentmethod.list` -- `billing.paymentprovider.list` - -**CA Certificate Administrator** (`cacertificate-admin`): -- `crypto.cacertificate.create` -- `crypto.cacertificate.delete` -- `crypto.cacertificate.get` -- `crypto.cacertificate.list` -- `crypto.cacertificate.set-default` -- `crypto.cacertificate.update` - -**CA Certificate Viewer** (`cacertificate-viewer`): -- `crypto.cacertificate.get` -- `crypto.cacertificate.list` - -**Dataloader Administrator** (`dataloader-admin`): -- `dataloader.deployment.import` - -**Deployment Administrator** (`deployment-admin`): -- `data.cpusize.list` -- `data.deployment.create` -- `data.deployment.create-test-database` -- `data.deployment.delete` -- `data.deployment.get` -- `data.deployment.list` -- `data.deployment.pause` -- `data.deployment.rebalance-shards` -- `data.deployment.resume` -- `data.deployment.rotate-server` -- `data.deployment.update` -- `data.deployment.update-scheduled-root-password-rotation` -- `data.deploymentfeatures.get` -- `data.deploymentmodel.list` -- `data.deploymentprice.calculate` -- `data.diskperformance.list` -- `data.limits.get` -- `data.nodesize.list` -- `data.presets.list` -- `monitoring.logs.get` -- `monitoring.metrics.get` -- `notification.deployment-notification.list` -- `notification.deployment-notification.mark-as-read` -- `notification.deployment-notification.mark-as-unread` - -**Deployment Content Administrator** (`deployment-content-admin`): -- `data.cpusize.list` -- `data.deployment.create-test-database` -- `data.deployment.get` -- `data.deployment.list` -- `data.deploymentcredentials.get` -- `data.deploymentfeatures.get` -- `data.deploymentmodel.list` -- `data.deploymentprice.calculate` -- `data.diskperformance.list` -- `data.limits.get` -- `data.nodesize.list` -- `data.presets.list` -- `monitoring.logs.get` -- `monitoring.metrics.get` -- `notification.deployment-notification.list` -- `notification.deployment-notification.mark-as-read` -- `notification.deployment-notification.mark-as-unread` - -**Deployment Full Access User** (`deployment-full-access-user`): -- `data.deployment.full-access` - -**Deployment Read Only User** (`deployment-read-only-user`): -- `data.deployment.read-only-access` - -**Deployment Viewer** (`deployment-viewer`): -- `data.cpusize.list` -- `data.deployment.get` -- `data.deployment.list` -- `data.deploymentfeatures.get` -- `data.deploymentmodel.list` -- `data.deploymentprice.calculate` -- `data.diskperformance.list` -- `data.limits.get` -- `data.nodesize.list` -- `data.presets.list` -- `monitoring.metrics.get` -- `notification.deployment-notification.list` -- `notification.deployment-notification.mark-as-read` -- `notification.deployment-notification.mark-as-unread` - -**Deployment Profile Viewer** (`deploymentprofile-viewer`): -- `deploymentprofile.deploymentprofile.list` - -**Example Datasets Viewer** (`exampledataset-viewer`): -- `example.exampledataset.get` -- `example.exampledataset.list` - -**Example Dataset Installation Administrator** (`exampledatasetinstallation-admin`): -- `example.exampledatasetinstallation.create` -- `example.exampledatasetinstallation.delete` -- `example.exampledatasetinstallation.get` -- `example.exampledatasetinstallation.list` -- `example.exampledatasetinstallation.update` - -**Example Dataset Installation Viewer** (`exampledatasetinstallation-viewer`): -- `example.exampledatasetinstallation.get` -- `example.exampledatasetinstallation.list` - -**Group Administrator** (`group-admin`): -- `iam.group.create` -- `iam.group.delete` -- `iam.group.get` -- `iam.group.list` -- `iam.group.update` - -**Group Viewer** (`group-viewer`): -- `iam.group.get` -- `iam.group.list` - -**IAM provider Administrator** (`iamprovider-admin`): -- `security.iamprovider.create` -- `security.iamprovider.delete` -- `security.iamprovider.get` -- `security.iamprovider.list` -- `security.iamprovider.set-default` -- `security.iamprovider.update` - -**IAM provider Viewer** (`iamprovider-viewer`): -- `security.iamprovider.get` -- `security.iamprovider.list` - -**IP allowlist Administrator** (`ipwhitelist-admin`): -- `security.ipallowlist.create` -- `security.ipallowlist.delete` -- `security.ipallowlist.get` -- `security.ipallowlist.list` -- `security.ipallowlist.update` - -**IP allowlist Viewer** (`ipwhitelist-viewer`): -- `security.ipallowlist.get` -- `security.ipallowlist.list` - -**Metrics Administrator** (`metrics-admin`): -- `metrics.endpoint.get` -- `metrics.token.create` -- `metrics.token.delete` -- `metrics.token.get` -- `metrics.token.list` -- `metrics.token.revoke` -- `metrics.token.update` - -**Migration Administrator** (`migration-admin`): -- `replication.deploymentmigration.create` -- `replication.deploymentmigration.delete` -- `replication.deploymentmigration.get` - -**MLServices Admin** (`mlservices-admin`): -- `ml.mlservices.get` - -**Notebook Administrator** (`notebook-admin`): -- `notebook.model.list` -- `notebook.notebook.create` -- `notebook.notebook.delete` -- `notebook.notebook.get` -- `notebook.notebook.list` -- `notebook.notebook.pause` -- `notebook.notebook.resume` -- `notebook.notebook.update` - -**Notebook Executor** (`notebook-executor`): -- `notebook.notebook.execute` - -**Notebook Viewer** (`notebook-viewer`): -- `notebook.model.list` -- `notebook.notebook.get` -- `notebook.notebook.list` - -**Organization Administrator** (`organization-admin`): -- `billing.organization.get` -- `resourcemanager.organization-invite.create` -- `resourcemanager.organization-invite.delete` -- `resourcemanager.organization-invite.get` -- `resourcemanager.organization-invite.list` -- `resourcemanager.organization-invite.update` -- `resourcemanager.organization.delete` -- `resourcemanager.organization.get` -- `resourcemanager.organization.update` - -**Organization Viewer** (`organization-viewer`): -- `billing.organization.get` -- `resourcemanager.organization-invite.get` -- `resourcemanager.organization-invite.list` -- `resourcemanager.organization.get` - -**Policy Administrator** (`policy-admin`): -- `iam.policy.get` -- `iam.policy.update` - -**Policy Viewer** (`policy-viewer`): -- `iam.policy.get` - -**Prepaid Deployment Viewer** (`prepaid-deployment-viewer`): -- `prepaid.prepaiddeployment.get` -- `prepaid.prepaiddeployment.list` - -**Private Endpoint Service Administrator** (`privateendpointservice-admin`): -- `network.privateendpointservice.create` -- `network.privateendpointservice.get` -- `network.privateendpointservice.get-by-deployment-id` -- `network.privateendpointservice.get-feature` -- `network.privateendpointservice.update` - -**Private Endpoint Service Viewer** (`privateendpointservice-viewer`): -- `network.privateendpointservice.get` -- `network.privateendpointservice.get-by-deployment-id` -- `network.privateendpointservice.get-feature` - -**Project Administrator** (`project-admin`): -- `resourcemanager.project.create` -- `resourcemanager.project.delete` -- `resourcemanager.project.get` -- `resourcemanager.project.list` -- `resourcemanager.project.update` - -**Project Viewer** (`project-viewer`): -- `resourcemanager.project.get` -- `resourcemanager.project.list` - -**Replication Administrator** (`replication-admin`): -- `replication.deployment.clone-from-backup` -- `replication.deploymentreplication.get` -- `replication.deploymentreplication.update` -- `replication.migration-forwarder.upgrade-connection` - -**Role Administrator** (`role-admin`): -- `iam.role.create` -- `iam.role.delete` -- `iam.role.get` -- `iam.role.list` -- `iam.role.update` - -**Role Viewer** (`role-viewer`): -- `iam.role.get` -- `iam.role.list` - -**SCIM Administrator** (`scim-admin`): -- `scim.user.add` -- `scim.user.delete` -- `scim.user.get` -- `scim.user.list` -- `scim.user.update` - -**User Administrator** (`user-admin`): -- `iam.user.get-personal-data` -- `iam.user.update` - -{{< /details >}} - -### How to create a custom role - -1. In the main navigation menu, click **Access Control**. -2. On the **Roles** tab, click **New role**. -3. Enter a name and optionally a description for the new role. -4. Select the required permissions. -5. Click **Create**. - -![ArangoGraph New Role](../../../images/arangograph-create-role.png) - -### How to view, edit or remove a custom role - -1. In the main navigation menu, click **Access Control**. -2. On the **Roles** tab, click: - - A role name or the **eye** icon in the **Actions** column to view the role. - - The **pencil** icon in the **Actions** column to edit the role. - You can also view a role and click the **Edit** button in the detail view. - - The **recycle bin** icon to delete the role. - You can also view a role and click the **Delete** button in the detail view. - -## Permissions - -Each operation done on a resource requires zero (just authentication) or more **permissions**. -A permission is a constant string such as `resourcemanager.project.create`, -following this schema: `<api>.<kind>.<verb>`. - -Permissions are solely defined by the ArangoGraph API. - -{{% comment %}} -Retrieved with the below command, with manual adjustments: -oasisctl list permissions - -Note that if the tier is "internal", there is an `internal-dashboard` API that should be excluded in below list! -{{% /comment %}} - -| API | Kind | Verbs -|:--------------------|:-----------------------------|:------------------------------------------- -| `audit` | `auditlogarchive` | `delete`, `get`, `list` -| `audit` | `auditlogattachment` | `create`, `delete`, `get` -| `audit` | `auditlogevents` | `get` -| `audit` | `auditlogevent` | `delete` -| `audit` | `auditlog` | `create`, `delete`, `get`, `list`, `set-default`, `test-https-post-destination`, `update` -| `backup` | `backuppolicy` | `create`, `delete`, `get`, `list`, `update` -| `backup` | `backup` | `copy`, `create`, `delete`, `download`, `get`, `list`, `restore`, `update` -| `backup` | `feature` | `get` -| `billing` | `config` | `get`, `set` -| `billing` | `invoice` | `get`, `get-preliminary`, `get-statistics`, `list` -| `billing` | `organization` | `get` -| `billing` | `paymentmethod` | `create`, `delete`, `get`, `get-default`, `list`, `set-default`, `update` -| `billing` | `paymentprovider` | `list` -| `crypto` | `cacertificate` | `create`, `delete`, `get`, `list`, `set-default`, `update` -| `dataloader` | `deployment` | `import` -| `data` | `cpusize` | `list` -| `data` | `deploymentcredentials` | `get` -| `data` | `deploymentfeatures` | `get` -| `data` | `deploymentmodel` | `list` -| `data` | `deploymentprice` | `calculate` -| `data` | `deployment` | `create`, `create-test-database`, `delete`, `full-access`, `get`, `list`, `pause`, `read-only-access`, `rebalance-shards`, `restore-backup`, `resume`, `rotate-server`, `update`, `update-scheduled-root-password-rotation` -| `data` | `diskperformance` | `list` -| `data` | `limits` | `get` -| `data` | `nodesize` | `list` -| `data` | `presets` | `list` -| `deploymentprofile` | `deploymentprofile` | `list` -| `example` | `exampledatasetinstallation` | `create`, `delete`, `get`, `list`, `update` -| `example` | `exampledataset` | `get`, `list` -| `iam` | `group` | `create`, `delete`, `get`, `list`, `update` -| `iam` | `policy` | `get`, `update` -| `iam` | `role` | `create`, `delete`, `get`, `list`, `update` -| `iam` | `user` | `get-personal-data`, `update` -| `metrics` | `endpoint` | `get` -| `metrics` | `token` | `create`, `delete`, `get`, `list`, `revoke`, `update` -| `ml` | `mlservices` | `get` -| `monitoring` | `logs` | `get` -| `monitoring` | `metrics` | `get` -| `network` | `privateendpointservice` | `create`, `get`, `get-by-deployment-id`, `get-feature`, `update` -| `notebook` | `model` | `list` -| `notebook` | `notebook` | `create`, `delete`, `execute`, `get`, `list`, `pause`, `resume`, `update` -| `notification` | `deployment-notification` | `list`, `mark-as-read`, `mark-as-unread` -| `prepaid` | `prepaiddeployment` | `get`, `list` -| `replication` | `deploymentmigration` | `create`, `delete`, `get` -| `replication` | `deploymentreplication` | `get`, `update` -| `replication` | `deployment` | `clone-from-backup` -| `replication` | `migration-forwarder` | `upgrade-connection` -| `resourcemanager` | `organization-invite` | `create`, `delete`, `get`, `list`, `update` -| `resourcemanager` | `organization` | `delete`, `get`, `update` -| `resourcemanager` | `project` | `create`, `delete`, `get`, `list`, `update` -| `scim` | `user` | `add`, `delete`, `get`, `list`, `update` -| `security` | `iamprovider` | `create`, `delete`, `get`, `list`, `set-default`, `update` -| `security` | `ipallowlist` | `create`, `delete`, `get`, `list`, `update` - -### Permission inheritance - -Each resource (organization, project, deployment) has its own policy, but this does not mean that you have to -repeat role bindings in all these policies. - -Once you assign a role to a user (or group of users) in a policy at one level, -all the permissions of this role are inherited in lower levels - -permissions are inherited downwards from an organization to its projects and -from a project to its deployments. - -For more general permissions, which you want to be propagated to other levels, -add a role for a user/group at the organization level. -For example, if you bind the `deployment-viewer` role to user `John` in the -organization policy, `John` will have the role permissions in all projects of -that organization and all deployments of the projects. - -For more restrictive permissions, which you don't necessarily want to be -propagated to other levels, add a role at the project or even deployment level. -For example, if you bind the `deployment-viewer` role to user `John` -in a project, `John` will have the role permissions in -this project as well as in all the deployments of it, but not -in other projects of the parent organization. - -**Inheritance example** - -- Let's assume you have a group called "Deployers" which includes users who deal with deployments. -- Then you create a role "Deployment Viewer", containing - `data.deployment.get` and `data.deployment.list` permissions. -- You can now add a role binding of the "Deployers" group to the "Deployment Viewer" role. -- If you add the binding to an organization policy, members of this group - will be granted the defined permissions for the organization, all its projects and all its deployments. -- If you add the role binding to a policy of project ABC, members of this group will be granted - the defined permissions for project ABC only and its deployments, but not for - other projects and their deployments. -- If you add the role binding to a policy of deployment X, members of this - group will be granted the defined permissions for deployment X only, and not - any other deployment of the parent project or any other project of the organization. - -The "Deployment Viewer" role is effective for the following entities depending -on which policy the binding is added to: - -Role binding added to →<br>Role effective on ↓ | Organization policy | Project ABC's policy | Deployment X's policy of project ABC | -|:---:|:---:|:---:|:---:| -Organization, its projects and deployments | ✓ | — | — -Project ABC and its deployments | ✓ | ✓ | — -Project DEF and its deployments | ✓ | — | — -Deployment X of project ABC | ✓ | ✓ | ✓ -Deployment Y of project ABC | ✓ | ✓ | — -Deployment Z of project DEF | ✓ | — | — - -## Restricting access to organizations - -To enhance security, you can implement the following restrictions via [Oasisctl](../oasisctl/_index.md): - -1. Limit allowed authentication providers. -2. Specify an allowed domain list. - -{{< info >}} -Note that users who do not meet the restrictions will not be granted permissions for any resource in -the organization. These users can still be members of the organization. -{{< /info >}} - -Using the first option, you can limit which **authentication providers** are -accepted for users trying to access an organization in ArangoGraph. -The following commands are available to configure this option: - -- `oasisctl get organization authentication providers` - allows you to see which - authentication providers are enabled for accessing a specific organization -- `oasisctl update organization authentication providers` - allows you to update - a list of authentication providers for an organization to which the - authenticated user has access - - `--enable-github` - if set, allow access from user accounts authenticated via Github - - `--enable-google` - if set, allow access from user accounts authenticated via Google - - `--enable-username-password` - if set, allow access from user accounts - authenticated via a username/password - -Using the second option, you can configure a **list of domains**, and only users -with email addresses from the specified domains will be able to access an -organization. The following commands are available to configure this option: - -- `oasisctl get organization email domain restrictions -o <your_organization_id>` - - allows you to see which domains are in the allowed list for a specific organization -- `oasisctl update organization email domain restrictions -o <your_organization_id> --allowed-domain=<domain_name1> --allowed-domain=<domain_name2>` - - allows you to update a list of the allowed domains for a specific organization -- `oasisctl update organization email domain restrictions -o <your_organization_id> --allowed-domain=` - - allows you to reset a list and accept any domains for accessing a specific organization - -## Using an audit log - -{{< info >}} -To enable the audit log feature, get in touch with the ArangoGraph team via **Request Help**, available in the left sidebar menu of the ArangoGraph Dashboard. -{{< /info >}} - -To have a better overview of the events happening in your ArangoGraph organization, -you can set up an audit log, which will track and log auditing information for you. -The audit log is created on the organization level, then you can use the log for -projects belonging to that organization. - -***To create an audit log*** - -1. In the main navigation menu, click **Access Control** in the **Organization** section. -2. Open the **Audit logs** tab and click the **New audit log** button. -3. In the dialog, fill out the following settings: - - - **Name** - enter a name for your audit log. - - **Description** - enter an optional description for your audit log. - - **Destinations** - specify one or several destinations to which you want to - upload the audit log. If you choose **Upload to cloud**, the log will be - available on the **Audit logs** tab of your organization. To send the log - entries to your custom destination, specify a destination URL with - authentication parameters (the **HTTP destination** option). - - {{< info >}} - The **Upload to cloud** option is not available for the free-to-try tier. - {{< /info >}} - - - **Excluded topics** - select topics that will not be included in the log. - Please note, that some are excluded by default (for example, `audit-document`). - - {{< warning >}} - Enabling the audit log for all events will have a negative impact on performance. - {{< /warning >}} - - - **Confirmation** - confirm that logging auditing events increases the price of your deployments. - - ![ArangoGraph audit log](../../../images/arangograph-audit-log.png) - -4. Click **Create** to add the audit log. You can now use it in the projects - belonging to your organization. diff --git a/site/content/3.10/arangograph/security-and-access-control/single-sign-on/_index.md b/site/content/3.10/arangograph/security-and-access-control/single-sign-on/_index.md deleted file mode 100644 index 1144d59ebd..0000000000 --- a/site/content/3.10/arangograph/security-and-access-control/single-sign-on/_index.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Single Sign-On (SSO) in ArangoGraph -menuTitle: Single Sign-On -weight: 10 -description: >- - ArangoGraph supports **Single Sign-On** (SSO) authentication using - **Security Assertion Markup language 2.0** (SAML 2.0) ---- -{{< info >}} -To enable the Single Sign-On (SSO) feature, get in touch with the ArangoGraph -team via **Request Help**, available in the left sidebar menu of the -ArangoGraph Dashboard. -{{< /info >}} - -## About SAML 2.0 - -The Security Assertion Markup language 2.0 (SAML 2.0) is an open standard created -to provide cross-domain single sign-on (SSO). It allows you to authenticate in -multiple web applications by using a single set of login credentials. - -SAML SSO works by transferring user authentication data from the identity -provider (IdP) to the service provider (SP) through an exchange of digitally -signed XML documents. - -## Configure SAML 2.0 using Okta - -You can enable SSO for your ArangoGraph organization using Okta as an Identity -Provider (IdP). For more information about Okta, please refer to the -[Okta Documentation](https://help.okta.com/en-us/Content/index.htm?cshid=csh-index). - -### Create the SAML app integration in Okta - -1. Sign in to your Okta account and select **Applications** from the left sidebar menu. -2. Click **Create App Integration**. -3. In the **Create a new app integration** dialog, select **SAML 2.0**. - - ![ArangoGraph Create Okta App Integration](../../../../images/arangograph-okta-create-integration.png) -4. In the **General Settings**, specify a name for your integration and click **Next**. - - ![ArangoGraph Okta Integration Name](../../../../images/arangograph-okta-integration-name.png) -5. Configure the SAML settings: - - For **Single sign-on URL**, use `https://auth.arangodb.com/login/callback?connection=ORG_ID` - - For **Audience URI (SP Entity ID)**, use `urn:auth0:arangodb:ORG_ID` - - ![ArangoGraph Okta SAML General Settings](../../../../images/arangograph-okta-saml-general-settings.png) - -6. Replace **ORG_ID** with your organization identifier from the - ArangoGraph Dashboard. To find your organization ID, go to the **User Toolbar** - in the top right corner, which is accessible from every view of the Dashboard, - and click **My organizations**. - - If, for example, your organization ID is 14587062, here are the values you - would use when configuring the SAML settings: - - `https://auth.arangodb.com/login/callback?connection=14587062` - - `urn:auth0:arangodb:14587062` - - ![ArangoGraph Organization ID](../../../../images/arangograph-organization-id.png) -7. In the **Attribute Statements** section, add custom attributes as seen in the image below: - - email: `user.email` - - given_name: `user.firstName` - - family_name: `user.lastName` - - picture: `user.profileUrl` - - This step consists of a mapping between the ArangoGraph attribute names and - Okta attribute names. The values of these attributes are automatically filled - in based on the users list that is defined in Okta. - - ![ArangoGraph Okta SAML Attributes](../../../../images/arangograph-okta-saml-attributes.png) -8. Click **Next**. -9. In the **Configure feedback** section, select **I'm an Okta customer adding an internal app**. -10. Click **Finish**. The SAML app integration is now created. - -### SAML Setup - -After creating the app integration, you must perform the SAML setup to finalize -the SSO configuration. - -1. Go to the **SAML Signing Certificates** section, displayed under the **Sign On** tab. -2. Click **View SAML setup instructions**. - - ![ArangoGraph Okta SAML Setup](../../../../images/arangograph-okta-saml-setup.png) -3. The setup instructions include the following items: - - **Identity Provider Single Sign-On URL** - - **Identity Provider Issuer** - - **X.509 Certificate** -4. Copy the IdP settings, download the certificate using the - **Download X.509 certificate** button, and share them with the ArangoGraph - team via an ArangoGraph Support Ticket in order to complete the SSO - configuration. - -{{< info >}} -If you would like to enable SCIM provisioning in addition to the SSO SAML -configuration, please refer to the [SCIM](scim-provisioning.md) documentation. -{{< /info >}} diff --git a/site/content/3.10/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md b/site/content/3.10/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md deleted file mode 100644 index 8cf40b8009..0000000000 --- a/site/content/3.10/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: SCIM Provisioning -menuTitle: SCIM Provisioning -weight: 5 -description: >- - How to enable SCIM provisioning with Okta for your ArangoGraph project ---- -ArangoGraph provides support to control and manage members access in -ArangoGraph organizations with the -**System for Cross-domain Identity Management** (SCIM) provisioning. -This enables you to propagate to ArangoGraph any user access changes by using -the dedicated API. - -{{< info >}} -To enable the SCIM feature, get in touch with the ArangoGraph team via -**Request Help**, available in the left sidebar menu of the ArangoGraph Dashboard. -{{< /info >}} - -## About SCIM - -[SCIM](https://www.rfc-editor.org/rfc/rfc7644), or the System -for Cross-domain Identity Management [specification](http://www.simplecloud.info/), -is an open standard designed to manage user identity information. -SCIM provides a defined schema for representing users, and a RESTful -API to run CRUD operations on these user resources. - -The SCIM specification expects the following operations so that the SSO system -can sync the information about user resources in real time: - -- `GET /Users` - List all users. -- `GET /Users/:user_id` - Get details for a given user ID. -- `POST /Users` - Invite a new user to ArangoGraph. -- `PUT /Users/:user_id` - Update a given user ID. -- `DELETE /Users/:user_id` - Delete a specified user ID. - -ArangoGraph organization administrators can generate an API key for a specific organization. -The API token consists of a key and a secret. Using this key and secret as the -Basic Authentication Header (Basic Auth) in SCIM provisioning, you can access the APIs and -manage the user resources. - -To learn how to generate a new API key in the ArangoGraph Dashboard, see the -[API Keys](../../my-account.md#api-keys) section. - -{{< info >}} -When creating an API key, it is required to select an organization from the -list. -{{< /info >}} - -## Enable SCIM provisioning in Okta - -To enable SCIM provisioning, you first need to create an SSO integration that -supports the SCIM provisioning feature. - -1. To enable SCIM provisioning for your integration, go to the **General** tab. -2. In the **App Settings** section, select **Enable SCIM provisioning**. -3. Navigate to the **Provisioning** tab. The SCIM connection settings are - displayed under **Settings > Integration**. -4. Fill in the following fields: - - For **SCIM connector base URL**, use `https://dashboard.arangodb.cloud/api/scim/v1` - - For **Unique identifier field for users**, use `userName` -5. For **Supported provisioning actions**, enable the following: - - **Import New Users and Profile Updates** - - **Push New Users** - - **Push Profile Updates** -6. From the **Authentication Mode** menu, select the **Basic Auth** option. - To authenticate using this mode, you need to provide the username and password - for the account that handles the SCIM actions - in this case ArangoGraph. -7. Go to the ArangoGraph Dashboard and create a new API key ID and Secret. - - ![ArangoGraph Create new API key](../../../../images/arangograph-okta-api-key.png) - - Make sure to select one organization from the list and do not set any - value in the **Time to live** field. For more information, - see [How to create a new API key](../../my-account.md#how-to-create-a-new-api-key). -8. Use these authentication tokens as username and password when using the - **Basic Auth** mode and click **Save**. diff --git a/site/content/3.10/arangograph/security-and-access-control/x-509-certificates.md b/site/content/3.10/arangograph/security-and-access-control/x-509-certificates.md deleted file mode 100644 index 1ef13ef4e0..0000000000 --- a/site/content/3.10/arangograph/security-and-access-control/x-509-certificates.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: X.509 Certificates in ArangoGraph -menuTitle: X.509 Certificates -weight: 5 -description: >- - X.509 certificates in ArangoGraph are utilized for encrypted remote administration. - The communication with and between the servers of an ArangoGraph deployment is - encrypted using the TLS protocol ---- -X.509 certificates are digital certificates that are used to verify the -authenticity of a website, user, or organization using a public key infrastructure -(PKI). They are used in various applications, including SSL/TLS encryption, -which is the basis for HTTPS - the primary protocol for securing communication -and data transfer over a network. - -The X.509 certificate format is a standard defined by the -[International Telecommunication Union (ITU)](https://www.itu.int/en/Pages/default.aspx) -and contains information such as the name of the certificate holder, the public -key associated with the certificate, the certificate's issuer, and the -certificate's expiration date. An X.509 certificate can be signed by a -certificate authority (CA) or self-signed. - -ArangoGraph is using: -- **well-known X.509 certificates** created by -[Let's Encrypt](https://letsencrypt.org/) -- **self-signed X.509 certificates** created by ArangoGraph platform - -## Certificate chains - -A certificate chain, also called the chain of trust, is a hierarchical structure -that links together a series of digital certificates. The trust in the chain is -established by verifying the identity of the issuer of each certificate in the -chain. The root of the chain is a trusted third-party, such as a certificate -authority (CA). The CA issues a certificate to an organization, which in turn -can issue certificates to servers and other entities. - -For example, when you visit a website with an SSL/TLS certificate, the browser -checks the chain of trust to verify the authenticity of the digital certificate. -The browser checks to see if the root certificate is trusted, and if it is, it -trusts the chain of certificates that lead to the end-entity certificate. -If any of the certificates in the chain are invalid, expired, or revoked, the -browser does not trust the digital certificate. - -## X.509 certificates in ArangoGraph - -Each ArangoGraph deployment is accessible on different port numbers: -- default port `8529`, `443` -- high port `18529` - -Each ArangoGraph Notebook is accessible on different port numbers: -- default port `8840`, `443` -- high port `18840` - -Metrics are accessible on different port numbers: -- default port `8829`, `443` -- high port `18829` - -The distinction between these port numbers is in the certificate used for the -TLS connection. - -{{< info >}} -The default ports (`8529` and `443`) always serve the well-known certificate. -The [auto login to database UI](../deployments/_index.md#auto-login-to-database-ui) -feature is only available on the `443` port and is enabled by default. -{{< /info >}} - -### Well-known X.509 certificates - -**Well-known X.509 certificates** created by -[Let's Encrypt](https://letsencrypt.org/) are used on the -default ports, `8529` and `443`. - -This type of certificate has a lifetime of 5 years and is rotated automatically. -It is recommended to use well-known certificates, as this eases access of a -deployment in your browser. - -{{< info >}} -The well-known certificate is a wildcard certificate and cannot contain -Subject Alternative Names (SANs). To include a SAN field, which is needed -for private endpoints running on Azure, please use the self-signed certificate -option. -{{< /info >}} - -### Self-signed X.509 certificates - -**Self-signed X.509 certificates** are used on the high ports, i.e. `18529`. -This type of certificate has a lifetime of 1 year, and it is created by the -ArangoGraph platform. It is also rotated automatically before the expiration -date. - -{{< info >}} -Unless you switch off the **Use well-known certificate** option in the -certificate generation, both the default and high port serve the same -self-signed certificate. -{{< /info >}} - -### Subject Alternative Name (SAN) - -The Subject Alternative Name (SAN) is an extension to the X.509 specification -that allows you to specify additional host names for a single SSL certificate. - -When using [private endpoints](../deployments/private-endpoints.md), -you can specify custom domain names. Note that these are added **only** to -the self-signed certificate as Subject Alternative Name (SAN). - -## How to create a new certificate - -1. Click a project name in the **Projects** section of the main navigation. -2. Click **Security**. -3. In the **Certificates** section, click: - - The **New certificate** button to create a new certificate. - - A name or the **eye** icon in the **Actions** column to view a certificate. - The dialog that opens provides commands for installing and uninstalling - the certificate through a console. - - The **pencil** icon to edit a certificate. - You can also view a certificate and click the **Edit** button. - - The **tag** icon to make the certificate the new default. - - The **recycle bin** icon to delete a certificate. - -![ArangoGraph Create New Certificate](../../../images/arangograph-new-certificate.png) - -## How to install a certificate - -Certificates that have the **Use well-known certificate** option enabled do -not need any installation and are supported by almost all web browsers -automatically. - -When creating a self-signed certificate that has the **Use well-known certificate** -option disabled, the certificate needs to be installed on your local machine as -well. This operation varies between operating systems. To install a self-signed -certificate on your local machine, open the certificate and follow the -installation instructions. - -![ArangoGraph Certificates](../../../images/arangograph-cert-page-with-cert-present.png) - -![ArangoGraph Certificate Install Instructions](../../../images/arangograph-cert-install-instructions.png) - -You can also extract the information from all certificates in the chain using the -`openssl` tool. - -- For **well-known certificates**, run the following command: - ``` - openssl s_client -showcerts -servername <123456abcdef>.arangodb.cloud -connect <123456abcdef>.arangodb.cloud:8529 </dev/null - ``` - -- For **self-signed certificates**, run the following command: - ``` - openssl s_client -showcerts -servername <123456abcdef>.arangodb.cloud -connect <123456abcdef>.arangodb.cloud:18529 </dev/null - ``` - -Note that `<123456abcdef>` is a placeholder that needs to be replaced with the -unique ID that is part of your ArangoGraph deployment endpoint URL. - -## How to connect to your application - -[ArangoDB drivers](../../develop/drivers/_index.md), also called connectors, allow you to -easily connect ArangoGraph deployments to your application. - -1. Navigate to **Deployments** and click the **View** button to show the - deployment page. -2. In the **Quick start** section, click the **Connecting drivers** button. -3. Select your programming language, i.e. Go, Java, Python, etc. -4. Follow the examples to connect a driver to your deployment. They include - code examples on how to use certificates in your application. - -![ArangoGraph Connecting Drivers](../../../images/arangograph-connecting-drivers.png) - -## Certificate Rotation - -Every certificate has a self-signed root certificate that is going to expire. -When certificates that are used in existing deployments are about to expire, -an automatic rotation of the certificates is triggered. This means that the -certificate is cloned (all existing settings are copied over to a new certificate) -and all affected deployments then start using the cloned certificate. - -Based on the type of certificate used, you may also need to install the new -certificate on your local machine. For example, self-signed certificates require -installation. To prevent any downtime, it is recommended to manually create a -new certificate and apply the required changes prior to the expiration date. diff --git a/site/content/3.10/data-science/arangograph-notebooks.md b/site/content/3.10/data-science/arangograph-notebooks.md deleted file mode 100644 index 34ca9529be..0000000000 --- a/site/content/3.10/data-science/arangograph-notebooks.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: ArangoGraph Notebooks -menuTitle: ArangoGraph Notebooks -weight: 130 -description: >- - Colocated Jupyter Notebooks within the ArangoGraph Insights Platform ---- -{{< tip >}} -ArangoGraph Notebooks don't include the ArangoGraphML services. -To enable the ArangoGraphML services, -[get in touch](https://www.arangodb.com/contact/) -with the ArangoDB team. -{{< /tip >}} - -The ArangoGraph Notebook is a JupyterLab notebook embedded in the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -The notebook integrates seamlessly with the platform, -automatically connecting to ArangoGraph services and ArangoDB. -This makes it much easier to leverage these resources without having -to download any data locally or to remember user IDs, passwords, and endpoint URLs. - -For more information, see the [Notebooks](../arangograph/notebooks.md) documentation. diff --git a/site/content/3.11/arangograph/api/get-started.md b/site/content/3.11/arangograph/api/get-started.md deleted file mode 100644 index b4ea00e39d..0000000000 --- a/site/content/3.11/arangograph/api/get-started.md +++ /dev/null @@ -1,481 +0,0 @@ ---- -title: Get started with the ArangoGraph API and Oasisctl -menuTitle: Get started with Oasisctl -weight: 10 -description: >- - A tutorial that guides you through the ArangoGraph API as well as the Oasisctl - command-line tool -aliases: - - ../arangograph-api/getting-started ---- -This tutorial shows you how to do the following: - -- Generate an API key and authenticate with Oasisctl -- View information related to your organizations, projects, and deployments -- Configure, create and delete a deployment - -With Oasisctl the general command structure is to execute commands such as: - -``` -oasisctl list deployments -``` - -This command lists all deployments available to the authenticated user and we -will explore it in more detail later. Most commands also have associated -`--flags` that are required or provide additional options, this aligns with the -interaction method for many command line utilities. If you aren’t already -familiar with this, follow along as there are many examples in this guide that -will familiarize you with this command structure and using flags, along with -how to use OasisCtl to access the ArangoGraph API. - -Note: A good rule of thumb for all variables, resource names, and identifiers -is to **assume they are all case sensitive**, when being used with Oasisctl. - -## API Authentication - -### Generating an API Key - -The first step to using the ArangoGraph API is to generate an API key. To generate a -key you will need to be signed into your account at -[dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -Once you are signed in, hover over the profile icon in the top right corner. - -![Profile Icon](../../../images/arangograph-my-account-hover.png) - -Click _My API keys_. - -This will bring you to your API key management screen. From this screen you can -create, reject, and delete API keys. - -Click the _New API key_ button. - -![Blank API Screen](../../../images/arangograph-my-api-keys.png) - -The pop-up box that follows has a few options for customizing the access level -of this API key. - -The options you have available include: - -- Limit access to 1 organization or all organizations this user has access to -- Set an expiration time, specified in number of hours -- Limit key to read-only access - -Once you have configured the API key access options, you will be presented with -your API key ID and API key secret. It is very important that you capture the -API key secret before clicking the close button. There is no way to retrieve -the API key secret after closing this pop-up window. - -![API Secret Key](../../../images/arangograph-api-key-secret.png) - -Once you have securely stored your API key ID and secret, click close. - -That is all there is to setting up API access to your ArangoGraph organizations. - -### Authenticating with Oasisctl - -Now that you have API access it is time to login with Oasisctl. - -Running the Oasisctl utility without any arguments is the equivalent of -including the --help flag. This shows all of the top level commands available -and you can continue exploring each command by typing the command name -followed by the --help flag to see the options available for that command. - -Let’s start with doing that for the login command: - -```bash -oasisctl login --help -``` - -You should see an output similar to this: - -![login help output](../../../images/oasisctl-login-help.png) - -This shows two additional flags are available, aside from the help flag. - -- `--key-id` -- `--key-secret` - -These require the values we received when creating the API key. Once you run -this command you will receive an authentication token that can be used for the -remainder of the session. - -```bash -oasisctl login \ - --key-id cncApiKeyId \ - --key-secret 873-secret-key-id -``` - -Upon successful login you should receive an authentication token: - -![On Successful Login](../../../images/oasisctl-login-success.png) - -Depending on your environment, you could instead store this token for easier -access. For example: - -With Linux: - -```bash -export OASIS_TOKEN=$(oasisctl login --key-id cncApiKeyId --key-secret 873-secret-key-id) -``` - -Or Windows Powershell: - -```powershell -setx OASIS_TOKEN (oasisctl login --key-id cncApiKeyId --key-secret 873-secret-key-id) -``` - -In the coming sections you will see how to authenticate with this token when -using other commands that require authentication. - -## Viewing and Managing Organizations and Deployments - -### Format - -This section covers the basics of retrieving information from the ArangoGraph API. -Depending on the data you are requesting from the ArangoGraph API, being able to read -it in the command line can start to become difficult. To make text easier to -read for humans and your applications, Oasisctl offers two options for -formatting the data received: - -- Table -- JSON - -You can define the format of the data by supplying the `--format` flag along -with your preferred format, like so: - -```bash -oasisctl --format json -``` - -### Viewing Information with the List Command - -This section will cover the two main functions of retrieving data with the -ArangoGraph API. These are: - -- `list` - List resources -- `get` - Get information - -Before you can jump right into making new deployments you need to be aware of -what resources you have available. This is where the list command comes in. -List serves as a way to retrieve general information, you can see all of the -available list options by accessing its help output. - -```bash -oasisctl list --help -``` - -This should output a screen similar to: - -![List help output](../../../images/oasisctl-list-help.png) - -As you can see you can get information on anything you would need about your -ArangoGraph organizations, deployments, and access control. To start, let’s take a -look at a few examples of listing information and then getting more details on -our results. - -### List Organizations - -One of the first pieces of information you may be interested in is the -organizations you have access to. This is useful to know because most commands -require an explicit declaration of the organization you are interacting with. -To find this, use list to list your available organizations: - -```bash -oasisctl list organizations --format json -``` - -Once you have your available organizations you can refer to your desired -organization using its name or id. - -![List organizations output](../../../images/oasisctl-list-org.png) - -Note: You may also notice the url attribute, this is for internal use only and -should not be treated as a publicly accessible path. - -### List Projects - -Once you have the organization name that you wish to interact with, the next -step is to list the available projects within that organization. Do this by -following the same command structure as before and instead exchange -organizations for projects, this time providing the desired organization name -with the `--organization-id` flag. - -```bash -oasisctl list projects \ - --organization-id "ArangoGraph Organization" \ - --format json -``` - -This will return information on all projects that the authenticated user has -access to. - -![List projects output](../../../images/oasisctl-list-projects.png) - -### List Deployments - -Things start getting a bit more interesting with information related to -deployments. Now that you have obtained an organization iD and a project ID, -you can list all of the associated deployments for that project. - -```bash -oasisctl list deployments \ - --organization-id "ArangoGraph Organization" \ - --project-id "Getting Started with ArangoGraph" \ - --format json - ``` - -![List deployments output](../../../images/oasisctl-list-deployments.png) - -This provides some basic details for all of the deployments associated with the -project. Namely, it provides a deployment ID which we can use to start making -modifications to the deployment or to get more detailed information, with the -`get` command. - -### Using the Get Command - -In Oasisctl, you use the get command to obtain more detailed information about -any of your available resources. It follows the same command structure as the -previous commands but typically requires a bit more information. For example, -to get more information on a specific deployment means you need to know at -least: - -- Organization ID -- Project ID -- Deployment ID - -To get more information about our example deployment we would need to execute -the following command: - -```bash -oasisctl get deployment \ - --organization-id "ArangoGraph Organization" \ - --project-id "Getting Started with ArangoGraph" \ - --deployment-id "abc123DeploymentID" \ - --format json -``` - -This returns quite a bit more information about the deployment including more -detailed server information, the endpoint URL where you can access the web interface, -and optionally the root user password. - -![Get deployment details](../../../images/oasisctl-get-deployment.png) - -### Node Size ID - -We won’t be exploring every flag available for creating a deployment but it is -a good idea to explore the concept of the node size ID value. This is an -indicator that is unique to each provider (Google, AWS) and indicates -the CPU and memory. Depending on the provider and region this can also -determine the available disk sizes for your deployment. In other words, it is -pretty important to know which `node-size-id` your deployment will be using. - -The command you execute will determine on the available providers and regions -for your organization but here is an example command that lists the available -options in the US West region for the Google Cloud Platform: - -```bash -oasisctl list nodesizes \ - --organization-id "ArangoGraph Organization" \ - --provider-id "Google Cloud Platform" \ - --region-id gcp-us-west2 -``` - -The output you will see will be similar to this: - -![List node size id](../../../images/oasisctl-list-node-size-id.png) - -It is important to note that you can scale up with more disk size but you are -unable to scale down your deployment disk size. The only way to revert back to -a lower disk size is to destroy and recreate your deployment. - -Once you have decided what your starting deployment needs are you can reference -your decision with the Id value for the corresponding configuration. So, for -our example, we will be choosing the c4-a4 configuration. The availability and -options are different for each provider and region, so be sure to confirm the -node size options before creating a new deployment. - -### Challenge - -You can use this combination of listing and getting to obtain all of the -information you want for your ArangoGraph organizations. We only explored a few of -the commands available but you can explore them all within the utility by -utilizing the `--help` flag or you can see all of the available options -in the [documentation](../oasisctl/options.md). - -Something that might be useful practice before moving on is getting the rest -of the information that you need to create a deployment. Here are a list of -items that won’t have defaults available when you attempt to create your -first deployment and you will need to supply: - -- CA Certificate ID (name) -- IP Allowlist ID (id) (optional) -- Node Size ID (id) -- Node Disk Size (GB disk size dependent on Node Size ID) -- Organization ID (name) -- Project ID (name) -- Region ID (name) - -Try looking up that information to get more familiar with how to find -information with Oasisctl. When in doubt use the `--help` flag with any -command. - -## Creating Resources - -Now that you have seen how to obtain information about your available -resources, it’s time to start using those skills to start creating your own -deployment. To create resources with Oasisctl you use the create command. -To see all the possible options you can start with the following command: - -```bash -oasisctl create --help -``` - -![Create command help output](../../../images/oasisctl-create-help.png) - -### Create a Deployment - -To take a look at all of the options available when creating a deployment the -best place to start is with our trusty help command. - -```bash -oasisctl create deployment --help -``` - -![Create deployment help output](../../../images/oasisctl-create-deployment-help.png) - -As you can see there are a lot of default options but also a few that require -some knowledge of our pre-existing resources. Attempting to create a deployment -without one of the required options will return an error indicating which value -is missing or invalid. - -Once you have collected all of the necessary information the command for -creating a deployment is simply supplying the values along with the appropriate -flags. This command will create a deployment: - -```bash -oasisctl create deployment \ - --region-id gcp-us-west2 \ - --node-size-id c4-a4 \ - --node-disk-size 10 \ - --version 3.9.2 \ - --cacertificate-id OasisCert \ - --organization-id "ArangoGraph Organization" \ - --project-id "Getting Started with ArangoGraph" \ - --name "First Oasisctl Deployment" \ - --description "The first deployment created using the awesome Oasisctl utility!" -``` - -If everything went according to play you should see similar output: - -![Deployment created successfully](../../../images/oasisctl-create-first-deployment-success.png) - -### Wait on Deployment Status - -When you create a deployment it begins the process of _bootstrapping_ which is -getting the deployment ready for use. This should happen quickly and to see if -it is ready for use you can run the wait command using the ID of the newly -created deployment, shown at the top of the information you received above. - -```bash -oasisctl wait deployment \ - --deployment-id hmkuedzw9oavvjmjdo0i -``` - -Once you receive a response of _Deployment Ready_, your deployment is indeed -ready to use. You can get some new details by running the get command. - -```bash -oasisctl get deployment \ - --organization-id "ArangoGraph Organization" \ - --deployment-id hmkuedzw9oavvjmjdo0i -``` - -![Get deployment bootstrap status](../../../images/oasisctl-get-first-deployment-bootstrapped.png) - -Once the deployment is ready you will get two new pieces of information, the -endpoint URL and Bootstrapped-At will indicate the time it became available. -If you would like to login to the web interface to verify that your server is in fact -up and running you will need to supply the `--show-root-password` flag along -with the get command, this flag does not take a value. - -### The Update Command - -The inevitable time comes when something about your deployment must change and -this is where the update command comes in. You can use update to change or -update a number of things including updating the groups, policies, and roles -for user access control. You can also update some of your deployment -information or, for our situation, add an IP Allowlist if you didn’t add one -during creation. - -There are, of course, many options available and it is always recommended to -start with the --help flag to read about all of them. - -### Update a Deployment - -This section will show an example of how to update a deployment to use a -pre-existing allowlist. To add an IP Allowlist after the fact we are really -just updating the IP Allowlist value, which is currently empty. In order to -update the IP Allowlist of a deployment you must create a allowlist and then -you can simply reference its id like so: - -```bash -oasisctl update deployment \ - --deployment-id hmkuedzw9oavvjmjdo0i \ - --ipallowlist-id abc123AllowlistID -``` - -You should receive a response with the deployment information and an indication -that deployment was updated at the top. - -You can use the update command to update everything about your deployments as -well. If you run: - -```bash -oasisctl update deployment --help -``` - -You will see the full list of options available that will allow you to scale -your deployment as needed. - -![Update deployment help output](../../../images/oasisctl-update-deployment-help.png) - -## Delete a Deployment - -There may come a day where you need to delete a resource. The process for this -follows right along with the conventions for the other commands detailed -throughout this guide. - -### The Delete Command - -For the final example in this guide we will delete the deployment that has -been created. This only requires the deployment ID and the permissions to -delete the deployment. - -```bash -oasisctl delete deployment \ - --deployment-id hmkuedzw9oavvjmjdo0i -``` - -Once the deployment has been deleted you can confirm it is gone by listing -your deployments. - -```bash -oasisctl list deployments \ - --organization-id "ArangoGraph Organization" \ - --format json -``` - -## Next Steps - -As promised, this guide covered the basics of using Oasisctl with the ArangoDB -API. While we primarily focused on viewing and managing deployments there is -also a lot more to explore, including: - -- Organization Invites Management -- Backups -- API Key Management -- Certificate Management -- User Access Control - -You can check out all these features and further details on the ones discussed -in this guide in the documentation. diff --git a/site/content/3.11/arangograph/api/set-up-a-connection.md b/site/content/3.11/arangograph/api/set-up-a-connection.md deleted file mode 100644 index 7cbc2b76e2..0000000000 --- a/site/content/3.11/arangograph/api/set-up-a-connection.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Get started with the ArangoGraph API -menuTitle: Get started with the API -weight: 5 -description: >- - Quick start guide on how to set up a connection to the ArangoGraph API -aliases: - - ../arangograph-api/getting-started-with-the-api ---- -The instructions below are a quick start guide on how to set up a connection to the ArangoGraph API. - -All examples below will use the Go programming language. -Since the ArangoGraph API is using gRPC with protocol buffers, -all examples can be easily translated to many different languages. - -## Prerequisites - -Make sure that you have already [signed up for ArangoGraph](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). - -## Creating an API key - -1. Go to [dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) and login. -2. Click the user icon in the top-right of the dashboard. -3. Select __My API keys__ -4. Click __New API key__ -5. Click __Create__ to select the default settings. -6. You'll now see a dialog showing the __API key ID__ and - the __API key Secret__. This is the only time you will see - the secret, so make sure to store it in a safe place. - -## Create an access token with your API key - -```go -import ( - "context" - - "google.golang.org/grpc" - "google.golang.org/grpc/credentials" - "github.com/arangodb-managed/apis/common/auth" - common "github.com/arangodb-managed/apis/common/v1" - data "github.com/arangodb-managed/apis/data/v1" - iam "github.com/arangodb-managed/apis/iam/v1" -) - -... - -// Set up a connection to the API. -tc := credentials.NewTLS(&tls.Config{}) -conn, err := grpc.Dial("https://api.cloud.arangodb.com", - grpc.WithTransportCredentials(tc)) -if err != nil { - // handle error -} - -// Create client for IAM service -iamc := iam.NewIAMServiceClient(conn) - -// Call AuthenticateAPIKey to create token -resp, err := iamc.AuthenticateAPIKey(ctx, - &iam.AuthenticateAPIKeyRequest{ - Id: keyID, - Secret: keySecret, -}) -if err != nil { - // handle error -} -token := resp.GetToken() -``` - -## Make an authenticated API call - -We're going to list all deployments in a project. -The connection and token created in the previous sample is re-used. - -The authentication token is passed as standard `bearer` token to the call. -If Go, there is a helper method (`WithAccessToken`) to create a context using -an authentication token. - -```go -// Create client for Data service -datac := data.NewDataServiceClient(conn) - -// Prepare context with authentication token -ctx := auth.WithAccessToken(context.Background(), token) - -// Call list deployments -list, err := datac.ListDeployments(ctx, - &common.ListOptions{ContextId: myProjectID}) -if err != nil { - // handle error -} -for _, depl := range list.GetItems() { - fmt.Printf("Found deployment with id %s\n", depl.GetId()) -} - -``` - -## API Errors - -All API methods return errors as gRPC error codes. - -The `github.com/arangodb-managed/apis/common/v1` package contains several helpers to check for common errors. - -```go -if common.IsNotFound(err) { - // Error is caused by a not-found situation -} -``` diff --git a/site/content/3.11/arangograph/backups.md b/site/content/3.11/arangograph/backups.md deleted file mode 100644 index e4adcd0a0e..0000000000 --- a/site/content/3.11/arangograph/backups.md +++ /dev/null @@ -1,172 +0,0 @@ ---- -title: Backups in ArangoGraph -menuTitle: Backups -weight: 50 -description: >- - You can manually create backups or use a backup policy to schedule periodic - backups, and both ways allow you to store your backups in multiple regions simultaneously ---- -## How to create backups - -To backup data in ArangoGraph for an ArangoDB installation, navigate to the -**Backups** section of your deployment created previously. - -![Backup ArangoDB](../../images/arangograph-backup-section.png) - -There are two ways to create backups. Create periodic backups using a -**Backup policy**, or create a backup manually. -Both ways allow you to create [backups in multiple regions](#multi-region-backups) -as well. - -### Periodic backups - -Periodic backups are created at a given schedule. To see when the new backup is -due, observe the schedule section. - -![Backup Policy schedule](../../images/arangograph-backup-policy-schedule.png) - -When a new deployment is created, a default **Backup policy** is created for it -as well. This policy creates backups every two hours. To edit this policy -(or any policy), highlight it in the row above and hit the pencil icon. - -![Edit Backup Policy](../../images/arangograph-edit-backup-policy.png) - -These backups are not automatically uploaded. To enable this, use the -**Upload backup to storage** option and choose a retention period that -specifies how long backups are retained after creation. - -If the **Upload backup to storage** option is enabled for a backup policy, -you can then create backups in different regions than the default one. -The regions where the default backup is copied are shown in the -**Additional regions** column in the **Policies** section. - -### Manual backups - -It's also possible to create a backup on demand. To do this, click **Back up now**. - -![Back up Now](../../images/arangograph-back-up-now.png) - -![Back up Now Dialog](../../images/arangograph-back-up-now-dialog.png) - -If you want to manually copy a backup to a different region than the default -one, first ensure that the **Upload backup to storage** option is enabled. -Then, highlight the backup row and use the -**Copy backup to a different region** button from the **Actions** column. - -The source backup ID from -which the copy is created is displayed in the **Copied from Backup** column. - -![Copy backup to a different region](../../images/arangograph-copy-backup-different-region.png) - -![Multiple Backups](../../images/arangograph-multiple-backups.png) - -### Uploading backups - -By default, a backup is not uploaded to the cloud, instead it remains on the -servers of the deployment. To make a backup that is resilient against server -(disk) failures, upload the backup to cloud storage. - -When the **Upload backup to cloud storage** option is enabled, the backup is -preserved for a long time and does not occupy any disk space on the servers. -This also allows copying the backup to different regions and it can be -configured in the **Multiple region backup** section. - -Uploaded backups are -required for [cloning](#how-to-clone-deployments-using-backups). - -#### Best practices for uploading backups - -When utilizing the **Upload backup to cloud storage** feature, a recommended -approach is to implement a backup strategy that balances granularity and storage -efficiency. - -One effective strategy involves creating a combination of backup intervals and -retention periods. For instance, consider the following example: - -1. Perform a backup every 4 hours with a retention period of 24 hours. This - provides frequent snapshots of your data, allowing you to recover recent - changes. -2. Perform a backup every day with a retention period of a week. Daily backups - offer a broader time range for recovery, enabling you to restore data from - any point within the past week. -3. Perform a backup every week with a retention period of a month. Weekly - backups allow you to recover from more extensive data. -4. Perform a backup every month with a retention period of a year. Monthly - backups provide a long-term perspective, enabling you to restore data from - any month within the past year. - -This backup strategy offers good granularity, providing multiple recovery -options for different timeframes. By implementing this approach, you have a -total number of backups that is considerable lower in comparison to other -alternatives such as having hourly backups with a retention period of a year. - -## Multi-region backups - -Using the multi-region backup feature, you can store backups in multiple regions -simultaneously either manually or automatically as part of a **Backup policy**. -If a backup created in one region goes down, it is still available in other -regions, significantly improving reliability. - -Multiple region backup is only available when the -**Upload backup to cloud storage** option is enabled. - -![Multiple Region Backup](../../images/arangograph-multi-region-backup.png) - -## How to restore backups - -To restore a database from a backup, highlight the desired backup and click the restore icon. - -{{< warning >}} -All current data will be lost when restoring. To make sure that new data that -has been inserted after the backup creation is also restored, create a new -backup before using the **Restore Backup** feature. - -During restore, the deployment is temporarily not available. -{{< /warning >}} - -![Restore From Backup](../../images/arangograph-restore-from-backup.png) - -![Restore From Backup Dialog](../../images/arangograph-restore-from-backup-dialog.png) - -![Restore From Backup Status Pending](../../images/arangograph-restore-from-backup-status-pending.png) - -![Restore From Backup Status Restored](../../images/arangograph-restore-from-backup-status-restored.png) - -## How to clone deployments using backups - -Creating a deployment from a backup allows you to duplicate an existing -deployment with all its data, for example, to create a test environment or to -move to a different cloud provider or region within ArangoGraph. - -{{< info >}} -This feature is only available if the backup you wish to clone has been -uploaded to cloud storage. -{{< /info >}} - -{{< info >}} -The cloned deployment will have the exact same features as the previous -deployment including node size and model. The cloud provider and the region -can stay the same or you can select a different one. -For restoring a deployment as quick as possible, it is recommended to create a -deployment in the same region as where the backup resides to avoid cross-region -data transfer. -The data contained in the backup will be restored to this new deployment. - -The *root password* for this deployment will be different. -{{< /info >}} - -1. Highlight the backup you wish to clone from and hit **Clone backup to new deployment**. - - ![ArangoGraph Clone Deployment From Backup](../../images/arangograph-clone-deployment-from-backup.png) - -2. Choose whether the clone should be created using the current provider and in - the same region as the backup or using a different provider, a different region, - or both. - - ![ArangoGraph Clone Deployment Select Region](../../images/arangograph-clone-deployment-select.png) - -3. The view should navigate to the new deployment being bootstrapped. - - ![ArangoGraph Cloned Deployment](../../images/arangograph-cloned-deployment.png) - -This feature is also available through [oasisctl](oasisctl/_index.md). diff --git a/site/content/3.11/arangograph/data-loader/_index.md b/site/content/3.11/arangograph/data-loader/_index.md deleted file mode 100644 index 7955fcb47a..0000000000 --- a/site/content/3.11/arangograph/data-loader/_index.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Load your data into ArangoGraph -menuTitle: Data Loader -weight: 22 -description: >- - Load your data into ArangoGraph and transform it into richly-connected graph - structures, without needing to write any code or deploy any infrastructure ---- - -ArangoGraph provides different ways of loading your data into the platform, -based on your migration use case. - -## Transform data into a graph - -The ArangoGraph Data Loader allows you to transform existing data from CSV file -formats into data that can be analyzed by the ArangoGraph platform. - -You provide your data in CSV format, a common format used for exports of data -from various systems. Then, using a no-code editor, you can model the schema of -this data and the relationships between them. This allows you to ingest your -existing datasets into your ArangoGraph database, without the need for any -development effort. - -You can get started in a few easy steps. - -1. **Create database**: - Choose an existing database or create a new one and enter a name for your new graph. - -2. **Add files**: - Drag and drop your data files in CSV format. - -3. **Design your graph**: - Model your graph schema by adding nodes and connecting them via edges. - -4. **Import data**: - Once you are ready, save and start the import. The resulting graph is an - [EnterpriseGraph](../../graphs/enterprisegraphs/_index.md) with its - corresponding collections, available in your ArangoDB web interface. - -Follow this [working example](../data-loader/example.md) to see how easy it is -to transform existing data into a graph. - -## Import data to the cloud - -To import data from various files into collections **without creating a graph**, -get the ArangoDB client tools for your operating system from the -[download page](https://arangodb.com/download-major/). - -- To import data to ArangoGraph from an existing ArangoDB instance, see - [arangodump](../../components/tools/arangodump/) and - [arangorestore](../../components/tools/arangorestore/). -- To import pre-existing data in JSON, CSV, or TSV format, see - [arangoimport](../../components/tools/arangoimport/). - -## How to access the Data Loader - -1. If you do not have a deployment yet, [create a deployment](../deployments/_index.md#how-to-create-a-new-deployment) first. -2. Open the deployment you want to load data into. -3. In the **Load Data** section, click the **Load your data** button. -4. Select your migration use case. - -![ArangoGraph Data Loader Migration Use Cases](../../../images/arangograph-data-loader-migration-use-cases.png) \ No newline at end of file diff --git a/site/content/3.11/arangograph/data-loader/design-graph.md b/site/content/3.11/arangograph/data-loader/design-graph.md deleted file mode 100644 index b1c5eaf3af..0000000000 --- a/site/content/3.11/arangograph/data-loader/design-graph.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Design your graph -menuTitle: Design graph -weight: 10 -description: >- - Design your graph database schema using the integrated graph modeler in the Data Loader ---- - -Based on the data you have uploaded, you can start designing your graph. -The graph designer allows you to create a schema using nodes and edges. -Once this is done, you can save and start the import. The resulting -[EnterpriseGraph](../../graphs/enterprisegraphs/_index.md) and the -corresponding collections are created in your ArangoDB database instance. - -## How to add a node - -Nodes are the main objects in your data model and include the attributes of the -objects. - -1. To create a new node, click the **Add node** button. -2. In the graph designer, click on the newly created node to view the **Node details**. -3. In the **Node details** panel, fill in the following fields: - - For **Node label**, enter a name you want to use for the node. - - For **File**, select a file from the list to associate it with the node. - - For **Primary Identifier**, select a field from the list. This is used to - reference the nodes when you define relations with edges. - - For **File Headers**, select one or more attributes from the list. - -![ArangoGraph Data Loader Add Node](../../../images/arangograph-data-loader-add-node.png) - -## How to connect nodes - -Nodes can be connected by edges to express and categorize the relations between -them. A relation always has a direction, going from one node to another. You can -define this direction in the graph designer by dragging your cursor from one -particular node to another. - -To connect two nodes, you can use the **Connect node(s)** button. Click on any -node to self-reference it or drag it to connect it to another node. Alternatively, -when you select a node, a plus sign will appear, allowing you to directly add a -new node with an edge. - -{{< tip >}} -To quickly recenter your elements on the canvas, you can use the **Center View** -button located in the bottom right corner. This brings your nodes and edges back -into focus. -{{< /tip >}} - -The edge needs to be associated with a file and must have a label. Note that a -node and an edge cannot have the same label. - -See below the steps to add details to an edge. - -1. Click on an edge in the graph designer. -2. In the **Edit Edge** panel, fill in the following fields: - - For **Edge label**, enter a name you want to use for the edge. - - For **Relation file**, select a file from the list to associate it with the edge. - - To define how the relation points from one node to another, select the - corresponding relation file header for both the origin file (`_from`) and the - destination file (`_to`). - - For **File Headers**, select one or more attributes from the list. - -![ArangoGraph Data Loader Edit Edge](../../../images/arangograph-data-loader-edit-edge.png) - -## How to delete elements - -To remove a node or an edge, simply select it in the graph designer and click the -**Delete** icon. \ No newline at end of file diff --git a/site/content/3.11/arangograph/data-loader/example.md b/site/content/3.11/arangograph/data-loader/example.md deleted file mode 100644 index 46fdd1b38e..0000000000 --- a/site/content/3.11/arangograph/data-loader/example.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Data Loader Example -menuTitle: Example -weight: 20 -description: >- - Follow this complete working example to see how easy it is to transform existing - data into a graph and get insights from the connected entities ---- - -To transform your data into a graph, you need to have CSV files with entities -representing the nodes and a corresponding CSV file representing the edges. - -This example uses a sample data set of two files, `airports.csv`, and `flights.csv`. -These files are used to create a graph showing flights arriving at and departing -from various cities. -You can download the files from [GitHub](https://github.com/arangodb/example-datasets/tree/master/Data%20Loader). - -The `airports.csv` contains rows of airport entries, which are the future nodes -in your graph. The `flights.csv` contains rows of flight entries, which are the -future edges connecting the nodes. - -The whole process can be broken down into these steps: - -1. **Database and graph setup**: Begin by choosing an existing database or - create a new one and enter a name for your new graph. -2. **Add files**: Upload the CSV files to the Data Loader web interface. You can - simply drag and drop them or upload them through the file browser window. -3. **Design graph**: Design your graph schema by adding nodes and edges and map - data from the uploaded files to them. This allows creating the corresponding - documents and collections for your graph. -4. **Import data**: Import the data and start using your newly created - [EnterpriseGraph](../../graphs/enterprisegraphs/_index.md) and its - corresponding collections. - -## Step 1: Create a database and choose the graph name - -Start by creating a new database and adding a name for your graph. - -![Data Loader Example Step 1](../../../images/arangograph-data-loader-example-choose-names.png) - -## Step 2: Add files - -Upload your CSV files to the Data Loader web interface. You can drag and drop -them or upload them via a file browser window. - -![Data Loader Example Step 2](../../../images/arangograph-data-loader-example-add-files.png) - -See also [Add files into Data Loader](../data-loader/add-files.md). - -## Step 3: Design graph schema - -Once the files are added, you can start designing the graph schema. This example -uses a simple graph consisting of: -- Two nodes (`origin_airport` and `destination_airport`) -- One directed edge going from the origin airport to the destination one - representing a flight - -Click **Add node** to create the nodes and connect them with edges. - -Next, for each of the nodes and edges, you need to create a mapping to the -corresponding file and headers. - -For nodes, the **Node label** is going to be a node collection name and the -**Primary identifier** will be used to populate the `_key` attribute of documents. -You can also select any additional headers to be included as document attributes. - -In this example, two node collections have been created (`origin_airport` and -`destination_airport`) and `AirportID` header is used to create the `_key` -attribute for documents in both node collections. The header preview makes it -easy to select the headers you want to use. - -![Data Loader Example Step 3 Nodes](../../../images/arangograph-data-loader-example-map-nodes.png) - -For edges, the **Edge label** is going to be an edge collection name. Then, you -need to specify how edges will connect nodes. You can do this by selecting the -*from* and *to* nodes to give a direction to the edge. -In this example, the `source airport` header has been selected as a source and -the `destination airport` header as a target for the edge. - -![Data Loader Example Step 3 Edges](../../../images/arangograph-data-loader-example-map-edges.png) - -Note that the values of the source and target for the edge correspond to the -**Primary identifier** (`_key` attribute) of the nodes. In this case, it is the -airport code (i.e. GKA) used as the `_key` in the node documents and in the source -and destination headers to configure the edges. - -See also [Design your graph in the Data Loader](../data-loader/design-graph.md). - -## Step 4: Import and see the resulting graph - -After all the mapping is done, all you need to do is click -**Save and start import**. The report provides an overview of the files -processed and the documents created, as well as a link to your new graph. -See also [Start import](../data-loader/import.md). - -![Data Loader Example Step 4 See your new graph](../../../images/arangograph-data-loader-example-data-import.png) - -Finally, click **See your new graph** to open the ArangoDB web interface and -explore your new collections and graph. - -![Data Loader Example Step 4 Resulting graph](../../../images/arangograph-data-loader-example-resulting-graph.png) - -Happy graphing! \ No newline at end of file diff --git a/site/content/3.11/arangograph/data-loader/import.md b/site/content/3.11/arangograph/data-loader/import.md deleted file mode 100644 index 1589244278..0000000000 --- a/site/content/3.11/arangograph/data-loader/import.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Start the import -menuTitle: Start import -weight: 15 -description: >- - Once the data files are provided and the graph is designed, you can start the import ---- - -Before starting the actual import, make sure that: -- You have selected a database for import or created a new one; -- You have provided a valid name for your graph; -- You have created at least one node; -- You have created at least one edge; -- You have uploaded at least one file; -- Every file is related to at least one node or edge; -- Every node and edge is linked to a file; -- Every node and edge has a unique label; -- Every node has a primary identifier selected; -- Every edge has an origin and destination file header selected. - -To continue with the import, click the **Save and start import** button. The data -importer provides an overview showing results with the collections that have been -created with the data provided in the files. - -To access your newly created graph in the ArangoDB web interface, click the -**See your new graph** button. - -## File validation - -Once the import has started, the files that you have provided are being validated. -If the validation process detects parsing errors in any of the files, the import -is temporarily paused and the validation errors are shown. You can get a full -report by clicking the **See full report** button. - -At this point, you can: -- Continue with the import without addressing the errors. The CSV files will still - be included in the migration. However, the invalid rows are skipped and - excluded from the migration. -- Revisit the problematic file(s), resolve the issues, and then re-upload the - file(s) again. - -{{< tip >}} -To ensure the integrity of your data, it is recommended to address all the errors -detected during the validation process. -{{< /tip >}} - -### Validation errors and their meanings - -#### Invalid Quotation Mark - -This error indicates issues with quotation marks in the CSV data. -It can occur due to improper use of quotes. - -#### Missing Quotation Marks - -This error occurs when quotation marks are missing or improperly placed in the -CSV data, potentially affecting data enclosure. - -#### Insufficient Data Fields - -This error occurs when a CSV row has fewer fields than expected. It may indicate -missing or improperly formatted data. - -#### Excessive Data Fields - -This error occurs when a CSV row has more fields than expected, possibly due to -extra data or formatting issues. - -#### Unidentifiable Field Separator - -This error suggests that the parser could not identify the field separator -character in the CSV data. \ No newline at end of file diff --git a/site/content/3.11/arangograph/deployments/_index.md b/site/content/3.11/arangograph/deployments/_index.md deleted file mode 100644 index b8dd98d490..0000000000 --- a/site/content/3.11/arangograph/deployments/_index.md +++ /dev/null @@ -1,301 +0,0 @@ ---- -title: Deployments in ArangoGraph -menuTitle: Deployments -weight: 20 -description: >- - How to create and manage deployments in ArangoGraph ---- -An ArangoGraph deployment is an ArangoDB cluster or single server, configured -as you choose. - -Each deployment belongs to a project, which belongs to an organization in turn. -You can have any number of deployments under one project. - -**Organizations → Projects → <u>Deployments</u>** - -![ArangoGraph Deployments](../../../images/arangograph-deployments-page.png) - -## How to create a new deployment - -1. If you do not have a project yet, - [create a project](../projects.md#how-to-create-a-new-project) first. -2. In the main navigation, click __Deployments__. -3. Click the __New deployment__ button. -4. Select the project you want to create the deployment for. -5. Set up your deployment. The configuration options are described below. - -{{< info >}} -Deployments contain exactly **one policy**. Within that policy, you can define -role bindings to regulate access control on a deployment level. -{{< /info >}} - -### In the **General** section - -- Enter the __Name__ and optionally a __Short description__ for the deployment. -- Select the __Provider__ and __Region__ of the provider. - {{< warning >}} - Once a deployment has been created, it is not possible to change the - provider and region anymore. - {{< /warning >}} - -![ArangoGraph New Deployment General](../../../images/arangograph-new-deployment-general.png) - -### In the **Sizing** section - -- Choose a __Model__ for the deployment: - - - __OneShard__ deployments are suitable when your data set fits in a single node. - They are ideal for graph use cases. This model has a fixed number of 3 nodes. - - - __Sharded__ deployments are suitable when your data set is larger than a single - node. The data will be sharded across multiple nodes. You can select the - __Number of nodes__ for this deployment model. The more nodes you have, the - higher the replication factor can be. - - - __Single Server__ deployments are suitable when you want to try out ArangoDB without - the need for high availability or scalability. The deployment will contain a - single server only. Your data will not be replicated and your deployment can - be restarted at any time. - -- Select a __NODE SIZE__ from the list of available options. Each option is a - combination of vCPUs, memory, and disk space per node. - -![ArangoGraph New Deployment Sizing](../../../images/arangograph-new-deployment-sizing.png) - -### In the **Advanced** section - -- Select the __DB Version__. - If you don't know which DB version to select, use the version selected by default. -- Select the desired __Support Plan__. Click the link below the field to get - more information about the different support plans. -- In the __Certificate__ field: - - The default certificate created for your project is selected automatically. - - If you have no default certificate, or want to use a new certificate, - create a new certificate by typing the desired name for it and hitting - enter or clicking __Create "\<name\>"__ when done. - - Or, if you already have multiple certificates, select the desired one. -- _Optional but strongly recommended:_ In the __IP allowlist__ field, select the - desired one in case you want to limit access to your deployment to certain - IP ranges. To create a allowlist, navigate to your project and select the - __IP allowlists__ tab. See [How to manage IP allowlists](../projects.md#how-to-manage-ip-allowlists) - for details. - {{< security >}} - For any kind of production deployment it is strongly advise to use an IP allowlist. - {{< /security >}} -- Select a __Deployment Profile__. Profile options are only available on request. - -![ArangoGraph New Deployment Advanced](../../../images/arangograph-new-deployment-advanced.png) - -### In the **Summary** panel - -1. Review the configuration, and if you're okay with the setup, press the - __Create deployment__ button. -2. You are taken to the deployment overview page. - **Note:** Your deployment is being bootstrapped at that point. This process - takes a few minutes. Once the deployment is ready, you receive a confirmation - email. - -## How to access your deployment - -1. In the main navigation, click the __Dashboard__ icon and then click __Projects__. -2. In the __Projects__ page, click the project for - which you created a deployment earlier. -3. Alternatively, you can access your deployment by clicking __Deployments__ in the - dashboard navigation. This page shows all deployments from all projects. - Click the name of the deployment you want to view. -4. For each deployment in your project, you see the status. While your new - deployment is being set up, it displays the __bootstrapping__ status. -5. Press the __View__ button to show the deployment page. -6. When a deployment displays a status of __OK__, you can access it. -7. Click the __Open database UI__ button or on the database UI link to open - the dashboard of your new ArangoDB deployment. - -At this point your ArangoDB deployment is available for you to use — **Have fun!** - -If you have disabled the [auto-login option](#auto-login-to-database-ui) to the -database web interface, you need to follow the additional steps outlined below -to access your deployment: - -1. Click the copy icon next to the root password. This copies the deployment - root password to your clipboard. You can also click the view icon to unmask - the root password to see it. - {{< security >}} - Do not use the root username/password for everyday operations. It is recommended - to use them only to create other user accounts with appropriate permissions. - {{< /security >}} -2. Click the __Open database UI__ button or on the database UI link to open - the dashboard of your new ArangoDB deployment. -3. In the __username__ field type `root`, and in the __password__ field paste the - password that you copied earlier. -4. Press the __Login__ button. -5. Press the __Select DB: \_system__ button. - -{{< info >}} -Each deployment is accessible on two ports: - -- Port `8529` is the standard port recommended for use by web-browsers. -- Port `18529` is the alternate port that is recommended for use by automated services. - -The difference between these ports is the certificate used. If you enable -__Use well-known certificate__, the certificates used on port `8529` is well-known -and automatically accepted by most web browsers. The certificate used on port -`18529` is a self-signed certificate. For securing automated services, the use of -a self-signed certificate is recommended. Read more on the -[Certificates](../security-and-access-control/x-509-certificates.md) page. -{{< /info >}} - -## Password settings - -### How to enable the automatic root user password rotation - -Password rotation refers to changing passwords regularly - a security best -practice to reduce the vulnerability to password-based attacks and exploits -by limiting for how long passwords are valid. The ArangoGraph Insights Platform -can automatically change the `root` user password of an ArangoDB deployment -periodically to improve security. - -1. Navigate to the __Deployment__ for which you want to enable an automatic - password rotation for the root user. -2. In the __Quick start__ section, click the button with the __gear__ icon next to the - __ROOT PASSWORD__. -3. In the __Password Settings__ dialog, turn the automatic password rotation on - and click the __Confirm__ button. - - ![ArangoGraph Deployment Password Rotation](../../../images/arangograph-deployment-password-rotation.png) -4. You can expand the __Root password__ panel to see when the password was - rotated last. The rotation takes place every three months. - -### Auto login to database UI - -ArangoGraph provides the ability to automatically login to your database using -your existing ArangoGraph credentials. This not only provides a seamless -experience, preventing you from having to manage multiple sets of credentials -but also improves the overall security of your database. As your credentials -are shared between ArangoGraph and your database, you can benefit from -end-to-end audit traceability for a given user, as well as integration with -ArangoGraph SSO. - -You can enable this feature in the **Password Settings** dialog. Please note -that it may take a few minutes to get activated. -Once enabled, you no longer have to fill in the `root` user and password of -your ArangoDB deployment. - -{{< info >}} -If you use the auto login feature with AWS -[private endpoints](../deployments/private-endpoints.md), it is recommended -to switch off the `custom DNS` setting. -{{< /info >}} - -This feature can be disabled at any time. You may wish to consider explicitly -disabling this feature in the following situations: -- Your workflow requires you to access the database UI using different accounts - with differing permission sets, as you cannot switch database users when - automatic login is enabled. -- You need to give individuals access to a database's UI without giving them - any access to ArangoGraph. Note, however, that it's possible to only give an - ArangoGraph user database UI access, without other ArangoGraph permissions. - -{{< warning >}} -When the auto login feature is enabled, users cannot edit their permissions on -the ArangoDB database web interface as all permissions are managed by the -ArangoGraph platform. -{{< /warning >}} - -Before getting started, make sure you are signed into ArangoGraph as a user -with one of the following permissions in your project: -- `data.deployment.full-access` -- `data.deployment.read-only-access` - -Organization owners have these permissions enabled by default. -The `deployment-full-access-user` and `deployment-read-only-user` roles which -contain these permissions can also be granted to other members of the -organization. See how to create a -[role binding](../security-and-access-control/_index.md#how-to-view-edit-or-remove-role-bindings-of-a-policy). - -{{< warning >}} -This feature is available on `443` port only. -{{< /warning >}} - -## How to edit a deployment - -You can modify a deployment's configuration, including the ArangoDB version -that is being used, change the memory size, or even switch from -a OneShard deployment to a Sharded one if your data set no longer fits in a -single node. - -{{< tip >}} -To edit an existing deployment, you must have the necessary set of permissions -attached to your role. Read more about [roles and permissions](../security-and-access-control/_index.md#roles). -{{< /tip >}} - -1. In the main navigation, click **Deployments** and select an existing - deployment from the list, or click **Projects**, select a project, and then - select a deployment. -2. In the **Quick start** section, click the **Edit** button. -3. In the **General** section, you can do the following: - - Change the deployment name - - Change the deployment description -4. In the **Sizing** section, you can do the following: - - Change **OneShard** deployments into **Sharded** deployments. To do so, - select **Sharded** in the **Model** dropdown list. You can select the - number of nodes for your deployment. This can also be modified later on. - {{< warning >}} - You cannot switch from **Sharded** back to **OneShard**. - {{< /warning >}} - - Change **Single Server** deployments into **OneShard** or **Sharded** deployments. - {{< warning >}} - You cannot switch from **Sharded** or **OneShard** back to **Single Server**. - {{< /warning >}} - - Scale up or down the node size. - {{< warning >}} - When scaling up or down the size in AWS deployments, the new value gets locked - and cannot be changed again until the cloud provider rate limit is reset. - {{< /warning >}} -5. In the **Advanced** section, you can do the following: - - Upgrade the ArangoDB version that is currently being used. See also - [Upgrades and Versioning](upgrades-and-versioning.md) - - Select a different certificate. - - Add or remove an IP allowlist. - - Select a deployment profile. -6. All changes are reflected in the **Summary** panel. Review the new - configuration and click **Save changes**. - -## How to connect a driver to your deployment - -[ArangoDB drivers](../../develop/drivers/_index.md) allow you to use your ArangoGraph -deployment as a database system for your applications. Drivers act as interfaces -between different programming languages and ArangoDB, which enable you to -connect to and manipulate ArangoDB deployments from within compiled programs -or using scripting languages. - -To get started, open a deployment. -In the **Quick start** section, click on the **Connecting drivers** button and -select your programming language. The code snippets provide examples on how to -connect to your instance. - -{{< tip >}} -Note that ArangoGraph Insights Platform runs deployments in a cluster -configuration. To achieve the best possible availability, your client -application has to handle connection failures by retrying operations if needed. -{{< /tip >}} - -![ArangoGraph Connecting Drivers Example](../../../images/arangograph-connecting-drivers-example.png) - -## How to delete a deployment - -{{< danger >}} -Deleting a deployment deletes all its data and backups. -This operation is **irreversible**. Please proceed with caution. -{{< /danger >}} - -1. In the main navigation, in the __Projects__ section, click the project that - holds the deployment you wish to delete. -2. In the __Deployments__ page, click the deployment you wish to delete. -3. Click the __Delete/Lock__ entry in the navigation. -4. Click the __Delete deployment__ button. -5. In the modal dialog, confirm the deletion by entering `Delete!` into the - designated text field. -6. Confirm the deletion by pressing the __Yes__ button. -7. You will be taken back to the deployments page of the project. - The deployment being deleted will display the __Deleting__ status until it has - been successfully removed. diff --git a/site/content/3.11/arangograph/deployments/private-endpoints.md b/site/content/3.11/arangograph/deployments/private-endpoints.md deleted file mode 100644 index c3400b9711..0000000000 --- a/site/content/3.11/arangograph/deployments/private-endpoints.md +++ /dev/null @@ -1,168 +0,0 @@ ---- -title: Private endpoint deployments in ArangoGraph -menuTitle: Private endpoints -weight: 5 -description: >- - Use the private endpoint feature to isolate your deployments and increase - security ---- -This topic describes how to create a private endpoint deployment and -securely deploy to various cloud providers such as Google Cloud Platform (GCP) -and Amazon Web Services (AWS). Follow the steps outlined below to get started. - -{{< tip >}} -In AWS, private endpoints should be located in the same region. -{{< /tip >}} - -{{< info >}} -For more information about the certificates used for private endpoints, please -refer to the [How to manage certificates](../security-and-access-control/x-509-certificates.md) -section. -{{< /info >}} - -## Google Cloud Platform (GCP) - -Google Cloud Platform (GCP) offers a feature called -[Private Service Connect](https://cloud.google.com/vpc/docs/private-service-connect) -that allows private consumption of services across VPC networks that belong to -different groups, teams, projects, or organizations. You can publish and consume -services using the defined IP addresses which are internal to your VPC network. - -In ArangoGraph, you can -[create a regular deployment](_index.md#how-to-create-a-new-deployment) -and change it to a private endpoint deployment afterwards. - -Such a deployment is not reachable from the internet anymore, other than via -the ArangoGraph dashboard to administrate it. To revert to a public deployment, -please contact support via **Request help** in the help menu. - -To configure a private endpoint for GCP, you need to provide your Google project -names. ArangoGraph then configures a **Private Endpoint Service** that automatically -connect to private endpoints that are created for those projects. - -After the creation of the **Private Endpoint Service**, you should receive a -service attachment that you need during the creation of your private endpoint(s). - -1. Open the deployment you want to change. -2. In the **Quick start** section, click the **Edit** button with an ellipsis (`…`) - icon. -3. Click **Change to private endpoint** in the menu. - ![ArangoGraph Deployment Private Endpoint Menu](../../../images/arangograph-gcp-change.png) -4. In the configuration wizard, click **Next** to enter your configuration details. -5. Enter one or more Google project names. You can also add them later in the summary view. - Click **Next**. - ![ArangoGraph Deployment Private Endpoint Setup 2](../../../images/arangograph-gcp-private-endpoint.png) -6. Configure custom DNS names. This step is optional and disabled by default. - Note that, once enabled, this setting is immutable and cannot be reverted. - Click **Next** to continue. - {{< info >}} - By default, your private endpoint is available to all VPCs that connect to it - at `https://<endpoint_id>-pe.arangodb.cloud` with the - [well-known certificate](../security-and-access-control/x-509-certificates.md#well-known-x509-certificates). - If the custom DNS is enabled, you will be responsible for the DNS of your - private endpoints. - {{< /info >}} - ![ArangoGraph Private Endpoint Custom DNS](../../../images/arangograph-gcp-custom-dns.png) -7. Click **Confirm Settings** to change the deployment. -8. Back in the **Overview** page, scroll down to the **Private Endpoint** section - that is now displayed to see the connection status and to change the - configuration. -9. ArangoGraph configures a **Private Endpoint Service**. As soon as the - **Service Attachment** is ready, you can use it to configure the Private - Service Connect in your VPC. - -{{< tip >}} -When you create a private endpoint in ArangoGraph, both endpoints (the regular -one and the new private one) are available for two hours. During this time period, -you can switch your application to the new private endpoint. After this period, -the old endpoint is not available anymore. -{{< /tip >}} - -## Amazon Web Services (AWS) - -AWS offers a feature called [AWS PrivateLink](https://aws.amazon.com/privatelink) -that enables you to privately connect your Virtual Private Cloud (VPC) to -services, without exposure to the internet. You can control the specific API -endpoints, sites, and services that are reachable from your VPC. - -Amazon VPC allows you to launch AWS resources into a -virtual network that you have defined. It closely resembles a traditional -network that you would normally operate, with the benefits of using the AWS -scalable infrastructure. - -In ArangoGraph, you can -[create a regular deployment](_index.md#how-to-create-a-new-deployment) and change it -to a private endpoint deployment afterwards. - -The ArangoDB private endpoint deployment is not exposed to public internet -anymore, other than via the ArangoGraph dashboard to administrate it. To revert -it to a public deployment, please contact the support team via **Request help** -in the help menu. - -To configure a private endpoint for AWS, you need to provide the AWS principals related -to your VPC. The ArangoGraph Insights Platform configures a **Private Endpoint Service** -that automatically connects to private endpoints that are created in those principals. - -1. Open the deployment you want to change. -2. In the **Quick start** section, click the **Edit** button with an ellipsis (`…`) - icon. -3. Click **Change to private endpoint** in the menu. - ![ArangoGraph Deployment AWS Change to Private Endpoint](../../../images/arangograph-aws-change-to-private-endpoint.png) -4. In the configuration wizard, click **Next** to enter your configuration details. -5. Click **Add Principal** to start configuring the AWS principal(s). - You need to enter a valid account, which is your 12 digit AWS account ID. - Adding usernames or role names is optional. You can also - skip this step and add them later from the summary view. - {{< info >}} - Principals cannot be changed anymore once a connection has been established. - {{< /info >}} - {{< warning >}} - To verify your endpoint service in AWS, you must use the same principal as - configured in ArangoGraph. Otherwise, the service name cannot be verified. - {{< /warning >}} - ![ArangoGraph AWS Private Endpoint Configure Principals](../../../images/arangograph-aws-endpoint-configure-principals.png) -6. Configure custom DNS names. This step is optional and disabled by default, - you can also add or change them later from the summary view. - Click **Next** to continue. - {{< info >}} - By default, your private endpoint is available to all VPCs that connect to it - at `https://<endpoint_id>-pe.arangodb.cloud` with the well-known certificate. - If the custom DNS is enabled, you will be responsible for the DNS of your - private endpoints. - {{< /info >}} - ![ArangoGraph AWS Private Endpoint Alternate DNS](../../../images/arangograph-aws-private-endpoint-dns.png) -7. Confirm that you want to use a private endpoint for your deployment by - clicking **Confirm Settings**. -8. Back in the **Overview** page, scroll down to the **Private Endpoint** section - that is now displayed to see the connection status and change the - configuration, if needed. - ![ArangoGraph AWS Private Endpoint Overview](../../../images/arangograph-aws-private-endpoint-overview.png) - {{< info >}} - Note that - [Availability Zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones) - are independently mapped for each AWS account. The physical location of a - zone may differ from one account to another account. To coordinate - Availability Zones across AWS accounts, you must use the - [Availability Zone ID](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html). - {{< /info >}} - - {{< tip >}} - To learn more or request help from the ArangoGraph support team, click **Help** - in the top right corner of the **Private Endpoint** section. - {{< /tip >}} -9. ArangoGraph configures a **Private Endpoint Service**. As soon as this is available, - you can use it in the AWS portal to create an interface endpoint to connect - to your endpoint service. For more details, see - [How to connect to an endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-endpoint-service.html#share-endpoint-service). - -{{< tip >}} -To establish connectivity and enable traffic flow, make sure you add a route -from the originating machine to the interface endpoint. -{{< /tip >}} - -{{< tip >}} -When you create a private endpoint in ArangoGraph, both endpoints (the regular -one and the new private one) are available for two hours. During this time period, -you can switch your application to the new private endpoint. After this period, -the old endpoint is not available anymore. -{{< /tip >}} diff --git a/site/content/3.11/arangograph/deployments/upgrades-and-versioning.md b/site/content/3.11/arangograph/deployments/upgrades-and-versioning.md deleted file mode 100644 index 211d271c92..0000000000 --- a/site/content/3.11/arangograph/deployments/upgrades-and-versioning.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Upgrades and Versioning in ArangoGraph -menuTitle: Upgrades and Versioning -weight: 10 -description: >- - Select which version of ArangoDB you want to use within your ArangoGraph - deployment and choose when to roll out your upgrades ---- -{{< info >}} -Please note that this policy comes into effect in April 2023. -{{< /info >}} - -## Release Definitions - -The following definitions are used for release types of ArangoDB within ArangoGraph: - -| Release | Introduces | Contains breaking changes | -|----------|-------------|----------------------------| -| **Major** (`X.y.z`) | Major new features and functionalities | Likely large changes | -| **Minor** (`x.Y.z`) | Some new features or improvements | Likely small changes | -| **Patch** (`x.y.Z`) | Essential fixes and improvements | Small changes in exceptional circumstances | - -## Release Channels - -When creating a deployment in ArangoGraph, you can select the minor version -of ArangoDB that your deployment is going to use. This minor version is in the -format `Major.Minor` and indicates the major and minor version of ArangoDB that -is used in this deployment, for example `3.10` or `3.9`. - -To provide secure and reliable service, databases are deployed on the latest -available patch version in the selected version. For example, if `3.10` is -selected and `3.10.3` is the latest version of ArangoDB available for the `3.10` -minor version, then the deployment is initially using ArangoDB `3.10.3`. - -## Upgrades - -### Manual Upgrades - -At any time, you can change the release channel of your deployment to a later -release channel, but not to an earlier one. For example, if you are using `3.10` -then you can change your deployment’s release channel to `3.11`, but you would -not be able to change the release channel to `3.9`. -See [how to edit a deployment](_index.md#how-to-edit-a-deployment). - -Upon changing your release channel, an upgrade process for your deployment is -initiated to upgrade your running database to the latest patch release of your -selected release channel. You can use this mechanism to upgrade your deployments -at a time that suits you, prior to the forced upgrade when your release channel -is no longer available. - -### Automatic Upgrades - -#### Major Versions (`X.y.z`) - -The potential disruption of a major version upgrade requires additional testing -of any applications connecting to your ArangoGraph deployment. As a result, when -a new major version is released on the ArangoGraph platform, an email is sent out -to inform you of this release. - -If the ArangoDB version that you are currently using is no longer available on the -ArangoGraph platform, you are forced to upgrade to the next available version. -Prior to the removal of the version, an email is sent out to inform you of this -forced upgrade. - -#### Minor Versions (`x.Y.z`) - -Although minor upgrades are not expected to cause significant compatibility -changes like major versions, they may still require additional planning and -validation. - -This is why minor upgrades are treated in the same manner as major upgrades -within ArangoGraph. When a new minor version is released on the ArangoGraph -platform, an email is sent out to inform you of this release. - -If the ArangoDB version that you are currently using is no longer available on the -ArangoGraph platform, you are forced to upgrade to the next available version. -Prior to the removal of the version, an email is sent out to inform you of this -forced upgrade. - -#### Patch Versions (`x.y.Z`) - -Upgrades between patch versions are transparent, with no significant disruption -to your applications. As such, you can expect to be automatically upgraded to -the latest patch version of your selected minor version shortly after it becomes -available in ArangoGraph. - -ArangoGraph aims to give approximately one week’s notice prior to upgrading your -deployments to the latest patch release. Although in exceptional circumstances -(such as a critical security issue) the upgrade may be triggered with less than -one week's notice. -The upgrade is carried out automatically. However, if you need the upgrade to be -deferred temporarily, contact the ArangoGraph Support team to request that. diff --git a/site/content/3.11/arangograph/monitoring-and-metrics.md b/site/content/3.11/arangograph/monitoring-and-metrics.md deleted file mode 100644 index 2b9ede4b4a..0000000000 --- a/site/content/3.11/arangograph/monitoring-and-metrics.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Monitoring & Metrics in ArangoGraph -menuTitle: Monitoring & Metrics -weight: 40 -description: >- - ArangoGraph provides various built-in tools and integrations to help you - monitor your deployment ---- -The ArangoGraph Insights Platform provides integrated charts, metrics, and logs -to help you monitor your deployment. This allows you to track your deployment's -performance, resource utilization, and its overall status. - -The key features include: -- **Built-in monitoring**: Get immediate access to monitoring capabilities for - your deployments without any additional setup. -- **Chart-based metrics representation**: Visualize the usage of the DB-Servers - and Coordinators over a selected timeframe. -- **Integration with Prometheus and Grafana**: Connect your metrics to Prometheus - and Grafana for in-depth visualization and analysis. - -To get started, select an existing deployment from within a project and -click **Monitoring** in the navigation. - -![ArangoGraph Monitoring tab](../../images/arangograph-monitoring-tab.png) - -## Built-in monitoring and metrics - -### In the **Servers** section - -The **Servers** section offers an overview of the DB-Servers, Coordinators, -and Agents used in your deployment. It provides essential details such as each -server's ID and type, the running ArangoDB version, as well as their memory, -CPU, and disk usage. - -In case you need to perform a restart on a server, you can do so by using the -**Gracefully restart this server** action button. This shuts down all services -normally, allowing ongoing operations to finish gracefully before the restart -occurs. - -Additionally, you can access detailed logs via the **Logs** button. This allows -you to apply filters to obtain logs from all server types or select specific ones -(i.e. only Coordinators or only DB-Servers) within a timeframe. To download the -logs, click the **Save** button. - -![ArangoGraph Monitoring Servers](../../images/arangograph-monitoring-servers.png) - -### In the **Metrics** section - -The **Metrics** section displays a chart-based representation depicting the -resource utilization of DB-Servers and Coordinators within a specified timeframe. - -You can select one or more DB-Servers and choose **CPU**, **Memory**, or **Disk** -to visualize their respective usage. The search box enables you to easily find -a server by its ID, particularly useful when having a large number of servers -or when needing to quickly find a particular one among many. - -Similarly, you can repeat the process for Coordinators to see the **CPU** and -**Memory** usage. - -![Arangograph Monitoring Metrics Chart](../../images/arangograph-monitoring-metrics-chart.png) - -## Connect with Prometheus and Grafana - -The ArangoGraph Insights Platform provides metrics for each deployment in a -[Prometheus](https://prometheus.io/)-compatible format. -You can use these metrics to gather detailed insights into the current -and previous states of your deployment. -Once metrics are collected by Prometheus, you can inspect them using tools -such as [Grafana](https://grafana.com/oss/grafana/). - -![ArangoGraph Connect Metrics Section](../../images/arangograph-connect-metrics-section.png) - -### Metrics tokens - -The **Metrics tokens** section allows you to create a new metrics token, -which is required for connecting to Prometheus. - -1. To create a metrics token, click **New metrics token**. -2. For **Name**, enter a name for the metrics token. -3. Optionally, you can also enter a **Short description**. -4. Select the **Lifetime** of the metrics token. -5. Click **Create**. - -![ArangoGraph Metrics Tokens](../../images/arangograph-metrics-token.png) - -### How to connect Prometheus - -1. In the **Metrics** section, click **Connect Prometheus**. -2. Create the `prometheus.yml` file with the following content: - ```yaml - global: - scrape_interval: 60s - scrape_configs: - - job_name: 'deployment' - bearer_token: '<fill-your-metrics-token-here>' - scheme: 'https' - static_configs: - - targets: ['6775e7d48152.arangodb.cloud:8829'] - tls_config: - insecure_skip_verify: true - ``` -3. Start Prometheus with the following command: - ```sh - docker run -d \ - -p 9090:9090 -p 3000:3000 --name prometheus \ - -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml:ro \ - prom/prometheus - ``` - {{< info >}} - This command also opens a port 3000 for Grafana. In a production environment, - this is not needed and not recommended to have it open. - {{< /info >}} - -### How to connect Grafana - -1. Start Grafana with the following command: - ```sh - docker run -d \ - --network container:prometheus \ - grafana/grafana - ``` -2. Go to `localhost:3000` and log in with the following credentials: - - For username, enter *admin*. - - For password, enter *admin*. - - {{< tip >}} - After the initial login, make sure to change your password. - {{< /tip >}} - -3. To add a data source, click **Add your first data source** and then do the following: - - Select **Prometheus**. - - For **HTTP URL**, enter `http://localhost:9090`. - - Click **Save & Test**. -4. To add a dashboard, open the menu and click **Create** and then **Import**. -5. Download the [Grafana dashboard for ArangoGraph](https://github.com/arangodb-managed/grafana-dashboards). -6. Copy the contents of the `main.json` file into the **Import via panel json** field in Grafana. -7. Click **Load**. diff --git a/site/content/3.11/arangograph/my-account.md b/site/content/3.11/arangograph/my-account.md deleted file mode 100644 index e79415060a..0000000000 --- a/site/content/3.11/arangograph/my-account.md +++ /dev/null @@ -1,171 +0,0 @@ ---- -title: My Account in ArangoGraph -menuTitle: My Account -weight: 35 -description: >- - How to manage your user account, your organizations, and your API keys in ArangoGraph ---- -You can access information related to your account via the __User Toolbar__. -The toolbar is in the top right corner in the ArangoGraph dashboard and -accessible from every view. There are two elements: - -- __Question mark icon__: Help -- __User icon__: My Account - -![ArangoGraph My Account](../../images/arangograph-my-account.png) - -## Overview - -### How to view my account - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __Overview__ in the __My account__ section. -3. The __Overview__ displays your name, email address, company and when the - account was created. - -### How to edit the profile of my account - -1. Hover over or click the user icon in the __User Toolbar__ in the top right corner. -2. Click __Overview__ in the __My account__ section. -3. Click the __Edit__ button. -4. Change your personal information and __Save__. - -![ArangoGraph My Account Info](../../images/arangograph-my-account-info.png) - -## Organizations - -### How to view my organizations - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My organizations__ in the __My account__ section. -3. Your organizations are listed in a table. - Click the organization name or the eye icon in the __Actions__ column to - jump to the organization overview. - -### How to create a new organization - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My organizations__ in the __My account__ section. -3. Click the __New organization__ button. -4. Enter a name and and a description for the new organization and click the - __Create__ button. - -{{< info >}} -The free to try tier is limited to a single organization. -{{< /info >}} - -### How to delete an organization - -{{< danger >}} -Removing an organization implies the deletion of projects and deployments. -This operation cannot be undone and **all deployment data will be lost**. -Please proceed with caution. -{{< /danger >}} - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My organizations__ in the __My account__ section. -3. Click the __recycle bin__ icon in the __Actions__ column. -4. Enter `Delete!` to confirm and click __Yes__. - -{{< info >}} -If you are no longer a member of any organization, then a new organization is -created for you when you log in again. -{{< /info >}} - -![ArangoGraph New Organization](../../images/arangograph-new-org.png) - -## Invites - -Invitations are requests to join organizations. You can accept or reject -pending invites. - -### How to create invites - -See [Users and Groups: How to add a new member to the organization](organizations/users-and-groups.md#how-to-add-a-new-member-to-the-organization) - -### How to respond to my invites - -#### I am not a member of an organization yet - -1. Once invited, you will receive an email asking to join your - ArangoGraph organization. - ![ArangoGraph Organization Invite Email](../../images/arangograph-org-invite-email.png) -2. Click the __View my organization invite__ link in the email. You will be - asked to log in or to create a new account. -3. To sign up for a new account, click the __Start Free__ button or the - __Sign up__ link in the header navigation. - ![ArangoGraph Homepage](../../images/arangograph-homepage.png) -4. After successfully signing up, you will receive a verification email. -5. Click the __Verify my email address__ link in the email. It takes you back - to the ArangoGraph Insights Platform site. - ![ArangoGraph Organization Invite Email Verify](../../images/arangograph-org-invite-email-verify.png) -6. After successfully logging in, you can accept or reject the invite to - join your organization. - ![ArangoGraph Organization Invite](../../images/arangograph-org-invite.png) -7. After accepting the invite, you become a member of your organization and - will be granted access to the organization and its related projects and - deployments. - -#### I am already a member of an organization - -1. Once invited, you will receive an email asking to join your - ArangoGraph organization, as well as a notification in the ArangoGraph dashboard. -2. Click the __View my organization invites__ link in the email, or hover over the - user icon in the top right corner of the dashboard and click - __My organization invites__. - ![ArangoGraph Organization Invite Notification](../../images/arangograph-org-invite-notification.png) -3. On the __Invites__ tab of the __My account__ view, you can accept or reject - pending invitations, as well as see past invitations that you accepted or - rejected. Click the button with a checkmark icon to join the organization. - ![ArangoGraph Organization Invites Accept](../../images/arangograph-org-invites-accept.png) - -## API Keys - -API keys are authentication tokens intended to be used for scripting. -They allow a script to authenticate on behalf of a user. - -An API key consists of a key and a secret. You need both to complete -authentication. - -### How to view my API keys - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My API keys__ in the __My account__ section. -3. Information about the API keys are listed in the __My API keys__ section. - -![ArangoGraph My API keys](../../images/arangograph-my-api-keys.png) - -### How to create a new API key - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My API keys__ in the __My account__ section. -3. Click the __New API key__ button. -4. Optionally limit the API key to a specific organization. -5. Optionally specify after how many hours the API key should expire into the - __Time to live__ field. -6. Optionally limit the API key to read-only APIs -7. Click the __Create__ button. -8. Copy the API key ID and Secret, then click the __Close__ button. - -{{< security >}} -The secret is only shown once at creation time. -You have to store it in a safe place. -{{< /security >}} - -![ArangoGraph New API key](../../images/arangograph-new-api-key.png) - -![ArangoGraph API key Secret](../../images/arangograph-api-key-secret.png) - -### How to revoke or delete an API key - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My API keys__ in the __My account__ section. -3. Click an icon in the __Actions__ column: - - __Counter-clockwise arrow__ icon: Revoke API key - - __Recycle bin__ icon: Delete API key -4. Click the __Yes__ button to confirm. - -{{% comment %}} -TODO: Copy to clipboard button -Access token that should expire after 1 hour unless renewed, might get removed as it's confusing. -{{% /comment %}} diff --git a/site/content/3.11/arangograph/notebooks.md b/site/content/3.11/arangograph/notebooks.md deleted file mode 100644 index b581dc44d8..0000000000 --- a/site/content/3.11/arangograph/notebooks.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -title: ArangoGraph Notebooks -menuTitle: Notebooks -weight: 25 -description: >- - How to create and manage colocated Jupyter Notebooks within ArangoGraph ---- -{{< info >}} -This documentation describes the beta version of the Notebooks feature and is -subject to change. The beta version is free for all. -{{< /info >}} - -The ArangoGraph Notebook is a JupyterLab notebook embedded in the ArangoGraph -Insights Platform. The notebook integrates seamlessly with platform, -automatically connecting to ArangoGraph services, including ArangoDB and the -ArangoML platform services. This makes it much easier to leverage these -resources without having to download any data locally or to remember user IDs, -passwords, and endpoint URLs. - -![ArangoGraph Notebooks Architecture](../../images/arangograph-notebooks-architecture.png) - -The ArangoGraph Notebook has built-in [ArangoGraph Magic Commands](#arangograph-magic-commands) -that answer questions like: -- What ArangoDB database am I connected to at the moment? -- What data does the ArangoDB instance contain? -- How can I access certain documents? -- How do I create a graph? - -The ArangoGraph Notebook also pre-installs [python-arango](https://docs.python-arango.com/en/main/) -and ArangoML connectors -to [PyG](https://github.com/arangoml/pyg-adapter), -[DGL](https://github.com/arangoml/dgl-adapter), -[CuGraph](https://github.com/arangoml/cugraph-adapter), as well as the -[FastGraphML](https://github.com/arangoml/fastgraphml) -library, so you can get started -right away accessing data in ArangoDB to develop GraphML models using your -favorite GraphML libraries with GPUs. - -## How to create a new notebook - -1. Open the deployment in which you want to create the notebook. -2. Go to the **Data science** section and click the **Create Notebook** button. -3. Enter a name and optionally a description for your new notebook. -4. Select a configuration model from the dropdown menu. Click **Save**. -5. The notebook's phase is set to **Initializing**. Once the phase changes to - **Running**, the notebook's endpoint is accessible. -6. Click the **Open notebook** button to access your notebook. -7. To access your notebook, you need to be signed into ArangoGraph as a user with - the `notebook.notebook.execute` permission in your project. Organization - owners have this permission enabled by default. The `notebook-executor` role - which contains the permission can also be granted to other members of the - organization via roles. See how to create a - [role binding](security-and-access-control/_index.md#how-to-view-edit-or-remove-role-bindings-of-a-policy). - -{{< info >}} -Depending on the tier your organization belongs to, different limitations apply: -- On-Demand and Committed: you can create up to three notebooks per deployment. -- Free-to-try: you can only create one notebook per deployment. -{{< /info >}} - -![Notebooks](../../images/arangograph-notebooks.png) - -{{< info >}} -Notebooks in beta version have a fixed configuration of 10 GB of disk size. -{{< /info >}} - -## How to edit a notebook - -1. Select the notebook that you want to change from the **Notebooks** tab. -2. Click **Edit notebook**. You can modify its name and description. -3. To pause a notebook, click the **Pause notebook** button. You can resume it -at anytime. The notebook's phase is updated accordingly. - -## How to delete a notebook - -1. Select the notebook that you want to remove from the **Notebooks** tab. -2. Click the **Delete notebook** button. - -## Getting Started notebook - -To get a better understanding of how to interact with your ArangoDB database -cluster, use the ArangoGraph Getting Started template. -The ArangoGraph Notebook automatically connects to the ArangoDB service -endpoint, so you can immediately start interacting with it. - -1. Log in to the notebook you have created by using your deployment's root password. -2. Select the `GettingStarted.ipynb` template from the file browser. - -## ArangoGraph Magic Commands - -A list of the available magic commands you can interact with. -Single line commands have `%` prefix and multi-line commands have `%%` prefix. - -**Database Commands** - -- `%listDatabases` - lists the databases on the database server. -- `%whichDatabase` - returns the database name you are connected to. -- `%createDatabase databaseName` - creates a database. -- `%selectDatabase databaseName` - selects a database as the current database. -- `%useDatabase databasename` - uses a database as the current database; - alias for `%selectDatabase`. -- `%getDatabase databaseName` - gets a database. Used for assigning a database, - e.g. `studentDB` = `getDatabase student_database`. -- `%deleteDatabase databaseName` - deletes the database. - -**Graph Commands** - -- `%listGraphs` - lists the graphs defined in the currently selected database. -- `%whichGraph` - returns the graph name that is currently selected. -- `%createGraph graphName` - creates a named graph. -- `%selectGraph graphName` - selects the graph as the current graph. -- `%useGraph graphName` - uses the graph as the current graph; - alias for `%selectGraph`. -- `%getGraph graphName` - gets the graph for variable assignment, - e.g. `studentGraph` = `%getGraph student-graph`. -- `%deleteGraph graphName` - deletes a graph. - -**Collection Commands** - -- `%listCollections` - lists the collections on the selected current database. -- `%whichCollection` - returns the collection name that is currently selected. -- `%createCollection collectionName` - creates a collection. -- `%selectCollection collectionName` - selects a collection as the current collection. -- `%useCollection collectionName` - uses the collection as the current collection; - alias for `%selectCollection`. -- `%getCollection collectionName` - gets a collection for variable assignment, - e.g. `student` = `% getCollection Student`. -- `%createEdgeCollection` - creates an edge collection. -- `%createVertexCollection` - creates a vertex collection. -- `%createEdgeDefinition` - creates an edge definition. -- `%deleteCollection collectionName` - deletes the collection. -- `%truncateCollection collectionName` - truncates the collection. -- `%sampleCollection collectionName` - returns a random document from the collection. - If no collection is specified, then it uses the selected collection. - -**Document Commands** - -- `%insertDocument jsonDocument` - inserts the document into the currently selected collection. -- `%replaceDocument jsonDocument` - replaces the document in the currently selected collection. -- `%updateDocument jsonDocument` - updates the document in the currently selected collection. -- `%deleteDocument jsonDocument` - deletes the document from the currently selected collection. -- `%%importBulk jsonDocumentArray` - imports an array of documents into the currently selected collection. - -**AQL Commands** - -- `%aql single-line_aql_query` - executes a single line AQL query. -- `%%aqlm multi-line_aql_query` - executes a multi-line AQL query. - -**Variables** - -- `_endpoint` - the endpoint (URL) of the ArangoDB Server. -- `_system` - the system database used for creating, listing, and deleting databases. -- `_db` - the selected (current) database. To select a different database, use `%selectDatabase`. -- `_graph` - the selected (current) graph. To select a different graph, use `%selectGraph`. -- `_collection` - the selected (current) collection. To select a different collection, use `%selectCollection`. -- `_user` - the current user. - -You can use these variables directly, for example, `_db.collections()` to list -collections or `_system.databases` to list databases. - -You can also create your own variable assignments, such as: - -- `schoolDB` = `%getDatabase schoolDB` -- `school_graph` = `%getGraph school_graph` -- `student` = `%getCollection Student` - -**Reset environment** - -In the event that any of the above variables have been unintentionally changed, -you can revert all of them to the default state with `reset_environment()`. diff --git a/site/content/3.11/arangograph/oasisctl/_index.md b/site/content/3.11/arangograph/oasisctl/_index.md deleted file mode 100644 index 9d22a68e31..0000000000 --- a/site/content/3.11/arangograph/oasisctl/_index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Oasisctl -menuTitle: Oasisctl -weight: 65 -description: >- - Command-line client tool for managing the ArangoGraph Insights Platform ---- -Oasisctl is a command-line tool for using the [ArangoGraph API](../api/_index.md). -This tool makes integration of ArangoGraph in all kinds of (bash) scripts easy. -It is also a good example on how to use the API. - -See [Getting started with Oasisctl](../api/get-started.md) for a -tutorial. - -Oasisctl is available for Linux, macOS and Windows. -Download and source code: - -[github.com/arangodb-managed/oasisctl](https://github.com/arangodb-managed/oasisctl/) diff --git a/site/content/3.11/arangograph/oasisctl/accept/_index.md b/site/content/3.11/arangograph/oasisctl/accept/_index.md deleted file mode 100644 index e9c0e05a01..0000000000 --- a/site/content/3.11/arangograph/oasisctl/accept/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Accept -menuTitle: Accept -weight: 2 ---- -## oasisctl accept - -Accept invites - -``` -oasisctl accept [flags] -``` - -## Options -``` - -h, --help help for accept -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl accept organization](accept-organization.md) - Accept organization related invites - diff --git a/site/content/3.11/arangograph/oasisctl/accept/accept-organization-invite.md b/site/content/3.11/arangograph/oasisctl/accept/accept-organization-invite.md deleted file mode 100644 index 3f52fbb67b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/accept/accept-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Accept Organization Invite -menuTitle: Accept Organization Invite -weight: 2 ---- -## oasisctl accept organization invite - -Accept an organization invite the authenticated user has access to - -``` -oasisctl accept organization invite [flags] -``` - -## Options -``` - -h, --help help for invite - -i, --invite-id string Identifier of the organization invite - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl accept organization](accept-organization.md) - Accept organization related invites - diff --git a/site/content/3.11/arangograph/oasisctl/accept/accept-organization.md b/site/content/3.11/arangograph/oasisctl/accept/accept-organization.md deleted file mode 100644 index f4d5310a16..0000000000 --- a/site/content/3.11/arangograph/oasisctl/accept/accept-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Accept Organization -menuTitle: Accept Organization -weight: 1 ---- -## oasisctl accept organization - -Accept organization related invites - -``` -oasisctl accept organization [flags] -``` - -## Options -``` - -h, --help help for organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl accept](_index.md) - Accept invites -* [oasisctl accept organization invite](accept-organization-invite.md) - Accept an organization invite the authenticated user has access to - diff --git a/site/content/3.11/arangograph/oasisctl/add/_index.md b/site/content/3.11/arangograph/oasisctl/add/_index.md deleted file mode 100644 index c44318f848..0000000000 --- a/site/content/3.11/arangograph/oasisctl/add/_index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Add -menuTitle: Add -weight: 3 ---- -## oasisctl add - -Add resources - -``` -oasisctl add [flags] -``` - -## Options -``` - -h, --help help for add -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl add auditlog](add-auditlog.md) - Add auditlog resources -* [oasisctl add group](add-group.md) - Add group resources - diff --git a/site/content/3.11/arangograph/oasisctl/add/add-auditlog-destination.md b/site/content/3.11/arangograph/oasisctl/add/add-auditlog-destination.md deleted file mode 100644 index 378e456833..0000000000 --- a/site/content/3.11/arangograph/oasisctl/add/add-auditlog-destination.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Oasisctl Add Audit Log Destination -menuTitle: Add Audit Log Destination -weight: 2 ---- -## oasisctl add auditlog destination - -Add a destination to an auditlog. - -``` -oasisctl add auditlog destination [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog - --destination-excluded-topics strings Do not send audit events with these topics to this destination. - --destination-https-client-certificate-pem string PEM encoded public key of the client certificate. - --destination-https-client-key-pem string PEM encoded private key of the client certificate. - --destination-https-headers strings A key=value formatted list of headers for the request. Repeating headers are allowed. - --destination-https-trusted-server-ca-pem string PEM encoded public key of the CA used to sign the server TLS certificate. If empty, a well known CA is expected. - --destination-https-url string URL of the server to POST to. Scheme must be HTTPS. - --destination-type string Type of destination. Possible values are: "cloud", "https-post" - -h, --help help for destination - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl add auditlog](add-auditlog.md) - Add auditlog resources - diff --git a/site/content/3.11/arangograph/oasisctl/add/add-auditlog.md b/site/content/3.11/arangograph/oasisctl/add/add-auditlog.md deleted file mode 100644 index dca21fda97..0000000000 --- a/site/content/3.11/arangograph/oasisctl/add/add-auditlog.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Add Audit Log -menuTitle: Add Audit Log -weight: 1 ---- -## oasisctl add auditlog - -Add auditlog resources - -``` -oasisctl add auditlog [flags] -``` - -## Options -``` - -h, --help help for auditlog -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl add](_index.md) - Add resources -* [oasisctl add auditlog destination](add-auditlog-destination.md) - Add a destination to an auditlog. - diff --git a/site/content/3.11/arangograph/oasisctl/add/add-group-members.md b/site/content/3.11/arangograph/oasisctl/add/add-group-members.md deleted file mode 100644 index db2677d276..0000000000 --- a/site/content/3.11/arangograph/oasisctl/add/add-group-members.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Add Group Members -menuTitle: Add Group Members -weight: 4 ---- -## oasisctl add group members - -Add members to group - -``` -oasisctl add group members [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group to add members to - -h, --help help for members - -o, --organization-id string Identifier of the organization - -u, --user-emails strings A comma separated list of user email addresses -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl add group](add-group.md) - Add group resources - diff --git a/site/content/3.11/arangograph/oasisctl/add/add-group.md b/site/content/3.11/arangograph/oasisctl/add/add-group.md deleted file mode 100644 index a51b0b7102..0000000000 --- a/site/content/3.11/arangograph/oasisctl/add/add-group.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Add Group -menuTitle: Add Group -weight: 3 ---- -## oasisctl add group - -Add group resources - -``` -oasisctl add group [flags] -``` - -## Options -``` - -h, --help help for group -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl add](_index.md) - Add resources -* [oasisctl add group members](add-group-members.md) - Add members to group - diff --git a/site/content/3.11/arangograph/oasisctl/auditlog/_index.md b/site/content/3.11/arangograph/oasisctl/auditlog/_index.md deleted file mode 100644 index fd71b3b653..0000000000 --- a/site/content/3.11/arangograph/oasisctl/auditlog/_index.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Audit Log -menuTitle: Audit Log -weight: 4 ---- -## oasisctl auditlog - -AuditLog resources - -``` -oasisctl auditlog [flags] -``` - -## Options -``` - -h, --help help for auditlog -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl auditlog attach](auditlog-attach.md) - Attach a project to an audit log -* [oasisctl auditlog detach](auditlog-detach.md) - Detach a project from an auditlog -* [oasisctl auditlog get](auditlog-get.md) - Audit log get resources - diff --git a/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-attach.md b/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-attach.md deleted file mode 100644 index 7ffcd50360..0000000000 --- a/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-attach.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Audit Log Attach -menuTitle: Audit Log Attach -weight: 1 ---- -## oasisctl auditlog attach - -Attach a project to an audit log - -``` -oasisctl auditlog attach [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog to attach to. - -h, --help help for attach - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog](_index.md) - AuditLog resources - diff --git a/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-detach.md b/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-detach.md deleted file mode 100644 index 4043614c32..0000000000 --- a/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-detach.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Audit Log Detach -menuTitle: Audit Log Detach -weight: 2 ---- -## oasisctl auditlog detach - -Detach a project from an auditlog - -``` -oasisctl auditlog detach [flags] -``` - -## Options -``` - -h, --help help for detach - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog](_index.md) - AuditLog resources - diff --git a/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md b/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md deleted file mode 100644 index b4c2a69666..0000000000 --- a/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Audit Log Get Attached Project -menuTitle: Audit Log Get Attached Project -weight: 5 ---- -## oasisctl auditlog get attached project - -Get an attached log to a project - -``` -oasisctl auditlog get attached project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog get attached](auditlog-get-attached.md) - Audit get attached resources - diff --git a/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-get-attached.md b/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-get-attached.md deleted file mode 100644 index 004400da64..0000000000 --- a/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-get-attached.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Audit Log Get Attached -menuTitle: Audit Log Get Attached -weight: 4 ---- -## oasisctl auditlog get attached - -Audit get attached resources - -``` -oasisctl auditlog get attached [flags] -``` - -## Options -``` - -h, --help help for attached -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog get](auditlog-get.md) - Audit log get resources -* [oasisctl auditlog get attached project](auditlog-get-attached-project.md) - Get an attached log to a project - diff --git a/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-get.md b/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-get.md deleted file mode 100644 index d3b170c666..0000000000 --- a/site/content/3.11/arangograph/oasisctl/auditlog/auditlog-get.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Audit Log Get -menuTitle: Audit Log Get -weight: 3 ---- -## oasisctl auditlog get - -Audit log get resources - -``` -oasisctl auditlog get [flags] -``` - -## Options -``` - -h, --help help for get -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog](_index.md) - AuditLog resources -* [oasisctl auditlog get attached](auditlog-get-attached.md) - Audit get attached resources - diff --git a/site/content/3.11/arangograph/oasisctl/backup/_index.md b/site/content/3.11/arangograph/oasisctl/backup/_index.md deleted file mode 100644 index 2a19e74e37..0000000000 --- a/site/content/3.11/arangograph/oasisctl/backup/_index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Backup -menuTitle: Backup -weight: 5 ---- -## oasisctl backup - -Backup commands - -``` -oasisctl backup [flags] -``` - -## Options -``` - -h, --help help for backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl backup copy](backup-copy.md) - Copy a backup from source backup to given region -* [oasisctl backup download](backup-download.md) - Download a backup - diff --git a/site/content/3.11/arangograph/oasisctl/backup/backup-copy.md b/site/content/3.11/arangograph/oasisctl/backup/backup-copy.md deleted file mode 100644 index b492b5d92b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/backup/backup-copy.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Backup Copy -menuTitle: Backup Copy -weight: 1 ---- -## oasisctl backup copy - -Copy a backup from source backup to given region - -``` -oasisctl backup copy [flags] -``` - -## Options -``` - -h, --help help for copy - --region-id string Identifier of the region where the new backup is to be created - --source-backup-id string Identifier of the source backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl backup](_index.md) - Backup commands - diff --git a/site/content/3.11/arangograph/oasisctl/backup/backup-download.md b/site/content/3.11/arangograph/oasisctl/backup/backup-download.md deleted file mode 100644 index b458b57b48..0000000000 --- a/site/content/3.11/arangograph/oasisctl/backup/backup-download.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Backup Download -menuTitle: Backup Download -weight: 2 ---- -## oasisctl backup download - -Download a backup - -## Synopsis -Download a backup from the cloud storage to the local deployment disks, so it can be restored. - -``` -oasisctl backup download [flags] -``` - -## Options -``` - -h, --help help for download - -i, --id string Identifier of the backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl backup](_index.md) - Backup commands - diff --git a/site/content/3.11/arangograph/oasisctl/clone/_index.md b/site/content/3.11/arangograph/oasisctl/clone/_index.md deleted file mode 100644 index 7edaf4178e..0000000000 --- a/site/content/3.11/arangograph/oasisctl/clone/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Clone -menuTitle: Clone -weight: 6 ---- -## oasisctl clone - -Clone resources - -``` -oasisctl clone [flags] -``` - -## Options -``` - -h, --help help for clone -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl clone deployment](clone-deployment.md) - Clone deployment resources - diff --git a/site/content/3.11/arangograph/oasisctl/clone/clone-deployment-backup.md b/site/content/3.11/arangograph/oasisctl/clone/clone-deployment-backup.md deleted file mode 100644 index 5f98d22b91..0000000000 --- a/site/content/3.11/arangograph/oasisctl/clone/clone-deployment-backup.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Clone Deployment Backup -menuTitle: Clone Deployment Backup -weight: 2 ---- -## oasisctl clone deployment backup - -Clone a deployment from a backup. - -``` -oasisctl clone deployment backup [flags] -``` - -## Options -``` - --accept Accept the current terms and conditions. - -b, --backup-id string Clone a deployment from a backup using the backup's ID. - -h, --help help for backup - -o, --organization-id string Identifier of the organization to create the clone in - -p, --project-id string An optional identifier of the project to create the clone in - -r, --region-id string An optionally defined region in which the new deployment should be created in. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl clone deployment](clone-deployment.md) - Clone deployment resources - diff --git a/site/content/3.11/arangograph/oasisctl/clone/clone-deployment.md b/site/content/3.11/arangograph/oasisctl/clone/clone-deployment.md deleted file mode 100644 index 0b76d1fec8..0000000000 --- a/site/content/3.11/arangograph/oasisctl/clone/clone-deployment.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Clone Deployment -menuTitle: Clone Deployment -weight: 1 ---- -## oasisctl clone deployment - -Clone deployment resources - -``` -oasisctl clone deployment [flags] -``` - -## Options -``` - -h, --help help for deployment -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl clone](_index.md) - Clone resources -* [oasisctl clone deployment backup](clone-deployment-backup.md) - Clone a deployment from a backup. - diff --git a/site/content/3.11/arangograph/oasisctl/completion.md b/site/content/3.11/arangograph/oasisctl/completion.md deleted file mode 100644 index 9cd58cd4f6..0000000000 --- a/site/content/3.11/arangograph/oasisctl/completion.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Oasisctl Completion -menuTitle: Completion -weight: 7 ---- -## oasisctl completion - -Generates bash completion scripts - -## Synopsis -To load completion run - - . <(oasisctl completion [bash|fish|powershell|zsh]) - -To configure your bash shell to load completions for each session add to your bashrc - - # ~/.bashrc or ~/.profile - . <(oasisctl completion bash) - - -``` -oasisctl completion [flags] -``` - -## Options -``` - -h, --help help for completion -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.11/arangograph/oasisctl/create/_index.md b/site/content/3.11/arangograph/oasisctl/create/_index.md deleted file mode 100644 index 87ef865918..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/_index.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Oasisctl Create -menuTitle: Create -weight: 8 ---- -## oasisctl create - -Create resources - -``` -oasisctl create [flags] -``` - -## Options -``` - -h, --help help for create -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl create apikey](create-apikey.md) - Create a new API key -* [oasisctl create auditlog](create-auditlog.md) - Create an auditlog -* [oasisctl create backup](create-backup.md) - Create backup ... -* [oasisctl create cacertificate](create-cacertificate.md) - Create a new CA certificate -* [oasisctl create deployment](create-deployment.md) - Create a new deployment -* [oasisctl create example](create-example.md) - Create example ... -* [oasisctl create group](create-group.md) - Create a new group -* [oasisctl create ipallowlist](create-ipallowlist.md) - Create a new IP allowlist -* [oasisctl create metrics](create-metrics.md) - Create metrics resources -* [oasisctl create notebook](create-notebook.md) - Create a new notebook -* [oasisctl create organization](create-organization.md) - Create a new organization -* [oasisctl create private](create-private.md) - Create private resources -* [oasisctl create project](create-project.md) - Create a new project -* [oasisctl create role](create-role.md) - Create a new role - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-apikey.md b/site/content/3.11/arangograph/oasisctl/create/create-apikey.md deleted file mode 100644 index 1177d5cc67..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-apikey.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Create API Key -menuTitle: Create API Key -weight: 1 ---- -## oasisctl create apikey - -Create a new API key - -``` -oasisctl create apikey [flags] -``` - -## Options -``` - -h, --help help for apikey - -o, --organization-id string If set, the newly created API key will grant access to this organization only - --readonly If set, the newly created API key will grant readonly access only -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-auditlog.md b/site/content/3.11/arangograph/oasisctl/create/create-auditlog.md deleted file mode 100644 index 5863da66e8..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-auditlog.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Create Audit Log -menuTitle: Create Audit Log -weight: 2 ---- -## oasisctl create auditlog - -Create an auditlog - -``` -oasisctl create auditlog [flags] -``` - -## Options -``` - --default If set, this AuditLog is the default for the organization. - --description string Description of the audit log. - -h, --help help for auditlog - --name string Name of the audit log. - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-backup-policy.md b/site/content/3.11/arangograph/oasisctl/create/create-backup-policy.md deleted file mode 100644 index 99f899b951..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-backup-policy.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Oasisctl Create Backup Policy -menuTitle: Create Backup Policy -weight: 4 ---- -## oasisctl create backup policy - -Create a new backup policy - -``` -oasisctl create backup policy [flags] -``` - -## Options -``` - --additional-region-ids strings Add backup to the specified addition regions - --day-of-the-month int32 Run the backup on the specified day of the month (1-31) (default 1) - --deployment-id string ID of the deployment - --description string Description of the backup policy - --email-notification string Email notification setting (Never|FailureOnly|Always) - --every-interval-hours int32 Schedule should run with an interval of the specified hours (1-23) - --friday If set, a backup will be created on Fridays. - -h, --help help for policy - --hours int32 Hours part of the time of day (0-23) - --minutes int32 Minutes part of the time of day (0-59) - --minutes-offset int32 Schedule should run with specific minutes offset (0-59) - --monday If set, a backup will be created on Mondays - --name string Name of the deployment - --paused The policy is paused - --retention-period int Backups created by this policy will be automatically deleted after the specified retention period. A value of 0 means that backup will never be deleted. - --saturday If set, a backup will be created on Saturdays - --schedule-type string Schedule of the policy (Hourly|Daily|Monthly) - --sunday If set, a backup will be created on Sundays - --thursday If set, a backup will be created on Thursdays - --time-zone string The time-zone this time of day applies to (empty means UTC). Names MUST be exactly as defined in RFC-822. (default "UTC") - --tuesday If set, a backup will be created on Tuesdays - --upload The backup should be uploaded - --wednesday If set, a backup will be created on Wednesdays -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create backup](create-backup.md) - Create backup ... - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-backup.md b/site/content/3.11/arangograph/oasisctl/create/create-backup.md deleted file mode 100644 index 8ca544206c..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-backup.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Create Backup -menuTitle: Create Backup -weight: 3 ---- -## oasisctl create backup - -Create backup ... - -``` -oasisctl create backup [flags] -``` - -## Options -``` - --auto-deleted-at int Time (h) until auto delete of the backup - --deployment-id string ID of the deployment - --description string Description of the backup - -h, --help help for backup - --name string Name of the deployment - --upload The backup should be uploaded -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create backup policy](create-backup-policy.md) - Create a new backup policy - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-cacertificate.md b/site/content/3.11/arangograph/oasisctl/create/create-cacertificate.md deleted file mode 100644 index b27b6e7db8..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-cacertificate.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Create CA Certificate -menuTitle: Create CA Certificate -weight: 5 ---- -## oasisctl create cacertificate - -Create a new CA certificate - -``` -oasisctl create cacertificate [flags] -``` - -## Options -``` - --description string Description of the CA certificate - -h, --help help for cacertificate - --lifetime duration Lifetime of the CA certificate. - --name string Name of the CA certificate - -o, --organization-id string Identifier of the organization to create the CA certificate in - -p, --project-id string Identifier of the project to create the CA certificate in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-deployment.md b/site/content/3.11/arangograph/oasisctl/create/create-deployment.md deleted file mode 100644 index c9f633fd99..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-deployment.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Oasisctl Create Deployment -menuTitle: Create Deployment -weight: 6 ---- -## oasisctl create deployment - -Create a new deployment - -``` -oasisctl create deployment [flags] -``` - -## Options -``` - --accept Accept the current terms and conditions. - -c, --cacertificate-id string Identifier of the CA certificate to use for the deployment - --coordinator-memory-size int32 Set memory size of Coordinators for flexible deployments (GiB) (default 4) - --coordinators int32 Set number of Coordinators for flexible deployments (default 3) - --custom-image string Set a custom image to use for the deployment. Only available for selected customers. - --dbserver-disk-size int32 Set disk size of DB-Servers for flexible deployments (GiB) (default 32) - --dbserver-memory-size int32 Set memory size of DB-Servers for flexible deployments (GiB) (default 4) - --dbservers int32 Set number of DB-Servers for flexible deployments (default 3) - --deployment-profile-id string Set the Deployment Profile to use for this deployment. - --description string Description of the deployment - --disable-foxx-authentication Disable authentication of requests to Foxx application. - --disk-performance-id string Set the disk performance to use for this deployment. - --drop-vst-support Drop VST protocol support to improve resilience. - -h, --help help for deployment - -i, --ipallowlist-id string Identifier of the IP allowlist to use for the deployment - --is-platform-authentication-enabled Enable platform authentication for deployment. - --max-node-disk-size int32 Set maximum disk size for nodes for autoscaler (GiB) - --model string Set model of the deployment (default "oneshard") - --name string Name of the deployment - --node-count int32 Set the number of desired nodes (default 3) - --node-disk-size int32 Set disk size for nodes (GiB) - --node-size-id string Set the node size to use for this deployment - --notification-email-address strings Set email address(-es) that will be used for notifications related to this deployment. - -o, --organization-id string Identifier of the organization to create the deployment in - -p, --project-id string Identifier of the project to create the deployment in - -r, --region-id string Identifier of the region to create the deployment in - --version string Version of ArangoDB to use for the deployment (default "default") -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-example-installation.md b/site/content/3.11/arangograph/oasisctl/create/create-example-installation.md deleted file mode 100644 index 121d13dccd..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-example-installation.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Create Example Installation -menuTitle: Create Example Installation -weight: 8 ---- -## oasisctl create example installation - -Create a new example dataset installation - -``` -oasisctl create example installation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to list installations for - -e, --example-dataset-id string ID of the example dataset - -h, --help help for installation - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create example](create-example.md) - Create example ... - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-example.md b/site/content/3.11/arangograph/oasisctl/create/create-example.md deleted file mode 100644 index 5b1a50cf0e..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-example.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Create Example -menuTitle: Create Example -weight: 7 ---- -## oasisctl create example - -Create example ... - -``` -oasisctl create example [flags] -``` - -## Options -``` - -h, --help help for example -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create example installation](create-example-installation.md) - Create a new example dataset installation - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-group.md b/site/content/3.11/arangograph/oasisctl/create/create-group.md deleted file mode 100644 index d28e7ec7d2..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-group.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Create Group -menuTitle: Create Group -weight: 9 ---- -## oasisctl create group - -Create a new group - -``` -oasisctl create group [flags] -``` - -## Options -``` - --description string Description of the group - -h, --help help for group - --name string Name of the group - -o, --organization-id string Identifier of the organization to create the group in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-ipallowlist.md b/site/content/3.11/arangograph/oasisctl/create/create-ipallowlist.md deleted file mode 100644 index 07f4308515..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-ipallowlist.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Create IP Allowlist -menuTitle: Create IP Allowlist -weight: 10 ---- -## oasisctl create ipallowlist - -Create a new IP allowlist - -``` -oasisctl create ipallowlist [flags] -``` - -## Options -``` - --cidr-range strings List of CIDR ranges from which deployments are accessible - --description string Description of the IP allowlist - -h, --help help for ipallowlist - --name string Name of the IP allowlist - -o, --organization-id string Identifier of the organization to create the IP allowlist in - -p, --project-id string Identifier of the project to create the IP allowlist in - --remote-inspection-allowed If set, remote connectivity checks by the Oasis platform are allowed -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-metrics-token.md b/site/content/3.11/arangograph/oasisctl/create/create-metrics-token.md deleted file mode 100644 index a5e0e9a9dd..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-metrics-token.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Create Metrics Token -menuTitle: Create Metrics Token -weight: 12 ---- -## oasisctl create metrics token - -Create a new metrics access token - -``` -oasisctl create metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to create the token for - --description string Description of the token - -h, --help help for token - --lifetime duration Lifetime of the token. - --name string Name of the token - -o, --organization-id string Identifier of the organization to create the token in - -p, --project-id string Identifier of the project to create the token in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create metrics](create-metrics.md) - Create metrics resources - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-metrics.md b/site/content/3.11/arangograph/oasisctl/create/create-metrics.md deleted file mode 100644 index d504981b04..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Create Metrics -menuTitle: Create Metrics -weight: 11 ---- -## oasisctl create metrics - -Create metrics resources - -``` -oasisctl create metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create metrics token](create-metrics-token.md) - Create a new metrics access token - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-notebook.md b/site/content/3.11/arangograph/oasisctl/create/create-notebook.md deleted file mode 100644 index 8e1f2dcd53..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-notebook.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Oasisctl Create Notebook -menuTitle: Create Notebook -weight: 13 ---- -## oasisctl create notebook - -Create a new notebook - -``` -oasisctl create notebook [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment that the notebook has to run next to - --description string Description of the notebook - -s, --disk-size int32 Disk size in GiB that has to be attached to given notebook - -h, --help help for notebook - -n, --name string Name of the notebook - -m, --notebook-model string Identifier of the notebook model that the notebook has to use - -o, --organization-id string Identifier of the organization to create the notebook in - -p, --project-id string Identifier of the project to create the notebook in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-organization-invite.md b/site/content/3.11/arangograph/oasisctl/create/create-organization-invite.md deleted file mode 100644 index 3fbe04a1fe..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Create Organization Invite -menuTitle: Create Organization Invite -weight: 15 ---- -## oasisctl create organization invite - -Create a new invite to an organization - -``` -oasisctl create organization invite [flags] -``` - -## Options -``` - --email string Email address of the person to invite - -h, --help help for invite - -o, --organization-id string Identifier of the organization to create the invite in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create organization](create-organization.md) - Create a new organization - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-organization.md b/site/content/3.11/arangograph/oasisctl/create/create-organization.md deleted file mode 100644 index 8ca1b9065b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-organization.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Create Organization -menuTitle: Create Organization -weight: 14 ---- -## oasisctl create organization - -Create a new organization - -``` -oasisctl create organization [flags] -``` - -## Options -``` - --description string Description of the organization - -h, --help help for organization - --name string Name of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create organization invite](create-organization-invite.md) - Create a new invite to an organization - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-private-endpoint-service.md b/site/content/3.11/arangograph/oasisctl/create/create-private-endpoint-service.md deleted file mode 100644 index 01999a99ce..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-private-endpoint-service.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Oasisctl Create Private Endpoint Service -menuTitle: Create Private Endpoint Service -weight: 18 ---- -## oasisctl create private endpoint service - -Create a Private Endpoint Service attached to an existing deployment - -``` -oasisctl create private endpoint service [flags] -``` - -## Options -``` - --alternate-dns-name strings DNS names used for the deployment in the private network - --aws-principal strings List of AWS Principals from which a Private Endpoint can be created (Format: <AccountID>[/Role/<RoleName>|/User/<UserName>]) - --azure-client-subscription-id strings List of Azure subscription IDs from which a Private Endpoint can be created - -d, --deployment-id string Identifier of the deployment that the private endpoint service is connected to - --description string Description of the private endpoint service - --enable-private-dns Enable private DNS for the deployment (applicable for AWS and GKE only) - --gcp-project strings List of GCP projects from which a Private Endpoint can be created - -h, --help help for service - --name string Name of the private endpoint service - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create private endpoint](create-private-endpoint.md) - - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-private-endpoint.md b/site/content/3.11/arangograph/oasisctl/create/create-private-endpoint.md deleted file mode 100644 index cac7dbfcb7..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-private-endpoint.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Create Private Endpoint -menuTitle: Create Private Endpoint -weight: 17 ---- -## oasisctl create private endpoint - - - -``` -oasisctl create private endpoint [flags] -``` - -## Options -``` - -h, --help help for endpoint -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create private](create-private.md) - Create private resources -* [oasisctl create private endpoint service](create-private-endpoint-service.md) - Create a Private Endpoint Service attached to an existing deployment - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-private.md b/site/content/3.11/arangograph/oasisctl/create/create-private.md deleted file mode 100644 index 3cb40e735b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-private.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Create Private -menuTitle: Create Private -weight: 16 ---- -## oasisctl create private - -Create private resources - -``` -oasisctl create private [flags] -``` - -## Options -``` - -h, --help help for private -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create private endpoint](create-private-endpoint.md) - - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-project.md b/site/content/3.11/arangograph/oasisctl/create/create-project.md deleted file mode 100644 index 59d997efb7..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-project.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Create Project -menuTitle: Create Project -weight: 19 ---- -## oasisctl create project - -Create a new project - -``` -oasisctl create project [flags] -``` - -## Options -``` - --description string Description of the project - -h, --help help for project - --name string Name of the project - -o, --organization-id string Identifier of the organization to create the project in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.11/arangograph/oasisctl/create/create-role.md b/site/content/3.11/arangograph/oasisctl/create/create-role.md deleted file mode 100644 index 52cec0a672..0000000000 --- a/site/content/3.11/arangograph/oasisctl/create/create-role.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Create Role -menuTitle: Create Role -weight: 20 ---- -## oasisctl create role - -Create a new role - -``` -oasisctl create role [flags] -``` - -## Options -``` - --description string Description of the role - -h, --help help for role - --name string Name of the role - -o, --organization-id string Identifier of the organization to create the role in - -p, --permission strings Permissions granted by the role -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.11/arangograph/oasisctl/delete/_index.md b/site/content/3.11/arangograph/oasisctl/delete/_index.md deleted file mode 100644 index 75b76a80b6..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/_index.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Oasisctl Delete -menuTitle: Delete -weight: 9 ---- -## oasisctl delete - -Delete resources - -``` -oasisctl delete [flags] -``` - -## Options -``` - -h, --help help for delete -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl delete apikey](delete-apikey.md) - Delete an API key with given identifier -* [oasisctl delete auditlog](delete-auditlog.md) - Delete an auditlog -* [oasisctl delete backup](delete-backup.md) - Delete a backup for a given ID. -* [oasisctl delete cacertificate](delete-cacertificate.md) - Delete a CA certificate the authenticated user has access to -* [oasisctl delete deployment](delete-deployment.md) - Delete a deployment the authenticated user has access to -* [oasisctl delete example](delete-example.md) - Delete example ... -* [oasisctl delete group](delete-group.md) - Delete a group the authenticated user has access to -* [oasisctl delete ipallowlist](delete-ipallowlist.md) - Delete an IP allowlist the authenticated user has access to -* [oasisctl delete metrics](delete-metrics.md) - Delete metrics resources -* [oasisctl delete notebook](delete-notebook.md) - Delete a notebook -* [oasisctl delete organization](delete-organization.md) - Delete an organization the authenticated user has access to -* [oasisctl delete project](delete-project.md) - Delete a project the authenticated user has access to -* [oasisctl delete role](delete-role.md) - Delete a role the authenticated user has access to - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-apikey.md b/site/content/3.11/arangograph/oasisctl/delete/delete-apikey.md deleted file mode 100644 index d18236eac3..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-apikey.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Delete API Key -menuTitle: Delete API Key -weight: 1 ---- -## oasisctl delete apikey - -Delete an API key with given identifier - -``` -oasisctl delete apikey [flags] -``` - -## Options -``` - -i, --apikey-id string Identifier of the API key to delete - -h, --help help for apikey -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-auditlog-archive-events.md b/site/content/3.11/arangograph/oasisctl/delete/delete-auditlog-archive-events.md deleted file mode 100644 index d337652b7b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-auditlog-archive-events.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Audit Log Archive Events -menuTitle: Delete Audit Log Archive Events -weight: 4 ---- -## oasisctl delete auditlog archive events - -Delete auditlog archive events - -``` -oasisctl delete auditlog archive events [flags] -``` - -## Options -``` - -i, --auditlog-archive-id string Identifier of the auditlog archive to delete events from. - -h, --help help for events - --to string Remove events created before this timestamp. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete auditlog archive](delete-auditlog-archive.md) - Delete an auditlog archive - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-auditlog-archive.md b/site/content/3.11/arangograph/oasisctl/delete/delete-auditlog-archive.md deleted file mode 100644 index 59153bfbdd..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-auditlog-archive.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Audit Log Archive -menuTitle: Delete Audit Log Archive -weight: 3 ---- -## oasisctl delete auditlog archive - -Delete an auditlog archive - -``` -oasisctl delete auditlog archive [flags] -``` - -## Options -``` - -i, --auditlog-archive-id string Identifier of the auditlog archive to delete. - -h, --help help for archive -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete auditlog](delete-auditlog.md) - Delete an auditlog -* [oasisctl delete auditlog archive events](delete-auditlog-archive-events.md) - Delete auditlog archive events - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-auditlog-destination.md b/site/content/3.11/arangograph/oasisctl/delete/delete-auditlog-destination.md deleted file mode 100644 index 6dcb135925..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-auditlog-destination.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Delete Audit Log Destination -menuTitle: Delete Audit Log Destination -weight: 5 ---- -## oasisctl delete auditlog destination - -Delete a destination from an auditlog - -``` -oasisctl delete auditlog destination [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog to delete. - -h, --help help for destination - --index int Index of the destination to remove. Only one delete option can be specified. (default -1) - -o, --organization-id string Identifier of the organization. - --type string Type of the destination to remove. This will remove ALL destinations with that type. - --url string An optional URL which will be used to delete a single destination instead of all. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete auditlog](delete-auditlog.md) - Delete an auditlog - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-auditlog.md b/site/content/3.11/arangograph/oasisctl/delete/delete-auditlog.md deleted file mode 100644 index 6895de151f..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-auditlog.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Delete Audit Log -menuTitle: Delete Audit Log -weight: 2 ---- -## oasisctl delete auditlog - -Delete an auditlog - -``` -oasisctl delete auditlog [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog to delete. - -h, --help help for auditlog - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete auditlog archive](delete-auditlog-archive.md) - Delete an auditlog archive -* [oasisctl delete auditlog destination](delete-auditlog-destination.md) - Delete a destination from an auditlog - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-backup-policy.md b/site/content/3.11/arangograph/oasisctl/delete/delete-backup-policy.md deleted file mode 100644 index 99e8ac2deb..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-backup-policy.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Backup Policy -menuTitle: Delete Backup Policy -weight: 7 ---- -## oasisctl delete backup policy - -Delete a backup policy for a given ID. - -``` -oasisctl delete backup policy [flags] -``` - -## Options -``` - -h, --help help for policy - -i, --id string Identifier of the backup policy - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete backup](delete-backup.md) - Delete a backup for a given ID. - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-backup.md b/site/content/3.11/arangograph/oasisctl/delete/delete-backup.md deleted file mode 100644 index cf116f93a1..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-backup.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Backup -menuTitle: Delete Backup -weight: 6 ---- -## oasisctl delete backup - -Delete a backup for a given ID. - -``` -oasisctl delete backup [flags] -``` - -## Options -``` - -h, --help help for backup - -i, --id string Identifier of the backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete backup policy](delete-backup-policy.md) - Delete a backup policy for a given ID. - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-cacertificate.md b/site/content/3.11/arangograph/oasisctl/delete/delete-cacertificate.md deleted file mode 100644 index aad85c751b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-cacertificate.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete CA Certificate -menuTitle: Delete CA Certificate -weight: 8 ---- -## oasisctl delete cacertificate - -Delete a CA certificate the authenticated user has access to - -``` -oasisctl delete cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - -h, --help help for cacertificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-deployment.md b/site/content/3.11/arangograph/oasisctl/delete/delete-deployment.md deleted file mode 100644 index 15450ecb9b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-deployment.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Deployment -menuTitle: Delete Deployment -weight: 9 ---- -## oasisctl delete deployment - -Delete a deployment the authenticated user has access to - -``` -oasisctl delete deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-example-installation.md b/site/content/3.11/arangograph/oasisctl/delete/delete-example-installation.md deleted file mode 100644 index 569152227e..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-example-installation.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Delete Example Installation -menuTitle: Delete Example Installation -weight: 11 ---- -## oasisctl delete example installation - -Delete an example datasets installation - -``` -oasisctl delete example installation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to list installations for - -h, --help help for installation - --installation-id string The ID of the installation to delete. - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete example](delete-example.md) - Delete example ... - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-example.md b/site/content/3.11/arangograph/oasisctl/delete/delete-example.md deleted file mode 100644 index 9518b2d7d1..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-example.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Delete Example -menuTitle: Delete Example -weight: 10 ---- -## oasisctl delete example - -Delete example ... - -``` -oasisctl delete example [flags] -``` - -## Options -``` - -h, --help help for example -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete example installation](delete-example-installation.md) - Delete an example datasets installation - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-group-members.md b/site/content/3.11/arangograph/oasisctl/delete/delete-group-members.md deleted file mode 100644 index ae6dc82a96..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-group-members.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Group Members -menuTitle: Delete Group Members -weight: 13 ---- -## oasisctl delete group members - -Delete members from group - -``` -oasisctl delete group members [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group to delete members from - -h, --help help for members - -o, --organization-id string Identifier of the organization - -u, --user-emails strings A comma separated list of user email addresses -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete group](delete-group.md) - Delete a group the authenticated user has access to - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-group.md b/site/content/3.11/arangograph/oasisctl/delete/delete-group.md deleted file mode 100644 index 4f6fe7d91c..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-group.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Group -menuTitle: Delete Group -weight: 12 ---- -## oasisctl delete group - -Delete a group the authenticated user has access to - -``` -oasisctl delete group [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group - -h, --help help for group - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete group members](delete-group-members.md) - Delete members from group - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-ipallowlist.md b/site/content/3.11/arangograph/oasisctl/delete/delete-ipallowlist.md deleted file mode 100644 index 1806667457..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-ipallowlist.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete IP Allowlist -menuTitle: Delete IP Allowlist -weight: 14 ---- -## oasisctl delete ipallowlist - -Delete an IP allowlist the authenticated user has access to - -``` -oasisctl delete ipallowlist [flags] -``` - -## Options -``` - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-metrics-token.md b/site/content/3.11/arangograph/oasisctl/delete/delete-metrics-token.md deleted file mode 100644 index c18927e996..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-metrics-token.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Delete Metrics Token -menuTitle: Delete Metrics Token -weight: 16 ---- -## oasisctl delete metrics token - -Delete a metrics token for a deployment - -``` -oasisctl delete metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for token - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --token-id string Identifier of the metrics token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete metrics](delete-metrics.md) - Delete metrics resources - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-metrics.md b/site/content/3.11/arangograph/oasisctl/delete/delete-metrics.md deleted file mode 100644 index 36052afbce..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Delete Metrics -menuTitle: Delete Metrics -weight: 15 ---- -## oasisctl delete metrics - -Delete metrics resources - -``` -oasisctl delete metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete metrics token](delete-metrics-token.md) - Delete a metrics token for a deployment - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-notebook.md b/site/content/3.11/arangograph/oasisctl/delete/delete-notebook.md deleted file mode 100644 index 3992653923..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-notebook.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Delete Notebook -menuTitle: Delete Notebook -weight: 17 ---- -## oasisctl delete notebook - -Delete a notebook - -``` -oasisctl delete notebook [flags] -``` - -## Options -``` - -h, --help help for notebook - -n, --notebook-id string Identifier of the notebook -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-organization-invite.md b/site/content/3.11/arangograph/oasisctl/delete/delete-organization-invite.md deleted file mode 100644 index dae7596f39..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Organization Invite -menuTitle: Delete Organization Invite -weight: 19 ---- -## oasisctl delete organization invite - -Delete an organization invite the authenticated user has access to - -``` -oasisctl delete organization invite [flags] -``` - -## Options -``` - -h, --help help for invite - -i, --invite-id string Identifier of the organization invite - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete organization](delete-organization.md) - Delete an organization the authenticated user has access to - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-organization-members.md b/site/content/3.11/arangograph/oasisctl/delete/delete-organization-members.md deleted file mode 100644 index c3d4151366..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-organization-members.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Organization Members -menuTitle: Delete Organization Members -weight: 20 ---- -## oasisctl delete organization members - -Delete members from organization - -``` -oasisctl delete organization members [flags] -``` - -## Options -``` - -h, --help help for members - -o, --organization-id string Identifier of the organization - -u, --user-emails strings A comma separated list of user email addresses -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete organization](delete-organization.md) - Delete an organization the authenticated user has access to - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-organization.md b/site/content/3.11/arangograph/oasisctl/delete/delete-organization.md deleted file mode 100644 index 362056323c..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-organization.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Organization -menuTitle: Delete Organization -weight: 18 ---- -## oasisctl delete organization - -Delete an organization the authenticated user has access to - -``` -oasisctl delete organization [flags] -``` - -## Options -``` - -h, --help help for organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete organization invite](delete-organization-invite.md) - Delete an organization invite the authenticated user has access to -* [oasisctl delete organization members](delete-organization-members.md) - Delete members from organization - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-project.md b/site/content/3.11/arangograph/oasisctl/delete/delete-project.md deleted file mode 100644 index 9b45160be9..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Project -menuTitle: Delete Project -weight: 21 ---- -## oasisctl delete project - -Delete a project the authenticated user has access to - -``` -oasisctl delete project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.11/arangograph/oasisctl/delete/delete-role.md b/site/content/3.11/arangograph/oasisctl/delete/delete-role.md deleted file mode 100644 index c8bcbb67f2..0000000000 --- a/site/content/3.11/arangograph/oasisctl/delete/delete-role.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Role -menuTitle: Delete Role -weight: 22 ---- -## oasisctl delete role - -Delete a role the authenticated user has access to - -``` -oasisctl delete role [flags] -``` - -## Options -``` - -h, --help help for role - -o, --organization-id string Identifier of the organization - -r, --role-id string Identifier of the role -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.11/arangograph/oasisctl/disable/_index.md b/site/content/3.11/arangograph/oasisctl/disable/_index.md deleted file mode 100644 index 916ad96f01..0000000000 --- a/site/content/3.11/arangograph/oasisctl/disable/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Disable -menuTitle: Disable -weight: 10 ---- -## oasisctl disable - -Disable some settings related to deployment - -``` -oasisctl disable [flags] -``` - -## Options -``` - -h, --help help for disable -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl disable scheduled-root-password-rotation](disable-scheduled-root-password-rotation.md) - Disable scheduled root password rotation - diff --git a/site/content/3.11/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md b/site/content/3.11/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md deleted file mode 100644 index 52ac637431..0000000000 --- a/site/content/3.11/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Disable Scheduled-Root-Password-Rotation -menuTitle: Disable Scheduled-Root-Password-Rotation -weight: 1 ---- -## oasisctl disable scheduled-root-password-rotation - -Disable scheduled root password rotation - -``` -oasisctl disable scheduled-root-password-rotation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for scheduled-root-password-rotation - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl disable](_index.md) - Disable some settings related to deployment - diff --git a/site/content/3.11/arangograph/oasisctl/enable/_index.md b/site/content/3.11/arangograph/oasisctl/enable/_index.md deleted file mode 100644 index 61a3b03d10..0000000000 --- a/site/content/3.11/arangograph/oasisctl/enable/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Enable -menuTitle: Enable -weight: 11 ---- -## oasisctl enable - -Enable some settings related to deployment - -``` -oasisctl enable [flags] -``` - -## Options -``` - -h, --help help for enable -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl enable scheduled-root-password-rotation](enable-scheduled-root-password-rotation.md) - Enable scheduled root password rotation - diff --git a/site/content/3.11/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md b/site/content/3.11/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md deleted file mode 100644 index 8628abc79c..0000000000 --- a/site/content/3.11/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Enable Scheduled-Root-Password-Rotation -menuTitle: Enable Scheduled-Root-Password-Rotation -weight: 1 ---- -## oasisctl enable scheduled-root-password-rotation - -Enable scheduled root password rotation - -``` -oasisctl enable scheduled-root-password-rotation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for scheduled-root-password-rotation - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl enable](_index.md) - Enable some settings related to deployment - diff --git a/site/content/3.11/arangograph/oasisctl/generate-docs.md b/site/content/3.11/arangograph/oasisctl/generate-docs.md deleted file mode 100644 index f1d83f8437..0000000000 --- a/site/content/3.11/arangograph/oasisctl/generate-docs.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Generate Documentation -menuTitle: Generate Documentation -weight: 12 ---- -## oasisctl generate-docs - -Generate output - -``` -oasisctl generate-docs [flags] -``` - -## Options -``` - -h, --help help for generate-docs - -l, --link-file-ext string What file extensions the links should point to - -o, --output-dir string Output directory (default "./docs") - -r, --replace-underscore-with string Replace the underscore in links with the given character -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.11/arangograph/oasisctl/get/_index.md b/site/content/3.11/arangograph/oasisctl/get/_index.md deleted file mode 100644 index 20021e7831..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/_index.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Oasisctl Get -menuTitle: Get -weight: 13 ---- -## oasisctl get - -Get information - -``` -oasisctl get [flags] -``` - -## Options -``` - -h, --help help for get -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl get auditlog](get-auditlog.md) - Get auditlog archive -* [oasisctl get backup](get-backup.md) - Get a backup -* [oasisctl get cacertificate](get-cacertificate.md) - Get a CA certificate the authenticated user has access to -* [oasisctl get deployment](get-deployment.md) - Get a deployment the authenticated user has access to -* [oasisctl get example](get-example.md) - Get a single example dataset -* [oasisctl get group](get-group.md) - Get a group the authenticated user has access to -* [oasisctl get ipallowlist](get-ipallowlist.md) - Get an IP allowlist the authenticated user has access to -* [oasisctl get metrics](get-metrics.md) - Get metrics information -* [oasisctl get notebook](get-notebook.md) - Get a notebook -* [oasisctl get organization](get-organization.md) - Get an organization the authenticated user is a member of -* [oasisctl get policy](get-policy.md) - Get a policy the authenticated user has access to -* [oasisctl get private](get-private.md) - Get private information -* [oasisctl get project](get-project.md) - Get a project the authenticated user has access to -* [oasisctl get provider](get-provider.md) - Get a provider the authenticated user has access to -* [oasisctl get region](get-region.md) - Get a region the authenticated user has access to -* [oasisctl get role](get-role.md) - Get a role the authenticated user has access to -* [oasisctl get self](get-self.md) - Get information about the authenticated user -* [oasisctl get server](get-server.md) - Get server information -* [oasisctl get tandc](get-tandc.md) - Get current terms and conditions or get one by ID - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-auditlog-archive.md b/site/content/3.11/arangograph/oasisctl/get/get-auditlog-archive.md deleted file mode 100644 index 546b9a55c4..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-auditlog-archive.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Audit Log Archive -menuTitle: Get Audit Log Archive -weight: 2 ---- -## oasisctl get auditlog archive - -Get auditlog archive - -``` -oasisctl get auditlog archive [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog - -h, --help help for archive -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get auditlog](get-auditlog.md) - Get auditlog archive - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-auditlog-events.md b/site/content/3.11/arangograph/oasisctl/get/get-auditlog-events.md deleted file mode 100644 index 44c9088765..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-auditlog-events.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Oasisctl Get Audit Log Events -menuTitle: Get Audit Log Events -weight: 3 ---- -## oasisctl get auditlog events - -Get auditlog events - -``` -oasisctl get auditlog events [flags] -``` - -## Options -``` - --auditlog-archive-id string If set, include only events from this AuditLogArchive - -i, --auditlog-id string Identifier of the auditlog - --excluded-topics strings If non-empty, leave out events with one of these topics. This takes priority over included - --from string Request events created at or after this timestamp - -h, --help help for events - --included-topics strings If non-empty, only request events with one of these topics - --limit int Limit the number of audit log events. Defaults to 0, meaning no limit - --to string Request events created before this timestamp -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get auditlog](get-auditlog.md) - Get auditlog archive - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-auditlog.md b/site/content/3.11/arangograph/oasisctl/get/get-auditlog.md deleted file mode 100644 index 025710b835..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-auditlog.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Audit Log -menuTitle: Get Audit Log -weight: 1 ---- -## oasisctl get auditlog - -Get auditlog archive - -``` -oasisctl get auditlog [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog - -h, --help help for auditlog - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get auditlog archive](get-auditlog-archive.md) - Get auditlog archive -* [oasisctl get auditlog events](get-auditlog-events.md) - Get auditlog events - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-backup-policy.md b/site/content/3.11/arangograph/oasisctl/get/get-backup-policy.md deleted file mode 100644 index 916ad22e61..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-backup-policy.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Backup Policy -menuTitle: Get Backup Policy -weight: 5 ---- -## oasisctl get backup policy - -Get an existing backup policy - -``` -oasisctl get backup policy [flags] -``` - -## Options -``` - -h, --help help for policy - -i, --id string Identifier of the backup policy (Id|Name|Url) -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get backup](get-backup.md) - Get a backup - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-backup.md b/site/content/3.11/arangograph/oasisctl/get/get-backup.md deleted file mode 100644 index 2792a98b02..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-backup.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Backup -menuTitle: Get Backup -weight: 4 ---- -## oasisctl get backup - -Get a backup - -``` -oasisctl get backup [flags] -``` - -## Options -``` - -h, --help help for backup - -i, --id string Identifier of the backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get backup policy](get-backup-policy.md) - Get an existing backup policy - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-cacertificate.md b/site/content/3.11/arangograph/oasisctl/get/get-cacertificate.md deleted file mode 100644 index 0be6d11e44..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-cacertificate.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get CA Certificate -menuTitle: Get CA Certificate -weight: 6 ---- -## oasisctl get cacertificate - -Get a CA certificate the authenticated user has access to - -``` -oasisctl get cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - -h, --help help for cacertificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-deployment.md b/site/content/3.11/arangograph/oasisctl/get/get-deployment.md deleted file mode 100644 index ab8d86e3d3..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-deployment.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Deployment -menuTitle: Get Deployment -weight: 7 ---- -## oasisctl get deployment - -Get a deployment the authenticated user has access to - -``` -oasisctl get deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --show-root-password show the root password of the database -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-example-installation.md b/site/content/3.11/arangograph/oasisctl/get/get-example-installation.md deleted file mode 100644 index 4190e8e288..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-example-installation.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Example Installation -menuTitle: Get Example Installation -weight: 9 ---- -## oasisctl get example installation - -Get a single example dataset installation - -``` -oasisctl get example installation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to list installations for - -h, --help help for installation - --installation-id string The ID of the installation to get. - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get example](get-example.md) - Get a single example dataset - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-example.md b/site/content/3.11/arangograph/oasisctl/get/get-example.md deleted file mode 100644 index 1238d443ed..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-example.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Example -menuTitle: Get Example -weight: 8 ---- -## oasisctl get example - -Get a single example dataset - -``` -oasisctl get example [flags] -``` - -## Options -``` - -e, --example-dataset-id string ID of the example dataset - -h, --help help for example -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get example installation](get-example-installation.md) - Get a single example dataset installation - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-group.md b/site/content/3.11/arangograph/oasisctl/get/get-group.md deleted file mode 100644 index 9b8e72e16b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-group.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Group -menuTitle: Get Group -weight: 10 ---- -## oasisctl get group - -Get a group the authenticated user has access to - -``` -oasisctl get group [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group - -h, --help help for group - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-ipallowlist.md b/site/content/3.11/arangograph/oasisctl/get/get-ipallowlist.md deleted file mode 100644 index 379c324604..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-ipallowlist.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get IP Allowlist -menuTitle: Get IP Allowlist -weight: 11 ---- -## oasisctl get ipallowlist - -Get an IP allowlist the authenticated user has access to - -``` -oasisctl get ipallowlist [flags] -``` - -## Options -``` - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-metrics-token.md b/site/content/3.11/arangograph/oasisctl/get/get-metrics-token.md deleted file mode 100644 index 6226b02793..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-metrics-token.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Metrics Token -menuTitle: Get Metrics Token -weight: 13 ---- -## oasisctl get metrics token - -Get a metrics token - -``` -oasisctl get metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for token - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --token-id string Identifier of the metrics token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get metrics](get-metrics.md) - Get metrics information - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-metrics.md b/site/content/3.11/arangograph/oasisctl/get/get-metrics.md deleted file mode 100644 index f2699417aa..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Metrics -menuTitle: Get Metrics -weight: 12 ---- -## oasisctl get metrics - -Get metrics information - -``` -oasisctl get metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get metrics token](get-metrics-token.md) - Get a metrics token - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-notebook.md b/site/content/3.11/arangograph/oasisctl/get/get-notebook.md deleted file mode 100644 index 8526fb293a..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-notebook.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Notebook -menuTitle: Get Notebook -weight: 14 ---- -## oasisctl get notebook - -Get a notebook - -``` -oasisctl get notebook [flags] -``` - -## Options -``` - -h, --help help for notebook - -n, --notebook-id string Identifier of the notebook -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-organization-authentication-providers.md b/site/content/3.11/arangograph/oasisctl/get/get-organization-authentication-providers.md deleted file mode 100644 index da20b01a1a..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-organization-authentication-providers.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Authentication Providers -menuTitle: Get Organization Authentication Providers -weight: 17 ---- -## oasisctl get organization authentication providers - -Get which authentication providers are allowed for accessing a specific organization - -``` -oasisctl get organization authentication providers [flags] -``` - -## Options -``` - -h, --help help for providers - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization authentication](get-organization-authentication.md) - Get authentication specific information for an organization - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-organization-authentication.md b/site/content/3.11/arangograph/oasisctl/get/get-organization-authentication.md deleted file mode 100644 index cd16e2841b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-organization-authentication.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Authentication -menuTitle: Get Organization Authentication -weight: 16 ---- -## oasisctl get organization authentication - -Get authentication specific information for an organization - -``` -oasisctl get organization authentication [flags] -``` - -## Options -``` - -h, --help help for authentication -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization](get-organization.md) - Get an organization the authenticated user is a member of -* [oasisctl get organization authentication providers](get-organization-authentication-providers.md) - Get which authentication providers are allowed for accessing a specific organization - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md b/site/content/3.11/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md deleted file mode 100644 index 400ad06087..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Email Domain Restrictions -menuTitle: Get Organization Email Domain Restrictions -weight: 20 ---- -## oasisctl get organization email domain restrictions - -Get which email domain restrictions are placed on accessing a specific organization - -``` -oasisctl get organization email domain restrictions [flags] -``` - -## Options -``` - -h, --help help for restrictions - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization email domain](get-organization-email-domain.md) - Get email domain specific information for an organization - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-organization-email-domain.md b/site/content/3.11/arangograph/oasisctl/get/get-organization-email-domain.md deleted file mode 100644 index 305097e72f..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-organization-email-domain.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Email Domain -menuTitle: Get Organization Email Domain -weight: 19 ---- -## oasisctl get organization email domain - -Get email domain specific information for an organization - -``` -oasisctl get organization email domain [flags] -``` - -## Options -``` - -h, --help help for domain -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization email](get-organization-email.md) - Get email specific information for an organization -* [oasisctl get organization email domain restrictions](get-organization-email-domain-restrictions.md) - Get which email domain restrictions are placed on accessing a specific organization - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-organization-email.md b/site/content/3.11/arangograph/oasisctl/get/get-organization-email.md deleted file mode 100644 index 5ca941ffcd..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-organization-email.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Email -menuTitle: Get Organization Email -weight: 18 ---- -## oasisctl get organization email - -Get email specific information for an organization - -``` -oasisctl get organization email [flags] -``` - -## Options -``` - -h, --help help for email -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization](get-organization.md) - Get an organization the authenticated user is a member of -* [oasisctl get organization email domain](get-organization-email-domain.md) - Get email domain specific information for an organization - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-organization-invite.md b/site/content/3.11/arangograph/oasisctl/get/get-organization-invite.md deleted file mode 100644 index 093ed06c05..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Organization Invite -menuTitle: Get Organization Invite -weight: 21 ---- -## oasisctl get organization invite - -Get an organization invite the authenticated user has access to - -``` -oasisctl get organization invite [flags] -``` - -## Options -``` - -h, --help help for invite - -i, --invite-id string Identifier of the organization invite - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization](get-organization.md) - Get an organization the authenticated user is a member of - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-organization.md b/site/content/3.11/arangograph/oasisctl/get/get-organization.md deleted file mode 100644 index b05c6201ab..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-organization.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Organization -menuTitle: Get Organization -weight: 15 ---- -## oasisctl get organization - -Get an organization the authenticated user is a member of - -``` -oasisctl get organization [flags] -``` - -## Options -``` - -h, --help help for organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get organization authentication](get-organization-authentication.md) - Get authentication specific information for an organization -* [oasisctl get organization email](get-organization-email.md) - Get email specific information for an organization -* [oasisctl get organization invite](get-organization-invite.md) - Get an organization invite the authenticated user has access to - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-policy.md b/site/content/3.11/arangograph/oasisctl/get/get-policy.md deleted file mode 100644 index 599e5601cb..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-policy.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Policy -menuTitle: Get Policy -weight: 22 ---- -## oasisctl get policy - -Get a policy the authenticated user has access to - -``` -oasisctl get policy [flags] -``` - -## Options -``` - -h, --help help for policy - -u, --url string URL of the resource to inspect the policy for -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-private-endpoint-service.md b/site/content/3.11/arangograph/oasisctl/get/get-private-endpoint-service.md deleted file mode 100644 index a9c56b8b0f..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-private-endpoint-service.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get Private Endpoint Service -menuTitle: Get Private Endpoint Service -weight: 25 ---- -## oasisctl get private endpoint service - -Get a Private Endpoint Service the authenticated user has access to - -``` -oasisctl get private endpoint service [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment that the private endpoint service is connected to - -h, --help help for service - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get private endpoint](get-private-endpoint.md) - - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-private-endpoint.md b/site/content/3.11/arangograph/oasisctl/get/get-private-endpoint.md deleted file mode 100644 index 38afeb2dd8..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-private-endpoint.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Private Endpoint -menuTitle: Get Private Endpoint -weight: 24 ---- -## oasisctl get private endpoint - - - -``` -oasisctl get private endpoint [flags] -``` - -## Options -``` - -h, --help help for endpoint -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get private](get-private.md) - Get private information -* [oasisctl get private endpoint service](get-private-endpoint-service.md) - Get a Private Endpoint Service the authenticated user has access to - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-private.md b/site/content/3.11/arangograph/oasisctl/get/get-private.md deleted file mode 100644 index e84921fd32..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-private.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Private -menuTitle: Get Private -weight: 23 ---- -## oasisctl get private - -Get private information - -``` -oasisctl get private [flags] -``` - -## Options -``` - -h, --help help for private -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get private endpoint](get-private-endpoint.md) - - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-project.md b/site/content/3.11/arangograph/oasisctl/get/get-project.md deleted file mode 100644 index 5bfb087e53..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Project -menuTitle: Get Project -weight: 26 ---- -## oasisctl get project - -Get a project the authenticated user has access to - -``` -oasisctl get project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-provider.md b/site/content/3.11/arangograph/oasisctl/get/get-provider.md deleted file mode 100644 index da7d632e1b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-provider.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Provider -menuTitle: Get Provider -weight: 27 ---- -## oasisctl get provider - -Get a provider the authenticated user has access to - -``` -oasisctl get provider [flags] -``` - -## Options -``` - -h, --help help for provider - -o, --organization-id string Optional Identifier of the organization - -p, --provider-id string Identifier of the provider -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-region.md b/site/content/3.11/arangograph/oasisctl/get/get-region.md deleted file mode 100644 index 25ca81e867..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-region.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get Region -menuTitle: Get Region -weight: 28 ---- -## oasisctl get region - -Get a region the authenticated user has access to - -``` -oasisctl get region [flags] -``` - -## Options -``` - -h, --help help for region - -o, --organization-id string Optional Identifier of the organization - -p, --provider-id string Identifier of the provider - -r, --region-id string Identifier of the region -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-role.md b/site/content/3.11/arangograph/oasisctl/get/get-role.md deleted file mode 100644 index 898605e245..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-role.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Role -menuTitle: Get Role -weight: 29 ---- -## oasisctl get role - -Get a role the authenticated user has access to - -``` -oasisctl get role [flags] -``` - -## Options -``` - -h, --help help for role - -o, --organization-id string Identifier of the organization - -r, --role-id string Identifier of the role -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-self.md b/site/content/3.11/arangograph/oasisctl/get/get-self.md deleted file mode 100644 index 26d48ad423..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-self.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl Get Self -menuTitle: Get Self -weight: 30 ---- -## oasisctl get self - -Get information about the authenticated user - -``` -oasisctl get self [flags] -``` - -## Options -``` - -h, --help help for self -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-server-status.md b/site/content/3.11/arangograph/oasisctl/get/get-server-status.md deleted file mode 100644 index 302fb17a1d..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-server-status.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get Server Status -menuTitle: Get Server Status -weight: 32 ---- -## oasisctl get server status - -Get the status of servers for a deployment - -``` -oasisctl get server status [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for status - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get server](get-server.md) - Get server information - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-server.md b/site/content/3.11/arangograph/oasisctl/get/get-server.md deleted file mode 100644 index ad54b9dfd2..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-server.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Server -menuTitle: Get Server -weight: 31 ---- -## oasisctl get server - -Get server information - -``` -oasisctl get server [flags] -``` - -## Options -``` - -h, --help help for server -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get server status](get-server-status.md) - Get the status of servers for a deployment - diff --git a/site/content/3.11/arangograph/oasisctl/get/get-tandc.md b/site/content/3.11/arangograph/oasisctl/get/get-tandc.md deleted file mode 100644 index c33b546252..0000000000 --- a/site/content/3.11/arangograph/oasisctl/get/get-tandc.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Terms & Conditions -menuTitle: Get Terms & Conditions -weight: 33 ---- -## oasisctl get tandc - -Get current terms and conditions or get one by ID - -``` -oasisctl get tandc [flags] -``` - -## Options -``` - -h, --help help for tandc - -o, --organization-id string Identifier of the organization - -t, --terms-and-conditions-id string Identifier of the terms and conditions to accept. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.11/arangograph/oasisctl/import.md b/site/content/3.11/arangograph/oasisctl/import.md deleted file mode 100644 index 385375d640..0000000000 --- a/site/content/3.11/arangograph/oasisctl/import.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Oasisctl Import -menuTitle: Import -weight: 14 ---- -## oasisctl import - -Import data from a local database or from another remote database into an Oasis deployment. - -``` -oasisctl import [flags] -``` - -## Options -``` - -b, --batch-size int The number of documents to write at once. (default 4096) - -d, --destination-deployment-id string Destination deployment id to import data into. It can be provided instead of address, username and password. - --excluded-collection strings A list of collections names which should be excluded. Exclusion takes priority over inclusion. - --excluded-database strings A list of database names which should be excluded. Exclusion takes priority over inclusion. - --excluded-graph strings A list of graph names which should be excluded. Exclusion takes priority over inclusion. - --excluded-view strings A list of view names which should be excluded. Exclusion takes priority over inclusion. - -f, --force Force the copy automatically overwriting everything at destination. - -h, --help help for import - --included-collection strings A list of collection names which should be included. If provided, only these collections will be copied. - --included-database strings A list of database names which should be included. If provided, only these databases will be copied. - --included-graph strings A list of graph names which should be included. If provided, only these graphs will be copied. - --included-view strings A list of view names which should be included. If provided, only these views will be copied. - -r, --max-retries int The number of maximum retries attempts. Increasing this number will also increase the exponential fallback timer. (default 9) - -m, --maximum-parallel-collections int Maximum number of collections being copied in parallel. (default 10) - --no-progress-bar Disable the progress bar but still have partial progress output. - --query-ttl duration Cursor TTL defined as a duration. (default 2h0m0s) - --source-address string Source database address to copy data from. - --source-password string Source database password if required. - --source-username string Source database username if required. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.11/arangograph/oasisctl/list/_index.md b/site/content/3.11/arangograph/oasisctl/list/_index.md deleted file mode 100644 index b8a7496441..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/_index.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Oasisctl List -menuTitle: List -weight: 15 ---- -## oasisctl list - -List resources - -``` -oasisctl list [flags] -``` - -## Options -``` - -h, --help help for list -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl list apikeys](list-apikeys.md) - List all API keys created for the current user -* [oasisctl list arangodb](list-arangodb.md) - List ArangoDB information -* [oasisctl list auditlog](list-auditlog.md) - List resources for auditlogs -* [oasisctl list auditlogs](list-auditlogs.md) - List auditlogs -* [oasisctl list backup](list-backup.md) - A list command for various backup resources -* [oasisctl list backups](list-backups.md) - List backups -* [oasisctl list cacertificates](list-cacertificates.md) - List all CA certificates of the given project -* [oasisctl list cpusizes](list-cpusizes.md) - List CPU sizes -* [oasisctl list deployments](list-deployments.md) - List all deployments of the given project -* [oasisctl list diskperformances](list-diskperformances.md) - List disk performances -* [oasisctl list effective](list-effective.md) - List effective information -* [oasisctl list example](list-example.md) - List example ... -* [oasisctl list examples](list-examples.md) - List all example datasets -* [oasisctl list group](list-group.md) - List group resources -* [oasisctl list groups](list-groups.md) - List all groups of the given organization -* [oasisctl list ipallowlists](list-ipallowlists.md) - List all IP allowlists of the given project -* [oasisctl list metrics](list-metrics.md) - List metrics resources -* [oasisctl list nodesizes](list-nodesizes.md) - List node sizes -* [oasisctl list notebookmodels](list-notebookmodels.md) - List notebook models -* [oasisctl list notebooks](list-notebooks.md) - List notebooks -* [oasisctl list organization](list-organization.md) - List organization resources -* [oasisctl list organizations](list-organizations.md) - List all organizations the authenticated user is a member of -* [oasisctl list permissions](list-permissions.md) - List the known permissions -* [oasisctl list projects](list-projects.md) - List all projects of the given organization -* [oasisctl list providers](list-providers.md) - List all providers the authenticated user has access to -* [oasisctl list regions](list-regions.md) - List all regions of the given provider -* [oasisctl list roles](list-roles.md) - List all roles of the given organization -* [oasisctl list servers](list-servers.md) - List servers information - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-apikeys.md b/site/content/3.11/arangograph/oasisctl/list/list-apikeys.md deleted file mode 100644 index 44984cb38b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-apikeys.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl List API Keys -menuTitle: List API Keys -weight: 1 ---- -## oasisctl list apikeys - -List all API keys created for the current user - -``` -oasisctl list apikeys [flags] -``` - -## Options -``` - -h, --help help for apikeys -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-arangodb-versions.md b/site/content/3.11/arangograph/oasisctl/list/list-arangodb-versions.md deleted file mode 100644 index 22411cf8a8..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-arangodb-versions.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List ArangoDB Versions -menuTitle: List ArangoDB Versions -weight: 3 ---- -## oasisctl list arangodb versions - -List all supported ArangoDB versions - -``` -oasisctl list arangodb versions [flags] -``` - -## Options -``` - -h, --help help for versions - -o, --organization-id string Optional Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list arangodb](list-arangodb.md) - List ArangoDB information - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-arangodb.md b/site/content/3.11/arangograph/oasisctl/list/list-arangodb.md deleted file mode 100644 index 04445b917d..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-arangodb.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List ArangoDB -menuTitle: List ArangoDB -weight: 2 ---- -## oasisctl list arangodb - -List ArangoDB information - -``` -oasisctl list arangodb [flags] -``` - -## Options -``` - -h, --help help for arangodb -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list arangodb versions](list-arangodb-versions.md) - List all supported ArangoDB versions - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-auditlog-archives.md b/site/content/3.11/arangograph/oasisctl/list/list-auditlog-archives.md deleted file mode 100644 index efe237a2b6..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-auditlog-archives.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Audit Log Archives -menuTitle: List Audit Log Archives -weight: 5 ---- -## oasisctl list auditlog archives - -List auditlog archives - -``` -oasisctl list auditlog archives [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog - -h, --help help for archives - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list auditlog](list-auditlog.md) - List resources for auditlogs - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-auditlog-destinations.md b/site/content/3.11/arangograph/oasisctl/list/list-auditlog-destinations.md deleted file mode 100644 index f6fc395ce0..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-auditlog-destinations.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Audit Log Destinations -menuTitle: List Audit Log Destinations -weight: 6 ---- -## oasisctl list auditlog destinations - -List auditlog destinations - -``` -oasisctl list auditlog destinations [flags] -``` - -## Options -``` - --auditlog-id string Identifier of the auditlog to list the destinations for - -h, --help help for destinations - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list auditlog](list-auditlog.md) - List resources for auditlogs - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-auditlog.md b/site/content/3.11/arangograph/oasisctl/list/list-auditlog.md deleted file mode 100644 index 4a86f9969e..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-auditlog.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Audit Log -menuTitle: List Audit Log -weight: 4 ---- -## oasisctl list auditlog - -List resources for auditlogs - -``` -oasisctl list auditlog [flags] -``` - -## Options -``` - -h, --help help for auditlog -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list auditlog archives](list-auditlog-archives.md) - List auditlog archives -* [oasisctl list auditlog destinations](list-auditlog-destinations.md) - List auditlog destinations - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-auditlogs.md b/site/content/3.11/arangograph/oasisctl/list/list-auditlogs.md deleted file mode 100644 index 83e17ba2e2..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-auditlogs.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Audit Logs -menuTitle: List Audit Logs -weight: 7 ---- -## oasisctl list auditlogs - -List auditlogs - -``` -oasisctl list auditlogs [flags] -``` - -## Options -``` - -h, --help help for auditlogs - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-backup-policies.md b/site/content/3.11/arangograph/oasisctl/list/list-backup-policies.md deleted file mode 100644 index ec1b895990..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-backup-policies.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Backup Policies -menuTitle: List Backup Policies -weight: 9 ---- -## oasisctl list backup policies - -List backup policies - -``` -oasisctl list backup policies [flags] -``` - -## Options -``` - --deployment-id string The ID of the deployment to list backup policies for - -h, --help help for policies - --include-deleted If set, the result includes all backup policies, including those who set to deleted, however are not removed from the system currently -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list backup](list-backup.md) - A list command for various backup resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-backup.md b/site/content/3.11/arangograph/oasisctl/list/list-backup.md deleted file mode 100644 index 3c0b2d78a8..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-backup.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Backup -menuTitle: List Backup -weight: 8 ---- -## oasisctl list backup - -A list command for various backup resources - -``` -oasisctl list backup [flags] -``` - -## Options -``` - -h, --help help for backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list backup policies](list-backup-policies.md) - List backup policies - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-backups.md b/site/content/3.11/arangograph/oasisctl/list/list-backups.md deleted file mode 100644 index ace03c781e..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-backups.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Backups -menuTitle: List Backups -weight: 10 ---- -## oasisctl list backups - -List backups - -``` -oasisctl list backups [flags] -``` - -## Options -``` - --deployment-id string The ID of the deployment to list backups for - --from string Request backups that are created at or after this timestamp - -h, --help help for backups - --to string Request backups that are created before this timestamp -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-cacertificates.md b/site/content/3.11/arangograph/oasisctl/list/list-cacertificates.md deleted file mode 100644 index 903063bb34..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-cacertificates.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List CA Certificates -menuTitle: List CA Certificates -weight: 11 ---- -## oasisctl list cacertificates - -List all CA certificates of the given project - -``` -oasisctl list cacertificates [flags] -``` - -## Options -``` - -h, --help help for cacertificates - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-cpusizes.md b/site/content/3.11/arangograph/oasisctl/list/list-cpusizes.md deleted file mode 100644 index 85188eac3b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-cpusizes.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List CPU Sizes -menuTitle: List CPU Sizes -weight: 12 ---- -## oasisctl list cpusizes - -List CPU sizes - -``` -oasisctl list cpusizes [flags] -``` - -## Options -``` - -h, --help help for cpusizes - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --provider-id string Identifier of the provider -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-deployments.md b/site/content/3.11/arangograph/oasisctl/list/list-deployments.md deleted file mode 100644 index 66b3d739d2..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-deployments.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Deployments -menuTitle: List Deployments -weight: 13 ---- -## oasisctl list deployments - -List all deployments of the given project - -``` -oasisctl list deployments [flags] -``` - -## Options -``` - -h, --help help for deployments - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-diskperformances.md b/site/content/3.11/arangograph/oasisctl/list/list-diskperformances.md deleted file mode 100644 index ddbd5714c0..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-diskperformances.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl List Disk Performances -menuTitle: List Disk Performances -weight: 14 ---- -## oasisctl list diskperformances - -List disk performances - -``` -oasisctl list diskperformances [flags] -``` - -## Options -``` - --dbserver-disk-size int32 The disk size of DB-Servers (GiB) (default 32) - -h, --help help for diskperformances - --node-size-id string Identifier of the node size - -o, --organization-id string Identifier of the organization - --provider-id string Identifier of the provider - -r, --region-id string Identifier of the region -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-effective-permissions.md b/site/content/3.11/arangograph/oasisctl/list/list-effective-permissions.md deleted file mode 100644 index 394cc1006e..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-effective-permissions.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Effective Permissions -menuTitle: List Effective Permissions -weight: 16 ---- -## oasisctl list effective permissions - -List the effective permissions, the authenticated user has for a given URL - -``` -oasisctl list effective permissions [flags] -``` - -## Options -``` - -h, --help help for permissions - -u, --url string URL of resource to get effective permissions for -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list effective](list-effective.md) - List effective information - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-effective.md b/site/content/3.11/arangograph/oasisctl/list/list-effective.md deleted file mode 100644 index 431f601dc1..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-effective.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Effective -menuTitle: List Effective -weight: 15 ---- -## oasisctl list effective - -List effective information - -``` -oasisctl list effective [flags] -``` - -## Options -``` - -h, --help help for effective -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list effective permissions](list-effective-permissions.md) - List the effective permissions, the authenticated user has for a given URL - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-example-installations.md b/site/content/3.11/arangograph/oasisctl/list/list-example-installations.md deleted file mode 100644 index 5a9167f5b9..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-example-installations.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Example Installations -menuTitle: List Example Installations -weight: 18 ---- -## oasisctl list example installations - -List all example dataset installations for a deployment - -``` -oasisctl list example installations [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to list installations for - -h, --help help for installations - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list example](list-example.md) - List example ... - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-example.md b/site/content/3.11/arangograph/oasisctl/list/list-example.md deleted file mode 100644 index e389b299c2..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-example.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Example -menuTitle: List Example -weight: 17 ---- -## oasisctl list example - -List example ... - -``` -oasisctl list example [flags] -``` - -## Options -``` - -h, --help help for example -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list example installations](list-example-installations.md) - List all example dataset installations for a deployment - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-examples.md b/site/content/3.11/arangograph/oasisctl/list/list-examples.md deleted file mode 100644 index 1cc1d11b86..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-examples.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Examples -menuTitle: List Examples -weight: 19 ---- -## oasisctl list examples - -List all example datasets - -``` -oasisctl list examples [flags] -``` - -## Options -``` - -h, --help help for examples - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-group-members.md b/site/content/3.11/arangograph/oasisctl/list/list-group-members.md deleted file mode 100644 index 6bc87e0b73..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-group-members.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Group Members -menuTitle: List Group Members -weight: 21 ---- -## oasisctl list group members - -List members of a group the authenticated user is a member of - -``` -oasisctl list group members [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group - -h, --help help for members - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list group](list-group.md) - List group resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-group.md b/site/content/3.11/arangograph/oasisctl/list/list-group.md deleted file mode 100644 index 28f5caa79d..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-group.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Group -menuTitle: List Group -weight: 20 ---- -## oasisctl list group - -List group resources - -``` -oasisctl list group [flags] -``` - -## Options -``` - -h, --help help for group -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list group members](list-group-members.md) - List members of a group the authenticated user is a member of - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-groups.md b/site/content/3.11/arangograph/oasisctl/list/list-groups.md deleted file mode 100644 index 8908ae0fb3..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-groups.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Groups -menuTitle: List Groups -weight: 22 ---- -## oasisctl list groups - -List all groups of the given organization - -``` -oasisctl list groups [flags] -``` - -## Options -``` - -h, --help help for groups - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-ipallowlists.md b/site/content/3.11/arangograph/oasisctl/list/list-ipallowlists.md deleted file mode 100644 index 33ef91495d..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-ipallowlists.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List IP Allowlists -menuTitle: List IP Allowlists -weight: 23 ---- -## oasisctl list ipallowlists - -List all IP allowlists of the given project - -``` -oasisctl list ipallowlists [flags] -``` - -## Options -``` - -h, --help help for ipallowlists - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-metrics-tokens.md b/site/content/3.11/arangograph/oasisctl/list/list-metrics-tokens.md deleted file mode 100644 index ce1713add8..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-metrics-tokens.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Metrics Tokens -menuTitle: List Metrics Tokens -weight: 25 ---- -## oasisctl list metrics tokens - -List all metrics tokens of the given deployment - -``` -oasisctl list metrics tokens [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for tokens - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list metrics](list-metrics.md) - List metrics resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-metrics.md b/site/content/3.11/arangograph/oasisctl/list/list-metrics.md deleted file mode 100644 index fe3a321be3..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Metrics -menuTitle: List Metrics -weight: 24 ---- -## oasisctl list metrics - -List metrics resources - -``` -oasisctl list metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list metrics tokens](list-metrics-tokens.md) - List all metrics tokens of the given deployment - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-nodesizes.md b/site/content/3.11/arangograph/oasisctl/list/list-nodesizes.md deleted file mode 100644 index 60c0bc9d56..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-nodesizes.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl List Node Sizes -menuTitle: List Node Sizes -weight: 26 ---- -## oasisctl list nodesizes - -List node sizes - -``` -oasisctl list nodesizes [flags] -``` - -## Options -``` - -h, --help help for nodesizes - --model string Identifier of the model (default "oneshard") - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --provider-id string Identifier of the provider - -r, --region-id string Identifier of the region -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-notebookmodels.md b/site/content/3.11/arangograph/oasisctl/list/list-notebookmodels.md deleted file mode 100644 index cdca9cb6a5..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-notebookmodels.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Notebook Models -menuTitle: List Notebook Models -weight: 27 ---- -## oasisctl list notebookmodels - -List notebook models - -``` -oasisctl list notebookmodels [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment that the notebook has to run next to - -h, --help help for notebookmodels - -o, --organization-id string Identifier of the organization that deployment is in - -p, --project-id string Identifier of the project that deployment is in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-notebooks.md b/site/content/3.11/arangograph/oasisctl/list/list-notebooks.md deleted file mode 100644 index 29aa77467f..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-notebooks.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Notebooks -menuTitle: List Notebooks -weight: 28 ---- -## oasisctl list notebooks - -List notebooks - -``` -oasisctl list notebooks [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment that the notebooks run next to - -h, --help help for notebooks - -o, --organization-id string Identifier of the organization that has notebooks - -p, --project-id string Identifier of the project that has notebooks -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-organization-invites.md b/site/content/3.11/arangograph/oasisctl/list/list-organization-invites.md deleted file mode 100644 index d3fbe58668..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-organization-invites.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Organization Invites -menuTitle: List Organization Invites -weight: 30 ---- -## oasisctl list organization invites - -List invites of an organization the authenticated user is a member of - -``` -oasisctl list organization invites [flags] -``` - -## Options -``` - -h, --help help for invites - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list organization](list-organization.md) - List organization resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-organization-members.md b/site/content/3.11/arangograph/oasisctl/list/list-organization-members.md deleted file mode 100644 index f143d66886..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-organization-members.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Organization Members -menuTitle: List Organization Members -weight: 31 ---- -## oasisctl list organization members - -List members of an organization the authenticated user is a member of - -``` -oasisctl list organization members [flags] -``` - -## Options -``` - -h, --help help for members - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list organization](list-organization.md) - List organization resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-organization.md b/site/content/3.11/arangograph/oasisctl/list/list-organization.md deleted file mode 100644 index c41e4a9750..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-organization.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Organization -menuTitle: List Organization -weight: 29 ---- -## oasisctl list organization - -List organization resources - -``` -oasisctl list organization [flags] -``` - -## Options -``` - -h, --help help for organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list organization invites](list-organization-invites.md) - List invites of an organization the authenticated user is a member of -* [oasisctl list organization members](list-organization-members.md) - List members of an organization the authenticated user is a member of - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-organizations.md b/site/content/3.11/arangograph/oasisctl/list/list-organizations.md deleted file mode 100644 index 7cde4a6da1..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-organizations.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl List Organizations -menuTitle: List Organizations -weight: 32 ---- -## oasisctl list organizations - -List all organizations the authenticated user is a member of - -``` -oasisctl list organizations [flags] -``` - -## Options -``` - -h, --help help for organizations -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-permissions.md b/site/content/3.11/arangograph/oasisctl/list/list-permissions.md deleted file mode 100644 index db4c2bd43c..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-permissions.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl List Permissions -menuTitle: List Permissions -weight: 33 ---- -## oasisctl list permissions - -List the known permissions - -``` -oasisctl list permissions [flags] -``` - -## Options -``` - -h, --help help for permissions -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-projects.md b/site/content/3.11/arangograph/oasisctl/list/list-projects.md deleted file mode 100644 index 959e80a2fa..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-projects.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Projects -menuTitle: List Projects -weight: 34 ---- -## oasisctl list projects - -List all projects of the given organization - -``` -oasisctl list projects [flags] -``` - -## Options -``` - -h, --help help for projects - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-providers.md b/site/content/3.11/arangograph/oasisctl/list/list-providers.md deleted file mode 100644 index 1b9c90f744..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-providers.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Providers -menuTitle: List Providers -weight: 35 ---- -## oasisctl list providers - -List all providers the authenticated user has access to - -``` -oasisctl list providers [flags] -``` - -## Options -``` - -h, --help help for providers - -o, --organization-id string Optional Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-regions.md b/site/content/3.11/arangograph/oasisctl/list/list-regions.md deleted file mode 100644 index 083b85a4a5..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-regions.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Regions -menuTitle: List Regions -weight: 36 ---- -## oasisctl list regions - -List all regions of the given provider - -``` -oasisctl list regions [flags] -``` - -## Options -``` - -h, --help help for regions - -o, --organization-id string Optional Identifier of the organization - -p, --provider-id string Identifier of the provider -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-roles.md b/site/content/3.11/arangograph/oasisctl/list/list-roles.md deleted file mode 100644 index ffa2a3ee89..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-roles.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Roles -menuTitle: List Roles -weight: 37 ---- -## oasisctl list roles - -List all roles of the given organization - -``` -oasisctl list roles [flags] -``` - -## Options -``` - -h, --help help for roles - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/list/list-servers.md b/site/content/3.11/arangograph/oasisctl/list/list-servers.md deleted file mode 100644 index f1e3a5f636..0000000000 --- a/site/content/3.11/arangograph/oasisctl/list/list-servers.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl List Servers -menuTitle: List Servers -weight: 38 ---- -## oasisctl list servers - -List servers information - -``` -oasisctl list servers [flags] -``` - -## Options -``` - -h, --help help for servers -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.11/arangograph/oasisctl/lock/_index.md b/site/content/3.11/arangograph/oasisctl/lock/_index.md deleted file mode 100644 index 1b432aa982..0000000000 --- a/site/content/3.11/arangograph/oasisctl/lock/_index.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Lock -menuTitle: Lock -weight: 16 ---- -## oasisctl lock - -Lock resources - -``` -oasisctl lock [flags] -``` - -## Options -``` - -h, --help help for lock -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl lock cacertificate](lock-cacertificate.md) - Lock a CA certificate, so it cannot be deleted -* [oasisctl lock deployment](lock-deployment.md) - Lock a deployment, so it cannot be deleted -* [oasisctl lock ipallowlist](lock-ipallowlist.md) - Lock an IP allowlist, so it cannot be deleted -* [oasisctl lock organization](lock-organization.md) - Lock an organization, so it cannot be deleted -* [oasisctl lock policy](lock-policy.md) - Lock a backup policy -* [oasisctl lock project](lock-project.md) - Lock a project, so it cannot be deleted - diff --git a/site/content/3.11/arangograph/oasisctl/lock/lock-cacertificate.md b/site/content/3.11/arangograph/oasisctl/lock/lock-cacertificate.md deleted file mode 100644 index 274471190b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/lock/lock-cacertificate.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Lock CA Certificate -menuTitle: Lock CA Certificate -weight: 1 ---- -## oasisctl lock cacertificate - -Lock a CA certificate, so it cannot be deleted - -``` -oasisctl lock cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - -h, --help help for cacertificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.11/arangograph/oasisctl/lock/lock-deployment.md b/site/content/3.11/arangograph/oasisctl/lock/lock-deployment.md deleted file mode 100644 index 3a64c29d17..0000000000 --- a/site/content/3.11/arangograph/oasisctl/lock/lock-deployment.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Lock Deployment -menuTitle: Lock Deployment -weight: 2 ---- -## oasisctl lock deployment - -Lock a deployment, so it cannot be deleted - -``` -oasisctl lock deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.11/arangograph/oasisctl/lock/lock-ipallowlist.md b/site/content/3.11/arangograph/oasisctl/lock/lock-ipallowlist.md deleted file mode 100644 index 9f4460b2e2..0000000000 --- a/site/content/3.11/arangograph/oasisctl/lock/lock-ipallowlist.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Lock IP Allowlist -menuTitle: Lock IP Allowlist -weight: 3 ---- -## oasisctl lock ipallowlist - -Lock an IP allowlist, so it cannot be deleted - -``` -oasisctl lock ipallowlist [flags] -``` - -## Options -``` - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.11/arangograph/oasisctl/lock/lock-organization.md b/site/content/3.11/arangograph/oasisctl/lock/lock-organization.md deleted file mode 100644 index e65abeea81..0000000000 --- a/site/content/3.11/arangograph/oasisctl/lock/lock-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Lock Organization -menuTitle: Lock Organization -weight: 4 ---- -## oasisctl lock organization - -Lock an organization, so it cannot be deleted - -``` -oasisctl lock organization [flags] -``` - -## Options -``` - -h, --help help for organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.11/arangograph/oasisctl/lock/lock-policy.md b/site/content/3.11/arangograph/oasisctl/lock/lock-policy.md deleted file mode 100644 index 8b70ed3617..0000000000 --- a/site/content/3.11/arangograph/oasisctl/lock/lock-policy.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Lock Policy -menuTitle: Lock Policy -weight: 5 ---- -## oasisctl lock policy - -Lock a backup policy - -``` -oasisctl lock policy [flags] -``` - -## Options -``` - -d, --backup-policy-id string Identifier of the backup policy - -h, --help help for policy -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.11/arangograph/oasisctl/lock/lock-project.md b/site/content/3.11/arangograph/oasisctl/lock/lock-project.md deleted file mode 100644 index f71ac58f82..0000000000 --- a/site/content/3.11/arangograph/oasisctl/lock/lock-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Lock Project -menuTitle: Lock Project -weight: 6 ---- -## oasisctl lock project - -Lock a project, so it cannot be deleted - -``` -oasisctl lock project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.11/arangograph/oasisctl/login.md b/site/content/3.11/arangograph/oasisctl/login.md deleted file mode 100644 index a507d3e942..0000000000 --- a/site/content/3.11/arangograph/oasisctl/login.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Oasisctl Login -menuTitle: Login -weight: 17 ---- -## oasisctl login - -Login to ArangoDB Oasis using an API key - -## Synopsis -To authenticate in a script environment, run: - - export OASIS_TOKEN=$(oasisctl login --key-id=<your-key-id> --key-secret=<your-key-secret>) - - -``` -oasisctl login [flags] -``` - -## Options -``` - -h, --help help for login - -i, --key-id string API key identifier - -s, --key-secret string API key secret -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.11/arangograph/oasisctl/logs.md b/site/content/3.11/arangograph/oasisctl/logs.md deleted file mode 100644 index 71f2555f94..0000000000 --- a/site/content/3.11/arangograph/oasisctl/logs.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Oasisctl Logs -menuTitle: Logs -weight: 18 ---- -## oasisctl logs - -Get logs of the servers of a deployment the authenticated user has access to - -``` -oasisctl logs [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - --end string End fetching logs at this timestamp (pass timestamp or duration before now) - --format string Formatting of the log output. It can be one of two: text, json. Text is the default value. (default "text") - -h, --help help for logs - -l, --limit int Limit the number of log lines - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -r, --role string Limit logs to servers with given role only (agents|coordinators|dbservers) - --start string Start fetching logs from this timestamp (pass timestamp or duration before now) -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.11/arangograph/oasisctl/options.md b/site/content/3.11/arangograph/oasisctl/options.md deleted file mode 100644 index 75823ecb85..0000000000 --- a/site/content/3.11/arangograph/oasisctl/options.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -description: Command-line client tool for managing ArangoGraph -title: ArangoGraph Shell oasisctl -menuTitle: Options -weight: 1 ---- -## oasisctl - -ArangoGraph Insights Platform - -## Synopsis -ArangoGraph Insights Platform (formerly called Oasis): The Managed Cloud for ArangoDB - -``` -oasisctl [flags] -``` - -## Options -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - -h, --help help for oasisctl - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl accept](accept/_index.md) - Accept invites -* [oasisctl add](add/_index.md) - Add resources -* [oasisctl auditlog](auditlog/_index.md) - AuditLog resources -* [oasisctl backup](backup/_index.md) - Backup commands -* [oasisctl clone](clone/_index.md) - Clone resources -* [oasisctl completion](completion.md) - Generates bash completion scripts -* [oasisctl create](create/_index.md) - Create resources -* [oasisctl delete](delete/_index.md) - Delete resources -* [oasisctl disable](disable/_index.md) - Disable some settings related to deployment -* [oasisctl enable](enable/_index.md) - Enable some settings related to deployment -* [oasisctl generate-docs](generate-docs.md) - Generate output -* [oasisctl get](get/_index.md) - Get information -* [oasisctl import](import.md) - Import data from a local database or from another remote database into an Oasis deployment. -* [oasisctl list](list/_index.md) - List resources -* [oasisctl lock](lock/_index.md) - Lock resources -* [oasisctl login](login.md) - Login to ArangoDB Oasis using an API key -* [oasisctl logs](logs.md) - Get logs of the servers of a deployment the authenticated user has access to -* [oasisctl pause](pause/_index.md) - Pause resources -* [oasisctl rebalance](rebalance/_index.md) - Rebalance resources -* [oasisctl reject](reject/_index.md) - Reject invites -* [oasisctl renew](renew/_index.md) - Renew keys & tokens -* [oasisctl resume](resume/_index.md) - Resume resources -* [oasisctl revoke](revoke/_index.md) - Revoke keys & tokens -* [oasisctl rotate](rotate/_index.md) - Rotate resources -* [oasisctl top](top.md) - Show the most important server metrics -* [oasisctl unlock](unlock/_index.md) - Unlock resources -* [oasisctl update](update/_index.md) - Update resources -* [oasisctl upgrade](upgrade.md) - Upgrade Oasisctl tool -* [oasisctl version](version.md) - Show the current version of this tool -* [oasisctl wait](wait/_index.md) - Wait for a status change - diff --git a/site/content/3.11/arangograph/oasisctl/pause/_index.md b/site/content/3.11/arangograph/oasisctl/pause/_index.md deleted file mode 100644 index ce02e840c5..0000000000 --- a/site/content/3.11/arangograph/oasisctl/pause/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Pause -menuTitle: Pause -weight: 19 ---- -## oasisctl pause - -Pause resources - -``` -oasisctl pause [flags] -``` - -## Options -``` - -h, --help help for pause -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl pause notebook](pause-notebook.md) - Pause a notebook - diff --git a/site/content/3.11/arangograph/oasisctl/pause/pause-notebook.md b/site/content/3.11/arangograph/oasisctl/pause/pause-notebook.md deleted file mode 100644 index 0db646d81b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/pause/pause-notebook.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Pause Notebook -menuTitle: Pause Notebook -weight: 1 ---- -## oasisctl pause notebook - -Pause a notebook - -``` -oasisctl pause notebook [flags] -``` - -## Options -``` - -h, --help help for notebook - -n, --notebook-id string Identifier of the notebook -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl pause](_index.md) - Pause resources - diff --git a/site/content/3.11/arangograph/oasisctl/rebalance/_index.md b/site/content/3.11/arangograph/oasisctl/rebalance/_index.md deleted file mode 100644 index c1532b7f91..0000000000 --- a/site/content/3.11/arangograph/oasisctl/rebalance/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rebalance -menuTitle: Rebalance -weight: 20 ---- -## oasisctl rebalance - -Rebalance resources - -``` -oasisctl rebalance [flags] -``` - -## Options -``` - -h, --help help for rebalance -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl rebalance deployment](rebalance-deployment.md) - Rebalance deployment resources - diff --git a/site/content/3.11/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md b/site/content/3.11/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md deleted file mode 100644 index 706b6339e9..0000000000 --- a/site/content/3.11/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rebalance Deployment Shards -menuTitle: Rebalance Deployment Shards -weight: 2 ---- -## oasisctl rebalance deployment shards - -Rebalance shards of a deployment - -``` -oasisctl rebalance deployment shards [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for shards -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl rebalance deployment](rebalance-deployment.md) - Rebalance deployment resources - diff --git a/site/content/3.11/arangograph/oasisctl/rebalance/rebalance-deployment.md b/site/content/3.11/arangograph/oasisctl/rebalance/rebalance-deployment.md deleted file mode 100644 index 7759314ec5..0000000000 --- a/site/content/3.11/arangograph/oasisctl/rebalance/rebalance-deployment.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rebalance Deployment -menuTitle: Rebalance Deployment -weight: 1 ---- -## oasisctl rebalance deployment - -Rebalance deployment resources - -``` -oasisctl rebalance deployment [flags] -``` - -## Options -``` - -h, --help help for deployment -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl rebalance](_index.md) - Rebalance resources -* [oasisctl rebalance deployment shards](rebalance-deployment-shards.md) - Rebalance shards of a deployment - diff --git a/site/content/3.11/arangograph/oasisctl/reject/_index.md b/site/content/3.11/arangograph/oasisctl/reject/_index.md deleted file mode 100644 index 69cff60ece..0000000000 --- a/site/content/3.11/arangograph/oasisctl/reject/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Reject -menuTitle: Reject -weight: 21 ---- -## oasisctl reject - -Reject invites - -``` -oasisctl reject [flags] -``` - -## Options -``` - -h, --help help for reject -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl reject organization](reject-organization.md) - Reject organization related invites - diff --git a/site/content/3.11/arangograph/oasisctl/reject/reject-organization-invite.md b/site/content/3.11/arangograph/oasisctl/reject/reject-organization-invite.md deleted file mode 100644 index d43ecfca52..0000000000 --- a/site/content/3.11/arangograph/oasisctl/reject/reject-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Reject Organization Invite -menuTitle: Reject Organization Invite -weight: 2 ---- -## oasisctl reject organization invite - -Reject an organization invite the authenticated user has access to - -``` -oasisctl reject organization invite [flags] -``` - -## Options -``` - -h, --help help for invite - -i, --invite-id string Identifier of the organization invite - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl reject organization](reject-organization.md) - Reject organization related invites - diff --git a/site/content/3.11/arangograph/oasisctl/reject/reject-organization.md b/site/content/3.11/arangograph/oasisctl/reject/reject-organization.md deleted file mode 100644 index c688b02cd1..0000000000 --- a/site/content/3.11/arangograph/oasisctl/reject/reject-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Reject Organization -menuTitle: Reject Organization -weight: 1 ---- -## oasisctl reject organization - -Reject organization related invites - -``` -oasisctl reject organization [flags] -``` - -## Options -``` - -h, --help help for organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl reject](_index.md) - Reject invites -* [oasisctl reject organization invite](reject-organization-invite.md) - Reject an organization invite the authenticated user has access to - diff --git a/site/content/3.11/arangograph/oasisctl/renew/_index.md b/site/content/3.11/arangograph/oasisctl/renew/_index.md deleted file mode 100644 index b140a835de..0000000000 --- a/site/content/3.11/arangograph/oasisctl/renew/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Renew -menuTitle: Renew -weight: 22 ---- -## oasisctl renew - -Renew keys & tokens - -``` -oasisctl renew [flags] -``` - -## Options -``` - -h, --help help for renew -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl renew apikey](renew-apikey.md) - Renew API keys & tokens - diff --git a/site/content/3.11/arangograph/oasisctl/renew/renew-apikey-token.md b/site/content/3.11/arangograph/oasisctl/renew/renew-apikey-token.md deleted file mode 100644 index e6a1798243..0000000000 --- a/site/content/3.11/arangograph/oasisctl/renew/renew-apikey-token.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Renew API Key Token -menuTitle: Renew API Key Token -weight: 2 ---- -## oasisctl renew apikey token - -Renew an API key token - -## Synopsis -Renew the token (resulting from API key authentication) - -``` -oasisctl renew apikey token [flags] -``` - -## Options -``` - -h, --help help for token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl renew apikey](renew-apikey.md) - Renew API keys & tokens - diff --git a/site/content/3.11/arangograph/oasisctl/renew/renew-apikey.md b/site/content/3.11/arangograph/oasisctl/renew/renew-apikey.md deleted file mode 100644 index 14c1b7ec4d..0000000000 --- a/site/content/3.11/arangograph/oasisctl/renew/renew-apikey.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Renew API Key -menuTitle: Renew API Key -weight: 1 ---- -## oasisctl renew apikey - -Renew API keys & tokens - -``` -oasisctl renew apikey [flags] -``` - -## Options -``` - -h, --help help for apikey -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl renew](_index.md) - Renew keys & tokens -* [oasisctl renew apikey token](renew-apikey-token.md) - Renew an API key token - diff --git a/site/content/3.11/arangograph/oasisctl/resume/_index.md b/site/content/3.11/arangograph/oasisctl/resume/_index.md deleted file mode 100644 index 78485175c1..0000000000 --- a/site/content/3.11/arangograph/oasisctl/resume/_index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Resume -menuTitle: Resume -weight: 23 ---- -## oasisctl resume - -Resume resources - -``` -oasisctl resume [flags] -``` - -## Options -``` - -h, --help help for resume -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl resume deployment](resume-deployment.md) - Resume a paused deployment the authenticated user has access to -* [oasisctl resume notebook](resume-notebook.md) - Resume a notebook - diff --git a/site/content/3.11/arangograph/oasisctl/resume/resume-deployment.md b/site/content/3.11/arangograph/oasisctl/resume/resume-deployment.md deleted file mode 100644 index 7cbc18ef00..0000000000 --- a/site/content/3.11/arangograph/oasisctl/resume/resume-deployment.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Resume Deployment -menuTitle: Resume Deployment -weight: 1 ---- -## oasisctl resume deployment - -Resume a paused deployment the authenticated user has access to - -``` -oasisctl resume deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl resume](_index.md) - Resume resources - diff --git a/site/content/3.11/arangograph/oasisctl/resume/resume-notebook.md b/site/content/3.11/arangograph/oasisctl/resume/resume-notebook.md deleted file mode 100644 index 17add47562..0000000000 --- a/site/content/3.11/arangograph/oasisctl/resume/resume-notebook.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Resume Notebook -menuTitle: Resume Notebook -weight: 2 ---- -## oasisctl resume notebook - -Resume a notebook - -``` -oasisctl resume notebook [flags] -``` - -## Options -``` - -h, --help help for notebook - -n, --notebook-id string Identifier of the notebook -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl resume](_index.md) - Resume resources - diff --git a/site/content/3.11/arangograph/oasisctl/revoke/_index.md b/site/content/3.11/arangograph/oasisctl/revoke/_index.md deleted file mode 100644 index 80ad7af060..0000000000 --- a/site/content/3.11/arangograph/oasisctl/revoke/_index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Revoke -menuTitle: Revoke -weight: 24 ---- -## oasisctl revoke - -Revoke keys & tokens - -``` -oasisctl revoke [flags] -``` - -## Options -``` - -h, --help help for revoke -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl revoke apikey](revoke-apikey.md) - Revoke an API key with given identifier -* [oasisctl revoke metrics](revoke-metrics.md) - Revoke keys & tokens - diff --git a/site/content/3.11/arangograph/oasisctl/revoke/revoke-apikey-token.md b/site/content/3.11/arangograph/oasisctl/revoke/revoke-apikey-token.md deleted file mode 100644 index 795b5e5605..0000000000 --- a/site/content/3.11/arangograph/oasisctl/revoke/revoke-apikey-token.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Revoke API Key Token -menuTitle: Revoke API Key Token -weight: 2 ---- -## oasisctl revoke apikey token - -Revoke an API key token - -## Synopsis -Revoke the token (resulting from API key authentication) - -``` -oasisctl revoke apikey token [flags] -``` - -## Options -``` - -h, --help help for token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl revoke apikey](revoke-apikey.md) - Revoke an API key with given identifier - diff --git a/site/content/3.11/arangograph/oasisctl/revoke/revoke-apikey.md b/site/content/3.11/arangograph/oasisctl/revoke/revoke-apikey.md deleted file mode 100644 index 5c15ef927a..0000000000 --- a/site/content/3.11/arangograph/oasisctl/revoke/revoke-apikey.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Revoke API Key -menuTitle: Revoke API Key -weight: 1 ---- -## oasisctl revoke apikey - -Revoke an API key with given identifier - -``` -oasisctl revoke apikey [flags] -``` - -## Options -``` - -i, --apikey-id string Identifier of the API key to revoke - -h, --help help for apikey -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl revoke](_index.md) - Revoke keys & tokens -* [oasisctl revoke apikey token](revoke-apikey-token.md) - Revoke an API key token - diff --git a/site/content/3.11/arangograph/oasisctl/revoke/revoke-metrics-token.md b/site/content/3.11/arangograph/oasisctl/revoke/revoke-metrics-token.md deleted file mode 100644 index 0876f21606..0000000000 --- a/site/content/3.11/arangograph/oasisctl/revoke/revoke-metrics-token.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Revoke Metrics Token -menuTitle: Revoke Metrics Token -weight: 4 ---- -## oasisctl revoke metrics token - -Revoke a metrics token for a deployment - -``` -oasisctl revoke metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for token - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --token-id string Identifier of the metrics token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl revoke metrics](revoke-metrics.md) - Revoke keys & tokens - diff --git a/site/content/3.11/arangograph/oasisctl/revoke/revoke-metrics.md b/site/content/3.11/arangograph/oasisctl/revoke/revoke-metrics.md deleted file mode 100644 index 638a17df00..0000000000 --- a/site/content/3.11/arangograph/oasisctl/revoke/revoke-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Revoke Metrics -menuTitle: Revoke Metrics -weight: 3 ---- -## oasisctl revoke metrics - -Revoke keys & tokens - -``` -oasisctl revoke metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl revoke](_index.md) - Revoke keys & tokens -* [oasisctl revoke metrics token](revoke-metrics-token.md) - Revoke a metrics token for a deployment - diff --git a/site/content/3.11/arangograph/oasisctl/rotate/_index.md b/site/content/3.11/arangograph/oasisctl/rotate/_index.md deleted file mode 100644 index e24096c868..0000000000 --- a/site/content/3.11/arangograph/oasisctl/rotate/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rotate -menuTitle: Rotate -weight: 25 ---- -## oasisctl rotate - -Rotate resources - -``` -oasisctl rotate [flags] -``` - -## Options -``` - -h, --help help for rotate -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl rotate deployment](rotate-deployment.md) - Rotate deployment resources - diff --git a/site/content/3.11/arangograph/oasisctl/rotate/rotate-deployment-server.md b/site/content/3.11/arangograph/oasisctl/rotate/rotate-deployment-server.md deleted file mode 100644 index 5d281d1ae4..0000000000 --- a/site/content/3.11/arangograph/oasisctl/rotate/rotate-deployment-server.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Rotate Deployment Server -menuTitle: Rotate Deployment Server -weight: 2 ---- -## oasisctl rotate deployment server - -Rotate a single server of a deployment - -``` -oasisctl rotate deployment server [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for server - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -s, --server-id strings Identifier of the deployment server -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl rotate deployment](rotate-deployment.md) - Rotate deployment resources - diff --git a/site/content/3.11/arangograph/oasisctl/rotate/rotate-deployment.md b/site/content/3.11/arangograph/oasisctl/rotate/rotate-deployment.md deleted file mode 100644 index de899d924d..0000000000 --- a/site/content/3.11/arangograph/oasisctl/rotate/rotate-deployment.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rotate Deployment -menuTitle: Rotate Deployment -weight: 1 ---- -## oasisctl rotate deployment - -Rotate deployment resources - -``` -oasisctl rotate deployment [flags] -``` - -## Options -``` - -h, --help help for deployment -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl rotate](_index.md) - Rotate resources -* [oasisctl rotate deployment server](rotate-deployment-server.md) - Rotate a single server of a deployment - diff --git a/site/content/3.11/arangograph/oasisctl/top.md b/site/content/3.11/arangograph/oasisctl/top.md deleted file mode 100644 index d89a83ebfe..0000000000 --- a/site/content/3.11/arangograph/oasisctl/top.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Top -menuTitle: Top -weight: 26 ---- -## oasisctl top - -Show the most important server metrics - -``` -oasisctl top [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for top - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.11/arangograph/oasisctl/unlock/_index.md b/site/content/3.11/arangograph/oasisctl/unlock/_index.md deleted file mode 100644 index 2c376ce6fd..0000000000 --- a/site/content/3.11/arangograph/oasisctl/unlock/_index.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Unlock -menuTitle: Unlock -weight: 27 ---- -## oasisctl unlock - -Unlock resources - -``` -oasisctl unlock [flags] -``` - -## Options -``` - -h, --help help for unlock -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl unlock cacertificate](unlock-cacertificate.md) - Unlock a CA certificate, so it can be deleted -* [oasisctl unlock deployment](unlock-deployment.md) - Unlock a deployment, so it can be deleted -* [oasisctl unlock ipallowlist](unlock-ipallowlist.md) - Unlock an IP allowlist, so it can be deleted -* [oasisctl unlock organization](unlock-organization.md) - Unlock an organization, so it can be deleted -* [oasisctl unlock policy](unlock-policy.md) - Unlock a backup policy -* [oasisctl unlock project](unlock-project.md) - Unlock a project, so it can be deleted - diff --git a/site/content/3.11/arangograph/oasisctl/unlock/unlock-cacertificate.md b/site/content/3.11/arangograph/oasisctl/unlock/unlock-cacertificate.md deleted file mode 100644 index 418fb91ae6..0000000000 --- a/site/content/3.11/arangograph/oasisctl/unlock/unlock-cacertificate.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Unlock CA Certificate -menuTitle: Unlock CA Certificate -weight: 1 ---- -## oasisctl unlock cacertificate - -Unlock a CA certificate, so it can be deleted - -``` -oasisctl unlock cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - -h, --help help for cacertificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.11/arangograph/oasisctl/unlock/unlock-deployment.md b/site/content/3.11/arangograph/oasisctl/unlock/unlock-deployment.md deleted file mode 100644 index 6d870921e6..0000000000 --- a/site/content/3.11/arangograph/oasisctl/unlock/unlock-deployment.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Unlock Deployment -menuTitle: Unlock Deployment -weight: 2 ---- -## oasisctl unlock deployment - -Unlock a deployment, so it can be deleted - -``` -oasisctl unlock deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.11/arangograph/oasisctl/unlock/unlock-ipallowlist.md b/site/content/3.11/arangograph/oasisctl/unlock/unlock-ipallowlist.md deleted file mode 100644 index 36f8fdbaed..0000000000 --- a/site/content/3.11/arangograph/oasisctl/unlock/unlock-ipallowlist.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Unlock IP Allowlist -menuTitle: Unlock IP Allowlist -weight: 3 ---- -## oasisctl unlock ipallowlist - -Unlock an IP allowlist, so it can be deleted - -``` -oasisctl unlock ipallowlist [flags] -``` - -## Options -``` - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.11/arangograph/oasisctl/unlock/unlock-organization.md b/site/content/3.11/arangograph/oasisctl/unlock/unlock-organization.md deleted file mode 100644 index bfc70efccd..0000000000 --- a/site/content/3.11/arangograph/oasisctl/unlock/unlock-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Unlock Organization -menuTitle: Unlock Organization -weight: 4 ---- -## oasisctl unlock organization - -Unlock an organization, so it can be deleted - -``` -oasisctl unlock organization [flags] -``` - -## Options -``` - -h, --help help for organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.11/arangograph/oasisctl/unlock/unlock-policy.md b/site/content/3.11/arangograph/oasisctl/unlock/unlock-policy.md deleted file mode 100644 index 2646b5af51..0000000000 --- a/site/content/3.11/arangograph/oasisctl/unlock/unlock-policy.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Unlock Policy -menuTitle: Unlock Policy -weight: 5 ---- -## oasisctl unlock policy - -Unlock a backup policy - -``` -oasisctl unlock policy [flags] -``` - -## Options -``` - -d, --backup-policy-id string Identifier of the backup policy - -h, --help help for policy -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.11/arangograph/oasisctl/unlock/unlock-project.md b/site/content/3.11/arangograph/oasisctl/unlock/unlock-project.md deleted file mode 100644 index 211e810283..0000000000 --- a/site/content/3.11/arangograph/oasisctl/unlock/unlock-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Unlock Project -menuTitle: Unlock Project -weight: 6 ---- -## oasisctl unlock project - -Unlock a project, so it can be deleted - -``` -oasisctl unlock project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.11/arangograph/oasisctl/update/_index.md b/site/content/3.11/arangograph/oasisctl/update/_index.md deleted file mode 100644 index 0d1501cbe5..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/_index.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Oasisctl Update -menuTitle: Update -weight: 28 ---- -## oasisctl update - -Update resources - -``` -oasisctl update [flags] -``` - -## Options -``` - -h, --help help for update -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl update auditlog](update-auditlog.md) - Update an auditlog -* [oasisctl update backup](update-backup.md) - Update a backup -* [oasisctl update cacertificate](update-cacertificate.md) - Update a CA certificate the authenticated user has access to -* [oasisctl update deployment](update-deployment.md) - Update a deployment the authenticated user has access to -* [oasisctl update group](update-group.md) - Update a group the authenticated user has access to -* [oasisctl update ipallowlist](update-ipallowlist.md) - Update an IP allowlist the authenticated user has access to -* [oasisctl update metrics](update-metrics.md) - Update metrics resources -* [oasisctl update notebook](update-notebook.md) - Update notebook -* [oasisctl update organization](update-organization.md) - Update an organization the authenticated user has access to -* [oasisctl update policy](update-policy.md) - Update a policy -* [oasisctl update private](update-private.md) - Update private resources -* [oasisctl update project](update-project.md) - Update a project the authenticated user has access to -* [oasisctl update role](update-role.md) - Update a role the authenticated user has access to - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-auditlog.md b/site/content/3.11/arangograph/oasisctl/update/update-auditlog.md deleted file mode 100644 index 8c92aa1c12..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-auditlog.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Update Audit Log -menuTitle: Update Audit Log -weight: 1 ---- -## oasisctl update auditlog - -Update an auditlog - -``` -oasisctl update auditlog [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog to update. - --default If set, this AuditLog is the default for the organization. - --description string Description of the audit log. - -h, --help help for auditlog - --name string Name of the audit log. - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-backup-policy.md b/site/content/3.11/arangograph/oasisctl/update/update-backup-policy.md deleted file mode 100644 index cad0d2417f..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-backup-policy.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Oasisctl Update Backup Policy -menuTitle: Update Backup Policy -weight: 3 ---- -## oasisctl update backup policy - -Update a backup policy - -``` -oasisctl update backup policy [flags] -``` - -## Options -``` - --additional-region-ids strings Add backup to the specified addition regions - -d, --backup-policy-id string Identifier of the backup policy - --day-of-the-month int32 Run the backup on the specified day of the month (1-31) (default 1) - --description string Description of the backup - --email-notification string Email notification setting (Never|FailureOnly|Always) - --every-interval-hours int32 Schedule should run with an interval of the specified hours (1-23) - --friday If set, a backup will be created on Fridays. Set to false explicitly to clear the flag. - -h, --help help for policy - --hours int32 Hours part of the time of day (0-23) - --minutes int32 Minutes part of the time of day (0-59) - --minutes-offset int32 Schedule should run with specific minutes offset (0-59) - --monday If set, a backup will be created on Mondays. Set to false explicitly to clear the flag. - --name string Name of the deployment - --paused The policy is paused. Set to false explicitly to clear the flag. - --retention-period int Backups created by this policy will be automatically deleted after the specified retention period. A value of 0 means that backup will never be deleted. - --saturday If set, a backup will be created on Saturdays. Set to false explicitly to clear the flag. - --schedule-type string Schedule of the policy (Hourly|Daily|Monthly) - --sunday If set, a backup will be created on Sundays. Set to false explicitly to clear the flag. - --thursday If set, a backup will be created on Thursdays. Set to false explicitly to clear the flag. - --time-zone string The time-zone this time of day applies to (empty means UTC). Names MUST be exactly as defined in RFC-822. (default "UTC") - --tuesday If set, a backup will be created on Tuesdays. Set to false explicitly to clear the flag. - --upload The backup should be uploaded. Set to false explicitly to clear the flag. - --wednesday If set, a backup will be created on Wednesdays. Set to false explicitly to clear the flag. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update backup](update-backup.md) - Update a backup - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-backup.md b/site/content/3.11/arangograph/oasisctl/update/update-backup.md deleted file mode 100644 index 9ce085b61b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-backup.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update Backup -menuTitle: Update Backup -weight: 2 ---- -## oasisctl update backup - -Update a backup - -``` -oasisctl update backup [flags] -``` - -## Options -``` - --auto-deleted-at int Time (h) until auto delete of the backup - -d, --backup-id string Identifier of the backup - --description string Description of the backup - -h, --help help for backup - --name string Name of the backup - --upload The backups should be uploaded -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update backup policy](update-backup-policy.md) - Update a backup policy - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-cacertificate.md b/site/content/3.11/arangograph/oasisctl/update/update-cacertificate.md deleted file mode 100644 index 1b97fe7a45..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-cacertificate.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update CA Certificate -menuTitle: Update CA Certificate -weight: 4 ---- -## oasisctl update cacertificate - -Update a CA certificate the authenticated user has access to - -``` -oasisctl update cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - --description string Description of the CA certificate - -h, --help help for cacertificate - --name string Name of the CA certificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --use-well-known-certificate Sets the usage of a well known certificate ie. Let's Encrypt -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-deployment.md b/site/content/3.11/arangograph/oasisctl/update/update-deployment.md deleted file mode 100644 index b7c36cace2..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-deployment.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Oasisctl Update Deployment -menuTitle: Update Deployment -weight: 5 ---- -## oasisctl update deployment - -Update a deployment the authenticated user has access to - -``` -oasisctl update deployment [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate to use for the deployment - --coordinator-memory-size int32 Set memory size of Coordinators for flexible deployments (GiB) (default 4) - --coordinators int32 Set number of Coordinators for flexible deployments (default 3) - --custom-image string Set a custom image to use for the deployment. Only available for selected customers. - --dbserver-disk-size int32 Set disk size of DB-Servers for flexible deployments (GiB) (default 32) - --dbserver-memory-size int32 Set memory size of DB-Servers for flexible deployments (GiB) (default 4) - --dbservers int32 Set number of DB-Servers for flexible deployments (default 3) - -d, --deployment-id string Identifier of the deployment - --description string Description of the deployment - --disable-foxx-authentication Disable authentication of requests to Foxx application. - --disk-performance-id string Set the disk performance to use for this deployment. - --drop-vst-support Drop VST protocol support to improve resilience. - -h, --help help for deployment - -i, --ipallowlist-id string Identifier of the IP allowlist to use for the deployment - --is-platform-authentication-enabled Enable platform authentication for deployment. - --max-node-disk-size int32 Set maximum disk size for nodes for autoscaler (GiB) - --model string Set model of the deployment (default "oneshard") - --name string Name of the deployment - --node-count int32 Set the number of desired nodes (default 3) - --node-disk-size int32 Set disk size for nodes (GiB) - --node-size-id string Set the node size to use for this deployment - --notification-email-address strings Set email address(-es) that will be used for notifications related to this deployment. - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --version string Version of ArangoDB to use for the deployment -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-group.md b/site/content/3.11/arangograph/oasisctl/update/update-group.md deleted file mode 100644 index 7021923d4c..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-group.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Update Group -menuTitle: Update Group -weight: 6 ---- -## oasisctl update group - -Update a group the authenticated user has access to - -``` -oasisctl update group [flags] -``` - -## Options -``` - --description string Description of the group - -g, --group-id string Identifier of the group - -h, --help help for group - --name string Name of the group - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-ipallowlist.md b/site/content/3.11/arangograph/oasisctl/update/update-ipallowlist.md deleted file mode 100644 index 089d41026c..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-ipallowlist.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Oasisctl Update IP Allowlist -menuTitle: Update IP Allowlist -weight: 7 ---- -## oasisctl update ipallowlist - -Update an IP allowlist the authenticated user has access to - -``` -oasisctl update ipallowlist [flags] -``` - -## Options -``` - --add-cidr-range strings List of CIDR ranges to add to the IP allowlist - --description string Description of the CA certificate - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - --name string Name of the CA certificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --remote-inspection-allowed If set, remote connectivity checks by the Oasis platform are allowed - --remove-cidr-range strings List of CIDR ranges to remove from the IP allowlist -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-metrics-token.md b/site/content/3.11/arangograph/oasisctl/update/update-metrics-token.md deleted file mode 100644 index 2ff4a301aa..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-metrics-token.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update Metrics Token -menuTitle: Update Metrics Token -weight: 9 ---- -## oasisctl update metrics token - -Update a metrics token - -``` -oasisctl update metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - --description string Description of the CA certificate - -h, --help help for token - --name string Name of the CA certificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --token-id string Identifier of the metrics token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update metrics](update-metrics.md) - Update metrics resources - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-metrics.md b/site/content/3.11/arangograph/oasisctl/update/update-metrics.md deleted file mode 100644 index d8fc683f1e..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Metrics -menuTitle: Update Metrics -weight: 8 ---- -## oasisctl update metrics - -Update metrics resources - -``` -oasisctl update metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update metrics token](update-metrics-token.md) - Update a metrics token - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-notebook.md b/site/content/3.11/arangograph/oasisctl/update/update-notebook.md deleted file mode 100644 index 2b6fee7bb0..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-notebook.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Update Notebook -menuTitle: Update Notebook -weight: 10 ---- -## oasisctl update notebook - -Update notebook - -``` -oasisctl update notebook [flags] -``` - -## Options -``` - -d, --description string Description of the notebook - -s, --disk-size int32 Notebook disk size in GiB - -h, --help help for notebook - --name string Name of the notebook - -n, --notebook-id string Identifier of the notebook - -m, --notebook-model string Identifier of the notebook model -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-organization-authentication-providers.md b/site/content/3.11/arangograph/oasisctl/update/update-organization-authentication-providers.md deleted file mode 100644 index 8d8d9be5de..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-organization-authentication-providers.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update Organization Authentication Providers -menuTitle: Update Organization Authentication Providers -weight: 13 ---- -## oasisctl update organization authentication providers - -Update allowed authentication providers for an organization the authenticated user has access to - -``` -oasisctl update organization authentication providers [flags] -``` - -## Options -``` - --enable-github If set, allow access from user accounts authentication through Github - --enable-google If set, allow access from user accounts authentication through Google - --enable-microsoft If set, allow access from user accounts authentication through Microsoft - --enable-sso If set, allow access from user accounts authentication through single sign on (sso) - --enable-username-password If set, allow access from user accounts authentication through username-password - -h, --help help for providers - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization authentication](update-organization-authentication.md) - Update authentication settings for an organization - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-organization-authentication.md b/site/content/3.11/arangograph/oasisctl/update/update-organization-authentication.md deleted file mode 100644 index 328b81b297..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-organization-authentication.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Organization Authentication -menuTitle: Update Organization Authentication -weight: 12 ---- -## oasisctl update organization authentication - -Update authentication settings for an organization - -``` -oasisctl update organization authentication [flags] -``` - -## Options -``` - -h, --help help for authentication -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization](update-organization.md) - Update an organization the authenticated user has access to -* [oasisctl update organization authentication providers](update-organization-authentication-providers.md) - Update allowed authentication providers for an organization the authenticated user has access to - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md b/site/content/3.11/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md deleted file mode 100644 index 6d860fa8d6..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Update Organization Email Domain Restrictions -menuTitle: Update Organization Email Domain Restrictions -weight: 16 ---- -## oasisctl update organization email domain restrictions - -Update which domain restrictions are placed on accessing a specific organization - -``` -oasisctl update organization email domain restrictions [flags] -``` - -## Options -``` - -d, --allowed-domain strings Allowed email domains for users of the organization - -h, --help help for restrictions - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization email domain](update-organization-email-domain.md) - Update email domain specific information for an organization - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-organization-email-domain.md b/site/content/3.11/arangograph/oasisctl/update/update-organization-email-domain.md deleted file mode 100644 index 57f79b6fbb..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-organization-email-domain.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Organization Email Domain -menuTitle: Update Organization Email Domain -weight: 15 ---- -## oasisctl update organization email domain - -Update email domain specific information for an organization - -``` -oasisctl update organization email domain [flags] -``` - -## Options -``` - -h, --help help for domain -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization email](update-organization-email.md) - Update email specific information for an organization -* [oasisctl update organization email domain restrictions](update-organization-email-domain-restrictions.md) - Update which domain restrictions are placed on accessing a specific organization - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-organization-email.md b/site/content/3.11/arangograph/oasisctl/update/update-organization-email.md deleted file mode 100644 index 89f05ed737..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-organization-email.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Organization Email -menuTitle: Update Organization Email -weight: 14 ---- -## oasisctl update organization email - -Update email specific information for an organization - -``` -oasisctl update organization email [flags] -``` - -## Options -``` - -h, --help help for email -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization](update-organization.md) - Update an organization the authenticated user has access to -* [oasisctl update organization email domain](update-organization-email-domain.md) - Update email domain specific information for an organization - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-organization.md b/site/content/3.11/arangograph/oasisctl/update/update-organization.md deleted file mode 100644 index 670d291842..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-organization.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Update Organization -menuTitle: Update Organization -weight: 11 ---- -## oasisctl update organization - -Update an organization the authenticated user has access to - -``` -oasisctl update organization [flags] -``` - -## Options -``` - --description string Description of the organization - -h, --help help for organization - --name string Name of the organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update organization authentication](update-organization-authentication.md) - Update authentication settings for an organization -* [oasisctl update organization email](update-organization-email.md) - Update email specific information for an organization - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-policy-add-binding.md b/site/content/3.11/arangograph/oasisctl/update/update-policy-add-binding.md deleted file mode 100644 index df89601244..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-policy-add-binding.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Update Policy Add Binding -menuTitle: Update Policy Add Binding -weight: 19 ---- -## oasisctl update policy add binding - -Add a role binding to a policy - -``` -oasisctl update policy add binding [flags] -``` - -## Options -``` - --group-id strings Identifiers of the groups to add bindings for - -h, --help help for binding - -r, --role-id string Identifier of the role to bind to - -u, --url string URL of the resource to update the policy for - --user-id strings Identifiers of the users to add bindings for -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update policy add](update-policy-add.md) - Add to a policy - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-policy-add.md b/site/content/3.11/arangograph/oasisctl/update/update-policy-add.md deleted file mode 100644 index 42e655fe7c..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-policy-add.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Policy Add -menuTitle: Update Policy Add -weight: 18 ---- -## oasisctl update policy add - -Add to a policy - -``` -oasisctl update policy add [flags] -``` - -## Options -``` - -h, --help help for add -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update policy](update-policy.md) - Update a policy -* [oasisctl update policy add binding](update-policy-add-binding.md) - Add a role binding to a policy - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-policy-delete-binding.md b/site/content/3.11/arangograph/oasisctl/update/update-policy-delete-binding.md deleted file mode 100644 index 602bc93e93..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-policy-delete-binding.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Update Policy Delete Binding -menuTitle: Update Policy Delete Binding -weight: 21 ---- -## oasisctl update policy delete binding - -Delete a role binding from a policy - -``` -oasisctl update policy delete binding [flags] -``` - -## Options -``` - --group-id strings Identifiers of the groups to delete bindings for - -h, --help help for binding - -r, --role-id string Identifier of the role to delete bind for - -u, --url string URL of the resource to update the policy for - --user-id strings Identifiers of the users to delete bindings for -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update policy delete](update-policy-delete.md) - Delete from a policy - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-policy-delete.md b/site/content/3.11/arangograph/oasisctl/update/update-policy-delete.md deleted file mode 100644 index dec2527590..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-policy-delete.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Policy Delete -menuTitle: Update Policy Delete -weight: 20 ---- -## oasisctl update policy delete - -Delete from a policy - -``` -oasisctl update policy delete [flags] -``` - -## Options -``` - -h, --help help for delete -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update policy](update-policy.md) - Update a policy -* [oasisctl update policy delete binding](update-policy-delete-binding.md) - Delete a role binding from a policy - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-policy.md b/site/content/3.11/arangograph/oasisctl/update/update-policy.md deleted file mode 100644 index 132c0b4123..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-policy.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Update Policy -menuTitle: Update Policy -weight: 17 ---- -## oasisctl update policy - -Update a policy - -``` -oasisctl update policy [flags] -``` - -## Options -``` - -h, --help help for policy -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update policy add](update-policy-add.md) - Add to a policy -* [oasisctl update policy delete](update-policy-delete.md) - Delete from a policy - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-private-endpoint-service.md b/site/content/3.11/arangograph/oasisctl/update/update-private-endpoint-service.md deleted file mode 100644 index 81aa0917f6..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-private-endpoint-service.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Oasisctl Update Private Endpoint Service -menuTitle: Update Private Endpoint Service -weight: 24 ---- -## oasisctl update private endpoint service - -Update a Private Endpoint Service attached to an existing deployment - -``` -oasisctl update private endpoint service [flags] -``` - -## Options -``` - --alternate-dns-name strings DNS names used for the deployment in the private network - --aws-principal strings List of AWS Principals from which a Private Endpoint can be created (Format: <AccountID>[/Role/<RoleName>|/User/<UserName>]) - --azure-client-subscription-id strings List of Azure subscription IDs from which a Private Endpoint can be created - -d, --deployment-id string Identifier of the deployment that the private endpoint service is connected to - --description string Description of the private endpoint service - --enable-private-dns Enable private DNS (applicable for AWS only) - --gcp-project strings List of GCP projects from which a Private Endpoint can be created - -h, --help help for service - --name string Name of the private endpoint service - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update private endpoint](update-private-endpoint.md) - - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-private-endpoint.md b/site/content/3.11/arangograph/oasisctl/update/update-private-endpoint.md deleted file mode 100644 index a66ead3924..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-private-endpoint.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Private Endpoint -menuTitle: Update Private Endpoint -weight: 23 ---- -## oasisctl update private endpoint - - - -``` -oasisctl update private endpoint [flags] -``` - -## Options -``` - -h, --help help for endpoint -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update private](update-private.md) - Update private resources -* [oasisctl update private endpoint service](update-private-endpoint-service.md) - Update a Private Endpoint Service attached to an existing deployment - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-private.md b/site/content/3.11/arangograph/oasisctl/update/update-private.md deleted file mode 100644 index 8c414612ac..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-private.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Private -menuTitle: Update Private -weight: 22 ---- -## oasisctl update private - -Update private resources - -``` -oasisctl update private [flags] -``` - -## Options -``` - -h, --help help for private -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update private endpoint](update-private-endpoint.md) - - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-project.md b/site/content/3.11/arangograph/oasisctl/update/update-project.md deleted file mode 100644 index 0965a3684e..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-project.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Update Project -menuTitle: Update Project -weight: 25 ---- -## oasisctl update project - -Update a project the authenticated user has access to - -``` -oasisctl update project [flags] -``` - -## Options -``` - --description string Description of the project - -h, --help help for project - --name string Name of the project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.11/arangograph/oasisctl/update/update-role.md b/site/content/3.11/arangograph/oasisctl/update/update-role.md deleted file mode 100644 index 58d7f2e8ab..0000000000 --- a/site/content/3.11/arangograph/oasisctl/update/update-role.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update Role -menuTitle: Update Role -weight: 26 ---- -## oasisctl update role - -Update a role the authenticated user has access to - -``` -oasisctl update role [flags] -``` - -## Options -``` - --add-permission strings Permissions to add to the role - --description string Description of the role - -h, --help help for role - --name string Name of the role - -o, --organization-id string Identifier of the organization - --remove-permission strings Permissions to remove from the role - -r, --role-id string Identifier of the role -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.11/arangograph/oasisctl/upgrade.md b/site/content/3.11/arangograph/oasisctl/upgrade.md deleted file mode 100644 index 8d77aa3ecf..0000000000 --- a/site/content/3.11/arangograph/oasisctl/upgrade.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Upgrade -menuTitle: Upgrade -weight: 29 ---- -## oasisctl upgrade - -Upgrade Oasisctl tool - -## Synopsis -Check the latest, compatible version and upgrade this tool to that. - -``` -oasisctl upgrade [flags] -``` - -## Options -``` - -d, --dry-run Do an upgrade without applying the version. - -f, --force Force an upgrade even if the versions match. - -h, --help help for upgrade -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.11/arangograph/oasisctl/version.md b/site/content/3.11/arangograph/oasisctl/version.md deleted file mode 100644 index e8e5ee7c8b..0000000000 --- a/site/content/3.11/arangograph/oasisctl/version.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl Version -menuTitle: Version -weight: 30 ---- -## oasisctl version - -Show the current version of this tool - -``` -oasisctl version [flags] -``` - -## Options -``` - -h, --help help for version -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.11/arangograph/oasisctl/wait/_index.md b/site/content/3.11/arangograph/oasisctl/wait/_index.md deleted file mode 100644 index 1ccac25259..0000000000 --- a/site/content/3.11/arangograph/oasisctl/wait/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Wait -menuTitle: Wait -weight: 31 ---- -## oasisctl wait - -Wait for a status change - -``` -oasisctl wait [flags] -``` - -## Options -``` - -h, --help help for wait -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl wait deployment](wait-deployment.md) - Wait for a deployment to reach the ready status - diff --git a/site/content/3.11/arangograph/oasisctl/wait/wait-deployment.md b/site/content/3.11/arangograph/oasisctl/wait/wait-deployment.md deleted file mode 100644 index ddc2c82d76..0000000000 --- a/site/content/3.11/arangograph/oasisctl/wait/wait-deployment.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Wait Deployment -menuTitle: Wait Deployment -weight: 1 ---- -## oasisctl wait deployment - -Wait for a deployment to reach the ready status - -``` -oasisctl wait deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --timeout duration How long to wait for the deployment to reach the ready status (default 20m0s) -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl wait](_index.md) - Wait for a status change - diff --git a/site/content/3.11/arangograph/organizations/_index.md b/site/content/3.11/arangograph/organizations/_index.md deleted file mode 100644 index 083b746dda..0000000000 --- a/site/content/3.11/arangograph/organizations/_index.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Organizations in ArangoGraph -menuTitle: Organizations -weight: 10 -description: >- - How to manage organizations and what type of packages ArangoGraph offers ---- -An ArangoGraph organizations is a container for projects. An organization -typically represents a (commercial) entity such as a company, a company division, -an institution, or a non-profit organization. - -**<u>Organizations</u> → Projects → Deployments** - -Users can be members of one or more organizations. However, you can only be a -member of one _Free-to-try_ tier organization at a time. - -## How to switch between my organizations - -1. The first entry in the main navigation (with a double arrow icon) indicates - the current organization. -2. Click it to bring up a dropdown menu to select another organization of which you - are a member. -3. The overview will open for the selected organization, showing the number of - projects, the tier and when it was created. - -![ArangoGraph Organization Switcher](../../../images/arangograph-organization-switcher.png) - -![ArangoGraph Organization Overview](../../../images/arangograph-organization-overview.png) - -## ArangoGraph Packages - -With the ArangoGraph Insights Platform, your organization can choose one of the -following packages. - -### Free Trial - -ArangoGraph comes with a free-to-try tier that lets you test ArangoGraph for -free for 14 days. You can get started quickly, without needing to enter a -credit card. - -The free trial gives you access to: -- One small deployment (4GB) in a region of your choice for 14 days -- Local backups -- One ArangoGraph Notebook for learning and data science - -After the trial period, your deployment will be deleted automatically. - -### On-Demand - -Add a payment method to gain access to ArangoGraph's full feature set. -Pay monthly via a credit card for what you actually use. - -This package unlocks all ArangoGraph functionality, including: -- Multiple and larger deployments -- Backups to cloud storage, with multi-region support -- Enhanced security features such as Private Endpoints - -### Committed - -Commit up-front for a year and pay via the Sales team. This package provides -the same flexibility of On-Demand, but at a lower price. - -In addition, you gain access to: -- 24/7 Premium Support -- ArangoDB Professional Services Engagements -- Ability to transact via the AWS and GCP marketplaces - -To take advantage of this, you need to get in touch with the ArangoDB -team. [Contact us](https://www.arangodb.com/contact/) for more details. - -## How to unlock all features - -You can unlock all features in ArangoGraph at any time by adding your billing -details and a payment method. As soon as you have added a payment method, all -ArangoGraph functionalities are immediately unlocked. From that point on, your -deployments will no longer expire and you can create more and larger deployments. - -See [Billing: How to add billing details / payment methods](billing.md) - -![ArangoGraph Billing](../../../images/arangograph-billing.png) - -## How to create a new organization - -See [My Account: How to create a new organization](../my-account.md#how-to-create-a-new-organization) - -## How to restrict access to an organization - -If you want to restrict access to an organization, you can do it by specifying which authentication providers are accepted for users trying to access the organization. For more information, refer to the [Access Control](../security-and-access-control/_index.md#restricting-access-to-organizations) section. - -## How to delete the current organization - -{{< danger >}} -Removing an organization implies the deletion of projects and deployments. -This operation cannot be undone and **all deployment data will be lost**. -Please proceed with caution. -{{< /danger >}} - -1. Click **Overview** in the **Organization** section of the main navigation. -2. Open the **Danger zone** tab. -3. Click the **Delete organization** button. -4. Enter `Delete!` to confirm and click **Yes**. - -{{< info >}} -If you are no longer a member of any organization, then a new organization is -created for you when you log in again. -{{< /info >}} - -{{< tip >}} -If the organization has a locked resource (a project or a deployment), you need to [unlock](../security-and-access-control/_index.md#locked-resources) -that resource first to be able to delete the organization. -{{< /tip >}} diff --git a/site/content/3.11/arangograph/organizations/credits-and-usage.md b/site/content/3.11/arangograph/organizations/credits-and-usage.md deleted file mode 100644 index 34dafb8488..0000000000 --- a/site/content/3.11/arangograph/organizations/credits-and-usage.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: Credits & Usage in ArangoGraph -menuTitle: Credits & Usage -weight: 15 -description: >- - Credits give you access to a flexible prepaid model, so you can allocate them - across multiple deployments as needed ---- -{{< info >}} -Credits are only available if your organization has signed up for -ArangoGraph's [Committed](../organizations/_index.md#committed) package. -{{< /info >}} - -The ArangoGraph credit model is a versatile prepaid model that allows you to -purchase credits and use them in a flexible way, based on what you have running -in ArangoGraph. - -Instead of purchasing a particular deployment for a year, you can purchase a -number of ArangoGraph credits that expire a year after purchase. These credits -are then consumed over that time period, based on the deployments you run -in ArangoGraph. - -For example, a OneShard (three nodes) A64 deployment consumes more credits per -hour than a smaller deployment such as A8. If you are running multiple deployments, -like pre-production environments or for different use-cases, these would each consume -from the same credit balance. However, if you are not running any deployments -and do not have any backup storage, then none of your credits will be consumed. - -{{< tip >}} -To purchase credits for your organization, you need to get in touch with the -ArangoDB team. [Contact us](https://www.arangodb.com/contact/) for more details. -{{< /tip >}} - -There are a number of benefits that ArangoGraph credits provide: -- **Adaptability**: The pre-paid credit model allows you to adapt your usage to - changing project requirements or fluctuating workloads. By enabling the use of - credits for various instance types and sizes, you can easily adjust your - resource allocation. -- **Efficient handling of resources**: With the ability to purchase credits in - advance, you can better align your needs in terms of resources and costs. - You can purchase credits in bulk and then allocate them as needed. -- **Workload Optimization**: By having a clear view of credit consumption and - remaining balance, you can identify inefficiencies to further optimize your - infrastructure, resulting in cost savings and better performance. - -## How to view the credit usage - -1. In the main navigation, click the **Organization** icon. -2. Click **Credits & Usage** in the **Organization** section. -3. In the **Credits & Usage** page, you can: - - See the remaining credit balance. - - Track your total credit balance. - - See a projection of when you will run out of credits, based on the last 30 days of usage. - - Get a detailed consumption report in PDF format that shows: - - The number of credits you had at the start of the month. - - The number of credits consumed in the month. - - The number of credits remaining. - - The number of credits consumed for each deployment. - -![ArangoGraph Credits and Usage](../../../images/arangograph-credits-and-usage.png) - -## FAQs - -### Are there any configuration constraints for using the credits? - -No. Credits are designed to be used completely flexibly. You can use all of your -credits for multiple small deployments (i.e. A8s) or you can use them for a single -large deployment (i.e. A256), or even multiple large deployments, as long as you -have enough credits remaining. - -### What is the flexibility of moving up or down in configuration size of the infrastructure? - -You can move up sizes in configuration at any point by editing your deployment -within ArangoGraph, once every 6 hours to allow for in-place disk expansion. - -### Is there a limit to how many deployments I can use my credits on? - -There is no specific limit to the number of deployments you can use your credits -on. The credit model is designed to provide you with the flexibility to allocate -credits across multiple deployments as needed. This enables you to effectively -manage and distribute your resources according to your specific requirements and -priorities. However, it is essential to monitor your credit consumption to ensure -that you have sufficient credits to cover your deployments. - -### Do the credits I purchase expire? - -Yes, credits expire 1 year after purchase. You should ensure that you consume -all of these credits within the year. - -### Can I make multiple purchases of credits within a year? - -As an organization’s usage of ArangoGraph grows, particularly in the initial -phases of application development and early production release, it is common -to purchase a smaller credit package that is later supplemented by a larger -credit package part-way through the initial credit expiry term. -In this case, all sets of credits will be available for ArangoGraph consumption -as a single credit balance. The credits with the earlier expiry date are consumed -first to avoid credit expiry where possible. - -### Can I purchase a specific number of credits (i.e. 3361, 4185)? - -ArangoGraph offers a variety of predefined credit packages designed to -accommodate different needs and stages of the application lifecycle. -For any credit purchasing needs, please [contact us](https://www.arangodb.com/contact/) -and we are happy to help find an appropriate package for you. - -### How quickly will the credits I purchase be consumed? - -The rate at which your purchased credits will be consumed depends on several -factors, including the type and size of instances you deploy, the amount of -resources used, and the duration of usage. Each machine size has an hourly credit -consumption rate, and the overall rate of credit consumption will increase for -larger sizes or for more machines/deployments. Credits will also be consumed for -any variable usage charges such as outbound network traffic and backup storage. - -### How can I see how many credits I have remaining? - -All details about credits, including how many credits have been purchased, -how many remain, and how they are being consumed are available in the -**Credits & Usage** page within the ArangoGraph web interface. - -### I have a large sharded deployment, how do I know how many credits it will consume? - -If you are using credits, then you will be able to see how many credits your -configured deployment will consume when [creating](../deployments/_index.md#how-to-create-a-new-deployment) -or [editing a deployment](../deployments/_index.md#how-to-edit-a-deployment). - -You can download a detailed consumption report in the -[**Credits & Usage** section](#how-to-view-the-credit-usage). It shows you the -number of credits consumed by any deployment you are creating or editing. - -All users can see the credit price of each node size in the **Pricing** section. - -### What happens if I run out of credits? - -If you run out of credits, your access to ArangoGraph's services and resources -will be temporarily suspended until you purchase additional credits. - -### Can I buy credits for a short time period (e.g. 2 months)? - -No, you cannot but credits with an expiry of less than 12 months. -If you require credits for a shorter time frame, such as 2 months, you can still -purchase one of the standard credit packages and consume the credits as needed -during that time. You may opt for a smaller credit package that aligns with your -expected usage during the desired period, rather than the full year’s expected usage. -Although the credits will have a longer expiration period, this allows you to have -the flexibility of utilizing the remaining credits for any future needs. \ No newline at end of file diff --git a/site/content/3.11/arangograph/organizations/users-and-groups.md b/site/content/3.11/arangograph/organizations/users-and-groups.md deleted file mode 100644 index abed36697b..0000000000 --- a/site/content/3.11/arangograph/organizations/users-and-groups.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Users and Groups in ArangoGraph -menuTitle: Users & Groups -weight: 5 -description: >- - How to manage individual members and user groups in ArangoGraph ---- -## Users, groups & members - -When you use ArangoGraph, you are logged in as a user. -A user has properties such as name & email address. -Most important of the user is that it serves as an identity of a person. - -A user is member of one or more organizations in ArangoGraph. -You can become a member of an organization in the following ways: - -- Create a new organization. You will become the first member and owner of that - organization. -- Be invited to join an organization. Once accepted (by the invited user), this - user becomes a member of the organization. - -If the number of members of an organization becomes large, it helps to group -users. In ArangoGraph a group is part of an organization and a group contains -a list of users. All users of the group must be member of the owning organization. - -In the **People** section of the dashboard you can manage users, groups and -invites for the organization. - -To edit permissions of members see [Access Control](../security-and-access-control/_index.md). - -## Members - -Members are a list of users that can access an organization. - -![ArangoGraph Member Access Control](../../../images/arangograph-access-control-members.png) - -### How to add a new member to the organization - -1. In the main navigation, click the __Organization__ icon. -2. Click __Members__ in the __People__ section. -3. Optionally, click the __Invites__ entry. -4. Click the __Invite new member__ button. -5. In the form that appears, enter the email address of the person you want to - invite. -6. Click the __Create__ button. -7. An email with an organization invite will now be sent to the specified - email address. -8. After accepting the invite the person will be added to the organization - [members](#members). - -![ArangoGraph Organization Invites](../../../images/arangograph-new-invite.png) - -### How to respond to an organization invite - -See [My Account: How to respond to my invites](../my-account.md#how-to-respond-to-my-invites) - -### How to remove a member from the organization - -1. Click __Members__ in the __People__ section of the main navigation. -2. Delete a member by pressing the __recycle bin__ icon in the __Actions__ column. -3. Confirm the deletion in the dialog that pops up. - -{{< info >}} -You cannot delete members who are organization owners. -{{< /info >}} - -### How to make a member an organization owner - -1. Click __Members__ in the __People__ section of the main navigation. -2. You can convert a member to an organization owner by pressing the __Key__ icon - in the __Actions__ column. -3. You can convert a member back to a normal user by pressing the __User__ icon - in the __Actions__ column. - -## Groups - -A group is a defined set of members. Groups can then be bound to roles. These -bindings contribute to the respective organization, project or deployment policy. - -![ArangoGraph Groups](../../../images/arangograph-groups.png) - -### How to create a new group - -1. Click __Groups__ in the __People__ section of the main navigation. -2. Press the __New group__ button. -3. Enter a name and optionally a description for your new group. -4. Select the members you want to be part of the group. -5. Press the __Create__ button. - -![ArangoGraph New Group](../../../images/arangograph-new-group.png) - -### How to view, edit or remove a group - -1. Click __Groups__ in the __People__ section of the main navigation. -2. Click an icon in the __Actions__ column: - - __Eye__: View group - - __Pencil__: Edit group - - __Recycle bin__: Delete group - -You can also click a group name to view it. There are buttons to __Edit__ and -__Delete__ the currently viewed group. - -![ArangoGraph Group](../../../images/arangograph-group.png) - -{{< info >}} -The groups __Organization members__ and __Organization owners__ are virtual groups -and cannot be changed. They always reflect the current set of organization -members and owners. -{{< /info >}} - -## Invites - -### How to create a new organization invite - -See [How to add a new member to the organization](#how-to-add-a-new-member-to-the-organization) - -### How to view the status of invitations - -1. Click __Invites__ in the __People__ section of the main navigation. -2. The created invites are displayed, grouped by status __Pending__, - __Accepted__ and __Rejected__. -3. You may delete pending invites by clicking the __recycle bin__ icon in the - __Actions__ column. - -![ArangoGraph Organization Invites](../../../images/arangograph-org-invites.png) diff --git a/site/content/3.11/arangograph/projects.md b/site/content/3.11/arangograph/projects.md deleted file mode 100644 index f4efd27833..0000000000 --- a/site/content/3.11/arangograph/projects.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Projects in ArangoGraph -menuTitle: Projects -weight: 15 -description: >- - How to manage projects and IP allowlists in ArangoGraph ---- -ArangoGraph projects can represent organizational units such as teams, -product groups, environments (e.g. staging vs. production). You can have any -number of projects under one organization. - -**Organizations → <u>Projects</u> → Deployments** - -Projects are a container for related deployments, certificates & IP allowlists. -Projects also come with their own policy for access control. You can have any -number of deployment under one project. - -![ArangoGraph Projects Overview](../../images/arangograph-projects-overview.png) - -## How to create a new project - -1. In the main navigation, click the __Dashboard__ icon. -2. Click __Projects__ in the __Dashboard__ section. -3. Click the __New project__ button. -4. Enter a name and optionally a description for your new project. -5. Click the __Create__ button. -6. You will be taken to the project page. -7. To change the name or description, click either at the top of the page. - -![ArangoGraph New Project](../../images/arangograph-new-project.png) - -![ArangoGraph Project Summary](../../images/arangograph-project.png) - -{{< info >}} -Projects contain exactly **one policy**. Within that policy, you can define -role bindings to regulate access control on a project level. -{{< /info >}} - -## How to create a new deployment - -See [Deployments: How to create a new deployment](deployments/_index.md#how-to-create-a-new-deployment) - -## How to delete a project - -{{< danger >}} -Deleting a project will delete contained deployments, certificates & IP allowlists. -This operation is **irreversible**. -{{< /danger >}} - -1. Click __Projects__ in the __Dashboard__ section of the main navigation. -2. Click the __recycle bin__ icon in the __Actions__ column of the project to be deleted. -3. Enter `Delete!` to confirm and click __Yes__. - -{{< tip >}} -If the project has a locked deployment, you need to [unlock](security-and-access-control/_index.md#locked-resources) -it first to be able to delete the project. -{{< /tip >}} - -## How to manage IP allowlists - -IP allowlists let you limit access to your deployment to certain IP ranges. -It is optional, but strongly recommended to do so. - -You can create an allowlist as part of a project. - -1. Click a project name in the __Projects__ section of the main navigation. -2. Click the __Security__ entry. -3. In the __IP allowlists__ section, click: - - The __New IP allowlist__ button to create a new allowlist. - When creating or editing a list, you can add comments - in the __Allowed CIDR ranges (1 per line)__ section. - Everything after `//` or `#` is considered a comment until the end of the line. - - A name or the __eye__ icon in the __Actions__ column to view the allowlist. - - The __pencil__ icon to edit the allowlist. - You can also view the allowlist and click the __Edit__ button. - - The __recycle bin__ icon to delete the allowlist. - -## How to manage role bindings - -See: -- [Access Control: How to view, edit or remove role bindings of a policy](security-and-access-control/_index.md#how-to-view-edit-or-remove-role-bindings-of-a-policy) -- [Access Control: How to add a role binding to a policy](security-and-access-control/_index.md#how-to-add-a-role-binding-to-a-policy) diff --git a/site/content/3.11/arangograph/security-and-access-control/_index.md b/site/content/3.11/arangograph/security-and-access-control/_index.md deleted file mode 100644 index fa37f9af13..0000000000 --- a/site/content/3.11/arangograph/security-and-access-control/_index.md +++ /dev/null @@ -1,699 +0,0 @@ ---- -title: Security and access control in ArangoGraph -menuTitle: Security and Access Control -weight: 45 -description: >- - This guide explains which access control concepts are available in - ArangoGraph and how to use them ---- -The ArangoGraph Insights Platform has a structured set of resources that are subject to security and -access control: - -- Organizations -- Projects -- Deployments - -For each of these resources, you can perform various operations. -For example, you can create a project in an organization and create a deployment -inside a project. - -## Locked resources - -In ArangoGraph, you can lock the resources to prevent accidental deletion. When -a resource is locked, it cannot be deleted and must be unlocked first. - -The hierarchical structure of the resources (organization-project-deployment) -is used in the locking functionality: if a child resource is locked -(for example, a deployment), you cannot delete the parent project without -unlocking that deployment first. - -{{< info >}} -If you lock a backup policy of a deployment or an IP allowlist, CA certificate, -and IAM provider of a project, it is still possible to delete -the corresponding parent resource without unlocking those properties first. -{{< /info >}} - -## Policy - -Various actions in ArangoGraph require different permissions, which can be -granted to users via **roles**. - -The association of a member with a role is called a **role binding**. -All role bindings of a resource comprise a **policy**. - -Roles can be bound on an organization, project, and deployment level (listed in -the high to low level order, with lower levels inheriting permissions from their -parents). This means that there is a unique policy per resource (an organization, -a project, or a deployment). - -For example, an organization has exactly one policy, -which binds roles to members of the organization. These bindings are used to -give the users permissions to perform operations in this organization. -This is useful when, as an organization owner, you need to extend the permissions -for an organization member. - -{{< info >}} -Permissions linked to predefined roles vary between organization owners and -organization members. If you need to extend permissions for an organization -member, you can create a new role binding. The complete list of roles and -their respective permissions for both organization owners and members can be -viewed on the **Policy** page of an organization within the ArangoGraph dashboard. -{{< /info >}} - -### How to view, edit, or remove role bindings of a policy - -Decide whether you want to edit the policy for an organization, a project, -or a deployment: - -- **Organization**: In the main navigation, click the __Organization__ icon and - then click __Policy__. -- **Project**: In the main navigation, click the __Dashboard__ icon, then click - __Projects__, click the name of the desired project, and finally click __Policy__. -- **Deployment**: In the main navigation, click the __Dashboard__ icon, then - click __Deployments__, click the name of the desired deployment, and finally - click __Policy__. - -To delete a role binding, click the **Recycle Bin** icon in the **Actions** column. - -{{< info >}} -Currently, you cannot edit a role binding, you can only delete it. -{{< /info >}} - -![ArangoGraph Project Policy](../../../images/arangograph-policy-page.png) - -### How to add a role binding to a policy - -1. Navigate to the **Policy** tab of an organization, a project or a deployment. -2. Click the **New role binding** button. -3. Select one or more users and/or groups. -4. Select one or more roles you want to assign to the specified members. -5. Click **Create**. - -![ArangoGraph New Role Binding](../../../images/arangograph-new-policy-role-binding.png) - -## Roles - -Operations on resources in ArangoGraph require zero (just an authentication) or -more permissions. Since the -number of permissions is large and very detailed, it is not practical to assign -permissions directly to users. Instead, ArangoGraph uses **roles**. - -A role is a set of permissions. Roles can be bound to groups (preferably) -or individual users. You can create such bindings for the respective organization, -project, or deployment policy. - -There are predefined roles, but you can also create custom ones. - -![ArangoGraph Roles](../../../images/arangograph-access-control-roles.png) - -### Predefined roles - -Predefined roles are created by ArangoGraph and group related permissions together. -An example of a predefined role is `deployment-viewer`. This role -contains all permissions needed to view deployments in a project. - -Predefined roles cannot be deleted. Note that permissions linked to predefined -roles vary between organization owners and organization members. - -{{% comment %}} -Command to generate below list with (Git)Bash: - -export OASIS_TOKEN='<TOKEN>' -./oasisctl list roles --organization-id <ID> --format json | jq -r '.[] | select(.predefined == true) | "**\(.description)** (`\(.id)`):\n\(.permissions | split(", ") | map("- `\(.)`\n") | join(""))"' -{{% /comment %}} - -{{< details summary="List of predefined roles and their permissions" >}} - -{{</* tip */>}} -The roles below are described following this pattern: - -**Role description** (`role ID`): -- `Permission` -{{</* /tip */>}} - -**Audit Log Admin** (`auditlog-admin`): -- `audit.auditlog.create` -- `audit.auditlog.delete` -- `audit.auditlog.get` -- `audit.auditlog.list` -- `audit.auditlog.set-default` -- `audit.auditlog.test-https-post-destination` -- `audit.auditlog.update` - -**Audit Log Archive Admin** (`auditlog-archive-admin`): -- `audit.auditlogarchive.delete` -- `audit.auditlogarchive.get` -- `audit.auditlogarchive.list` - -**Audit Log Archive Viewer** (`auditlog-archive-viewer`): -- `audit.auditlogarchive.get` -- `audit.auditlogarchive.list` - -**Audit Log Attachment Admin** (`auditlog-attachment-admin`): -- `audit.auditlogattachment.create` -- `audit.auditlogattachment.delete` -- `audit.auditlogattachment.get` - -**Audit Log Attachment Viewer** (`auditlog-attachment-viewer`): -- `audit.auditlogattachment.get` - -**Audit Log Event Admin** (`auditlog-event-admin`): -- `audit.auditlogevent.delete` -- `audit.auditlogevents.get` - -**Audit Log Event Viewer** (`auditlog-event-viewer`): -- `audit.auditlogevents.get` - -**Audit Log Viewer** (`auditlog-viewer`): -- `audit.auditlog.get` -- `audit.auditlog.list` - -**Backup Administrator** (`backup-admin`): -- `backup.backup.copy` -- `backup.backup.create` -- `backup.backup.delete` -- `backup.backup.download` -- `backup.backup.get` -- `backup.backup.list` -- `backup.backup.restore` -- `backup.backup.update` -- `backup.feature.get` -- `data.deployment.restore-backup` - -**Backup Viewer** (`backup-viewer`): -- `backup.backup.get` -- `backup.backup.list` -- `backup.feature.get` - -**Backup Policy Administrator** (`backuppolicy-admin`): -- `backup.backuppolicy.create` -- `backup.backuppolicy.delete` -- `backup.backuppolicy.get` -- `backup.backuppolicy.list` -- `backup.backuppolicy.update` -- `backup.feature.get` - -**Backup Policy Viewer** (`backuppolicy-viewer`): -- `backup.backuppolicy.get` -- `backup.backuppolicy.list` -- `backup.feature.get` - -**Billing Administrator** (`billing-admin`): -- `billing.config.get` -- `billing.config.set` -- `billing.invoice.get` -- `billing.invoice.get-preliminary` -- `billing.invoice.get-statistics` -- `billing.invoice.list` -- `billing.organization.get` -- `billing.paymentmethod.create` -- `billing.paymentmethod.delete` -- `billing.paymentmethod.get` -- `billing.paymentmethod.get-default` -- `billing.paymentmethod.list` -- `billing.paymentmethod.set-default` -- `billing.paymentmethod.update` -- `billing.paymentprovider.list` - -**Billing Viewer** (`billing-viewer`): -- `billing.config.get` -- `billing.invoice.get` -- `billing.invoice.get-preliminary` -- `billing.invoice.get-statistics` -- `billing.invoice.list` -- `billing.organization.get` -- `billing.paymentmethod.get` -- `billing.paymentmethod.get-default` -- `billing.paymentmethod.list` -- `billing.paymentprovider.list` - -**CA Certificate Administrator** (`cacertificate-admin`): -- `crypto.cacertificate.create` -- `crypto.cacertificate.delete` -- `crypto.cacertificate.get` -- `crypto.cacertificate.list` -- `crypto.cacertificate.set-default` -- `crypto.cacertificate.update` - -**CA Certificate Viewer** (`cacertificate-viewer`): -- `crypto.cacertificate.get` -- `crypto.cacertificate.list` - -**Dataloader Administrator** (`dataloader-admin`): -- `dataloader.deployment.import` - -**Deployment Administrator** (`deployment-admin`): -- `data.cpusize.list` -- `data.deployment.create` -- `data.deployment.create-test-database` -- `data.deployment.delete` -- `data.deployment.get` -- `data.deployment.list` -- `data.deployment.pause` -- `data.deployment.rebalance-shards` -- `data.deployment.resume` -- `data.deployment.rotate-server` -- `data.deployment.update` -- `data.deployment.update-scheduled-root-password-rotation` -- `data.deploymentfeatures.get` -- `data.deploymentmodel.list` -- `data.deploymentprice.calculate` -- `data.diskperformance.list` -- `data.limits.get` -- `data.nodesize.list` -- `data.presets.list` -- `monitoring.logs.get` -- `monitoring.metrics.get` -- `notification.deployment-notification.list` -- `notification.deployment-notification.mark-as-read` -- `notification.deployment-notification.mark-as-unread` - -**Deployment Content Administrator** (`deployment-content-admin`): -- `data.cpusize.list` -- `data.deployment.create-test-database` -- `data.deployment.get` -- `data.deployment.list` -- `data.deploymentcredentials.get` -- `data.deploymentfeatures.get` -- `data.deploymentmodel.list` -- `data.deploymentprice.calculate` -- `data.diskperformance.list` -- `data.limits.get` -- `data.nodesize.list` -- `data.presets.list` -- `monitoring.logs.get` -- `monitoring.metrics.get` -- `notification.deployment-notification.list` -- `notification.deployment-notification.mark-as-read` -- `notification.deployment-notification.mark-as-unread` - -**Deployment Full Access User** (`deployment-full-access-user`): -- `data.deployment.full-access` - -**Deployment Read Only User** (`deployment-read-only-user`): -- `data.deployment.read-only-access` - -**Deployment Viewer** (`deployment-viewer`): -- `data.cpusize.list` -- `data.deployment.get` -- `data.deployment.list` -- `data.deploymentfeatures.get` -- `data.deploymentmodel.list` -- `data.deploymentprice.calculate` -- `data.diskperformance.list` -- `data.limits.get` -- `data.nodesize.list` -- `data.presets.list` -- `monitoring.metrics.get` -- `notification.deployment-notification.list` -- `notification.deployment-notification.mark-as-read` -- `notification.deployment-notification.mark-as-unread` - -**Deployment Profile Viewer** (`deploymentprofile-viewer`): -- `deploymentprofile.deploymentprofile.list` - -**Example Datasets Viewer** (`exampledataset-viewer`): -- `example.exampledataset.get` -- `example.exampledataset.list` - -**Example Dataset Installation Administrator** (`exampledatasetinstallation-admin`): -- `example.exampledatasetinstallation.create` -- `example.exampledatasetinstallation.delete` -- `example.exampledatasetinstallation.get` -- `example.exampledatasetinstallation.list` -- `example.exampledatasetinstallation.update` - -**Example Dataset Installation Viewer** (`exampledatasetinstallation-viewer`): -- `example.exampledatasetinstallation.get` -- `example.exampledatasetinstallation.list` - -**Group Administrator** (`group-admin`): -- `iam.group.create` -- `iam.group.delete` -- `iam.group.get` -- `iam.group.list` -- `iam.group.update` - -**Group Viewer** (`group-viewer`): -- `iam.group.get` -- `iam.group.list` - -**IAM provider Administrator** (`iamprovider-admin`): -- `security.iamprovider.create` -- `security.iamprovider.delete` -- `security.iamprovider.get` -- `security.iamprovider.list` -- `security.iamprovider.set-default` -- `security.iamprovider.update` - -**IAM provider Viewer** (`iamprovider-viewer`): -- `security.iamprovider.get` -- `security.iamprovider.list` - -**IP allowlist Administrator** (`ipwhitelist-admin`): -- `security.ipallowlist.create` -- `security.ipallowlist.delete` -- `security.ipallowlist.get` -- `security.ipallowlist.list` -- `security.ipallowlist.update` - -**IP allowlist Viewer** (`ipwhitelist-viewer`): -- `security.ipallowlist.get` -- `security.ipallowlist.list` - -**Metrics Administrator** (`metrics-admin`): -- `metrics.endpoint.get` -- `metrics.token.create` -- `metrics.token.delete` -- `metrics.token.get` -- `metrics.token.list` -- `metrics.token.revoke` -- `metrics.token.update` - -**Migration Administrator** (`migration-admin`): -- `replication.deploymentmigration.create` -- `replication.deploymentmigration.delete` -- `replication.deploymentmigration.get` - -**MLServices Admin** (`mlservices-admin`): -- `ml.mlservices.get` - -**Notebook Administrator** (`notebook-admin`): -- `notebook.model.list` -- `notebook.notebook.create` -- `notebook.notebook.delete` -- `notebook.notebook.get` -- `notebook.notebook.list` -- `notebook.notebook.pause` -- `notebook.notebook.resume` -- `notebook.notebook.update` - -**Notebook Executor** (`notebook-executor`): -- `notebook.notebook.execute` - -**Notebook Viewer** (`notebook-viewer`): -- `notebook.model.list` -- `notebook.notebook.get` -- `notebook.notebook.list` - -**Organization Administrator** (`organization-admin`): -- `billing.organization.get` -- `resourcemanager.organization-invite.create` -- `resourcemanager.organization-invite.delete` -- `resourcemanager.organization-invite.get` -- `resourcemanager.organization-invite.list` -- `resourcemanager.organization-invite.update` -- `resourcemanager.organization.delete` -- `resourcemanager.organization.get` -- `resourcemanager.organization.update` - -**Organization Viewer** (`organization-viewer`): -- `billing.organization.get` -- `resourcemanager.organization-invite.get` -- `resourcemanager.organization-invite.list` -- `resourcemanager.organization.get` - -**Policy Administrator** (`policy-admin`): -- `iam.policy.get` -- `iam.policy.update` - -**Policy Viewer** (`policy-viewer`): -- `iam.policy.get` - -**Prepaid Deployment Viewer** (`prepaid-deployment-viewer`): -- `prepaid.prepaiddeployment.get` -- `prepaid.prepaiddeployment.list` - -**Private Endpoint Service Administrator** (`privateendpointservice-admin`): -- `network.privateendpointservice.create` -- `network.privateendpointservice.get` -- `network.privateendpointservice.get-by-deployment-id` -- `network.privateendpointservice.get-feature` -- `network.privateendpointservice.update` - -**Private Endpoint Service Viewer** (`privateendpointservice-viewer`): -- `network.privateendpointservice.get` -- `network.privateendpointservice.get-by-deployment-id` -- `network.privateendpointservice.get-feature` - -**Project Administrator** (`project-admin`): -- `resourcemanager.project.create` -- `resourcemanager.project.delete` -- `resourcemanager.project.get` -- `resourcemanager.project.list` -- `resourcemanager.project.update` - -**Project Viewer** (`project-viewer`): -- `resourcemanager.project.get` -- `resourcemanager.project.list` - -**Replication Administrator** (`replication-admin`): -- `replication.deployment.clone-from-backup` -- `replication.deploymentreplication.get` -- `replication.deploymentreplication.update` -- `replication.migration-forwarder.upgrade-connection` - -**Role Administrator** (`role-admin`): -- `iam.role.create` -- `iam.role.delete` -- `iam.role.get` -- `iam.role.list` -- `iam.role.update` - -**Role Viewer** (`role-viewer`): -- `iam.role.get` -- `iam.role.list` - -**SCIM Administrator** (`scim-admin`): -- `scim.user.add` -- `scim.user.delete` -- `scim.user.get` -- `scim.user.list` -- `scim.user.update` - -**User Administrator** (`user-admin`): -- `iam.user.get-personal-data` -- `iam.user.update` - -{{< /details >}} - -### How to create a custom role - -1. In the main navigation menu, click **Access Control**. -2. On the **Roles** tab, click **New role**. -3. Enter a name and optionally a description for the new role. -4. Select the required permissions. -5. Click **Create**. - -![ArangoGraph New Role](../../../images/arangograph-create-role.png) - -### How to view, edit or remove a custom role - -1. In the main navigation menu, click **Access Control**. -2. On the **Roles** tab, click: - - A role name or the **eye** icon in the **Actions** column to view the role. - - The **pencil** icon in the **Actions** column to edit the role. - You can also view a role and click the **Edit** button in the detail view. - - The **recycle bin** icon to delete the role. - You can also view a role and click the **Delete** button in the detail view. - -## Permissions - -Each operation done on a resource requires zero (just authentication) or more **permissions**. -A permission is a constant string such as `resourcemanager.project.create`, -following this schema: `<api>.<kind>.<verb>`. - -Permissions are solely defined by the ArangoGraph API. - -{{% comment %}} -Retrieved with the below command, with manual adjustments: -oasisctl list permissions - -Note that if the tier is "internal", there is an `internal-dashboard` API that should be excluded in below list! -{{% /comment %}} - -| API | Kind | Verbs -|:--------------------|:-----------------------------|:------------------------------------------- -| `audit` | `auditlogarchive` | `delete`, `get`, `list` -| `audit` | `auditlogattachment` | `create`, `delete`, `get` -| `audit` | `auditlogevents` | `get` -| `audit` | `auditlogevent` | `delete` -| `audit` | `auditlog` | `create`, `delete`, `get`, `list`, `set-default`, `test-https-post-destination`, `update` -| `backup` | `backuppolicy` | `create`, `delete`, `get`, `list`, `update` -| `backup` | `backup` | `copy`, `create`, `delete`, `download`, `get`, `list`, `restore`, `update` -| `backup` | `feature` | `get` -| `billing` | `config` | `get`, `set` -| `billing` | `invoice` | `get`, `get-preliminary`, `get-statistics`, `list` -| `billing` | `organization` | `get` -| `billing` | `paymentmethod` | `create`, `delete`, `get`, `get-default`, `list`, `set-default`, `update` -| `billing` | `paymentprovider` | `list` -| `crypto` | `cacertificate` | `create`, `delete`, `get`, `list`, `set-default`, `update` -| `dataloader` | `deployment` | `import` -| `data` | `cpusize` | `list` -| `data` | `deploymentcredentials` | `get` -| `data` | `deploymentfeatures` | `get` -| `data` | `deploymentmodel` | `list` -| `data` | `deploymentprice` | `calculate` -| `data` | `deployment` | `create`, `create-test-database`, `delete`, `full-access`, `get`, `list`, `pause`, `read-only-access`, `rebalance-shards`, `restore-backup`, `resume`, `rotate-server`, `update`, `update-scheduled-root-password-rotation` -| `data` | `diskperformance` | `list` -| `data` | `limits` | `get` -| `data` | `nodesize` | `list` -| `data` | `presets` | `list` -| `deploymentprofile` | `deploymentprofile` | `list` -| `example` | `exampledatasetinstallation` | `create`, `delete`, `get`, `list`, `update` -| `example` | `exampledataset` | `get`, `list` -| `iam` | `group` | `create`, `delete`, `get`, `list`, `update` -| `iam` | `policy` | `get`, `update` -| `iam` | `role` | `create`, `delete`, `get`, `list`, `update` -| `iam` | `user` | `get-personal-data`, `update` -| `metrics` | `endpoint` | `get` -| `metrics` | `token` | `create`, `delete`, `get`, `list`, `revoke`, `update` -| `ml` | `mlservices` | `get` -| `monitoring` | `logs` | `get` -| `monitoring` | `metrics` | `get` -| `network` | `privateendpointservice` | `create`, `get`, `get-by-deployment-id`, `get-feature`, `update` -| `notebook` | `model` | `list` -| `notebook` | `notebook` | `create`, `delete`, `execute`, `get`, `list`, `pause`, `resume`, `update` -| `notification` | `deployment-notification` | `list`, `mark-as-read`, `mark-as-unread` -| `prepaid` | `prepaiddeployment` | `get`, `list` -| `replication` | `deploymentmigration` | `create`, `delete`, `get` -| `replication` | `deploymentreplication` | `get`, `update` -| `replication` | `deployment` | `clone-from-backup` -| `replication` | `migration-forwarder` | `upgrade-connection` -| `resourcemanager` | `organization-invite` | `create`, `delete`, `get`, `list`, `update` -| `resourcemanager` | `organization` | `delete`, `get`, `update` -| `resourcemanager` | `project` | `create`, `delete`, `get`, `list`, `update` -| `scim` | `user` | `add`, `delete`, `get`, `list`, `update` -| `security` | `iamprovider` | `create`, `delete`, `get`, `list`, `set-default`, `update` -| `security` | `ipallowlist` | `create`, `delete`, `get`, `list`, `update` - -### Permission inheritance - -Each resource (organization, project, deployment) has its own policy, but this does not mean that you have to -repeat role bindings in all these policies. - -Once you assign a role to a user (or group of users) in a policy at one level, -all the permissions of this role are inherited in lower levels - -permissions are inherited downwards from an organization to its projects and -from a project to its deployments. - -For more general permissions, which you want to be propagated to other levels, -add a role for a user/group at the organization level. -For example, if you bind the `deployment-viewer` role to user `John` in the -organization policy, `John` will have the role permissions in all projects of -that organization and all deployments of the projects. - -For more restrictive permissions, which you don't necessarily want to be -propagated to other levels, add a role at the project or even deployment level. -For example, if you bind the `deployment-viewer` role to user `John` -in a project, `John` will have the role permissions in -this project as well as in all the deployments of it, but not -in other projects of the parent organization. - -**Inheritance example** - -- Let's assume you have a group called "Deployers" which includes users who deal with deployments. -- Then you create a role "Deployment Viewer", containing - `data.deployment.get` and `data.deployment.list` permissions. -- You can now add a role binding of the "Deployers" group to the "Deployment Viewer" role. -- If you add the binding to an organization policy, members of this group - will be granted the defined permissions for the organization, all its projects and all its deployments. -- If you add the role binding to a policy of project ABC, members of this group will be granted - the defined permissions for project ABC only and its deployments, but not for - other projects and their deployments. -- If you add the role binding to a policy of deployment X, members of this - group will be granted the defined permissions for deployment X only, and not - any other deployment of the parent project or any other project of the organization. - -The "Deployment Viewer" role is effective for the following entities depending -on which policy the binding is added to: - -Role binding added to →<br>Role effective on ↓ | Organization policy | Project ABC's policy | Deployment X's policy of project ABC | -|:---:|:---:|:---:|:---:| -Organization, its projects and deployments | ✓ | — | — -Project ABC and its deployments | ✓ | ✓ | — -Project DEF and its deployments | ✓ | — | — -Deployment X of project ABC | ✓ | ✓ | ✓ -Deployment Y of project ABC | ✓ | ✓ | — -Deployment Z of project DEF | ✓ | — | — - -## Restricting access to organizations - -To enhance security, you can implement the following restrictions via [Oasisctl](../oasisctl/_index.md): - -1. Limit allowed authentication providers. -2. Specify an allowed domain list. - -{{< info >}} -Note that users who do not meet the restrictions will not be granted permissions for any resource in -the organization. These users can still be members of the organization. -{{< /info >}} - -Using the first option, you can limit which **authentication providers** are -accepted for users trying to access an organization in ArangoGraph. -The following commands are available to configure this option: - -- `oasisctl get organization authentication providers` - allows you to see which - authentication providers are enabled for accessing a specific organization -- `oasisctl update organization authentication providers` - allows you to update - a list of authentication providers for an organization to which the - authenticated user has access - - `--enable-github` - if set, allow access from user accounts authenticated via Github - - `--enable-google` - if set, allow access from user accounts authenticated via Google - - `--enable-microsoft` - if set, allow access from user accounts authenticated via Microsoft - - `--enable-username-password` - if set, allow access from user accounts - authenticated via a username/password - -Using the second option, you can configure a **list of domains**, and only users -with email addresses from the specified domains will be able to access an -organization. The following commands are available to configure this option: - -- `oasisctl get organization email domain restrictions -o <your_organization_id>` - - allows you to see which domains are in the allowed list for a specific organization -- `oasisctl update organization email domain restrictions -o <your_organization_id> --allowed-domain=<domain_name1> --allowed-domain=<domain_name2>` - - allows you to update a list of the allowed domains for a specific organization -- `oasisctl update organization email domain restrictions -o <your_organization_id> --allowed-domain=` - - allows you to reset a list and accept any domains for accessing a specific organization - -## Using an audit log - -{{< info >}} -To enable the audit log feature, get in touch with the ArangoGraph team via **Request Help**, available in the left sidebar menu of the ArangoGraph Dashboard. -{{< /info >}} - -To have a better overview of the events happening in your ArangoGraph organization, -you can set up an audit log, which will track and log auditing information for you. -The audit log is created on the organization level, then you can use the log for -projects belonging to that organization. - -***To create an audit log*** - -1. In the main navigation menu, click **Access Control** in the **Organization** section. -2. Open the **Audit logs** tab and click the **New audit log** button. -3. In the dialog, fill out the following settings: - - - **Name** - enter a name for your audit log. - - **Description** - enter an optional description for your audit log. - - **Destinations** - specify one or several destinations to which you want to - upload the audit log. If you choose **Upload to cloud**, the log will be - available on the **Audit logs** tab of your organization. To send the log - entries to your custom destination, specify a destination URL with - authentication parameters (the **HTTP destination** option). - - {{< info >}} - The **Upload to cloud** option is not available for the free-to-try tier. - {{< /info >}} - - - **Excluded topics** - select topics that will not be included in the log. - Please note, that some are excluded by default (for example, `audit-document`). - - {{< warning >}} - Enabling the audit log for all events will have a negative impact on performance. - {{< /warning >}} - - - **Confirmation** - confirm that logging auditing events increases the price of your deployments. - - ![ArangoGraph audit log](../../../images/arangograph-audit-log.png) - -4. Click **Create** to add the audit log. You can now use it in the projects - belonging to your organization. diff --git a/site/content/3.11/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md b/site/content/3.11/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md deleted file mode 100644 index 8cf40b8009..0000000000 --- a/site/content/3.11/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: SCIM Provisioning -menuTitle: SCIM Provisioning -weight: 5 -description: >- - How to enable SCIM provisioning with Okta for your ArangoGraph project ---- -ArangoGraph provides support to control and manage members access in -ArangoGraph organizations with the -**System for Cross-domain Identity Management** (SCIM) provisioning. -This enables you to propagate to ArangoGraph any user access changes by using -the dedicated API. - -{{< info >}} -To enable the SCIM feature, get in touch with the ArangoGraph team via -**Request Help**, available in the left sidebar menu of the ArangoGraph Dashboard. -{{< /info >}} - -## About SCIM - -[SCIM](https://www.rfc-editor.org/rfc/rfc7644), or the System -for Cross-domain Identity Management [specification](http://www.simplecloud.info/), -is an open standard designed to manage user identity information. -SCIM provides a defined schema for representing users, and a RESTful -API to run CRUD operations on these user resources. - -The SCIM specification expects the following operations so that the SSO system -can sync the information about user resources in real time: - -- `GET /Users` - List all users. -- `GET /Users/:user_id` - Get details for a given user ID. -- `POST /Users` - Invite a new user to ArangoGraph. -- `PUT /Users/:user_id` - Update a given user ID. -- `DELETE /Users/:user_id` - Delete a specified user ID. - -ArangoGraph organization administrators can generate an API key for a specific organization. -The API token consists of a key and a secret. Using this key and secret as the -Basic Authentication Header (Basic Auth) in SCIM provisioning, you can access the APIs and -manage the user resources. - -To learn how to generate a new API key in the ArangoGraph Dashboard, see the -[API Keys](../../my-account.md#api-keys) section. - -{{< info >}} -When creating an API key, it is required to select an organization from the -list. -{{< /info >}} - -## Enable SCIM provisioning in Okta - -To enable SCIM provisioning, you first need to create an SSO integration that -supports the SCIM provisioning feature. - -1. To enable SCIM provisioning for your integration, go to the **General** tab. -2. In the **App Settings** section, select **Enable SCIM provisioning**. -3. Navigate to the **Provisioning** tab. The SCIM connection settings are - displayed under **Settings > Integration**. -4. Fill in the following fields: - - For **SCIM connector base URL**, use `https://dashboard.arangodb.cloud/api/scim/v1` - - For **Unique identifier field for users**, use `userName` -5. For **Supported provisioning actions**, enable the following: - - **Import New Users and Profile Updates** - - **Push New Users** - - **Push Profile Updates** -6. From the **Authentication Mode** menu, select the **Basic Auth** option. - To authenticate using this mode, you need to provide the username and password - for the account that handles the SCIM actions - in this case ArangoGraph. -7. Go to the ArangoGraph Dashboard and create a new API key ID and Secret. - - ![ArangoGraph Create new API key](../../../../images/arangograph-okta-api-key.png) - - Make sure to select one organization from the list and do not set any - value in the **Time to live** field. For more information, - see [How to create a new API key](../../my-account.md#how-to-create-a-new-api-key). -8. Use these authentication tokens as username and password when using the - **Basic Auth** mode and click **Save**. diff --git a/site/content/3.11/arangograph/security-and-access-control/x-509-certificates.md b/site/content/3.11/arangograph/security-and-access-control/x-509-certificates.md deleted file mode 100644 index d8d694a139..0000000000 --- a/site/content/3.11/arangograph/security-and-access-control/x-509-certificates.md +++ /dev/null @@ -1,178 +0,0 @@ ---- -title: X.509 Certificates in ArangoGraph -menuTitle: X.509 Certificates -weight: 5 -description: >- - X.509 certificates in ArangoGraph are utilized for encrypted remote administration. - The communication with and between the servers of an ArangoGraph deployment is - encrypted using the TLS protocol ---- -X.509 certificates are digital certificates that are used to verify the -authenticity of a website, user, or organization using a public key infrastructure -(PKI). They are used in various applications, including SSL/TLS encryption, -which is the basis for HTTPS - the primary protocol for securing communication -and data transfer over a network. - -The X.509 certificate format is a standard defined by the -[International Telecommunication Union (ITU)](https://www.itu.int/en/Pages/default.aspx) -and contains information such as the name of the certificate holder, the public -key associated with the certificate, the certificate's issuer, and the -certificate's expiration date. An X.509 certificate can be signed by a -certificate authority (CA) or self-signed. - -ArangoGraph is using: -- **well-known X.509 certificates** created by -[Let's Encrypt](https://letsencrypt.org/) -- **self-signed X.509 certificates** created by ArangoGraph platform - -## Certificate chains - -A certificate chain, also called the chain of trust, is a hierarchical structure -that links together a series of digital certificates. The trust in the chain is -established by verifying the identity of the issuer of each certificate in the -chain. The root of the chain is a trusted third-party, such as a certificate -authority (CA). The CA issues a certificate to an organization, which in turn -can issue certificates to servers and other entities. - -For example, when you visit a website with an SSL/TLS certificate, the browser -checks the chain of trust to verify the authenticity of the digital certificate. -The browser checks to see if the root certificate is trusted, and if it is, it -trusts the chain of certificates that lead to the end-entity certificate. -If any of the certificates in the chain are invalid, expired, or revoked, the -browser does not trust the digital certificate. - -## X.509 certificates in ArangoGraph - -Each ArangoGraph deployment is accessible on different port numbers: -- default port `8529`, `443` -- high port `18529` - -Each ArangoGraph Notebook is accessible on different port numbers: -- default port `8840`, `443` -- high port `18840` - -Metrics are accessible on different port numbers: -- default port `8829`, `443` -- high port `18829` - -The distinction between these port numbers is in the certificate used for the -TLS connection. - -{{< info >}} -The default ports (`8529` and `443`) always serve the well-known certificate. -The [auto login to database UI](../deployments/_index.md#auto-login-to-database-ui) -feature is only available on the `443` port and is enabled by default. -{{< /info >}} - -### Well-known X.509 certificates - -**Well-known X.509 certificates** created by -[Let's Encrypt](https://letsencrypt.org/) are used on the -default ports, `8529` and `443`. - -This type of certificate has a lifetime of 5 years and is rotated automatically. -It is recommended to use well-known certificates, as this eases access of a -deployment in your browser. - -{{< info >}} -The well-known certificate is a wildcard certificate and cannot contain -Subject Alternative Names (SANs). To include a SAN field, please use the -self-signed certificate option. -{{< /info >}} - -### Self-signed X.509 certificates - -**Self-signed X.509 certificates** are used on the high ports, i.e. `18529`. -This type of certificate has a lifetime of 1 year, and it is created by the -ArangoGraph platform. It is also rotated automatically before the expiration -date. - -{{< info >}} -Unless you switch off the **Use well-known certificate** option in the -certificate generation, both the default and high port serve the same -self-signed certificate. -{{< /info >}} - -### Subject Alternative Name (SAN) - -The Subject Alternative Name (SAN) is an extension to the X.509 specification -that allows you to specify additional host names for a single SSL certificate. - -When using [private endpoints](../deployments/private-endpoints.md), -you can specify custom domain names. Note that these are added **only** to -the self-signed certificate as Subject Alternative Name (SAN). - -## How to create a new certificate - -1. Click a project name in the **Projects** section of the main navigation. -2. Click **Security**. -3. In the **Certificates** section, click: - - The **New certificate** button to create a new certificate. - - A name or the **eye** icon in the **Actions** column to view a certificate. - The dialog that opens provides commands for installing and uninstalling - the certificate through a console. - - The **pencil** icon to edit a certificate. - You can also view a certificate and click the **Edit** button. - - The **tag** icon to make the certificate the new default. - - The **recycle bin** icon to delete a certificate. - -![ArangoGraph Create New Certificate](../../../images/arangograph-new-certificate.png) - -## How to install a certificate - -Certificates that have the **Use well-known certificate** option enabled do -not need any installation and are supported by almost all web browsers -automatically. - -When creating a self-signed certificate that has the **Use well-known certificate** -option disabled, the certificate needs to be installed on your local machine as -well. This operation varies between operating systems. To install a self-signed -certificate on your local machine, open the certificate and follow the -installation instructions. - -![ArangoGraph Certificates](../../../images/arangograph-cert-page-with-cert-present.png) - -![ArangoGraph Certificate Install Instructions](../../../images/arangograph-cert-install-instructions.png) - -You can also extract the information from all certificates in the chain using the -`openssl` tool. - -- For **well-known certificates**, run the following command: - ``` - openssl s_client -showcerts -servername <123456abcdef>.arangodb.cloud -connect <123456abcdef>.arangodb.cloud:8529 </dev/null - ``` - -- For **self-signed certificates**, run the following command: - ``` - openssl s_client -showcerts -servername <123456abcdef>.arangodb.cloud -connect <123456abcdef>.arangodb.cloud:18529 </dev/null - ``` - -Note that `<123456abcdef>` is a placeholder that needs to be replaced with the -unique ID that is part of your ArangoGraph deployment endpoint URL. - -## How to connect to your application - -[ArangoDB drivers](../../develop/drivers/_index.md), also called connectors, allow you to -easily connect ArangoGraph deployments to your application. - -1. Navigate to **Deployments** and click the **View** button to show the - deployment page. -2. In the **Quick start** section, click the **Connecting drivers** button. -3. Select your programming language, i.e. Go, Java, Python, etc. -4. Follow the examples to connect a driver to your deployment. They include - code examples on how to use certificates in your application. - -![ArangoGraph Connecting Drivers](../../../images/arangograph-connecting-drivers.png) - -## Certificate Rotation - -Every certificate has a self-signed root certificate that is going to expire. -When certificates that are used in existing deployments are about to expire, -an automatic rotation of the certificates is triggered. This means that the -certificate is cloned (all existing settings are copied over to a new certificate) -and all affected deployments then start using the cloned certificate. - -Based on the type of certificate used, you may also need to install the new -certificate on your local machine. For example, self-signed certificates require -installation. To prevent any downtime, it is recommended to manually create a -new certificate and apply the required changes prior to the expiration date. diff --git a/site/content/3.11/data-science/arangograph-notebooks.md b/site/content/3.11/data-science/arangograph-notebooks.md deleted file mode 100644 index 34ca9529be..0000000000 --- a/site/content/3.11/data-science/arangograph-notebooks.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: ArangoGraph Notebooks -menuTitle: ArangoGraph Notebooks -weight: 130 -description: >- - Colocated Jupyter Notebooks within the ArangoGraph Insights Platform ---- -{{< tip >}} -ArangoGraph Notebooks don't include the ArangoGraphML services. -To enable the ArangoGraphML services, -[get in touch](https://www.arangodb.com/contact/) -with the ArangoDB team. -{{< /tip >}} - -The ArangoGraph Notebook is a JupyterLab notebook embedded in the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -The notebook integrates seamlessly with the platform, -automatically connecting to ArangoGraph services and ArangoDB. -This makes it much easier to leverage these resources without having -to download any data locally or to remember user IDs, passwords, and endpoint URLs. - -For more information, see the [Notebooks](../arangograph/notebooks.md) documentation. diff --git a/site/content/3.12/about-arangodb/features/platform.md b/site/content/3.12/about-arangodb/features/platform.md deleted file mode 100644 index d6ef7fd320..0000000000 --- a/site/content/3.12/about-arangodb/features/platform.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Feature list of the ArangoDB Platform -menuTitle: ArangoDB Platform -weight: 10 -description: >- - The ArangoDB Platform is a scalable architecture that gets you all features - of ArangoDB including graph-powered machine learning and GenAI as a single - solution with a unified interface ---- -For in-depth information about the ArangoDB Platform as a whole and how to -deploy and use it, see [The ArangoDB Platform](../../../platform/about-the-platform/_index.md). - -## Architecture - -- **Core Database**: The ArangoDB database system forms the solid core - of the ArangoDB Platform. - -- **Kubernetes**: An open-source container orchestration system for automating - software deployment, scaling, and management designed by Google. It is the - autopilot for operating ArangoDB clusters and the additional Platform services. - -- **Helm**: A package manager for Kubernetes that enables consistent, repeatable - installations and version control. - -- **Envoy**: A high-performance service proxy that acts as the gateway for the - ArangoDB Platform for centralizing authentication and routing. - -- **Web interface**: The Platform includes a unified, browser-based UI that lets - you access its features in an intuitive way. Optional products like the - GenAI Suite seamlessly integrate into the UI if installed. - -## Features - -- [**ArangoDB Core**](core.md): The ArangoDB database system with support for - graphs, documents, key-value, full-text search, and vector search. - -- [**Graph Visualizer**](../../../platform/graph-intelligence/graph-visualizer.md): - A web-based tool for exploring your graph data with an intuitive interface and - sophisticated querying capabilities. - -- [**Graph Analytics**](../../../platform/graph-intelligence/graph-analytics.md): - A service that can efficiently load graph data from the core database system - and run graph algorithms such as PageRank and many more. - -- [**GenAI Suite**](../../../platform/data-science/_index.md): - ArangoDB's graph-powered machine learning (GraphML) as well as GraphRAG for - automatically building knowledge graphs from text and taking advantage of both - excerpts and higher-level summaries as context for turbocharging GenAI - applications. - -- [**Notebook servers**](../../../platform/data-science/notebook-servers.md): - Run Jupyter kernels in the Platform for hosting interactive, Python-based - notebooks to experiment and develop applications. - -- [**MLflow integration**](../../../platform/data-science/graphrag/services/mlflow.md): - Use the popular MLflow for machine learning practitioners as part of the - ArangoDB Platform. diff --git a/site/content/3.12/arangograph/_index.md b/site/content/3.12/arangograph/_index.md deleted file mode 100644 index 0e07d4c600..0000000000 --- a/site/content/3.12/arangograph/_index.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: ArangoGraph Insights Platform -menuTitle: ArangoGraph -weight: 65 -description: >- - The ArangoGraph Insights Platform provides the entire functionality of - ArangoDB as a service, without the need to run or manage databases yourself -aliases: - - arangograph/changelog ---- -The [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), -formerly called Oasis, provides ArangoDB databases as a Service (DBaaS). -It enables you to use the entire functionality of an ArangoDB cluster -deployment without the need to run or manage the system yourself. - -The ArangoGraph Insights Platform... - -- runs your databases in data centers of the cloud provider - of your choice: Google Cloud Platform (GCP) or Amazon Web Services (AWS). - This optimizes performance and reduces cost. - -- ensures that your databases are always available and - healthy by monitoring them 24/7. - -- ensures that your databases are kept up to date by - installing new versions without service interruption. - -- ensures that your data is safe by providing encryption & - audit logs and making frequent data backups. - -- guarantees that your data always remains your property and - access to it is protected with industry standard safeguards. - -For more information see -[dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) - -For quick start guide, see -[Use ArangoDB in the Cloud](../get-started/set-up-a-cloud-instance.md). diff --git a/site/content/3.12/arangograph/api/_index.md b/site/content/3.12/arangograph/api/_index.md deleted file mode 100644 index ee4f21371f..0000000000 --- a/site/content/3.12/arangograph/api/_index.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: The ArangoGraph API -menuTitle: ArangoGraph API -weight: 60 -description: >- - Interface to control all resources inside ArangoGraph in a scriptable manner -aliases: - - arangograph-api ---- -The [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), -comes with its own API. This API enables you to control all -resources inside ArangoGraph in a scriptable manner. Typical use cases are spinning -up ArangoGraph deployments during continuous integration and infrastructure as code. - -The ArangoGraph API… - -- is a well-specified API that uses - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - as interface definition and [gRPC](https://grpc.io/) as - underlying protocol. - -- allows for automatic generation of clients for a large list of languages. - A Go client is available out of the box. - -- uses API keys for authentication. API keys impersonate a user and inherit - the permissions of that user. - -- is also available as a command-line tool called [oasisctl](../oasisctl/_index.md). - -- is also available as a - [Terraform plugin](https://github.com/arangodb-managed/terraform-provider-oasis/). - This plugin makes integration of ArangoGraph in infrastructure as code projects - very simple. To learn more, refer to the [plugin documentation](https://registry.terraform.io/providers/arangodb-managed/oasis/latest/docs). - -Also see: -- [github.com/arangodb-managed/apis](https://github.com/arangodb-managed/apis/) -- [API definitions](https://arangodb-managed.github.io/apis/index.html) diff --git a/site/content/3.12/arangograph/api/get-started.md b/site/content/3.12/arangograph/api/get-started.md deleted file mode 100644 index b4ea00e39d..0000000000 --- a/site/content/3.12/arangograph/api/get-started.md +++ /dev/null @@ -1,481 +0,0 @@ ---- -title: Get started with the ArangoGraph API and Oasisctl -menuTitle: Get started with Oasisctl -weight: 10 -description: >- - A tutorial that guides you through the ArangoGraph API as well as the Oasisctl - command-line tool -aliases: - - ../arangograph-api/getting-started ---- -This tutorial shows you how to do the following: - -- Generate an API key and authenticate with Oasisctl -- View information related to your organizations, projects, and deployments -- Configure, create and delete a deployment - -With Oasisctl the general command structure is to execute commands such as: - -``` -oasisctl list deployments -``` - -This command lists all deployments available to the authenticated user and we -will explore it in more detail later. Most commands also have associated -`--flags` that are required or provide additional options, this aligns with the -interaction method for many command line utilities. If you aren’t already -familiar with this, follow along as there are many examples in this guide that -will familiarize you with this command structure and using flags, along with -how to use OasisCtl to access the ArangoGraph API. - -Note: A good rule of thumb for all variables, resource names, and identifiers -is to **assume they are all case sensitive**, when being used with Oasisctl. - -## API Authentication - -### Generating an API Key - -The first step to using the ArangoGraph API is to generate an API key. To generate a -key you will need to be signed into your account at -[dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -Once you are signed in, hover over the profile icon in the top right corner. - -![Profile Icon](../../../images/arangograph-my-account-hover.png) - -Click _My API keys_. - -This will bring you to your API key management screen. From this screen you can -create, reject, and delete API keys. - -Click the _New API key_ button. - -![Blank API Screen](../../../images/arangograph-my-api-keys.png) - -The pop-up box that follows has a few options for customizing the access level -of this API key. - -The options you have available include: - -- Limit access to 1 organization or all organizations this user has access to -- Set an expiration time, specified in number of hours -- Limit key to read-only access - -Once you have configured the API key access options, you will be presented with -your API key ID and API key secret. It is very important that you capture the -API key secret before clicking the close button. There is no way to retrieve -the API key secret after closing this pop-up window. - -![API Secret Key](../../../images/arangograph-api-key-secret.png) - -Once you have securely stored your API key ID and secret, click close. - -That is all there is to setting up API access to your ArangoGraph organizations. - -### Authenticating with Oasisctl - -Now that you have API access it is time to login with Oasisctl. - -Running the Oasisctl utility without any arguments is the equivalent of -including the --help flag. This shows all of the top level commands available -and you can continue exploring each command by typing the command name -followed by the --help flag to see the options available for that command. - -Let’s start with doing that for the login command: - -```bash -oasisctl login --help -``` - -You should see an output similar to this: - -![login help output](../../../images/oasisctl-login-help.png) - -This shows two additional flags are available, aside from the help flag. - -- `--key-id` -- `--key-secret` - -These require the values we received when creating the API key. Once you run -this command you will receive an authentication token that can be used for the -remainder of the session. - -```bash -oasisctl login \ - --key-id cncApiKeyId \ - --key-secret 873-secret-key-id -``` - -Upon successful login you should receive an authentication token: - -![On Successful Login](../../../images/oasisctl-login-success.png) - -Depending on your environment, you could instead store this token for easier -access. For example: - -With Linux: - -```bash -export OASIS_TOKEN=$(oasisctl login --key-id cncApiKeyId --key-secret 873-secret-key-id) -``` - -Or Windows Powershell: - -```powershell -setx OASIS_TOKEN (oasisctl login --key-id cncApiKeyId --key-secret 873-secret-key-id) -``` - -In the coming sections you will see how to authenticate with this token when -using other commands that require authentication. - -## Viewing and Managing Organizations and Deployments - -### Format - -This section covers the basics of retrieving information from the ArangoGraph API. -Depending on the data you are requesting from the ArangoGraph API, being able to read -it in the command line can start to become difficult. To make text easier to -read for humans and your applications, Oasisctl offers two options for -formatting the data received: - -- Table -- JSON - -You can define the format of the data by supplying the `--format` flag along -with your preferred format, like so: - -```bash -oasisctl --format json -``` - -### Viewing Information with the List Command - -This section will cover the two main functions of retrieving data with the -ArangoGraph API. These are: - -- `list` - List resources -- `get` - Get information - -Before you can jump right into making new deployments you need to be aware of -what resources you have available. This is where the list command comes in. -List serves as a way to retrieve general information, you can see all of the -available list options by accessing its help output. - -```bash -oasisctl list --help -``` - -This should output a screen similar to: - -![List help output](../../../images/oasisctl-list-help.png) - -As you can see you can get information on anything you would need about your -ArangoGraph organizations, deployments, and access control. To start, let’s take a -look at a few examples of listing information and then getting more details on -our results. - -### List Organizations - -One of the first pieces of information you may be interested in is the -organizations you have access to. This is useful to know because most commands -require an explicit declaration of the organization you are interacting with. -To find this, use list to list your available organizations: - -```bash -oasisctl list organizations --format json -``` - -Once you have your available organizations you can refer to your desired -organization using its name or id. - -![List organizations output](../../../images/oasisctl-list-org.png) - -Note: You may also notice the url attribute, this is for internal use only and -should not be treated as a publicly accessible path. - -### List Projects - -Once you have the organization name that you wish to interact with, the next -step is to list the available projects within that organization. Do this by -following the same command structure as before and instead exchange -organizations for projects, this time providing the desired organization name -with the `--organization-id` flag. - -```bash -oasisctl list projects \ - --organization-id "ArangoGraph Organization" \ - --format json -``` - -This will return information on all projects that the authenticated user has -access to. - -![List projects output](../../../images/oasisctl-list-projects.png) - -### List Deployments - -Things start getting a bit more interesting with information related to -deployments. Now that you have obtained an organization iD and a project ID, -you can list all of the associated deployments for that project. - -```bash -oasisctl list deployments \ - --organization-id "ArangoGraph Organization" \ - --project-id "Getting Started with ArangoGraph" \ - --format json - ``` - -![List deployments output](../../../images/oasisctl-list-deployments.png) - -This provides some basic details for all of the deployments associated with the -project. Namely, it provides a deployment ID which we can use to start making -modifications to the deployment or to get more detailed information, with the -`get` command. - -### Using the Get Command - -In Oasisctl, you use the get command to obtain more detailed information about -any of your available resources. It follows the same command structure as the -previous commands but typically requires a bit more information. For example, -to get more information on a specific deployment means you need to know at -least: - -- Organization ID -- Project ID -- Deployment ID - -To get more information about our example deployment we would need to execute -the following command: - -```bash -oasisctl get deployment \ - --organization-id "ArangoGraph Organization" \ - --project-id "Getting Started with ArangoGraph" \ - --deployment-id "abc123DeploymentID" \ - --format json -``` - -This returns quite a bit more information about the deployment including more -detailed server information, the endpoint URL where you can access the web interface, -and optionally the root user password. - -![Get deployment details](../../../images/oasisctl-get-deployment.png) - -### Node Size ID - -We won’t be exploring every flag available for creating a deployment but it is -a good idea to explore the concept of the node size ID value. This is an -indicator that is unique to each provider (Google, AWS) and indicates -the CPU and memory. Depending on the provider and region this can also -determine the available disk sizes for your deployment. In other words, it is -pretty important to know which `node-size-id` your deployment will be using. - -The command you execute will determine on the available providers and regions -for your organization but here is an example command that lists the available -options in the US West region for the Google Cloud Platform: - -```bash -oasisctl list nodesizes \ - --organization-id "ArangoGraph Organization" \ - --provider-id "Google Cloud Platform" \ - --region-id gcp-us-west2 -``` - -The output you will see will be similar to this: - -![List node size id](../../../images/oasisctl-list-node-size-id.png) - -It is important to note that you can scale up with more disk size but you are -unable to scale down your deployment disk size. The only way to revert back to -a lower disk size is to destroy and recreate your deployment. - -Once you have decided what your starting deployment needs are you can reference -your decision with the Id value for the corresponding configuration. So, for -our example, we will be choosing the c4-a4 configuration. The availability and -options are different for each provider and region, so be sure to confirm the -node size options before creating a new deployment. - -### Challenge - -You can use this combination of listing and getting to obtain all of the -information you want for your ArangoGraph organizations. We only explored a few of -the commands available but you can explore them all within the utility by -utilizing the `--help` flag or you can see all of the available options -in the [documentation](../oasisctl/options.md). - -Something that might be useful practice before moving on is getting the rest -of the information that you need to create a deployment. Here are a list of -items that won’t have defaults available when you attempt to create your -first deployment and you will need to supply: - -- CA Certificate ID (name) -- IP Allowlist ID (id) (optional) -- Node Size ID (id) -- Node Disk Size (GB disk size dependent on Node Size ID) -- Organization ID (name) -- Project ID (name) -- Region ID (name) - -Try looking up that information to get more familiar with how to find -information with Oasisctl. When in doubt use the `--help` flag with any -command. - -## Creating Resources - -Now that you have seen how to obtain information about your available -resources, it’s time to start using those skills to start creating your own -deployment. To create resources with Oasisctl you use the create command. -To see all the possible options you can start with the following command: - -```bash -oasisctl create --help -``` - -![Create command help output](../../../images/oasisctl-create-help.png) - -### Create a Deployment - -To take a look at all of the options available when creating a deployment the -best place to start is with our trusty help command. - -```bash -oasisctl create deployment --help -``` - -![Create deployment help output](../../../images/oasisctl-create-deployment-help.png) - -As you can see there are a lot of default options but also a few that require -some knowledge of our pre-existing resources. Attempting to create a deployment -without one of the required options will return an error indicating which value -is missing or invalid. - -Once you have collected all of the necessary information the command for -creating a deployment is simply supplying the values along with the appropriate -flags. This command will create a deployment: - -```bash -oasisctl create deployment \ - --region-id gcp-us-west2 \ - --node-size-id c4-a4 \ - --node-disk-size 10 \ - --version 3.9.2 \ - --cacertificate-id OasisCert \ - --organization-id "ArangoGraph Organization" \ - --project-id "Getting Started with ArangoGraph" \ - --name "First Oasisctl Deployment" \ - --description "The first deployment created using the awesome Oasisctl utility!" -``` - -If everything went according to play you should see similar output: - -![Deployment created successfully](../../../images/oasisctl-create-first-deployment-success.png) - -### Wait on Deployment Status - -When you create a deployment it begins the process of _bootstrapping_ which is -getting the deployment ready for use. This should happen quickly and to see if -it is ready for use you can run the wait command using the ID of the newly -created deployment, shown at the top of the information you received above. - -```bash -oasisctl wait deployment \ - --deployment-id hmkuedzw9oavvjmjdo0i -``` - -Once you receive a response of _Deployment Ready_, your deployment is indeed -ready to use. You can get some new details by running the get command. - -```bash -oasisctl get deployment \ - --organization-id "ArangoGraph Organization" \ - --deployment-id hmkuedzw9oavvjmjdo0i -``` - -![Get deployment bootstrap status](../../../images/oasisctl-get-first-deployment-bootstrapped.png) - -Once the deployment is ready you will get two new pieces of information, the -endpoint URL and Bootstrapped-At will indicate the time it became available. -If you would like to login to the web interface to verify that your server is in fact -up and running you will need to supply the `--show-root-password` flag along -with the get command, this flag does not take a value. - -### The Update Command - -The inevitable time comes when something about your deployment must change and -this is where the update command comes in. You can use update to change or -update a number of things including updating the groups, policies, and roles -for user access control. You can also update some of your deployment -information or, for our situation, add an IP Allowlist if you didn’t add one -during creation. - -There are, of course, many options available and it is always recommended to -start with the --help flag to read about all of them. - -### Update a Deployment - -This section will show an example of how to update a deployment to use a -pre-existing allowlist. To add an IP Allowlist after the fact we are really -just updating the IP Allowlist value, which is currently empty. In order to -update the IP Allowlist of a deployment you must create a allowlist and then -you can simply reference its id like so: - -```bash -oasisctl update deployment \ - --deployment-id hmkuedzw9oavvjmjdo0i \ - --ipallowlist-id abc123AllowlistID -``` - -You should receive a response with the deployment information and an indication -that deployment was updated at the top. - -You can use the update command to update everything about your deployments as -well. If you run: - -```bash -oasisctl update deployment --help -``` - -You will see the full list of options available that will allow you to scale -your deployment as needed. - -![Update deployment help output](../../../images/oasisctl-update-deployment-help.png) - -## Delete a Deployment - -There may come a day where you need to delete a resource. The process for this -follows right along with the conventions for the other commands detailed -throughout this guide. - -### The Delete Command - -For the final example in this guide we will delete the deployment that has -been created. This only requires the deployment ID and the permissions to -delete the deployment. - -```bash -oasisctl delete deployment \ - --deployment-id hmkuedzw9oavvjmjdo0i -``` - -Once the deployment has been deleted you can confirm it is gone by listing -your deployments. - -```bash -oasisctl list deployments \ - --organization-id "ArangoGraph Organization" \ - --format json -``` - -## Next Steps - -As promised, this guide covered the basics of using Oasisctl with the ArangoDB -API. While we primarily focused on viewing and managing deployments there is -also a lot more to explore, including: - -- Organization Invites Management -- Backups -- API Key Management -- Certificate Management -- User Access Control - -You can check out all these features and further details on the ones discussed -in this guide in the documentation. diff --git a/site/content/3.12/arangograph/api/set-up-a-connection.md b/site/content/3.12/arangograph/api/set-up-a-connection.md deleted file mode 100644 index 7cbc2b76e2..0000000000 --- a/site/content/3.12/arangograph/api/set-up-a-connection.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Get started with the ArangoGraph API -menuTitle: Get started with the API -weight: 5 -description: >- - Quick start guide on how to set up a connection to the ArangoGraph API -aliases: - - ../arangograph-api/getting-started-with-the-api ---- -The instructions below are a quick start guide on how to set up a connection to the ArangoGraph API. - -All examples below will use the Go programming language. -Since the ArangoGraph API is using gRPC with protocol buffers, -all examples can be easily translated to many different languages. - -## Prerequisites - -Make sure that you have already [signed up for ArangoGraph](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). - -## Creating an API key - -1. Go to [dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) and login. -2. Click the user icon in the top-right of the dashboard. -3. Select __My API keys__ -4. Click __New API key__ -5. Click __Create__ to select the default settings. -6. You'll now see a dialog showing the __API key ID__ and - the __API key Secret__. This is the only time you will see - the secret, so make sure to store it in a safe place. - -## Create an access token with your API key - -```go -import ( - "context" - - "google.golang.org/grpc" - "google.golang.org/grpc/credentials" - "github.com/arangodb-managed/apis/common/auth" - common "github.com/arangodb-managed/apis/common/v1" - data "github.com/arangodb-managed/apis/data/v1" - iam "github.com/arangodb-managed/apis/iam/v1" -) - -... - -// Set up a connection to the API. -tc := credentials.NewTLS(&tls.Config{}) -conn, err := grpc.Dial("https://api.cloud.arangodb.com", - grpc.WithTransportCredentials(tc)) -if err != nil { - // handle error -} - -// Create client for IAM service -iamc := iam.NewIAMServiceClient(conn) - -// Call AuthenticateAPIKey to create token -resp, err := iamc.AuthenticateAPIKey(ctx, - &iam.AuthenticateAPIKeyRequest{ - Id: keyID, - Secret: keySecret, -}) -if err != nil { - // handle error -} -token := resp.GetToken() -``` - -## Make an authenticated API call - -We're going to list all deployments in a project. -The connection and token created in the previous sample is re-used. - -The authentication token is passed as standard `bearer` token to the call. -If Go, there is a helper method (`WithAccessToken`) to create a context using -an authentication token. - -```go -// Create client for Data service -datac := data.NewDataServiceClient(conn) - -// Prepare context with authentication token -ctx := auth.WithAccessToken(context.Background(), token) - -// Call list deployments -list, err := datac.ListDeployments(ctx, - &common.ListOptions{ContextId: myProjectID}) -if err != nil { - // handle error -} -for _, depl := range list.GetItems() { - fmt.Printf("Found deployment with id %s\n", depl.GetId()) -} - -``` - -## API Errors - -All API methods return errors as gRPC error codes. - -The `github.com/arangodb-managed/apis/common/v1` package contains several helpers to check for common errors. - -```go -if common.IsNotFound(err) { - // Error is caused by a not-found situation -} -``` diff --git a/site/content/3.12/arangograph/data-loader/add-files.md b/site/content/3.12/arangograph/data-loader/add-files.md deleted file mode 100644 index 114b588e40..0000000000 --- a/site/content/3.12/arangograph/data-loader/add-files.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Add files into Data Loader -menuTitle: Add files -weight: 5 -description: >- - Provide your set of files in CSV format containing the data to be imported ---- - -The Data Loader allows you to upload your data files in CSV format into -ArangoGraph and then use these data sources to design a graph using the -built-in graph designer. - -## Upload your files - -You can upload your CSV files in the following ways: - -- Drag and drop your files in the designated area. -- Click the **Browse files** button and select the files you want to add. - -![ArangoGraph Data Loader Upload Files](../../../images/arangograph-data-loader-upload-files.png) - -You have the option to either upload several files collectively as a batch or -add them individually. Furthermore, you can supplement additional files later on. -After a file has been uploaded, you can expand it to preview both the header and -the first row of data within the file. - -In case you upload CSV files without fields, they will not be available for -manipulation. - -Once the files are uploaded, you can start [designing your graph](../data-loader/design-graph.md). - -### File formatting limitations - -Ensure that the files you upload are correctly formatted. Otherwise, errors may -occur, the upload may fail, or the data may not be correctly mapped. - -The following restrictions and limitations apply: - -- The only supported file format is CSV. If you submit an invalid file format, - the upload of that specific file will be prevented. -- It is required that all CSV files have a header row. If you upload a file - without a header, the first row of data is treated as the header. To avoid - losing the first row of the data, make sure to include headers in your files. -- The CSV file should have unique header names. It is not possible to have two - columns with the same name within the same file. - -For more details, see the [File validation](../data-loader/import.md#file-validation) section. - -### Upload limits - -Note that there is a cumulative file upload limit of 1GB. This means that the -combined size of all files you upload should not exceed 1GB. If the total size -of the uploaded files surpasses this limit, the upload may not be successful. - -## Delete files - -You can remove uploaded files by clicking the **Delete file** button in the -**Your files** panel. Please keep in mind that in order to delete a file, -you must first remove all graph associations associated with it. \ No newline at end of file diff --git a/site/content/3.12/arangograph/data-loader/example.md b/site/content/3.12/arangograph/data-loader/example.md deleted file mode 100644 index 46fdd1b38e..0000000000 --- a/site/content/3.12/arangograph/data-loader/example.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Data Loader Example -menuTitle: Example -weight: 20 -description: >- - Follow this complete working example to see how easy it is to transform existing - data into a graph and get insights from the connected entities ---- - -To transform your data into a graph, you need to have CSV files with entities -representing the nodes and a corresponding CSV file representing the edges. - -This example uses a sample data set of two files, `airports.csv`, and `flights.csv`. -These files are used to create a graph showing flights arriving at and departing -from various cities. -You can download the files from [GitHub](https://github.com/arangodb/example-datasets/tree/master/Data%20Loader). - -The `airports.csv` contains rows of airport entries, which are the future nodes -in your graph. The `flights.csv` contains rows of flight entries, which are the -future edges connecting the nodes. - -The whole process can be broken down into these steps: - -1. **Database and graph setup**: Begin by choosing an existing database or - create a new one and enter a name for your new graph. -2. **Add files**: Upload the CSV files to the Data Loader web interface. You can - simply drag and drop them or upload them through the file browser window. -3. **Design graph**: Design your graph schema by adding nodes and edges and map - data from the uploaded files to them. This allows creating the corresponding - documents and collections for your graph. -4. **Import data**: Import the data and start using your newly created - [EnterpriseGraph](../../graphs/enterprisegraphs/_index.md) and its - corresponding collections. - -## Step 1: Create a database and choose the graph name - -Start by creating a new database and adding a name for your graph. - -![Data Loader Example Step 1](../../../images/arangograph-data-loader-example-choose-names.png) - -## Step 2: Add files - -Upload your CSV files to the Data Loader web interface. You can drag and drop -them or upload them via a file browser window. - -![Data Loader Example Step 2](../../../images/arangograph-data-loader-example-add-files.png) - -See also [Add files into Data Loader](../data-loader/add-files.md). - -## Step 3: Design graph schema - -Once the files are added, you can start designing the graph schema. This example -uses a simple graph consisting of: -- Two nodes (`origin_airport` and `destination_airport`) -- One directed edge going from the origin airport to the destination one - representing a flight - -Click **Add node** to create the nodes and connect them with edges. - -Next, for each of the nodes and edges, you need to create a mapping to the -corresponding file and headers. - -For nodes, the **Node label** is going to be a node collection name and the -**Primary identifier** will be used to populate the `_key` attribute of documents. -You can also select any additional headers to be included as document attributes. - -In this example, two node collections have been created (`origin_airport` and -`destination_airport`) and `AirportID` header is used to create the `_key` -attribute for documents in both node collections. The header preview makes it -easy to select the headers you want to use. - -![Data Loader Example Step 3 Nodes](../../../images/arangograph-data-loader-example-map-nodes.png) - -For edges, the **Edge label** is going to be an edge collection name. Then, you -need to specify how edges will connect nodes. You can do this by selecting the -*from* and *to* nodes to give a direction to the edge. -In this example, the `source airport` header has been selected as a source and -the `destination airport` header as a target for the edge. - -![Data Loader Example Step 3 Edges](../../../images/arangograph-data-loader-example-map-edges.png) - -Note that the values of the source and target for the edge correspond to the -**Primary identifier** (`_key` attribute) of the nodes. In this case, it is the -airport code (i.e. GKA) used as the `_key` in the node documents and in the source -and destination headers to configure the edges. - -See also [Design your graph in the Data Loader](../data-loader/design-graph.md). - -## Step 4: Import and see the resulting graph - -After all the mapping is done, all you need to do is click -**Save and start import**. The report provides an overview of the files -processed and the documents created, as well as a link to your new graph. -See also [Start import](../data-loader/import.md). - -![Data Loader Example Step 4 See your new graph](../../../images/arangograph-data-loader-example-data-import.png) - -Finally, click **See your new graph** to open the ArangoDB web interface and -explore your new collections and graph. - -![Data Loader Example Step 4 Resulting graph](../../../images/arangograph-data-loader-example-resulting-graph.png) - -Happy graphing! \ No newline at end of file diff --git a/site/content/3.12/arangograph/data-loader/import.md b/site/content/3.12/arangograph/data-loader/import.md deleted file mode 100644 index 1589244278..0000000000 --- a/site/content/3.12/arangograph/data-loader/import.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Start the import -menuTitle: Start import -weight: 15 -description: >- - Once the data files are provided and the graph is designed, you can start the import ---- - -Before starting the actual import, make sure that: -- You have selected a database for import or created a new one; -- You have provided a valid name for your graph; -- You have created at least one node; -- You have created at least one edge; -- You have uploaded at least one file; -- Every file is related to at least one node or edge; -- Every node and edge is linked to a file; -- Every node and edge has a unique label; -- Every node has a primary identifier selected; -- Every edge has an origin and destination file header selected. - -To continue with the import, click the **Save and start import** button. The data -importer provides an overview showing results with the collections that have been -created with the data provided in the files. - -To access your newly created graph in the ArangoDB web interface, click the -**See your new graph** button. - -## File validation - -Once the import has started, the files that you have provided are being validated. -If the validation process detects parsing errors in any of the files, the import -is temporarily paused and the validation errors are shown. You can get a full -report by clicking the **See full report** button. - -At this point, you can: -- Continue with the import without addressing the errors. The CSV files will still - be included in the migration. However, the invalid rows are skipped and - excluded from the migration. -- Revisit the problematic file(s), resolve the issues, and then re-upload the - file(s) again. - -{{< tip >}} -To ensure the integrity of your data, it is recommended to address all the errors -detected during the validation process. -{{< /tip >}} - -### Validation errors and their meanings - -#### Invalid Quotation Mark - -This error indicates issues with quotation marks in the CSV data. -It can occur due to improper use of quotes. - -#### Missing Quotation Marks - -This error occurs when quotation marks are missing or improperly placed in the -CSV data, potentially affecting data enclosure. - -#### Insufficient Data Fields - -This error occurs when a CSV row has fewer fields than expected. It may indicate -missing or improperly formatted data. - -#### Excessive Data Fields - -This error occurs when a CSV row has more fields than expected, possibly due to -extra data or formatting issues. - -#### Unidentifiable Field Separator - -This error suggests that the parser could not identify the field separator -character in the CSV data. \ No newline at end of file diff --git a/site/content/3.12/arangograph/deployments/upgrades-and-versioning.md b/site/content/3.12/arangograph/deployments/upgrades-and-versioning.md deleted file mode 100644 index 211d271c92..0000000000 --- a/site/content/3.12/arangograph/deployments/upgrades-and-versioning.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Upgrades and Versioning in ArangoGraph -menuTitle: Upgrades and Versioning -weight: 10 -description: >- - Select which version of ArangoDB you want to use within your ArangoGraph - deployment and choose when to roll out your upgrades ---- -{{< info >}} -Please note that this policy comes into effect in April 2023. -{{< /info >}} - -## Release Definitions - -The following definitions are used for release types of ArangoDB within ArangoGraph: - -| Release | Introduces | Contains breaking changes | -|----------|-------------|----------------------------| -| **Major** (`X.y.z`) | Major new features and functionalities | Likely large changes | -| **Minor** (`x.Y.z`) | Some new features or improvements | Likely small changes | -| **Patch** (`x.y.Z`) | Essential fixes and improvements | Small changes in exceptional circumstances | - -## Release Channels - -When creating a deployment in ArangoGraph, you can select the minor version -of ArangoDB that your deployment is going to use. This minor version is in the -format `Major.Minor` and indicates the major and minor version of ArangoDB that -is used in this deployment, for example `3.10` or `3.9`. - -To provide secure and reliable service, databases are deployed on the latest -available patch version in the selected version. For example, if `3.10` is -selected and `3.10.3` is the latest version of ArangoDB available for the `3.10` -minor version, then the deployment is initially using ArangoDB `3.10.3`. - -## Upgrades - -### Manual Upgrades - -At any time, you can change the release channel of your deployment to a later -release channel, but not to an earlier one. For example, if you are using `3.10` -then you can change your deployment’s release channel to `3.11`, but you would -not be able to change the release channel to `3.9`. -See [how to edit a deployment](_index.md#how-to-edit-a-deployment). - -Upon changing your release channel, an upgrade process for your deployment is -initiated to upgrade your running database to the latest patch release of your -selected release channel. You can use this mechanism to upgrade your deployments -at a time that suits you, prior to the forced upgrade when your release channel -is no longer available. - -### Automatic Upgrades - -#### Major Versions (`X.y.z`) - -The potential disruption of a major version upgrade requires additional testing -of any applications connecting to your ArangoGraph deployment. As a result, when -a new major version is released on the ArangoGraph platform, an email is sent out -to inform you of this release. - -If the ArangoDB version that you are currently using is no longer available on the -ArangoGraph platform, you are forced to upgrade to the next available version. -Prior to the removal of the version, an email is sent out to inform you of this -forced upgrade. - -#### Minor Versions (`x.Y.z`) - -Although minor upgrades are not expected to cause significant compatibility -changes like major versions, they may still require additional planning and -validation. - -This is why minor upgrades are treated in the same manner as major upgrades -within ArangoGraph. When a new minor version is released on the ArangoGraph -platform, an email is sent out to inform you of this release. - -If the ArangoDB version that you are currently using is no longer available on the -ArangoGraph platform, you are forced to upgrade to the next available version. -Prior to the removal of the version, an email is sent out to inform you of this -forced upgrade. - -#### Patch Versions (`x.y.Z`) - -Upgrades between patch versions are transparent, with no significant disruption -to your applications. As such, you can expect to be automatically upgraded to -the latest patch version of your selected minor version shortly after it becomes -available in ArangoGraph. - -ArangoGraph aims to give approximately one week’s notice prior to upgrading your -deployments to the latest patch release. Although in exceptional circumstances -(such as a critical security issue) the upgrade may be triggered with less than -one week's notice. -The upgrade is carried out automatically. However, if you need the upgrade to be -deferred temporarily, contact the ArangoGraph Support team to request that. diff --git a/site/content/3.12/arangograph/migrate-to-the-cloud.md b/site/content/3.12/arangograph/migrate-to-the-cloud.md deleted file mode 100644 index 8a3f4a9802..0000000000 --- a/site/content/3.12/arangograph/migrate-to-the-cloud.md +++ /dev/null @@ -1,259 +0,0 @@ ---- -title: Cloud Migration Tool -menuTitle: Migrate to the cloud -weight: 30 -description: >- - Migrating data from bare metal servers to the cloud with minimal downtime -draft: true ---- -The `arangosync-migration` tool allows you to easily move from on-premises to -the cloud while ensuring a smooth transition with minimal downtime. -Start the cloud migration, let the tool do the job and, at the same time, -keep your local cluster up and running. - -Some of the key benefits of the cloud migration tool include: -- Safety comes first - pre-checks and potential failures are carefully handled. -- Your data is secure and fully encrypted. -- Ease-of-use with a live migration while your local cluster is still in use. -- Get access to what a cloud-based fully managed service has to offer: - high availability and reliability, elastic scalability, and much more. - -## Downloading the tool - -The `arangosync-migration` tool is available to download for the following -operating systems: - -**Linux** -- [AMD64 (x86_64) architecture](https://download.arangodb.com/arangosync-migration/linux/amd64/arangosync-migration) -- [ARM64 (AArch64) architecture](https://download.arangodb.com/arangosync-migration/linux/arm64/arangosync-migration) - -**macOS / Darwin** -- [AMD64 (x86_64) architecture](https://download.arangodb.com/arangosync-migration/darwin/amd64/arangosync-migration) -- [ARM64 (AArch64) architecture](https://download.arangodb.com/arangosync-migration/darwin/arm64/arangosync-migration) - -**Windows** -- [AMD64 (x86_64) architecture](https://download.arangodb.com/arangosync-migration/windows/amd64/arangosync-migration.exe) -- [ARM64 (AArch64) architecture](https://download.arangodb.com/arangosync-migration/windows/arm64/arangosync-migration.exe) - -For macOS as well as other Unix-based operating systems, run the following -command to make sure you can execute the binary: - -```bash -chmod 755 ./arangosync-migration -``` - -## Prerequisites - -Before getting started, make sure the following prerequisites are in place: - -- Go to the [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home) - and sign in. If you don’t have an account yet, sign-up to create one. - -- Generate an ArangoGraph API key and API secret. See a detailed guide on - [how to create an API key](api/set-up-a-connection.md#creating-an-api-key). - -{{< info >}} -The cloud migration tool is only available for clusters. -{{< /info >}} - -### Setting up the target deployment in ArangoGraph - -Continue by [creating a new ArangoGraph deployment](deployments/_index.md#how-to-create-a-new-deployment) -or choose an existing one. - -The target deployment in ArangoGraph requires specific configuration rules to be -set up before the migration can start: - -- **Configuration settings**: The target deployment must be compatible with the - source data cluster. This includes the ArangoDB version that is being used, - the DB-Servers count, and disk space. -- **Deployment region and cloud provider**: Choose the closest region to your - data cluster. This factor can speed up your migration to the cloud. - -After setting up your ArangoGraph deployment, wait for a few minutes for it to become -fully operational. - -{{< info >}} -Note that Developer mode deployments are not supported. -{{< /info >}} - -## Running the migration tool - -The `arangosync-migration` tool provides a set of commands that allow you to: -- start the migration process -- check whether your source and target clusters are fully compatible -- get the current status of the migration process -- stop or abort the migration process -- switch the local cluster to read-only mode - -### Starting the migration process - -To start the migration process, run the following command: - -```bash -arangosync-migration start -``` -The `start` command runs some pre-checks. Among other things, it measures -the disk space which is occupied by your ArangoDB cluster. If you are using the -same data volume for ArangoDB servers and other data as well, the measurements -can be incorrect. Provide the `--source.ignore-metrics` option to overcome this. - -You also have the option of doing a `--check-only` without starting the actual -migration. If specified, this checks if your local cluster and target deployment -are compatible without sending any data to ArangoGraph. - -Once the migration starts, the local cluster enters into monitoring mode and the -synchronization status is displayed in real-time. If you don't want to see the -status you can terminate this process, as the underlying agent process -continues to work. If something goes wrong, restarting the same command restores -the replication state. - -To restart the migration, first `stop` or `stop --abort` the migration. Then, -start it again using the `start` command. - -{{< warning >}} -Starting the migration creates a full copy of all data from the source cluster -to the target deployment in ArangoGraph. All data that has previously existed in the -target deployment will be lost. -{{< /warning >}} - -### During the migration - -The following takes place during an active migration: -- The source data cluster remains usable. -- The target deployment in ArangoGraph is switched to read-only mode. -- Your root user password is not copied to the target deployment in ArangoGraph. - To get your root password, select the target deployment from the ArangoGraph - Dashboard and go to the **Overview** tab. All other users are fully synchronized. - -{{< warning >}} -The migration tool increases the CPU and memory usage of the server you are -running it on. Depending on your ArangoDB usage pattern, it may take a lot of CPU -to handle the replication. You can stop the migration process anytime -if you see any problems. -{{< /warning >}} - -```bash -./arangosync-migration start \ - --source.endpoint=$COORDINATOR_ENDPOINT \ - --source.jwt-secret=/path-to/jwt-secret.file \ - --arango-graph.api-key=$ARANGO_GRAPH_API_KEY \ - --arango-graph.api-secret=$ARANGO_GRAPH_API_SECRET \ - --arango-graph.deployment-id=$ARANGO_GRAPH_DEPLOYMENT_ID -``` - -### How long does it take? - -The total time required to complete the migration depends on how much data you -have and how often write operations are executed during the process. - -You can also track the progress by checking the **Migration status** section of -your target deployment in ArangoGraph dashboard. - -![ArangoGraph Cloud Migration Progress](../../images/arangograph-migration-agent.png) - -### Getting the current status - -To print the current status of the migration, run the following command: - -```bash -./arangosync-migration status \ - --arango-graph.api-key=$ARANGO_GRAPH_API_KEY \ - --arango-graph.api-secret=$ARANGO_GRAPH_API_SECRET \ - --arango-graph.deployment-id=$ARANGO_GRAPH_DEPLOYMENT_ID -``` - -You can also add the `--watch` option to start monitoring the status in real-time. - -### Stopping the migration process - -The `arangosync-migration stop` command stops the migration and terminates -the migration agent process. - -If replication is running normally, the command waits until all shards are -in sync. The local cluster is then switched into read-only mode. -After all shards are in-sync and the migration stopped, the target deployment -is switched into the mode specified in `--source.server-mode` option. If no -option is specified, it defaults to the read/write mode. - -```bash -./arangosync-migration stop \ - --arango-graph.api-key=$ARANGO_GRAPH_API_KEY \ - --arango-graph.api-secret=$ARANGO_GRAPH_API_SECRET \ - --arango-graph.deployment-id=$ARANGO_GRAPH_DEPLOYMENT_ID -``` - -The additional `--abort` option is supported. If specified, the `stop` command -will not check anymore if both deployments are in-sync and stops all -migration-related processes as soon as possible. - -### Switching the local cluster to read-only mode - -The `arangosync-migration set-server-mode` command allows switching -[read-only mode](../develop/http-api/administration.md#set-the-server-mode-to-read-only-or-default) -for your local cluster on and off. - -In a read-only mode, all write operations are going to fail with an error code -of `1004` (ERROR_READ_ONLY). -Creating or dropping databases and collections are also going to fail with -error code `11` (ERROR_FORBIDDEN). - -```bash -./arangosync-migration set-server-mode \ - --source.endpoint=$COORDINATOR_ENDPOINT \ - --source.jwt-secret=/path-to/jwt-secret.file \ - --source.server-mode=readonly -``` -The `--source.server-mode` option allows you to specify the desired server mode. -Allowed values are `readonly` or `default`. - -### Supported environment variables - -The `arangosync-migration` tool supports the following environment variables: - -- `$ARANGO_GRAPH_API_KEY` -- `$ARANGO_GRAPH_API_SECRET` -- `$ARANGO_GRAPH_DEPLOYMENT_ID` - -Using these environment variables is highly recommended to ensure a secure way -of providing sensitive data to the application. - -### Restrictions and limitations - -When running the migration, ensure that your target deployment has the same (or -bigger) amount of resources (CPU, RAM) than your cluster. Otherwise, the -migration process might get stuck or require manual intervention. This is closely -connected to the type of data you have and how it is distributed between shards -and collections. - -In general, the most important parameters are: -- Total number of leader shards -- The amount of data in bytes per collection - -Both parameters can be retrieved from the ArangoDB Web Interface. - -The `arangosync-migration` tool supports migrating large datasets of up to -5 TB of data and 3800 leader shards, as well as collections as big as 250 GB. - -In case you have any questions, please -[reach out to us](https://www.arangodb.com/contact). - -## Cloud migration workflow for minimal downtime - -1. Download and start the `arangosync-migration` tool. The target deployment - is switched into read-only mode automatically. -2. Wait until all shards are in sync. You can use the `status` or the `start` - command with the same parameters to track that. -3. Optionally, when all shards are in-sync, you can switch your applications - to use the endpoint of the ArangoGraph deployment, but note that it stays in - read-only mode until the migration process is fully completed. -4. Stop the migration using the `stop` subcommand. The following steps are executed: - - The source data cluster is switched into read-only mode. - - It waits until all shards are synchronized. - - The target deployment is switched into default read/write mode. - - {{< info >}} - If you switched the source data cluster into read-only mode, - you can switch it back to default (read/write) mode using the - `set-server-mode` subcommand. - {{< /info >}} diff --git a/site/content/3.12/arangograph/oasisctl/_index.md b/site/content/3.12/arangograph/oasisctl/_index.md deleted file mode 100644 index 9d22a68e31..0000000000 --- a/site/content/3.12/arangograph/oasisctl/_index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Oasisctl -menuTitle: Oasisctl -weight: 65 -description: >- - Command-line client tool for managing the ArangoGraph Insights Platform ---- -Oasisctl is a command-line tool for using the [ArangoGraph API](../api/_index.md). -This tool makes integration of ArangoGraph in all kinds of (bash) scripts easy. -It is also a good example on how to use the API. - -See [Getting started with Oasisctl](../api/get-started.md) for a -tutorial. - -Oasisctl is available for Linux, macOS and Windows. -Download and source code: - -[github.com/arangodb-managed/oasisctl](https://github.com/arangodb-managed/oasisctl/) diff --git a/site/content/3.12/arangograph/oasisctl/accept/_index.md b/site/content/3.12/arangograph/oasisctl/accept/_index.md deleted file mode 100644 index e9c0e05a01..0000000000 --- a/site/content/3.12/arangograph/oasisctl/accept/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Accept -menuTitle: Accept -weight: 2 ---- -## oasisctl accept - -Accept invites - -``` -oasisctl accept [flags] -``` - -## Options -``` - -h, --help help for accept -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl accept organization](accept-organization.md) - Accept organization related invites - diff --git a/site/content/3.12/arangograph/oasisctl/accept/accept-organization-invite.md b/site/content/3.12/arangograph/oasisctl/accept/accept-organization-invite.md deleted file mode 100644 index 3f52fbb67b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/accept/accept-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Accept Organization Invite -menuTitle: Accept Organization Invite -weight: 2 ---- -## oasisctl accept organization invite - -Accept an organization invite the authenticated user has access to - -``` -oasisctl accept organization invite [flags] -``` - -## Options -``` - -h, --help help for invite - -i, --invite-id string Identifier of the organization invite - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl accept organization](accept-organization.md) - Accept organization related invites - diff --git a/site/content/3.12/arangograph/oasisctl/accept/accept-organization.md b/site/content/3.12/arangograph/oasisctl/accept/accept-organization.md deleted file mode 100644 index f4d5310a16..0000000000 --- a/site/content/3.12/arangograph/oasisctl/accept/accept-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Accept Organization -menuTitle: Accept Organization -weight: 1 ---- -## oasisctl accept organization - -Accept organization related invites - -``` -oasisctl accept organization [flags] -``` - -## Options -``` - -h, --help help for organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl accept](_index.md) - Accept invites -* [oasisctl accept organization invite](accept-organization-invite.md) - Accept an organization invite the authenticated user has access to - diff --git a/site/content/3.12/arangograph/oasisctl/add/_index.md b/site/content/3.12/arangograph/oasisctl/add/_index.md deleted file mode 100644 index c44318f848..0000000000 --- a/site/content/3.12/arangograph/oasisctl/add/_index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Add -menuTitle: Add -weight: 3 ---- -## oasisctl add - -Add resources - -``` -oasisctl add [flags] -``` - -## Options -``` - -h, --help help for add -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl add auditlog](add-auditlog.md) - Add auditlog resources -* [oasisctl add group](add-group.md) - Add group resources - diff --git a/site/content/3.12/arangograph/oasisctl/add/add-auditlog-destination.md b/site/content/3.12/arangograph/oasisctl/add/add-auditlog-destination.md deleted file mode 100644 index 378e456833..0000000000 --- a/site/content/3.12/arangograph/oasisctl/add/add-auditlog-destination.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Oasisctl Add Audit Log Destination -menuTitle: Add Audit Log Destination -weight: 2 ---- -## oasisctl add auditlog destination - -Add a destination to an auditlog. - -``` -oasisctl add auditlog destination [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog - --destination-excluded-topics strings Do not send audit events with these topics to this destination. - --destination-https-client-certificate-pem string PEM encoded public key of the client certificate. - --destination-https-client-key-pem string PEM encoded private key of the client certificate. - --destination-https-headers strings A key=value formatted list of headers for the request. Repeating headers are allowed. - --destination-https-trusted-server-ca-pem string PEM encoded public key of the CA used to sign the server TLS certificate. If empty, a well known CA is expected. - --destination-https-url string URL of the server to POST to. Scheme must be HTTPS. - --destination-type string Type of destination. Possible values are: "cloud", "https-post" - -h, --help help for destination - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl add auditlog](add-auditlog.md) - Add auditlog resources - diff --git a/site/content/3.12/arangograph/oasisctl/add/add-auditlog.md b/site/content/3.12/arangograph/oasisctl/add/add-auditlog.md deleted file mode 100644 index dca21fda97..0000000000 --- a/site/content/3.12/arangograph/oasisctl/add/add-auditlog.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Add Audit Log -menuTitle: Add Audit Log -weight: 1 ---- -## oasisctl add auditlog - -Add auditlog resources - -``` -oasisctl add auditlog [flags] -``` - -## Options -``` - -h, --help help for auditlog -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl add](_index.md) - Add resources -* [oasisctl add auditlog destination](add-auditlog-destination.md) - Add a destination to an auditlog. - diff --git a/site/content/3.12/arangograph/oasisctl/add/add-group-members.md b/site/content/3.12/arangograph/oasisctl/add/add-group-members.md deleted file mode 100644 index db2677d276..0000000000 --- a/site/content/3.12/arangograph/oasisctl/add/add-group-members.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Add Group Members -menuTitle: Add Group Members -weight: 4 ---- -## oasisctl add group members - -Add members to group - -``` -oasisctl add group members [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group to add members to - -h, --help help for members - -o, --organization-id string Identifier of the organization - -u, --user-emails strings A comma separated list of user email addresses -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl add group](add-group.md) - Add group resources - diff --git a/site/content/3.12/arangograph/oasisctl/add/add-group.md b/site/content/3.12/arangograph/oasisctl/add/add-group.md deleted file mode 100644 index a51b0b7102..0000000000 --- a/site/content/3.12/arangograph/oasisctl/add/add-group.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Add Group -menuTitle: Add Group -weight: 3 ---- -## oasisctl add group - -Add group resources - -``` -oasisctl add group [flags] -``` - -## Options -``` - -h, --help help for group -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl add](_index.md) - Add resources -* [oasisctl add group members](add-group-members.md) - Add members to group - diff --git a/site/content/3.12/arangograph/oasisctl/auditlog/_index.md b/site/content/3.12/arangograph/oasisctl/auditlog/_index.md deleted file mode 100644 index fd71b3b653..0000000000 --- a/site/content/3.12/arangograph/oasisctl/auditlog/_index.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Audit Log -menuTitle: Audit Log -weight: 4 ---- -## oasisctl auditlog - -AuditLog resources - -``` -oasisctl auditlog [flags] -``` - -## Options -``` - -h, --help help for auditlog -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl auditlog attach](auditlog-attach.md) - Attach a project to an audit log -* [oasisctl auditlog detach](auditlog-detach.md) - Detach a project from an auditlog -* [oasisctl auditlog get](auditlog-get.md) - Audit log get resources - diff --git a/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-attach.md b/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-attach.md deleted file mode 100644 index 7ffcd50360..0000000000 --- a/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-attach.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Audit Log Attach -menuTitle: Audit Log Attach -weight: 1 ---- -## oasisctl auditlog attach - -Attach a project to an audit log - -``` -oasisctl auditlog attach [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog to attach to. - -h, --help help for attach - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog](_index.md) - AuditLog resources - diff --git a/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-detach.md b/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-detach.md deleted file mode 100644 index 4043614c32..0000000000 --- a/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-detach.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Audit Log Detach -menuTitle: Audit Log Detach -weight: 2 ---- -## oasisctl auditlog detach - -Detach a project from an auditlog - -``` -oasisctl auditlog detach [flags] -``` - -## Options -``` - -h, --help help for detach - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog](_index.md) - AuditLog resources - diff --git a/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md b/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md deleted file mode 100644 index b4c2a69666..0000000000 --- a/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Audit Log Get Attached Project -menuTitle: Audit Log Get Attached Project -weight: 5 ---- -## oasisctl auditlog get attached project - -Get an attached log to a project - -``` -oasisctl auditlog get attached project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog get attached](auditlog-get-attached.md) - Audit get attached resources - diff --git a/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-get-attached.md b/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-get-attached.md deleted file mode 100644 index 004400da64..0000000000 --- a/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-get-attached.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Audit Log Get Attached -menuTitle: Audit Log Get Attached -weight: 4 ---- -## oasisctl auditlog get attached - -Audit get attached resources - -``` -oasisctl auditlog get attached [flags] -``` - -## Options -``` - -h, --help help for attached -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog get](auditlog-get.md) - Audit log get resources -* [oasisctl auditlog get attached project](auditlog-get-attached-project.md) - Get an attached log to a project - diff --git a/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-get.md b/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-get.md deleted file mode 100644 index d3b170c666..0000000000 --- a/site/content/3.12/arangograph/oasisctl/auditlog/auditlog-get.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Audit Log Get -menuTitle: Audit Log Get -weight: 3 ---- -## oasisctl auditlog get - -Audit log get resources - -``` -oasisctl auditlog get [flags] -``` - -## Options -``` - -h, --help help for get -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog](_index.md) - AuditLog resources -* [oasisctl auditlog get attached](auditlog-get-attached.md) - Audit get attached resources - diff --git a/site/content/3.12/arangograph/oasisctl/backup/_index.md b/site/content/3.12/arangograph/oasisctl/backup/_index.md deleted file mode 100644 index 2a19e74e37..0000000000 --- a/site/content/3.12/arangograph/oasisctl/backup/_index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Backup -menuTitle: Backup -weight: 5 ---- -## oasisctl backup - -Backup commands - -``` -oasisctl backup [flags] -``` - -## Options -``` - -h, --help help for backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl backup copy](backup-copy.md) - Copy a backup from source backup to given region -* [oasisctl backup download](backup-download.md) - Download a backup - diff --git a/site/content/3.12/arangograph/oasisctl/backup/backup-copy.md b/site/content/3.12/arangograph/oasisctl/backup/backup-copy.md deleted file mode 100644 index b492b5d92b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/backup/backup-copy.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Backup Copy -menuTitle: Backup Copy -weight: 1 ---- -## oasisctl backup copy - -Copy a backup from source backup to given region - -``` -oasisctl backup copy [flags] -``` - -## Options -``` - -h, --help help for copy - --region-id string Identifier of the region where the new backup is to be created - --source-backup-id string Identifier of the source backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl backup](_index.md) - Backup commands - diff --git a/site/content/3.12/arangograph/oasisctl/backup/backup-download.md b/site/content/3.12/arangograph/oasisctl/backup/backup-download.md deleted file mode 100644 index b458b57b48..0000000000 --- a/site/content/3.12/arangograph/oasisctl/backup/backup-download.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Backup Download -menuTitle: Backup Download -weight: 2 ---- -## oasisctl backup download - -Download a backup - -## Synopsis -Download a backup from the cloud storage to the local deployment disks, so it can be restored. - -``` -oasisctl backup download [flags] -``` - -## Options -``` - -h, --help help for download - -i, --id string Identifier of the backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl backup](_index.md) - Backup commands - diff --git a/site/content/3.12/arangograph/oasisctl/clone/_index.md b/site/content/3.12/arangograph/oasisctl/clone/_index.md deleted file mode 100644 index 7edaf4178e..0000000000 --- a/site/content/3.12/arangograph/oasisctl/clone/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Clone -menuTitle: Clone -weight: 6 ---- -## oasisctl clone - -Clone resources - -``` -oasisctl clone [flags] -``` - -## Options -``` - -h, --help help for clone -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl clone deployment](clone-deployment.md) - Clone deployment resources - diff --git a/site/content/3.12/arangograph/oasisctl/clone/clone-deployment-backup.md b/site/content/3.12/arangograph/oasisctl/clone/clone-deployment-backup.md deleted file mode 100644 index 5f98d22b91..0000000000 --- a/site/content/3.12/arangograph/oasisctl/clone/clone-deployment-backup.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Clone Deployment Backup -menuTitle: Clone Deployment Backup -weight: 2 ---- -## oasisctl clone deployment backup - -Clone a deployment from a backup. - -``` -oasisctl clone deployment backup [flags] -``` - -## Options -``` - --accept Accept the current terms and conditions. - -b, --backup-id string Clone a deployment from a backup using the backup's ID. - -h, --help help for backup - -o, --organization-id string Identifier of the organization to create the clone in - -p, --project-id string An optional identifier of the project to create the clone in - -r, --region-id string An optionally defined region in which the new deployment should be created in. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl clone deployment](clone-deployment.md) - Clone deployment resources - diff --git a/site/content/3.12/arangograph/oasisctl/clone/clone-deployment.md b/site/content/3.12/arangograph/oasisctl/clone/clone-deployment.md deleted file mode 100644 index 0b76d1fec8..0000000000 --- a/site/content/3.12/arangograph/oasisctl/clone/clone-deployment.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Clone Deployment -menuTitle: Clone Deployment -weight: 1 ---- -## oasisctl clone deployment - -Clone deployment resources - -``` -oasisctl clone deployment [flags] -``` - -## Options -``` - -h, --help help for deployment -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl clone](_index.md) - Clone resources -* [oasisctl clone deployment backup](clone-deployment-backup.md) - Clone a deployment from a backup. - diff --git a/site/content/3.12/arangograph/oasisctl/completion.md b/site/content/3.12/arangograph/oasisctl/completion.md deleted file mode 100644 index 9cd58cd4f6..0000000000 --- a/site/content/3.12/arangograph/oasisctl/completion.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Oasisctl Completion -menuTitle: Completion -weight: 7 ---- -## oasisctl completion - -Generates bash completion scripts - -## Synopsis -To load completion run - - . <(oasisctl completion [bash|fish|powershell|zsh]) - -To configure your bash shell to load completions for each session add to your bashrc - - # ~/.bashrc or ~/.profile - . <(oasisctl completion bash) - - -``` -oasisctl completion [flags] -``` - -## Options -``` - -h, --help help for completion -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.12/arangograph/oasisctl/create/_index.md b/site/content/3.12/arangograph/oasisctl/create/_index.md deleted file mode 100644 index 87ef865918..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/_index.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Oasisctl Create -menuTitle: Create -weight: 8 ---- -## oasisctl create - -Create resources - -``` -oasisctl create [flags] -``` - -## Options -``` - -h, --help help for create -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl create apikey](create-apikey.md) - Create a new API key -* [oasisctl create auditlog](create-auditlog.md) - Create an auditlog -* [oasisctl create backup](create-backup.md) - Create backup ... -* [oasisctl create cacertificate](create-cacertificate.md) - Create a new CA certificate -* [oasisctl create deployment](create-deployment.md) - Create a new deployment -* [oasisctl create example](create-example.md) - Create example ... -* [oasisctl create group](create-group.md) - Create a new group -* [oasisctl create ipallowlist](create-ipallowlist.md) - Create a new IP allowlist -* [oasisctl create metrics](create-metrics.md) - Create metrics resources -* [oasisctl create notebook](create-notebook.md) - Create a new notebook -* [oasisctl create organization](create-organization.md) - Create a new organization -* [oasisctl create private](create-private.md) - Create private resources -* [oasisctl create project](create-project.md) - Create a new project -* [oasisctl create role](create-role.md) - Create a new role - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-apikey.md b/site/content/3.12/arangograph/oasisctl/create/create-apikey.md deleted file mode 100644 index 1177d5cc67..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-apikey.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Create API Key -menuTitle: Create API Key -weight: 1 ---- -## oasisctl create apikey - -Create a new API key - -``` -oasisctl create apikey [flags] -``` - -## Options -``` - -h, --help help for apikey - -o, --organization-id string If set, the newly created API key will grant access to this organization only - --readonly If set, the newly created API key will grant readonly access only -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-auditlog.md b/site/content/3.12/arangograph/oasisctl/create/create-auditlog.md deleted file mode 100644 index 5863da66e8..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-auditlog.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Create Audit Log -menuTitle: Create Audit Log -weight: 2 ---- -## oasisctl create auditlog - -Create an auditlog - -``` -oasisctl create auditlog [flags] -``` - -## Options -``` - --default If set, this AuditLog is the default for the organization. - --description string Description of the audit log. - -h, --help help for auditlog - --name string Name of the audit log. - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-backup-policy.md b/site/content/3.12/arangograph/oasisctl/create/create-backup-policy.md deleted file mode 100644 index 99f899b951..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-backup-policy.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Oasisctl Create Backup Policy -menuTitle: Create Backup Policy -weight: 4 ---- -## oasisctl create backup policy - -Create a new backup policy - -``` -oasisctl create backup policy [flags] -``` - -## Options -``` - --additional-region-ids strings Add backup to the specified addition regions - --day-of-the-month int32 Run the backup on the specified day of the month (1-31) (default 1) - --deployment-id string ID of the deployment - --description string Description of the backup policy - --email-notification string Email notification setting (Never|FailureOnly|Always) - --every-interval-hours int32 Schedule should run with an interval of the specified hours (1-23) - --friday If set, a backup will be created on Fridays. - -h, --help help for policy - --hours int32 Hours part of the time of day (0-23) - --minutes int32 Minutes part of the time of day (0-59) - --minutes-offset int32 Schedule should run with specific minutes offset (0-59) - --monday If set, a backup will be created on Mondays - --name string Name of the deployment - --paused The policy is paused - --retention-period int Backups created by this policy will be automatically deleted after the specified retention period. A value of 0 means that backup will never be deleted. - --saturday If set, a backup will be created on Saturdays - --schedule-type string Schedule of the policy (Hourly|Daily|Monthly) - --sunday If set, a backup will be created on Sundays - --thursday If set, a backup will be created on Thursdays - --time-zone string The time-zone this time of day applies to (empty means UTC). Names MUST be exactly as defined in RFC-822. (default "UTC") - --tuesday If set, a backup will be created on Tuesdays - --upload The backup should be uploaded - --wednesday If set, a backup will be created on Wednesdays -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create backup](create-backup.md) - Create backup ... - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-backup.md b/site/content/3.12/arangograph/oasisctl/create/create-backup.md deleted file mode 100644 index 8ca544206c..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-backup.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Create Backup -menuTitle: Create Backup -weight: 3 ---- -## oasisctl create backup - -Create backup ... - -``` -oasisctl create backup [flags] -``` - -## Options -``` - --auto-deleted-at int Time (h) until auto delete of the backup - --deployment-id string ID of the deployment - --description string Description of the backup - -h, --help help for backup - --name string Name of the deployment - --upload The backup should be uploaded -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create backup policy](create-backup-policy.md) - Create a new backup policy - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-cacertificate.md b/site/content/3.12/arangograph/oasisctl/create/create-cacertificate.md deleted file mode 100644 index b27b6e7db8..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-cacertificate.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Create CA Certificate -menuTitle: Create CA Certificate -weight: 5 ---- -## oasisctl create cacertificate - -Create a new CA certificate - -``` -oasisctl create cacertificate [flags] -``` - -## Options -``` - --description string Description of the CA certificate - -h, --help help for cacertificate - --lifetime duration Lifetime of the CA certificate. - --name string Name of the CA certificate - -o, --organization-id string Identifier of the organization to create the CA certificate in - -p, --project-id string Identifier of the project to create the CA certificate in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-deployment.md b/site/content/3.12/arangograph/oasisctl/create/create-deployment.md deleted file mode 100644 index c9f633fd99..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-deployment.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Oasisctl Create Deployment -menuTitle: Create Deployment -weight: 6 ---- -## oasisctl create deployment - -Create a new deployment - -``` -oasisctl create deployment [flags] -``` - -## Options -``` - --accept Accept the current terms and conditions. - -c, --cacertificate-id string Identifier of the CA certificate to use for the deployment - --coordinator-memory-size int32 Set memory size of Coordinators for flexible deployments (GiB) (default 4) - --coordinators int32 Set number of Coordinators for flexible deployments (default 3) - --custom-image string Set a custom image to use for the deployment. Only available for selected customers. - --dbserver-disk-size int32 Set disk size of DB-Servers for flexible deployments (GiB) (default 32) - --dbserver-memory-size int32 Set memory size of DB-Servers for flexible deployments (GiB) (default 4) - --dbservers int32 Set number of DB-Servers for flexible deployments (default 3) - --deployment-profile-id string Set the Deployment Profile to use for this deployment. - --description string Description of the deployment - --disable-foxx-authentication Disable authentication of requests to Foxx application. - --disk-performance-id string Set the disk performance to use for this deployment. - --drop-vst-support Drop VST protocol support to improve resilience. - -h, --help help for deployment - -i, --ipallowlist-id string Identifier of the IP allowlist to use for the deployment - --is-platform-authentication-enabled Enable platform authentication for deployment. - --max-node-disk-size int32 Set maximum disk size for nodes for autoscaler (GiB) - --model string Set model of the deployment (default "oneshard") - --name string Name of the deployment - --node-count int32 Set the number of desired nodes (default 3) - --node-disk-size int32 Set disk size for nodes (GiB) - --node-size-id string Set the node size to use for this deployment - --notification-email-address strings Set email address(-es) that will be used for notifications related to this deployment. - -o, --organization-id string Identifier of the organization to create the deployment in - -p, --project-id string Identifier of the project to create the deployment in - -r, --region-id string Identifier of the region to create the deployment in - --version string Version of ArangoDB to use for the deployment (default "default") -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-example-installation.md b/site/content/3.12/arangograph/oasisctl/create/create-example-installation.md deleted file mode 100644 index 121d13dccd..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-example-installation.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Create Example Installation -menuTitle: Create Example Installation -weight: 8 ---- -## oasisctl create example installation - -Create a new example dataset installation - -``` -oasisctl create example installation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to list installations for - -e, --example-dataset-id string ID of the example dataset - -h, --help help for installation - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create example](create-example.md) - Create example ... - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-example.md b/site/content/3.12/arangograph/oasisctl/create/create-example.md deleted file mode 100644 index 5b1a50cf0e..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-example.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Create Example -menuTitle: Create Example -weight: 7 ---- -## oasisctl create example - -Create example ... - -``` -oasisctl create example [flags] -``` - -## Options -``` - -h, --help help for example -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create example installation](create-example-installation.md) - Create a new example dataset installation - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-group.md b/site/content/3.12/arangograph/oasisctl/create/create-group.md deleted file mode 100644 index d28e7ec7d2..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-group.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Create Group -menuTitle: Create Group -weight: 9 ---- -## oasisctl create group - -Create a new group - -``` -oasisctl create group [flags] -``` - -## Options -``` - --description string Description of the group - -h, --help help for group - --name string Name of the group - -o, --organization-id string Identifier of the organization to create the group in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-ipallowlist.md b/site/content/3.12/arangograph/oasisctl/create/create-ipallowlist.md deleted file mode 100644 index 07f4308515..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-ipallowlist.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Create IP Allowlist -menuTitle: Create IP Allowlist -weight: 10 ---- -## oasisctl create ipallowlist - -Create a new IP allowlist - -``` -oasisctl create ipallowlist [flags] -``` - -## Options -``` - --cidr-range strings List of CIDR ranges from which deployments are accessible - --description string Description of the IP allowlist - -h, --help help for ipallowlist - --name string Name of the IP allowlist - -o, --organization-id string Identifier of the organization to create the IP allowlist in - -p, --project-id string Identifier of the project to create the IP allowlist in - --remote-inspection-allowed If set, remote connectivity checks by the Oasis platform are allowed -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-metrics-token.md b/site/content/3.12/arangograph/oasisctl/create/create-metrics-token.md deleted file mode 100644 index a5e0e9a9dd..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-metrics-token.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Create Metrics Token -menuTitle: Create Metrics Token -weight: 12 ---- -## oasisctl create metrics token - -Create a new metrics access token - -``` -oasisctl create metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to create the token for - --description string Description of the token - -h, --help help for token - --lifetime duration Lifetime of the token. - --name string Name of the token - -o, --organization-id string Identifier of the organization to create the token in - -p, --project-id string Identifier of the project to create the token in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create metrics](create-metrics.md) - Create metrics resources - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-metrics.md b/site/content/3.12/arangograph/oasisctl/create/create-metrics.md deleted file mode 100644 index d504981b04..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Create Metrics -menuTitle: Create Metrics -weight: 11 ---- -## oasisctl create metrics - -Create metrics resources - -``` -oasisctl create metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create metrics token](create-metrics-token.md) - Create a new metrics access token - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-notebook.md b/site/content/3.12/arangograph/oasisctl/create/create-notebook.md deleted file mode 100644 index 8e1f2dcd53..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-notebook.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Oasisctl Create Notebook -menuTitle: Create Notebook -weight: 13 ---- -## oasisctl create notebook - -Create a new notebook - -``` -oasisctl create notebook [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment that the notebook has to run next to - --description string Description of the notebook - -s, --disk-size int32 Disk size in GiB that has to be attached to given notebook - -h, --help help for notebook - -n, --name string Name of the notebook - -m, --notebook-model string Identifier of the notebook model that the notebook has to use - -o, --organization-id string Identifier of the organization to create the notebook in - -p, --project-id string Identifier of the project to create the notebook in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-organization-invite.md b/site/content/3.12/arangograph/oasisctl/create/create-organization-invite.md deleted file mode 100644 index 3fbe04a1fe..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Create Organization Invite -menuTitle: Create Organization Invite -weight: 15 ---- -## oasisctl create organization invite - -Create a new invite to an organization - -``` -oasisctl create organization invite [flags] -``` - -## Options -``` - --email string Email address of the person to invite - -h, --help help for invite - -o, --organization-id string Identifier of the organization to create the invite in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create organization](create-organization.md) - Create a new organization - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-organization.md b/site/content/3.12/arangograph/oasisctl/create/create-organization.md deleted file mode 100644 index 8ca1b9065b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-organization.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Create Organization -menuTitle: Create Organization -weight: 14 ---- -## oasisctl create organization - -Create a new organization - -``` -oasisctl create organization [flags] -``` - -## Options -``` - --description string Description of the organization - -h, --help help for organization - --name string Name of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create organization invite](create-organization-invite.md) - Create a new invite to an organization - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-private-endpoint-service.md b/site/content/3.12/arangograph/oasisctl/create/create-private-endpoint-service.md deleted file mode 100644 index 01999a99ce..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-private-endpoint-service.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Oasisctl Create Private Endpoint Service -menuTitle: Create Private Endpoint Service -weight: 18 ---- -## oasisctl create private endpoint service - -Create a Private Endpoint Service attached to an existing deployment - -``` -oasisctl create private endpoint service [flags] -``` - -## Options -``` - --alternate-dns-name strings DNS names used for the deployment in the private network - --aws-principal strings List of AWS Principals from which a Private Endpoint can be created (Format: <AccountID>[/Role/<RoleName>|/User/<UserName>]) - --azure-client-subscription-id strings List of Azure subscription IDs from which a Private Endpoint can be created - -d, --deployment-id string Identifier of the deployment that the private endpoint service is connected to - --description string Description of the private endpoint service - --enable-private-dns Enable private DNS for the deployment (applicable for AWS and GKE only) - --gcp-project strings List of GCP projects from which a Private Endpoint can be created - -h, --help help for service - --name string Name of the private endpoint service - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create private endpoint](create-private-endpoint.md) - - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-private-endpoint.md b/site/content/3.12/arangograph/oasisctl/create/create-private-endpoint.md deleted file mode 100644 index cac7dbfcb7..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-private-endpoint.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Create Private Endpoint -menuTitle: Create Private Endpoint -weight: 17 ---- -## oasisctl create private endpoint - - - -``` -oasisctl create private endpoint [flags] -``` - -## Options -``` - -h, --help help for endpoint -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create private](create-private.md) - Create private resources -* [oasisctl create private endpoint service](create-private-endpoint-service.md) - Create a Private Endpoint Service attached to an existing deployment - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-private.md b/site/content/3.12/arangograph/oasisctl/create/create-private.md deleted file mode 100644 index 3cb40e735b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-private.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Create Private -menuTitle: Create Private -weight: 16 ---- -## oasisctl create private - -Create private resources - -``` -oasisctl create private [flags] -``` - -## Options -``` - -h, --help help for private -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create private endpoint](create-private-endpoint.md) - - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-project.md b/site/content/3.12/arangograph/oasisctl/create/create-project.md deleted file mode 100644 index 59d997efb7..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-project.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Create Project -menuTitle: Create Project -weight: 19 ---- -## oasisctl create project - -Create a new project - -``` -oasisctl create project [flags] -``` - -## Options -``` - --description string Description of the project - -h, --help help for project - --name string Name of the project - -o, --organization-id string Identifier of the organization to create the project in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.12/arangograph/oasisctl/create/create-role.md b/site/content/3.12/arangograph/oasisctl/create/create-role.md deleted file mode 100644 index 52cec0a672..0000000000 --- a/site/content/3.12/arangograph/oasisctl/create/create-role.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Create Role -menuTitle: Create Role -weight: 20 ---- -## oasisctl create role - -Create a new role - -``` -oasisctl create role [flags] -``` - -## Options -``` - --description string Description of the role - -h, --help help for role - --name string Name of the role - -o, --organization-id string Identifier of the organization to create the role in - -p, --permission strings Permissions granted by the role -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.12/arangograph/oasisctl/delete/_index.md b/site/content/3.12/arangograph/oasisctl/delete/_index.md deleted file mode 100644 index 75b76a80b6..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/_index.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Oasisctl Delete -menuTitle: Delete -weight: 9 ---- -## oasisctl delete - -Delete resources - -``` -oasisctl delete [flags] -``` - -## Options -``` - -h, --help help for delete -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl delete apikey](delete-apikey.md) - Delete an API key with given identifier -* [oasisctl delete auditlog](delete-auditlog.md) - Delete an auditlog -* [oasisctl delete backup](delete-backup.md) - Delete a backup for a given ID. -* [oasisctl delete cacertificate](delete-cacertificate.md) - Delete a CA certificate the authenticated user has access to -* [oasisctl delete deployment](delete-deployment.md) - Delete a deployment the authenticated user has access to -* [oasisctl delete example](delete-example.md) - Delete example ... -* [oasisctl delete group](delete-group.md) - Delete a group the authenticated user has access to -* [oasisctl delete ipallowlist](delete-ipallowlist.md) - Delete an IP allowlist the authenticated user has access to -* [oasisctl delete metrics](delete-metrics.md) - Delete metrics resources -* [oasisctl delete notebook](delete-notebook.md) - Delete a notebook -* [oasisctl delete organization](delete-organization.md) - Delete an organization the authenticated user has access to -* [oasisctl delete project](delete-project.md) - Delete a project the authenticated user has access to -* [oasisctl delete role](delete-role.md) - Delete a role the authenticated user has access to - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-apikey.md b/site/content/3.12/arangograph/oasisctl/delete/delete-apikey.md deleted file mode 100644 index d18236eac3..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-apikey.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Delete API Key -menuTitle: Delete API Key -weight: 1 ---- -## oasisctl delete apikey - -Delete an API key with given identifier - -``` -oasisctl delete apikey [flags] -``` - -## Options -``` - -i, --apikey-id string Identifier of the API key to delete - -h, --help help for apikey -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-auditlog-archive-events.md b/site/content/3.12/arangograph/oasisctl/delete/delete-auditlog-archive-events.md deleted file mode 100644 index d337652b7b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-auditlog-archive-events.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Audit Log Archive Events -menuTitle: Delete Audit Log Archive Events -weight: 4 ---- -## oasisctl delete auditlog archive events - -Delete auditlog archive events - -``` -oasisctl delete auditlog archive events [flags] -``` - -## Options -``` - -i, --auditlog-archive-id string Identifier of the auditlog archive to delete events from. - -h, --help help for events - --to string Remove events created before this timestamp. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete auditlog archive](delete-auditlog-archive.md) - Delete an auditlog archive - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-auditlog-archive.md b/site/content/3.12/arangograph/oasisctl/delete/delete-auditlog-archive.md deleted file mode 100644 index 59153bfbdd..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-auditlog-archive.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Audit Log Archive -menuTitle: Delete Audit Log Archive -weight: 3 ---- -## oasisctl delete auditlog archive - -Delete an auditlog archive - -``` -oasisctl delete auditlog archive [flags] -``` - -## Options -``` - -i, --auditlog-archive-id string Identifier of the auditlog archive to delete. - -h, --help help for archive -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete auditlog](delete-auditlog.md) - Delete an auditlog -* [oasisctl delete auditlog archive events](delete-auditlog-archive-events.md) - Delete auditlog archive events - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-auditlog-destination.md b/site/content/3.12/arangograph/oasisctl/delete/delete-auditlog-destination.md deleted file mode 100644 index 6dcb135925..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-auditlog-destination.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Delete Audit Log Destination -menuTitle: Delete Audit Log Destination -weight: 5 ---- -## oasisctl delete auditlog destination - -Delete a destination from an auditlog - -``` -oasisctl delete auditlog destination [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog to delete. - -h, --help help for destination - --index int Index of the destination to remove. Only one delete option can be specified. (default -1) - -o, --organization-id string Identifier of the organization. - --type string Type of the destination to remove. This will remove ALL destinations with that type. - --url string An optional URL which will be used to delete a single destination instead of all. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete auditlog](delete-auditlog.md) - Delete an auditlog - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-auditlog.md b/site/content/3.12/arangograph/oasisctl/delete/delete-auditlog.md deleted file mode 100644 index 6895de151f..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-auditlog.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Delete Audit Log -menuTitle: Delete Audit Log -weight: 2 ---- -## oasisctl delete auditlog - -Delete an auditlog - -``` -oasisctl delete auditlog [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog to delete. - -h, --help help for auditlog - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete auditlog archive](delete-auditlog-archive.md) - Delete an auditlog archive -* [oasisctl delete auditlog destination](delete-auditlog-destination.md) - Delete a destination from an auditlog - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-backup-policy.md b/site/content/3.12/arangograph/oasisctl/delete/delete-backup-policy.md deleted file mode 100644 index 99e8ac2deb..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-backup-policy.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Backup Policy -menuTitle: Delete Backup Policy -weight: 7 ---- -## oasisctl delete backup policy - -Delete a backup policy for a given ID. - -``` -oasisctl delete backup policy [flags] -``` - -## Options -``` - -h, --help help for policy - -i, --id string Identifier of the backup policy - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete backup](delete-backup.md) - Delete a backup for a given ID. - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-backup.md b/site/content/3.12/arangograph/oasisctl/delete/delete-backup.md deleted file mode 100644 index cf116f93a1..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-backup.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Backup -menuTitle: Delete Backup -weight: 6 ---- -## oasisctl delete backup - -Delete a backup for a given ID. - -``` -oasisctl delete backup [flags] -``` - -## Options -``` - -h, --help help for backup - -i, --id string Identifier of the backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete backup policy](delete-backup-policy.md) - Delete a backup policy for a given ID. - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-cacertificate.md b/site/content/3.12/arangograph/oasisctl/delete/delete-cacertificate.md deleted file mode 100644 index aad85c751b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-cacertificate.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete CA Certificate -menuTitle: Delete CA Certificate -weight: 8 ---- -## oasisctl delete cacertificate - -Delete a CA certificate the authenticated user has access to - -``` -oasisctl delete cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - -h, --help help for cacertificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-deployment.md b/site/content/3.12/arangograph/oasisctl/delete/delete-deployment.md deleted file mode 100644 index 15450ecb9b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-deployment.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Deployment -menuTitle: Delete Deployment -weight: 9 ---- -## oasisctl delete deployment - -Delete a deployment the authenticated user has access to - -``` -oasisctl delete deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-example-installation.md b/site/content/3.12/arangograph/oasisctl/delete/delete-example-installation.md deleted file mode 100644 index 569152227e..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-example-installation.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Delete Example Installation -menuTitle: Delete Example Installation -weight: 11 ---- -## oasisctl delete example installation - -Delete an example datasets installation - -``` -oasisctl delete example installation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to list installations for - -h, --help help for installation - --installation-id string The ID of the installation to delete. - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete example](delete-example.md) - Delete example ... - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-example.md b/site/content/3.12/arangograph/oasisctl/delete/delete-example.md deleted file mode 100644 index 9518b2d7d1..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-example.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Delete Example -menuTitle: Delete Example -weight: 10 ---- -## oasisctl delete example - -Delete example ... - -``` -oasisctl delete example [flags] -``` - -## Options -``` - -h, --help help for example -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete example installation](delete-example-installation.md) - Delete an example datasets installation - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-group-members.md b/site/content/3.12/arangograph/oasisctl/delete/delete-group-members.md deleted file mode 100644 index ae6dc82a96..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-group-members.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Group Members -menuTitle: Delete Group Members -weight: 13 ---- -## oasisctl delete group members - -Delete members from group - -``` -oasisctl delete group members [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group to delete members from - -h, --help help for members - -o, --organization-id string Identifier of the organization - -u, --user-emails strings A comma separated list of user email addresses -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete group](delete-group.md) - Delete a group the authenticated user has access to - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-group.md b/site/content/3.12/arangograph/oasisctl/delete/delete-group.md deleted file mode 100644 index 4f6fe7d91c..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-group.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Group -menuTitle: Delete Group -weight: 12 ---- -## oasisctl delete group - -Delete a group the authenticated user has access to - -``` -oasisctl delete group [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group - -h, --help help for group - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete group members](delete-group-members.md) - Delete members from group - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-ipallowlist.md b/site/content/3.12/arangograph/oasisctl/delete/delete-ipallowlist.md deleted file mode 100644 index 1806667457..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-ipallowlist.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete IP Allowlist -menuTitle: Delete IP Allowlist -weight: 14 ---- -## oasisctl delete ipallowlist - -Delete an IP allowlist the authenticated user has access to - -``` -oasisctl delete ipallowlist [flags] -``` - -## Options -``` - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-metrics-token.md b/site/content/3.12/arangograph/oasisctl/delete/delete-metrics-token.md deleted file mode 100644 index c18927e996..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-metrics-token.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Delete Metrics Token -menuTitle: Delete Metrics Token -weight: 16 ---- -## oasisctl delete metrics token - -Delete a metrics token for a deployment - -``` -oasisctl delete metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for token - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --token-id string Identifier of the metrics token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete metrics](delete-metrics.md) - Delete metrics resources - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-metrics.md b/site/content/3.12/arangograph/oasisctl/delete/delete-metrics.md deleted file mode 100644 index 36052afbce..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Delete Metrics -menuTitle: Delete Metrics -weight: 15 ---- -## oasisctl delete metrics - -Delete metrics resources - -``` -oasisctl delete metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete metrics token](delete-metrics-token.md) - Delete a metrics token for a deployment - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-notebook.md b/site/content/3.12/arangograph/oasisctl/delete/delete-notebook.md deleted file mode 100644 index 3992653923..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-notebook.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Delete Notebook -menuTitle: Delete Notebook -weight: 17 ---- -## oasisctl delete notebook - -Delete a notebook - -``` -oasisctl delete notebook [flags] -``` - -## Options -``` - -h, --help help for notebook - -n, --notebook-id string Identifier of the notebook -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-organization-invite.md b/site/content/3.12/arangograph/oasisctl/delete/delete-organization-invite.md deleted file mode 100644 index dae7596f39..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Organization Invite -menuTitle: Delete Organization Invite -weight: 19 ---- -## oasisctl delete organization invite - -Delete an organization invite the authenticated user has access to - -``` -oasisctl delete organization invite [flags] -``` - -## Options -``` - -h, --help help for invite - -i, --invite-id string Identifier of the organization invite - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete organization](delete-organization.md) - Delete an organization the authenticated user has access to - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-organization-members.md b/site/content/3.12/arangograph/oasisctl/delete/delete-organization-members.md deleted file mode 100644 index c3d4151366..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-organization-members.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Organization Members -menuTitle: Delete Organization Members -weight: 20 ---- -## oasisctl delete organization members - -Delete members from organization - -``` -oasisctl delete organization members [flags] -``` - -## Options -``` - -h, --help help for members - -o, --organization-id string Identifier of the organization - -u, --user-emails strings A comma separated list of user email addresses -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete organization](delete-organization.md) - Delete an organization the authenticated user has access to - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-organization.md b/site/content/3.12/arangograph/oasisctl/delete/delete-organization.md deleted file mode 100644 index 362056323c..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-organization.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Organization -menuTitle: Delete Organization -weight: 18 ---- -## oasisctl delete organization - -Delete an organization the authenticated user has access to - -``` -oasisctl delete organization [flags] -``` - -## Options -``` - -h, --help help for organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete organization invite](delete-organization-invite.md) - Delete an organization invite the authenticated user has access to -* [oasisctl delete organization members](delete-organization-members.md) - Delete members from organization - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-project.md b/site/content/3.12/arangograph/oasisctl/delete/delete-project.md deleted file mode 100644 index 9b45160be9..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Project -menuTitle: Delete Project -weight: 21 ---- -## oasisctl delete project - -Delete a project the authenticated user has access to - -``` -oasisctl delete project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.12/arangograph/oasisctl/delete/delete-role.md b/site/content/3.12/arangograph/oasisctl/delete/delete-role.md deleted file mode 100644 index c8bcbb67f2..0000000000 --- a/site/content/3.12/arangograph/oasisctl/delete/delete-role.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Role -menuTitle: Delete Role -weight: 22 ---- -## oasisctl delete role - -Delete a role the authenticated user has access to - -``` -oasisctl delete role [flags] -``` - -## Options -``` - -h, --help help for role - -o, --organization-id string Identifier of the organization - -r, --role-id string Identifier of the role -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.12/arangograph/oasisctl/disable/_index.md b/site/content/3.12/arangograph/oasisctl/disable/_index.md deleted file mode 100644 index 916ad96f01..0000000000 --- a/site/content/3.12/arangograph/oasisctl/disable/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Disable -menuTitle: Disable -weight: 10 ---- -## oasisctl disable - -Disable some settings related to deployment - -``` -oasisctl disable [flags] -``` - -## Options -``` - -h, --help help for disable -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl disable scheduled-root-password-rotation](disable-scheduled-root-password-rotation.md) - Disable scheduled root password rotation - diff --git a/site/content/3.12/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md b/site/content/3.12/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md deleted file mode 100644 index 52ac637431..0000000000 --- a/site/content/3.12/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Disable Scheduled-Root-Password-Rotation -menuTitle: Disable Scheduled-Root-Password-Rotation -weight: 1 ---- -## oasisctl disable scheduled-root-password-rotation - -Disable scheduled root password rotation - -``` -oasisctl disable scheduled-root-password-rotation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for scheduled-root-password-rotation - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl disable](_index.md) - Disable some settings related to deployment - diff --git a/site/content/3.12/arangograph/oasisctl/enable/_index.md b/site/content/3.12/arangograph/oasisctl/enable/_index.md deleted file mode 100644 index 61a3b03d10..0000000000 --- a/site/content/3.12/arangograph/oasisctl/enable/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Enable -menuTitle: Enable -weight: 11 ---- -## oasisctl enable - -Enable some settings related to deployment - -``` -oasisctl enable [flags] -``` - -## Options -``` - -h, --help help for enable -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl enable scheduled-root-password-rotation](enable-scheduled-root-password-rotation.md) - Enable scheduled root password rotation - diff --git a/site/content/3.12/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md b/site/content/3.12/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md deleted file mode 100644 index 8628abc79c..0000000000 --- a/site/content/3.12/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Enable Scheduled-Root-Password-Rotation -menuTitle: Enable Scheduled-Root-Password-Rotation -weight: 1 ---- -## oasisctl enable scheduled-root-password-rotation - -Enable scheduled root password rotation - -``` -oasisctl enable scheduled-root-password-rotation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for scheduled-root-password-rotation - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl enable](_index.md) - Enable some settings related to deployment - diff --git a/site/content/3.12/arangograph/oasisctl/generate-docs.md b/site/content/3.12/arangograph/oasisctl/generate-docs.md deleted file mode 100644 index f1d83f8437..0000000000 --- a/site/content/3.12/arangograph/oasisctl/generate-docs.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Generate Documentation -menuTitle: Generate Documentation -weight: 12 ---- -## oasisctl generate-docs - -Generate output - -``` -oasisctl generate-docs [flags] -``` - -## Options -``` - -h, --help help for generate-docs - -l, --link-file-ext string What file extensions the links should point to - -o, --output-dir string Output directory (default "./docs") - -r, --replace-underscore-with string Replace the underscore in links with the given character -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.12/arangograph/oasisctl/get/_index.md b/site/content/3.12/arangograph/oasisctl/get/_index.md deleted file mode 100644 index 20021e7831..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/_index.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Oasisctl Get -menuTitle: Get -weight: 13 ---- -## oasisctl get - -Get information - -``` -oasisctl get [flags] -``` - -## Options -``` - -h, --help help for get -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl get auditlog](get-auditlog.md) - Get auditlog archive -* [oasisctl get backup](get-backup.md) - Get a backup -* [oasisctl get cacertificate](get-cacertificate.md) - Get a CA certificate the authenticated user has access to -* [oasisctl get deployment](get-deployment.md) - Get a deployment the authenticated user has access to -* [oasisctl get example](get-example.md) - Get a single example dataset -* [oasisctl get group](get-group.md) - Get a group the authenticated user has access to -* [oasisctl get ipallowlist](get-ipallowlist.md) - Get an IP allowlist the authenticated user has access to -* [oasisctl get metrics](get-metrics.md) - Get metrics information -* [oasisctl get notebook](get-notebook.md) - Get a notebook -* [oasisctl get organization](get-organization.md) - Get an organization the authenticated user is a member of -* [oasisctl get policy](get-policy.md) - Get a policy the authenticated user has access to -* [oasisctl get private](get-private.md) - Get private information -* [oasisctl get project](get-project.md) - Get a project the authenticated user has access to -* [oasisctl get provider](get-provider.md) - Get a provider the authenticated user has access to -* [oasisctl get region](get-region.md) - Get a region the authenticated user has access to -* [oasisctl get role](get-role.md) - Get a role the authenticated user has access to -* [oasisctl get self](get-self.md) - Get information about the authenticated user -* [oasisctl get server](get-server.md) - Get server information -* [oasisctl get tandc](get-tandc.md) - Get current terms and conditions or get one by ID - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-auditlog-archive.md b/site/content/3.12/arangograph/oasisctl/get/get-auditlog-archive.md deleted file mode 100644 index 546b9a55c4..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-auditlog-archive.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Audit Log Archive -menuTitle: Get Audit Log Archive -weight: 2 ---- -## oasisctl get auditlog archive - -Get auditlog archive - -``` -oasisctl get auditlog archive [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog - -h, --help help for archive -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get auditlog](get-auditlog.md) - Get auditlog archive - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-auditlog-events.md b/site/content/3.12/arangograph/oasisctl/get/get-auditlog-events.md deleted file mode 100644 index 44c9088765..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-auditlog-events.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Oasisctl Get Audit Log Events -menuTitle: Get Audit Log Events -weight: 3 ---- -## oasisctl get auditlog events - -Get auditlog events - -``` -oasisctl get auditlog events [flags] -``` - -## Options -``` - --auditlog-archive-id string If set, include only events from this AuditLogArchive - -i, --auditlog-id string Identifier of the auditlog - --excluded-topics strings If non-empty, leave out events with one of these topics. This takes priority over included - --from string Request events created at or after this timestamp - -h, --help help for events - --included-topics strings If non-empty, only request events with one of these topics - --limit int Limit the number of audit log events. Defaults to 0, meaning no limit - --to string Request events created before this timestamp -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get auditlog](get-auditlog.md) - Get auditlog archive - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-auditlog.md b/site/content/3.12/arangograph/oasisctl/get/get-auditlog.md deleted file mode 100644 index 025710b835..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-auditlog.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Audit Log -menuTitle: Get Audit Log -weight: 1 ---- -## oasisctl get auditlog - -Get auditlog archive - -``` -oasisctl get auditlog [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog - -h, --help help for auditlog - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get auditlog archive](get-auditlog-archive.md) - Get auditlog archive -* [oasisctl get auditlog events](get-auditlog-events.md) - Get auditlog events - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-backup-policy.md b/site/content/3.12/arangograph/oasisctl/get/get-backup-policy.md deleted file mode 100644 index 916ad22e61..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-backup-policy.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Backup Policy -menuTitle: Get Backup Policy -weight: 5 ---- -## oasisctl get backup policy - -Get an existing backup policy - -``` -oasisctl get backup policy [flags] -``` - -## Options -``` - -h, --help help for policy - -i, --id string Identifier of the backup policy (Id|Name|Url) -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get backup](get-backup.md) - Get a backup - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-backup.md b/site/content/3.12/arangograph/oasisctl/get/get-backup.md deleted file mode 100644 index 2792a98b02..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-backup.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Backup -menuTitle: Get Backup -weight: 4 ---- -## oasisctl get backup - -Get a backup - -``` -oasisctl get backup [flags] -``` - -## Options -``` - -h, --help help for backup - -i, --id string Identifier of the backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get backup policy](get-backup-policy.md) - Get an existing backup policy - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-cacertificate.md b/site/content/3.12/arangograph/oasisctl/get/get-cacertificate.md deleted file mode 100644 index 0be6d11e44..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-cacertificate.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get CA Certificate -menuTitle: Get CA Certificate -weight: 6 ---- -## oasisctl get cacertificate - -Get a CA certificate the authenticated user has access to - -``` -oasisctl get cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - -h, --help help for cacertificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-deployment.md b/site/content/3.12/arangograph/oasisctl/get/get-deployment.md deleted file mode 100644 index ab8d86e3d3..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-deployment.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Deployment -menuTitle: Get Deployment -weight: 7 ---- -## oasisctl get deployment - -Get a deployment the authenticated user has access to - -``` -oasisctl get deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --show-root-password show the root password of the database -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-example-installation.md b/site/content/3.12/arangograph/oasisctl/get/get-example-installation.md deleted file mode 100644 index 4190e8e288..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-example-installation.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Example Installation -menuTitle: Get Example Installation -weight: 9 ---- -## oasisctl get example installation - -Get a single example dataset installation - -``` -oasisctl get example installation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to list installations for - -h, --help help for installation - --installation-id string The ID of the installation to get. - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get example](get-example.md) - Get a single example dataset - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-example.md b/site/content/3.12/arangograph/oasisctl/get/get-example.md deleted file mode 100644 index 1238d443ed..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-example.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Example -menuTitle: Get Example -weight: 8 ---- -## oasisctl get example - -Get a single example dataset - -``` -oasisctl get example [flags] -``` - -## Options -``` - -e, --example-dataset-id string ID of the example dataset - -h, --help help for example -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get example installation](get-example-installation.md) - Get a single example dataset installation - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-group.md b/site/content/3.12/arangograph/oasisctl/get/get-group.md deleted file mode 100644 index 9b8e72e16b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-group.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Group -menuTitle: Get Group -weight: 10 ---- -## oasisctl get group - -Get a group the authenticated user has access to - -``` -oasisctl get group [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group - -h, --help help for group - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-ipallowlist.md b/site/content/3.12/arangograph/oasisctl/get/get-ipallowlist.md deleted file mode 100644 index 379c324604..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-ipallowlist.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get IP Allowlist -menuTitle: Get IP Allowlist -weight: 11 ---- -## oasisctl get ipallowlist - -Get an IP allowlist the authenticated user has access to - -``` -oasisctl get ipallowlist [flags] -``` - -## Options -``` - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-metrics-token.md b/site/content/3.12/arangograph/oasisctl/get/get-metrics-token.md deleted file mode 100644 index 6226b02793..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-metrics-token.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Metrics Token -menuTitle: Get Metrics Token -weight: 13 ---- -## oasisctl get metrics token - -Get a metrics token - -``` -oasisctl get metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for token - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --token-id string Identifier of the metrics token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get metrics](get-metrics.md) - Get metrics information - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-metrics.md b/site/content/3.12/arangograph/oasisctl/get/get-metrics.md deleted file mode 100644 index f2699417aa..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Metrics -menuTitle: Get Metrics -weight: 12 ---- -## oasisctl get metrics - -Get metrics information - -``` -oasisctl get metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get metrics token](get-metrics-token.md) - Get a metrics token - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-notebook.md b/site/content/3.12/arangograph/oasisctl/get/get-notebook.md deleted file mode 100644 index 8526fb293a..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-notebook.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Notebook -menuTitle: Get Notebook -weight: 14 ---- -## oasisctl get notebook - -Get a notebook - -``` -oasisctl get notebook [flags] -``` - -## Options -``` - -h, --help help for notebook - -n, --notebook-id string Identifier of the notebook -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-organization-authentication-providers.md b/site/content/3.12/arangograph/oasisctl/get/get-organization-authentication-providers.md deleted file mode 100644 index da20b01a1a..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-organization-authentication-providers.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Authentication Providers -menuTitle: Get Organization Authentication Providers -weight: 17 ---- -## oasisctl get organization authentication providers - -Get which authentication providers are allowed for accessing a specific organization - -``` -oasisctl get organization authentication providers [flags] -``` - -## Options -``` - -h, --help help for providers - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization authentication](get-organization-authentication.md) - Get authentication specific information for an organization - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-organization-authentication.md b/site/content/3.12/arangograph/oasisctl/get/get-organization-authentication.md deleted file mode 100644 index cd16e2841b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-organization-authentication.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Authentication -menuTitle: Get Organization Authentication -weight: 16 ---- -## oasisctl get organization authentication - -Get authentication specific information for an organization - -``` -oasisctl get organization authentication [flags] -``` - -## Options -``` - -h, --help help for authentication -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization](get-organization.md) - Get an organization the authenticated user is a member of -* [oasisctl get organization authentication providers](get-organization-authentication-providers.md) - Get which authentication providers are allowed for accessing a specific organization - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md b/site/content/3.12/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md deleted file mode 100644 index 400ad06087..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Email Domain Restrictions -menuTitle: Get Organization Email Domain Restrictions -weight: 20 ---- -## oasisctl get organization email domain restrictions - -Get which email domain restrictions are placed on accessing a specific organization - -``` -oasisctl get organization email domain restrictions [flags] -``` - -## Options -``` - -h, --help help for restrictions - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization email domain](get-organization-email-domain.md) - Get email domain specific information for an organization - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-organization-email-domain.md b/site/content/3.12/arangograph/oasisctl/get/get-organization-email-domain.md deleted file mode 100644 index 305097e72f..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-organization-email-domain.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Email Domain -menuTitle: Get Organization Email Domain -weight: 19 ---- -## oasisctl get organization email domain - -Get email domain specific information for an organization - -``` -oasisctl get organization email domain [flags] -``` - -## Options -``` - -h, --help help for domain -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization email](get-organization-email.md) - Get email specific information for an organization -* [oasisctl get organization email domain restrictions](get-organization-email-domain-restrictions.md) - Get which email domain restrictions are placed on accessing a specific organization - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-organization-email.md b/site/content/3.12/arangograph/oasisctl/get/get-organization-email.md deleted file mode 100644 index 5ca941ffcd..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-organization-email.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Email -menuTitle: Get Organization Email -weight: 18 ---- -## oasisctl get organization email - -Get email specific information for an organization - -``` -oasisctl get organization email [flags] -``` - -## Options -``` - -h, --help help for email -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization](get-organization.md) - Get an organization the authenticated user is a member of -* [oasisctl get organization email domain](get-organization-email-domain.md) - Get email domain specific information for an organization - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-organization-invite.md b/site/content/3.12/arangograph/oasisctl/get/get-organization-invite.md deleted file mode 100644 index 093ed06c05..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Organization Invite -menuTitle: Get Organization Invite -weight: 21 ---- -## oasisctl get organization invite - -Get an organization invite the authenticated user has access to - -``` -oasisctl get organization invite [flags] -``` - -## Options -``` - -h, --help help for invite - -i, --invite-id string Identifier of the organization invite - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization](get-organization.md) - Get an organization the authenticated user is a member of - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-organization.md b/site/content/3.12/arangograph/oasisctl/get/get-organization.md deleted file mode 100644 index b05c6201ab..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-organization.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Organization -menuTitle: Get Organization -weight: 15 ---- -## oasisctl get organization - -Get an organization the authenticated user is a member of - -``` -oasisctl get organization [flags] -``` - -## Options -``` - -h, --help help for organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get organization authentication](get-organization-authentication.md) - Get authentication specific information for an organization -* [oasisctl get organization email](get-organization-email.md) - Get email specific information for an organization -* [oasisctl get organization invite](get-organization-invite.md) - Get an organization invite the authenticated user has access to - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-policy.md b/site/content/3.12/arangograph/oasisctl/get/get-policy.md deleted file mode 100644 index 599e5601cb..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-policy.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Policy -menuTitle: Get Policy -weight: 22 ---- -## oasisctl get policy - -Get a policy the authenticated user has access to - -``` -oasisctl get policy [flags] -``` - -## Options -``` - -h, --help help for policy - -u, --url string URL of the resource to inspect the policy for -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-private-endpoint-service.md b/site/content/3.12/arangograph/oasisctl/get/get-private-endpoint-service.md deleted file mode 100644 index a9c56b8b0f..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-private-endpoint-service.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get Private Endpoint Service -menuTitle: Get Private Endpoint Service -weight: 25 ---- -## oasisctl get private endpoint service - -Get a Private Endpoint Service the authenticated user has access to - -``` -oasisctl get private endpoint service [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment that the private endpoint service is connected to - -h, --help help for service - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get private endpoint](get-private-endpoint.md) - - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-private-endpoint.md b/site/content/3.12/arangograph/oasisctl/get/get-private-endpoint.md deleted file mode 100644 index 38afeb2dd8..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-private-endpoint.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Private Endpoint -menuTitle: Get Private Endpoint -weight: 24 ---- -## oasisctl get private endpoint - - - -``` -oasisctl get private endpoint [flags] -``` - -## Options -``` - -h, --help help for endpoint -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get private](get-private.md) - Get private information -* [oasisctl get private endpoint service](get-private-endpoint-service.md) - Get a Private Endpoint Service the authenticated user has access to - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-private.md b/site/content/3.12/arangograph/oasisctl/get/get-private.md deleted file mode 100644 index e84921fd32..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-private.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Private -menuTitle: Get Private -weight: 23 ---- -## oasisctl get private - -Get private information - -``` -oasisctl get private [flags] -``` - -## Options -``` - -h, --help help for private -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get private endpoint](get-private-endpoint.md) - - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-project.md b/site/content/3.12/arangograph/oasisctl/get/get-project.md deleted file mode 100644 index 5bfb087e53..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Project -menuTitle: Get Project -weight: 26 ---- -## oasisctl get project - -Get a project the authenticated user has access to - -``` -oasisctl get project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-provider.md b/site/content/3.12/arangograph/oasisctl/get/get-provider.md deleted file mode 100644 index da7d632e1b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-provider.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Provider -menuTitle: Get Provider -weight: 27 ---- -## oasisctl get provider - -Get a provider the authenticated user has access to - -``` -oasisctl get provider [flags] -``` - -## Options -``` - -h, --help help for provider - -o, --organization-id string Optional Identifier of the organization - -p, --provider-id string Identifier of the provider -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-region.md b/site/content/3.12/arangograph/oasisctl/get/get-region.md deleted file mode 100644 index 25ca81e867..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-region.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get Region -menuTitle: Get Region -weight: 28 ---- -## oasisctl get region - -Get a region the authenticated user has access to - -``` -oasisctl get region [flags] -``` - -## Options -``` - -h, --help help for region - -o, --organization-id string Optional Identifier of the organization - -p, --provider-id string Identifier of the provider - -r, --region-id string Identifier of the region -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-role.md b/site/content/3.12/arangograph/oasisctl/get/get-role.md deleted file mode 100644 index 898605e245..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-role.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Role -menuTitle: Get Role -weight: 29 ---- -## oasisctl get role - -Get a role the authenticated user has access to - -``` -oasisctl get role [flags] -``` - -## Options -``` - -h, --help help for role - -o, --organization-id string Identifier of the organization - -r, --role-id string Identifier of the role -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-self.md b/site/content/3.12/arangograph/oasisctl/get/get-self.md deleted file mode 100644 index 26d48ad423..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-self.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl Get Self -menuTitle: Get Self -weight: 30 ---- -## oasisctl get self - -Get information about the authenticated user - -``` -oasisctl get self [flags] -``` - -## Options -``` - -h, --help help for self -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-server-status.md b/site/content/3.12/arangograph/oasisctl/get/get-server-status.md deleted file mode 100644 index 302fb17a1d..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-server-status.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get Server Status -menuTitle: Get Server Status -weight: 32 ---- -## oasisctl get server status - -Get the status of servers for a deployment - -``` -oasisctl get server status [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for status - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get server](get-server.md) - Get server information - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-server.md b/site/content/3.12/arangograph/oasisctl/get/get-server.md deleted file mode 100644 index ad54b9dfd2..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-server.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Server -menuTitle: Get Server -weight: 31 ---- -## oasisctl get server - -Get server information - -``` -oasisctl get server [flags] -``` - -## Options -``` - -h, --help help for server -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get server status](get-server-status.md) - Get the status of servers for a deployment - diff --git a/site/content/3.12/arangograph/oasisctl/get/get-tandc.md b/site/content/3.12/arangograph/oasisctl/get/get-tandc.md deleted file mode 100644 index c33b546252..0000000000 --- a/site/content/3.12/arangograph/oasisctl/get/get-tandc.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Terms & Conditions -menuTitle: Get Terms & Conditions -weight: 33 ---- -## oasisctl get tandc - -Get current terms and conditions or get one by ID - -``` -oasisctl get tandc [flags] -``` - -## Options -``` - -h, --help help for tandc - -o, --organization-id string Identifier of the organization - -t, --terms-and-conditions-id string Identifier of the terms and conditions to accept. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.12/arangograph/oasisctl/import.md b/site/content/3.12/arangograph/oasisctl/import.md deleted file mode 100644 index 385375d640..0000000000 --- a/site/content/3.12/arangograph/oasisctl/import.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Oasisctl Import -menuTitle: Import -weight: 14 ---- -## oasisctl import - -Import data from a local database or from another remote database into an Oasis deployment. - -``` -oasisctl import [flags] -``` - -## Options -``` - -b, --batch-size int The number of documents to write at once. (default 4096) - -d, --destination-deployment-id string Destination deployment id to import data into. It can be provided instead of address, username and password. - --excluded-collection strings A list of collections names which should be excluded. Exclusion takes priority over inclusion. - --excluded-database strings A list of database names which should be excluded. Exclusion takes priority over inclusion. - --excluded-graph strings A list of graph names which should be excluded. Exclusion takes priority over inclusion. - --excluded-view strings A list of view names which should be excluded. Exclusion takes priority over inclusion. - -f, --force Force the copy automatically overwriting everything at destination. - -h, --help help for import - --included-collection strings A list of collection names which should be included. If provided, only these collections will be copied. - --included-database strings A list of database names which should be included. If provided, only these databases will be copied. - --included-graph strings A list of graph names which should be included. If provided, only these graphs will be copied. - --included-view strings A list of view names which should be included. If provided, only these views will be copied. - -r, --max-retries int The number of maximum retries attempts. Increasing this number will also increase the exponential fallback timer. (default 9) - -m, --maximum-parallel-collections int Maximum number of collections being copied in parallel. (default 10) - --no-progress-bar Disable the progress bar but still have partial progress output. - --query-ttl duration Cursor TTL defined as a duration. (default 2h0m0s) - --source-address string Source database address to copy data from. - --source-password string Source database password if required. - --source-username string Source database username if required. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.12/arangograph/oasisctl/list/_index.md b/site/content/3.12/arangograph/oasisctl/list/_index.md deleted file mode 100644 index b8a7496441..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/_index.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Oasisctl List -menuTitle: List -weight: 15 ---- -## oasisctl list - -List resources - -``` -oasisctl list [flags] -``` - -## Options -``` - -h, --help help for list -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl list apikeys](list-apikeys.md) - List all API keys created for the current user -* [oasisctl list arangodb](list-arangodb.md) - List ArangoDB information -* [oasisctl list auditlog](list-auditlog.md) - List resources for auditlogs -* [oasisctl list auditlogs](list-auditlogs.md) - List auditlogs -* [oasisctl list backup](list-backup.md) - A list command for various backup resources -* [oasisctl list backups](list-backups.md) - List backups -* [oasisctl list cacertificates](list-cacertificates.md) - List all CA certificates of the given project -* [oasisctl list cpusizes](list-cpusizes.md) - List CPU sizes -* [oasisctl list deployments](list-deployments.md) - List all deployments of the given project -* [oasisctl list diskperformances](list-diskperformances.md) - List disk performances -* [oasisctl list effective](list-effective.md) - List effective information -* [oasisctl list example](list-example.md) - List example ... -* [oasisctl list examples](list-examples.md) - List all example datasets -* [oasisctl list group](list-group.md) - List group resources -* [oasisctl list groups](list-groups.md) - List all groups of the given organization -* [oasisctl list ipallowlists](list-ipallowlists.md) - List all IP allowlists of the given project -* [oasisctl list metrics](list-metrics.md) - List metrics resources -* [oasisctl list nodesizes](list-nodesizes.md) - List node sizes -* [oasisctl list notebookmodels](list-notebookmodels.md) - List notebook models -* [oasisctl list notebooks](list-notebooks.md) - List notebooks -* [oasisctl list organization](list-organization.md) - List organization resources -* [oasisctl list organizations](list-organizations.md) - List all organizations the authenticated user is a member of -* [oasisctl list permissions](list-permissions.md) - List the known permissions -* [oasisctl list projects](list-projects.md) - List all projects of the given organization -* [oasisctl list providers](list-providers.md) - List all providers the authenticated user has access to -* [oasisctl list regions](list-regions.md) - List all regions of the given provider -* [oasisctl list roles](list-roles.md) - List all roles of the given organization -* [oasisctl list servers](list-servers.md) - List servers information - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-apikeys.md b/site/content/3.12/arangograph/oasisctl/list/list-apikeys.md deleted file mode 100644 index 44984cb38b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-apikeys.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl List API Keys -menuTitle: List API Keys -weight: 1 ---- -## oasisctl list apikeys - -List all API keys created for the current user - -``` -oasisctl list apikeys [flags] -``` - -## Options -``` - -h, --help help for apikeys -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-arangodb-versions.md b/site/content/3.12/arangograph/oasisctl/list/list-arangodb-versions.md deleted file mode 100644 index 22411cf8a8..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-arangodb-versions.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List ArangoDB Versions -menuTitle: List ArangoDB Versions -weight: 3 ---- -## oasisctl list arangodb versions - -List all supported ArangoDB versions - -``` -oasisctl list arangodb versions [flags] -``` - -## Options -``` - -h, --help help for versions - -o, --organization-id string Optional Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list arangodb](list-arangodb.md) - List ArangoDB information - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-arangodb.md b/site/content/3.12/arangograph/oasisctl/list/list-arangodb.md deleted file mode 100644 index 04445b917d..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-arangodb.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List ArangoDB -menuTitle: List ArangoDB -weight: 2 ---- -## oasisctl list arangodb - -List ArangoDB information - -``` -oasisctl list arangodb [flags] -``` - -## Options -``` - -h, --help help for arangodb -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list arangodb versions](list-arangodb-versions.md) - List all supported ArangoDB versions - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-auditlog-archives.md b/site/content/3.12/arangograph/oasisctl/list/list-auditlog-archives.md deleted file mode 100644 index efe237a2b6..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-auditlog-archives.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Audit Log Archives -menuTitle: List Audit Log Archives -weight: 5 ---- -## oasisctl list auditlog archives - -List auditlog archives - -``` -oasisctl list auditlog archives [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog - -h, --help help for archives - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list auditlog](list-auditlog.md) - List resources for auditlogs - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-auditlog-destinations.md b/site/content/3.12/arangograph/oasisctl/list/list-auditlog-destinations.md deleted file mode 100644 index f6fc395ce0..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-auditlog-destinations.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Audit Log Destinations -menuTitle: List Audit Log Destinations -weight: 6 ---- -## oasisctl list auditlog destinations - -List auditlog destinations - -``` -oasisctl list auditlog destinations [flags] -``` - -## Options -``` - --auditlog-id string Identifier of the auditlog to list the destinations for - -h, --help help for destinations - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list auditlog](list-auditlog.md) - List resources for auditlogs - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-auditlog.md b/site/content/3.12/arangograph/oasisctl/list/list-auditlog.md deleted file mode 100644 index 4a86f9969e..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-auditlog.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Audit Log -menuTitle: List Audit Log -weight: 4 ---- -## oasisctl list auditlog - -List resources for auditlogs - -``` -oasisctl list auditlog [flags] -``` - -## Options -``` - -h, --help help for auditlog -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list auditlog archives](list-auditlog-archives.md) - List auditlog archives -* [oasisctl list auditlog destinations](list-auditlog-destinations.md) - List auditlog destinations - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-auditlogs.md b/site/content/3.12/arangograph/oasisctl/list/list-auditlogs.md deleted file mode 100644 index 83e17ba2e2..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-auditlogs.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Audit Logs -menuTitle: List Audit Logs -weight: 7 ---- -## oasisctl list auditlogs - -List auditlogs - -``` -oasisctl list auditlogs [flags] -``` - -## Options -``` - -h, --help help for auditlogs - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-backup-policies.md b/site/content/3.12/arangograph/oasisctl/list/list-backup-policies.md deleted file mode 100644 index ec1b895990..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-backup-policies.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Backup Policies -menuTitle: List Backup Policies -weight: 9 ---- -## oasisctl list backup policies - -List backup policies - -``` -oasisctl list backup policies [flags] -``` - -## Options -``` - --deployment-id string The ID of the deployment to list backup policies for - -h, --help help for policies - --include-deleted If set, the result includes all backup policies, including those who set to deleted, however are not removed from the system currently -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list backup](list-backup.md) - A list command for various backup resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-backup.md b/site/content/3.12/arangograph/oasisctl/list/list-backup.md deleted file mode 100644 index 3c0b2d78a8..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-backup.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Backup -menuTitle: List Backup -weight: 8 ---- -## oasisctl list backup - -A list command for various backup resources - -``` -oasisctl list backup [flags] -``` - -## Options -``` - -h, --help help for backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list backup policies](list-backup-policies.md) - List backup policies - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-backups.md b/site/content/3.12/arangograph/oasisctl/list/list-backups.md deleted file mode 100644 index ace03c781e..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-backups.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Backups -menuTitle: List Backups -weight: 10 ---- -## oasisctl list backups - -List backups - -``` -oasisctl list backups [flags] -``` - -## Options -``` - --deployment-id string The ID of the deployment to list backups for - --from string Request backups that are created at or after this timestamp - -h, --help help for backups - --to string Request backups that are created before this timestamp -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-cacertificates.md b/site/content/3.12/arangograph/oasisctl/list/list-cacertificates.md deleted file mode 100644 index 903063bb34..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-cacertificates.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List CA Certificates -menuTitle: List CA Certificates -weight: 11 ---- -## oasisctl list cacertificates - -List all CA certificates of the given project - -``` -oasisctl list cacertificates [flags] -``` - -## Options -``` - -h, --help help for cacertificates - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-cpusizes.md b/site/content/3.12/arangograph/oasisctl/list/list-cpusizes.md deleted file mode 100644 index 85188eac3b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-cpusizes.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List CPU Sizes -menuTitle: List CPU Sizes -weight: 12 ---- -## oasisctl list cpusizes - -List CPU sizes - -``` -oasisctl list cpusizes [flags] -``` - -## Options -``` - -h, --help help for cpusizes - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --provider-id string Identifier of the provider -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-deployments.md b/site/content/3.12/arangograph/oasisctl/list/list-deployments.md deleted file mode 100644 index 66b3d739d2..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-deployments.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Deployments -menuTitle: List Deployments -weight: 13 ---- -## oasisctl list deployments - -List all deployments of the given project - -``` -oasisctl list deployments [flags] -``` - -## Options -``` - -h, --help help for deployments - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-diskperformances.md b/site/content/3.12/arangograph/oasisctl/list/list-diskperformances.md deleted file mode 100644 index ddbd5714c0..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-diskperformances.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl List Disk Performances -menuTitle: List Disk Performances -weight: 14 ---- -## oasisctl list diskperformances - -List disk performances - -``` -oasisctl list diskperformances [flags] -``` - -## Options -``` - --dbserver-disk-size int32 The disk size of DB-Servers (GiB) (default 32) - -h, --help help for diskperformances - --node-size-id string Identifier of the node size - -o, --organization-id string Identifier of the organization - --provider-id string Identifier of the provider - -r, --region-id string Identifier of the region -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-effective-permissions.md b/site/content/3.12/arangograph/oasisctl/list/list-effective-permissions.md deleted file mode 100644 index 394cc1006e..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-effective-permissions.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Effective Permissions -menuTitle: List Effective Permissions -weight: 16 ---- -## oasisctl list effective permissions - -List the effective permissions, the authenticated user has for a given URL - -``` -oasisctl list effective permissions [flags] -``` - -## Options -``` - -h, --help help for permissions - -u, --url string URL of resource to get effective permissions for -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list effective](list-effective.md) - List effective information - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-effective.md b/site/content/3.12/arangograph/oasisctl/list/list-effective.md deleted file mode 100644 index 431f601dc1..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-effective.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Effective -menuTitle: List Effective -weight: 15 ---- -## oasisctl list effective - -List effective information - -``` -oasisctl list effective [flags] -``` - -## Options -``` - -h, --help help for effective -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list effective permissions](list-effective-permissions.md) - List the effective permissions, the authenticated user has for a given URL - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-example-installations.md b/site/content/3.12/arangograph/oasisctl/list/list-example-installations.md deleted file mode 100644 index 5a9167f5b9..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-example-installations.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Example Installations -menuTitle: List Example Installations -weight: 18 ---- -## oasisctl list example installations - -List all example dataset installations for a deployment - -``` -oasisctl list example installations [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to list installations for - -h, --help help for installations - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list example](list-example.md) - List example ... - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-example.md b/site/content/3.12/arangograph/oasisctl/list/list-example.md deleted file mode 100644 index e389b299c2..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-example.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Example -menuTitle: List Example -weight: 17 ---- -## oasisctl list example - -List example ... - -``` -oasisctl list example [flags] -``` - -## Options -``` - -h, --help help for example -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list example installations](list-example-installations.md) - List all example dataset installations for a deployment - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-examples.md b/site/content/3.12/arangograph/oasisctl/list/list-examples.md deleted file mode 100644 index 1cc1d11b86..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-examples.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Examples -menuTitle: List Examples -weight: 19 ---- -## oasisctl list examples - -List all example datasets - -``` -oasisctl list examples [flags] -``` - -## Options -``` - -h, --help help for examples - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-group-members.md b/site/content/3.12/arangograph/oasisctl/list/list-group-members.md deleted file mode 100644 index 6bc87e0b73..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-group-members.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Group Members -menuTitle: List Group Members -weight: 21 ---- -## oasisctl list group members - -List members of a group the authenticated user is a member of - -``` -oasisctl list group members [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group - -h, --help help for members - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list group](list-group.md) - List group resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-group.md b/site/content/3.12/arangograph/oasisctl/list/list-group.md deleted file mode 100644 index 28f5caa79d..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-group.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Group -menuTitle: List Group -weight: 20 ---- -## oasisctl list group - -List group resources - -``` -oasisctl list group [flags] -``` - -## Options -``` - -h, --help help for group -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list group members](list-group-members.md) - List members of a group the authenticated user is a member of - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-groups.md b/site/content/3.12/arangograph/oasisctl/list/list-groups.md deleted file mode 100644 index 8908ae0fb3..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-groups.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Groups -menuTitle: List Groups -weight: 22 ---- -## oasisctl list groups - -List all groups of the given organization - -``` -oasisctl list groups [flags] -``` - -## Options -``` - -h, --help help for groups - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-ipallowlists.md b/site/content/3.12/arangograph/oasisctl/list/list-ipallowlists.md deleted file mode 100644 index 33ef91495d..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-ipallowlists.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List IP Allowlists -menuTitle: List IP Allowlists -weight: 23 ---- -## oasisctl list ipallowlists - -List all IP allowlists of the given project - -``` -oasisctl list ipallowlists [flags] -``` - -## Options -``` - -h, --help help for ipallowlists - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-metrics-tokens.md b/site/content/3.12/arangograph/oasisctl/list/list-metrics-tokens.md deleted file mode 100644 index ce1713add8..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-metrics-tokens.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Metrics Tokens -menuTitle: List Metrics Tokens -weight: 25 ---- -## oasisctl list metrics tokens - -List all metrics tokens of the given deployment - -``` -oasisctl list metrics tokens [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for tokens - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list metrics](list-metrics.md) - List metrics resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-metrics.md b/site/content/3.12/arangograph/oasisctl/list/list-metrics.md deleted file mode 100644 index fe3a321be3..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Metrics -menuTitle: List Metrics -weight: 24 ---- -## oasisctl list metrics - -List metrics resources - -``` -oasisctl list metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list metrics tokens](list-metrics-tokens.md) - List all metrics tokens of the given deployment - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-nodesizes.md b/site/content/3.12/arangograph/oasisctl/list/list-nodesizes.md deleted file mode 100644 index 60c0bc9d56..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-nodesizes.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl List Node Sizes -menuTitle: List Node Sizes -weight: 26 ---- -## oasisctl list nodesizes - -List node sizes - -``` -oasisctl list nodesizes [flags] -``` - -## Options -``` - -h, --help help for nodesizes - --model string Identifier of the model (default "oneshard") - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --provider-id string Identifier of the provider - -r, --region-id string Identifier of the region -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-notebookmodels.md b/site/content/3.12/arangograph/oasisctl/list/list-notebookmodels.md deleted file mode 100644 index cdca9cb6a5..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-notebookmodels.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Notebook Models -menuTitle: List Notebook Models -weight: 27 ---- -## oasisctl list notebookmodels - -List notebook models - -``` -oasisctl list notebookmodels [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment that the notebook has to run next to - -h, --help help for notebookmodels - -o, --organization-id string Identifier of the organization that deployment is in - -p, --project-id string Identifier of the project that deployment is in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-notebooks.md b/site/content/3.12/arangograph/oasisctl/list/list-notebooks.md deleted file mode 100644 index 29aa77467f..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-notebooks.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Notebooks -menuTitle: List Notebooks -weight: 28 ---- -## oasisctl list notebooks - -List notebooks - -``` -oasisctl list notebooks [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment that the notebooks run next to - -h, --help help for notebooks - -o, --organization-id string Identifier of the organization that has notebooks - -p, --project-id string Identifier of the project that has notebooks -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-organization-invites.md b/site/content/3.12/arangograph/oasisctl/list/list-organization-invites.md deleted file mode 100644 index d3fbe58668..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-organization-invites.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Organization Invites -menuTitle: List Organization Invites -weight: 30 ---- -## oasisctl list organization invites - -List invites of an organization the authenticated user is a member of - -``` -oasisctl list organization invites [flags] -``` - -## Options -``` - -h, --help help for invites - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list organization](list-organization.md) - List organization resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-organization-members.md b/site/content/3.12/arangograph/oasisctl/list/list-organization-members.md deleted file mode 100644 index f143d66886..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-organization-members.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Organization Members -menuTitle: List Organization Members -weight: 31 ---- -## oasisctl list organization members - -List members of an organization the authenticated user is a member of - -``` -oasisctl list organization members [flags] -``` - -## Options -``` - -h, --help help for members - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list organization](list-organization.md) - List organization resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-organization.md b/site/content/3.12/arangograph/oasisctl/list/list-organization.md deleted file mode 100644 index c41e4a9750..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-organization.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Organization -menuTitle: List Organization -weight: 29 ---- -## oasisctl list organization - -List organization resources - -``` -oasisctl list organization [flags] -``` - -## Options -``` - -h, --help help for organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list organization invites](list-organization-invites.md) - List invites of an organization the authenticated user is a member of -* [oasisctl list organization members](list-organization-members.md) - List members of an organization the authenticated user is a member of - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-organizations.md b/site/content/3.12/arangograph/oasisctl/list/list-organizations.md deleted file mode 100644 index 7cde4a6da1..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-organizations.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl List Organizations -menuTitle: List Organizations -weight: 32 ---- -## oasisctl list organizations - -List all organizations the authenticated user is a member of - -``` -oasisctl list organizations [flags] -``` - -## Options -``` - -h, --help help for organizations -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-permissions.md b/site/content/3.12/arangograph/oasisctl/list/list-permissions.md deleted file mode 100644 index db4c2bd43c..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-permissions.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl List Permissions -menuTitle: List Permissions -weight: 33 ---- -## oasisctl list permissions - -List the known permissions - -``` -oasisctl list permissions [flags] -``` - -## Options -``` - -h, --help help for permissions -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-projects.md b/site/content/3.12/arangograph/oasisctl/list/list-projects.md deleted file mode 100644 index 959e80a2fa..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-projects.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Projects -menuTitle: List Projects -weight: 34 ---- -## oasisctl list projects - -List all projects of the given organization - -``` -oasisctl list projects [flags] -``` - -## Options -``` - -h, --help help for projects - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-providers.md b/site/content/3.12/arangograph/oasisctl/list/list-providers.md deleted file mode 100644 index 1b9c90f744..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-providers.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Providers -menuTitle: List Providers -weight: 35 ---- -## oasisctl list providers - -List all providers the authenticated user has access to - -``` -oasisctl list providers [flags] -``` - -## Options -``` - -h, --help help for providers - -o, --organization-id string Optional Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-regions.md b/site/content/3.12/arangograph/oasisctl/list/list-regions.md deleted file mode 100644 index 083b85a4a5..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-regions.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Regions -menuTitle: List Regions -weight: 36 ---- -## oasisctl list regions - -List all regions of the given provider - -``` -oasisctl list regions [flags] -``` - -## Options -``` - -h, --help help for regions - -o, --organization-id string Optional Identifier of the organization - -p, --provider-id string Identifier of the provider -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-roles.md b/site/content/3.12/arangograph/oasisctl/list/list-roles.md deleted file mode 100644 index ffa2a3ee89..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-roles.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Roles -menuTitle: List Roles -weight: 37 ---- -## oasisctl list roles - -List all roles of the given organization - -``` -oasisctl list roles [flags] -``` - -## Options -``` - -h, --help help for roles - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/list/list-servers.md b/site/content/3.12/arangograph/oasisctl/list/list-servers.md deleted file mode 100644 index f1e3a5f636..0000000000 --- a/site/content/3.12/arangograph/oasisctl/list/list-servers.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl List Servers -menuTitle: List Servers -weight: 38 ---- -## oasisctl list servers - -List servers information - -``` -oasisctl list servers [flags] -``` - -## Options -``` - -h, --help help for servers -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.12/arangograph/oasisctl/lock/_index.md b/site/content/3.12/arangograph/oasisctl/lock/_index.md deleted file mode 100644 index 1b432aa982..0000000000 --- a/site/content/3.12/arangograph/oasisctl/lock/_index.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Lock -menuTitle: Lock -weight: 16 ---- -## oasisctl lock - -Lock resources - -``` -oasisctl lock [flags] -``` - -## Options -``` - -h, --help help for lock -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl lock cacertificate](lock-cacertificate.md) - Lock a CA certificate, so it cannot be deleted -* [oasisctl lock deployment](lock-deployment.md) - Lock a deployment, so it cannot be deleted -* [oasisctl lock ipallowlist](lock-ipallowlist.md) - Lock an IP allowlist, so it cannot be deleted -* [oasisctl lock organization](lock-organization.md) - Lock an organization, so it cannot be deleted -* [oasisctl lock policy](lock-policy.md) - Lock a backup policy -* [oasisctl lock project](lock-project.md) - Lock a project, so it cannot be deleted - diff --git a/site/content/3.12/arangograph/oasisctl/lock/lock-cacertificate.md b/site/content/3.12/arangograph/oasisctl/lock/lock-cacertificate.md deleted file mode 100644 index 274471190b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/lock/lock-cacertificate.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Lock CA Certificate -menuTitle: Lock CA Certificate -weight: 1 ---- -## oasisctl lock cacertificate - -Lock a CA certificate, so it cannot be deleted - -``` -oasisctl lock cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - -h, --help help for cacertificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.12/arangograph/oasisctl/lock/lock-deployment.md b/site/content/3.12/arangograph/oasisctl/lock/lock-deployment.md deleted file mode 100644 index 3a64c29d17..0000000000 --- a/site/content/3.12/arangograph/oasisctl/lock/lock-deployment.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Lock Deployment -menuTitle: Lock Deployment -weight: 2 ---- -## oasisctl lock deployment - -Lock a deployment, so it cannot be deleted - -``` -oasisctl lock deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.12/arangograph/oasisctl/lock/lock-ipallowlist.md b/site/content/3.12/arangograph/oasisctl/lock/lock-ipallowlist.md deleted file mode 100644 index 9f4460b2e2..0000000000 --- a/site/content/3.12/arangograph/oasisctl/lock/lock-ipallowlist.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Lock IP Allowlist -menuTitle: Lock IP Allowlist -weight: 3 ---- -## oasisctl lock ipallowlist - -Lock an IP allowlist, so it cannot be deleted - -``` -oasisctl lock ipallowlist [flags] -``` - -## Options -``` - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.12/arangograph/oasisctl/lock/lock-organization.md b/site/content/3.12/arangograph/oasisctl/lock/lock-organization.md deleted file mode 100644 index e65abeea81..0000000000 --- a/site/content/3.12/arangograph/oasisctl/lock/lock-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Lock Organization -menuTitle: Lock Organization -weight: 4 ---- -## oasisctl lock organization - -Lock an organization, so it cannot be deleted - -``` -oasisctl lock organization [flags] -``` - -## Options -``` - -h, --help help for organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.12/arangograph/oasisctl/lock/lock-policy.md b/site/content/3.12/arangograph/oasisctl/lock/lock-policy.md deleted file mode 100644 index 8b70ed3617..0000000000 --- a/site/content/3.12/arangograph/oasisctl/lock/lock-policy.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Lock Policy -menuTitle: Lock Policy -weight: 5 ---- -## oasisctl lock policy - -Lock a backup policy - -``` -oasisctl lock policy [flags] -``` - -## Options -``` - -d, --backup-policy-id string Identifier of the backup policy - -h, --help help for policy -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.12/arangograph/oasisctl/lock/lock-project.md b/site/content/3.12/arangograph/oasisctl/lock/lock-project.md deleted file mode 100644 index f71ac58f82..0000000000 --- a/site/content/3.12/arangograph/oasisctl/lock/lock-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Lock Project -menuTitle: Lock Project -weight: 6 ---- -## oasisctl lock project - -Lock a project, so it cannot be deleted - -``` -oasisctl lock project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.12/arangograph/oasisctl/login.md b/site/content/3.12/arangograph/oasisctl/login.md deleted file mode 100644 index a507d3e942..0000000000 --- a/site/content/3.12/arangograph/oasisctl/login.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Oasisctl Login -menuTitle: Login -weight: 17 ---- -## oasisctl login - -Login to ArangoDB Oasis using an API key - -## Synopsis -To authenticate in a script environment, run: - - export OASIS_TOKEN=$(oasisctl login --key-id=<your-key-id> --key-secret=<your-key-secret>) - - -``` -oasisctl login [flags] -``` - -## Options -``` - -h, --help help for login - -i, --key-id string API key identifier - -s, --key-secret string API key secret -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.12/arangograph/oasisctl/logs.md b/site/content/3.12/arangograph/oasisctl/logs.md deleted file mode 100644 index 71f2555f94..0000000000 --- a/site/content/3.12/arangograph/oasisctl/logs.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Oasisctl Logs -menuTitle: Logs -weight: 18 ---- -## oasisctl logs - -Get logs of the servers of a deployment the authenticated user has access to - -``` -oasisctl logs [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - --end string End fetching logs at this timestamp (pass timestamp or duration before now) - --format string Formatting of the log output. It can be one of two: text, json. Text is the default value. (default "text") - -h, --help help for logs - -l, --limit int Limit the number of log lines - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -r, --role string Limit logs to servers with given role only (agents|coordinators|dbservers) - --start string Start fetching logs from this timestamp (pass timestamp or duration before now) -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.12/arangograph/oasisctl/options.md b/site/content/3.12/arangograph/oasisctl/options.md deleted file mode 100644 index 75823ecb85..0000000000 --- a/site/content/3.12/arangograph/oasisctl/options.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -description: Command-line client tool for managing ArangoGraph -title: ArangoGraph Shell oasisctl -menuTitle: Options -weight: 1 ---- -## oasisctl - -ArangoGraph Insights Platform - -## Synopsis -ArangoGraph Insights Platform (formerly called Oasis): The Managed Cloud for ArangoDB - -``` -oasisctl [flags] -``` - -## Options -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - -h, --help help for oasisctl - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl accept](accept/_index.md) - Accept invites -* [oasisctl add](add/_index.md) - Add resources -* [oasisctl auditlog](auditlog/_index.md) - AuditLog resources -* [oasisctl backup](backup/_index.md) - Backup commands -* [oasisctl clone](clone/_index.md) - Clone resources -* [oasisctl completion](completion.md) - Generates bash completion scripts -* [oasisctl create](create/_index.md) - Create resources -* [oasisctl delete](delete/_index.md) - Delete resources -* [oasisctl disable](disable/_index.md) - Disable some settings related to deployment -* [oasisctl enable](enable/_index.md) - Enable some settings related to deployment -* [oasisctl generate-docs](generate-docs.md) - Generate output -* [oasisctl get](get/_index.md) - Get information -* [oasisctl import](import.md) - Import data from a local database or from another remote database into an Oasis deployment. -* [oasisctl list](list/_index.md) - List resources -* [oasisctl lock](lock/_index.md) - Lock resources -* [oasisctl login](login.md) - Login to ArangoDB Oasis using an API key -* [oasisctl logs](logs.md) - Get logs of the servers of a deployment the authenticated user has access to -* [oasisctl pause](pause/_index.md) - Pause resources -* [oasisctl rebalance](rebalance/_index.md) - Rebalance resources -* [oasisctl reject](reject/_index.md) - Reject invites -* [oasisctl renew](renew/_index.md) - Renew keys & tokens -* [oasisctl resume](resume/_index.md) - Resume resources -* [oasisctl revoke](revoke/_index.md) - Revoke keys & tokens -* [oasisctl rotate](rotate/_index.md) - Rotate resources -* [oasisctl top](top.md) - Show the most important server metrics -* [oasisctl unlock](unlock/_index.md) - Unlock resources -* [oasisctl update](update/_index.md) - Update resources -* [oasisctl upgrade](upgrade.md) - Upgrade Oasisctl tool -* [oasisctl version](version.md) - Show the current version of this tool -* [oasisctl wait](wait/_index.md) - Wait for a status change - diff --git a/site/content/3.12/arangograph/oasisctl/pause/_index.md b/site/content/3.12/arangograph/oasisctl/pause/_index.md deleted file mode 100644 index ce02e840c5..0000000000 --- a/site/content/3.12/arangograph/oasisctl/pause/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Pause -menuTitle: Pause -weight: 19 ---- -## oasisctl pause - -Pause resources - -``` -oasisctl pause [flags] -``` - -## Options -``` - -h, --help help for pause -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl pause notebook](pause-notebook.md) - Pause a notebook - diff --git a/site/content/3.12/arangograph/oasisctl/pause/pause-notebook.md b/site/content/3.12/arangograph/oasisctl/pause/pause-notebook.md deleted file mode 100644 index 0db646d81b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/pause/pause-notebook.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Pause Notebook -menuTitle: Pause Notebook -weight: 1 ---- -## oasisctl pause notebook - -Pause a notebook - -``` -oasisctl pause notebook [flags] -``` - -## Options -``` - -h, --help help for notebook - -n, --notebook-id string Identifier of the notebook -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl pause](_index.md) - Pause resources - diff --git a/site/content/3.12/arangograph/oasisctl/rebalance/_index.md b/site/content/3.12/arangograph/oasisctl/rebalance/_index.md deleted file mode 100644 index c1532b7f91..0000000000 --- a/site/content/3.12/arangograph/oasisctl/rebalance/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rebalance -menuTitle: Rebalance -weight: 20 ---- -## oasisctl rebalance - -Rebalance resources - -``` -oasisctl rebalance [flags] -``` - -## Options -``` - -h, --help help for rebalance -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl rebalance deployment](rebalance-deployment.md) - Rebalance deployment resources - diff --git a/site/content/3.12/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md b/site/content/3.12/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md deleted file mode 100644 index 706b6339e9..0000000000 --- a/site/content/3.12/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rebalance Deployment Shards -menuTitle: Rebalance Deployment Shards -weight: 2 ---- -## oasisctl rebalance deployment shards - -Rebalance shards of a deployment - -``` -oasisctl rebalance deployment shards [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for shards -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl rebalance deployment](rebalance-deployment.md) - Rebalance deployment resources - diff --git a/site/content/3.12/arangograph/oasisctl/rebalance/rebalance-deployment.md b/site/content/3.12/arangograph/oasisctl/rebalance/rebalance-deployment.md deleted file mode 100644 index 7759314ec5..0000000000 --- a/site/content/3.12/arangograph/oasisctl/rebalance/rebalance-deployment.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rebalance Deployment -menuTitle: Rebalance Deployment -weight: 1 ---- -## oasisctl rebalance deployment - -Rebalance deployment resources - -``` -oasisctl rebalance deployment [flags] -``` - -## Options -``` - -h, --help help for deployment -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl rebalance](_index.md) - Rebalance resources -* [oasisctl rebalance deployment shards](rebalance-deployment-shards.md) - Rebalance shards of a deployment - diff --git a/site/content/3.12/arangograph/oasisctl/reject/_index.md b/site/content/3.12/arangograph/oasisctl/reject/_index.md deleted file mode 100644 index 69cff60ece..0000000000 --- a/site/content/3.12/arangograph/oasisctl/reject/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Reject -menuTitle: Reject -weight: 21 ---- -## oasisctl reject - -Reject invites - -``` -oasisctl reject [flags] -``` - -## Options -``` - -h, --help help for reject -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl reject organization](reject-organization.md) - Reject organization related invites - diff --git a/site/content/3.12/arangograph/oasisctl/reject/reject-organization-invite.md b/site/content/3.12/arangograph/oasisctl/reject/reject-organization-invite.md deleted file mode 100644 index d43ecfca52..0000000000 --- a/site/content/3.12/arangograph/oasisctl/reject/reject-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Reject Organization Invite -menuTitle: Reject Organization Invite -weight: 2 ---- -## oasisctl reject organization invite - -Reject an organization invite the authenticated user has access to - -``` -oasisctl reject organization invite [flags] -``` - -## Options -``` - -h, --help help for invite - -i, --invite-id string Identifier of the organization invite - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl reject organization](reject-organization.md) - Reject organization related invites - diff --git a/site/content/3.12/arangograph/oasisctl/reject/reject-organization.md b/site/content/3.12/arangograph/oasisctl/reject/reject-organization.md deleted file mode 100644 index c688b02cd1..0000000000 --- a/site/content/3.12/arangograph/oasisctl/reject/reject-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Reject Organization -menuTitle: Reject Organization -weight: 1 ---- -## oasisctl reject organization - -Reject organization related invites - -``` -oasisctl reject organization [flags] -``` - -## Options -``` - -h, --help help for organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl reject](_index.md) - Reject invites -* [oasisctl reject organization invite](reject-organization-invite.md) - Reject an organization invite the authenticated user has access to - diff --git a/site/content/3.12/arangograph/oasisctl/renew/_index.md b/site/content/3.12/arangograph/oasisctl/renew/_index.md deleted file mode 100644 index b140a835de..0000000000 --- a/site/content/3.12/arangograph/oasisctl/renew/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Renew -menuTitle: Renew -weight: 22 ---- -## oasisctl renew - -Renew keys & tokens - -``` -oasisctl renew [flags] -``` - -## Options -``` - -h, --help help for renew -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl renew apikey](renew-apikey.md) - Renew API keys & tokens - diff --git a/site/content/3.12/arangograph/oasisctl/renew/renew-apikey-token.md b/site/content/3.12/arangograph/oasisctl/renew/renew-apikey-token.md deleted file mode 100644 index e6a1798243..0000000000 --- a/site/content/3.12/arangograph/oasisctl/renew/renew-apikey-token.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Renew API Key Token -menuTitle: Renew API Key Token -weight: 2 ---- -## oasisctl renew apikey token - -Renew an API key token - -## Synopsis -Renew the token (resulting from API key authentication) - -``` -oasisctl renew apikey token [flags] -``` - -## Options -``` - -h, --help help for token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl renew apikey](renew-apikey.md) - Renew API keys & tokens - diff --git a/site/content/3.12/arangograph/oasisctl/renew/renew-apikey.md b/site/content/3.12/arangograph/oasisctl/renew/renew-apikey.md deleted file mode 100644 index 14c1b7ec4d..0000000000 --- a/site/content/3.12/arangograph/oasisctl/renew/renew-apikey.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Renew API Key -menuTitle: Renew API Key -weight: 1 ---- -## oasisctl renew apikey - -Renew API keys & tokens - -``` -oasisctl renew apikey [flags] -``` - -## Options -``` - -h, --help help for apikey -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl renew](_index.md) - Renew keys & tokens -* [oasisctl renew apikey token](renew-apikey-token.md) - Renew an API key token - diff --git a/site/content/3.12/arangograph/oasisctl/resume/_index.md b/site/content/3.12/arangograph/oasisctl/resume/_index.md deleted file mode 100644 index 78485175c1..0000000000 --- a/site/content/3.12/arangograph/oasisctl/resume/_index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Resume -menuTitle: Resume -weight: 23 ---- -## oasisctl resume - -Resume resources - -``` -oasisctl resume [flags] -``` - -## Options -``` - -h, --help help for resume -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl resume deployment](resume-deployment.md) - Resume a paused deployment the authenticated user has access to -* [oasisctl resume notebook](resume-notebook.md) - Resume a notebook - diff --git a/site/content/3.12/arangograph/oasisctl/resume/resume-deployment.md b/site/content/3.12/arangograph/oasisctl/resume/resume-deployment.md deleted file mode 100644 index 7cbc18ef00..0000000000 --- a/site/content/3.12/arangograph/oasisctl/resume/resume-deployment.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Resume Deployment -menuTitle: Resume Deployment -weight: 1 ---- -## oasisctl resume deployment - -Resume a paused deployment the authenticated user has access to - -``` -oasisctl resume deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl resume](_index.md) - Resume resources - diff --git a/site/content/3.12/arangograph/oasisctl/resume/resume-notebook.md b/site/content/3.12/arangograph/oasisctl/resume/resume-notebook.md deleted file mode 100644 index 17add47562..0000000000 --- a/site/content/3.12/arangograph/oasisctl/resume/resume-notebook.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Resume Notebook -menuTitle: Resume Notebook -weight: 2 ---- -## oasisctl resume notebook - -Resume a notebook - -``` -oasisctl resume notebook [flags] -``` - -## Options -``` - -h, --help help for notebook - -n, --notebook-id string Identifier of the notebook -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl resume](_index.md) - Resume resources - diff --git a/site/content/3.12/arangograph/oasisctl/revoke/_index.md b/site/content/3.12/arangograph/oasisctl/revoke/_index.md deleted file mode 100644 index 80ad7af060..0000000000 --- a/site/content/3.12/arangograph/oasisctl/revoke/_index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Revoke -menuTitle: Revoke -weight: 24 ---- -## oasisctl revoke - -Revoke keys & tokens - -``` -oasisctl revoke [flags] -``` - -## Options -``` - -h, --help help for revoke -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl revoke apikey](revoke-apikey.md) - Revoke an API key with given identifier -* [oasisctl revoke metrics](revoke-metrics.md) - Revoke keys & tokens - diff --git a/site/content/3.12/arangograph/oasisctl/revoke/revoke-apikey-token.md b/site/content/3.12/arangograph/oasisctl/revoke/revoke-apikey-token.md deleted file mode 100644 index 795b5e5605..0000000000 --- a/site/content/3.12/arangograph/oasisctl/revoke/revoke-apikey-token.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Revoke API Key Token -menuTitle: Revoke API Key Token -weight: 2 ---- -## oasisctl revoke apikey token - -Revoke an API key token - -## Synopsis -Revoke the token (resulting from API key authentication) - -``` -oasisctl revoke apikey token [flags] -``` - -## Options -``` - -h, --help help for token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl revoke apikey](revoke-apikey.md) - Revoke an API key with given identifier - diff --git a/site/content/3.12/arangograph/oasisctl/revoke/revoke-apikey.md b/site/content/3.12/arangograph/oasisctl/revoke/revoke-apikey.md deleted file mode 100644 index 5c15ef927a..0000000000 --- a/site/content/3.12/arangograph/oasisctl/revoke/revoke-apikey.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Revoke API Key -menuTitle: Revoke API Key -weight: 1 ---- -## oasisctl revoke apikey - -Revoke an API key with given identifier - -``` -oasisctl revoke apikey [flags] -``` - -## Options -``` - -i, --apikey-id string Identifier of the API key to revoke - -h, --help help for apikey -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl revoke](_index.md) - Revoke keys & tokens -* [oasisctl revoke apikey token](revoke-apikey-token.md) - Revoke an API key token - diff --git a/site/content/3.12/arangograph/oasisctl/revoke/revoke-metrics-token.md b/site/content/3.12/arangograph/oasisctl/revoke/revoke-metrics-token.md deleted file mode 100644 index 0876f21606..0000000000 --- a/site/content/3.12/arangograph/oasisctl/revoke/revoke-metrics-token.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Revoke Metrics Token -menuTitle: Revoke Metrics Token -weight: 4 ---- -## oasisctl revoke metrics token - -Revoke a metrics token for a deployment - -``` -oasisctl revoke metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for token - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --token-id string Identifier of the metrics token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl revoke metrics](revoke-metrics.md) - Revoke keys & tokens - diff --git a/site/content/3.12/arangograph/oasisctl/revoke/revoke-metrics.md b/site/content/3.12/arangograph/oasisctl/revoke/revoke-metrics.md deleted file mode 100644 index 638a17df00..0000000000 --- a/site/content/3.12/arangograph/oasisctl/revoke/revoke-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Revoke Metrics -menuTitle: Revoke Metrics -weight: 3 ---- -## oasisctl revoke metrics - -Revoke keys & tokens - -``` -oasisctl revoke metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl revoke](_index.md) - Revoke keys & tokens -* [oasisctl revoke metrics token](revoke-metrics-token.md) - Revoke a metrics token for a deployment - diff --git a/site/content/3.12/arangograph/oasisctl/rotate/_index.md b/site/content/3.12/arangograph/oasisctl/rotate/_index.md deleted file mode 100644 index e24096c868..0000000000 --- a/site/content/3.12/arangograph/oasisctl/rotate/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rotate -menuTitle: Rotate -weight: 25 ---- -## oasisctl rotate - -Rotate resources - -``` -oasisctl rotate [flags] -``` - -## Options -``` - -h, --help help for rotate -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl rotate deployment](rotate-deployment.md) - Rotate deployment resources - diff --git a/site/content/3.12/arangograph/oasisctl/rotate/rotate-deployment-server.md b/site/content/3.12/arangograph/oasisctl/rotate/rotate-deployment-server.md deleted file mode 100644 index 5d281d1ae4..0000000000 --- a/site/content/3.12/arangograph/oasisctl/rotate/rotate-deployment-server.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Rotate Deployment Server -menuTitle: Rotate Deployment Server -weight: 2 ---- -## oasisctl rotate deployment server - -Rotate a single server of a deployment - -``` -oasisctl rotate deployment server [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for server - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -s, --server-id strings Identifier of the deployment server -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl rotate deployment](rotate-deployment.md) - Rotate deployment resources - diff --git a/site/content/3.12/arangograph/oasisctl/rotate/rotate-deployment.md b/site/content/3.12/arangograph/oasisctl/rotate/rotate-deployment.md deleted file mode 100644 index de899d924d..0000000000 --- a/site/content/3.12/arangograph/oasisctl/rotate/rotate-deployment.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rotate Deployment -menuTitle: Rotate Deployment -weight: 1 ---- -## oasisctl rotate deployment - -Rotate deployment resources - -``` -oasisctl rotate deployment [flags] -``` - -## Options -``` - -h, --help help for deployment -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl rotate](_index.md) - Rotate resources -* [oasisctl rotate deployment server](rotate-deployment-server.md) - Rotate a single server of a deployment - diff --git a/site/content/3.12/arangograph/oasisctl/top.md b/site/content/3.12/arangograph/oasisctl/top.md deleted file mode 100644 index d89a83ebfe..0000000000 --- a/site/content/3.12/arangograph/oasisctl/top.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Top -menuTitle: Top -weight: 26 ---- -## oasisctl top - -Show the most important server metrics - -``` -oasisctl top [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for top - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.12/arangograph/oasisctl/unlock/_index.md b/site/content/3.12/arangograph/oasisctl/unlock/_index.md deleted file mode 100644 index 2c376ce6fd..0000000000 --- a/site/content/3.12/arangograph/oasisctl/unlock/_index.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Unlock -menuTitle: Unlock -weight: 27 ---- -## oasisctl unlock - -Unlock resources - -``` -oasisctl unlock [flags] -``` - -## Options -``` - -h, --help help for unlock -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl unlock cacertificate](unlock-cacertificate.md) - Unlock a CA certificate, so it can be deleted -* [oasisctl unlock deployment](unlock-deployment.md) - Unlock a deployment, so it can be deleted -* [oasisctl unlock ipallowlist](unlock-ipallowlist.md) - Unlock an IP allowlist, so it can be deleted -* [oasisctl unlock organization](unlock-organization.md) - Unlock an organization, so it can be deleted -* [oasisctl unlock policy](unlock-policy.md) - Unlock a backup policy -* [oasisctl unlock project](unlock-project.md) - Unlock a project, so it can be deleted - diff --git a/site/content/3.12/arangograph/oasisctl/unlock/unlock-cacertificate.md b/site/content/3.12/arangograph/oasisctl/unlock/unlock-cacertificate.md deleted file mode 100644 index 418fb91ae6..0000000000 --- a/site/content/3.12/arangograph/oasisctl/unlock/unlock-cacertificate.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Unlock CA Certificate -menuTitle: Unlock CA Certificate -weight: 1 ---- -## oasisctl unlock cacertificate - -Unlock a CA certificate, so it can be deleted - -``` -oasisctl unlock cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - -h, --help help for cacertificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.12/arangograph/oasisctl/unlock/unlock-deployment.md b/site/content/3.12/arangograph/oasisctl/unlock/unlock-deployment.md deleted file mode 100644 index 6d870921e6..0000000000 --- a/site/content/3.12/arangograph/oasisctl/unlock/unlock-deployment.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Unlock Deployment -menuTitle: Unlock Deployment -weight: 2 ---- -## oasisctl unlock deployment - -Unlock a deployment, so it can be deleted - -``` -oasisctl unlock deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.12/arangograph/oasisctl/unlock/unlock-ipallowlist.md b/site/content/3.12/arangograph/oasisctl/unlock/unlock-ipallowlist.md deleted file mode 100644 index 36f8fdbaed..0000000000 --- a/site/content/3.12/arangograph/oasisctl/unlock/unlock-ipallowlist.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Unlock IP Allowlist -menuTitle: Unlock IP Allowlist -weight: 3 ---- -## oasisctl unlock ipallowlist - -Unlock an IP allowlist, so it can be deleted - -``` -oasisctl unlock ipallowlist [flags] -``` - -## Options -``` - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.12/arangograph/oasisctl/unlock/unlock-organization.md b/site/content/3.12/arangograph/oasisctl/unlock/unlock-organization.md deleted file mode 100644 index bfc70efccd..0000000000 --- a/site/content/3.12/arangograph/oasisctl/unlock/unlock-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Unlock Organization -menuTitle: Unlock Organization -weight: 4 ---- -## oasisctl unlock organization - -Unlock an organization, so it can be deleted - -``` -oasisctl unlock organization [flags] -``` - -## Options -``` - -h, --help help for organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.12/arangograph/oasisctl/unlock/unlock-policy.md b/site/content/3.12/arangograph/oasisctl/unlock/unlock-policy.md deleted file mode 100644 index 2646b5af51..0000000000 --- a/site/content/3.12/arangograph/oasisctl/unlock/unlock-policy.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Unlock Policy -menuTitle: Unlock Policy -weight: 5 ---- -## oasisctl unlock policy - -Unlock a backup policy - -``` -oasisctl unlock policy [flags] -``` - -## Options -``` - -d, --backup-policy-id string Identifier of the backup policy - -h, --help help for policy -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.12/arangograph/oasisctl/unlock/unlock-project.md b/site/content/3.12/arangograph/oasisctl/unlock/unlock-project.md deleted file mode 100644 index 211e810283..0000000000 --- a/site/content/3.12/arangograph/oasisctl/unlock/unlock-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Unlock Project -menuTitle: Unlock Project -weight: 6 ---- -## oasisctl unlock project - -Unlock a project, so it can be deleted - -``` -oasisctl unlock project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.12/arangograph/oasisctl/update/_index.md b/site/content/3.12/arangograph/oasisctl/update/_index.md deleted file mode 100644 index 0d1501cbe5..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/_index.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Oasisctl Update -menuTitle: Update -weight: 28 ---- -## oasisctl update - -Update resources - -``` -oasisctl update [flags] -``` - -## Options -``` - -h, --help help for update -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl update auditlog](update-auditlog.md) - Update an auditlog -* [oasisctl update backup](update-backup.md) - Update a backup -* [oasisctl update cacertificate](update-cacertificate.md) - Update a CA certificate the authenticated user has access to -* [oasisctl update deployment](update-deployment.md) - Update a deployment the authenticated user has access to -* [oasisctl update group](update-group.md) - Update a group the authenticated user has access to -* [oasisctl update ipallowlist](update-ipallowlist.md) - Update an IP allowlist the authenticated user has access to -* [oasisctl update metrics](update-metrics.md) - Update metrics resources -* [oasisctl update notebook](update-notebook.md) - Update notebook -* [oasisctl update organization](update-organization.md) - Update an organization the authenticated user has access to -* [oasisctl update policy](update-policy.md) - Update a policy -* [oasisctl update private](update-private.md) - Update private resources -* [oasisctl update project](update-project.md) - Update a project the authenticated user has access to -* [oasisctl update role](update-role.md) - Update a role the authenticated user has access to - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-auditlog.md b/site/content/3.12/arangograph/oasisctl/update/update-auditlog.md deleted file mode 100644 index 8c92aa1c12..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-auditlog.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Update Audit Log -menuTitle: Update Audit Log -weight: 1 ---- -## oasisctl update auditlog - -Update an auditlog - -``` -oasisctl update auditlog [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog to update. - --default If set, this AuditLog is the default for the organization. - --description string Description of the audit log. - -h, --help help for auditlog - --name string Name of the audit log. - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-backup-policy.md b/site/content/3.12/arangograph/oasisctl/update/update-backup-policy.md deleted file mode 100644 index cad0d2417f..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-backup-policy.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Oasisctl Update Backup Policy -menuTitle: Update Backup Policy -weight: 3 ---- -## oasisctl update backup policy - -Update a backup policy - -``` -oasisctl update backup policy [flags] -``` - -## Options -``` - --additional-region-ids strings Add backup to the specified addition regions - -d, --backup-policy-id string Identifier of the backup policy - --day-of-the-month int32 Run the backup on the specified day of the month (1-31) (default 1) - --description string Description of the backup - --email-notification string Email notification setting (Never|FailureOnly|Always) - --every-interval-hours int32 Schedule should run with an interval of the specified hours (1-23) - --friday If set, a backup will be created on Fridays. Set to false explicitly to clear the flag. - -h, --help help for policy - --hours int32 Hours part of the time of day (0-23) - --minutes int32 Minutes part of the time of day (0-59) - --minutes-offset int32 Schedule should run with specific minutes offset (0-59) - --monday If set, a backup will be created on Mondays. Set to false explicitly to clear the flag. - --name string Name of the deployment - --paused The policy is paused. Set to false explicitly to clear the flag. - --retention-period int Backups created by this policy will be automatically deleted after the specified retention period. A value of 0 means that backup will never be deleted. - --saturday If set, a backup will be created on Saturdays. Set to false explicitly to clear the flag. - --schedule-type string Schedule of the policy (Hourly|Daily|Monthly) - --sunday If set, a backup will be created on Sundays. Set to false explicitly to clear the flag. - --thursday If set, a backup will be created on Thursdays. Set to false explicitly to clear the flag. - --time-zone string The time-zone this time of day applies to (empty means UTC). Names MUST be exactly as defined in RFC-822. (default "UTC") - --tuesday If set, a backup will be created on Tuesdays. Set to false explicitly to clear the flag. - --upload The backup should be uploaded. Set to false explicitly to clear the flag. - --wednesday If set, a backup will be created on Wednesdays. Set to false explicitly to clear the flag. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update backup](update-backup.md) - Update a backup - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-backup.md b/site/content/3.12/arangograph/oasisctl/update/update-backup.md deleted file mode 100644 index 9ce085b61b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-backup.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update Backup -menuTitle: Update Backup -weight: 2 ---- -## oasisctl update backup - -Update a backup - -``` -oasisctl update backup [flags] -``` - -## Options -``` - --auto-deleted-at int Time (h) until auto delete of the backup - -d, --backup-id string Identifier of the backup - --description string Description of the backup - -h, --help help for backup - --name string Name of the backup - --upload The backups should be uploaded -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update backup policy](update-backup-policy.md) - Update a backup policy - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-cacertificate.md b/site/content/3.12/arangograph/oasisctl/update/update-cacertificate.md deleted file mode 100644 index 1b97fe7a45..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-cacertificate.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update CA Certificate -menuTitle: Update CA Certificate -weight: 4 ---- -## oasisctl update cacertificate - -Update a CA certificate the authenticated user has access to - -``` -oasisctl update cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - --description string Description of the CA certificate - -h, --help help for cacertificate - --name string Name of the CA certificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --use-well-known-certificate Sets the usage of a well known certificate ie. Let's Encrypt -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-deployment.md b/site/content/3.12/arangograph/oasisctl/update/update-deployment.md deleted file mode 100644 index b7c36cace2..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-deployment.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Oasisctl Update Deployment -menuTitle: Update Deployment -weight: 5 ---- -## oasisctl update deployment - -Update a deployment the authenticated user has access to - -``` -oasisctl update deployment [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate to use for the deployment - --coordinator-memory-size int32 Set memory size of Coordinators for flexible deployments (GiB) (default 4) - --coordinators int32 Set number of Coordinators for flexible deployments (default 3) - --custom-image string Set a custom image to use for the deployment. Only available for selected customers. - --dbserver-disk-size int32 Set disk size of DB-Servers for flexible deployments (GiB) (default 32) - --dbserver-memory-size int32 Set memory size of DB-Servers for flexible deployments (GiB) (default 4) - --dbservers int32 Set number of DB-Servers for flexible deployments (default 3) - -d, --deployment-id string Identifier of the deployment - --description string Description of the deployment - --disable-foxx-authentication Disable authentication of requests to Foxx application. - --disk-performance-id string Set the disk performance to use for this deployment. - --drop-vst-support Drop VST protocol support to improve resilience. - -h, --help help for deployment - -i, --ipallowlist-id string Identifier of the IP allowlist to use for the deployment - --is-platform-authentication-enabled Enable platform authentication for deployment. - --max-node-disk-size int32 Set maximum disk size for nodes for autoscaler (GiB) - --model string Set model of the deployment (default "oneshard") - --name string Name of the deployment - --node-count int32 Set the number of desired nodes (default 3) - --node-disk-size int32 Set disk size for nodes (GiB) - --node-size-id string Set the node size to use for this deployment - --notification-email-address strings Set email address(-es) that will be used for notifications related to this deployment. - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --version string Version of ArangoDB to use for the deployment -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-group.md b/site/content/3.12/arangograph/oasisctl/update/update-group.md deleted file mode 100644 index 7021923d4c..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-group.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Update Group -menuTitle: Update Group -weight: 6 ---- -## oasisctl update group - -Update a group the authenticated user has access to - -``` -oasisctl update group [flags] -``` - -## Options -``` - --description string Description of the group - -g, --group-id string Identifier of the group - -h, --help help for group - --name string Name of the group - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-ipallowlist.md b/site/content/3.12/arangograph/oasisctl/update/update-ipallowlist.md deleted file mode 100644 index 089d41026c..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-ipallowlist.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Oasisctl Update IP Allowlist -menuTitle: Update IP Allowlist -weight: 7 ---- -## oasisctl update ipallowlist - -Update an IP allowlist the authenticated user has access to - -``` -oasisctl update ipallowlist [flags] -``` - -## Options -``` - --add-cidr-range strings List of CIDR ranges to add to the IP allowlist - --description string Description of the CA certificate - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - --name string Name of the CA certificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --remote-inspection-allowed If set, remote connectivity checks by the Oasis platform are allowed - --remove-cidr-range strings List of CIDR ranges to remove from the IP allowlist -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-metrics-token.md b/site/content/3.12/arangograph/oasisctl/update/update-metrics-token.md deleted file mode 100644 index 2ff4a301aa..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-metrics-token.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update Metrics Token -menuTitle: Update Metrics Token -weight: 9 ---- -## oasisctl update metrics token - -Update a metrics token - -``` -oasisctl update metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - --description string Description of the CA certificate - -h, --help help for token - --name string Name of the CA certificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --token-id string Identifier of the metrics token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update metrics](update-metrics.md) - Update metrics resources - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-metrics.md b/site/content/3.12/arangograph/oasisctl/update/update-metrics.md deleted file mode 100644 index d8fc683f1e..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Metrics -menuTitle: Update Metrics -weight: 8 ---- -## oasisctl update metrics - -Update metrics resources - -``` -oasisctl update metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update metrics token](update-metrics-token.md) - Update a metrics token - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-notebook.md b/site/content/3.12/arangograph/oasisctl/update/update-notebook.md deleted file mode 100644 index 2b6fee7bb0..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-notebook.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Update Notebook -menuTitle: Update Notebook -weight: 10 ---- -## oasisctl update notebook - -Update notebook - -``` -oasisctl update notebook [flags] -``` - -## Options -``` - -d, --description string Description of the notebook - -s, --disk-size int32 Notebook disk size in GiB - -h, --help help for notebook - --name string Name of the notebook - -n, --notebook-id string Identifier of the notebook - -m, --notebook-model string Identifier of the notebook model -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-organization-authentication-providers.md b/site/content/3.12/arangograph/oasisctl/update/update-organization-authentication-providers.md deleted file mode 100644 index 8d8d9be5de..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-organization-authentication-providers.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update Organization Authentication Providers -menuTitle: Update Organization Authentication Providers -weight: 13 ---- -## oasisctl update organization authentication providers - -Update allowed authentication providers for an organization the authenticated user has access to - -``` -oasisctl update organization authentication providers [flags] -``` - -## Options -``` - --enable-github If set, allow access from user accounts authentication through Github - --enable-google If set, allow access from user accounts authentication through Google - --enable-microsoft If set, allow access from user accounts authentication through Microsoft - --enable-sso If set, allow access from user accounts authentication through single sign on (sso) - --enable-username-password If set, allow access from user accounts authentication through username-password - -h, --help help for providers - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization authentication](update-organization-authentication.md) - Update authentication settings for an organization - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-organization-authentication.md b/site/content/3.12/arangograph/oasisctl/update/update-organization-authentication.md deleted file mode 100644 index 328b81b297..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-organization-authentication.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Organization Authentication -menuTitle: Update Organization Authentication -weight: 12 ---- -## oasisctl update organization authentication - -Update authentication settings for an organization - -``` -oasisctl update organization authentication [flags] -``` - -## Options -``` - -h, --help help for authentication -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization](update-organization.md) - Update an organization the authenticated user has access to -* [oasisctl update organization authentication providers](update-organization-authentication-providers.md) - Update allowed authentication providers for an organization the authenticated user has access to - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md b/site/content/3.12/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md deleted file mode 100644 index 6d860fa8d6..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Update Organization Email Domain Restrictions -menuTitle: Update Organization Email Domain Restrictions -weight: 16 ---- -## oasisctl update organization email domain restrictions - -Update which domain restrictions are placed on accessing a specific organization - -``` -oasisctl update organization email domain restrictions [flags] -``` - -## Options -``` - -d, --allowed-domain strings Allowed email domains for users of the organization - -h, --help help for restrictions - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization email domain](update-organization-email-domain.md) - Update email domain specific information for an organization - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-organization-email-domain.md b/site/content/3.12/arangograph/oasisctl/update/update-organization-email-domain.md deleted file mode 100644 index 57f79b6fbb..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-organization-email-domain.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Organization Email Domain -menuTitle: Update Organization Email Domain -weight: 15 ---- -## oasisctl update organization email domain - -Update email domain specific information for an organization - -``` -oasisctl update organization email domain [flags] -``` - -## Options -``` - -h, --help help for domain -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization email](update-organization-email.md) - Update email specific information for an organization -* [oasisctl update organization email domain restrictions](update-organization-email-domain-restrictions.md) - Update which domain restrictions are placed on accessing a specific organization - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-organization-email.md b/site/content/3.12/arangograph/oasisctl/update/update-organization-email.md deleted file mode 100644 index 89f05ed737..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-organization-email.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Organization Email -menuTitle: Update Organization Email -weight: 14 ---- -## oasisctl update organization email - -Update email specific information for an organization - -``` -oasisctl update organization email [flags] -``` - -## Options -``` - -h, --help help for email -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization](update-organization.md) - Update an organization the authenticated user has access to -* [oasisctl update organization email domain](update-organization-email-domain.md) - Update email domain specific information for an organization - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-organization.md b/site/content/3.12/arangograph/oasisctl/update/update-organization.md deleted file mode 100644 index 670d291842..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-organization.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Update Organization -menuTitle: Update Organization -weight: 11 ---- -## oasisctl update organization - -Update an organization the authenticated user has access to - -``` -oasisctl update organization [flags] -``` - -## Options -``` - --description string Description of the organization - -h, --help help for organization - --name string Name of the organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update organization authentication](update-organization-authentication.md) - Update authentication settings for an organization -* [oasisctl update organization email](update-organization-email.md) - Update email specific information for an organization - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-policy-add-binding.md b/site/content/3.12/arangograph/oasisctl/update/update-policy-add-binding.md deleted file mode 100644 index df89601244..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-policy-add-binding.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Update Policy Add Binding -menuTitle: Update Policy Add Binding -weight: 19 ---- -## oasisctl update policy add binding - -Add a role binding to a policy - -``` -oasisctl update policy add binding [flags] -``` - -## Options -``` - --group-id strings Identifiers of the groups to add bindings for - -h, --help help for binding - -r, --role-id string Identifier of the role to bind to - -u, --url string URL of the resource to update the policy for - --user-id strings Identifiers of the users to add bindings for -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update policy add](update-policy-add.md) - Add to a policy - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-policy-add.md b/site/content/3.12/arangograph/oasisctl/update/update-policy-add.md deleted file mode 100644 index 42e655fe7c..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-policy-add.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Policy Add -menuTitle: Update Policy Add -weight: 18 ---- -## oasisctl update policy add - -Add to a policy - -``` -oasisctl update policy add [flags] -``` - -## Options -``` - -h, --help help for add -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update policy](update-policy.md) - Update a policy -* [oasisctl update policy add binding](update-policy-add-binding.md) - Add a role binding to a policy - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-policy-delete-binding.md b/site/content/3.12/arangograph/oasisctl/update/update-policy-delete-binding.md deleted file mode 100644 index 602bc93e93..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-policy-delete-binding.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Update Policy Delete Binding -menuTitle: Update Policy Delete Binding -weight: 21 ---- -## oasisctl update policy delete binding - -Delete a role binding from a policy - -``` -oasisctl update policy delete binding [flags] -``` - -## Options -``` - --group-id strings Identifiers of the groups to delete bindings for - -h, --help help for binding - -r, --role-id string Identifier of the role to delete bind for - -u, --url string URL of the resource to update the policy for - --user-id strings Identifiers of the users to delete bindings for -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update policy delete](update-policy-delete.md) - Delete from a policy - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-policy-delete.md b/site/content/3.12/arangograph/oasisctl/update/update-policy-delete.md deleted file mode 100644 index dec2527590..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-policy-delete.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Policy Delete -menuTitle: Update Policy Delete -weight: 20 ---- -## oasisctl update policy delete - -Delete from a policy - -``` -oasisctl update policy delete [flags] -``` - -## Options -``` - -h, --help help for delete -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update policy](update-policy.md) - Update a policy -* [oasisctl update policy delete binding](update-policy-delete-binding.md) - Delete a role binding from a policy - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-policy.md b/site/content/3.12/arangograph/oasisctl/update/update-policy.md deleted file mode 100644 index 132c0b4123..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-policy.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Update Policy -menuTitle: Update Policy -weight: 17 ---- -## oasisctl update policy - -Update a policy - -``` -oasisctl update policy [flags] -``` - -## Options -``` - -h, --help help for policy -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update policy add](update-policy-add.md) - Add to a policy -* [oasisctl update policy delete](update-policy-delete.md) - Delete from a policy - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-private-endpoint-service.md b/site/content/3.12/arangograph/oasisctl/update/update-private-endpoint-service.md deleted file mode 100644 index 81aa0917f6..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-private-endpoint-service.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Oasisctl Update Private Endpoint Service -menuTitle: Update Private Endpoint Service -weight: 24 ---- -## oasisctl update private endpoint service - -Update a Private Endpoint Service attached to an existing deployment - -``` -oasisctl update private endpoint service [flags] -``` - -## Options -``` - --alternate-dns-name strings DNS names used for the deployment in the private network - --aws-principal strings List of AWS Principals from which a Private Endpoint can be created (Format: <AccountID>[/Role/<RoleName>|/User/<UserName>]) - --azure-client-subscription-id strings List of Azure subscription IDs from which a Private Endpoint can be created - -d, --deployment-id string Identifier of the deployment that the private endpoint service is connected to - --description string Description of the private endpoint service - --enable-private-dns Enable private DNS (applicable for AWS only) - --gcp-project strings List of GCP projects from which a Private Endpoint can be created - -h, --help help for service - --name string Name of the private endpoint service - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update private endpoint](update-private-endpoint.md) - - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-private-endpoint.md b/site/content/3.12/arangograph/oasisctl/update/update-private-endpoint.md deleted file mode 100644 index a66ead3924..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-private-endpoint.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Private Endpoint -menuTitle: Update Private Endpoint -weight: 23 ---- -## oasisctl update private endpoint - - - -``` -oasisctl update private endpoint [flags] -``` - -## Options -``` - -h, --help help for endpoint -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update private](update-private.md) - Update private resources -* [oasisctl update private endpoint service](update-private-endpoint-service.md) - Update a Private Endpoint Service attached to an existing deployment - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-private.md b/site/content/3.12/arangograph/oasisctl/update/update-private.md deleted file mode 100644 index 8c414612ac..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-private.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Private -menuTitle: Update Private -weight: 22 ---- -## oasisctl update private - -Update private resources - -``` -oasisctl update private [flags] -``` - -## Options -``` - -h, --help help for private -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update private endpoint](update-private-endpoint.md) - - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-project.md b/site/content/3.12/arangograph/oasisctl/update/update-project.md deleted file mode 100644 index 0965a3684e..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-project.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Update Project -menuTitle: Update Project -weight: 25 ---- -## oasisctl update project - -Update a project the authenticated user has access to - -``` -oasisctl update project [flags] -``` - -## Options -``` - --description string Description of the project - -h, --help help for project - --name string Name of the project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.12/arangograph/oasisctl/update/update-role.md b/site/content/3.12/arangograph/oasisctl/update/update-role.md deleted file mode 100644 index 58d7f2e8ab..0000000000 --- a/site/content/3.12/arangograph/oasisctl/update/update-role.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update Role -menuTitle: Update Role -weight: 26 ---- -## oasisctl update role - -Update a role the authenticated user has access to - -``` -oasisctl update role [flags] -``` - -## Options -``` - --add-permission strings Permissions to add to the role - --description string Description of the role - -h, --help help for role - --name string Name of the role - -o, --organization-id string Identifier of the organization - --remove-permission strings Permissions to remove from the role - -r, --role-id string Identifier of the role -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.12/arangograph/oasisctl/upgrade.md b/site/content/3.12/arangograph/oasisctl/upgrade.md deleted file mode 100644 index 8d77aa3ecf..0000000000 --- a/site/content/3.12/arangograph/oasisctl/upgrade.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Upgrade -menuTitle: Upgrade -weight: 29 ---- -## oasisctl upgrade - -Upgrade Oasisctl tool - -## Synopsis -Check the latest, compatible version and upgrade this tool to that. - -``` -oasisctl upgrade [flags] -``` - -## Options -``` - -d, --dry-run Do an upgrade without applying the version. - -f, --force Force an upgrade even if the versions match. - -h, --help help for upgrade -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.12/arangograph/oasisctl/version.md b/site/content/3.12/arangograph/oasisctl/version.md deleted file mode 100644 index e8e5ee7c8b..0000000000 --- a/site/content/3.12/arangograph/oasisctl/version.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl Version -menuTitle: Version -weight: 30 ---- -## oasisctl version - -Show the current version of this tool - -``` -oasisctl version [flags] -``` - -## Options -``` - -h, --help help for version -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.12/arangograph/oasisctl/wait/_index.md b/site/content/3.12/arangograph/oasisctl/wait/_index.md deleted file mode 100644 index 1ccac25259..0000000000 --- a/site/content/3.12/arangograph/oasisctl/wait/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Wait -menuTitle: Wait -weight: 31 ---- -## oasisctl wait - -Wait for a status change - -``` -oasisctl wait [flags] -``` - -## Options -``` - -h, --help help for wait -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl wait deployment](wait-deployment.md) - Wait for a deployment to reach the ready status - diff --git a/site/content/3.12/arangograph/oasisctl/wait/wait-deployment.md b/site/content/3.12/arangograph/oasisctl/wait/wait-deployment.md deleted file mode 100644 index ddc2c82d76..0000000000 --- a/site/content/3.12/arangograph/oasisctl/wait/wait-deployment.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Wait Deployment -menuTitle: Wait Deployment -weight: 1 ---- -## oasisctl wait deployment - -Wait for a deployment to reach the ready status - -``` -oasisctl wait deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --timeout duration How long to wait for the deployment to reach the ready status (default 20m0s) -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl wait](_index.md) - Wait for a status change - diff --git a/site/content/3.12/arangograph/organizations/_index.md b/site/content/3.12/arangograph/organizations/_index.md deleted file mode 100644 index 083b746dda..0000000000 --- a/site/content/3.12/arangograph/organizations/_index.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Organizations in ArangoGraph -menuTitle: Organizations -weight: 10 -description: >- - How to manage organizations and what type of packages ArangoGraph offers ---- -An ArangoGraph organizations is a container for projects. An organization -typically represents a (commercial) entity such as a company, a company division, -an institution, or a non-profit organization. - -**<u>Organizations</u> → Projects → Deployments** - -Users can be members of one or more organizations. However, you can only be a -member of one _Free-to-try_ tier organization at a time. - -## How to switch between my organizations - -1. The first entry in the main navigation (with a double arrow icon) indicates - the current organization. -2. Click it to bring up a dropdown menu to select another organization of which you - are a member. -3. The overview will open for the selected organization, showing the number of - projects, the tier and when it was created. - -![ArangoGraph Organization Switcher](../../../images/arangograph-organization-switcher.png) - -![ArangoGraph Organization Overview](../../../images/arangograph-organization-overview.png) - -## ArangoGraph Packages - -With the ArangoGraph Insights Platform, your organization can choose one of the -following packages. - -### Free Trial - -ArangoGraph comes with a free-to-try tier that lets you test ArangoGraph for -free for 14 days. You can get started quickly, without needing to enter a -credit card. - -The free trial gives you access to: -- One small deployment (4GB) in a region of your choice for 14 days -- Local backups -- One ArangoGraph Notebook for learning and data science - -After the trial period, your deployment will be deleted automatically. - -### On-Demand - -Add a payment method to gain access to ArangoGraph's full feature set. -Pay monthly via a credit card for what you actually use. - -This package unlocks all ArangoGraph functionality, including: -- Multiple and larger deployments -- Backups to cloud storage, with multi-region support -- Enhanced security features such as Private Endpoints - -### Committed - -Commit up-front for a year and pay via the Sales team. This package provides -the same flexibility of On-Demand, but at a lower price. - -In addition, you gain access to: -- 24/7 Premium Support -- ArangoDB Professional Services Engagements -- Ability to transact via the AWS and GCP marketplaces - -To take advantage of this, you need to get in touch with the ArangoDB -team. [Contact us](https://www.arangodb.com/contact/) for more details. - -## How to unlock all features - -You can unlock all features in ArangoGraph at any time by adding your billing -details and a payment method. As soon as you have added a payment method, all -ArangoGraph functionalities are immediately unlocked. From that point on, your -deployments will no longer expire and you can create more and larger deployments. - -See [Billing: How to add billing details / payment methods](billing.md) - -![ArangoGraph Billing](../../../images/arangograph-billing.png) - -## How to create a new organization - -See [My Account: How to create a new organization](../my-account.md#how-to-create-a-new-organization) - -## How to restrict access to an organization - -If you want to restrict access to an organization, you can do it by specifying which authentication providers are accepted for users trying to access the organization. For more information, refer to the [Access Control](../security-and-access-control/_index.md#restricting-access-to-organizations) section. - -## How to delete the current organization - -{{< danger >}} -Removing an organization implies the deletion of projects and deployments. -This operation cannot be undone and **all deployment data will be lost**. -Please proceed with caution. -{{< /danger >}} - -1. Click **Overview** in the **Organization** section of the main navigation. -2. Open the **Danger zone** tab. -3. Click the **Delete organization** button. -4. Enter `Delete!` to confirm and click **Yes**. - -{{< info >}} -If you are no longer a member of any organization, then a new organization is -created for you when you log in again. -{{< /info >}} - -{{< tip >}} -If the organization has a locked resource (a project or a deployment), you need to [unlock](../security-and-access-control/_index.md#locked-resources) -that resource first to be able to delete the organization. -{{< /tip >}} diff --git a/site/content/3.12/arangograph/organizations/billing.md b/site/content/3.12/arangograph/organizations/billing.md deleted file mode 100644 index 9b892b5500..0000000000 --- a/site/content/3.12/arangograph/organizations/billing.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Billing in ArangoGraph -menuTitle: Billing -weight: 10 -description: >- - How to manage billing details and payment methods in ArangoGraph ---- -## How to add billing details - -1. In the main navigation menu, click the **Organization** icon. -2. Click **Billing** in the **Organization** section. -3. In the **Billing Details** section, click **Edit**. -4. Enter your company name, billing address, and EU VAT identification number (if applicable). -5. Optionally, enter the email address(es) to which invoices should be emailed - to automatically. -6. Click **Save**. - -![ArangoGraph Billing Details](../../../images/arangograph-billing-details.png) - -## How to add a payment method - -1. In the main navigation menu, click the **Organization** icon. -2. Click **Billing** in the **Organization** section. -3. In the **Payment methods** section, click **Add**. -4. Fill out the form with your credit card details. Currently, a credit card is the only available payment method. -5. Click **Save**. - -![ArangoGraph Payment Method](../../../images/arangograph-add-payment-method-credit-card.png) - -{{% comment %}} -TODO: Need screenshot with invoice - -### How to view invoices - - -{{% /comment %}} diff --git a/site/content/3.12/arangograph/organizations/credits-and-usage.md b/site/content/3.12/arangograph/organizations/credits-and-usage.md deleted file mode 100644 index 34dafb8488..0000000000 --- a/site/content/3.12/arangograph/organizations/credits-and-usage.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: Credits & Usage in ArangoGraph -menuTitle: Credits & Usage -weight: 15 -description: >- - Credits give you access to a flexible prepaid model, so you can allocate them - across multiple deployments as needed ---- -{{< info >}} -Credits are only available if your organization has signed up for -ArangoGraph's [Committed](../organizations/_index.md#committed) package. -{{< /info >}} - -The ArangoGraph credit model is a versatile prepaid model that allows you to -purchase credits and use them in a flexible way, based on what you have running -in ArangoGraph. - -Instead of purchasing a particular deployment for a year, you can purchase a -number of ArangoGraph credits that expire a year after purchase. These credits -are then consumed over that time period, based on the deployments you run -in ArangoGraph. - -For example, a OneShard (three nodes) A64 deployment consumes more credits per -hour than a smaller deployment such as A8. If you are running multiple deployments, -like pre-production environments or for different use-cases, these would each consume -from the same credit balance. However, if you are not running any deployments -and do not have any backup storage, then none of your credits will be consumed. - -{{< tip >}} -To purchase credits for your organization, you need to get in touch with the -ArangoDB team. [Contact us](https://www.arangodb.com/contact/) for more details. -{{< /tip >}} - -There are a number of benefits that ArangoGraph credits provide: -- **Adaptability**: The pre-paid credit model allows you to adapt your usage to - changing project requirements or fluctuating workloads. By enabling the use of - credits for various instance types and sizes, you can easily adjust your - resource allocation. -- **Efficient handling of resources**: With the ability to purchase credits in - advance, you can better align your needs in terms of resources and costs. - You can purchase credits in bulk and then allocate them as needed. -- **Workload Optimization**: By having a clear view of credit consumption and - remaining balance, you can identify inefficiencies to further optimize your - infrastructure, resulting in cost savings and better performance. - -## How to view the credit usage - -1. In the main navigation, click the **Organization** icon. -2. Click **Credits & Usage** in the **Organization** section. -3. In the **Credits & Usage** page, you can: - - See the remaining credit balance. - - Track your total credit balance. - - See a projection of when you will run out of credits, based on the last 30 days of usage. - - Get a detailed consumption report in PDF format that shows: - - The number of credits you had at the start of the month. - - The number of credits consumed in the month. - - The number of credits remaining. - - The number of credits consumed for each deployment. - -![ArangoGraph Credits and Usage](../../../images/arangograph-credits-and-usage.png) - -## FAQs - -### Are there any configuration constraints for using the credits? - -No. Credits are designed to be used completely flexibly. You can use all of your -credits for multiple small deployments (i.e. A8s) or you can use them for a single -large deployment (i.e. A256), or even multiple large deployments, as long as you -have enough credits remaining. - -### What is the flexibility of moving up or down in configuration size of the infrastructure? - -You can move up sizes in configuration at any point by editing your deployment -within ArangoGraph, once every 6 hours to allow for in-place disk expansion. - -### Is there a limit to how many deployments I can use my credits on? - -There is no specific limit to the number of deployments you can use your credits -on. The credit model is designed to provide you with the flexibility to allocate -credits across multiple deployments as needed. This enables you to effectively -manage and distribute your resources according to your specific requirements and -priorities. However, it is essential to monitor your credit consumption to ensure -that you have sufficient credits to cover your deployments. - -### Do the credits I purchase expire? - -Yes, credits expire 1 year after purchase. You should ensure that you consume -all of these credits within the year. - -### Can I make multiple purchases of credits within a year? - -As an organization’s usage of ArangoGraph grows, particularly in the initial -phases of application development and early production release, it is common -to purchase a smaller credit package that is later supplemented by a larger -credit package part-way through the initial credit expiry term. -In this case, all sets of credits will be available for ArangoGraph consumption -as a single credit balance. The credits with the earlier expiry date are consumed -first to avoid credit expiry where possible. - -### Can I purchase a specific number of credits (i.e. 3361, 4185)? - -ArangoGraph offers a variety of predefined credit packages designed to -accommodate different needs and stages of the application lifecycle. -For any credit purchasing needs, please [contact us](https://www.arangodb.com/contact/) -and we are happy to help find an appropriate package for you. - -### How quickly will the credits I purchase be consumed? - -The rate at which your purchased credits will be consumed depends on several -factors, including the type and size of instances you deploy, the amount of -resources used, and the duration of usage. Each machine size has an hourly credit -consumption rate, and the overall rate of credit consumption will increase for -larger sizes or for more machines/deployments. Credits will also be consumed for -any variable usage charges such as outbound network traffic and backup storage. - -### How can I see how many credits I have remaining? - -All details about credits, including how many credits have been purchased, -how many remain, and how they are being consumed are available in the -**Credits & Usage** page within the ArangoGraph web interface. - -### I have a large sharded deployment, how do I know how many credits it will consume? - -If you are using credits, then you will be able to see how many credits your -configured deployment will consume when [creating](../deployments/_index.md#how-to-create-a-new-deployment) -or [editing a deployment](../deployments/_index.md#how-to-edit-a-deployment). - -You can download a detailed consumption report in the -[**Credits & Usage** section](#how-to-view-the-credit-usage). It shows you the -number of credits consumed by any deployment you are creating or editing. - -All users can see the credit price of each node size in the **Pricing** section. - -### What happens if I run out of credits? - -If you run out of credits, your access to ArangoGraph's services and resources -will be temporarily suspended until you purchase additional credits. - -### Can I buy credits for a short time period (e.g. 2 months)? - -No, you cannot but credits with an expiry of less than 12 months. -If you require credits for a shorter time frame, such as 2 months, you can still -purchase one of the standard credit packages and consume the credits as needed -during that time. You may opt for a smaller credit package that aligns with your -expected usage during the desired period, rather than the full year’s expected usage. -Although the credits will have a longer expiration period, this allows you to have -the flexibility of utilizing the remaining credits for any future needs. \ No newline at end of file diff --git a/site/content/3.12/arangograph/organizations/users-and-groups.md b/site/content/3.12/arangograph/organizations/users-and-groups.md deleted file mode 100644 index abed36697b..0000000000 --- a/site/content/3.12/arangograph/organizations/users-and-groups.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Users and Groups in ArangoGraph -menuTitle: Users & Groups -weight: 5 -description: >- - How to manage individual members and user groups in ArangoGraph ---- -## Users, groups & members - -When you use ArangoGraph, you are logged in as a user. -A user has properties such as name & email address. -Most important of the user is that it serves as an identity of a person. - -A user is member of one or more organizations in ArangoGraph. -You can become a member of an organization in the following ways: - -- Create a new organization. You will become the first member and owner of that - organization. -- Be invited to join an organization. Once accepted (by the invited user), this - user becomes a member of the organization. - -If the number of members of an organization becomes large, it helps to group -users. In ArangoGraph a group is part of an organization and a group contains -a list of users. All users of the group must be member of the owning organization. - -In the **People** section of the dashboard you can manage users, groups and -invites for the organization. - -To edit permissions of members see [Access Control](../security-and-access-control/_index.md). - -## Members - -Members are a list of users that can access an organization. - -![ArangoGraph Member Access Control](../../../images/arangograph-access-control-members.png) - -### How to add a new member to the organization - -1. In the main navigation, click the __Organization__ icon. -2. Click __Members__ in the __People__ section. -3. Optionally, click the __Invites__ entry. -4. Click the __Invite new member__ button. -5. In the form that appears, enter the email address of the person you want to - invite. -6. Click the __Create__ button. -7. An email with an organization invite will now be sent to the specified - email address. -8. After accepting the invite the person will be added to the organization - [members](#members). - -![ArangoGraph Organization Invites](../../../images/arangograph-new-invite.png) - -### How to respond to an organization invite - -See [My Account: How to respond to my invites](../my-account.md#how-to-respond-to-my-invites) - -### How to remove a member from the organization - -1. Click __Members__ in the __People__ section of the main navigation. -2. Delete a member by pressing the __recycle bin__ icon in the __Actions__ column. -3. Confirm the deletion in the dialog that pops up. - -{{< info >}} -You cannot delete members who are organization owners. -{{< /info >}} - -### How to make a member an organization owner - -1. Click __Members__ in the __People__ section of the main navigation. -2. You can convert a member to an organization owner by pressing the __Key__ icon - in the __Actions__ column. -3. You can convert a member back to a normal user by pressing the __User__ icon - in the __Actions__ column. - -## Groups - -A group is a defined set of members. Groups can then be bound to roles. These -bindings contribute to the respective organization, project or deployment policy. - -![ArangoGraph Groups](../../../images/arangograph-groups.png) - -### How to create a new group - -1. Click __Groups__ in the __People__ section of the main navigation. -2. Press the __New group__ button. -3. Enter a name and optionally a description for your new group. -4. Select the members you want to be part of the group. -5. Press the __Create__ button. - -![ArangoGraph New Group](../../../images/arangograph-new-group.png) - -### How to view, edit or remove a group - -1. Click __Groups__ in the __People__ section of the main navigation. -2. Click an icon in the __Actions__ column: - - __Eye__: View group - - __Pencil__: Edit group - - __Recycle bin__: Delete group - -You can also click a group name to view it. There are buttons to __Edit__ and -__Delete__ the currently viewed group. - -![ArangoGraph Group](../../../images/arangograph-group.png) - -{{< info >}} -The groups __Organization members__ and __Organization owners__ are virtual groups -and cannot be changed. They always reflect the current set of organization -members and owners. -{{< /info >}} - -## Invites - -### How to create a new organization invite - -See [How to add a new member to the organization](#how-to-add-a-new-member-to-the-organization) - -### How to view the status of invitations - -1. Click __Invites__ in the __People__ section of the main navigation. -2. The created invites are displayed, grouped by status __Pending__, - __Accepted__ and __Rejected__. -3. You may delete pending invites by clicking the __recycle bin__ icon in the - __Actions__ column. - -![ArangoGraph Organization Invites](../../../images/arangograph-org-invites.png) diff --git a/site/content/3.12/arangograph/projects.md b/site/content/3.12/arangograph/projects.md deleted file mode 100644 index f4efd27833..0000000000 --- a/site/content/3.12/arangograph/projects.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Projects in ArangoGraph -menuTitle: Projects -weight: 15 -description: >- - How to manage projects and IP allowlists in ArangoGraph ---- -ArangoGraph projects can represent organizational units such as teams, -product groups, environments (e.g. staging vs. production). You can have any -number of projects under one organization. - -**Organizations → <u>Projects</u> → Deployments** - -Projects are a container for related deployments, certificates & IP allowlists. -Projects also come with their own policy for access control. You can have any -number of deployment under one project. - -![ArangoGraph Projects Overview](../../images/arangograph-projects-overview.png) - -## How to create a new project - -1. In the main navigation, click the __Dashboard__ icon. -2. Click __Projects__ in the __Dashboard__ section. -3. Click the __New project__ button. -4. Enter a name and optionally a description for your new project. -5. Click the __Create__ button. -6. You will be taken to the project page. -7. To change the name or description, click either at the top of the page. - -![ArangoGraph New Project](../../images/arangograph-new-project.png) - -![ArangoGraph Project Summary](../../images/arangograph-project.png) - -{{< info >}} -Projects contain exactly **one policy**. Within that policy, you can define -role bindings to regulate access control on a project level. -{{< /info >}} - -## How to create a new deployment - -See [Deployments: How to create a new deployment](deployments/_index.md#how-to-create-a-new-deployment) - -## How to delete a project - -{{< danger >}} -Deleting a project will delete contained deployments, certificates & IP allowlists. -This operation is **irreversible**. -{{< /danger >}} - -1. Click __Projects__ in the __Dashboard__ section of the main navigation. -2. Click the __recycle bin__ icon in the __Actions__ column of the project to be deleted. -3. Enter `Delete!` to confirm and click __Yes__. - -{{< tip >}} -If the project has a locked deployment, you need to [unlock](security-and-access-control/_index.md#locked-resources) -it first to be able to delete the project. -{{< /tip >}} - -## How to manage IP allowlists - -IP allowlists let you limit access to your deployment to certain IP ranges. -It is optional, but strongly recommended to do so. - -You can create an allowlist as part of a project. - -1. Click a project name in the __Projects__ section of the main navigation. -2. Click the __Security__ entry. -3. In the __IP allowlists__ section, click: - - The __New IP allowlist__ button to create a new allowlist. - When creating or editing a list, you can add comments - in the __Allowed CIDR ranges (1 per line)__ section. - Everything after `//` or `#` is considered a comment until the end of the line. - - A name or the __eye__ icon in the __Actions__ column to view the allowlist. - - The __pencil__ icon to edit the allowlist. - You can also view the allowlist and click the __Edit__ button. - - The __recycle bin__ icon to delete the allowlist. - -## How to manage role bindings - -See: -- [Access Control: How to view, edit or remove role bindings of a policy](security-and-access-control/_index.md#how-to-view-edit-or-remove-role-bindings-of-a-policy) -- [Access Control: How to add a role binding to a policy](security-and-access-control/_index.md#how-to-add-a-role-binding-to-a-policy) diff --git a/site/content/3.12/arangograph/security-and-access-control/single-sign-on/_index.md b/site/content/3.12/arangograph/security-and-access-control/single-sign-on/_index.md deleted file mode 100644 index 1004352974..0000000000 --- a/site/content/3.12/arangograph/security-and-access-control/single-sign-on/_index.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: Single Sign-On (SSO) in ArangoGraph -menuTitle: Single Sign-On -weight: 10 -description: >- - ArangoGraph supports **Single Sign-On** (SSO) authentication using - **Security Assertion Markup language 2.0** (SAML 2.0) ---- -{{< info >}} -To enable the Single Sign-On (SSO) feature, get in touch with the ArangoGraph -team via **Request Help**, available in the left sidebar menu of the -ArangoGraph Dashboard. -{{< /info >}} - -## About SAML 2.0 - -The Security Assertion Markup language 2.0 (SAML 2.0) is an open standard created -to provide cross-domain single sign-on (SSO). It allows you to authenticate in -multiple web applications by using a single set of login credentials. - -SAML SSO works by transferring user authentication data from the identity -provider (IdP) to the service provider (SP) through an exchange of digitally -signed XML documents. - -## IdP-initiated versus SP-initiated SSO - -There are generally two methods for starting Single Sign-On: - -- **Identity Provider Initiated** (IdP-initiated): - You log into the Identity Provider and are then redirected to ArangoGraph. -- **Service Provider Initiated** (SP-initiated): - You access the ArangoGraph site which then redirects you to the - Identity Provider for authentication. - -**ArangoGraph only supports SP-initiated SSO** because IdP-Initiated SSO is -vulnerable to Man-in-the-Middle attacks. In order to initiate the SSO login -process, you must start at ArangoGraph. - -## Configure SAML 2.0 using Okta - -You can enable SSO for your ArangoGraph organization using Okta as an Identity -Provider (IdP). For more information about Okta, please refer to the -[Okta Documentation](https://help.okta.com/en-us/Content/index.htm?cshid=csh-index). - -### Create the SAML app integration in Okta - -1. Sign in to your Okta account and select **Applications** from the left sidebar menu. -2. Click **Create App Integration**. -3. In the **Create a new app integration** dialog, select **SAML 2.0**. - - ![ArangoGraph Create Okta App Integration](../../../../images/arangograph-okta-create-integration.png) -4. In the **General Settings**, specify a name for your integration and click **Next**. - - ![ArangoGraph Okta Integration Name](../../../../images/arangograph-okta-integration-name.png) -5. Configure the SAML settings: - - For **Single sign-on URL**, use `https://auth.arangodb.com/login/callback?connection=ORG_ID` - - For **Audience URI (SP Entity ID)**, use `urn:auth0:arangodb:ORG_ID` - - ![ArangoGraph Okta SAML General Settings](../../../../images/arangograph-okta-saml-general-settings.png) - -6. Replace **ORG_ID** with your organization identifier from the - ArangoGraph Dashboard. To find your organization ID, go to the **User Toolbar** - in the top right corner, which is accessible from every view of the Dashboard, - and click **My organizations**. - - If, for example, your organization ID is 14587062, here are the values you - would use when configuring the SAML settings: - - `https://auth.arangodb.com/login/callback?connection=14587062` - - `urn:auth0:arangodb:14587062` - - ![ArangoGraph Organization ID](../../../../images/arangograph-organization-id.png) -7. In the **Attribute Statements** section, add custom attributes as seen in the image below: - - email: `user.email` - - given_name: `user.firstName` - - family_name: `user.lastName` - - picture: `user.profileUrl` - - This step consists of a mapping between the ArangoGraph attribute names and - Okta attribute names. The values of these attributes are automatically filled - in based on the users list that is defined in Okta. - - ![ArangoGraph Okta SAML Attributes](../../../../images/arangograph-okta-saml-attributes.png) -8. Click **Next**. -9. In the **Configure feedback** section, select **I'm an Okta customer adding an internal app**. -10. Click **Finish**. The SAML app integration is now created. - -### SAML Setup - -After creating the app integration, you must perform the SAML setup to finalize -the SSO configuration. - -1. Go to the **SAML Signing Certificates** section, displayed under the **Sign On** tab. -2. Click **View SAML setup instructions**. - - ![ArangoGraph Okta SAML Setup](../../../../images/arangograph-okta-saml-setup.png) -3. The setup instructions include the following items: - - **Identity Provider Single Sign-On URL** - - **Identity Provider Issuer** - - **X.509 Certificate** -4. Copy the IdP settings, download the certificate using the - **Download X.509 certificate** button, and share them with the ArangoGraph - team via an ArangoGraph Support Ticket in order to complete the SSO - configuration. - diff --git a/site/content/3.13/arangograph/_index.md b/site/content/3.13/arangograph/_index.md deleted file mode 100644 index 0e07d4c600..0000000000 --- a/site/content/3.13/arangograph/_index.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: ArangoGraph Insights Platform -menuTitle: ArangoGraph -weight: 65 -description: >- - The ArangoGraph Insights Platform provides the entire functionality of - ArangoDB as a service, without the need to run or manage databases yourself -aliases: - - arangograph/changelog ---- -The [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), -formerly called Oasis, provides ArangoDB databases as a Service (DBaaS). -It enables you to use the entire functionality of an ArangoDB cluster -deployment without the need to run or manage the system yourself. - -The ArangoGraph Insights Platform... - -- runs your databases in data centers of the cloud provider - of your choice: Google Cloud Platform (GCP) or Amazon Web Services (AWS). - This optimizes performance and reduces cost. - -- ensures that your databases are always available and - healthy by monitoring them 24/7. - -- ensures that your databases are kept up to date by - installing new versions without service interruption. - -- ensures that your data is safe by providing encryption & - audit logs and making frequent data backups. - -- guarantees that your data always remains your property and - access to it is protected with industry standard safeguards. - -For more information see -[dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) - -For quick start guide, see -[Use ArangoDB in the Cloud](../get-started/set-up-a-cloud-instance.md). diff --git a/site/content/3.13/arangograph/api/_index.md b/site/content/3.13/arangograph/api/_index.md deleted file mode 100644 index ee4f21371f..0000000000 --- a/site/content/3.13/arangograph/api/_index.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: The ArangoGraph API -menuTitle: ArangoGraph API -weight: 60 -description: >- - Interface to control all resources inside ArangoGraph in a scriptable manner -aliases: - - arangograph-api ---- -The [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), -comes with its own API. This API enables you to control all -resources inside ArangoGraph in a scriptable manner. Typical use cases are spinning -up ArangoGraph deployments during continuous integration and infrastructure as code. - -The ArangoGraph API… - -- is a well-specified API that uses - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - as interface definition and [gRPC](https://grpc.io/) as - underlying protocol. - -- allows for automatic generation of clients for a large list of languages. - A Go client is available out of the box. - -- uses API keys for authentication. API keys impersonate a user and inherit - the permissions of that user. - -- is also available as a command-line tool called [oasisctl](../oasisctl/_index.md). - -- is also available as a - [Terraform plugin](https://github.com/arangodb-managed/terraform-provider-oasis/). - This plugin makes integration of ArangoGraph in infrastructure as code projects - very simple. To learn more, refer to the [plugin documentation](https://registry.terraform.io/providers/arangodb-managed/oasis/latest/docs). - -Also see: -- [github.com/arangodb-managed/apis](https://github.com/arangodb-managed/apis/) -- [API definitions](https://arangodb-managed.github.io/apis/index.html) diff --git a/site/content/3.13/arangograph/api/set-up-a-connection.md b/site/content/3.13/arangograph/api/set-up-a-connection.md deleted file mode 100644 index 7cbc2b76e2..0000000000 --- a/site/content/3.13/arangograph/api/set-up-a-connection.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Get started with the ArangoGraph API -menuTitle: Get started with the API -weight: 5 -description: >- - Quick start guide on how to set up a connection to the ArangoGraph API -aliases: - - ../arangograph-api/getting-started-with-the-api ---- -The instructions below are a quick start guide on how to set up a connection to the ArangoGraph API. - -All examples below will use the Go programming language. -Since the ArangoGraph API is using gRPC with protocol buffers, -all examples can be easily translated to many different languages. - -## Prerequisites - -Make sure that you have already [signed up for ArangoGraph](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). - -## Creating an API key - -1. Go to [dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) and login. -2. Click the user icon in the top-right of the dashboard. -3. Select __My API keys__ -4. Click __New API key__ -5. Click __Create__ to select the default settings. -6. You'll now see a dialog showing the __API key ID__ and - the __API key Secret__. This is the only time you will see - the secret, so make sure to store it in a safe place. - -## Create an access token with your API key - -```go -import ( - "context" - - "google.golang.org/grpc" - "google.golang.org/grpc/credentials" - "github.com/arangodb-managed/apis/common/auth" - common "github.com/arangodb-managed/apis/common/v1" - data "github.com/arangodb-managed/apis/data/v1" - iam "github.com/arangodb-managed/apis/iam/v1" -) - -... - -// Set up a connection to the API. -tc := credentials.NewTLS(&tls.Config{}) -conn, err := grpc.Dial("https://api.cloud.arangodb.com", - grpc.WithTransportCredentials(tc)) -if err != nil { - // handle error -} - -// Create client for IAM service -iamc := iam.NewIAMServiceClient(conn) - -// Call AuthenticateAPIKey to create token -resp, err := iamc.AuthenticateAPIKey(ctx, - &iam.AuthenticateAPIKeyRequest{ - Id: keyID, - Secret: keySecret, -}) -if err != nil { - // handle error -} -token := resp.GetToken() -``` - -## Make an authenticated API call - -We're going to list all deployments in a project. -The connection and token created in the previous sample is re-used. - -The authentication token is passed as standard `bearer` token to the call. -If Go, there is a helper method (`WithAccessToken`) to create a context using -an authentication token. - -```go -// Create client for Data service -datac := data.NewDataServiceClient(conn) - -// Prepare context with authentication token -ctx := auth.WithAccessToken(context.Background(), token) - -// Call list deployments -list, err := datac.ListDeployments(ctx, - &common.ListOptions{ContextId: myProjectID}) -if err != nil { - // handle error -} -for _, depl := range list.GetItems() { - fmt.Printf("Found deployment with id %s\n", depl.GetId()) -} - -``` - -## API Errors - -All API methods return errors as gRPC error codes. - -The `github.com/arangodb-managed/apis/common/v1` package contains several helpers to check for common errors. - -```go -if common.IsNotFound(err) { - // Error is caused by a not-found situation -} -``` diff --git a/site/content/3.13/arangograph/backups.md b/site/content/3.13/arangograph/backups.md deleted file mode 100644 index e4adcd0a0e..0000000000 --- a/site/content/3.13/arangograph/backups.md +++ /dev/null @@ -1,172 +0,0 @@ ---- -title: Backups in ArangoGraph -menuTitle: Backups -weight: 50 -description: >- - You can manually create backups or use a backup policy to schedule periodic - backups, and both ways allow you to store your backups in multiple regions simultaneously ---- -## How to create backups - -To backup data in ArangoGraph for an ArangoDB installation, navigate to the -**Backups** section of your deployment created previously. - -![Backup ArangoDB](../../images/arangograph-backup-section.png) - -There are two ways to create backups. Create periodic backups using a -**Backup policy**, or create a backup manually. -Both ways allow you to create [backups in multiple regions](#multi-region-backups) -as well. - -### Periodic backups - -Periodic backups are created at a given schedule. To see when the new backup is -due, observe the schedule section. - -![Backup Policy schedule](../../images/arangograph-backup-policy-schedule.png) - -When a new deployment is created, a default **Backup policy** is created for it -as well. This policy creates backups every two hours. To edit this policy -(or any policy), highlight it in the row above and hit the pencil icon. - -![Edit Backup Policy](../../images/arangograph-edit-backup-policy.png) - -These backups are not automatically uploaded. To enable this, use the -**Upload backup to storage** option and choose a retention period that -specifies how long backups are retained after creation. - -If the **Upload backup to storage** option is enabled for a backup policy, -you can then create backups in different regions than the default one. -The regions where the default backup is copied are shown in the -**Additional regions** column in the **Policies** section. - -### Manual backups - -It's also possible to create a backup on demand. To do this, click **Back up now**. - -![Back up Now](../../images/arangograph-back-up-now.png) - -![Back up Now Dialog](../../images/arangograph-back-up-now-dialog.png) - -If you want to manually copy a backup to a different region than the default -one, first ensure that the **Upload backup to storage** option is enabled. -Then, highlight the backup row and use the -**Copy backup to a different region** button from the **Actions** column. - -The source backup ID from -which the copy is created is displayed in the **Copied from Backup** column. - -![Copy backup to a different region](../../images/arangograph-copy-backup-different-region.png) - -![Multiple Backups](../../images/arangograph-multiple-backups.png) - -### Uploading backups - -By default, a backup is not uploaded to the cloud, instead it remains on the -servers of the deployment. To make a backup that is resilient against server -(disk) failures, upload the backup to cloud storage. - -When the **Upload backup to cloud storage** option is enabled, the backup is -preserved for a long time and does not occupy any disk space on the servers. -This also allows copying the backup to different regions and it can be -configured in the **Multiple region backup** section. - -Uploaded backups are -required for [cloning](#how-to-clone-deployments-using-backups). - -#### Best practices for uploading backups - -When utilizing the **Upload backup to cloud storage** feature, a recommended -approach is to implement a backup strategy that balances granularity and storage -efficiency. - -One effective strategy involves creating a combination of backup intervals and -retention periods. For instance, consider the following example: - -1. Perform a backup every 4 hours with a retention period of 24 hours. This - provides frequent snapshots of your data, allowing you to recover recent - changes. -2. Perform a backup every day with a retention period of a week. Daily backups - offer a broader time range for recovery, enabling you to restore data from - any point within the past week. -3. Perform a backup every week with a retention period of a month. Weekly - backups allow you to recover from more extensive data. -4. Perform a backup every month with a retention period of a year. Monthly - backups provide a long-term perspective, enabling you to restore data from - any month within the past year. - -This backup strategy offers good granularity, providing multiple recovery -options for different timeframes. By implementing this approach, you have a -total number of backups that is considerable lower in comparison to other -alternatives such as having hourly backups with a retention period of a year. - -## Multi-region backups - -Using the multi-region backup feature, you can store backups in multiple regions -simultaneously either manually or automatically as part of a **Backup policy**. -If a backup created in one region goes down, it is still available in other -regions, significantly improving reliability. - -Multiple region backup is only available when the -**Upload backup to cloud storage** option is enabled. - -![Multiple Region Backup](../../images/arangograph-multi-region-backup.png) - -## How to restore backups - -To restore a database from a backup, highlight the desired backup and click the restore icon. - -{{< warning >}} -All current data will be lost when restoring. To make sure that new data that -has been inserted after the backup creation is also restored, create a new -backup before using the **Restore Backup** feature. - -During restore, the deployment is temporarily not available. -{{< /warning >}} - -![Restore From Backup](../../images/arangograph-restore-from-backup.png) - -![Restore From Backup Dialog](../../images/arangograph-restore-from-backup-dialog.png) - -![Restore From Backup Status Pending](../../images/arangograph-restore-from-backup-status-pending.png) - -![Restore From Backup Status Restored](../../images/arangograph-restore-from-backup-status-restored.png) - -## How to clone deployments using backups - -Creating a deployment from a backup allows you to duplicate an existing -deployment with all its data, for example, to create a test environment or to -move to a different cloud provider or region within ArangoGraph. - -{{< info >}} -This feature is only available if the backup you wish to clone has been -uploaded to cloud storage. -{{< /info >}} - -{{< info >}} -The cloned deployment will have the exact same features as the previous -deployment including node size and model. The cloud provider and the region -can stay the same or you can select a different one. -For restoring a deployment as quick as possible, it is recommended to create a -deployment in the same region as where the backup resides to avoid cross-region -data transfer. -The data contained in the backup will be restored to this new deployment. - -The *root password* for this deployment will be different. -{{< /info >}} - -1. Highlight the backup you wish to clone from and hit **Clone backup to new deployment**. - - ![ArangoGraph Clone Deployment From Backup](../../images/arangograph-clone-deployment-from-backup.png) - -2. Choose whether the clone should be created using the current provider and in - the same region as the backup or using a different provider, a different region, - or both. - - ![ArangoGraph Clone Deployment Select Region](../../images/arangograph-clone-deployment-select.png) - -3. The view should navigate to the new deployment being bootstrapped. - - ![ArangoGraph Cloned Deployment](../../images/arangograph-cloned-deployment.png) - -This feature is also available through [oasisctl](oasisctl/_index.md). diff --git a/site/content/3.13/arangograph/data-loader/_index.md b/site/content/3.13/arangograph/data-loader/_index.md deleted file mode 100644 index 7955fcb47a..0000000000 --- a/site/content/3.13/arangograph/data-loader/_index.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Load your data into ArangoGraph -menuTitle: Data Loader -weight: 22 -description: >- - Load your data into ArangoGraph and transform it into richly-connected graph - structures, without needing to write any code or deploy any infrastructure ---- - -ArangoGraph provides different ways of loading your data into the platform, -based on your migration use case. - -## Transform data into a graph - -The ArangoGraph Data Loader allows you to transform existing data from CSV file -formats into data that can be analyzed by the ArangoGraph platform. - -You provide your data in CSV format, a common format used for exports of data -from various systems. Then, using a no-code editor, you can model the schema of -this data and the relationships between them. This allows you to ingest your -existing datasets into your ArangoGraph database, without the need for any -development effort. - -You can get started in a few easy steps. - -1. **Create database**: - Choose an existing database or create a new one and enter a name for your new graph. - -2. **Add files**: - Drag and drop your data files in CSV format. - -3. **Design your graph**: - Model your graph schema by adding nodes and connecting them via edges. - -4. **Import data**: - Once you are ready, save and start the import. The resulting graph is an - [EnterpriseGraph](../../graphs/enterprisegraphs/_index.md) with its - corresponding collections, available in your ArangoDB web interface. - -Follow this [working example](../data-loader/example.md) to see how easy it is -to transform existing data into a graph. - -## Import data to the cloud - -To import data from various files into collections **without creating a graph**, -get the ArangoDB client tools for your operating system from the -[download page](https://arangodb.com/download-major/). - -- To import data to ArangoGraph from an existing ArangoDB instance, see - [arangodump](../../components/tools/arangodump/) and - [arangorestore](../../components/tools/arangorestore/). -- To import pre-existing data in JSON, CSV, or TSV format, see - [arangoimport](../../components/tools/arangoimport/). - -## How to access the Data Loader - -1. If you do not have a deployment yet, [create a deployment](../deployments/_index.md#how-to-create-a-new-deployment) first. -2. Open the deployment you want to load data into. -3. In the **Load Data** section, click the **Load your data** button. -4. Select your migration use case. - -![ArangoGraph Data Loader Migration Use Cases](../../../images/arangograph-data-loader-migration-use-cases.png) \ No newline at end of file diff --git a/site/content/3.13/arangograph/data-loader/add-files.md b/site/content/3.13/arangograph/data-loader/add-files.md deleted file mode 100644 index 114b588e40..0000000000 --- a/site/content/3.13/arangograph/data-loader/add-files.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Add files into Data Loader -menuTitle: Add files -weight: 5 -description: >- - Provide your set of files in CSV format containing the data to be imported ---- - -The Data Loader allows you to upload your data files in CSV format into -ArangoGraph and then use these data sources to design a graph using the -built-in graph designer. - -## Upload your files - -You can upload your CSV files in the following ways: - -- Drag and drop your files in the designated area. -- Click the **Browse files** button and select the files you want to add. - -![ArangoGraph Data Loader Upload Files](../../../images/arangograph-data-loader-upload-files.png) - -You have the option to either upload several files collectively as a batch or -add them individually. Furthermore, you can supplement additional files later on. -After a file has been uploaded, you can expand it to preview both the header and -the first row of data within the file. - -In case you upload CSV files without fields, they will not be available for -manipulation. - -Once the files are uploaded, you can start [designing your graph](../data-loader/design-graph.md). - -### File formatting limitations - -Ensure that the files you upload are correctly formatted. Otherwise, errors may -occur, the upload may fail, or the data may not be correctly mapped. - -The following restrictions and limitations apply: - -- The only supported file format is CSV. If you submit an invalid file format, - the upload of that specific file will be prevented. -- It is required that all CSV files have a header row. If you upload a file - without a header, the first row of data is treated as the header. To avoid - losing the first row of the data, make sure to include headers in your files. -- The CSV file should have unique header names. It is not possible to have two - columns with the same name within the same file. - -For more details, see the [File validation](../data-loader/import.md#file-validation) section. - -### Upload limits - -Note that there is a cumulative file upload limit of 1GB. This means that the -combined size of all files you upload should not exceed 1GB. If the total size -of the uploaded files surpasses this limit, the upload may not be successful. - -## Delete files - -You can remove uploaded files by clicking the **Delete file** button in the -**Your files** panel. Please keep in mind that in order to delete a file, -you must first remove all graph associations associated with it. \ No newline at end of file diff --git a/site/content/3.13/arangograph/data-loader/design-graph.md b/site/content/3.13/arangograph/data-loader/design-graph.md deleted file mode 100644 index b1c5eaf3af..0000000000 --- a/site/content/3.13/arangograph/data-loader/design-graph.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Design your graph -menuTitle: Design graph -weight: 10 -description: >- - Design your graph database schema using the integrated graph modeler in the Data Loader ---- - -Based on the data you have uploaded, you can start designing your graph. -The graph designer allows you to create a schema using nodes and edges. -Once this is done, you can save and start the import. The resulting -[EnterpriseGraph](../../graphs/enterprisegraphs/_index.md) and the -corresponding collections are created in your ArangoDB database instance. - -## How to add a node - -Nodes are the main objects in your data model and include the attributes of the -objects. - -1. To create a new node, click the **Add node** button. -2. In the graph designer, click on the newly created node to view the **Node details**. -3. In the **Node details** panel, fill in the following fields: - - For **Node label**, enter a name you want to use for the node. - - For **File**, select a file from the list to associate it with the node. - - For **Primary Identifier**, select a field from the list. This is used to - reference the nodes when you define relations with edges. - - For **File Headers**, select one or more attributes from the list. - -![ArangoGraph Data Loader Add Node](../../../images/arangograph-data-loader-add-node.png) - -## How to connect nodes - -Nodes can be connected by edges to express and categorize the relations between -them. A relation always has a direction, going from one node to another. You can -define this direction in the graph designer by dragging your cursor from one -particular node to another. - -To connect two nodes, you can use the **Connect node(s)** button. Click on any -node to self-reference it or drag it to connect it to another node. Alternatively, -when you select a node, a plus sign will appear, allowing you to directly add a -new node with an edge. - -{{< tip >}} -To quickly recenter your elements on the canvas, you can use the **Center View** -button located in the bottom right corner. This brings your nodes and edges back -into focus. -{{< /tip >}} - -The edge needs to be associated with a file and must have a label. Note that a -node and an edge cannot have the same label. - -See below the steps to add details to an edge. - -1. Click on an edge in the graph designer. -2. In the **Edit Edge** panel, fill in the following fields: - - For **Edge label**, enter a name you want to use for the edge. - - For **Relation file**, select a file from the list to associate it with the edge. - - To define how the relation points from one node to another, select the - corresponding relation file header for both the origin file (`_from`) and the - destination file (`_to`). - - For **File Headers**, select one or more attributes from the list. - -![ArangoGraph Data Loader Edit Edge](../../../images/arangograph-data-loader-edit-edge.png) - -## How to delete elements - -To remove a node or an edge, simply select it in the graph designer and click the -**Delete** icon. \ No newline at end of file diff --git a/site/content/3.13/arangograph/data-loader/example.md b/site/content/3.13/arangograph/data-loader/example.md deleted file mode 100644 index 46fdd1b38e..0000000000 --- a/site/content/3.13/arangograph/data-loader/example.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Data Loader Example -menuTitle: Example -weight: 20 -description: >- - Follow this complete working example to see how easy it is to transform existing - data into a graph and get insights from the connected entities ---- - -To transform your data into a graph, you need to have CSV files with entities -representing the nodes and a corresponding CSV file representing the edges. - -This example uses a sample data set of two files, `airports.csv`, and `flights.csv`. -These files are used to create a graph showing flights arriving at and departing -from various cities. -You can download the files from [GitHub](https://github.com/arangodb/example-datasets/tree/master/Data%20Loader). - -The `airports.csv` contains rows of airport entries, which are the future nodes -in your graph. The `flights.csv` contains rows of flight entries, which are the -future edges connecting the nodes. - -The whole process can be broken down into these steps: - -1. **Database and graph setup**: Begin by choosing an existing database or - create a new one and enter a name for your new graph. -2. **Add files**: Upload the CSV files to the Data Loader web interface. You can - simply drag and drop them or upload them through the file browser window. -3. **Design graph**: Design your graph schema by adding nodes and edges and map - data from the uploaded files to them. This allows creating the corresponding - documents and collections for your graph. -4. **Import data**: Import the data and start using your newly created - [EnterpriseGraph](../../graphs/enterprisegraphs/_index.md) and its - corresponding collections. - -## Step 1: Create a database and choose the graph name - -Start by creating a new database and adding a name for your graph. - -![Data Loader Example Step 1](../../../images/arangograph-data-loader-example-choose-names.png) - -## Step 2: Add files - -Upload your CSV files to the Data Loader web interface. You can drag and drop -them or upload them via a file browser window. - -![Data Loader Example Step 2](../../../images/arangograph-data-loader-example-add-files.png) - -See also [Add files into Data Loader](../data-loader/add-files.md). - -## Step 3: Design graph schema - -Once the files are added, you can start designing the graph schema. This example -uses a simple graph consisting of: -- Two nodes (`origin_airport` and `destination_airport`) -- One directed edge going from the origin airport to the destination one - representing a flight - -Click **Add node** to create the nodes and connect them with edges. - -Next, for each of the nodes and edges, you need to create a mapping to the -corresponding file and headers. - -For nodes, the **Node label** is going to be a node collection name and the -**Primary identifier** will be used to populate the `_key` attribute of documents. -You can also select any additional headers to be included as document attributes. - -In this example, two node collections have been created (`origin_airport` and -`destination_airport`) and `AirportID` header is used to create the `_key` -attribute for documents in both node collections. The header preview makes it -easy to select the headers you want to use. - -![Data Loader Example Step 3 Nodes](../../../images/arangograph-data-loader-example-map-nodes.png) - -For edges, the **Edge label** is going to be an edge collection name. Then, you -need to specify how edges will connect nodes. You can do this by selecting the -*from* and *to* nodes to give a direction to the edge. -In this example, the `source airport` header has been selected as a source and -the `destination airport` header as a target for the edge. - -![Data Loader Example Step 3 Edges](../../../images/arangograph-data-loader-example-map-edges.png) - -Note that the values of the source and target for the edge correspond to the -**Primary identifier** (`_key` attribute) of the nodes. In this case, it is the -airport code (i.e. GKA) used as the `_key` in the node documents and in the source -and destination headers to configure the edges. - -See also [Design your graph in the Data Loader](../data-loader/design-graph.md). - -## Step 4: Import and see the resulting graph - -After all the mapping is done, all you need to do is click -**Save and start import**. The report provides an overview of the files -processed and the documents created, as well as a link to your new graph. -See also [Start import](../data-loader/import.md). - -![Data Loader Example Step 4 See your new graph](../../../images/arangograph-data-loader-example-data-import.png) - -Finally, click **See your new graph** to open the ArangoDB web interface and -explore your new collections and graph. - -![Data Loader Example Step 4 Resulting graph](../../../images/arangograph-data-loader-example-resulting-graph.png) - -Happy graphing! \ No newline at end of file diff --git a/site/content/3.13/arangograph/data-loader/import.md b/site/content/3.13/arangograph/data-loader/import.md deleted file mode 100644 index 1589244278..0000000000 --- a/site/content/3.13/arangograph/data-loader/import.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Start the import -menuTitle: Start import -weight: 15 -description: >- - Once the data files are provided and the graph is designed, you can start the import ---- - -Before starting the actual import, make sure that: -- You have selected a database for import or created a new one; -- You have provided a valid name for your graph; -- You have created at least one node; -- You have created at least one edge; -- You have uploaded at least one file; -- Every file is related to at least one node or edge; -- Every node and edge is linked to a file; -- Every node and edge has a unique label; -- Every node has a primary identifier selected; -- Every edge has an origin and destination file header selected. - -To continue with the import, click the **Save and start import** button. The data -importer provides an overview showing results with the collections that have been -created with the data provided in the files. - -To access your newly created graph in the ArangoDB web interface, click the -**See your new graph** button. - -## File validation - -Once the import has started, the files that you have provided are being validated. -If the validation process detects parsing errors in any of the files, the import -is temporarily paused and the validation errors are shown. You can get a full -report by clicking the **See full report** button. - -At this point, you can: -- Continue with the import without addressing the errors. The CSV files will still - be included in the migration. However, the invalid rows are skipped and - excluded from the migration. -- Revisit the problematic file(s), resolve the issues, and then re-upload the - file(s) again. - -{{< tip >}} -To ensure the integrity of your data, it is recommended to address all the errors -detected during the validation process. -{{< /tip >}} - -### Validation errors and their meanings - -#### Invalid Quotation Mark - -This error indicates issues with quotation marks in the CSV data. -It can occur due to improper use of quotes. - -#### Missing Quotation Marks - -This error occurs when quotation marks are missing or improperly placed in the -CSV data, potentially affecting data enclosure. - -#### Insufficient Data Fields - -This error occurs when a CSV row has fewer fields than expected. It may indicate -missing or improperly formatted data. - -#### Excessive Data Fields - -This error occurs when a CSV row has more fields than expected, possibly due to -extra data or formatting issues. - -#### Unidentifiable Field Separator - -This error suggests that the parser could not identify the field separator -character in the CSV data. \ No newline at end of file diff --git a/site/content/3.13/arangograph/deployments/_index.md b/site/content/3.13/arangograph/deployments/_index.md deleted file mode 100644 index b3416805a1..0000000000 --- a/site/content/3.13/arangograph/deployments/_index.md +++ /dev/null @@ -1,314 +0,0 @@ ---- -title: Deployments in ArangoGraph -menuTitle: Deployments -weight: 20 -description: >- - How to create and manage deployments in ArangoGraph ---- -An ArangoGraph deployment is an ArangoDB cluster or single server, configured -as you choose. - -Each deployment belongs to a project, which belongs to an organization in turn. -You can have any number of deployments under one project. - -**Organizations → Projects → <u>Deployments</u>** - -![ArangoGraph Deployments](../../../images/arangograph-deployments-page.png) - -## How to create a new deployment - -1. If you do not have a project yet, - [create a project](../projects.md#how-to-create-a-new-project) first. -2. In the main navigation, click __Deployments__. -3. Click the __New deployment__ button. -4. Select the project you want to create the deployment for. -5. Set up your deployment. The configuration options are described below. - -{{< info >}} -Deployments contain exactly **one policy**. Within that policy, you can define -role bindings to regulate access control on a deployment level. -{{< /info >}} - -### In the **General** section - -- Enter the __Name__ and optionally a __Short description__ for the deployment. -- Select the __Provider__ and __Region__ of the provider. - {{< warning >}} - Once a deployment has been created, it is not possible to change the - provider and region anymore. - {{< /warning >}} - -![ArangoGraph New Deployment General](../../../images/arangograph-new-deployment-general.png) - -### In the **Sizing** section - -- Choose a __Model__ for the deployment: - - - __OneShard__ deployments are suitable when your data set fits in a single node. - They are ideal for graph use cases. This model has a fixed number of 3 nodes. - - - __Sharded__ deployments are suitable when your data set is larger than a single - node. The data will be sharded across multiple nodes. You can select the - __Number of nodes__ for this deployment model. The more nodes you have, the - higher the replication factor can be. - - - __Single Server__ deployments are suitable when you want to try out ArangoDB without - the need for high availability or scalability. The deployment will contain a - single server only. Your data will not be replicated and your deployment can - be restarted at any time. - -- Select a __NODE SIZE__ from the list of available options. Each option is a - combination of vCPUs, memory, and disk space per node. - -![ArangoGraph New Deployment Sizing](../../../images/arangograph-new-deployment-sizing.png) - -### In the **Advanced** section - -- Select the __DB Version__. - If you don't know which DB version to select, use the version selected by default. -- Select the desired __Support Plan__. Click the link below the field to get - more information about the different support plans. -- In the __Certificate__ field: - - The default certificate created for your project is selected automatically. - - If you have no default certificate, or want to use a new certificate, - create a new certificate by typing the desired name for it and hitting - enter or clicking __Create "\<name\>"__ when done. - - Or, if you already have multiple certificates, select the desired one. -- _Optional but strongly recommended:_ In the __IP allowlist__ field, select the - desired one in case you want to limit access to your deployment to certain - IP ranges. To create a allowlist, navigate to your project and select the - __IP allowlists__ tab. See [How to manage IP allowlists](../projects.md#how-to-manage-ip-allowlists) - for details. - {{< security >}} - For any kind of production deployment it is strongly advise to use an IP allowlist. - {{< /security >}} -- Select a __Deployment Profile__. Profile options are only available on request. - -![ArangoGraph New Deployment Advanced](../../../images/arangograph-new-deployment-advanced.png) - -### In the **Summary** panel - -1. Review the configuration, and if you're okay with the setup, press the - __Create deployment__ button. -2. You are taken to the deployment overview page. - **Note:** Your deployment is being bootstrapped at that point. This process - takes a few minutes. Once the deployment is ready, you receive a confirmation - email. - -## How to access your deployment - -1. In the main navigation, click the __Dashboard__ icon and then click __Projects__. -2. In the __Projects__ page, click the project for - which you created a deployment earlier. -3. Alternatively, you can access your deployment by clicking __Deployments__ in the - dashboard navigation. This page shows all deployments from all projects. - Click the name of the deployment you want to view. -4. For each deployment in your project, you see the status. While your new - deployment is being set up, it displays the __bootstrapping__ status. -5. Press the __View__ button to show the deployment page. -6. When a deployment displays a status of __OK__, you can access it. -7. Click the __Open database UI__ button or on the database UI link to open - the dashboard of your new ArangoDB deployment. - -At this point your ArangoDB deployment is available for you to use — **Have fun!** - -If you have disabled the [auto-login option](#auto-login-to-database-ui) to the -database web interface, you need to follow the additional steps outlined below -to access your deployment: - -1. Click the copy icon next to the root password. This copies the deployment - root password to your clipboard. You can also click the view icon to unmask - the root password to see it. - {{< security >}} - Do not use the root username/password for everyday operations. It is recommended - to use them only to create other user accounts with appropriate permissions. - {{< /security >}} -2. Click the __Open database UI__ button or on the database UI link to open - the dashboard of your new ArangoDB deployment. -3. In the __username__ field type `root`, and in the __password__ field paste the - password that you copied earlier. -4. Press the __Login__ button. -5. Press the __Select DB: \_system__ button. - -{{< info >}} -Each deployment is accessible on two ports: - -- Port `8529` is the standard port recommended for use by web-browsers. -- Port `18529` is the alternate port that is recommended for use by automated services. - -The difference between these ports is the certificate used. If you enable -__Use well-known certificate__, the certificates used on port `8529` is well-known -and automatically accepted by most web browsers. The certificate used on port -`18529` is a self-signed certificate. For securing automated services, the use of -a self-signed certificate is recommended. Read more on the -[Certificates](../security-and-access-control/x-509-certificates.md) page. -{{< /info >}} - -## Password settings - -### How to enable the automatic root user password rotation - -Password rotation refers to changing passwords regularly - a security best -practice to reduce the vulnerability to password-based attacks and exploits -by limiting for how long passwords are valid. The ArangoGraph Insights Platform -can automatically change the `root` user password of an ArangoDB deployment -periodically to improve security. - -1. Navigate to the __Deployment__ for which you want to enable an automatic - password rotation for the root user. -2. In the __Deployment details__ section, click the button with the __gear__ icon next to the - __ROOT PASSWORD__. -3. In the __Password Settings__ dialog, turn the automatic password rotation on - and click the __Save__ button. - - ![ArangoGraph Deployment Password Rotation](../../../images/arangograph-deployment-password-rotation.png) -4. You can expand the __Root password__ panel to see when the password was - rotated last. The rotation takes place every three months. - -### Auto login to database UI - -ArangoGraph provides the ability to automatically login to your database using -your existing ArangoGraph credentials. This not only provides a seamless -experience, preventing you from having to manage multiple sets of credentials -but also improves the overall security of your database. As your credentials -are shared between ArangoGraph and your database, you can benefit from -end-to-end audit traceability for a given user, as well as integration with -ArangoGraph SSO. - -You can enable this feature in the **Deployment details** section by turning -the **USE AUTO LOGIN FOR DATABASE UI** toggle on. Please note -that it may take a few minutes to get activated. -Once enabled, you no longer have to fill in the `root` user and password of -your ArangoDB deployment. - -{{< info >}} -If you use the auto login feature with AWS -[private endpoints](../deployments/private-endpoints.md), it is recommended -to switch off the `custom DNS` setting. -{{< /info >}} - -This feature can be disabled at any time. You may wish to consider explicitly -disabling this feature in the following situations: -- Your workflow requires you to access the database UI using different accounts - with differing permission sets, as you cannot switch database users when - automatic login is enabled. -- You need to give individuals access to a database's UI without giving them - any access to ArangoGraph. Note, however, that it's possible to only give an - ArangoGraph user database UI access, without other ArangoGraph permissions. - -{{< warning >}} -When the auto login feature is enabled, users cannot edit their permissions on -the ArangoDB database web interface as all permissions are managed by the -ArangoGraph platform. -{{< /warning >}} - -Before getting started, make sure you are signed in to ArangoGraph as a user -with one of the following permissions in your project: -- `data.deployment.full-access` -- `data.deployment.read-only-access` - -Organization owners have these permissions enabled by default. -The `deployment-full-access-user` and `deployment-read-only-user` roles which -contain these permissions can also be granted to other members of the -organization. See how to create a -[role binding](../security-and-access-control/_index.md#how-to-view-edit-or-remove-role-bindings-of-a-policy). - -{{< warning >}} -This feature is available on `443` port only. -{{< /warning >}} - -## How to edit a deployment - -You can modify a deployment's configuration, including the ArangoDB version -that is being used, change the memory size, or even switch from -a OneShard deployment to a Sharded one if your data set no longer fits in a -single node. - -{{< tip >}} -To edit an existing deployment, you must have the necessary set of permissions -attached to your role. Read more about [roles and permissions](../security-and-access-control/_index.md#roles). -{{< /tip >}} - -1. In the main navigation, click **Deployments** and select an existing - deployment from the list, or click **Projects**, select a project, and then - select a deployment. -2. In the **Quick start** section, click the **Edit** button. -3. In the **General** section, you can do the following: - - Change the deployment name - - Change the deployment description -4. In the **Sizing** section, you can do the following: - - Change **OneShard** deployments into **Sharded** deployments. To do so, - select **Sharded** in the **Model** dropdown list. You can select the - number of nodes for your deployment. This can also be modified later on. - {{< warning >}} - You cannot switch from **Sharded** back to **OneShard**. - {{< /warning >}} - - Change **Single Server** deployments into **OneShard** or **Sharded** deployments. - {{< warning >}} - You cannot switch from **Sharded** or **OneShard** back to **Single Server**. - {{< /warning >}} - - Scale up or down the node size. - {{< warning >}} - When scaling up or down the size in AWS deployments, the new value gets locked - and cannot be changed again until the cloud provider rate limit is reset. - {{< /warning >}} -5. In the **Advanced** section, you can do the following: - - Upgrade the ArangoDB version that is currently being used. See also - [Upgrades and Versioning](upgrades-and-versioning.md) - - Select a different certificate. - - Add or remove an IP allowlist. - - Select a deployment profile. -6. All changes are reflected in the **Summary** panel. Review the new - configuration and click **Save changes**. - -## How to connect a driver to your deployment - -[ArangoDB drivers](../../develop/drivers/_index.md) allow you to use your ArangoGraph -deployment as a database system for your applications. Drivers act as interfaces -between different programming languages and ArangoDB, which enable you to -connect to and manipulate ArangoDB deployments from within compiled programs -or using scripting languages. - -To get started, open a deployment. -In the **Quick start** section, click on the **Connecting drivers** button and -select your programming language. The code snippets provide examples on how to -connect to your instance. - -{{< tip >}} -Note that ArangoGraph Insights Platform runs deployments in a cluster -configuration. To achieve the best possible availability, your client -application has to handle connection failures by retrying operations if needed. -{{< /tip >}} - -![ArangoGraph Connecting Drivers Example](../../../images/arangograph-connecting-drivers-example.png) - -## How to pause a deployment - -1. In the __Deployments__ page, click the deployment you wish to pause. -2. Click the __Delete/Lock__ entry in the navigation. -3. Click the __Pause deployment...__ button. -4. To resume the deployment, go to the __Overview__ tab and click __Resume deployment__. The - deployment being paused displays the __Hibernated__ status until it has been - successfully resumed. - -## How to delete a deployment - -{{< danger >}} -Deleting a deployment deletes all its data and backups. -This operation is **irreversible**. Please proceed with caution. -{{< /danger >}} - -1. In the __Deployments__ page, click the deployment you wish to delete. -2. Click the __Delete/Lock__ entry in the navigation. -3. Click the __Delete deployment...__ button. -4. In the modal dialog, confirm the deletion by entering `Delete!` into the - designated text field. -5. Confirm the deletion by pressing the __Yes__ button. -6. You will be taken back to the __Deployments__ page of the project. - The deployment being deleted will display the __Deleting__ status until it has - been successfully removed. - -{{< info >}} -Locked deployments cannot be deleted. Learn more about -[locked resources](../security-and-access-control/_index.md#locked-resources) in ArangoGraph. -{{< /info >}} \ No newline at end of file diff --git a/site/content/3.13/arangograph/deployments/private-endpoints.md b/site/content/3.13/arangograph/deployments/private-endpoints.md deleted file mode 100644 index c3400b9711..0000000000 --- a/site/content/3.13/arangograph/deployments/private-endpoints.md +++ /dev/null @@ -1,168 +0,0 @@ ---- -title: Private endpoint deployments in ArangoGraph -menuTitle: Private endpoints -weight: 5 -description: >- - Use the private endpoint feature to isolate your deployments and increase - security ---- -This topic describes how to create a private endpoint deployment and -securely deploy to various cloud providers such as Google Cloud Platform (GCP) -and Amazon Web Services (AWS). Follow the steps outlined below to get started. - -{{< tip >}} -In AWS, private endpoints should be located in the same region. -{{< /tip >}} - -{{< info >}} -For more information about the certificates used for private endpoints, please -refer to the [How to manage certificates](../security-and-access-control/x-509-certificates.md) -section. -{{< /info >}} - -## Google Cloud Platform (GCP) - -Google Cloud Platform (GCP) offers a feature called -[Private Service Connect](https://cloud.google.com/vpc/docs/private-service-connect) -that allows private consumption of services across VPC networks that belong to -different groups, teams, projects, or organizations. You can publish and consume -services using the defined IP addresses which are internal to your VPC network. - -In ArangoGraph, you can -[create a regular deployment](_index.md#how-to-create-a-new-deployment) -and change it to a private endpoint deployment afterwards. - -Such a deployment is not reachable from the internet anymore, other than via -the ArangoGraph dashboard to administrate it. To revert to a public deployment, -please contact support via **Request help** in the help menu. - -To configure a private endpoint for GCP, you need to provide your Google project -names. ArangoGraph then configures a **Private Endpoint Service** that automatically -connect to private endpoints that are created for those projects. - -After the creation of the **Private Endpoint Service**, you should receive a -service attachment that you need during the creation of your private endpoint(s). - -1. Open the deployment you want to change. -2. In the **Quick start** section, click the **Edit** button with an ellipsis (`…`) - icon. -3. Click **Change to private endpoint** in the menu. - ![ArangoGraph Deployment Private Endpoint Menu](../../../images/arangograph-gcp-change.png) -4. In the configuration wizard, click **Next** to enter your configuration details. -5. Enter one or more Google project names. You can also add them later in the summary view. - Click **Next**. - ![ArangoGraph Deployment Private Endpoint Setup 2](../../../images/arangograph-gcp-private-endpoint.png) -6. Configure custom DNS names. This step is optional and disabled by default. - Note that, once enabled, this setting is immutable and cannot be reverted. - Click **Next** to continue. - {{< info >}} - By default, your private endpoint is available to all VPCs that connect to it - at `https://<endpoint_id>-pe.arangodb.cloud` with the - [well-known certificate](../security-and-access-control/x-509-certificates.md#well-known-x509-certificates). - If the custom DNS is enabled, you will be responsible for the DNS of your - private endpoints. - {{< /info >}} - ![ArangoGraph Private Endpoint Custom DNS](../../../images/arangograph-gcp-custom-dns.png) -7. Click **Confirm Settings** to change the deployment. -8. Back in the **Overview** page, scroll down to the **Private Endpoint** section - that is now displayed to see the connection status and to change the - configuration. -9. ArangoGraph configures a **Private Endpoint Service**. As soon as the - **Service Attachment** is ready, you can use it to configure the Private - Service Connect in your VPC. - -{{< tip >}} -When you create a private endpoint in ArangoGraph, both endpoints (the regular -one and the new private one) are available for two hours. During this time period, -you can switch your application to the new private endpoint. After this period, -the old endpoint is not available anymore. -{{< /tip >}} - -## Amazon Web Services (AWS) - -AWS offers a feature called [AWS PrivateLink](https://aws.amazon.com/privatelink) -that enables you to privately connect your Virtual Private Cloud (VPC) to -services, without exposure to the internet. You can control the specific API -endpoints, sites, and services that are reachable from your VPC. - -Amazon VPC allows you to launch AWS resources into a -virtual network that you have defined. It closely resembles a traditional -network that you would normally operate, with the benefits of using the AWS -scalable infrastructure. - -In ArangoGraph, you can -[create a regular deployment](_index.md#how-to-create-a-new-deployment) and change it -to a private endpoint deployment afterwards. - -The ArangoDB private endpoint deployment is not exposed to public internet -anymore, other than via the ArangoGraph dashboard to administrate it. To revert -it to a public deployment, please contact the support team via **Request help** -in the help menu. - -To configure a private endpoint for AWS, you need to provide the AWS principals related -to your VPC. The ArangoGraph Insights Platform configures a **Private Endpoint Service** -that automatically connects to private endpoints that are created in those principals. - -1. Open the deployment you want to change. -2. In the **Quick start** section, click the **Edit** button with an ellipsis (`…`) - icon. -3. Click **Change to private endpoint** in the menu. - ![ArangoGraph Deployment AWS Change to Private Endpoint](../../../images/arangograph-aws-change-to-private-endpoint.png) -4. In the configuration wizard, click **Next** to enter your configuration details. -5. Click **Add Principal** to start configuring the AWS principal(s). - You need to enter a valid account, which is your 12 digit AWS account ID. - Adding usernames or role names is optional. You can also - skip this step and add them later from the summary view. - {{< info >}} - Principals cannot be changed anymore once a connection has been established. - {{< /info >}} - {{< warning >}} - To verify your endpoint service in AWS, you must use the same principal as - configured in ArangoGraph. Otherwise, the service name cannot be verified. - {{< /warning >}} - ![ArangoGraph AWS Private Endpoint Configure Principals](../../../images/arangograph-aws-endpoint-configure-principals.png) -6. Configure custom DNS names. This step is optional and disabled by default, - you can also add or change them later from the summary view. - Click **Next** to continue. - {{< info >}} - By default, your private endpoint is available to all VPCs that connect to it - at `https://<endpoint_id>-pe.arangodb.cloud` with the well-known certificate. - If the custom DNS is enabled, you will be responsible for the DNS of your - private endpoints. - {{< /info >}} - ![ArangoGraph AWS Private Endpoint Alternate DNS](../../../images/arangograph-aws-private-endpoint-dns.png) -7. Confirm that you want to use a private endpoint for your deployment by - clicking **Confirm Settings**. -8. Back in the **Overview** page, scroll down to the **Private Endpoint** section - that is now displayed to see the connection status and change the - configuration, if needed. - ![ArangoGraph AWS Private Endpoint Overview](../../../images/arangograph-aws-private-endpoint-overview.png) - {{< info >}} - Note that - [Availability Zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones) - are independently mapped for each AWS account. The physical location of a - zone may differ from one account to another account. To coordinate - Availability Zones across AWS accounts, you must use the - [Availability Zone ID](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html). - {{< /info >}} - - {{< tip >}} - To learn more or request help from the ArangoGraph support team, click **Help** - in the top right corner of the **Private Endpoint** section. - {{< /tip >}} -9. ArangoGraph configures a **Private Endpoint Service**. As soon as this is available, - you can use it in the AWS portal to create an interface endpoint to connect - to your endpoint service. For more details, see - [How to connect to an endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-endpoint-service.html#share-endpoint-service). - -{{< tip >}} -To establish connectivity and enable traffic flow, make sure you add a route -from the originating machine to the interface endpoint. -{{< /tip >}} - -{{< tip >}} -When you create a private endpoint in ArangoGraph, both endpoints (the regular -one and the new private one) are available for two hours. During this time period, -you can switch your application to the new private endpoint. After this period, -the old endpoint is not available anymore. -{{< /tip >}} diff --git a/site/content/3.13/arangograph/deployments/upgrades-and-versioning.md b/site/content/3.13/arangograph/deployments/upgrades-and-versioning.md deleted file mode 100644 index 211d271c92..0000000000 --- a/site/content/3.13/arangograph/deployments/upgrades-and-versioning.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Upgrades and Versioning in ArangoGraph -menuTitle: Upgrades and Versioning -weight: 10 -description: >- - Select which version of ArangoDB you want to use within your ArangoGraph - deployment and choose when to roll out your upgrades ---- -{{< info >}} -Please note that this policy comes into effect in April 2023. -{{< /info >}} - -## Release Definitions - -The following definitions are used for release types of ArangoDB within ArangoGraph: - -| Release | Introduces | Contains breaking changes | -|----------|-------------|----------------------------| -| **Major** (`X.y.z`) | Major new features and functionalities | Likely large changes | -| **Minor** (`x.Y.z`) | Some new features or improvements | Likely small changes | -| **Patch** (`x.y.Z`) | Essential fixes and improvements | Small changes in exceptional circumstances | - -## Release Channels - -When creating a deployment in ArangoGraph, you can select the minor version -of ArangoDB that your deployment is going to use. This minor version is in the -format `Major.Minor` and indicates the major and minor version of ArangoDB that -is used in this deployment, for example `3.10` or `3.9`. - -To provide secure and reliable service, databases are deployed on the latest -available patch version in the selected version. For example, if `3.10` is -selected and `3.10.3` is the latest version of ArangoDB available for the `3.10` -minor version, then the deployment is initially using ArangoDB `3.10.3`. - -## Upgrades - -### Manual Upgrades - -At any time, you can change the release channel of your deployment to a later -release channel, but not to an earlier one. For example, if you are using `3.10` -then you can change your deployment’s release channel to `3.11`, but you would -not be able to change the release channel to `3.9`. -See [how to edit a deployment](_index.md#how-to-edit-a-deployment). - -Upon changing your release channel, an upgrade process for your deployment is -initiated to upgrade your running database to the latest patch release of your -selected release channel. You can use this mechanism to upgrade your deployments -at a time that suits you, prior to the forced upgrade when your release channel -is no longer available. - -### Automatic Upgrades - -#### Major Versions (`X.y.z`) - -The potential disruption of a major version upgrade requires additional testing -of any applications connecting to your ArangoGraph deployment. As a result, when -a new major version is released on the ArangoGraph platform, an email is sent out -to inform you of this release. - -If the ArangoDB version that you are currently using is no longer available on the -ArangoGraph platform, you are forced to upgrade to the next available version. -Prior to the removal of the version, an email is sent out to inform you of this -forced upgrade. - -#### Minor Versions (`x.Y.z`) - -Although minor upgrades are not expected to cause significant compatibility -changes like major versions, they may still require additional planning and -validation. - -This is why minor upgrades are treated in the same manner as major upgrades -within ArangoGraph. When a new minor version is released on the ArangoGraph -platform, an email is sent out to inform you of this release. - -If the ArangoDB version that you are currently using is no longer available on the -ArangoGraph platform, you are forced to upgrade to the next available version. -Prior to the removal of the version, an email is sent out to inform you of this -forced upgrade. - -#### Patch Versions (`x.y.Z`) - -Upgrades between patch versions are transparent, with no significant disruption -to your applications. As such, you can expect to be automatically upgraded to -the latest patch version of your selected minor version shortly after it becomes -available in ArangoGraph. - -ArangoGraph aims to give approximately one week’s notice prior to upgrading your -deployments to the latest patch release. Although in exceptional circumstances -(such as a critical security issue) the upgrade may be triggered with less than -one week's notice. -The upgrade is carried out automatically. However, if you need the upgrade to be -deferred temporarily, contact the ArangoGraph Support team to request that. diff --git a/site/content/3.13/arangograph/migrate-to-the-cloud.md b/site/content/3.13/arangograph/migrate-to-the-cloud.md deleted file mode 100644 index 8a3f4a9802..0000000000 --- a/site/content/3.13/arangograph/migrate-to-the-cloud.md +++ /dev/null @@ -1,259 +0,0 @@ ---- -title: Cloud Migration Tool -menuTitle: Migrate to the cloud -weight: 30 -description: >- - Migrating data from bare metal servers to the cloud with minimal downtime -draft: true ---- -The `arangosync-migration` tool allows you to easily move from on-premises to -the cloud while ensuring a smooth transition with minimal downtime. -Start the cloud migration, let the tool do the job and, at the same time, -keep your local cluster up and running. - -Some of the key benefits of the cloud migration tool include: -- Safety comes first - pre-checks and potential failures are carefully handled. -- Your data is secure and fully encrypted. -- Ease-of-use with a live migration while your local cluster is still in use. -- Get access to what a cloud-based fully managed service has to offer: - high availability and reliability, elastic scalability, and much more. - -## Downloading the tool - -The `arangosync-migration` tool is available to download for the following -operating systems: - -**Linux** -- [AMD64 (x86_64) architecture](https://download.arangodb.com/arangosync-migration/linux/amd64/arangosync-migration) -- [ARM64 (AArch64) architecture](https://download.arangodb.com/arangosync-migration/linux/arm64/arangosync-migration) - -**macOS / Darwin** -- [AMD64 (x86_64) architecture](https://download.arangodb.com/arangosync-migration/darwin/amd64/arangosync-migration) -- [ARM64 (AArch64) architecture](https://download.arangodb.com/arangosync-migration/darwin/arm64/arangosync-migration) - -**Windows** -- [AMD64 (x86_64) architecture](https://download.arangodb.com/arangosync-migration/windows/amd64/arangosync-migration.exe) -- [ARM64 (AArch64) architecture](https://download.arangodb.com/arangosync-migration/windows/arm64/arangosync-migration.exe) - -For macOS as well as other Unix-based operating systems, run the following -command to make sure you can execute the binary: - -```bash -chmod 755 ./arangosync-migration -``` - -## Prerequisites - -Before getting started, make sure the following prerequisites are in place: - -- Go to the [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home) - and sign in. If you don’t have an account yet, sign-up to create one. - -- Generate an ArangoGraph API key and API secret. See a detailed guide on - [how to create an API key](api/set-up-a-connection.md#creating-an-api-key). - -{{< info >}} -The cloud migration tool is only available for clusters. -{{< /info >}} - -### Setting up the target deployment in ArangoGraph - -Continue by [creating a new ArangoGraph deployment](deployments/_index.md#how-to-create-a-new-deployment) -or choose an existing one. - -The target deployment in ArangoGraph requires specific configuration rules to be -set up before the migration can start: - -- **Configuration settings**: The target deployment must be compatible with the - source data cluster. This includes the ArangoDB version that is being used, - the DB-Servers count, and disk space. -- **Deployment region and cloud provider**: Choose the closest region to your - data cluster. This factor can speed up your migration to the cloud. - -After setting up your ArangoGraph deployment, wait for a few minutes for it to become -fully operational. - -{{< info >}} -Note that Developer mode deployments are not supported. -{{< /info >}} - -## Running the migration tool - -The `arangosync-migration` tool provides a set of commands that allow you to: -- start the migration process -- check whether your source and target clusters are fully compatible -- get the current status of the migration process -- stop or abort the migration process -- switch the local cluster to read-only mode - -### Starting the migration process - -To start the migration process, run the following command: - -```bash -arangosync-migration start -``` -The `start` command runs some pre-checks. Among other things, it measures -the disk space which is occupied by your ArangoDB cluster. If you are using the -same data volume for ArangoDB servers and other data as well, the measurements -can be incorrect. Provide the `--source.ignore-metrics` option to overcome this. - -You also have the option of doing a `--check-only` without starting the actual -migration. If specified, this checks if your local cluster and target deployment -are compatible without sending any data to ArangoGraph. - -Once the migration starts, the local cluster enters into monitoring mode and the -synchronization status is displayed in real-time. If you don't want to see the -status you can terminate this process, as the underlying agent process -continues to work. If something goes wrong, restarting the same command restores -the replication state. - -To restart the migration, first `stop` or `stop --abort` the migration. Then, -start it again using the `start` command. - -{{< warning >}} -Starting the migration creates a full copy of all data from the source cluster -to the target deployment in ArangoGraph. All data that has previously existed in the -target deployment will be lost. -{{< /warning >}} - -### During the migration - -The following takes place during an active migration: -- The source data cluster remains usable. -- The target deployment in ArangoGraph is switched to read-only mode. -- Your root user password is not copied to the target deployment in ArangoGraph. - To get your root password, select the target deployment from the ArangoGraph - Dashboard and go to the **Overview** tab. All other users are fully synchronized. - -{{< warning >}} -The migration tool increases the CPU and memory usage of the server you are -running it on. Depending on your ArangoDB usage pattern, it may take a lot of CPU -to handle the replication. You can stop the migration process anytime -if you see any problems. -{{< /warning >}} - -```bash -./arangosync-migration start \ - --source.endpoint=$COORDINATOR_ENDPOINT \ - --source.jwt-secret=/path-to/jwt-secret.file \ - --arango-graph.api-key=$ARANGO_GRAPH_API_KEY \ - --arango-graph.api-secret=$ARANGO_GRAPH_API_SECRET \ - --arango-graph.deployment-id=$ARANGO_GRAPH_DEPLOYMENT_ID -``` - -### How long does it take? - -The total time required to complete the migration depends on how much data you -have and how often write operations are executed during the process. - -You can also track the progress by checking the **Migration status** section of -your target deployment in ArangoGraph dashboard. - -![ArangoGraph Cloud Migration Progress](../../images/arangograph-migration-agent.png) - -### Getting the current status - -To print the current status of the migration, run the following command: - -```bash -./arangosync-migration status \ - --arango-graph.api-key=$ARANGO_GRAPH_API_KEY \ - --arango-graph.api-secret=$ARANGO_GRAPH_API_SECRET \ - --arango-graph.deployment-id=$ARANGO_GRAPH_DEPLOYMENT_ID -``` - -You can also add the `--watch` option to start monitoring the status in real-time. - -### Stopping the migration process - -The `arangosync-migration stop` command stops the migration and terminates -the migration agent process. - -If replication is running normally, the command waits until all shards are -in sync. The local cluster is then switched into read-only mode. -After all shards are in-sync and the migration stopped, the target deployment -is switched into the mode specified in `--source.server-mode` option. If no -option is specified, it defaults to the read/write mode. - -```bash -./arangosync-migration stop \ - --arango-graph.api-key=$ARANGO_GRAPH_API_KEY \ - --arango-graph.api-secret=$ARANGO_GRAPH_API_SECRET \ - --arango-graph.deployment-id=$ARANGO_GRAPH_DEPLOYMENT_ID -``` - -The additional `--abort` option is supported. If specified, the `stop` command -will not check anymore if both deployments are in-sync and stops all -migration-related processes as soon as possible. - -### Switching the local cluster to read-only mode - -The `arangosync-migration set-server-mode` command allows switching -[read-only mode](../develop/http-api/administration.md#set-the-server-mode-to-read-only-or-default) -for your local cluster on and off. - -In a read-only mode, all write operations are going to fail with an error code -of `1004` (ERROR_READ_ONLY). -Creating or dropping databases and collections are also going to fail with -error code `11` (ERROR_FORBIDDEN). - -```bash -./arangosync-migration set-server-mode \ - --source.endpoint=$COORDINATOR_ENDPOINT \ - --source.jwt-secret=/path-to/jwt-secret.file \ - --source.server-mode=readonly -``` -The `--source.server-mode` option allows you to specify the desired server mode. -Allowed values are `readonly` or `default`. - -### Supported environment variables - -The `arangosync-migration` tool supports the following environment variables: - -- `$ARANGO_GRAPH_API_KEY` -- `$ARANGO_GRAPH_API_SECRET` -- `$ARANGO_GRAPH_DEPLOYMENT_ID` - -Using these environment variables is highly recommended to ensure a secure way -of providing sensitive data to the application. - -### Restrictions and limitations - -When running the migration, ensure that your target deployment has the same (or -bigger) amount of resources (CPU, RAM) than your cluster. Otherwise, the -migration process might get stuck or require manual intervention. This is closely -connected to the type of data you have and how it is distributed between shards -and collections. - -In general, the most important parameters are: -- Total number of leader shards -- The amount of data in bytes per collection - -Both parameters can be retrieved from the ArangoDB Web Interface. - -The `arangosync-migration` tool supports migrating large datasets of up to -5 TB of data and 3800 leader shards, as well as collections as big as 250 GB. - -In case you have any questions, please -[reach out to us](https://www.arangodb.com/contact). - -## Cloud migration workflow for minimal downtime - -1. Download and start the `arangosync-migration` tool. The target deployment - is switched into read-only mode automatically. -2. Wait until all shards are in sync. You can use the `status` or the `start` - command with the same parameters to track that. -3. Optionally, when all shards are in-sync, you can switch your applications - to use the endpoint of the ArangoGraph deployment, but note that it stays in - read-only mode until the migration process is fully completed. -4. Stop the migration using the `stop` subcommand. The following steps are executed: - - The source data cluster is switched into read-only mode. - - It waits until all shards are synchronized. - - The target deployment is switched into default read/write mode. - - {{< info >}} - If you switched the source data cluster into read-only mode, - you can switch it back to default (read/write) mode using the - `set-server-mode` subcommand. - {{< /info >}} diff --git a/site/content/3.13/arangograph/monitoring-and-metrics.md b/site/content/3.13/arangograph/monitoring-and-metrics.md deleted file mode 100644 index 2b9ede4b4a..0000000000 --- a/site/content/3.13/arangograph/monitoring-and-metrics.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Monitoring & Metrics in ArangoGraph -menuTitle: Monitoring & Metrics -weight: 40 -description: >- - ArangoGraph provides various built-in tools and integrations to help you - monitor your deployment ---- -The ArangoGraph Insights Platform provides integrated charts, metrics, and logs -to help you monitor your deployment. This allows you to track your deployment's -performance, resource utilization, and its overall status. - -The key features include: -- **Built-in monitoring**: Get immediate access to monitoring capabilities for - your deployments without any additional setup. -- **Chart-based metrics representation**: Visualize the usage of the DB-Servers - and Coordinators over a selected timeframe. -- **Integration with Prometheus and Grafana**: Connect your metrics to Prometheus - and Grafana for in-depth visualization and analysis. - -To get started, select an existing deployment from within a project and -click **Monitoring** in the navigation. - -![ArangoGraph Monitoring tab](../../images/arangograph-monitoring-tab.png) - -## Built-in monitoring and metrics - -### In the **Servers** section - -The **Servers** section offers an overview of the DB-Servers, Coordinators, -and Agents used in your deployment. It provides essential details such as each -server's ID and type, the running ArangoDB version, as well as their memory, -CPU, and disk usage. - -In case you need to perform a restart on a server, you can do so by using the -**Gracefully restart this server** action button. This shuts down all services -normally, allowing ongoing operations to finish gracefully before the restart -occurs. - -Additionally, you can access detailed logs via the **Logs** button. This allows -you to apply filters to obtain logs from all server types or select specific ones -(i.e. only Coordinators or only DB-Servers) within a timeframe. To download the -logs, click the **Save** button. - -![ArangoGraph Monitoring Servers](../../images/arangograph-monitoring-servers.png) - -### In the **Metrics** section - -The **Metrics** section displays a chart-based representation depicting the -resource utilization of DB-Servers and Coordinators within a specified timeframe. - -You can select one or more DB-Servers and choose **CPU**, **Memory**, or **Disk** -to visualize their respective usage. The search box enables you to easily find -a server by its ID, particularly useful when having a large number of servers -or when needing to quickly find a particular one among many. - -Similarly, you can repeat the process for Coordinators to see the **CPU** and -**Memory** usage. - -![Arangograph Monitoring Metrics Chart](../../images/arangograph-monitoring-metrics-chart.png) - -## Connect with Prometheus and Grafana - -The ArangoGraph Insights Platform provides metrics for each deployment in a -[Prometheus](https://prometheus.io/)-compatible format. -You can use these metrics to gather detailed insights into the current -and previous states of your deployment. -Once metrics are collected by Prometheus, you can inspect them using tools -such as [Grafana](https://grafana.com/oss/grafana/). - -![ArangoGraph Connect Metrics Section](../../images/arangograph-connect-metrics-section.png) - -### Metrics tokens - -The **Metrics tokens** section allows you to create a new metrics token, -which is required for connecting to Prometheus. - -1. To create a metrics token, click **New metrics token**. -2. For **Name**, enter a name for the metrics token. -3. Optionally, you can also enter a **Short description**. -4. Select the **Lifetime** of the metrics token. -5. Click **Create**. - -![ArangoGraph Metrics Tokens](../../images/arangograph-metrics-token.png) - -### How to connect Prometheus - -1. In the **Metrics** section, click **Connect Prometheus**. -2. Create the `prometheus.yml` file with the following content: - ```yaml - global: - scrape_interval: 60s - scrape_configs: - - job_name: 'deployment' - bearer_token: '<fill-your-metrics-token-here>' - scheme: 'https' - static_configs: - - targets: ['6775e7d48152.arangodb.cloud:8829'] - tls_config: - insecure_skip_verify: true - ``` -3. Start Prometheus with the following command: - ```sh - docker run -d \ - -p 9090:9090 -p 3000:3000 --name prometheus \ - -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml:ro \ - prom/prometheus - ``` - {{< info >}} - This command also opens a port 3000 for Grafana. In a production environment, - this is not needed and not recommended to have it open. - {{< /info >}} - -### How to connect Grafana - -1. Start Grafana with the following command: - ```sh - docker run -d \ - --network container:prometheus \ - grafana/grafana - ``` -2. Go to `localhost:3000` and log in with the following credentials: - - For username, enter *admin*. - - For password, enter *admin*. - - {{< tip >}} - After the initial login, make sure to change your password. - {{< /tip >}} - -3. To add a data source, click **Add your first data source** and then do the following: - - Select **Prometheus**. - - For **HTTP URL**, enter `http://localhost:9090`. - - Click **Save & Test**. -4. To add a dashboard, open the menu and click **Create** and then **Import**. -5. Download the [Grafana dashboard for ArangoGraph](https://github.com/arangodb-managed/grafana-dashboards). -6. Copy the contents of the `main.json` file into the **Import via panel json** field in Grafana. -7. Click **Load**. diff --git a/site/content/3.13/arangograph/my-account.md b/site/content/3.13/arangograph/my-account.md deleted file mode 100644 index 91cd87fb3c..0000000000 --- a/site/content/3.13/arangograph/my-account.md +++ /dev/null @@ -1,171 +0,0 @@ ---- -title: My Account in ArangoGraph -menuTitle: My Account -weight: 35 -description: >- - How to manage your user account, your organizations, and your API keys in ArangoGraph ---- -You can access information related to your account via the __User Toolbar__. -The toolbar is in the top right corner in the ArangoGraph dashboard and -accessible from every view. There are two elements: - -- __Question mark icon__: Help -- __User icon__: My Account - -![ArangoGraph My Account](../../images/arangograph-my-account.png) - -## Overview - -### How to view my account - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __Overview__ in the __My account__ section. -3. The __Overview__ displays your name, email address, company and when the - account was created. - -### How to edit the profile of my account - -1. Hover over or click the user icon in the __User Toolbar__ in the top right corner. -2. Click __Overview__ in the __My account__ section. -3. Click the __Edit__ button. -4. Change your personal information and __Save__. - -![ArangoGraph My Account Info](../../images/arangograph-my-account-info.png) - -## Organizations - -### How to view my organizations - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My organizations__ in the __My account__ section. -3. Your organizations are listed in a table. - Click the organization name or the eye icon in the __Actions__ column to - jump to the organization overview. - -### How to create a new organization - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My organizations__ in the __My account__ section. -3. Click the __New organization__ button. -4. Enter a name and a description for the new organization and click the - __Create__ button. - -{{< info >}} -The free to try tier is limited to a single organization. -{{< /info >}} - -### How to delete an organization - -{{< danger >}} -Removing an organization implies the deletion of projects and deployments. -This operation cannot be undone and **all deployment data will be lost**. -Please proceed with caution. -{{< /danger >}} - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My organizations__ in the __My account__ section. -3. Click the __recycle bin__ icon in the __Actions__ column. -4. Enter `Delete!` to confirm and click __Yes__. - -{{< info >}} -If you are no longer a member of any organization, then a new organization is -created for you when you log in again. -{{< /info >}} - -![ArangoGraph New Organization](../../images/arangograph-new-org.png) - -## Invites - -Invitations are requests to join organizations. You can accept or reject -pending invites. - -### How to create invites - -See [Users and Groups: How to add a new member to the organization](organizations/users-and-groups.md#how-to-add-a-new-member-to-the-organization) - -### How to respond to my invites - -#### I am not a member of an organization yet - -1. Once invited, you will receive an email asking to join your - ArangoGraph organization. - ![ArangoGraph Organization Invite Email](../../images/arangograph-org-invite-email.png) -2. Click the __View my organization invite__ link in the email. You will be - asked to log in or to create a new account. -3. To sign up for a new account, click the __Start Free__ button or the - __Sign up__ link in the header navigation. - ![ArangoGraph Homepage](../../images/arangograph-homepage.png) -4. After successfully signing up, you will receive a verification email. -5. Click the __Verify my email address__ link in the email. It takes you back - to the ArangoGraph Insights Platform site. - ![ArangoGraph Organization Invite Email Verify](../../images/arangograph-org-invite-email-verify.png) -6. After successfully logging in, you can accept or reject the invite to - join your organization. - ![ArangoGraph Organization Invite](../../images/arangograph-org-invite.png) -7. After accepting the invite, you become a member of your organization and - will be granted access to the organization and its related projects and - deployments. - -#### I am already a member of an organization - -1. Once invited, you will receive an email asking to join your - ArangoGraph organization, as well as a notification in the ArangoGraph dashboard. -2. Click the __View my organization invites__ link in the email, or hover over the - user icon in the top right corner of the dashboard and click - __My organization invites__. - ![ArangoGraph Organization Invite Notification](../../images/arangograph-org-invite-notification.png) -3. On the __Invites__ tab of the __My account__ view, you can accept or reject - pending invitations, as well as see past invitations that you accepted or - rejected. Click the button with a checkmark icon to join the organization. - ![ArangoGraph Organization Invites Accept](../../images/arangograph-org-invites-accept.png) - -## API Keys - -API keys are authentication tokens intended to be used for scripting. -They allow a script to authenticate on behalf of a user. - -An API key consists of a key and a secret. You need both to complete -authentication. - -### How to view my API keys - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My API keys__ in the __My account__ section. -3. Information about the API keys are listed in the __My API keys__ section. - -![ArangoGraph My API keys](../../images/arangograph-my-api-keys.png) - -### How to create a new API key - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My API keys__ in the __My account__ section. -3. Click the __New API key__ button. -4. Optionally limit the API key to a specific organization. -5. Optionally specify after how many hours the API key should expire into the - __Time to live__ field. -6. Optionally limit the API key to read-only APIs -7. Click the __Create__ button. -8. Copy the API key ID and Secret, then click the __Close__ button. - -{{< security >}} -The secret is only shown once at creation time. -You have to store it in a safe place. -{{< /security >}} - -![ArangoGraph New API key](../../images/arangograph-new-api-key.png) - -![ArangoGraph API key Secret](../../images/arangograph-api-key-secret.png) - -### How to revoke or delete an API key - -1. Hover over or click the user icon of the __User Toolbar__ in the top right corner. -2. Click __My API keys__ in the __My account__ section. -3. Click an icon in the __Actions__ column: - - __Counter-clockwise arrow__ icon: Revoke API key - - __Recycle bin__ icon: Delete API key -4. Click the __Yes__ button to confirm. - -{{% comment %}} -TODO: Copy to clipboard button -Access token that should expire after 1 hour unless renewed, might get removed as it's confusing. -{{% /comment %}} diff --git a/site/content/3.13/arangograph/notebooks.md b/site/content/3.13/arangograph/notebooks.md deleted file mode 100644 index 7c8b0afff9..0000000000 --- a/site/content/3.13/arangograph/notebooks.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -title: ArangoGraph Notebooks -menuTitle: Notebooks -weight: 25 -description: >- - How to create and manage colocated Jupyter Notebooks within ArangoGraph ---- -{{< info >}} -This documentation describes the beta version of the Notebooks feature and is -subject to change. The beta version is free for all. -{{< /info >}} - -The ArangoGraph Notebook is a JupyterLab notebook embedded in the ArangoGraph -Insights Platform. The notebook integrates seamlessly with platform, -automatically connecting to ArangoGraph services, including ArangoDB and the -ArangoML platform services. This makes it much easier to leverage these -resources without having to download any data locally or to remember user IDs, -passwords, and endpoint URLs. - -![ArangoGraph Notebooks Architecture](../../images/arangograph-notebooks-architecture.png) - -The ArangoGraph Notebook has built-in [ArangoGraph Magic Commands](#arangograph-magic-commands) -that answer questions like: -- What ArangoDB database am I connected to at the moment? -- What data does the ArangoDB instance contain? -- How can I access certain documents? -- How do I create a graph? - -The ArangoGraph Notebook also pre-installs [python-arango](https://docs.python-arango.com/en/main/) -and ArangoML connectors -to [PyG](https://github.com/arangoml/pyg-adapter), -[DGL](https://github.com/arangoml/dgl-adapter), -[CuGraph](https://github.com/arangoml/cugraph-adapter), as well as the -[FastGraphML](https://github.com/arangoml/fastgraphml) -library, so you can get started -right away accessing data in ArangoDB to develop GraphML models using your -favorite GraphML libraries with GPUs. - -## How to create a new notebook - -1. Open the deployment in which you want to create the notebook. -2. Go to the **Data science** section and click the **Create Notebook** button. -3. Enter a name and optionally a description for your new notebook. -4. Select a configuration model from the dropdown menu. Click **Save**. -5. The notebook's phase is set to **Initializing**. Once the phase changes to - **Running**, the notebook's endpoint is accessible. -6. Click the **Open notebook** button to access your notebook. -7. To access your notebook, you need to be signed into ArangoGraph as a user with - the `notebook.notebook.execute` permission in your project. Organization - owners have this permission enabled by default. The `notebook-executor` role - which contains the permission can also be granted to other members of the - organization via roles. See how to create a - [role binding](security-and-access-control/_index.md#how-to-view-edit-or-remove-role-bindings-of-a-policy). - -{{< info >}} -Depending on the tier your organization belongs to, different limitations apply: -- On-Demand and Committed: you can create up to three notebooks per deployment. -- Free-to-try: you can only create one notebook per deployment. -{{< /info >}} - -![Notebooks](../../images/arangograph-notebooks.png) - -{{< info >}} -Notebooks in beta version have a fixed configuration of 10 GB of disk size. -{{< /info >}} - -## How to edit a notebook - -1. Select the notebook that you want to change from the **Notebooks** tab. -2. Click **Edit notebook**. You can modify its name and description. -3. To pause a notebook, click the **Pause notebook** button. You can resume it -at anytime. The notebook's phase is updated accordingly. - -## How to delete a notebook - -1. Select the notebook that you want to remove from the **Notebooks** tab. -2. Click the **Delete notebook** button. - -## Getting Started notebook - -To get a better understanding of how to interact with your ArangoDB database -cluster, use the ArangoGraph Getting Started template. -The ArangoGraph Notebook automatically connects to the ArangoDB service -endpoint, so you can immediately start interacting with it. - -1. Log in to the notebook you have created by using your deployment's root password. -2. Select the `GettingStarted.ipynb` template from the file browser. - -## ArangoGraph Magic Commands - -A list of the available magic commands you can interact with. -Single line commands have `%` prefix and multi-line commands have `%%` prefix. - -**Database Commands** - -- `%listDatabases` - lists the databases on the database server. -- `%whichDatabase` - returns the database name you are connected to. -- `%createDatabase databaseName` - creates a database. -- `%selectDatabase databaseName` - selects a database as the current database. -- `%useDatabase databasename` - uses a database as the current database; - alias for `%selectDatabase`. -- `%getDatabase databaseName` - gets a database. Used for assigning a database, - e.g. `studentDB` = `getDatabase student_database`. -- `%deleteDatabase databaseName` - deletes the database. - -**Graph Commands** - -- `%listGraphs` - lists the graphs defined in the currently selected database. -- `%whichGraph` - returns the graph name that is currently selected. -- `%createGraph graphName` - creates a named graph. -- `%selectGraph graphName` - selects the graph as the current graph. -- `%useGraph graphName` - uses the graph as the current graph; - alias for `%selectGraph`. -- `%getGraph graphName` - gets the graph for variable assignment, - e.g. `studentGraph` = `%getGraph student-graph`. -- `%deleteGraph graphName` - deletes a graph. - -**Collection Commands** - -- `%listCollections` - lists the collections on the selected current database. -- `%whichCollection` - returns the collection name that is currently selected. -- `%createCollection collectionName` - creates a collection. -- `%selectCollection collectionName` - selects a collection as the current collection. -- `%useCollection collectionName` - uses the collection as the current collection; - alias for `%selectCollection`. -- `%getCollection collectionName` - gets a collection for variable assignment, - e.g. `student` = `% getCollection Student`. -- `%createEdgeCollection` - creates an edge collection. -- `%createVertexCollection` - creates a node collection. -- `%createEdgeDefinition` - creates an edge definition. -- `%deleteCollection collectionName` - deletes the collection. -- `%truncateCollection collectionName` - truncates the collection. -- `%sampleCollection collectionName` - returns a random document from the collection. - If no collection is specified, then it uses the selected collection. - -**Document Commands** - -- `%insertDocument jsonDocument` - inserts the document into the currently selected collection. -- `%replaceDocument jsonDocument` - replaces the document in the currently selected collection. -- `%updateDocument jsonDocument` - updates the document in the currently selected collection. -- `%deleteDocument jsonDocument` - deletes the document from the currently selected collection. -- `%%importBulk jsonDocumentArray` - imports an array of documents into the currently selected collection. - -**AQL Commands** - -- `%aql single-line_aql_query` - executes a single line AQL query. -- `%%aqlm multi-line_aql_query` - executes a multi-line AQL query. - -**Variables** - -- `_endpoint` - the endpoint (URL) of the ArangoDB Server. -- `_system` - the system database used for creating, listing, and deleting databases. -- `_db` - the selected (current) database. To select a different database, use `%selectDatabase`. -- `_graph` - the selected (current) graph. To select a different graph, use `%selectGraph`. -- `_collection` - the selected (current) collection. To select a different collection, use `%selectCollection`. -- `_user` - the current user. - -You can use these variables directly, for example, `_db.collections()` to list -collections or `_system.databases` to list databases. - -You can also create your own variable assignments, such as: - -- `schoolDB` = `%getDatabase schoolDB` -- `school_graph` = `%getGraph school_graph` -- `student` = `%getCollection Student` - -**Reset environment** - -In the event that any of the above variables have been unintentionally changed, -you can revert all of them to the default state with `reset_environment()`. diff --git a/site/content/3.13/arangograph/oasisctl/_index.md b/site/content/3.13/arangograph/oasisctl/_index.md deleted file mode 100644 index 9d22a68e31..0000000000 --- a/site/content/3.13/arangograph/oasisctl/_index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Oasisctl -menuTitle: Oasisctl -weight: 65 -description: >- - Command-line client tool for managing the ArangoGraph Insights Platform ---- -Oasisctl is a command-line tool for using the [ArangoGraph API](../api/_index.md). -This tool makes integration of ArangoGraph in all kinds of (bash) scripts easy. -It is also a good example on how to use the API. - -See [Getting started with Oasisctl](../api/get-started.md) for a -tutorial. - -Oasisctl is available for Linux, macOS and Windows. -Download and source code: - -[github.com/arangodb-managed/oasisctl](https://github.com/arangodb-managed/oasisctl/) diff --git a/site/content/3.13/arangograph/oasisctl/accept/_index.md b/site/content/3.13/arangograph/oasisctl/accept/_index.md deleted file mode 100644 index e9c0e05a01..0000000000 --- a/site/content/3.13/arangograph/oasisctl/accept/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Accept -menuTitle: Accept -weight: 2 ---- -## oasisctl accept - -Accept invites - -``` -oasisctl accept [flags] -``` - -## Options -``` - -h, --help help for accept -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl accept organization](accept-organization.md) - Accept organization related invites - diff --git a/site/content/3.13/arangograph/oasisctl/accept/accept-organization-invite.md b/site/content/3.13/arangograph/oasisctl/accept/accept-organization-invite.md deleted file mode 100644 index 3f52fbb67b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/accept/accept-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Accept Organization Invite -menuTitle: Accept Organization Invite -weight: 2 ---- -## oasisctl accept organization invite - -Accept an organization invite the authenticated user has access to - -``` -oasisctl accept organization invite [flags] -``` - -## Options -``` - -h, --help help for invite - -i, --invite-id string Identifier of the organization invite - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl accept organization](accept-organization.md) - Accept organization related invites - diff --git a/site/content/3.13/arangograph/oasisctl/accept/accept-organization.md b/site/content/3.13/arangograph/oasisctl/accept/accept-organization.md deleted file mode 100644 index f4d5310a16..0000000000 --- a/site/content/3.13/arangograph/oasisctl/accept/accept-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Accept Organization -menuTitle: Accept Organization -weight: 1 ---- -## oasisctl accept organization - -Accept organization related invites - -``` -oasisctl accept organization [flags] -``` - -## Options -``` - -h, --help help for organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl accept](_index.md) - Accept invites -* [oasisctl accept organization invite](accept-organization-invite.md) - Accept an organization invite the authenticated user has access to - diff --git a/site/content/3.13/arangograph/oasisctl/add/_index.md b/site/content/3.13/arangograph/oasisctl/add/_index.md deleted file mode 100644 index c44318f848..0000000000 --- a/site/content/3.13/arangograph/oasisctl/add/_index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Add -menuTitle: Add -weight: 3 ---- -## oasisctl add - -Add resources - -``` -oasisctl add [flags] -``` - -## Options -``` - -h, --help help for add -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl add auditlog](add-auditlog.md) - Add auditlog resources -* [oasisctl add group](add-group.md) - Add group resources - diff --git a/site/content/3.13/arangograph/oasisctl/add/add-auditlog-destination.md b/site/content/3.13/arangograph/oasisctl/add/add-auditlog-destination.md deleted file mode 100644 index 378e456833..0000000000 --- a/site/content/3.13/arangograph/oasisctl/add/add-auditlog-destination.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Oasisctl Add Audit Log Destination -menuTitle: Add Audit Log Destination -weight: 2 ---- -## oasisctl add auditlog destination - -Add a destination to an auditlog. - -``` -oasisctl add auditlog destination [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog - --destination-excluded-topics strings Do not send audit events with these topics to this destination. - --destination-https-client-certificate-pem string PEM encoded public key of the client certificate. - --destination-https-client-key-pem string PEM encoded private key of the client certificate. - --destination-https-headers strings A key=value formatted list of headers for the request. Repeating headers are allowed. - --destination-https-trusted-server-ca-pem string PEM encoded public key of the CA used to sign the server TLS certificate. If empty, a well known CA is expected. - --destination-https-url string URL of the server to POST to. Scheme must be HTTPS. - --destination-type string Type of destination. Possible values are: "cloud", "https-post" - -h, --help help for destination - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl add auditlog](add-auditlog.md) - Add auditlog resources - diff --git a/site/content/3.13/arangograph/oasisctl/add/add-auditlog.md b/site/content/3.13/arangograph/oasisctl/add/add-auditlog.md deleted file mode 100644 index dca21fda97..0000000000 --- a/site/content/3.13/arangograph/oasisctl/add/add-auditlog.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Add Audit Log -menuTitle: Add Audit Log -weight: 1 ---- -## oasisctl add auditlog - -Add auditlog resources - -``` -oasisctl add auditlog [flags] -``` - -## Options -``` - -h, --help help for auditlog -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl add](_index.md) - Add resources -* [oasisctl add auditlog destination](add-auditlog-destination.md) - Add a destination to an auditlog. - diff --git a/site/content/3.13/arangograph/oasisctl/add/add-group-members.md b/site/content/3.13/arangograph/oasisctl/add/add-group-members.md deleted file mode 100644 index db2677d276..0000000000 --- a/site/content/3.13/arangograph/oasisctl/add/add-group-members.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Add Group Members -menuTitle: Add Group Members -weight: 4 ---- -## oasisctl add group members - -Add members to group - -``` -oasisctl add group members [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group to add members to - -h, --help help for members - -o, --organization-id string Identifier of the organization - -u, --user-emails strings A comma separated list of user email addresses -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl add group](add-group.md) - Add group resources - diff --git a/site/content/3.13/arangograph/oasisctl/add/add-group.md b/site/content/3.13/arangograph/oasisctl/add/add-group.md deleted file mode 100644 index a51b0b7102..0000000000 --- a/site/content/3.13/arangograph/oasisctl/add/add-group.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Add Group -menuTitle: Add Group -weight: 3 ---- -## oasisctl add group - -Add group resources - -``` -oasisctl add group [flags] -``` - -## Options -``` - -h, --help help for group -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl add](_index.md) - Add resources -* [oasisctl add group members](add-group-members.md) - Add members to group - diff --git a/site/content/3.13/arangograph/oasisctl/auditlog/_index.md b/site/content/3.13/arangograph/oasisctl/auditlog/_index.md deleted file mode 100644 index fd71b3b653..0000000000 --- a/site/content/3.13/arangograph/oasisctl/auditlog/_index.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Audit Log -menuTitle: Audit Log -weight: 4 ---- -## oasisctl auditlog - -AuditLog resources - -``` -oasisctl auditlog [flags] -``` - -## Options -``` - -h, --help help for auditlog -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl auditlog attach](auditlog-attach.md) - Attach a project to an audit log -* [oasisctl auditlog detach](auditlog-detach.md) - Detach a project from an auditlog -* [oasisctl auditlog get](auditlog-get.md) - Audit log get resources - diff --git a/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-attach.md b/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-attach.md deleted file mode 100644 index 7ffcd50360..0000000000 --- a/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-attach.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Audit Log Attach -menuTitle: Audit Log Attach -weight: 1 ---- -## oasisctl auditlog attach - -Attach a project to an audit log - -``` -oasisctl auditlog attach [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog to attach to. - -h, --help help for attach - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog](_index.md) - AuditLog resources - diff --git a/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-detach.md b/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-detach.md deleted file mode 100644 index 4043614c32..0000000000 --- a/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-detach.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Audit Log Detach -menuTitle: Audit Log Detach -weight: 2 ---- -## oasisctl auditlog detach - -Detach a project from an auditlog - -``` -oasisctl auditlog detach [flags] -``` - -## Options -``` - -h, --help help for detach - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog](_index.md) - AuditLog resources - diff --git a/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md b/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md deleted file mode 100644 index b4c2a69666..0000000000 --- a/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Audit Log Get Attached Project -menuTitle: Audit Log Get Attached Project -weight: 5 ---- -## oasisctl auditlog get attached project - -Get an attached log to a project - -``` -oasisctl auditlog get attached project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog get attached](auditlog-get-attached.md) - Audit get attached resources - diff --git a/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-get-attached.md b/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-get-attached.md deleted file mode 100644 index 004400da64..0000000000 --- a/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-get-attached.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Audit Log Get Attached -menuTitle: Audit Log Get Attached -weight: 4 ---- -## oasisctl auditlog get attached - -Audit get attached resources - -``` -oasisctl auditlog get attached [flags] -``` - -## Options -``` - -h, --help help for attached -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog get](auditlog-get.md) - Audit log get resources -* [oasisctl auditlog get attached project](auditlog-get-attached-project.md) - Get an attached log to a project - diff --git a/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-get.md b/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-get.md deleted file mode 100644 index d3b170c666..0000000000 --- a/site/content/3.13/arangograph/oasisctl/auditlog/auditlog-get.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Audit Log Get -menuTitle: Audit Log Get -weight: 3 ---- -## oasisctl auditlog get - -Audit log get resources - -``` -oasisctl auditlog get [flags] -``` - -## Options -``` - -h, --help help for get -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl auditlog](_index.md) - AuditLog resources -* [oasisctl auditlog get attached](auditlog-get-attached.md) - Audit get attached resources - diff --git a/site/content/3.13/arangograph/oasisctl/backup/_index.md b/site/content/3.13/arangograph/oasisctl/backup/_index.md deleted file mode 100644 index 2a19e74e37..0000000000 --- a/site/content/3.13/arangograph/oasisctl/backup/_index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Backup -menuTitle: Backup -weight: 5 ---- -## oasisctl backup - -Backup commands - -``` -oasisctl backup [flags] -``` - -## Options -``` - -h, --help help for backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl backup copy](backup-copy.md) - Copy a backup from source backup to given region -* [oasisctl backup download](backup-download.md) - Download a backup - diff --git a/site/content/3.13/arangograph/oasisctl/backup/backup-copy.md b/site/content/3.13/arangograph/oasisctl/backup/backup-copy.md deleted file mode 100644 index b492b5d92b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/backup/backup-copy.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Backup Copy -menuTitle: Backup Copy -weight: 1 ---- -## oasisctl backup copy - -Copy a backup from source backup to given region - -``` -oasisctl backup copy [flags] -``` - -## Options -``` - -h, --help help for copy - --region-id string Identifier of the region where the new backup is to be created - --source-backup-id string Identifier of the source backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl backup](_index.md) - Backup commands - diff --git a/site/content/3.13/arangograph/oasisctl/backup/backup-download.md b/site/content/3.13/arangograph/oasisctl/backup/backup-download.md deleted file mode 100644 index b458b57b48..0000000000 --- a/site/content/3.13/arangograph/oasisctl/backup/backup-download.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Backup Download -menuTitle: Backup Download -weight: 2 ---- -## oasisctl backup download - -Download a backup - -## Synopsis -Download a backup from the cloud storage to the local deployment disks, so it can be restored. - -``` -oasisctl backup download [flags] -``` - -## Options -``` - -h, --help help for download - -i, --id string Identifier of the backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl backup](_index.md) - Backup commands - diff --git a/site/content/3.13/arangograph/oasisctl/clone/_index.md b/site/content/3.13/arangograph/oasisctl/clone/_index.md deleted file mode 100644 index 7edaf4178e..0000000000 --- a/site/content/3.13/arangograph/oasisctl/clone/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Clone -menuTitle: Clone -weight: 6 ---- -## oasisctl clone - -Clone resources - -``` -oasisctl clone [flags] -``` - -## Options -``` - -h, --help help for clone -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl clone deployment](clone-deployment.md) - Clone deployment resources - diff --git a/site/content/3.13/arangograph/oasisctl/clone/clone-deployment-backup.md b/site/content/3.13/arangograph/oasisctl/clone/clone-deployment-backup.md deleted file mode 100644 index 5f98d22b91..0000000000 --- a/site/content/3.13/arangograph/oasisctl/clone/clone-deployment-backup.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Clone Deployment Backup -menuTitle: Clone Deployment Backup -weight: 2 ---- -## oasisctl clone deployment backup - -Clone a deployment from a backup. - -``` -oasisctl clone deployment backup [flags] -``` - -## Options -``` - --accept Accept the current terms and conditions. - -b, --backup-id string Clone a deployment from a backup using the backup's ID. - -h, --help help for backup - -o, --organization-id string Identifier of the organization to create the clone in - -p, --project-id string An optional identifier of the project to create the clone in - -r, --region-id string An optionally defined region in which the new deployment should be created in. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl clone deployment](clone-deployment.md) - Clone deployment resources - diff --git a/site/content/3.13/arangograph/oasisctl/clone/clone-deployment.md b/site/content/3.13/arangograph/oasisctl/clone/clone-deployment.md deleted file mode 100644 index 0b76d1fec8..0000000000 --- a/site/content/3.13/arangograph/oasisctl/clone/clone-deployment.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Clone Deployment -menuTitle: Clone Deployment -weight: 1 ---- -## oasisctl clone deployment - -Clone deployment resources - -``` -oasisctl clone deployment [flags] -``` - -## Options -``` - -h, --help help for deployment -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl clone](_index.md) - Clone resources -* [oasisctl clone deployment backup](clone-deployment-backup.md) - Clone a deployment from a backup. - diff --git a/site/content/3.13/arangograph/oasisctl/completion.md b/site/content/3.13/arangograph/oasisctl/completion.md deleted file mode 100644 index 9cd58cd4f6..0000000000 --- a/site/content/3.13/arangograph/oasisctl/completion.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Oasisctl Completion -menuTitle: Completion -weight: 7 ---- -## oasisctl completion - -Generates bash completion scripts - -## Synopsis -To load completion run - - . <(oasisctl completion [bash|fish|powershell|zsh]) - -To configure your bash shell to load completions for each session add to your bashrc - - # ~/.bashrc or ~/.profile - . <(oasisctl completion bash) - - -``` -oasisctl completion [flags] -``` - -## Options -``` - -h, --help help for completion -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.13/arangograph/oasisctl/create/_index.md b/site/content/3.13/arangograph/oasisctl/create/_index.md deleted file mode 100644 index 87ef865918..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/_index.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Oasisctl Create -menuTitle: Create -weight: 8 ---- -## oasisctl create - -Create resources - -``` -oasisctl create [flags] -``` - -## Options -``` - -h, --help help for create -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl create apikey](create-apikey.md) - Create a new API key -* [oasisctl create auditlog](create-auditlog.md) - Create an auditlog -* [oasisctl create backup](create-backup.md) - Create backup ... -* [oasisctl create cacertificate](create-cacertificate.md) - Create a new CA certificate -* [oasisctl create deployment](create-deployment.md) - Create a new deployment -* [oasisctl create example](create-example.md) - Create example ... -* [oasisctl create group](create-group.md) - Create a new group -* [oasisctl create ipallowlist](create-ipallowlist.md) - Create a new IP allowlist -* [oasisctl create metrics](create-metrics.md) - Create metrics resources -* [oasisctl create notebook](create-notebook.md) - Create a new notebook -* [oasisctl create organization](create-organization.md) - Create a new organization -* [oasisctl create private](create-private.md) - Create private resources -* [oasisctl create project](create-project.md) - Create a new project -* [oasisctl create role](create-role.md) - Create a new role - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-apikey.md b/site/content/3.13/arangograph/oasisctl/create/create-apikey.md deleted file mode 100644 index 1177d5cc67..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-apikey.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Create API Key -menuTitle: Create API Key -weight: 1 ---- -## oasisctl create apikey - -Create a new API key - -``` -oasisctl create apikey [flags] -``` - -## Options -``` - -h, --help help for apikey - -o, --organization-id string If set, the newly created API key will grant access to this organization only - --readonly If set, the newly created API key will grant readonly access only -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-auditlog.md b/site/content/3.13/arangograph/oasisctl/create/create-auditlog.md deleted file mode 100644 index 5863da66e8..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-auditlog.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Create Audit Log -menuTitle: Create Audit Log -weight: 2 ---- -## oasisctl create auditlog - -Create an auditlog - -``` -oasisctl create auditlog [flags] -``` - -## Options -``` - --default If set, this AuditLog is the default for the organization. - --description string Description of the audit log. - -h, --help help for auditlog - --name string Name of the audit log. - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-backup-policy.md b/site/content/3.13/arangograph/oasisctl/create/create-backup-policy.md deleted file mode 100644 index 99f899b951..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-backup-policy.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Oasisctl Create Backup Policy -menuTitle: Create Backup Policy -weight: 4 ---- -## oasisctl create backup policy - -Create a new backup policy - -``` -oasisctl create backup policy [flags] -``` - -## Options -``` - --additional-region-ids strings Add backup to the specified addition regions - --day-of-the-month int32 Run the backup on the specified day of the month (1-31) (default 1) - --deployment-id string ID of the deployment - --description string Description of the backup policy - --email-notification string Email notification setting (Never|FailureOnly|Always) - --every-interval-hours int32 Schedule should run with an interval of the specified hours (1-23) - --friday If set, a backup will be created on Fridays. - -h, --help help for policy - --hours int32 Hours part of the time of day (0-23) - --minutes int32 Minutes part of the time of day (0-59) - --minutes-offset int32 Schedule should run with specific minutes offset (0-59) - --monday If set, a backup will be created on Mondays - --name string Name of the deployment - --paused The policy is paused - --retention-period int Backups created by this policy will be automatically deleted after the specified retention period. A value of 0 means that backup will never be deleted. - --saturday If set, a backup will be created on Saturdays - --schedule-type string Schedule of the policy (Hourly|Daily|Monthly) - --sunday If set, a backup will be created on Sundays - --thursday If set, a backup will be created on Thursdays - --time-zone string The time-zone this time of day applies to (empty means UTC). Names MUST be exactly as defined in RFC-822. (default "UTC") - --tuesday If set, a backup will be created on Tuesdays - --upload The backup should be uploaded - --wednesday If set, a backup will be created on Wednesdays -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create backup](create-backup.md) - Create backup ... - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-backup.md b/site/content/3.13/arangograph/oasisctl/create/create-backup.md deleted file mode 100644 index 8ca544206c..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-backup.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Create Backup -menuTitle: Create Backup -weight: 3 ---- -## oasisctl create backup - -Create backup ... - -``` -oasisctl create backup [flags] -``` - -## Options -``` - --auto-deleted-at int Time (h) until auto delete of the backup - --deployment-id string ID of the deployment - --description string Description of the backup - -h, --help help for backup - --name string Name of the deployment - --upload The backup should be uploaded -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create backup policy](create-backup-policy.md) - Create a new backup policy - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-cacertificate.md b/site/content/3.13/arangograph/oasisctl/create/create-cacertificate.md deleted file mode 100644 index b27b6e7db8..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-cacertificate.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Create CA Certificate -menuTitle: Create CA Certificate -weight: 5 ---- -## oasisctl create cacertificate - -Create a new CA certificate - -``` -oasisctl create cacertificate [flags] -``` - -## Options -``` - --description string Description of the CA certificate - -h, --help help for cacertificate - --lifetime duration Lifetime of the CA certificate. - --name string Name of the CA certificate - -o, --organization-id string Identifier of the organization to create the CA certificate in - -p, --project-id string Identifier of the project to create the CA certificate in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-deployment.md b/site/content/3.13/arangograph/oasisctl/create/create-deployment.md deleted file mode 100644 index c9f633fd99..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-deployment.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Oasisctl Create Deployment -menuTitle: Create Deployment -weight: 6 ---- -## oasisctl create deployment - -Create a new deployment - -``` -oasisctl create deployment [flags] -``` - -## Options -``` - --accept Accept the current terms and conditions. - -c, --cacertificate-id string Identifier of the CA certificate to use for the deployment - --coordinator-memory-size int32 Set memory size of Coordinators for flexible deployments (GiB) (default 4) - --coordinators int32 Set number of Coordinators for flexible deployments (default 3) - --custom-image string Set a custom image to use for the deployment. Only available for selected customers. - --dbserver-disk-size int32 Set disk size of DB-Servers for flexible deployments (GiB) (default 32) - --dbserver-memory-size int32 Set memory size of DB-Servers for flexible deployments (GiB) (default 4) - --dbservers int32 Set number of DB-Servers for flexible deployments (default 3) - --deployment-profile-id string Set the Deployment Profile to use for this deployment. - --description string Description of the deployment - --disable-foxx-authentication Disable authentication of requests to Foxx application. - --disk-performance-id string Set the disk performance to use for this deployment. - --drop-vst-support Drop VST protocol support to improve resilience. - -h, --help help for deployment - -i, --ipallowlist-id string Identifier of the IP allowlist to use for the deployment - --is-platform-authentication-enabled Enable platform authentication for deployment. - --max-node-disk-size int32 Set maximum disk size for nodes for autoscaler (GiB) - --model string Set model of the deployment (default "oneshard") - --name string Name of the deployment - --node-count int32 Set the number of desired nodes (default 3) - --node-disk-size int32 Set disk size for nodes (GiB) - --node-size-id string Set the node size to use for this deployment - --notification-email-address strings Set email address(-es) that will be used for notifications related to this deployment. - -o, --organization-id string Identifier of the organization to create the deployment in - -p, --project-id string Identifier of the project to create the deployment in - -r, --region-id string Identifier of the region to create the deployment in - --version string Version of ArangoDB to use for the deployment (default "default") -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-example-installation.md b/site/content/3.13/arangograph/oasisctl/create/create-example-installation.md deleted file mode 100644 index 121d13dccd..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-example-installation.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Create Example Installation -menuTitle: Create Example Installation -weight: 8 ---- -## oasisctl create example installation - -Create a new example dataset installation - -``` -oasisctl create example installation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to list installations for - -e, --example-dataset-id string ID of the example dataset - -h, --help help for installation - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create example](create-example.md) - Create example ... - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-example.md b/site/content/3.13/arangograph/oasisctl/create/create-example.md deleted file mode 100644 index 5b1a50cf0e..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-example.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Create Example -menuTitle: Create Example -weight: 7 ---- -## oasisctl create example - -Create example ... - -``` -oasisctl create example [flags] -``` - -## Options -``` - -h, --help help for example -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create example installation](create-example-installation.md) - Create a new example dataset installation - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-group.md b/site/content/3.13/arangograph/oasisctl/create/create-group.md deleted file mode 100644 index d28e7ec7d2..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-group.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Create Group -menuTitle: Create Group -weight: 9 ---- -## oasisctl create group - -Create a new group - -``` -oasisctl create group [flags] -``` - -## Options -``` - --description string Description of the group - -h, --help help for group - --name string Name of the group - -o, --organization-id string Identifier of the organization to create the group in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-ipallowlist.md b/site/content/3.13/arangograph/oasisctl/create/create-ipallowlist.md deleted file mode 100644 index 07f4308515..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-ipallowlist.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Create IP Allowlist -menuTitle: Create IP Allowlist -weight: 10 ---- -## oasisctl create ipallowlist - -Create a new IP allowlist - -``` -oasisctl create ipallowlist [flags] -``` - -## Options -``` - --cidr-range strings List of CIDR ranges from which deployments are accessible - --description string Description of the IP allowlist - -h, --help help for ipallowlist - --name string Name of the IP allowlist - -o, --organization-id string Identifier of the organization to create the IP allowlist in - -p, --project-id string Identifier of the project to create the IP allowlist in - --remote-inspection-allowed If set, remote connectivity checks by the Oasis platform are allowed -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-metrics-token.md b/site/content/3.13/arangograph/oasisctl/create/create-metrics-token.md deleted file mode 100644 index a5e0e9a9dd..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-metrics-token.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Create Metrics Token -menuTitle: Create Metrics Token -weight: 12 ---- -## oasisctl create metrics token - -Create a new metrics access token - -``` -oasisctl create metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to create the token for - --description string Description of the token - -h, --help help for token - --lifetime duration Lifetime of the token. - --name string Name of the token - -o, --organization-id string Identifier of the organization to create the token in - -p, --project-id string Identifier of the project to create the token in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create metrics](create-metrics.md) - Create metrics resources - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-metrics.md b/site/content/3.13/arangograph/oasisctl/create/create-metrics.md deleted file mode 100644 index d504981b04..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Create Metrics -menuTitle: Create Metrics -weight: 11 ---- -## oasisctl create metrics - -Create metrics resources - -``` -oasisctl create metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create metrics token](create-metrics-token.md) - Create a new metrics access token - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-notebook.md b/site/content/3.13/arangograph/oasisctl/create/create-notebook.md deleted file mode 100644 index 8e1f2dcd53..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-notebook.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Oasisctl Create Notebook -menuTitle: Create Notebook -weight: 13 ---- -## oasisctl create notebook - -Create a new notebook - -``` -oasisctl create notebook [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment that the notebook has to run next to - --description string Description of the notebook - -s, --disk-size int32 Disk size in GiB that has to be attached to given notebook - -h, --help help for notebook - -n, --name string Name of the notebook - -m, --notebook-model string Identifier of the notebook model that the notebook has to use - -o, --organization-id string Identifier of the organization to create the notebook in - -p, --project-id string Identifier of the project to create the notebook in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-organization-invite.md b/site/content/3.13/arangograph/oasisctl/create/create-organization-invite.md deleted file mode 100644 index 3fbe04a1fe..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Create Organization Invite -menuTitle: Create Organization Invite -weight: 15 ---- -## oasisctl create organization invite - -Create a new invite to an organization - -``` -oasisctl create organization invite [flags] -``` - -## Options -``` - --email string Email address of the person to invite - -h, --help help for invite - -o, --organization-id string Identifier of the organization to create the invite in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create organization](create-organization.md) - Create a new organization - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-organization.md b/site/content/3.13/arangograph/oasisctl/create/create-organization.md deleted file mode 100644 index 8ca1b9065b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-organization.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Create Organization -menuTitle: Create Organization -weight: 14 ---- -## oasisctl create organization - -Create a new organization - -``` -oasisctl create organization [flags] -``` - -## Options -``` - --description string Description of the organization - -h, --help help for organization - --name string Name of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create organization invite](create-organization-invite.md) - Create a new invite to an organization - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-private-endpoint-service.md b/site/content/3.13/arangograph/oasisctl/create/create-private-endpoint-service.md deleted file mode 100644 index 01999a99ce..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-private-endpoint-service.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Oasisctl Create Private Endpoint Service -menuTitle: Create Private Endpoint Service -weight: 18 ---- -## oasisctl create private endpoint service - -Create a Private Endpoint Service attached to an existing deployment - -``` -oasisctl create private endpoint service [flags] -``` - -## Options -``` - --alternate-dns-name strings DNS names used for the deployment in the private network - --aws-principal strings List of AWS Principals from which a Private Endpoint can be created (Format: <AccountID>[/Role/<RoleName>|/User/<UserName>]) - --azure-client-subscription-id strings List of Azure subscription IDs from which a Private Endpoint can be created - -d, --deployment-id string Identifier of the deployment that the private endpoint service is connected to - --description string Description of the private endpoint service - --enable-private-dns Enable private DNS for the deployment (applicable for AWS and GKE only) - --gcp-project strings List of GCP projects from which a Private Endpoint can be created - -h, --help help for service - --name string Name of the private endpoint service - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create private endpoint](create-private-endpoint.md) - - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-private-endpoint.md b/site/content/3.13/arangograph/oasisctl/create/create-private-endpoint.md deleted file mode 100644 index cac7dbfcb7..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-private-endpoint.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Create Private Endpoint -menuTitle: Create Private Endpoint -weight: 17 ---- -## oasisctl create private endpoint - - - -``` -oasisctl create private endpoint [flags] -``` - -## Options -``` - -h, --help help for endpoint -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create private](create-private.md) - Create private resources -* [oasisctl create private endpoint service](create-private-endpoint-service.md) - Create a Private Endpoint Service attached to an existing deployment - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-private.md b/site/content/3.13/arangograph/oasisctl/create/create-private.md deleted file mode 100644 index 3cb40e735b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-private.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Create Private -menuTitle: Create Private -weight: 16 ---- -## oasisctl create private - -Create private resources - -``` -oasisctl create private [flags] -``` - -## Options -``` - -h, --help help for private -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources -* [oasisctl create private endpoint](create-private-endpoint.md) - - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-project.md b/site/content/3.13/arangograph/oasisctl/create/create-project.md deleted file mode 100644 index 59d997efb7..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-project.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Create Project -menuTitle: Create Project -weight: 19 ---- -## oasisctl create project - -Create a new project - -``` -oasisctl create project [flags] -``` - -## Options -``` - --description string Description of the project - -h, --help help for project - --name string Name of the project - -o, --organization-id string Identifier of the organization to create the project in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.13/arangograph/oasisctl/create/create-role.md b/site/content/3.13/arangograph/oasisctl/create/create-role.md deleted file mode 100644 index 52cec0a672..0000000000 --- a/site/content/3.13/arangograph/oasisctl/create/create-role.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Create Role -menuTitle: Create Role -weight: 20 ---- -## oasisctl create role - -Create a new role - -``` -oasisctl create role [flags] -``` - -## Options -``` - --description string Description of the role - -h, --help help for role - --name string Name of the role - -o, --organization-id string Identifier of the organization to create the role in - -p, --permission strings Permissions granted by the role -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl create](_index.md) - Create resources - diff --git a/site/content/3.13/arangograph/oasisctl/delete/_index.md b/site/content/3.13/arangograph/oasisctl/delete/_index.md deleted file mode 100644 index 75b76a80b6..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/_index.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Oasisctl Delete -menuTitle: Delete -weight: 9 ---- -## oasisctl delete - -Delete resources - -``` -oasisctl delete [flags] -``` - -## Options -``` - -h, --help help for delete -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl delete apikey](delete-apikey.md) - Delete an API key with given identifier -* [oasisctl delete auditlog](delete-auditlog.md) - Delete an auditlog -* [oasisctl delete backup](delete-backup.md) - Delete a backup for a given ID. -* [oasisctl delete cacertificate](delete-cacertificate.md) - Delete a CA certificate the authenticated user has access to -* [oasisctl delete deployment](delete-deployment.md) - Delete a deployment the authenticated user has access to -* [oasisctl delete example](delete-example.md) - Delete example ... -* [oasisctl delete group](delete-group.md) - Delete a group the authenticated user has access to -* [oasisctl delete ipallowlist](delete-ipallowlist.md) - Delete an IP allowlist the authenticated user has access to -* [oasisctl delete metrics](delete-metrics.md) - Delete metrics resources -* [oasisctl delete notebook](delete-notebook.md) - Delete a notebook -* [oasisctl delete organization](delete-organization.md) - Delete an organization the authenticated user has access to -* [oasisctl delete project](delete-project.md) - Delete a project the authenticated user has access to -* [oasisctl delete role](delete-role.md) - Delete a role the authenticated user has access to - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-apikey.md b/site/content/3.13/arangograph/oasisctl/delete/delete-apikey.md deleted file mode 100644 index d18236eac3..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-apikey.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Delete API Key -menuTitle: Delete API Key -weight: 1 ---- -## oasisctl delete apikey - -Delete an API key with given identifier - -``` -oasisctl delete apikey [flags] -``` - -## Options -``` - -i, --apikey-id string Identifier of the API key to delete - -h, --help help for apikey -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-auditlog-archive-events.md b/site/content/3.13/arangograph/oasisctl/delete/delete-auditlog-archive-events.md deleted file mode 100644 index d337652b7b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-auditlog-archive-events.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Audit Log Archive Events -menuTitle: Delete Audit Log Archive Events -weight: 4 ---- -## oasisctl delete auditlog archive events - -Delete auditlog archive events - -``` -oasisctl delete auditlog archive events [flags] -``` - -## Options -``` - -i, --auditlog-archive-id string Identifier of the auditlog archive to delete events from. - -h, --help help for events - --to string Remove events created before this timestamp. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete auditlog archive](delete-auditlog-archive.md) - Delete an auditlog archive - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-auditlog-archive.md b/site/content/3.13/arangograph/oasisctl/delete/delete-auditlog-archive.md deleted file mode 100644 index 59153bfbdd..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-auditlog-archive.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Audit Log Archive -menuTitle: Delete Audit Log Archive -weight: 3 ---- -## oasisctl delete auditlog archive - -Delete an auditlog archive - -``` -oasisctl delete auditlog archive [flags] -``` - -## Options -``` - -i, --auditlog-archive-id string Identifier of the auditlog archive to delete. - -h, --help help for archive -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete auditlog](delete-auditlog.md) - Delete an auditlog -* [oasisctl delete auditlog archive events](delete-auditlog-archive-events.md) - Delete auditlog archive events - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-auditlog-destination.md b/site/content/3.13/arangograph/oasisctl/delete/delete-auditlog-destination.md deleted file mode 100644 index 6dcb135925..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-auditlog-destination.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Delete Audit Log Destination -menuTitle: Delete Audit Log Destination -weight: 5 ---- -## oasisctl delete auditlog destination - -Delete a destination from an auditlog - -``` -oasisctl delete auditlog destination [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog to delete. - -h, --help help for destination - --index int Index of the destination to remove. Only one delete option can be specified. (default -1) - -o, --organization-id string Identifier of the organization. - --type string Type of the destination to remove. This will remove ALL destinations with that type. - --url string An optional URL which will be used to delete a single destination instead of all. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete auditlog](delete-auditlog.md) - Delete an auditlog - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-auditlog.md b/site/content/3.13/arangograph/oasisctl/delete/delete-auditlog.md deleted file mode 100644 index 6895de151f..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-auditlog.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Delete Audit Log -menuTitle: Delete Audit Log -weight: 2 ---- -## oasisctl delete auditlog - -Delete an auditlog - -``` -oasisctl delete auditlog [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog to delete. - -h, --help help for auditlog - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete auditlog archive](delete-auditlog-archive.md) - Delete an auditlog archive -* [oasisctl delete auditlog destination](delete-auditlog-destination.md) - Delete a destination from an auditlog - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-backup-policy.md b/site/content/3.13/arangograph/oasisctl/delete/delete-backup-policy.md deleted file mode 100644 index 99e8ac2deb..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-backup-policy.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Backup Policy -menuTitle: Delete Backup Policy -weight: 7 ---- -## oasisctl delete backup policy - -Delete a backup policy for a given ID. - -``` -oasisctl delete backup policy [flags] -``` - -## Options -``` - -h, --help help for policy - -i, --id string Identifier of the backup policy - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete backup](delete-backup.md) - Delete a backup for a given ID. - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-backup.md b/site/content/3.13/arangograph/oasisctl/delete/delete-backup.md deleted file mode 100644 index cf116f93a1..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-backup.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Backup -menuTitle: Delete Backup -weight: 6 ---- -## oasisctl delete backup - -Delete a backup for a given ID. - -``` -oasisctl delete backup [flags] -``` - -## Options -``` - -h, --help help for backup - -i, --id string Identifier of the backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete backup policy](delete-backup-policy.md) - Delete a backup policy for a given ID. - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-cacertificate.md b/site/content/3.13/arangograph/oasisctl/delete/delete-cacertificate.md deleted file mode 100644 index aad85c751b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-cacertificate.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete CA Certificate -menuTitle: Delete CA Certificate -weight: 8 ---- -## oasisctl delete cacertificate - -Delete a CA certificate the authenticated user has access to - -``` -oasisctl delete cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - -h, --help help for cacertificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-deployment.md b/site/content/3.13/arangograph/oasisctl/delete/delete-deployment.md deleted file mode 100644 index 15450ecb9b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-deployment.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Deployment -menuTitle: Delete Deployment -weight: 9 ---- -## oasisctl delete deployment - -Delete a deployment the authenticated user has access to - -``` -oasisctl delete deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-example-installation.md b/site/content/3.13/arangograph/oasisctl/delete/delete-example-installation.md deleted file mode 100644 index 569152227e..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-example-installation.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Delete Example Installation -menuTitle: Delete Example Installation -weight: 11 ---- -## oasisctl delete example installation - -Delete an example datasets installation - -``` -oasisctl delete example installation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to list installations for - -h, --help help for installation - --installation-id string The ID of the installation to delete. - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete example](delete-example.md) - Delete example ... - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-example.md b/site/content/3.13/arangograph/oasisctl/delete/delete-example.md deleted file mode 100644 index 9518b2d7d1..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-example.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Delete Example -menuTitle: Delete Example -weight: 10 ---- -## oasisctl delete example - -Delete example ... - -``` -oasisctl delete example [flags] -``` - -## Options -``` - -h, --help help for example -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete example installation](delete-example-installation.md) - Delete an example datasets installation - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-group-members.md b/site/content/3.13/arangograph/oasisctl/delete/delete-group-members.md deleted file mode 100644 index ae6dc82a96..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-group-members.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Group Members -menuTitle: Delete Group Members -weight: 13 ---- -## oasisctl delete group members - -Delete members from group - -``` -oasisctl delete group members [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group to delete members from - -h, --help help for members - -o, --organization-id string Identifier of the organization - -u, --user-emails strings A comma separated list of user email addresses -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete group](delete-group.md) - Delete a group the authenticated user has access to - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-group.md b/site/content/3.13/arangograph/oasisctl/delete/delete-group.md deleted file mode 100644 index 4f6fe7d91c..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-group.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Group -menuTitle: Delete Group -weight: 12 ---- -## oasisctl delete group - -Delete a group the authenticated user has access to - -``` -oasisctl delete group [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group - -h, --help help for group - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete group members](delete-group-members.md) - Delete members from group - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-ipallowlist.md b/site/content/3.13/arangograph/oasisctl/delete/delete-ipallowlist.md deleted file mode 100644 index 1806667457..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-ipallowlist.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete IP Allowlist -menuTitle: Delete IP Allowlist -weight: 14 ---- -## oasisctl delete ipallowlist - -Delete an IP allowlist the authenticated user has access to - -``` -oasisctl delete ipallowlist [flags] -``` - -## Options -``` - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-metrics-token.md b/site/content/3.13/arangograph/oasisctl/delete/delete-metrics-token.md deleted file mode 100644 index c18927e996..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-metrics-token.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Delete Metrics Token -menuTitle: Delete Metrics Token -weight: 16 ---- -## oasisctl delete metrics token - -Delete a metrics token for a deployment - -``` -oasisctl delete metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for token - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --token-id string Identifier of the metrics token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete metrics](delete-metrics.md) - Delete metrics resources - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-metrics.md b/site/content/3.13/arangograph/oasisctl/delete/delete-metrics.md deleted file mode 100644 index 36052afbce..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Delete Metrics -menuTitle: Delete Metrics -weight: 15 ---- -## oasisctl delete metrics - -Delete metrics resources - -``` -oasisctl delete metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete metrics token](delete-metrics-token.md) - Delete a metrics token for a deployment - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-notebook.md b/site/content/3.13/arangograph/oasisctl/delete/delete-notebook.md deleted file mode 100644 index 3992653923..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-notebook.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Delete Notebook -menuTitle: Delete Notebook -weight: 17 ---- -## oasisctl delete notebook - -Delete a notebook - -``` -oasisctl delete notebook [flags] -``` - -## Options -``` - -h, --help help for notebook - -n, --notebook-id string Identifier of the notebook -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-organization-invite.md b/site/content/3.13/arangograph/oasisctl/delete/delete-organization-invite.md deleted file mode 100644 index dae7596f39..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Organization Invite -menuTitle: Delete Organization Invite -weight: 19 ---- -## oasisctl delete organization invite - -Delete an organization invite the authenticated user has access to - -``` -oasisctl delete organization invite [flags] -``` - -## Options -``` - -h, --help help for invite - -i, --invite-id string Identifier of the organization invite - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete organization](delete-organization.md) - Delete an organization the authenticated user has access to - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-organization-members.md b/site/content/3.13/arangograph/oasisctl/delete/delete-organization-members.md deleted file mode 100644 index c3d4151366..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-organization-members.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Organization Members -menuTitle: Delete Organization Members -weight: 20 ---- -## oasisctl delete organization members - -Delete members from organization - -``` -oasisctl delete organization members [flags] -``` - -## Options -``` - -h, --help help for members - -o, --organization-id string Identifier of the organization - -u, --user-emails strings A comma separated list of user email addresses -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete organization](delete-organization.md) - Delete an organization the authenticated user has access to - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-organization.md b/site/content/3.13/arangograph/oasisctl/delete/delete-organization.md deleted file mode 100644 index 362056323c..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-organization.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Delete Organization -menuTitle: Delete Organization -weight: 18 ---- -## oasisctl delete organization - -Delete an organization the authenticated user has access to - -``` -oasisctl delete organization [flags] -``` - -## Options -``` - -h, --help help for organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources -* [oasisctl delete organization invite](delete-organization-invite.md) - Delete an organization invite the authenticated user has access to -* [oasisctl delete organization members](delete-organization-members.md) - Delete members from organization - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-project.md b/site/content/3.13/arangograph/oasisctl/delete/delete-project.md deleted file mode 100644 index 9b45160be9..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Project -menuTitle: Delete Project -weight: 21 ---- -## oasisctl delete project - -Delete a project the authenticated user has access to - -``` -oasisctl delete project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.13/arangograph/oasisctl/delete/delete-role.md b/site/content/3.13/arangograph/oasisctl/delete/delete-role.md deleted file mode 100644 index c8bcbb67f2..0000000000 --- a/site/content/3.13/arangograph/oasisctl/delete/delete-role.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Delete Role -menuTitle: Delete Role -weight: 22 ---- -## oasisctl delete role - -Delete a role the authenticated user has access to - -``` -oasisctl delete role [flags] -``` - -## Options -``` - -h, --help help for role - -o, --organization-id string Identifier of the organization - -r, --role-id string Identifier of the role -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl delete](_index.md) - Delete resources - diff --git a/site/content/3.13/arangograph/oasisctl/disable/_index.md b/site/content/3.13/arangograph/oasisctl/disable/_index.md deleted file mode 100644 index 916ad96f01..0000000000 --- a/site/content/3.13/arangograph/oasisctl/disable/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Disable -menuTitle: Disable -weight: 10 ---- -## oasisctl disable - -Disable some settings related to deployment - -``` -oasisctl disable [flags] -``` - -## Options -``` - -h, --help help for disable -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl disable scheduled-root-password-rotation](disable-scheduled-root-password-rotation.md) - Disable scheduled root password rotation - diff --git a/site/content/3.13/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md b/site/content/3.13/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md deleted file mode 100644 index 52ac637431..0000000000 --- a/site/content/3.13/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Disable Scheduled-Root-Password-Rotation -menuTitle: Disable Scheduled-Root-Password-Rotation -weight: 1 ---- -## oasisctl disable scheduled-root-password-rotation - -Disable scheduled root password rotation - -``` -oasisctl disable scheduled-root-password-rotation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for scheduled-root-password-rotation - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl disable](_index.md) - Disable some settings related to deployment - diff --git a/site/content/3.13/arangograph/oasisctl/enable/_index.md b/site/content/3.13/arangograph/oasisctl/enable/_index.md deleted file mode 100644 index 61a3b03d10..0000000000 --- a/site/content/3.13/arangograph/oasisctl/enable/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Enable -menuTitle: Enable -weight: 11 ---- -## oasisctl enable - -Enable some settings related to deployment - -``` -oasisctl enable [flags] -``` - -## Options -``` - -h, --help help for enable -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl enable scheduled-root-password-rotation](enable-scheduled-root-password-rotation.md) - Enable scheduled root password rotation - diff --git a/site/content/3.13/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md b/site/content/3.13/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md deleted file mode 100644 index 8628abc79c..0000000000 --- a/site/content/3.13/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Enable Scheduled-Root-Password-Rotation -menuTitle: Enable Scheduled-Root-Password-Rotation -weight: 1 ---- -## oasisctl enable scheduled-root-password-rotation - -Enable scheduled root password rotation - -``` -oasisctl enable scheduled-root-password-rotation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for scheduled-root-password-rotation - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl enable](_index.md) - Enable some settings related to deployment - diff --git a/site/content/3.13/arangograph/oasisctl/generate-docs.md b/site/content/3.13/arangograph/oasisctl/generate-docs.md deleted file mode 100644 index f1d83f8437..0000000000 --- a/site/content/3.13/arangograph/oasisctl/generate-docs.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Generate Documentation -menuTitle: Generate Documentation -weight: 12 ---- -## oasisctl generate-docs - -Generate output - -``` -oasisctl generate-docs [flags] -``` - -## Options -``` - -h, --help help for generate-docs - -l, --link-file-ext string What file extensions the links should point to - -o, --output-dir string Output directory (default "./docs") - -r, --replace-underscore-with string Replace the underscore in links with the given character -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.13/arangograph/oasisctl/get/_index.md b/site/content/3.13/arangograph/oasisctl/get/_index.md deleted file mode 100644 index 20021e7831..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/_index.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Oasisctl Get -menuTitle: Get -weight: 13 ---- -## oasisctl get - -Get information - -``` -oasisctl get [flags] -``` - -## Options -``` - -h, --help help for get -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl get auditlog](get-auditlog.md) - Get auditlog archive -* [oasisctl get backup](get-backup.md) - Get a backup -* [oasisctl get cacertificate](get-cacertificate.md) - Get a CA certificate the authenticated user has access to -* [oasisctl get deployment](get-deployment.md) - Get a deployment the authenticated user has access to -* [oasisctl get example](get-example.md) - Get a single example dataset -* [oasisctl get group](get-group.md) - Get a group the authenticated user has access to -* [oasisctl get ipallowlist](get-ipallowlist.md) - Get an IP allowlist the authenticated user has access to -* [oasisctl get metrics](get-metrics.md) - Get metrics information -* [oasisctl get notebook](get-notebook.md) - Get a notebook -* [oasisctl get organization](get-organization.md) - Get an organization the authenticated user is a member of -* [oasisctl get policy](get-policy.md) - Get a policy the authenticated user has access to -* [oasisctl get private](get-private.md) - Get private information -* [oasisctl get project](get-project.md) - Get a project the authenticated user has access to -* [oasisctl get provider](get-provider.md) - Get a provider the authenticated user has access to -* [oasisctl get region](get-region.md) - Get a region the authenticated user has access to -* [oasisctl get role](get-role.md) - Get a role the authenticated user has access to -* [oasisctl get self](get-self.md) - Get information about the authenticated user -* [oasisctl get server](get-server.md) - Get server information -* [oasisctl get tandc](get-tandc.md) - Get current terms and conditions or get one by ID - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-auditlog-archive.md b/site/content/3.13/arangograph/oasisctl/get/get-auditlog-archive.md deleted file mode 100644 index 546b9a55c4..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-auditlog-archive.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Audit Log Archive -menuTitle: Get Audit Log Archive -weight: 2 ---- -## oasisctl get auditlog archive - -Get auditlog archive - -``` -oasisctl get auditlog archive [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog - -h, --help help for archive -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get auditlog](get-auditlog.md) - Get auditlog archive - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-auditlog-events.md b/site/content/3.13/arangograph/oasisctl/get/get-auditlog-events.md deleted file mode 100644 index 44c9088765..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-auditlog-events.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Oasisctl Get Audit Log Events -menuTitle: Get Audit Log Events -weight: 3 ---- -## oasisctl get auditlog events - -Get auditlog events - -``` -oasisctl get auditlog events [flags] -``` - -## Options -``` - --auditlog-archive-id string If set, include only events from this AuditLogArchive - -i, --auditlog-id string Identifier of the auditlog - --excluded-topics strings If non-empty, leave out events with one of these topics. This takes priority over included - --from string Request events created at or after this timestamp - -h, --help help for events - --included-topics strings If non-empty, only request events with one of these topics - --limit int Limit the number of audit log events. Defaults to 0, meaning no limit - --to string Request events created before this timestamp -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get auditlog](get-auditlog.md) - Get auditlog archive - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-auditlog.md b/site/content/3.13/arangograph/oasisctl/get/get-auditlog.md deleted file mode 100644 index 025710b835..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-auditlog.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Audit Log -menuTitle: Get Audit Log -weight: 1 ---- -## oasisctl get auditlog - -Get auditlog archive - -``` -oasisctl get auditlog [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog - -h, --help help for auditlog - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get auditlog archive](get-auditlog-archive.md) - Get auditlog archive -* [oasisctl get auditlog events](get-auditlog-events.md) - Get auditlog events - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-backup-policy.md b/site/content/3.13/arangograph/oasisctl/get/get-backup-policy.md deleted file mode 100644 index 916ad22e61..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-backup-policy.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Backup Policy -menuTitle: Get Backup Policy -weight: 5 ---- -## oasisctl get backup policy - -Get an existing backup policy - -``` -oasisctl get backup policy [flags] -``` - -## Options -``` - -h, --help help for policy - -i, --id string Identifier of the backup policy (Id|Name|Url) -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get backup](get-backup.md) - Get a backup - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-backup.md b/site/content/3.13/arangograph/oasisctl/get/get-backup.md deleted file mode 100644 index 2792a98b02..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-backup.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Backup -menuTitle: Get Backup -weight: 4 ---- -## oasisctl get backup - -Get a backup - -``` -oasisctl get backup [flags] -``` - -## Options -``` - -h, --help help for backup - -i, --id string Identifier of the backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get backup policy](get-backup-policy.md) - Get an existing backup policy - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-cacertificate.md b/site/content/3.13/arangograph/oasisctl/get/get-cacertificate.md deleted file mode 100644 index 0be6d11e44..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-cacertificate.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get CA Certificate -menuTitle: Get CA Certificate -weight: 6 ---- -## oasisctl get cacertificate - -Get a CA certificate the authenticated user has access to - -``` -oasisctl get cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - -h, --help help for cacertificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-deployment.md b/site/content/3.13/arangograph/oasisctl/get/get-deployment.md deleted file mode 100644 index ab8d86e3d3..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-deployment.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Deployment -menuTitle: Get Deployment -weight: 7 ---- -## oasisctl get deployment - -Get a deployment the authenticated user has access to - -``` -oasisctl get deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --show-root-password show the root password of the database -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-example-installation.md b/site/content/3.13/arangograph/oasisctl/get/get-example-installation.md deleted file mode 100644 index 4190e8e288..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-example-installation.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Example Installation -menuTitle: Get Example Installation -weight: 9 ---- -## oasisctl get example installation - -Get a single example dataset installation - -``` -oasisctl get example installation [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to list installations for - -h, --help help for installation - --installation-id string The ID of the installation to get. - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get example](get-example.md) - Get a single example dataset - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-example.md b/site/content/3.13/arangograph/oasisctl/get/get-example.md deleted file mode 100644 index 1238d443ed..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-example.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Example -menuTitle: Get Example -weight: 8 ---- -## oasisctl get example - -Get a single example dataset - -``` -oasisctl get example [flags] -``` - -## Options -``` - -e, --example-dataset-id string ID of the example dataset - -h, --help help for example -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get example installation](get-example-installation.md) - Get a single example dataset installation - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-group.md b/site/content/3.13/arangograph/oasisctl/get/get-group.md deleted file mode 100644 index 9b8e72e16b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-group.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Group -menuTitle: Get Group -weight: 10 ---- -## oasisctl get group - -Get a group the authenticated user has access to - -``` -oasisctl get group [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group - -h, --help help for group - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-ipallowlist.md b/site/content/3.13/arangograph/oasisctl/get/get-ipallowlist.md deleted file mode 100644 index 379c324604..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-ipallowlist.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get IP Allowlist -menuTitle: Get IP Allowlist -weight: 11 ---- -## oasisctl get ipallowlist - -Get an IP allowlist the authenticated user has access to - -``` -oasisctl get ipallowlist [flags] -``` - -## Options -``` - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-metrics-token.md b/site/content/3.13/arangograph/oasisctl/get/get-metrics-token.md deleted file mode 100644 index 6226b02793..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-metrics-token.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Metrics Token -menuTitle: Get Metrics Token -weight: 13 ---- -## oasisctl get metrics token - -Get a metrics token - -``` -oasisctl get metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for token - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --token-id string Identifier of the metrics token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get metrics](get-metrics.md) - Get metrics information - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-metrics.md b/site/content/3.13/arangograph/oasisctl/get/get-metrics.md deleted file mode 100644 index f2699417aa..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Metrics -menuTitle: Get Metrics -weight: 12 ---- -## oasisctl get metrics - -Get metrics information - -``` -oasisctl get metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get metrics token](get-metrics-token.md) - Get a metrics token - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-notebook.md b/site/content/3.13/arangograph/oasisctl/get/get-notebook.md deleted file mode 100644 index 8526fb293a..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-notebook.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Notebook -menuTitle: Get Notebook -weight: 14 ---- -## oasisctl get notebook - -Get a notebook - -``` -oasisctl get notebook [flags] -``` - -## Options -``` - -h, --help help for notebook - -n, --notebook-id string Identifier of the notebook -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-organization-authentication-providers.md b/site/content/3.13/arangograph/oasisctl/get/get-organization-authentication-providers.md deleted file mode 100644 index da20b01a1a..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-organization-authentication-providers.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Authentication Providers -menuTitle: Get Organization Authentication Providers -weight: 17 ---- -## oasisctl get organization authentication providers - -Get which authentication providers are allowed for accessing a specific organization - -``` -oasisctl get organization authentication providers [flags] -``` - -## Options -``` - -h, --help help for providers - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization authentication](get-organization-authentication.md) - Get authentication specific information for an organization - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-organization-authentication.md b/site/content/3.13/arangograph/oasisctl/get/get-organization-authentication.md deleted file mode 100644 index cd16e2841b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-organization-authentication.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Authentication -menuTitle: Get Organization Authentication -weight: 16 ---- -## oasisctl get organization authentication - -Get authentication specific information for an organization - -``` -oasisctl get organization authentication [flags] -``` - -## Options -``` - -h, --help help for authentication -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization](get-organization.md) - Get an organization the authenticated user is a member of -* [oasisctl get organization authentication providers](get-organization-authentication-providers.md) - Get which authentication providers are allowed for accessing a specific organization - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md b/site/content/3.13/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md deleted file mode 100644 index 400ad06087..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Email Domain Restrictions -menuTitle: Get Organization Email Domain Restrictions -weight: 20 ---- -## oasisctl get organization email domain restrictions - -Get which email domain restrictions are placed on accessing a specific organization - -``` -oasisctl get organization email domain restrictions [flags] -``` - -## Options -``` - -h, --help help for restrictions - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization email domain](get-organization-email-domain.md) - Get email domain specific information for an organization - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-organization-email-domain.md b/site/content/3.13/arangograph/oasisctl/get/get-organization-email-domain.md deleted file mode 100644 index 305097e72f..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-organization-email-domain.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Email Domain -menuTitle: Get Organization Email Domain -weight: 19 ---- -## oasisctl get organization email domain - -Get email domain specific information for an organization - -``` -oasisctl get organization email domain [flags] -``` - -## Options -``` - -h, --help help for domain -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization email](get-organization-email.md) - Get email specific information for an organization -* [oasisctl get organization email domain restrictions](get-organization-email-domain-restrictions.md) - Get which email domain restrictions are placed on accessing a specific organization - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-organization-email.md b/site/content/3.13/arangograph/oasisctl/get/get-organization-email.md deleted file mode 100644 index 5ca941ffcd..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-organization-email.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Organization Email -menuTitle: Get Organization Email -weight: 18 ---- -## oasisctl get organization email - -Get email specific information for an organization - -``` -oasisctl get organization email [flags] -``` - -## Options -``` - -h, --help help for email -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization](get-organization.md) - Get an organization the authenticated user is a member of -* [oasisctl get organization email domain](get-organization-email-domain.md) - Get email domain specific information for an organization - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-organization-invite.md b/site/content/3.13/arangograph/oasisctl/get/get-organization-invite.md deleted file mode 100644 index 093ed06c05..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Organization Invite -menuTitle: Get Organization Invite -weight: 21 ---- -## oasisctl get organization invite - -Get an organization invite the authenticated user has access to - -``` -oasisctl get organization invite [flags] -``` - -## Options -``` - -h, --help help for invite - -i, --invite-id string Identifier of the organization invite - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get organization](get-organization.md) - Get an organization the authenticated user is a member of - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-organization.md b/site/content/3.13/arangograph/oasisctl/get/get-organization.md deleted file mode 100644 index b05c6201ab..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-organization.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Get Organization -menuTitle: Get Organization -weight: 15 ---- -## oasisctl get organization - -Get an organization the authenticated user is a member of - -``` -oasisctl get organization [flags] -``` - -## Options -``` - -h, --help help for organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get organization authentication](get-organization-authentication.md) - Get authentication specific information for an organization -* [oasisctl get organization email](get-organization-email.md) - Get email specific information for an organization -* [oasisctl get organization invite](get-organization-invite.md) - Get an organization invite the authenticated user has access to - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-policy.md b/site/content/3.13/arangograph/oasisctl/get/get-policy.md deleted file mode 100644 index 599e5601cb..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-policy.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Policy -menuTitle: Get Policy -weight: 22 ---- -## oasisctl get policy - -Get a policy the authenticated user has access to - -``` -oasisctl get policy [flags] -``` - -## Options -``` - -h, --help help for policy - -u, --url string URL of the resource to inspect the policy for -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-private-endpoint-service.md b/site/content/3.13/arangograph/oasisctl/get/get-private-endpoint-service.md deleted file mode 100644 index a9c56b8b0f..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-private-endpoint-service.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get Private Endpoint Service -menuTitle: Get Private Endpoint Service -weight: 25 ---- -## oasisctl get private endpoint service - -Get a Private Endpoint Service the authenticated user has access to - -``` -oasisctl get private endpoint service [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment that the private endpoint service is connected to - -h, --help help for service - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get private endpoint](get-private-endpoint.md) - - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-private-endpoint.md b/site/content/3.13/arangograph/oasisctl/get/get-private-endpoint.md deleted file mode 100644 index 38afeb2dd8..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-private-endpoint.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Private Endpoint -menuTitle: Get Private Endpoint -weight: 24 ---- -## oasisctl get private endpoint - - - -``` -oasisctl get private endpoint [flags] -``` - -## Options -``` - -h, --help help for endpoint -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get private](get-private.md) - Get private information -* [oasisctl get private endpoint service](get-private-endpoint-service.md) - Get a Private Endpoint Service the authenticated user has access to - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-private.md b/site/content/3.13/arangograph/oasisctl/get/get-private.md deleted file mode 100644 index e84921fd32..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-private.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Private -menuTitle: Get Private -weight: 23 ---- -## oasisctl get private - -Get private information - -``` -oasisctl get private [flags] -``` - -## Options -``` - -h, --help help for private -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get private endpoint](get-private-endpoint.md) - - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-project.md b/site/content/3.13/arangograph/oasisctl/get/get-project.md deleted file mode 100644 index 5bfb087e53..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Project -menuTitle: Get Project -weight: 26 ---- -## oasisctl get project - -Get a project the authenticated user has access to - -``` -oasisctl get project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-provider.md b/site/content/3.13/arangograph/oasisctl/get/get-provider.md deleted file mode 100644 index da7d632e1b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-provider.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Provider -menuTitle: Get Provider -weight: 27 ---- -## oasisctl get provider - -Get a provider the authenticated user has access to - -``` -oasisctl get provider [flags] -``` - -## Options -``` - -h, --help help for provider - -o, --organization-id string Optional Identifier of the organization - -p, --provider-id string Identifier of the provider -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-region.md b/site/content/3.13/arangograph/oasisctl/get/get-region.md deleted file mode 100644 index 25ca81e867..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-region.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get Region -menuTitle: Get Region -weight: 28 ---- -## oasisctl get region - -Get a region the authenticated user has access to - -``` -oasisctl get region [flags] -``` - -## Options -``` - -h, --help help for region - -o, --organization-id string Optional Identifier of the organization - -p, --provider-id string Identifier of the provider - -r, --region-id string Identifier of the region -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-role.md b/site/content/3.13/arangograph/oasisctl/get/get-role.md deleted file mode 100644 index 898605e245..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-role.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Role -menuTitle: Get Role -weight: 29 ---- -## oasisctl get role - -Get a role the authenticated user has access to - -``` -oasisctl get role [flags] -``` - -## Options -``` - -h, --help help for role - -o, --organization-id string Identifier of the organization - -r, --role-id string Identifier of the role -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-self.md b/site/content/3.13/arangograph/oasisctl/get/get-self.md deleted file mode 100644 index 26d48ad423..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-self.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl Get Self -menuTitle: Get Self -weight: 30 ---- -## oasisctl get self - -Get information about the authenticated user - -``` -oasisctl get self [flags] -``` - -## Options -``` - -h, --help help for self -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-server-status.md b/site/content/3.13/arangograph/oasisctl/get/get-server-status.md deleted file mode 100644 index 302fb17a1d..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-server-status.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Get Server Status -menuTitle: Get Server Status -weight: 32 ---- -## oasisctl get server status - -Get the status of servers for a deployment - -``` -oasisctl get server status [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for status - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get server](get-server.md) - Get server information - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-server.md b/site/content/3.13/arangograph/oasisctl/get/get-server.md deleted file mode 100644 index ad54b9dfd2..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-server.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Get Server -menuTitle: Get Server -weight: 31 ---- -## oasisctl get server - -Get server information - -``` -oasisctl get server [flags] -``` - -## Options -``` - -h, --help help for server -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information -* [oasisctl get server status](get-server-status.md) - Get the status of servers for a deployment - diff --git a/site/content/3.13/arangograph/oasisctl/get/get-tandc.md b/site/content/3.13/arangograph/oasisctl/get/get-tandc.md deleted file mode 100644 index c33b546252..0000000000 --- a/site/content/3.13/arangograph/oasisctl/get/get-tandc.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Get Terms & Conditions -menuTitle: Get Terms & Conditions -weight: 33 ---- -## oasisctl get tandc - -Get current terms and conditions or get one by ID - -``` -oasisctl get tandc [flags] -``` - -## Options -``` - -h, --help help for tandc - -o, --organization-id string Identifier of the organization - -t, --terms-and-conditions-id string Identifier of the terms and conditions to accept. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl get](_index.md) - Get information - diff --git a/site/content/3.13/arangograph/oasisctl/import.md b/site/content/3.13/arangograph/oasisctl/import.md deleted file mode 100644 index 385375d640..0000000000 --- a/site/content/3.13/arangograph/oasisctl/import.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Oasisctl Import -menuTitle: Import -weight: 14 ---- -## oasisctl import - -Import data from a local database or from another remote database into an Oasis deployment. - -``` -oasisctl import [flags] -``` - -## Options -``` - -b, --batch-size int The number of documents to write at once. (default 4096) - -d, --destination-deployment-id string Destination deployment id to import data into. It can be provided instead of address, username and password. - --excluded-collection strings A list of collections names which should be excluded. Exclusion takes priority over inclusion. - --excluded-database strings A list of database names which should be excluded. Exclusion takes priority over inclusion. - --excluded-graph strings A list of graph names which should be excluded. Exclusion takes priority over inclusion. - --excluded-view strings A list of view names which should be excluded. Exclusion takes priority over inclusion. - -f, --force Force the copy automatically overwriting everything at destination. - -h, --help help for import - --included-collection strings A list of collection names which should be included. If provided, only these collections will be copied. - --included-database strings A list of database names which should be included. If provided, only these databases will be copied. - --included-graph strings A list of graph names which should be included. If provided, only these graphs will be copied. - --included-view strings A list of view names which should be included. If provided, only these views will be copied. - -r, --max-retries int The number of maximum retries attempts. Increasing this number will also increase the exponential fallback timer. (default 9) - -m, --maximum-parallel-collections int Maximum number of collections being copied in parallel. (default 10) - --no-progress-bar Disable the progress bar but still have partial progress output. - --query-ttl duration Cursor TTL defined as a duration. (default 2h0m0s) - --source-address string Source database address to copy data from. - --source-password string Source database password if required. - --source-username string Source database username if required. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.13/arangograph/oasisctl/list/_index.md b/site/content/3.13/arangograph/oasisctl/list/_index.md deleted file mode 100644 index b8a7496441..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/_index.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Oasisctl List -menuTitle: List -weight: 15 ---- -## oasisctl list - -List resources - -``` -oasisctl list [flags] -``` - -## Options -``` - -h, --help help for list -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl list apikeys](list-apikeys.md) - List all API keys created for the current user -* [oasisctl list arangodb](list-arangodb.md) - List ArangoDB information -* [oasisctl list auditlog](list-auditlog.md) - List resources for auditlogs -* [oasisctl list auditlogs](list-auditlogs.md) - List auditlogs -* [oasisctl list backup](list-backup.md) - A list command for various backup resources -* [oasisctl list backups](list-backups.md) - List backups -* [oasisctl list cacertificates](list-cacertificates.md) - List all CA certificates of the given project -* [oasisctl list cpusizes](list-cpusizes.md) - List CPU sizes -* [oasisctl list deployments](list-deployments.md) - List all deployments of the given project -* [oasisctl list diskperformances](list-diskperformances.md) - List disk performances -* [oasisctl list effective](list-effective.md) - List effective information -* [oasisctl list example](list-example.md) - List example ... -* [oasisctl list examples](list-examples.md) - List all example datasets -* [oasisctl list group](list-group.md) - List group resources -* [oasisctl list groups](list-groups.md) - List all groups of the given organization -* [oasisctl list ipallowlists](list-ipallowlists.md) - List all IP allowlists of the given project -* [oasisctl list metrics](list-metrics.md) - List metrics resources -* [oasisctl list nodesizes](list-nodesizes.md) - List node sizes -* [oasisctl list notebookmodels](list-notebookmodels.md) - List notebook models -* [oasisctl list notebooks](list-notebooks.md) - List notebooks -* [oasisctl list organization](list-organization.md) - List organization resources -* [oasisctl list organizations](list-organizations.md) - List all organizations the authenticated user is a member of -* [oasisctl list permissions](list-permissions.md) - List the known permissions -* [oasisctl list projects](list-projects.md) - List all projects of the given organization -* [oasisctl list providers](list-providers.md) - List all providers the authenticated user has access to -* [oasisctl list regions](list-regions.md) - List all regions of the given provider -* [oasisctl list roles](list-roles.md) - List all roles of the given organization -* [oasisctl list servers](list-servers.md) - List servers information - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-apikeys.md b/site/content/3.13/arangograph/oasisctl/list/list-apikeys.md deleted file mode 100644 index 44984cb38b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-apikeys.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl List API Keys -menuTitle: List API Keys -weight: 1 ---- -## oasisctl list apikeys - -List all API keys created for the current user - -``` -oasisctl list apikeys [flags] -``` - -## Options -``` - -h, --help help for apikeys -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-arangodb-versions.md b/site/content/3.13/arangograph/oasisctl/list/list-arangodb-versions.md deleted file mode 100644 index 22411cf8a8..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-arangodb-versions.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List ArangoDB Versions -menuTitle: List ArangoDB Versions -weight: 3 ---- -## oasisctl list arangodb versions - -List all supported ArangoDB versions - -``` -oasisctl list arangodb versions [flags] -``` - -## Options -``` - -h, --help help for versions - -o, --organization-id string Optional Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list arangodb](list-arangodb.md) - List ArangoDB information - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-arangodb.md b/site/content/3.13/arangograph/oasisctl/list/list-arangodb.md deleted file mode 100644 index 04445b917d..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-arangodb.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List ArangoDB -menuTitle: List ArangoDB -weight: 2 ---- -## oasisctl list arangodb - -List ArangoDB information - -``` -oasisctl list arangodb [flags] -``` - -## Options -``` - -h, --help help for arangodb -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list arangodb versions](list-arangodb-versions.md) - List all supported ArangoDB versions - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-auditlog-archives.md b/site/content/3.13/arangograph/oasisctl/list/list-auditlog-archives.md deleted file mode 100644 index efe237a2b6..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-auditlog-archives.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Audit Log Archives -menuTitle: List Audit Log Archives -weight: 5 ---- -## oasisctl list auditlog archives - -List auditlog archives - -``` -oasisctl list auditlog archives [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog - -h, --help help for archives - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list auditlog](list-auditlog.md) - List resources for auditlogs - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-auditlog-destinations.md b/site/content/3.13/arangograph/oasisctl/list/list-auditlog-destinations.md deleted file mode 100644 index f6fc395ce0..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-auditlog-destinations.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Audit Log Destinations -menuTitle: List Audit Log Destinations -weight: 6 ---- -## oasisctl list auditlog destinations - -List auditlog destinations - -``` -oasisctl list auditlog destinations [flags] -``` - -## Options -``` - --auditlog-id string Identifier of the auditlog to list the destinations for - -h, --help help for destinations - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list auditlog](list-auditlog.md) - List resources for auditlogs - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-auditlog.md b/site/content/3.13/arangograph/oasisctl/list/list-auditlog.md deleted file mode 100644 index 4a86f9969e..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-auditlog.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Audit Log -menuTitle: List Audit Log -weight: 4 ---- -## oasisctl list auditlog - -List resources for auditlogs - -``` -oasisctl list auditlog [flags] -``` - -## Options -``` - -h, --help help for auditlog -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list auditlog archives](list-auditlog-archives.md) - List auditlog archives -* [oasisctl list auditlog destinations](list-auditlog-destinations.md) - List auditlog destinations - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-auditlogs.md b/site/content/3.13/arangograph/oasisctl/list/list-auditlogs.md deleted file mode 100644 index 83e17ba2e2..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-auditlogs.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Audit Logs -menuTitle: List Audit Logs -weight: 7 ---- -## oasisctl list auditlogs - -List auditlogs - -``` -oasisctl list auditlogs [flags] -``` - -## Options -``` - -h, --help help for auditlogs - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-backup-policies.md b/site/content/3.13/arangograph/oasisctl/list/list-backup-policies.md deleted file mode 100644 index ec1b895990..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-backup-policies.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Backup Policies -menuTitle: List Backup Policies -weight: 9 ---- -## oasisctl list backup policies - -List backup policies - -``` -oasisctl list backup policies [flags] -``` - -## Options -``` - --deployment-id string The ID of the deployment to list backup policies for - -h, --help help for policies - --include-deleted If set, the result includes all backup policies, including those who set to deleted, however are not removed from the system currently -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list backup](list-backup.md) - A list command for various backup resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-backup.md b/site/content/3.13/arangograph/oasisctl/list/list-backup.md deleted file mode 100644 index 3c0b2d78a8..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-backup.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Backup -menuTitle: List Backup -weight: 8 ---- -## oasisctl list backup - -A list command for various backup resources - -``` -oasisctl list backup [flags] -``` - -## Options -``` - -h, --help help for backup -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list backup policies](list-backup-policies.md) - List backup policies - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-backups.md b/site/content/3.13/arangograph/oasisctl/list/list-backups.md deleted file mode 100644 index ace03c781e..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-backups.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Backups -menuTitle: List Backups -weight: 10 ---- -## oasisctl list backups - -List backups - -``` -oasisctl list backups [flags] -``` - -## Options -``` - --deployment-id string The ID of the deployment to list backups for - --from string Request backups that are created at or after this timestamp - -h, --help help for backups - --to string Request backups that are created before this timestamp -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-cacertificates.md b/site/content/3.13/arangograph/oasisctl/list/list-cacertificates.md deleted file mode 100644 index 903063bb34..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-cacertificates.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List CA Certificates -menuTitle: List CA Certificates -weight: 11 ---- -## oasisctl list cacertificates - -List all CA certificates of the given project - -``` -oasisctl list cacertificates [flags] -``` - -## Options -``` - -h, --help help for cacertificates - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-cpusizes.md b/site/content/3.13/arangograph/oasisctl/list/list-cpusizes.md deleted file mode 100644 index 85188eac3b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-cpusizes.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List CPU Sizes -menuTitle: List CPU Sizes -weight: 12 ---- -## oasisctl list cpusizes - -List CPU sizes - -``` -oasisctl list cpusizes [flags] -``` - -## Options -``` - -h, --help help for cpusizes - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --provider-id string Identifier of the provider -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-deployments.md b/site/content/3.13/arangograph/oasisctl/list/list-deployments.md deleted file mode 100644 index 66b3d739d2..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-deployments.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Deployments -menuTitle: List Deployments -weight: 13 ---- -## oasisctl list deployments - -List all deployments of the given project - -``` -oasisctl list deployments [flags] -``` - -## Options -``` - -h, --help help for deployments - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-diskperformances.md b/site/content/3.13/arangograph/oasisctl/list/list-diskperformances.md deleted file mode 100644 index ddbd5714c0..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-diskperformances.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl List Disk Performances -menuTitle: List Disk Performances -weight: 14 ---- -## oasisctl list diskperformances - -List disk performances - -``` -oasisctl list diskperformances [flags] -``` - -## Options -``` - --dbserver-disk-size int32 The disk size of DB-Servers (GiB) (default 32) - -h, --help help for diskperformances - --node-size-id string Identifier of the node size - -o, --organization-id string Identifier of the organization - --provider-id string Identifier of the provider - -r, --region-id string Identifier of the region -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-effective-permissions.md b/site/content/3.13/arangograph/oasisctl/list/list-effective-permissions.md deleted file mode 100644 index 394cc1006e..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-effective-permissions.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Effective Permissions -menuTitle: List Effective Permissions -weight: 16 ---- -## oasisctl list effective permissions - -List the effective permissions, the authenticated user has for a given URL - -``` -oasisctl list effective permissions [flags] -``` - -## Options -``` - -h, --help help for permissions - -u, --url string URL of resource to get effective permissions for -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list effective](list-effective.md) - List effective information - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-effective.md b/site/content/3.13/arangograph/oasisctl/list/list-effective.md deleted file mode 100644 index 431f601dc1..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-effective.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Effective -menuTitle: List Effective -weight: 15 ---- -## oasisctl list effective - -List effective information - -``` -oasisctl list effective [flags] -``` - -## Options -``` - -h, --help help for effective -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list effective permissions](list-effective-permissions.md) - List the effective permissions, the authenticated user has for a given URL - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-example-installations.md b/site/content/3.13/arangograph/oasisctl/list/list-example-installations.md deleted file mode 100644 index 5a9167f5b9..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-example-installations.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Example Installations -menuTitle: List Example Installations -weight: 18 ---- -## oasisctl list example installations - -List all example dataset installations for a deployment - -``` -oasisctl list example installations [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment to list installations for - -h, --help help for installations - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list example](list-example.md) - List example ... - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-example.md b/site/content/3.13/arangograph/oasisctl/list/list-example.md deleted file mode 100644 index e389b299c2..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-example.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Example -menuTitle: List Example -weight: 17 ---- -## oasisctl list example - -List example ... - -``` -oasisctl list example [flags] -``` - -## Options -``` - -h, --help help for example -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list example installations](list-example-installations.md) - List all example dataset installations for a deployment - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-examples.md b/site/content/3.13/arangograph/oasisctl/list/list-examples.md deleted file mode 100644 index 1cc1d11b86..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-examples.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Examples -menuTitle: List Examples -weight: 19 ---- -## oasisctl list examples - -List all example datasets - -``` -oasisctl list examples [flags] -``` - -## Options -``` - -h, --help help for examples - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-group-members.md b/site/content/3.13/arangograph/oasisctl/list/list-group-members.md deleted file mode 100644 index 6bc87e0b73..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-group-members.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Group Members -menuTitle: List Group Members -weight: 21 ---- -## oasisctl list group members - -List members of a group the authenticated user is a member of - -``` -oasisctl list group members [flags] -``` - -## Options -``` - -g, --group-id string Identifier of the group - -h, --help help for members - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list group](list-group.md) - List group resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-group.md b/site/content/3.13/arangograph/oasisctl/list/list-group.md deleted file mode 100644 index 28f5caa79d..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-group.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Group -menuTitle: List Group -weight: 20 ---- -## oasisctl list group - -List group resources - -``` -oasisctl list group [flags] -``` - -## Options -``` - -h, --help help for group -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list group members](list-group-members.md) - List members of a group the authenticated user is a member of - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-groups.md b/site/content/3.13/arangograph/oasisctl/list/list-groups.md deleted file mode 100644 index 8908ae0fb3..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-groups.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Groups -menuTitle: List Groups -weight: 22 ---- -## oasisctl list groups - -List all groups of the given organization - -``` -oasisctl list groups [flags] -``` - -## Options -``` - -h, --help help for groups - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-ipallowlists.md b/site/content/3.13/arangograph/oasisctl/list/list-ipallowlists.md deleted file mode 100644 index 33ef91495d..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-ipallowlists.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List IP Allowlists -menuTitle: List IP Allowlists -weight: 23 ---- -## oasisctl list ipallowlists - -List all IP allowlists of the given project - -``` -oasisctl list ipallowlists [flags] -``` - -## Options -``` - -h, --help help for ipallowlists - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-metrics-tokens.md b/site/content/3.13/arangograph/oasisctl/list/list-metrics-tokens.md deleted file mode 100644 index ce1713add8..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-metrics-tokens.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Metrics Tokens -menuTitle: List Metrics Tokens -weight: 25 ---- -## oasisctl list metrics tokens - -List all metrics tokens of the given deployment - -``` -oasisctl list metrics tokens [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for tokens - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list metrics](list-metrics.md) - List metrics resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-metrics.md b/site/content/3.13/arangograph/oasisctl/list/list-metrics.md deleted file mode 100644 index fe3a321be3..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Metrics -menuTitle: List Metrics -weight: 24 ---- -## oasisctl list metrics - -List metrics resources - -``` -oasisctl list metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list metrics tokens](list-metrics-tokens.md) - List all metrics tokens of the given deployment - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-nodesizes.md b/site/content/3.13/arangograph/oasisctl/list/list-nodesizes.md deleted file mode 100644 index 60c0bc9d56..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-nodesizes.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl List Node Sizes -menuTitle: List Node Sizes -weight: 26 ---- -## oasisctl list nodesizes - -List node sizes - -``` -oasisctl list nodesizes [flags] -``` - -## Options -``` - -h, --help help for nodesizes - --model string Identifier of the model (default "oneshard") - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --provider-id string Identifier of the provider - -r, --region-id string Identifier of the region -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-notebookmodels.md b/site/content/3.13/arangograph/oasisctl/list/list-notebookmodels.md deleted file mode 100644 index cdca9cb6a5..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-notebookmodels.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Notebook Models -menuTitle: List Notebook Models -weight: 27 ---- -## oasisctl list notebookmodels - -List notebook models - -``` -oasisctl list notebookmodels [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment that the notebook has to run next to - -h, --help help for notebookmodels - -o, --organization-id string Identifier of the organization that deployment is in - -p, --project-id string Identifier of the project that deployment is in -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-notebooks.md b/site/content/3.13/arangograph/oasisctl/list/list-notebooks.md deleted file mode 100644 index 29aa77467f..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-notebooks.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl List Notebooks -menuTitle: List Notebooks -weight: 28 ---- -## oasisctl list notebooks - -List notebooks - -``` -oasisctl list notebooks [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment that the notebooks run next to - -h, --help help for notebooks - -o, --organization-id string Identifier of the organization that has notebooks - -p, --project-id string Identifier of the project that has notebooks -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-organization-invites.md b/site/content/3.13/arangograph/oasisctl/list/list-organization-invites.md deleted file mode 100644 index d3fbe58668..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-organization-invites.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Organization Invites -menuTitle: List Organization Invites -weight: 30 ---- -## oasisctl list organization invites - -List invites of an organization the authenticated user is a member of - -``` -oasisctl list organization invites [flags] -``` - -## Options -``` - -h, --help help for invites - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list organization](list-organization.md) - List organization resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-organization-members.md b/site/content/3.13/arangograph/oasisctl/list/list-organization-members.md deleted file mode 100644 index f143d66886..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-organization-members.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Organization Members -menuTitle: List Organization Members -weight: 31 ---- -## oasisctl list organization members - -List members of an organization the authenticated user is a member of - -``` -oasisctl list organization members [flags] -``` - -## Options -``` - -h, --help help for members - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list organization](list-organization.md) - List organization resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-organization.md b/site/content/3.13/arangograph/oasisctl/list/list-organization.md deleted file mode 100644 index c41e4a9750..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-organization.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Organization -menuTitle: List Organization -weight: 29 ---- -## oasisctl list organization - -List organization resources - -``` -oasisctl list organization [flags] -``` - -## Options -``` - -h, --help help for organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources -* [oasisctl list organization invites](list-organization-invites.md) - List invites of an organization the authenticated user is a member of -* [oasisctl list organization members](list-organization-members.md) - List members of an organization the authenticated user is a member of - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-organizations.md b/site/content/3.13/arangograph/oasisctl/list/list-organizations.md deleted file mode 100644 index 7cde4a6da1..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-organizations.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl List Organizations -menuTitle: List Organizations -weight: 32 ---- -## oasisctl list organizations - -List all organizations the authenticated user is a member of - -``` -oasisctl list organizations [flags] -``` - -## Options -``` - -h, --help help for organizations -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-permissions.md b/site/content/3.13/arangograph/oasisctl/list/list-permissions.md deleted file mode 100644 index db4c2bd43c..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-permissions.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl List Permissions -menuTitle: List Permissions -weight: 33 ---- -## oasisctl list permissions - -List the known permissions - -``` -oasisctl list permissions [flags] -``` - -## Options -``` - -h, --help help for permissions -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-projects.md b/site/content/3.13/arangograph/oasisctl/list/list-projects.md deleted file mode 100644 index 959e80a2fa..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-projects.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Projects -menuTitle: List Projects -weight: 34 ---- -## oasisctl list projects - -List all projects of the given organization - -``` -oasisctl list projects [flags] -``` - -## Options -``` - -h, --help help for projects - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-providers.md b/site/content/3.13/arangograph/oasisctl/list/list-providers.md deleted file mode 100644 index 1b9c90f744..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-providers.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Providers -menuTitle: List Providers -weight: 35 ---- -## oasisctl list providers - -List all providers the authenticated user has access to - -``` -oasisctl list providers [flags] -``` - -## Options -``` - -h, --help help for providers - -o, --organization-id string Optional Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-regions.md b/site/content/3.13/arangograph/oasisctl/list/list-regions.md deleted file mode 100644 index 083b85a4a5..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-regions.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl List Regions -menuTitle: List Regions -weight: 36 ---- -## oasisctl list regions - -List all regions of the given provider - -``` -oasisctl list regions [flags] -``` - -## Options -``` - -h, --help help for regions - -o, --organization-id string Optional Identifier of the organization - -p, --provider-id string Identifier of the provider -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-roles.md b/site/content/3.13/arangograph/oasisctl/list/list-roles.md deleted file mode 100644 index ffa2a3ee89..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-roles.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl List Roles -menuTitle: List Roles -weight: 37 ---- -## oasisctl list roles - -List all roles of the given organization - -``` -oasisctl list roles [flags] -``` - -## Options -``` - -h, --help help for roles - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/list/list-servers.md b/site/content/3.13/arangograph/oasisctl/list/list-servers.md deleted file mode 100644 index f1e3a5f636..0000000000 --- a/site/content/3.13/arangograph/oasisctl/list/list-servers.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl List Servers -menuTitle: List Servers -weight: 38 ---- -## oasisctl list servers - -List servers information - -``` -oasisctl list servers [flags] -``` - -## Options -``` - -h, --help help for servers -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl list](_index.md) - List resources - diff --git a/site/content/3.13/arangograph/oasisctl/lock/_index.md b/site/content/3.13/arangograph/oasisctl/lock/_index.md deleted file mode 100644 index 1b432aa982..0000000000 --- a/site/content/3.13/arangograph/oasisctl/lock/_index.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Lock -menuTitle: Lock -weight: 16 ---- -## oasisctl lock - -Lock resources - -``` -oasisctl lock [flags] -``` - -## Options -``` - -h, --help help for lock -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl lock cacertificate](lock-cacertificate.md) - Lock a CA certificate, so it cannot be deleted -* [oasisctl lock deployment](lock-deployment.md) - Lock a deployment, so it cannot be deleted -* [oasisctl lock ipallowlist](lock-ipallowlist.md) - Lock an IP allowlist, so it cannot be deleted -* [oasisctl lock organization](lock-organization.md) - Lock an organization, so it cannot be deleted -* [oasisctl lock policy](lock-policy.md) - Lock a backup policy -* [oasisctl lock project](lock-project.md) - Lock a project, so it cannot be deleted - diff --git a/site/content/3.13/arangograph/oasisctl/lock/lock-cacertificate.md b/site/content/3.13/arangograph/oasisctl/lock/lock-cacertificate.md deleted file mode 100644 index 274471190b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/lock/lock-cacertificate.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Lock CA Certificate -menuTitle: Lock CA Certificate -weight: 1 ---- -## oasisctl lock cacertificate - -Lock a CA certificate, so it cannot be deleted - -``` -oasisctl lock cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - -h, --help help for cacertificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.13/arangograph/oasisctl/lock/lock-deployment.md b/site/content/3.13/arangograph/oasisctl/lock/lock-deployment.md deleted file mode 100644 index 3a64c29d17..0000000000 --- a/site/content/3.13/arangograph/oasisctl/lock/lock-deployment.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Lock Deployment -menuTitle: Lock Deployment -weight: 2 ---- -## oasisctl lock deployment - -Lock a deployment, so it cannot be deleted - -``` -oasisctl lock deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.13/arangograph/oasisctl/lock/lock-ipallowlist.md b/site/content/3.13/arangograph/oasisctl/lock/lock-ipallowlist.md deleted file mode 100644 index 9f4460b2e2..0000000000 --- a/site/content/3.13/arangograph/oasisctl/lock/lock-ipallowlist.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Lock IP Allowlist -menuTitle: Lock IP Allowlist -weight: 3 ---- -## oasisctl lock ipallowlist - -Lock an IP allowlist, so it cannot be deleted - -``` -oasisctl lock ipallowlist [flags] -``` - -## Options -``` - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.13/arangograph/oasisctl/lock/lock-organization.md b/site/content/3.13/arangograph/oasisctl/lock/lock-organization.md deleted file mode 100644 index e65abeea81..0000000000 --- a/site/content/3.13/arangograph/oasisctl/lock/lock-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Lock Organization -menuTitle: Lock Organization -weight: 4 ---- -## oasisctl lock organization - -Lock an organization, so it cannot be deleted - -``` -oasisctl lock organization [flags] -``` - -## Options -``` - -h, --help help for organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.13/arangograph/oasisctl/lock/lock-policy.md b/site/content/3.13/arangograph/oasisctl/lock/lock-policy.md deleted file mode 100644 index 8b70ed3617..0000000000 --- a/site/content/3.13/arangograph/oasisctl/lock/lock-policy.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Lock Policy -menuTitle: Lock Policy -weight: 5 ---- -## oasisctl lock policy - -Lock a backup policy - -``` -oasisctl lock policy [flags] -``` - -## Options -``` - -d, --backup-policy-id string Identifier of the backup policy - -h, --help help for policy -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.13/arangograph/oasisctl/lock/lock-project.md b/site/content/3.13/arangograph/oasisctl/lock/lock-project.md deleted file mode 100644 index f71ac58f82..0000000000 --- a/site/content/3.13/arangograph/oasisctl/lock/lock-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Lock Project -menuTitle: Lock Project -weight: 6 ---- -## oasisctl lock project - -Lock a project, so it cannot be deleted - -``` -oasisctl lock project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl lock](_index.md) - Lock resources - diff --git a/site/content/3.13/arangograph/oasisctl/login.md b/site/content/3.13/arangograph/oasisctl/login.md deleted file mode 100644 index a507d3e942..0000000000 --- a/site/content/3.13/arangograph/oasisctl/login.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Oasisctl Login -menuTitle: Login -weight: 17 ---- -## oasisctl login - -Login to ArangoDB Oasis using an API key - -## Synopsis -To authenticate in a script environment, run: - - export OASIS_TOKEN=$(oasisctl login --key-id=<your-key-id> --key-secret=<your-key-secret>) - - -``` -oasisctl login [flags] -``` - -## Options -``` - -h, --help help for login - -i, --key-id string API key identifier - -s, --key-secret string API key secret -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.13/arangograph/oasisctl/logs.md b/site/content/3.13/arangograph/oasisctl/logs.md deleted file mode 100644 index 71f2555f94..0000000000 --- a/site/content/3.13/arangograph/oasisctl/logs.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Oasisctl Logs -menuTitle: Logs -weight: 18 ---- -## oasisctl logs - -Get logs of the servers of a deployment the authenticated user has access to - -``` -oasisctl logs [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - --end string End fetching logs at this timestamp (pass timestamp or duration before now) - --format string Formatting of the log output. It can be one of two: text, json. Text is the default value. (default "text") - -h, --help help for logs - -l, --limit int Limit the number of log lines - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -r, --role string Limit logs to servers with given role only (agents|coordinators|dbservers) - --start string Start fetching logs from this timestamp (pass timestamp or duration before now) -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.13/arangograph/oasisctl/options.md b/site/content/3.13/arangograph/oasisctl/options.md deleted file mode 100644 index 75823ecb85..0000000000 --- a/site/content/3.13/arangograph/oasisctl/options.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -description: Command-line client tool for managing ArangoGraph -title: ArangoGraph Shell oasisctl -menuTitle: Options -weight: 1 ---- -## oasisctl - -ArangoGraph Insights Platform - -## Synopsis -ArangoGraph Insights Platform (formerly called Oasis): The Managed Cloud for ArangoDB - -``` -oasisctl [flags] -``` - -## Options -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - -h, --help help for oasisctl - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl accept](accept/_index.md) - Accept invites -* [oasisctl add](add/_index.md) - Add resources -* [oasisctl auditlog](auditlog/_index.md) - AuditLog resources -* [oasisctl backup](backup/_index.md) - Backup commands -* [oasisctl clone](clone/_index.md) - Clone resources -* [oasisctl completion](completion.md) - Generates bash completion scripts -* [oasisctl create](create/_index.md) - Create resources -* [oasisctl delete](delete/_index.md) - Delete resources -* [oasisctl disable](disable/_index.md) - Disable some settings related to deployment -* [oasisctl enable](enable/_index.md) - Enable some settings related to deployment -* [oasisctl generate-docs](generate-docs.md) - Generate output -* [oasisctl get](get/_index.md) - Get information -* [oasisctl import](import.md) - Import data from a local database or from another remote database into an Oasis deployment. -* [oasisctl list](list/_index.md) - List resources -* [oasisctl lock](lock/_index.md) - Lock resources -* [oasisctl login](login.md) - Login to ArangoDB Oasis using an API key -* [oasisctl logs](logs.md) - Get logs of the servers of a deployment the authenticated user has access to -* [oasisctl pause](pause/_index.md) - Pause resources -* [oasisctl rebalance](rebalance/_index.md) - Rebalance resources -* [oasisctl reject](reject/_index.md) - Reject invites -* [oasisctl renew](renew/_index.md) - Renew keys & tokens -* [oasisctl resume](resume/_index.md) - Resume resources -* [oasisctl revoke](revoke/_index.md) - Revoke keys & tokens -* [oasisctl rotate](rotate/_index.md) - Rotate resources -* [oasisctl top](top.md) - Show the most important server metrics -* [oasisctl unlock](unlock/_index.md) - Unlock resources -* [oasisctl update](update/_index.md) - Update resources -* [oasisctl upgrade](upgrade.md) - Upgrade Oasisctl tool -* [oasisctl version](version.md) - Show the current version of this tool -* [oasisctl wait](wait/_index.md) - Wait for a status change - diff --git a/site/content/3.13/arangograph/oasisctl/pause/_index.md b/site/content/3.13/arangograph/oasisctl/pause/_index.md deleted file mode 100644 index ce02e840c5..0000000000 --- a/site/content/3.13/arangograph/oasisctl/pause/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Pause -menuTitle: Pause -weight: 19 ---- -## oasisctl pause - -Pause resources - -``` -oasisctl pause [flags] -``` - -## Options -``` - -h, --help help for pause -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl pause notebook](pause-notebook.md) - Pause a notebook - diff --git a/site/content/3.13/arangograph/oasisctl/pause/pause-notebook.md b/site/content/3.13/arangograph/oasisctl/pause/pause-notebook.md deleted file mode 100644 index 0db646d81b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/pause/pause-notebook.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Pause Notebook -menuTitle: Pause Notebook -weight: 1 ---- -## oasisctl pause notebook - -Pause a notebook - -``` -oasisctl pause notebook [flags] -``` - -## Options -``` - -h, --help help for notebook - -n, --notebook-id string Identifier of the notebook -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl pause](_index.md) - Pause resources - diff --git a/site/content/3.13/arangograph/oasisctl/rebalance/_index.md b/site/content/3.13/arangograph/oasisctl/rebalance/_index.md deleted file mode 100644 index c1532b7f91..0000000000 --- a/site/content/3.13/arangograph/oasisctl/rebalance/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rebalance -menuTitle: Rebalance -weight: 20 ---- -## oasisctl rebalance - -Rebalance resources - -``` -oasisctl rebalance [flags] -``` - -## Options -``` - -h, --help help for rebalance -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl rebalance deployment](rebalance-deployment.md) - Rebalance deployment resources - diff --git a/site/content/3.13/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md b/site/content/3.13/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md deleted file mode 100644 index 706b6339e9..0000000000 --- a/site/content/3.13/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rebalance Deployment Shards -menuTitle: Rebalance Deployment Shards -weight: 2 ---- -## oasisctl rebalance deployment shards - -Rebalance shards of a deployment - -``` -oasisctl rebalance deployment shards [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for shards -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl rebalance deployment](rebalance-deployment.md) - Rebalance deployment resources - diff --git a/site/content/3.13/arangograph/oasisctl/rebalance/rebalance-deployment.md b/site/content/3.13/arangograph/oasisctl/rebalance/rebalance-deployment.md deleted file mode 100644 index 7759314ec5..0000000000 --- a/site/content/3.13/arangograph/oasisctl/rebalance/rebalance-deployment.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rebalance Deployment -menuTitle: Rebalance Deployment -weight: 1 ---- -## oasisctl rebalance deployment - -Rebalance deployment resources - -``` -oasisctl rebalance deployment [flags] -``` - -## Options -``` - -h, --help help for deployment -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl rebalance](_index.md) - Rebalance resources -* [oasisctl rebalance deployment shards](rebalance-deployment-shards.md) - Rebalance shards of a deployment - diff --git a/site/content/3.13/arangograph/oasisctl/reject/_index.md b/site/content/3.13/arangograph/oasisctl/reject/_index.md deleted file mode 100644 index 69cff60ece..0000000000 --- a/site/content/3.13/arangograph/oasisctl/reject/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Reject -menuTitle: Reject -weight: 21 ---- -## oasisctl reject - -Reject invites - -``` -oasisctl reject [flags] -``` - -## Options -``` - -h, --help help for reject -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl reject organization](reject-organization.md) - Reject organization related invites - diff --git a/site/content/3.13/arangograph/oasisctl/reject/reject-organization-invite.md b/site/content/3.13/arangograph/oasisctl/reject/reject-organization-invite.md deleted file mode 100644 index d43ecfca52..0000000000 --- a/site/content/3.13/arangograph/oasisctl/reject/reject-organization-invite.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Reject Organization Invite -menuTitle: Reject Organization Invite -weight: 2 ---- -## oasisctl reject organization invite - -Reject an organization invite the authenticated user has access to - -``` -oasisctl reject organization invite [flags] -``` - -## Options -``` - -h, --help help for invite - -i, --invite-id string Identifier of the organization invite - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl reject organization](reject-organization.md) - Reject organization related invites - diff --git a/site/content/3.13/arangograph/oasisctl/reject/reject-organization.md b/site/content/3.13/arangograph/oasisctl/reject/reject-organization.md deleted file mode 100644 index c688b02cd1..0000000000 --- a/site/content/3.13/arangograph/oasisctl/reject/reject-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Reject Organization -menuTitle: Reject Organization -weight: 1 ---- -## oasisctl reject organization - -Reject organization related invites - -``` -oasisctl reject organization [flags] -``` - -## Options -``` - -h, --help help for organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl reject](_index.md) - Reject invites -* [oasisctl reject organization invite](reject-organization-invite.md) - Reject an organization invite the authenticated user has access to - diff --git a/site/content/3.13/arangograph/oasisctl/renew/_index.md b/site/content/3.13/arangograph/oasisctl/renew/_index.md deleted file mode 100644 index b140a835de..0000000000 --- a/site/content/3.13/arangograph/oasisctl/renew/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Renew -menuTitle: Renew -weight: 22 ---- -## oasisctl renew - -Renew keys & tokens - -``` -oasisctl renew [flags] -``` - -## Options -``` - -h, --help help for renew -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl renew apikey](renew-apikey.md) - Renew API keys & tokens - diff --git a/site/content/3.13/arangograph/oasisctl/renew/renew-apikey-token.md b/site/content/3.13/arangograph/oasisctl/renew/renew-apikey-token.md deleted file mode 100644 index e6a1798243..0000000000 --- a/site/content/3.13/arangograph/oasisctl/renew/renew-apikey-token.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Renew API Key Token -menuTitle: Renew API Key Token -weight: 2 ---- -## oasisctl renew apikey token - -Renew an API key token - -## Synopsis -Renew the token (resulting from API key authentication) - -``` -oasisctl renew apikey token [flags] -``` - -## Options -``` - -h, --help help for token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl renew apikey](renew-apikey.md) - Renew API keys & tokens - diff --git a/site/content/3.13/arangograph/oasisctl/renew/renew-apikey.md b/site/content/3.13/arangograph/oasisctl/renew/renew-apikey.md deleted file mode 100644 index 14c1b7ec4d..0000000000 --- a/site/content/3.13/arangograph/oasisctl/renew/renew-apikey.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Renew API Key -menuTitle: Renew API Key -weight: 1 ---- -## oasisctl renew apikey - -Renew API keys & tokens - -``` -oasisctl renew apikey [flags] -``` - -## Options -``` - -h, --help help for apikey -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl renew](_index.md) - Renew keys & tokens -* [oasisctl renew apikey token](renew-apikey-token.md) - Renew an API key token - diff --git a/site/content/3.13/arangograph/oasisctl/resume/_index.md b/site/content/3.13/arangograph/oasisctl/resume/_index.md deleted file mode 100644 index 78485175c1..0000000000 --- a/site/content/3.13/arangograph/oasisctl/resume/_index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Resume -menuTitle: Resume -weight: 23 ---- -## oasisctl resume - -Resume resources - -``` -oasisctl resume [flags] -``` - -## Options -``` - -h, --help help for resume -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl resume deployment](resume-deployment.md) - Resume a paused deployment the authenticated user has access to -* [oasisctl resume notebook](resume-notebook.md) - Resume a notebook - diff --git a/site/content/3.13/arangograph/oasisctl/resume/resume-deployment.md b/site/content/3.13/arangograph/oasisctl/resume/resume-deployment.md deleted file mode 100644 index 7cbc18ef00..0000000000 --- a/site/content/3.13/arangograph/oasisctl/resume/resume-deployment.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Resume Deployment -menuTitle: Resume Deployment -weight: 1 ---- -## oasisctl resume deployment - -Resume a paused deployment the authenticated user has access to - -``` -oasisctl resume deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl resume](_index.md) - Resume resources - diff --git a/site/content/3.13/arangograph/oasisctl/resume/resume-notebook.md b/site/content/3.13/arangograph/oasisctl/resume/resume-notebook.md deleted file mode 100644 index 17add47562..0000000000 --- a/site/content/3.13/arangograph/oasisctl/resume/resume-notebook.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Resume Notebook -menuTitle: Resume Notebook -weight: 2 ---- -## oasisctl resume notebook - -Resume a notebook - -``` -oasisctl resume notebook [flags] -``` - -## Options -``` - -h, --help help for notebook - -n, --notebook-id string Identifier of the notebook -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl resume](_index.md) - Resume resources - diff --git a/site/content/3.13/arangograph/oasisctl/revoke/_index.md b/site/content/3.13/arangograph/oasisctl/revoke/_index.md deleted file mode 100644 index 80ad7af060..0000000000 --- a/site/content/3.13/arangograph/oasisctl/revoke/_index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Revoke -menuTitle: Revoke -weight: 24 ---- -## oasisctl revoke - -Revoke keys & tokens - -``` -oasisctl revoke [flags] -``` - -## Options -``` - -h, --help help for revoke -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl revoke apikey](revoke-apikey.md) - Revoke an API key with given identifier -* [oasisctl revoke metrics](revoke-metrics.md) - Revoke keys & tokens - diff --git a/site/content/3.13/arangograph/oasisctl/revoke/revoke-apikey-token.md b/site/content/3.13/arangograph/oasisctl/revoke/revoke-apikey-token.md deleted file mode 100644 index 795b5e5605..0000000000 --- a/site/content/3.13/arangograph/oasisctl/revoke/revoke-apikey-token.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Revoke API Key Token -menuTitle: Revoke API Key Token -weight: 2 ---- -## oasisctl revoke apikey token - -Revoke an API key token - -## Synopsis -Revoke the token (resulting from API key authentication) - -``` -oasisctl revoke apikey token [flags] -``` - -## Options -``` - -h, --help help for token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl revoke apikey](revoke-apikey.md) - Revoke an API key with given identifier - diff --git a/site/content/3.13/arangograph/oasisctl/revoke/revoke-apikey.md b/site/content/3.13/arangograph/oasisctl/revoke/revoke-apikey.md deleted file mode 100644 index 5c15ef927a..0000000000 --- a/site/content/3.13/arangograph/oasisctl/revoke/revoke-apikey.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Revoke API Key -menuTitle: Revoke API Key -weight: 1 ---- -## oasisctl revoke apikey - -Revoke an API key with given identifier - -``` -oasisctl revoke apikey [flags] -``` - -## Options -``` - -i, --apikey-id string Identifier of the API key to revoke - -h, --help help for apikey -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl revoke](_index.md) - Revoke keys & tokens -* [oasisctl revoke apikey token](revoke-apikey-token.md) - Revoke an API key token - diff --git a/site/content/3.13/arangograph/oasisctl/revoke/revoke-metrics-token.md b/site/content/3.13/arangograph/oasisctl/revoke/revoke-metrics-token.md deleted file mode 100644 index 0876f21606..0000000000 --- a/site/content/3.13/arangograph/oasisctl/revoke/revoke-metrics-token.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Revoke Metrics Token -menuTitle: Revoke Metrics Token -weight: 4 ---- -## oasisctl revoke metrics token - -Revoke a metrics token for a deployment - -``` -oasisctl revoke metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for token - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --token-id string Identifier of the metrics token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl revoke metrics](revoke-metrics.md) - Revoke keys & tokens - diff --git a/site/content/3.13/arangograph/oasisctl/revoke/revoke-metrics.md b/site/content/3.13/arangograph/oasisctl/revoke/revoke-metrics.md deleted file mode 100644 index 638a17df00..0000000000 --- a/site/content/3.13/arangograph/oasisctl/revoke/revoke-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Revoke Metrics -menuTitle: Revoke Metrics -weight: 3 ---- -## oasisctl revoke metrics - -Revoke keys & tokens - -``` -oasisctl revoke metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl revoke](_index.md) - Revoke keys & tokens -* [oasisctl revoke metrics token](revoke-metrics-token.md) - Revoke a metrics token for a deployment - diff --git a/site/content/3.13/arangograph/oasisctl/rotate/_index.md b/site/content/3.13/arangograph/oasisctl/rotate/_index.md deleted file mode 100644 index e24096c868..0000000000 --- a/site/content/3.13/arangograph/oasisctl/rotate/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rotate -menuTitle: Rotate -weight: 25 ---- -## oasisctl rotate - -Rotate resources - -``` -oasisctl rotate [flags] -``` - -## Options -``` - -h, --help help for rotate -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl rotate deployment](rotate-deployment.md) - Rotate deployment resources - diff --git a/site/content/3.13/arangograph/oasisctl/rotate/rotate-deployment-server.md b/site/content/3.13/arangograph/oasisctl/rotate/rotate-deployment-server.md deleted file mode 100644 index 5d281d1ae4..0000000000 --- a/site/content/3.13/arangograph/oasisctl/rotate/rotate-deployment-server.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Rotate Deployment Server -menuTitle: Rotate Deployment Server -weight: 2 ---- -## oasisctl rotate deployment server - -Rotate a single server of a deployment - -``` -oasisctl rotate deployment server [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for server - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -s, --server-id strings Identifier of the deployment server -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl rotate deployment](rotate-deployment.md) - Rotate deployment resources - diff --git a/site/content/3.13/arangograph/oasisctl/rotate/rotate-deployment.md b/site/content/3.13/arangograph/oasisctl/rotate/rotate-deployment.md deleted file mode 100644 index de899d924d..0000000000 --- a/site/content/3.13/arangograph/oasisctl/rotate/rotate-deployment.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Rotate Deployment -menuTitle: Rotate Deployment -weight: 1 ---- -## oasisctl rotate deployment - -Rotate deployment resources - -``` -oasisctl rotate deployment [flags] -``` - -## Options -``` - -h, --help help for deployment -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl rotate](_index.md) - Rotate resources -* [oasisctl rotate deployment server](rotate-deployment-server.md) - Rotate a single server of a deployment - diff --git a/site/content/3.13/arangograph/oasisctl/top.md b/site/content/3.13/arangograph/oasisctl/top.md deleted file mode 100644 index d89a83ebfe..0000000000 --- a/site/content/3.13/arangograph/oasisctl/top.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Top -menuTitle: Top -weight: 26 ---- -## oasisctl top - -Show the most important server metrics - -``` -oasisctl top [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for top - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.13/arangograph/oasisctl/unlock/_index.md b/site/content/3.13/arangograph/oasisctl/unlock/_index.md deleted file mode 100644 index 2c376ce6fd..0000000000 --- a/site/content/3.13/arangograph/oasisctl/unlock/_index.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Unlock -menuTitle: Unlock -weight: 27 ---- -## oasisctl unlock - -Unlock resources - -``` -oasisctl unlock [flags] -``` - -## Options -``` - -h, --help help for unlock -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl unlock cacertificate](unlock-cacertificate.md) - Unlock a CA certificate, so it can be deleted -* [oasisctl unlock deployment](unlock-deployment.md) - Unlock a deployment, so it can be deleted -* [oasisctl unlock ipallowlist](unlock-ipallowlist.md) - Unlock an IP allowlist, so it can be deleted -* [oasisctl unlock organization](unlock-organization.md) - Unlock an organization, so it can be deleted -* [oasisctl unlock policy](unlock-policy.md) - Unlock a backup policy -* [oasisctl unlock project](unlock-project.md) - Unlock a project, so it can be deleted - diff --git a/site/content/3.13/arangograph/oasisctl/unlock/unlock-cacertificate.md b/site/content/3.13/arangograph/oasisctl/unlock/unlock-cacertificate.md deleted file mode 100644 index 418fb91ae6..0000000000 --- a/site/content/3.13/arangograph/oasisctl/unlock/unlock-cacertificate.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Unlock CA Certificate -menuTitle: Unlock CA Certificate -weight: 1 ---- -## oasisctl unlock cacertificate - -Unlock a CA certificate, so it can be deleted - -``` -oasisctl unlock cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - -h, --help help for cacertificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.13/arangograph/oasisctl/unlock/unlock-deployment.md b/site/content/3.13/arangograph/oasisctl/unlock/unlock-deployment.md deleted file mode 100644 index 6d870921e6..0000000000 --- a/site/content/3.13/arangograph/oasisctl/unlock/unlock-deployment.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Unlock Deployment -menuTitle: Unlock Deployment -weight: 2 ---- -## oasisctl unlock deployment - -Unlock a deployment, so it can be deleted - -``` -oasisctl unlock deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.13/arangograph/oasisctl/unlock/unlock-ipallowlist.md b/site/content/3.13/arangograph/oasisctl/unlock/unlock-ipallowlist.md deleted file mode 100644 index 36f8fdbaed..0000000000 --- a/site/content/3.13/arangograph/oasisctl/unlock/unlock-ipallowlist.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Oasisctl Unlock IP Allowlist -menuTitle: Unlock IP Allowlist -weight: 3 ---- -## oasisctl unlock ipallowlist - -Unlock an IP allowlist, so it can be deleted - -``` -oasisctl unlock ipallowlist [flags] -``` - -## Options -``` - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.13/arangograph/oasisctl/unlock/unlock-organization.md b/site/content/3.13/arangograph/oasisctl/unlock/unlock-organization.md deleted file mode 100644 index bfc70efccd..0000000000 --- a/site/content/3.13/arangograph/oasisctl/unlock/unlock-organization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Unlock Organization -menuTitle: Unlock Organization -weight: 4 ---- -## oasisctl unlock organization - -Unlock an organization, so it can be deleted - -``` -oasisctl unlock organization [flags] -``` - -## Options -``` - -h, --help help for organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.13/arangograph/oasisctl/unlock/unlock-policy.md b/site/content/3.13/arangograph/oasisctl/unlock/unlock-policy.md deleted file mode 100644 index 2646b5af51..0000000000 --- a/site/content/3.13/arangograph/oasisctl/unlock/unlock-policy.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Unlock Policy -menuTitle: Unlock Policy -weight: 5 ---- -## oasisctl unlock policy - -Unlock a backup policy - -``` -oasisctl unlock policy [flags] -``` - -## Options -``` - -d, --backup-policy-id string Identifier of the backup policy - -h, --help help for policy -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.13/arangograph/oasisctl/unlock/unlock-project.md b/site/content/3.13/arangograph/oasisctl/unlock/unlock-project.md deleted file mode 100644 index 211e810283..0000000000 --- a/site/content/3.13/arangograph/oasisctl/unlock/unlock-project.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Unlock Project -menuTitle: Unlock Project -weight: 6 ---- -## oasisctl unlock project - -Unlock a project, so it can be deleted - -``` -oasisctl unlock project [flags] -``` - -## Options -``` - -h, --help help for project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl unlock](_index.md) - Unlock resources - diff --git a/site/content/3.13/arangograph/oasisctl/update/_index.md b/site/content/3.13/arangograph/oasisctl/update/_index.md deleted file mode 100644 index 0d1501cbe5..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/_index.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Oasisctl Update -menuTitle: Update -weight: 28 ---- -## oasisctl update - -Update resources - -``` -oasisctl update [flags] -``` - -## Options -``` - -h, --help help for update -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl update auditlog](update-auditlog.md) - Update an auditlog -* [oasisctl update backup](update-backup.md) - Update a backup -* [oasisctl update cacertificate](update-cacertificate.md) - Update a CA certificate the authenticated user has access to -* [oasisctl update deployment](update-deployment.md) - Update a deployment the authenticated user has access to -* [oasisctl update group](update-group.md) - Update a group the authenticated user has access to -* [oasisctl update ipallowlist](update-ipallowlist.md) - Update an IP allowlist the authenticated user has access to -* [oasisctl update metrics](update-metrics.md) - Update metrics resources -* [oasisctl update notebook](update-notebook.md) - Update notebook -* [oasisctl update organization](update-organization.md) - Update an organization the authenticated user has access to -* [oasisctl update policy](update-policy.md) - Update a policy -* [oasisctl update private](update-private.md) - Update private resources -* [oasisctl update project](update-project.md) - Update a project the authenticated user has access to -* [oasisctl update role](update-role.md) - Update a role the authenticated user has access to - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-auditlog.md b/site/content/3.13/arangograph/oasisctl/update/update-auditlog.md deleted file mode 100644 index 8c92aa1c12..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-auditlog.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Update Audit Log -menuTitle: Update Audit Log -weight: 1 ---- -## oasisctl update auditlog - -Update an auditlog - -``` -oasisctl update auditlog [flags] -``` - -## Options -``` - -i, --auditlog-id string Identifier of the auditlog to update. - --default If set, this AuditLog is the default for the organization. - --description string Description of the audit log. - -h, --help help for auditlog - --name string Name of the audit log. - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-backup-policy.md b/site/content/3.13/arangograph/oasisctl/update/update-backup-policy.md deleted file mode 100644 index cad0d2417f..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-backup-policy.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Oasisctl Update Backup Policy -menuTitle: Update Backup Policy -weight: 3 ---- -## oasisctl update backup policy - -Update a backup policy - -``` -oasisctl update backup policy [flags] -``` - -## Options -``` - --additional-region-ids strings Add backup to the specified addition regions - -d, --backup-policy-id string Identifier of the backup policy - --day-of-the-month int32 Run the backup on the specified day of the month (1-31) (default 1) - --description string Description of the backup - --email-notification string Email notification setting (Never|FailureOnly|Always) - --every-interval-hours int32 Schedule should run with an interval of the specified hours (1-23) - --friday If set, a backup will be created on Fridays. Set to false explicitly to clear the flag. - -h, --help help for policy - --hours int32 Hours part of the time of day (0-23) - --minutes int32 Minutes part of the time of day (0-59) - --minutes-offset int32 Schedule should run with specific minutes offset (0-59) - --monday If set, a backup will be created on Mondays. Set to false explicitly to clear the flag. - --name string Name of the deployment - --paused The policy is paused. Set to false explicitly to clear the flag. - --retention-period int Backups created by this policy will be automatically deleted after the specified retention period. A value of 0 means that backup will never be deleted. - --saturday If set, a backup will be created on Saturdays. Set to false explicitly to clear the flag. - --schedule-type string Schedule of the policy (Hourly|Daily|Monthly) - --sunday If set, a backup will be created on Sundays. Set to false explicitly to clear the flag. - --thursday If set, a backup will be created on Thursdays. Set to false explicitly to clear the flag. - --time-zone string The time-zone this time of day applies to (empty means UTC). Names MUST be exactly as defined in RFC-822. (default "UTC") - --tuesday If set, a backup will be created on Tuesdays. Set to false explicitly to clear the flag. - --upload The backup should be uploaded. Set to false explicitly to clear the flag. - --wednesday If set, a backup will be created on Wednesdays. Set to false explicitly to clear the flag. -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update backup](update-backup.md) - Update a backup - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-backup.md b/site/content/3.13/arangograph/oasisctl/update/update-backup.md deleted file mode 100644 index 9ce085b61b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-backup.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update Backup -menuTitle: Update Backup -weight: 2 ---- -## oasisctl update backup - -Update a backup - -``` -oasisctl update backup [flags] -``` - -## Options -``` - --auto-deleted-at int Time (h) until auto delete of the backup - -d, --backup-id string Identifier of the backup - --description string Description of the backup - -h, --help help for backup - --name string Name of the backup - --upload The backups should be uploaded -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update backup policy](update-backup-policy.md) - Update a backup policy - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-cacertificate.md b/site/content/3.13/arangograph/oasisctl/update/update-cacertificate.md deleted file mode 100644 index 1b97fe7a45..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-cacertificate.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update CA Certificate -menuTitle: Update CA Certificate -weight: 4 ---- -## oasisctl update cacertificate - -Update a CA certificate the authenticated user has access to - -``` -oasisctl update cacertificate [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate - --description string Description of the CA certificate - -h, --help help for cacertificate - --name string Name of the CA certificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --use-well-known-certificate Sets the usage of a well known certificate ie. Let's Encrypt -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-deployment.md b/site/content/3.13/arangograph/oasisctl/update/update-deployment.md deleted file mode 100644 index b7c36cace2..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-deployment.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Oasisctl Update Deployment -menuTitle: Update Deployment -weight: 5 ---- -## oasisctl update deployment - -Update a deployment the authenticated user has access to - -``` -oasisctl update deployment [flags] -``` - -## Options -``` - -c, --cacertificate-id string Identifier of the CA certificate to use for the deployment - --coordinator-memory-size int32 Set memory size of Coordinators for flexible deployments (GiB) (default 4) - --coordinators int32 Set number of Coordinators for flexible deployments (default 3) - --custom-image string Set a custom image to use for the deployment. Only available for selected customers. - --dbserver-disk-size int32 Set disk size of DB-Servers for flexible deployments (GiB) (default 32) - --dbserver-memory-size int32 Set memory size of DB-Servers for flexible deployments (GiB) (default 4) - --dbservers int32 Set number of DB-Servers for flexible deployments (default 3) - -d, --deployment-id string Identifier of the deployment - --description string Description of the deployment - --disable-foxx-authentication Disable authentication of requests to Foxx application. - --disk-performance-id string Set the disk performance to use for this deployment. - --drop-vst-support Drop VST protocol support to improve resilience. - -h, --help help for deployment - -i, --ipallowlist-id string Identifier of the IP allowlist to use for the deployment - --is-platform-authentication-enabled Enable platform authentication for deployment. - --max-node-disk-size int32 Set maximum disk size for nodes for autoscaler (GiB) - --model string Set model of the deployment (default "oneshard") - --name string Name of the deployment - --node-count int32 Set the number of desired nodes (default 3) - --node-disk-size int32 Set disk size for nodes (GiB) - --node-size-id string Set the node size to use for this deployment - --notification-email-address strings Set email address(-es) that will be used for notifications related to this deployment. - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --version string Version of ArangoDB to use for the deployment -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-group.md b/site/content/3.13/arangograph/oasisctl/update/update-group.md deleted file mode 100644 index 7021923d4c..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-group.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Update Group -menuTitle: Update Group -weight: 6 ---- -## oasisctl update group - -Update a group the authenticated user has access to - -``` -oasisctl update group [flags] -``` - -## Options -``` - --description string Description of the group - -g, --group-id string Identifier of the group - -h, --help help for group - --name string Name of the group - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-ipallowlist.md b/site/content/3.13/arangograph/oasisctl/update/update-ipallowlist.md deleted file mode 100644 index 089d41026c..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-ipallowlist.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Oasisctl Update IP Allowlist -menuTitle: Update IP Allowlist -weight: 7 ---- -## oasisctl update ipallowlist - -Update an IP allowlist the authenticated user has access to - -``` -oasisctl update ipallowlist [flags] -``` - -## Options -``` - --add-cidr-range strings List of CIDR ranges to add to the IP allowlist - --description string Description of the CA certificate - -h, --help help for ipallowlist - -i, --ipallowlist-id string Identifier of the IP allowlist - --name string Name of the CA certificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - --remote-inspection-allowed If set, remote connectivity checks by the Oasis platform are allowed - --remove-cidr-range strings List of CIDR ranges to remove from the IP allowlist -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-metrics-token.md b/site/content/3.13/arangograph/oasisctl/update/update-metrics-token.md deleted file mode 100644 index 2ff4a301aa..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-metrics-token.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update Metrics Token -menuTitle: Update Metrics Token -weight: 9 ---- -## oasisctl update metrics token - -Update a metrics token - -``` -oasisctl update metrics token [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - --description string Description of the CA certificate - -h, --help help for token - --name string Name of the CA certificate - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --token-id string Identifier of the metrics token -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update metrics](update-metrics.md) - Update metrics resources - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-metrics.md b/site/content/3.13/arangograph/oasisctl/update/update-metrics.md deleted file mode 100644 index d8fc683f1e..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-metrics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Metrics -menuTitle: Update Metrics -weight: 8 ---- -## oasisctl update metrics - -Update metrics resources - -``` -oasisctl update metrics [flags] -``` - -## Options -``` - -h, --help help for metrics -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update metrics token](update-metrics-token.md) - Update a metrics token - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-notebook.md b/site/content/3.13/arangograph/oasisctl/update/update-notebook.md deleted file mode 100644 index 2b6fee7bb0..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-notebook.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Update Notebook -menuTitle: Update Notebook -weight: 10 ---- -## oasisctl update notebook - -Update notebook - -``` -oasisctl update notebook [flags] -``` - -## Options -``` - -d, --description string Description of the notebook - -s, --disk-size int32 Notebook disk size in GiB - -h, --help help for notebook - --name string Name of the notebook - -n, --notebook-id string Identifier of the notebook - -m, --notebook-model string Identifier of the notebook model -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-organization-authentication-providers.md b/site/content/3.13/arangograph/oasisctl/update/update-organization-authentication-providers.md deleted file mode 100644 index 8d8d9be5de..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-organization-authentication-providers.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update Organization Authentication Providers -menuTitle: Update Organization Authentication Providers -weight: 13 ---- -## oasisctl update organization authentication providers - -Update allowed authentication providers for an organization the authenticated user has access to - -``` -oasisctl update organization authentication providers [flags] -``` - -## Options -``` - --enable-github If set, allow access from user accounts authentication through Github - --enable-google If set, allow access from user accounts authentication through Google - --enable-microsoft If set, allow access from user accounts authentication through Microsoft - --enable-sso If set, allow access from user accounts authentication through single sign on (sso) - --enable-username-password If set, allow access from user accounts authentication through username-password - -h, --help help for providers - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization authentication](update-organization-authentication.md) - Update authentication settings for an organization - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-organization-authentication.md b/site/content/3.13/arangograph/oasisctl/update/update-organization-authentication.md deleted file mode 100644 index 328b81b297..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-organization-authentication.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Organization Authentication -menuTitle: Update Organization Authentication -weight: 12 ---- -## oasisctl update organization authentication - -Update authentication settings for an organization - -``` -oasisctl update organization authentication [flags] -``` - -## Options -``` - -h, --help help for authentication -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization](update-organization.md) - Update an organization the authenticated user has access to -* [oasisctl update organization authentication providers](update-organization-authentication-providers.md) - Update allowed authentication providers for an organization the authenticated user has access to - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md b/site/content/3.13/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md deleted file mode 100644 index 6d860fa8d6..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Update Organization Email Domain Restrictions -menuTitle: Update Organization Email Domain Restrictions -weight: 16 ---- -## oasisctl update organization email domain restrictions - -Update which domain restrictions are placed on accessing a specific organization - -``` -oasisctl update organization email domain restrictions [flags] -``` - -## Options -``` - -d, --allowed-domain strings Allowed email domains for users of the organization - -h, --help help for restrictions - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization email domain](update-organization-email-domain.md) - Update email domain specific information for an organization - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-organization-email-domain.md b/site/content/3.13/arangograph/oasisctl/update/update-organization-email-domain.md deleted file mode 100644 index 57f79b6fbb..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-organization-email-domain.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Organization Email Domain -menuTitle: Update Organization Email Domain -weight: 15 ---- -## oasisctl update organization email domain - -Update email domain specific information for an organization - -``` -oasisctl update organization email domain [flags] -``` - -## Options -``` - -h, --help help for domain -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization email](update-organization-email.md) - Update email specific information for an organization -* [oasisctl update organization email domain restrictions](update-organization-email-domain-restrictions.md) - Update which domain restrictions are placed on accessing a specific organization - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-organization-email.md b/site/content/3.13/arangograph/oasisctl/update/update-organization-email.md deleted file mode 100644 index 89f05ed737..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-organization-email.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Organization Email -menuTitle: Update Organization Email -weight: 14 ---- -## oasisctl update organization email - -Update email specific information for an organization - -``` -oasisctl update organization email [flags] -``` - -## Options -``` - -h, --help help for email -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update organization](update-organization.md) - Update an organization the authenticated user has access to -* [oasisctl update organization email domain](update-organization-email-domain.md) - Update email domain specific information for an organization - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-organization.md b/site/content/3.13/arangograph/oasisctl/update/update-organization.md deleted file mode 100644 index 670d291842..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-organization.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Update Organization -menuTitle: Update Organization -weight: 11 ---- -## oasisctl update organization - -Update an organization the authenticated user has access to - -``` -oasisctl update organization [flags] -``` - -## Options -``` - --description string Description of the organization - -h, --help help for organization - --name string Name of the organization - -o, --organization-id string Identifier of the organization -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update organization authentication](update-organization-authentication.md) - Update authentication settings for an organization -* [oasisctl update organization email](update-organization-email.md) - Update email specific information for an organization - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-policy-add-binding.md b/site/content/3.13/arangograph/oasisctl/update/update-policy-add-binding.md deleted file mode 100644 index df89601244..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-policy-add-binding.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Update Policy Add Binding -menuTitle: Update Policy Add Binding -weight: 19 ---- -## oasisctl update policy add binding - -Add a role binding to a policy - -``` -oasisctl update policy add binding [flags] -``` - -## Options -``` - --group-id strings Identifiers of the groups to add bindings for - -h, --help help for binding - -r, --role-id string Identifier of the role to bind to - -u, --url string URL of the resource to update the policy for - --user-id strings Identifiers of the users to add bindings for -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update policy add](update-policy-add.md) - Add to a policy - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-policy-add.md b/site/content/3.13/arangograph/oasisctl/update/update-policy-add.md deleted file mode 100644 index 42e655fe7c..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-policy-add.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Policy Add -menuTitle: Update Policy Add -weight: 18 ---- -## oasisctl update policy add - -Add to a policy - -``` -oasisctl update policy add [flags] -``` - -## Options -``` - -h, --help help for add -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update policy](update-policy.md) - Update a policy -* [oasisctl update policy add binding](update-policy-add-binding.md) - Add a role binding to a policy - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-policy-delete-binding.md b/site/content/3.13/arangograph/oasisctl/update/update-policy-delete-binding.md deleted file mode 100644 index 602bc93e93..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-policy-delete-binding.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Update Policy Delete Binding -menuTitle: Update Policy Delete Binding -weight: 21 ---- -## oasisctl update policy delete binding - -Delete a role binding from a policy - -``` -oasisctl update policy delete binding [flags] -``` - -## Options -``` - --group-id strings Identifiers of the groups to delete bindings for - -h, --help help for binding - -r, --role-id string Identifier of the role to delete bind for - -u, --url string URL of the resource to update the policy for - --user-id strings Identifiers of the users to delete bindings for -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update policy delete](update-policy-delete.md) - Delete from a policy - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-policy-delete.md b/site/content/3.13/arangograph/oasisctl/update/update-policy-delete.md deleted file mode 100644 index dec2527590..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-policy-delete.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Policy Delete -menuTitle: Update Policy Delete -weight: 20 ---- -## oasisctl update policy delete - -Delete from a policy - -``` -oasisctl update policy delete [flags] -``` - -## Options -``` - -h, --help help for delete -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update policy](update-policy.md) - Update a policy -* [oasisctl update policy delete binding](update-policy-delete-binding.md) - Delete a role binding from a policy - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-policy.md b/site/content/3.13/arangograph/oasisctl/update/update-policy.md deleted file mode 100644 index 132c0b4123..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-policy.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Oasisctl Update Policy -menuTitle: Update Policy -weight: 17 ---- -## oasisctl update policy - -Update a policy - -``` -oasisctl update policy [flags] -``` - -## Options -``` - -h, --help help for policy -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update policy add](update-policy-add.md) - Add to a policy -* [oasisctl update policy delete](update-policy-delete.md) - Delete from a policy - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-private-endpoint-service.md b/site/content/3.13/arangograph/oasisctl/update/update-private-endpoint-service.md deleted file mode 100644 index 81aa0917f6..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-private-endpoint-service.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Oasisctl Update Private Endpoint Service -menuTitle: Update Private Endpoint Service -weight: 24 ---- -## oasisctl update private endpoint service - -Update a Private Endpoint Service attached to an existing deployment - -``` -oasisctl update private endpoint service [flags] -``` - -## Options -``` - --alternate-dns-name strings DNS names used for the deployment in the private network - --aws-principal strings List of AWS Principals from which a Private Endpoint can be created (Format: <AccountID>[/Role/<RoleName>|/User/<UserName>]) - --azure-client-subscription-id strings List of Azure subscription IDs from which a Private Endpoint can be created - -d, --deployment-id string Identifier of the deployment that the private endpoint service is connected to - --description string Description of the private endpoint service - --enable-private-dns Enable private DNS (applicable for AWS only) - --gcp-project strings List of GCP projects from which a Private Endpoint can be created - -h, --help help for service - --name string Name of the private endpoint service - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update private endpoint](update-private-endpoint.md) - - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-private-endpoint.md b/site/content/3.13/arangograph/oasisctl/update/update-private-endpoint.md deleted file mode 100644 index a66ead3924..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-private-endpoint.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Private Endpoint -menuTitle: Update Private Endpoint -weight: 23 ---- -## oasisctl update private endpoint - - - -``` -oasisctl update private endpoint [flags] -``` - -## Options -``` - -h, --help help for endpoint -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update private](update-private.md) - Update private resources -* [oasisctl update private endpoint service](update-private-endpoint-service.md) - Update a Private Endpoint Service attached to an existing deployment - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-private.md b/site/content/3.13/arangograph/oasisctl/update/update-private.md deleted file mode 100644 index 8c414612ac..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-private.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Update Private -menuTitle: Update Private -weight: 22 ---- -## oasisctl update private - -Update private resources - -``` -oasisctl update private [flags] -``` - -## Options -``` - -h, --help help for private -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources -* [oasisctl update private endpoint](update-private-endpoint.md) - - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-project.md b/site/content/3.13/arangograph/oasisctl/update/update-project.md deleted file mode 100644 index 0965a3684e..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-project.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Update Project -menuTitle: Update Project -weight: 25 ---- -## oasisctl update project - -Update a project the authenticated user has access to - -``` -oasisctl update project [flags] -``` - -## Options -``` - --description string Description of the project - -h, --help help for project - --name string Name of the project - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.13/arangograph/oasisctl/update/update-role.md b/site/content/3.13/arangograph/oasisctl/update/update-role.md deleted file mode 100644 index 58d7f2e8ab..0000000000 --- a/site/content/3.13/arangograph/oasisctl/update/update-role.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Oasisctl Update Role -menuTitle: Update Role -weight: 26 ---- -## oasisctl update role - -Update a role the authenticated user has access to - -``` -oasisctl update role [flags] -``` - -## Options -``` - --add-permission strings Permissions to add to the role - --description string Description of the role - -h, --help help for role - --name string Name of the role - -o, --organization-id string Identifier of the organization - --remove-permission strings Permissions to remove from the role - -r, --role-id string Identifier of the role -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl update](_index.md) - Update resources - diff --git a/site/content/3.13/arangograph/oasisctl/upgrade.md b/site/content/3.13/arangograph/oasisctl/upgrade.md deleted file mode 100644 index 8d77aa3ecf..0000000000 --- a/site/content/3.13/arangograph/oasisctl/upgrade.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Oasisctl Upgrade -menuTitle: Upgrade -weight: 29 ---- -## oasisctl upgrade - -Upgrade Oasisctl tool - -## Synopsis -Check the latest, compatible version and upgrade this tool to that. - -``` -oasisctl upgrade [flags] -``` - -## Options -``` - -d, --dry-run Do an upgrade without applying the version. - -f, --force Force an upgrade even if the versions match. - -h, --help help for upgrade -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.13/arangograph/oasisctl/version.md b/site/content/3.13/arangograph/oasisctl/version.md deleted file mode 100644 index e8e5ee7c8b..0000000000 --- a/site/content/3.13/arangograph/oasisctl/version.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Oasisctl Version -menuTitle: Version -weight: 30 ---- -## oasisctl version - -Show the current version of this tool - -``` -oasisctl version [flags] -``` - -## Options -``` - -h, --help help for version -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](options.md) - ArangoGraph Insights Platform - diff --git a/site/content/3.13/arangograph/oasisctl/wait/_index.md b/site/content/3.13/arangograph/oasisctl/wait/_index.md deleted file mode 100644 index 1ccac25259..0000000000 --- a/site/content/3.13/arangograph/oasisctl/wait/_index.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Oasisctl Wait -menuTitle: Wait -weight: 31 ---- -## oasisctl wait - -Wait for a status change - -``` -oasisctl wait [flags] -``` - -## Options -``` - -h, --help help for wait -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl](../options.md) - ArangoGraph Insights Platform -* [oasisctl wait deployment](wait-deployment.md) - Wait for a deployment to reach the ready status - diff --git a/site/content/3.13/arangograph/oasisctl/wait/wait-deployment.md b/site/content/3.13/arangograph/oasisctl/wait/wait-deployment.md deleted file mode 100644 index ddc2c82d76..0000000000 --- a/site/content/3.13/arangograph/oasisctl/wait/wait-deployment.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Oasisctl Wait Deployment -menuTitle: Wait Deployment -weight: 1 ---- -## oasisctl wait deployment - -Wait for a deployment to reach the ready status - -``` -oasisctl wait deployment [flags] -``` - -## Options -``` - -d, --deployment-id string Identifier of the deployment - -h, --help help for deployment - -o, --organization-id string Identifier of the organization - -p, --project-id string Identifier of the project - -t, --timeout duration How long to wait for the deployment to reach the ready status (default 20m0s) -``` - -## Options Inherited From Parent Commands -``` - --endpoint string API endpoint of the ArangoDB Oasis (default "api.cloud.arangodb.com") - --format string Output format (table|json) (default "table") - --token string Token used to authenticate at ArangoDB Oasis -``` - -## See also -* [oasisctl wait](_index.md) - Wait for a status change - diff --git a/site/content/3.13/arangograph/organizations/billing.md b/site/content/3.13/arangograph/organizations/billing.md deleted file mode 100644 index 9b892b5500..0000000000 --- a/site/content/3.13/arangograph/organizations/billing.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Billing in ArangoGraph -menuTitle: Billing -weight: 10 -description: >- - How to manage billing details and payment methods in ArangoGraph ---- -## How to add billing details - -1. In the main navigation menu, click the **Organization** icon. -2. Click **Billing** in the **Organization** section. -3. In the **Billing Details** section, click **Edit**. -4. Enter your company name, billing address, and EU VAT identification number (if applicable). -5. Optionally, enter the email address(es) to which invoices should be emailed - to automatically. -6. Click **Save**. - -![ArangoGraph Billing Details](../../../images/arangograph-billing-details.png) - -## How to add a payment method - -1. In the main navigation menu, click the **Organization** icon. -2. Click **Billing** in the **Organization** section. -3. In the **Payment methods** section, click **Add**. -4. Fill out the form with your credit card details. Currently, a credit card is the only available payment method. -5. Click **Save**. - -![ArangoGraph Payment Method](../../../images/arangograph-add-payment-method-credit-card.png) - -{{% comment %}} -TODO: Need screenshot with invoice - -### How to view invoices - - -{{% /comment %}} diff --git a/site/content/3.13/arangograph/organizations/credits-and-usage.md b/site/content/3.13/arangograph/organizations/credits-and-usage.md deleted file mode 100644 index 34dafb8488..0000000000 --- a/site/content/3.13/arangograph/organizations/credits-and-usage.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: Credits & Usage in ArangoGraph -menuTitle: Credits & Usage -weight: 15 -description: >- - Credits give you access to a flexible prepaid model, so you can allocate them - across multiple deployments as needed ---- -{{< info >}} -Credits are only available if your organization has signed up for -ArangoGraph's [Committed](../organizations/_index.md#committed) package. -{{< /info >}} - -The ArangoGraph credit model is a versatile prepaid model that allows you to -purchase credits and use them in a flexible way, based on what you have running -in ArangoGraph. - -Instead of purchasing a particular deployment for a year, you can purchase a -number of ArangoGraph credits that expire a year after purchase. These credits -are then consumed over that time period, based on the deployments you run -in ArangoGraph. - -For example, a OneShard (three nodes) A64 deployment consumes more credits per -hour than a smaller deployment such as A8. If you are running multiple deployments, -like pre-production environments or for different use-cases, these would each consume -from the same credit balance. However, if you are not running any deployments -and do not have any backup storage, then none of your credits will be consumed. - -{{< tip >}} -To purchase credits for your organization, you need to get in touch with the -ArangoDB team. [Contact us](https://www.arangodb.com/contact/) for more details. -{{< /tip >}} - -There are a number of benefits that ArangoGraph credits provide: -- **Adaptability**: The pre-paid credit model allows you to adapt your usage to - changing project requirements or fluctuating workloads. By enabling the use of - credits for various instance types and sizes, you can easily adjust your - resource allocation. -- **Efficient handling of resources**: With the ability to purchase credits in - advance, you can better align your needs in terms of resources and costs. - You can purchase credits in bulk and then allocate them as needed. -- **Workload Optimization**: By having a clear view of credit consumption and - remaining balance, you can identify inefficiencies to further optimize your - infrastructure, resulting in cost savings and better performance. - -## How to view the credit usage - -1. In the main navigation, click the **Organization** icon. -2. Click **Credits & Usage** in the **Organization** section. -3. In the **Credits & Usage** page, you can: - - See the remaining credit balance. - - Track your total credit balance. - - See a projection of when you will run out of credits, based on the last 30 days of usage. - - Get a detailed consumption report in PDF format that shows: - - The number of credits you had at the start of the month. - - The number of credits consumed in the month. - - The number of credits remaining. - - The number of credits consumed for each deployment. - -![ArangoGraph Credits and Usage](../../../images/arangograph-credits-and-usage.png) - -## FAQs - -### Are there any configuration constraints for using the credits? - -No. Credits are designed to be used completely flexibly. You can use all of your -credits for multiple small deployments (i.e. A8s) or you can use them for a single -large deployment (i.e. A256), or even multiple large deployments, as long as you -have enough credits remaining. - -### What is the flexibility of moving up or down in configuration size of the infrastructure? - -You can move up sizes in configuration at any point by editing your deployment -within ArangoGraph, once every 6 hours to allow for in-place disk expansion. - -### Is there a limit to how many deployments I can use my credits on? - -There is no specific limit to the number of deployments you can use your credits -on. The credit model is designed to provide you with the flexibility to allocate -credits across multiple deployments as needed. This enables you to effectively -manage and distribute your resources according to your specific requirements and -priorities. However, it is essential to monitor your credit consumption to ensure -that you have sufficient credits to cover your deployments. - -### Do the credits I purchase expire? - -Yes, credits expire 1 year after purchase. You should ensure that you consume -all of these credits within the year. - -### Can I make multiple purchases of credits within a year? - -As an organization’s usage of ArangoGraph grows, particularly in the initial -phases of application development and early production release, it is common -to purchase a smaller credit package that is later supplemented by a larger -credit package part-way through the initial credit expiry term. -In this case, all sets of credits will be available for ArangoGraph consumption -as a single credit balance. The credits with the earlier expiry date are consumed -first to avoid credit expiry where possible. - -### Can I purchase a specific number of credits (i.e. 3361, 4185)? - -ArangoGraph offers a variety of predefined credit packages designed to -accommodate different needs and stages of the application lifecycle. -For any credit purchasing needs, please [contact us](https://www.arangodb.com/contact/) -and we are happy to help find an appropriate package for you. - -### How quickly will the credits I purchase be consumed? - -The rate at which your purchased credits will be consumed depends on several -factors, including the type and size of instances you deploy, the amount of -resources used, and the duration of usage. Each machine size has an hourly credit -consumption rate, and the overall rate of credit consumption will increase for -larger sizes or for more machines/deployments. Credits will also be consumed for -any variable usage charges such as outbound network traffic and backup storage. - -### How can I see how many credits I have remaining? - -All details about credits, including how many credits have been purchased, -how many remain, and how they are being consumed are available in the -**Credits & Usage** page within the ArangoGraph web interface. - -### I have a large sharded deployment, how do I know how many credits it will consume? - -If you are using credits, then you will be able to see how many credits your -configured deployment will consume when [creating](../deployments/_index.md#how-to-create-a-new-deployment) -or [editing a deployment](../deployments/_index.md#how-to-edit-a-deployment). - -You can download a detailed consumption report in the -[**Credits & Usage** section](#how-to-view-the-credit-usage). It shows you the -number of credits consumed by any deployment you are creating or editing. - -All users can see the credit price of each node size in the **Pricing** section. - -### What happens if I run out of credits? - -If you run out of credits, your access to ArangoGraph's services and resources -will be temporarily suspended until you purchase additional credits. - -### Can I buy credits for a short time period (e.g. 2 months)? - -No, you cannot but credits with an expiry of less than 12 months. -If you require credits for a shorter time frame, such as 2 months, you can still -purchase one of the standard credit packages and consume the credits as needed -during that time. You may opt for a smaller credit package that aligns with your -expected usage during the desired period, rather than the full year’s expected usage. -Although the credits will have a longer expiration period, this allows you to have -the flexibility of utilizing the remaining credits for any future needs. \ No newline at end of file diff --git a/site/content/3.13/arangograph/organizations/users-and-groups.md b/site/content/3.13/arangograph/organizations/users-and-groups.md deleted file mode 100644 index abed36697b..0000000000 --- a/site/content/3.13/arangograph/organizations/users-and-groups.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Users and Groups in ArangoGraph -menuTitle: Users & Groups -weight: 5 -description: >- - How to manage individual members and user groups in ArangoGraph ---- -## Users, groups & members - -When you use ArangoGraph, you are logged in as a user. -A user has properties such as name & email address. -Most important of the user is that it serves as an identity of a person. - -A user is member of one or more organizations in ArangoGraph. -You can become a member of an organization in the following ways: - -- Create a new organization. You will become the first member and owner of that - organization. -- Be invited to join an organization. Once accepted (by the invited user), this - user becomes a member of the organization. - -If the number of members of an organization becomes large, it helps to group -users. In ArangoGraph a group is part of an organization and a group contains -a list of users. All users of the group must be member of the owning organization. - -In the **People** section of the dashboard you can manage users, groups and -invites for the organization. - -To edit permissions of members see [Access Control](../security-and-access-control/_index.md). - -## Members - -Members are a list of users that can access an organization. - -![ArangoGraph Member Access Control](../../../images/arangograph-access-control-members.png) - -### How to add a new member to the organization - -1. In the main navigation, click the __Organization__ icon. -2. Click __Members__ in the __People__ section. -3. Optionally, click the __Invites__ entry. -4. Click the __Invite new member__ button. -5. In the form that appears, enter the email address of the person you want to - invite. -6. Click the __Create__ button. -7. An email with an organization invite will now be sent to the specified - email address. -8. After accepting the invite the person will be added to the organization - [members](#members). - -![ArangoGraph Organization Invites](../../../images/arangograph-new-invite.png) - -### How to respond to an organization invite - -See [My Account: How to respond to my invites](../my-account.md#how-to-respond-to-my-invites) - -### How to remove a member from the organization - -1. Click __Members__ in the __People__ section of the main navigation. -2. Delete a member by pressing the __recycle bin__ icon in the __Actions__ column. -3. Confirm the deletion in the dialog that pops up. - -{{< info >}} -You cannot delete members who are organization owners. -{{< /info >}} - -### How to make a member an organization owner - -1. Click __Members__ in the __People__ section of the main navigation. -2. You can convert a member to an organization owner by pressing the __Key__ icon - in the __Actions__ column. -3. You can convert a member back to a normal user by pressing the __User__ icon - in the __Actions__ column. - -## Groups - -A group is a defined set of members. Groups can then be bound to roles. These -bindings contribute to the respective organization, project or deployment policy. - -![ArangoGraph Groups](../../../images/arangograph-groups.png) - -### How to create a new group - -1. Click __Groups__ in the __People__ section of the main navigation. -2. Press the __New group__ button. -3. Enter a name and optionally a description for your new group. -4. Select the members you want to be part of the group. -5. Press the __Create__ button. - -![ArangoGraph New Group](../../../images/arangograph-new-group.png) - -### How to view, edit or remove a group - -1. Click __Groups__ in the __People__ section of the main navigation. -2. Click an icon in the __Actions__ column: - - __Eye__: View group - - __Pencil__: Edit group - - __Recycle bin__: Delete group - -You can also click a group name to view it. There are buttons to __Edit__ and -__Delete__ the currently viewed group. - -![ArangoGraph Group](../../../images/arangograph-group.png) - -{{< info >}} -The groups __Organization members__ and __Organization owners__ are virtual groups -and cannot be changed. They always reflect the current set of organization -members and owners. -{{< /info >}} - -## Invites - -### How to create a new organization invite - -See [How to add a new member to the organization](#how-to-add-a-new-member-to-the-organization) - -### How to view the status of invitations - -1. Click __Invites__ in the __People__ section of the main navigation. -2. The created invites are displayed, grouped by status __Pending__, - __Accepted__ and __Rejected__. -3. You may delete pending invites by clicking the __recycle bin__ icon in the - __Actions__ column. - -![ArangoGraph Organization Invites](../../../images/arangograph-org-invites.png) diff --git a/site/content/3.13/arangograph/projects.md b/site/content/3.13/arangograph/projects.md deleted file mode 100644 index f4efd27833..0000000000 --- a/site/content/3.13/arangograph/projects.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Projects in ArangoGraph -menuTitle: Projects -weight: 15 -description: >- - How to manage projects and IP allowlists in ArangoGraph ---- -ArangoGraph projects can represent organizational units such as teams, -product groups, environments (e.g. staging vs. production). You can have any -number of projects under one organization. - -**Organizations → <u>Projects</u> → Deployments** - -Projects are a container for related deployments, certificates & IP allowlists. -Projects also come with their own policy for access control. You can have any -number of deployment under one project. - -![ArangoGraph Projects Overview](../../images/arangograph-projects-overview.png) - -## How to create a new project - -1. In the main navigation, click the __Dashboard__ icon. -2. Click __Projects__ in the __Dashboard__ section. -3. Click the __New project__ button. -4. Enter a name and optionally a description for your new project. -5. Click the __Create__ button. -6. You will be taken to the project page. -7. To change the name or description, click either at the top of the page. - -![ArangoGraph New Project](../../images/arangograph-new-project.png) - -![ArangoGraph Project Summary](../../images/arangograph-project.png) - -{{< info >}} -Projects contain exactly **one policy**. Within that policy, you can define -role bindings to regulate access control on a project level. -{{< /info >}} - -## How to create a new deployment - -See [Deployments: How to create a new deployment](deployments/_index.md#how-to-create-a-new-deployment) - -## How to delete a project - -{{< danger >}} -Deleting a project will delete contained deployments, certificates & IP allowlists. -This operation is **irreversible**. -{{< /danger >}} - -1. Click __Projects__ in the __Dashboard__ section of the main navigation. -2. Click the __recycle bin__ icon in the __Actions__ column of the project to be deleted. -3. Enter `Delete!` to confirm and click __Yes__. - -{{< tip >}} -If the project has a locked deployment, you need to [unlock](security-and-access-control/_index.md#locked-resources) -it first to be able to delete the project. -{{< /tip >}} - -## How to manage IP allowlists - -IP allowlists let you limit access to your deployment to certain IP ranges. -It is optional, but strongly recommended to do so. - -You can create an allowlist as part of a project. - -1. Click a project name in the __Projects__ section of the main navigation. -2. Click the __Security__ entry. -3. In the __IP allowlists__ section, click: - - The __New IP allowlist__ button to create a new allowlist. - When creating or editing a list, you can add comments - in the __Allowed CIDR ranges (1 per line)__ section. - Everything after `//` or `#` is considered a comment until the end of the line. - - A name or the __eye__ icon in the __Actions__ column to view the allowlist. - - The __pencil__ icon to edit the allowlist. - You can also view the allowlist and click the __Edit__ button. - - The __recycle bin__ icon to delete the allowlist. - -## How to manage role bindings - -See: -- [Access Control: How to view, edit or remove role bindings of a policy](security-and-access-control/_index.md#how-to-view-edit-or-remove-role-bindings-of-a-policy) -- [Access Control: How to add a role binding to a policy](security-and-access-control/_index.md#how-to-add-a-role-binding-to-a-policy) diff --git a/site/content/3.13/arangograph/security-and-access-control/_index.md b/site/content/3.13/arangograph/security-and-access-control/_index.md deleted file mode 100644 index fa37f9af13..0000000000 --- a/site/content/3.13/arangograph/security-and-access-control/_index.md +++ /dev/null @@ -1,699 +0,0 @@ ---- -title: Security and access control in ArangoGraph -menuTitle: Security and Access Control -weight: 45 -description: >- - This guide explains which access control concepts are available in - ArangoGraph and how to use them ---- -The ArangoGraph Insights Platform has a structured set of resources that are subject to security and -access control: - -- Organizations -- Projects -- Deployments - -For each of these resources, you can perform various operations. -For example, you can create a project in an organization and create a deployment -inside a project. - -## Locked resources - -In ArangoGraph, you can lock the resources to prevent accidental deletion. When -a resource is locked, it cannot be deleted and must be unlocked first. - -The hierarchical structure of the resources (organization-project-deployment) -is used in the locking functionality: if a child resource is locked -(for example, a deployment), you cannot delete the parent project without -unlocking that deployment first. - -{{< info >}} -If you lock a backup policy of a deployment or an IP allowlist, CA certificate, -and IAM provider of a project, it is still possible to delete -the corresponding parent resource without unlocking those properties first. -{{< /info >}} - -## Policy - -Various actions in ArangoGraph require different permissions, which can be -granted to users via **roles**. - -The association of a member with a role is called a **role binding**. -All role bindings of a resource comprise a **policy**. - -Roles can be bound on an organization, project, and deployment level (listed in -the high to low level order, with lower levels inheriting permissions from their -parents). This means that there is a unique policy per resource (an organization, -a project, or a deployment). - -For example, an organization has exactly one policy, -which binds roles to members of the organization. These bindings are used to -give the users permissions to perform operations in this organization. -This is useful when, as an organization owner, you need to extend the permissions -for an organization member. - -{{< info >}} -Permissions linked to predefined roles vary between organization owners and -organization members. If you need to extend permissions for an organization -member, you can create a new role binding. The complete list of roles and -their respective permissions for both organization owners and members can be -viewed on the **Policy** page of an organization within the ArangoGraph dashboard. -{{< /info >}} - -### How to view, edit, or remove role bindings of a policy - -Decide whether you want to edit the policy for an organization, a project, -or a deployment: - -- **Organization**: In the main navigation, click the __Organization__ icon and - then click __Policy__. -- **Project**: In the main navigation, click the __Dashboard__ icon, then click - __Projects__, click the name of the desired project, and finally click __Policy__. -- **Deployment**: In the main navigation, click the __Dashboard__ icon, then - click __Deployments__, click the name of the desired deployment, and finally - click __Policy__. - -To delete a role binding, click the **Recycle Bin** icon in the **Actions** column. - -{{< info >}} -Currently, you cannot edit a role binding, you can only delete it. -{{< /info >}} - -![ArangoGraph Project Policy](../../../images/arangograph-policy-page.png) - -### How to add a role binding to a policy - -1. Navigate to the **Policy** tab of an organization, a project or a deployment. -2. Click the **New role binding** button. -3. Select one or more users and/or groups. -4. Select one or more roles you want to assign to the specified members. -5. Click **Create**. - -![ArangoGraph New Role Binding](../../../images/arangograph-new-policy-role-binding.png) - -## Roles - -Operations on resources in ArangoGraph require zero (just an authentication) or -more permissions. Since the -number of permissions is large and very detailed, it is not practical to assign -permissions directly to users. Instead, ArangoGraph uses **roles**. - -A role is a set of permissions. Roles can be bound to groups (preferably) -or individual users. You can create such bindings for the respective organization, -project, or deployment policy. - -There are predefined roles, but you can also create custom ones. - -![ArangoGraph Roles](../../../images/arangograph-access-control-roles.png) - -### Predefined roles - -Predefined roles are created by ArangoGraph and group related permissions together. -An example of a predefined role is `deployment-viewer`. This role -contains all permissions needed to view deployments in a project. - -Predefined roles cannot be deleted. Note that permissions linked to predefined -roles vary between organization owners and organization members. - -{{% comment %}} -Command to generate below list with (Git)Bash: - -export OASIS_TOKEN='<TOKEN>' -./oasisctl list roles --organization-id <ID> --format json | jq -r '.[] | select(.predefined == true) | "**\(.description)** (`\(.id)`):\n\(.permissions | split(", ") | map("- `\(.)`\n") | join(""))"' -{{% /comment %}} - -{{< details summary="List of predefined roles and their permissions" >}} - -{{</* tip */>}} -The roles below are described following this pattern: - -**Role description** (`role ID`): -- `Permission` -{{</* /tip */>}} - -**Audit Log Admin** (`auditlog-admin`): -- `audit.auditlog.create` -- `audit.auditlog.delete` -- `audit.auditlog.get` -- `audit.auditlog.list` -- `audit.auditlog.set-default` -- `audit.auditlog.test-https-post-destination` -- `audit.auditlog.update` - -**Audit Log Archive Admin** (`auditlog-archive-admin`): -- `audit.auditlogarchive.delete` -- `audit.auditlogarchive.get` -- `audit.auditlogarchive.list` - -**Audit Log Archive Viewer** (`auditlog-archive-viewer`): -- `audit.auditlogarchive.get` -- `audit.auditlogarchive.list` - -**Audit Log Attachment Admin** (`auditlog-attachment-admin`): -- `audit.auditlogattachment.create` -- `audit.auditlogattachment.delete` -- `audit.auditlogattachment.get` - -**Audit Log Attachment Viewer** (`auditlog-attachment-viewer`): -- `audit.auditlogattachment.get` - -**Audit Log Event Admin** (`auditlog-event-admin`): -- `audit.auditlogevent.delete` -- `audit.auditlogevents.get` - -**Audit Log Event Viewer** (`auditlog-event-viewer`): -- `audit.auditlogevents.get` - -**Audit Log Viewer** (`auditlog-viewer`): -- `audit.auditlog.get` -- `audit.auditlog.list` - -**Backup Administrator** (`backup-admin`): -- `backup.backup.copy` -- `backup.backup.create` -- `backup.backup.delete` -- `backup.backup.download` -- `backup.backup.get` -- `backup.backup.list` -- `backup.backup.restore` -- `backup.backup.update` -- `backup.feature.get` -- `data.deployment.restore-backup` - -**Backup Viewer** (`backup-viewer`): -- `backup.backup.get` -- `backup.backup.list` -- `backup.feature.get` - -**Backup Policy Administrator** (`backuppolicy-admin`): -- `backup.backuppolicy.create` -- `backup.backuppolicy.delete` -- `backup.backuppolicy.get` -- `backup.backuppolicy.list` -- `backup.backuppolicy.update` -- `backup.feature.get` - -**Backup Policy Viewer** (`backuppolicy-viewer`): -- `backup.backuppolicy.get` -- `backup.backuppolicy.list` -- `backup.feature.get` - -**Billing Administrator** (`billing-admin`): -- `billing.config.get` -- `billing.config.set` -- `billing.invoice.get` -- `billing.invoice.get-preliminary` -- `billing.invoice.get-statistics` -- `billing.invoice.list` -- `billing.organization.get` -- `billing.paymentmethod.create` -- `billing.paymentmethod.delete` -- `billing.paymentmethod.get` -- `billing.paymentmethod.get-default` -- `billing.paymentmethod.list` -- `billing.paymentmethod.set-default` -- `billing.paymentmethod.update` -- `billing.paymentprovider.list` - -**Billing Viewer** (`billing-viewer`): -- `billing.config.get` -- `billing.invoice.get` -- `billing.invoice.get-preliminary` -- `billing.invoice.get-statistics` -- `billing.invoice.list` -- `billing.organization.get` -- `billing.paymentmethod.get` -- `billing.paymentmethod.get-default` -- `billing.paymentmethod.list` -- `billing.paymentprovider.list` - -**CA Certificate Administrator** (`cacertificate-admin`): -- `crypto.cacertificate.create` -- `crypto.cacertificate.delete` -- `crypto.cacertificate.get` -- `crypto.cacertificate.list` -- `crypto.cacertificate.set-default` -- `crypto.cacertificate.update` - -**CA Certificate Viewer** (`cacertificate-viewer`): -- `crypto.cacertificate.get` -- `crypto.cacertificate.list` - -**Dataloader Administrator** (`dataloader-admin`): -- `dataloader.deployment.import` - -**Deployment Administrator** (`deployment-admin`): -- `data.cpusize.list` -- `data.deployment.create` -- `data.deployment.create-test-database` -- `data.deployment.delete` -- `data.deployment.get` -- `data.deployment.list` -- `data.deployment.pause` -- `data.deployment.rebalance-shards` -- `data.deployment.resume` -- `data.deployment.rotate-server` -- `data.deployment.update` -- `data.deployment.update-scheduled-root-password-rotation` -- `data.deploymentfeatures.get` -- `data.deploymentmodel.list` -- `data.deploymentprice.calculate` -- `data.diskperformance.list` -- `data.limits.get` -- `data.nodesize.list` -- `data.presets.list` -- `monitoring.logs.get` -- `monitoring.metrics.get` -- `notification.deployment-notification.list` -- `notification.deployment-notification.mark-as-read` -- `notification.deployment-notification.mark-as-unread` - -**Deployment Content Administrator** (`deployment-content-admin`): -- `data.cpusize.list` -- `data.deployment.create-test-database` -- `data.deployment.get` -- `data.deployment.list` -- `data.deploymentcredentials.get` -- `data.deploymentfeatures.get` -- `data.deploymentmodel.list` -- `data.deploymentprice.calculate` -- `data.diskperformance.list` -- `data.limits.get` -- `data.nodesize.list` -- `data.presets.list` -- `monitoring.logs.get` -- `monitoring.metrics.get` -- `notification.deployment-notification.list` -- `notification.deployment-notification.mark-as-read` -- `notification.deployment-notification.mark-as-unread` - -**Deployment Full Access User** (`deployment-full-access-user`): -- `data.deployment.full-access` - -**Deployment Read Only User** (`deployment-read-only-user`): -- `data.deployment.read-only-access` - -**Deployment Viewer** (`deployment-viewer`): -- `data.cpusize.list` -- `data.deployment.get` -- `data.deployment.list` -- `data.deploymentfeatures.get` -- `data.deploymentmodel.list` -- `data.deploymentprice.calculate` -- `data.diskperformance.list` -- `data.limits.get` -- `data.nodesize.list` -- `data.presets.list` -- `monitoring.metrics.get` -- `notification.deployment-notification.list` -- `notification.deployment-notification.mark-as-read` -- `notification.deployment-notification.mark-as-unread` - -**Deployment Profile Viewer** (`deploymentprofile-viewer`): -- `deploymentprofile.deploymentprofile.list` - -**Example Datasets Viewer** (`exampledataset-viewer`): -- `example.exampledataset.get` -- `example.exampledataset.list` - -**Example Dataset Installation Administrator** (`exampledatasetinstallation-admin`): -- `example.exampledatasetinstallation.create` -- `example.exampledatasetinstallation.delete` -- `example.exampledatasetinstallation.get` -- `example.exampledatasetinstallation.list` -- `example.exampledatasetinstallation.update` - -**Example Dataset Installation Viewer** (`exampledatasetinstallation-viewer`): -- `example.exampledatasetinstallation.get` -- `example.exampledatasetinstallation.list` - -**Group Administrator** (`group-admin`): -- `iam.group.create` -- `iam.group.delete` -- `iam.group.get` -- `iam.group.list` -- `iam.group.update` - -**Group Viewer** (`group-viewer`): -- `iam.group.get` -- `iam.group.list` - -**IAM provider Administrator** (`iamprovider-admin`): -- `security.iamprovider.create` -- `security.iamprovider.delete` -- `security.iamprovider.get` -- `security.iamprovider.list` -- `security.iamprovider.set-default` -- `security.iamprovider.update` - -**IAM provider Viewer** (`iamprovider-viewer`): -- `security.iamprovider.get` -- `security.iamprovider.list` - -**IP allowlist Administrator** (`ipwhitelist-admin`): -- `security.ipallowlist.create` -- `security.ipallowlist.delete` -- `security.ipallowlist.get` -- `security.ipallowlist.list` -- `security.ipallowlist.update` - -**IP allowlist Viewer** (`ipwhitelist-viewer`): -- `security.ipallowlist.get` -- `security.ipallowlist.list` - -**Metrics Administrator** (`metrics-admin`): -- `metrics.endpoint.get` -- `metrics.token.create` -- `metrics.token.delete` -- `metrics.token.get` -- `metrics.token.list` -- `metrics.token.revoke` -- `metrics.token.update` - -**Migration Administrator** (`migration-admin`): -- `replication.deploymentmigration.create` -- `replication.deploymentmigration.delete` -- `replication.deploymentmigration.get` - -**MLServices Admin** (`mlservices-admin`): -- `ml.mlservices.get` - -**Notebook Administrator** (`notebook-admin`): -- `notebook.model.list` -- `notebook.notebook.create` -- `notebook.notebook.delete` -- `notebook.notebook.get` -- `notebook.notebook.list` -- `notebook.notebook.pause` -- `notebook.notebook.resume` -- `notebook.notebook.update` - -**Notebook Executor** (`notebook-executor`): -- `notebook.notebook.execute` - -**Notebook Viewer** (`notebook-viewer`): -- `notebook.model.list` -- `notebook.notebook.get` -- `notebook.notebook.list` - -**Organization Administrator** (`organization-admin`): -- `billing.organization.get` -- `resourcemanager.organization-invite.create` -- `resourcemanager.organization-invite.delete` -- `resourcemanager.organization-invite.get` -- `resourcemanager.organization-invite.list` -- `resourcemanager.organization-invite.update` -- `resourcemanager.organization.delete` -- `resourcemanager.organization.get` -- `resourcemanager.organization.update` - -**Organization Viewer** (`organization-viewer`): -- `billing.organization.get` -- `resourcemanager.organization-invite.get` -- `resourcemanager.organization-invite.list` -- `resourcemanager.organization.get` - -**Policy Administrator** (`policy-admin`): -- `iam.policy.get` -- `iam.policy.update` - -**Policy Viewer** (`policy-viewer`): -- `iam.policy.get` - -**Prepaid Deployment Viewer** (`prepaid-deployment-viewer`): -- `prepaid.prepaiddeployment.get` -- `prepaid.prepaiddeployment.list` - -**Private Endpoint Service Administrator** (`privateendpointservice-admin`): -- `network.privateendpointservice.create` -- `network.privateendpointservice.get` -- `network.privateendpointservice.get-by-deployment-id` -- `network.privateendpointservice.get-feature` -- `network.privateendpointservice.update` - -**Private Endpoint Service Viewer** (`privateendpointservice-viewer`): -- `network.privateendpointservice.get` -- `network.privateendpointservice.get-by-deployment-id` -- `network.privateendpointservice.get-feature` - -**Project Administrator** (`project-admin`): -- `resourcemanager.project.create` -- `resourcemanager.project.delete` -- `resourcemanager.project.get` -- `resourcemanager.project.list` -- `resourcemanager.project.update` - -**Project Viewer** (`project-viewer`): -- `resourcemanager.project.get` -- `resourcemanager.project.list` - -**Replication Administrator** (`replication-admin`): -- `replication.deployment.clone-from-backup` -- `replication.deploymentreplication.get` -- `replication.deploymentreplication.update` -- `replication.migration-forwarder.upgrade-connection` - -**Role Administrator** (`role-admin`): -- `iam.role.create` -- `iam.role.delete` -- `iam.role.get` -- `iam.role.list` -- `iam.role.update` - -**Role Viewer** (`role-viewer`): -- `iam.role.get` -- `iam.role.list` - -**SCIM Administrator** (`scim-admin`): -- `scim.user.add` -- `scim.user.delete` -- `scim.user.get` -- `scim.user.list` -- `scim.user.update` - -**User Administrator** (`user-admin`): -- `iam.user.get-personal-data` -- `iam.user.update` - -{{< /details >}} - -### How to create a custom role - -1. In the main navigation menu, click **Access Control**. -2. On the **Roles** tab, click **New role**. -3. Enter a name and optionally a description for the new role. -4. Select the required permissions. -5. Click **Create**. - -![ArangoGraph New Role](../../../images/arangograph-create-role.png) - -### How to view, edit or remove a custom role - -1. In the main navigation menu, click **Access Control**. -2. On the **Roles** tab, click: - - A role name or the **eye** icon in the **Actions** column to view the role. - - The **pencil** icon in the **Actions** column to edit the role. - You can also view a role and click the **Edit** button in the detail view. - - The **recycle bin** icon to delete the role. - You can also view a role and click the **Delete** button in the detail view. - -## Permissions - -Each operation done on a resource requires zero (just authentication) or more **permissions**. -A permission is a constant string such as `resourcemanager.project.create`, -following this schema: `<api>.<kind>.<verb>`. - -Permissions are solely defined by the ArangoGraph API. - -{{% comment %}} -Retrieved with the below command, with manual adjustments: -oasisctl list permissions - -Note that if the tier is "internal", there is an `internal-dashboard` API that should be excluded in below list! -{{% /comment %}} - -| API | Kind | Verbs -|:--------------------|:-----------------------------|:------------------------------------------- -| `audit` | `auditlogarchive` | `delete`, `get`, `list` -| `audit` | `auditlogattachment` | `create`, `delete`, `get` -| `audit` | `auditlogevents` | `get` -| `audit` | `auditlogevent` | `delete` -| `audit` | `auditlog` | `create`, `delete`, `get`, `list`, `set-default`, `test-https-post-destination`, `update` -| `backup` | `backuppolicy` | `create`, `delete`, `get`, `list`, `update` -| `backup` | `backup` | `copy`, `create`, `delete`, `download`, `get`, `list`, `restore`, `update` -| `backup` | `feature` | `get` -| `billing` | `config` | `get`, `set` -| `billing` | `invoice` | `get`, `get-preliminary`, `get-statistics`, `list` -| `billing` | `organization` | `get` -| `billing` | `paymentmethod` | `create`, `delete`, `get`, `get-default`, `list`, `set-default`, `update` -| `billing` | `paymentprovider` | `list` -| `crypto` | `cacertificate` | `create`, `delete`, `get`, `list`, `set-default`, `update` -| `dataloader` | `deployment` | `import` -| `data` | `cpusize` | `list` -| `data` | `deploymentcredentials` | `get` -| `data` | `deploymentfeatures` | `get` -| `data` | `deploymentmodel` | `list` -| `data` | `deploymentprice` | `calculate` -| `data` | `deployment` | `create`, `create-test-database`, `delete`, `full-access`, `get`, `list`, `pause`, `read-only-access`, `rebalance-shards`, `restore-backup`, `resume`, `rotate-server`, `update`, `update-scheduled-root-password-rotation` -| `data` | `diskperformance` | `list` -| `data` | `limits` | `get` -| `data` | `nodesize` | `list` -| `data` | `presets` | `list` -| `deploymentprofile` | `deploymentprofile` | `list` -| `example` | `exampledatasetinstallation` | `create`, `delete`, `get`, `list`, `update` -| `example` | `exampledataset` | `get`, `list` -| `iam` | `group` | `create`, `delete`, `get`, `list`, `update` -| `iam` | `policy` | `get`, `update` -| `iam` | `role` | `create`, `delete`, `get`, `list`, `update` -| `iam` | `user` | `get-personal-data`, `update` -| `metrics` | `endpoint` | `get` -| `metrics` | `token` | `create`, `delete`, `get`, `list`, `revoke`, `update` -| `ml` | `mlservices` | `get` -| `monitoring` | `logs` | `get` -| `monitoring` | `metrics` | `get` -| `network` | `privateendpointservice` | `create`, `get`, `get-by-deployment-id`, `get-feature`, `update` -| `notebook` | `model` | `list` -| `notebook` | `notebook` | `create`, `delete`, `execute`, `get`, `list`, `pause`, `resume`, `update` -| `notification` | `deployment-notification` | `list`, `mark-as-read`, `mark-as-unread` -| `prepaid` | `prepaiddeployment` | `get`, `list` -| `replication` | `deploymentmigration` | `create`, `delete`, `get` -| `replication` | `deploymentreplication` | `get`, `update` -| `replication` | `deployment` | `clone-from-backup` -| `replication` | `migration-forwarder` | `upgrade-connection` -| `resourcemanager` | `organization-invite` | `create`, `delete`, `get`, `list`, `update` -| `resourcemanager` | `organization` | `delete`, `get`, `update` -| `resourcemanager` | `project` | `create`, `delete`, `get`, `list`, `update` -| `scim` | `user` | `add`, `delete`, `get`, `list`, `update` -| `security` | `iamprovider` | `create`, `delete`, `get`, `list`, `set-default`, `update` -| `security` | `ipallowlist` | `create`, `delete`, `get`, `list`, `update` - -### Permission inheritance - -Each resource (organization, project, deployment) has its own policy, but this does not mean that you have to -repeat role bindings in all these policies. - -Once you assign a role to a user (or group of users) in a policy at one level, -all the permissions of this role are inherited in lower levels - -permissions are inherited downwards from an organization to its projects and -from a project to its deployments. - -For more general permissions, which you want to be propagated to other levels, -add a role for a user/group at the organization level. -For example, if you bind the `deployment-viewer` role to user `John` in the -organization policy, `John` will have the role permissions in all projects of -that organization and all deployments of the projects. - -For more restrictive permissions, which you don't necessarily want to be -propagated to other levels, add a role at the project or even deployment level. -For example, if you bind the `deployment-viewer` role to user `John` -in a project, `John` will have the role permissions in -this project as well as in all the deployments of it, but not -in other projects of the parent organization. - -**Inheritance example** - -- Let's assume you have a group called "Deployers" which includes users who deal with deployments. -- Then you create a role "Deployment Viewer", containing - `data.deployment.get` and `data.deployment.list` permissions. -- You can now add a role binding of the "Deployers" group to the "Deployment Viewer" role. -- If you add the binding to an organization policy, members of this group - will be granted the defined permissions for the organization, all its projects and all its deployments. -- If you add the role binding to a policy of project ABC, members of this group will be granted - the defined permissions for project ABC only and its deployments, but not for - other projects and their deployments. -- If you add the role binding to a policy of deployment X, members of this - group will be granted the defined permissions for deployment X only, and not - any other deployment of the parent project or any other project of the organization. - -The "Deployment Viewer" role is effective for the following entities depending -on which policy the binding is added to: - -Role binding added to →<br>Role effective on ↓ | Organization policy | Project ABC's policy | Deployment X's policy of project ABC | -|:---:|:---:|:---:|:---:| -Organization, its projects and deployments | ✓ | — | — -Project ABC and its deployments | ✓ | ✓ | — -Project DEF and its deployments | ✓ | — | — -Deployment X of project ABC | ✓ | ✓ | ✓ -Deployment Y of project ABC | ✓ | ✓ | — -Deployment Z of project DEF | ✓ | — | — - -## Restricting access to organizations - -To enhance security, you can implement the following restrictions via [Oasisctl](../oasisctl/_index.md): - -1. Limit allowed authentication providers. -2. Specify an allowed domain list. - -{{< info >}} -Note that users who do not meet the restrictions will not be granted permissions for any resource in -the organization. These users can still be members of the organization. -{{< /info >}} - -Using the first option, you can limit which **authentication providers** are -accepted for users trying to access an organization in ArangoGraph. -The following commands are available to configure this option: - -- `oasisctl get organization authentication providers` - allows you to see which - authentication providers are enabled for accessing a specific organization -- `oasisctl update organization authentication providers` - allows you to update - a list of authentication providers for an organization to which the - authenticated user has access - - `--enable-github` - if set, allow access from user accounts authenticated via Github - - `--enable-google` - if set, allow access from user accounts authenticated via Google - - `--enable-microsoft` - if set, allow access from user accounts authenticated via Microsoft - - `--enable-username-password` - if set, allow access from user accounts - authenticated via a username/password - -Using the second option, you can configure a **list of domains**, and only users -with email addresses from the specified domains will be able to access an -organization. The following commands are available to configure this option: - -- `oasisctl get organization email domain restrictions -o <your_organization_id>` - - allows you to see which domains are in the allowed list for a specific organization -- `oasisctl update organization email domain restrictions -o <your_organization_id> --allowed-domain=<domain_name1> --allowed-domain=<domain_name2>` - - allows you to update a list of the allowed domains for a specific organization -- `oasisctl update organization email domain restrictions -o <your_organization_id> --allowed-domain=` - - allows you to reset a list and accept any domains for accessing a specific organization - -## Using an audit log - -{{< info >}} -To enable the audit log feature, get in touch with the ArangoGraph team via **Request Help**, available in the left sidebar menu of the ArangoGraph Dashboard. -{{< /info >}} - -To have a better overview of the events happening in your ArangoGraph organization, -you can set up an audit log, which will track and log auditing information for you. -The audit log is created on the organization level, then you can use the log for -projects belonging to that organization. - -***To create an audit log*** - -1. In the main navigation menu, click **Access Control** in the **Organization** section. -2. Open the **Audit logs** tab and click the **New audit log** button. -3. In the dialog, fill out the following settings: - - - **Name** - enter a name for your audit log. - - **Description** - enter an optional description for your audit log. - - **Destinations** - specify one or several destinations to which you want to - upload the audit log. If you choose **Upload to cloud**, the log will be - available on the **Audit logs** tab of your organization. To send the log - entries to your custom destination, specify a destination URL with - authentication parameters (the **HTTP destination** option). - - {{< info >}} - The **Upload to cloud** option is not available for the free-to-try tier. - {{< /info >}} - - - **Excluded topics** - select topics that will not be included in the log. - Please note, that some are excluded by default (for example, `audit-document`). - - {{< warning >}} - Enabling the audit log for all events will have a negative impact on performance. - {{< /warning >}} - - - **Confirmation** - confirm that logging auditing events increases the price of your deployments. - - ![ArangoGraph audit log](../../../images/arangograph-audit-log.png) - -4. Click **Create** to add the audit log. You can now use it in the projects - belonging to your organization. diff --git a/site/content/3.13/arangograph/security-and-access-control/single-sign-on/_index.md b/site/content/3.13/arangograph/security-and-access-control/single-sign-on/_index.md deleted file mode 100644 index 1004352974..0000000000 --- a/site/content/3.13/arangograph/security-and-access-control/single-sign-on/_index.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: Single Sign-On (SSO) in ArangoGraph -menuTitle: Single Sign-On -weight: 10 -description: >- - ArangoGraph supports **Single Sign-On** (SSO) authentication using - **Security Assertion Markup language 2.0** (SAML 2.0) ---- -{{< info >}} -To enable the Single Sign-On (SSO) feature, get in touch with the ArangoGraph -team via **Request Help**, available in the left sidebar menu of the -ArangoGraph Dashboard. -{{< /info >}} - -## About SAML 2.0 - -The Security Assertion Markup language 2.0 (SAML 2.0) is an open standard created -to provide cross-domain single sign-on (SSO). It allows you to authenticate in -multiple web applications by using a single set of login credentials. - -SAML SSO works by transferring user authentication data from the identity -provider (IdP) to the service provider (SP) through an exchange of digitally -signed XML documents. - -## IdP-initiated versus SP-initiated SSO - -There are generally two methods for starting Single Sign-On: - -- **Identity Provider Initiated** (IdP-initiated): - You log into the Identity Provider and are then redirected to ArangoGraph. -- **Service Provider Initiated** (SP-initiated): - You access the ArangoGraph site which then redirects you to the - Identity Provider for authentication. - -**ArangoGraph only supports SP-initiated SSO** because IdP-Initiated SSO is -vulnerable to Man-in-the-Middle attacks. In order to initiate the SSO login -process, you must start at ArangoGraph. - -## Configure SAML 2.0 using Okta - -You can enable SSO for your ArangoGraph organization using Okta as an Identity -Provider (IdP). For more information about Okta, please refer to the -[Okta Documentation](https://help.okta.com/en-us/Content/index.htm?cshid=csh-index). - -### Create the SAML app integration in Okta - -1. Sign in to your Okta account and select **Applications** from the left sidebar menu. -2. Click **Create App Integration**. -3. In the **Create a new app integration** dialog, select **SAML 2.0**. - - ![ArangoGraph Create Okta App Integration](../../../../images/arangograph-okta-create-integration.png) -4. In the **General Settings**, specify a name for your integration and click **Next**. - - ![ArangoGraph Okta Integration Name](../../../../images/arangograph-okta-integration-name.png) -5. Configure the SAML settings: - - For **Single sign-on URL**, use `https://auth.arangodb.com/login/callback?connection=ORG_ID` - - For **Audience URI (SP Entity ID)**, use `urn:auth0:arangodb:ORG_ID` - - ![ArangoGraph Okta SAML General Settings](../../../../images/arangograph-okta-saml-general-settings.png) - -6. Replace **ORG_ID** with your organization identifier from the - ArangoGraph Dashboard. To find your organization ID, go to the **User Toolbar** - in the top right corner, which is accessible from every view of the Dashboard, - and click **My organizations**. - - If, for example, your organization ID is 14587062, here are the values you - would use when configuring the SAML settings: - - `https://auth.arangodb.com/login/callback?connection=14587062` - - `urn:auth0:arangodb:14587062` - - ![ArangoGraph Organization ID](../../../../images/arangograph-organization-id.png) -7. In the **Attribute Statements** section, add custom attributes as seen in the image below: - - email: `user.email` - - given_name: `user.firstName` - - family_name: `user.lastName` - - picture: `user.profileUrl` - - This step consists of a mapping between the ArangoGraph attribute names and - Okta attribute names. The values of these attributes are automatically filled - in based on the users list that is defined in Okta. - - ![ArangoGraph Okta SAML Attributes](../../../../images/arangograph-okta-saml-attributes.png) -8. Click **Next**. -9. In the **Configure feedback** section, select **I'm an Okta customer adding an internal app**. -10. Click **Finish**. The SAML app integration is now created. - -### SAML Setup - -After creating the app integration, you must perform the SAML setup to finalize -the SSO configuration. - -1. Go to the **SAML Signing Certificates** section, displayed under the **Sign On** tab. -2. Click **View SAML setup instructions**. - - ![ArangoGraph Okta SAML Setup](../../../../images/arangograph-okta-saml-setup.png) -3. The setup instructions include the following items: - - **Identity Provider Single Sign-On URL** - - **Identity Provider Issuer** - - **X.509 Certificate** -4. Copy the IdP settings, download the certificate using the - **Download X.509 certificate** button, and share them with the ArangoGraph - team via an ArangoGraph Support Ticket in order to complete the SSO - configuration. - diff --git a/site/content/3.13/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md b/site/content/3.13/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md deleted file mode 100644 index 8cf40b8009..0000000000 --- a/site/content/3.13/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: SCIM Provisioning -menuTitle: SCIM Provisioning -weight: 5 -description: >- - How to enable SCIM provisioning with Okta for your ArangoGraph project ---- -ArangoGraph provides support to control and manage members access in -ArangoGraph organizations with the -**System for Cross-domain Identity Management** (SCIM) provisioning. -This enables you to propagate to ArangoGraph any user access changes by using -the dedicated API. - -{{< info >}} -To enable the SCIM feature, get in touch with the ArangoGraph team via -**Request Help**, available in the left sidebar menu of the ArangoGraph Dashboard. -{{< /info >}} - -## About SCIM - -[SCIM](https://www.rfc-editor.org/rfc/rfc7644), or the System -for Cross-domain Identity Management [specification](http://www.simplecloud.info/), -is an open standard designed to manage user identity information. -SCIM provides a defined schema for representing users, and a RESTful -API to run CRUD operations on these user resources. - -The SCIM specification expects the following operations so that the SSO system -can sync the information about user resources in real time: - -- `GET /Users` - List all users. -- `GET /Users/:user_id` - Get details for a given user ID. -- `POST /Users` - Invite a new user to ArangoGraph. -- `PUT /Users/:user_id` - Update a given user ID. -- `DELETE /Users/:user_id` - Delete a specified user ID. - -ArangoGraph organization administrators can generate an API key for a specific organization. -The API token consists of a key and a secret. Using this key and secret as the -Basic Authentication Header (Basic Auth) in SCIM provisioning, you can access the APIs and -manage the user resources. - -To learn how to generate a new API key in the ArangoGraph Dashboard, see the -[API Keys](../../my-account.md#api-keys) section. - -{{< info >}} -When creating an API key, it is required to select an organization from the -list. -{{< /info >}} - -## Enable SCIM provisioning in Okta - -To enable SCIM provisioning, you first need to create an SSO integration that -supports the SCIM provisioning feature. - -1. To enable SCIM provisioning for your integration, go to the **General** tab. -2. In the **App Settings** section, select **Enable SCIM provisioning**. -3. Navigate to the **Provisioning** tab. The SCIM connection settings are - displayed under **Settings > Integration**. -4. Fill in the following fields: - - For **SCIM connector base URL**, use `https://dashboard.arangodb.cloud/api/scim/v1` - - For **Unique identifier field for users**, use `userName` -5. For **Supported provisioning actions**, enable the following: - - **Import New Users and Profile Updates** - - **Push New Users** - - **Push Profile Updates** -6. From the **Authentication Mode** menu, select the **Basic Auth** option. - To authenticate using this mode, you need to provide the username and password - for the account that handles the SCIM actions - in this case ArangoGraph. -7. Go to the ArangoGraph Dashboard and create a new API key ID and Secret. - - ![ArangoGraph Create new API key](../../../../images/arangograph-okta-api-key.png) - - Make sure to select one organization from the list and do not set any - value in the **Time to live** field. For more information, - see [How to create a new API key](../../my-account.md#how-to-create-a-new-api-key). -8. Use these authentication tokens as username and password when using the - **Basic Auth** mode and click **Save**. diff --git a/site/content/3.13/arangograph/security-and-access-control/x-509-certificates.md b/site/content/3.13/arangograph/security-and-access-control/x-509-certificates.md deleted file mode 100644 index d8d694a139..0000000000 --- a/site/content/3.13/arangograph/security-and-access-control/x-509-certificates.md +++ /dev/null @@ -1,178 +0,0 @@ ---- -title: X.509 Certificates in ArangoGraph -menuTitle: X.509 Certificates -weight: 5 -description: >- - X.509 certificates in ArangoGraph are utilized for encrypted remote administration. - The communication with and between the servers of an ArangoGraph deployment is - encrypted using the TLS protocol ---- -X.509 certificates are digital certificates that are used to verify the -authenticity of a website, user, or organization using a public key infrastructure -(PKI). They are used in various applications, including SSL/TLS encryption, -which is the basis for HTTPS - the primary protocol for securing communication -and data transfer over a network. - -The X.509 certificate format is a standard defined by the -[International Telecommunication Union (ITU)](https://www.itu.int/en/Pages/default.aspx) -and contains information such as the name of the certificate holder, the public -key associated with the certificate, the certificate's issuer, and the -certificate's expiration date. An X.509 certificate can be signed by a -certificate authority (CA) or self-signed. - -ArangoGraph is using: -- **well-known X.509 certificates** created by -[Let's Encrypt](https://letsencrypt.org/) -- **self-signed X.509 certificates** created by ArangoGraph platform - -## Certificate chains - -A certificate chain, also called the chain of trust, is a hierarchical structure -that links together a series of digital certificates. The trust in the chain is -established by verifying the identity of the issuer of each certificate in the -chain. The root of the chain is a trusted third-party, such as a certificate -authority (CA). The CA issues a certificate to an organization, which in turn -can issue certificates to servers and other entities. - -For example, when you visit a website with an SSL/TLS certificate, the browser -checks the chain of trust to verify the authenticity of the digital certificate. -The browser checks to see if the root certificate is trusted, and if it is, it -trusts the chain of certificates that lead to the end-entity certificate. -If any of the certificates in the chain are invalid, expired, or revoked, the -browser does not trust the digital certificate. - -## X.509 certificates in ArangoGraph - -Each ArangoGraph deployment is accessible on different port numbers: -- default port `8529`, `443` -- high port `18529` - -Each ArangoGraph Notebook is accessible on different port numbers: -- default port `8840`, `443` -- high port `18840` - -Metrics are accessible on different port numbers: -- default port `8829`, `443` -- high port `18829` - -The distinction between these port numbers is in the certificate used for the -TLS connection. - -{{< info >}} -The default ports (`8529` and `443`) always serve the well-known certificate. -The [auto login to database UI](../deployments/_index.md#auto-login-to-database-ui) -feature is only available on the `443` port and is enabled by default. -{{< /info >}} - -### Well-known X.509 certificates - -**Well-known X.509 certificates** created by -[Let's Encrypt](https://letsencrypt.org/) are used on the -default ports, `8529` and `443`. - -This type of certificate has a lifetime of 5 years and is rotated automatically. -It is recommended to use well-known certificates, as this eases access of a -deployment in your browser. - -{{< info >}} -The well-known certificate is a wildcard certificate and cannot contain -Subject Alternative Names (SANs). To include a SAN field, please use the -self-signed certificate option. -{{< /info >}} - -### Self-signed X.509 certificates - -**Self-signed X.509 certificates** are used on the high ports, i.e. `18529`. -This type of certificate has a lifetime of 1 year, and it is created by the -ArangoGraph platform. It is also rotated automatically before the expiration -date. - -{{< info >}} -Unless you switch off the **Use well-known certificate** option in the -certificate generation, both the default and high port serve the same -self-signed certificate. -{{< /info >}} - -### Subject Alternative Name (SAN) - -The Subject Alternative Name (SAN) is an extension to the X.509 specification -that allows you to specify additional host names for a single SSL certificate. - -When using [private endpoints](../deployments/private-endpoints.md), -you can specify custom domain names. Note that these are added **only** to -the self-signed certificate as Subject Alternative Name (SAN). - -## How to create a new certificate - -1. Click a project name in the **Projects** section of the main navigation. -2. Click **Security**. -3. In the **Certificates** section, click: - - The **New certificate** button to create a new certificate. - - A name or the **eye** icon in the **Actions** column to view a certificate. - The dialog that opens provides commands for installing and uninstalling - the certificate through a console. - - The **pencil** icon to edit a certificate. - You can also view a certificate and click the **Edit** button. - - The **tag** icon to make the certificate the new default. - - The **recycle bin** icon to delete a certificate. - -![ArangoGraph Create New Certificate](../../../images/arangograph-new-certificate.png) - -## How to install a certificate - -Certificates that have the **Use well-known certificate** option enabled do -not need any installation and are supported by almost all web browsers -automatically. - -When creating a self-signed certificate that has the **Use well-known certificate** -option disabled, the certificate needs to be installed on your local machine as -well. This operation varies between operating systems. To install a self-signed -certificate on your local machine, open the certificate and follow the -installation instructions. - -![ArangoGraph Certificates](../../../images/arangograph-cert-page-with-cert-present.png) - -![ArangoGraph Certificate Install Instructions](../../../images/arangograph-cert-install-instructions.png) - -You can also extract the information from all certificates in the chain using the -`openssl` tool. - -- For **well-known certificates**, run the following command: - ``` - openssl s_client -showcerts -servername <123456abcdef>.arangodb.cloud -connect <123456abcdef>.arangodb.cloud:8529 </dev/null - ``` - -- For **self-signed certificates**, run the following command: - ``` - openssl s_client -showcerts -servername <123456abcdef>.arangodb.cloud -connect <123456abcdef>.arangodb.cloud:18529 </dev/null - ``` - -Note that `<123456abcdef>` is a placeholder that needs to be replaced with the -unique ID that is part of your ArangoGraph deployment endpoint URL. - -## How to connect to your application - -[ArangoDB drivers](../../develop/drivers/_index.md), also called connectors, allow you to -easily connect ArangoGraph deployments to your application. - -1. Navigate to **Deployments** and click the **View** button to show the - deployment page. -2. In the **Quick start** section, click the **Connecting drivers** button. -3. Select your programming language, i.e. Go, Java, Python, etc. -4. Follow the examples to connect a driver to your deployment. They include - code examples on how to use certificates in your application. - -![ArangoGraph Connecting Drivers](../../../images/arangograph-connecting-drivers.png) - -## Certificate Rotation - -Every certificate has a self-signed root certificate that is going to expire. -When certificates that are used in existing deployments are about to expire, -an automatic rotation of the certificates is triggered. This means that the -certificate is cloned (all existing settings are copied over to a new certificate) -and all affected deployments then start using the cloned certificate. - -Based on the type of certificate used, you may also need to install the new -certificate on your local machine. For example, self-signed certificates require -installation. To prevent any downtime, it is recommended to manually create a -new certificate and apply the required changes prior to the expiration date. diff --git a/site/content/3.13/data-science/graphrag/_index.md b/site/content/3.13/data-science/graphrag/_index.md deleted file mode 100644 index a58b76c7e3..0000000000 --- a/site/content/3.13/data-science/graphrag/_index.md +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: GraphRAG -menuTitle: GraphRAG -weight: 10 -description: >- - ArangoDB's GraphRAG solution combines graph-based retrieval-augmented generation - with Large Language Models (LLMs) for turbocharged GenAI solutions -aliases: - llm-knowledge-graphs ---- -{{< tag "ArangoDB Platform" >}} - -{{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. -{{< /tip >}} - -## Introduction - -Large language models (LLMs) and knowledge graphs are two prominent and -contrasting concepts, each possessing unique characteristics and functionalities -that significantly impact the methods we employ to extract valuable insights from -constantly expanding and complex datasets. - -LLMs, such as those powering OpenAI's ChatGPT, represent a class of powerful language -transformers. These models leverage advanced neural networks to exhibit a -remarkable proficiency in understanding, generating, and participating in -contextually-aware conversations. - -On the other hand, knowledge graphs contain carefully structured data and are -designed to capture intricate relationships among discrete and seemingly -unrelated information. - -ArangoDB's unique capabilities and flexible integration of knowledge graphs and -LLMs provide a powerful and efficient solution for anyone seeking to extract -valuable insights from diverse datasets. - -The GraphRAG component of the GenAI Suite brings all the capabilities -together with an easy-to-use interface, so you can make the knowledge accessible -to your organization. - -GraphRAG is particularly valuable for use cases like the following: -- Applications requiring in-depth knowledge retrieval -- Contextual question answering -- Reasoning over interconnected information - -## How GraphRAG works - -ArangoDB's GraphRAG solution democratizes the creation and usage of knowledge -graphs with a unique combination of vector search, graphs, and LLMs (privately or publicly hosted) -in a single product. - -The overall workflow involves the following steps: -1. **Chunking**: - - Breaking down raw documents into text chunks -2. **Entity and relation extraction for Knowledge Graph construction**: - - LLM-assisted description of entities and relations - - Entities get inserted as nodes with embeddings - - Relations get inserted as edges, these include: entity-entity, entity-chunk, chunk-document -3. **Topology-based clustering into mini-topics (called communities)**: - - Each entity points to its community - - Each community points to its higher-level community, if available - (mini-topics point to major topics) -4. **LLM-assisted community summarization**: - - Community summarization is based on all information available about each topic - -### Turn text files into a Knowledge Graph - -The Importer service is the entry point of the GraphRAG pipeline. It takes a -raw text file as input, processes it using an LLM to extract entities and -relationships, and generates a Knowledge Graph. The Knowledge Graph is then -stored in an ArangoDB database for further use. The Knowledge Graph represents -information in a structured graph format, allowing efficient querying and retrieval. - -1. Pre-process the raw text file to identify entities and their relationships. -2. Use LLMs to infer connections and context, enriching the Knowledge Graph. -3. Store the generated Knowledge Graph in the database for retrieval and reasoning. - -For detailed information about the service, see the -[Importer](services/importer.md) service documentation. - -### Extract information from the Knowledge Graph - -The Retriever service enables intelligent search and retrieval of information -from your previously created Knowledge Graph. -You can extract information from Knowledge Graphs using two distinct methods: -- Global retrieval -- Local retrieval - -For detailed information about the service, see the -[Retriever](services/retriever.md) service documentation. - -#### Global retrieval - -Global retrieval focuses on: -- Extracting information from the entire Knowledge Graph, regardless of specific - contexts or constraints. -- Provides a comprehensive overview and answers queries that span across multiple - entities and relationships in the graph. - -**Use cases:** -- Answering broad questions that require a holistic understanding of the Knowledge Graph. -- Aggregating information from diverse parts of the Knowledge Graph for high-level insights. - -**Example query:** - -Global retrieval can answer questions like _**What are the main themes or topics covered in the document**_? - -During import, the entire Knowledge Graph is analyzed to identify and summarize -the dominant entities, their relationships, and associated themes. Global -retrieval uses these community summaries to answer questions from different -perspectives, then the information gets aggregated into the final response. - -#### Local retrieval - -Local retrieval is a more focused approach for: -- Queries that are constrained to specific subgraphs or contextual clusters - within the Knowledge Graph. -- Targeted and precise information extraction, often using localized sections - of the Knowledge Graph. - -**Use cases:** -- Answering detailed questions about a specific entity or a related group of entities. -- Retrieving information relevant to a particular topic or section in the Knowledge Graph. - -**Example query:** - -Local retrieval can answer questions like _**What is the relationship between entity X and entity Y**_? - -Local queries use hybrid search (semantic and lexical) over the Entities -collection, and then it expands that subgraph over related entities, relations -(and its LLM-generated verbal descriptions), text chunks, and communities. - -### Private LLMs - -If you're working in an air-gapped environment or need to keep your data -private, you can use the private LLM mode with -[Triton Inference Server](services/triton-inference-server.md). - -This option allows you to run the service completely within your own -infrastructure. The Triton Inference Server is a crucial component when -running in private LLM mode. It serves as the backbone for running your -language (LLM) and embedding models on your own machines, ensuring your -data never leaves your infrastructure. The server handles all the complex -model operations, from processing text to generating embeddings, and provides -both HTTP and gRPC interfaces for communication. - -### Public LLMs - -Alternatively, if you prefer a simpler setup and don't have specific privacy -requirements, you can use the public LLM mode. This option connects to cloud-based -services like OpenAI's models via the OpenAI API or a large array of models -(Gemini, Anthropic, publicly hosted open-source models, etc.) via the OpenRouter option. - -## Limitations - -The pre-release version of ArangoDB GraphRAG has the following limitations: - -- You can only import a single file. -- The knowledge graph generated from the file is imported into a named graph - with a fixed name of `KnowledgeGraph` and set of collections which also have - fixed names. diff --git a/site/content/3.13/graphs/graph-visualizer.md b/site/content/3.13/graphs/graph-visualizer.md deleted file mode 100644 index 388bbf2a99..0000000000 --- a/site/content/3.13/graphs/graph-visualizer.md +++ /dev/null @@ -1,299 +0,0 @@ ---- -title: Graph Visualizer -menuTitle: Graph Visualizer -weight: 102 -description: >- - Visually explore and interact with your ArangoDB graphs through an intuitive interface ---- -{{< tag "ArangoDB Platform" >}} - -{{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. -{{< /tip >}} - -The **Graph Visualizer** is a browser-based tool integrated into the web interface -of the ArangoDB Platform. It lets you explore the connections of your named graphs -to visually understand the structure as well as to inspect and edit the attributes -of individual nodes and edges. It also offers query capabilities and you can -create new nodes (vertices) and edges (relations). - -![A screenshot of the Graph Visualizer user interface showing some persons and movies as circles with arrows indicting who acted in or directed a movie](../../images/graph-visualizer.png) - -{{< info >}} -Graph creation is **not** performed within the Graph Visualizer. Graphs must be -created in the **Management** section under **Graphs** of the second-level -navigation in the [web interface](../components/web-interface/graphs.md). Once -created, you can select a graph from the list for exploration and visualization. -{{< /info >}} - -You can use the Graph Visualizer to do the following: - -- Filter and view specific nodes to focus on a subset of your graph. -- Dynamically expand nodes to show more of their neighborhood to see how - entities are connected. -- Inspect the properties of nodes and edges. -- Modify existing or create new nodes and edges. -- Rearrange nodes automatically or manually for better visual clarity. -- Use zoom and pan to explore large graphs more easily. - -## View a graph - -The core function of the Graph Visualizer is to provide an intuitive canvas for -exploring graph structures. You can visualize any type of **named graph** -(General Graphs, SmartGraphs, EnterpriseGraphs, SatelliteGraphs). - -{{< warning >}} -Anonymous graphs using adhoc sets of document and edge collections are not -supported by the Graph Visualizer. -{{< /warning >}} - -### Select and load a graph - -1. In the ArangoDB Platform web interface, select the database your named graph - is stored in. -2. Click **Graphs** in the main navigation. -3. Select a graph from the list. -4. The viewport of the Graph Visualizer opens for exploring the graph. - -The main area of the viewport may initially be empty in the following cases: - -- You opened a graph for the first time and nothing is selected for displaying yet -- You used the **Clear Canvas** option -<!-- TODO: Doesn't it preserve the last state? Can it be lost? -- Reopening the Graph Visualizer after a previous session ---> - -You can [Add nodes to the canvas manually](#add-nodes-to-the-canvas-manually) -as well as [Add nodes and edges using a query](#add-nodes-and-edges-using-a-query). -Afterwards, you can also [Add nodes and edges using a query based on a selection](#add-nodes-and-edges-using-a-query-based-on-a-selection) -as well as [Remove nodes from the canvas](#remove-nodes-from-the-canvas). - -### The viewport - -The Graph Visualizer interface is comprised of the following components: - -- **Canvas**: The main area of the viewport. -- **Search & add nodes to canvas** and **Queries**: - A widget in the top left corner that opens dialogs for selecting nodes and - edges to display (manually or using queries). -- [**Customization**](#visual-customization): - A sidebar on the right-hand side to adjust the styling. -- [**Layout and Navigation**](#layouts-and-navigation-tools): - A minimap and multiple tools for the canvas in the bottom right corner. - -### Add nodes to the canvas manually - -You can add individual nodes to the canvas in addition to what is already -displayed. - -1. Click **Search & add nodes to canvas**. -2. Select a **Node type**. This is the name of the collection that stores the - node you want to select. -3. Enter a value into the **Search** field. This searches common attributes - as indicated by the placeholder text and finds up to 10 nodes that contain - this text in one of these attributes (case-insensitive). -4. Select one or more nodes from the list on the left-hand side. -5. Optional: You can check the attributes of the selected nodes on the - right-hand side. Use the buttons at the bottom to switch between nodes. -6. Click **Add _n_ vertices**. -7. To see the neighbor nodes and the edges that connect them, right-click a node, - click **Expand (_n_)** and then **All (_n_)**. - -![A screenshot of the dialog for adding nodes with two persons selected](../../images/graph-visualizer-add-nodes.png) - -### Add nodes and edges using a query - -You can run an AQL query to add a nodes, edges, or paths of the graph to the canvas. - -1. Click **Queries** of the top-left widget. -2. Click **New query**. -3. Enter an AQL query that returns nodes, edges, or paths - (e.g. a graph traversal query), for example: - ```aql - FOR node IN coll LIMIT 10 RETURN node // [ { "_id": "..." }, ... ] - ``` - ```aql - FOR edge IN edgeColl FILTER edge.value > 10 RETURN edge // [ { "_from": "...", "_to": "...", "_id": "..." }, ... ] - ``` - ```aql - FOR v, e, p IN 1..3 ANY "coll/753" GRAPH "myGraph" RETURN p // [ { "vertices": [...], "edges": [...] }, ... ] - ``` -4. Click **Run query**. Depending on what the query returns, either only nodes - or edges with their nodes appear on the canvas, in addition to what is - already displayed. - -{{< tip >}} -You can save queries for future use: - -1. Click **Queries** of the top-left widget. -2. Click **New query**. -3. Enter or edit the AQL query you want to save. You can optionally use - bind variables to parameterize saved queries. -4. Enter a name and optionally a description, then click **Save**. -5. To run a saved query, click **Queries** of the top-left widget. -6. Select a query from the list. The following actions are available for each query: - - **Bind Variables** to set for the query. - - **Run** the query. - - **Copy** the query string to the clipboard. - - **Delete** a no longer needed query. -{{< /tip >}} - -![A screenshot of the dialog with a query expanded and a bind variable filled in](../../images/graph-visualizer-queries.png) - -### Add nodes and edges using a query based on a selection - -You can select nodes and edges on the canvas and then use a **Canvas Action**. -This runs an AQL query to add nodes, edges, or paths of the graph to the canvas. -The query has access to the current selection via special bind variables. - -1. Create a selection. You have different options: - - Click a node or edge to select only this element. - - Hold the {{< kbd "Shift" >}} or {{< kbd "Ctrl" >}} key and click multiple nodes and edges. - - Hold the {{< kbd "Shift" >}} or {{< kbd "Ctrl" >}} key and drag the mouse to perform a box selection. -2. Right-click the canvas, click **Canvas Action**, and select a saved action. -3. Depending on the query, additional nodes or edges with their nodes are added - to the canvas. -4. To create a custom Canvas Action query, click **Queries** of the top-left widget. -5. Click **Canvas Actions**, then **New action**. -6. Enter an AQL query that makes use of the special bind variable `@nodes`, - `@edges`, or both and returns nodes, edges, or paths. Examples: - ```aql - FOR selectedNode IN @nodes - FOR v, e, p IN 1..3 ANY selectedNode GRAPH "myGraph" - FILTER p.edges[*].value ALL < 7 - LIMIT 20 - RETURN p - ``` -7. Enter a name and optionally a description for the action and click **Save**. - -![A screenshot of the context menu for a node showing the available Canvas Actions](../../images/graph-visualizer-menu-canvas-action.png) - -### Remove nodes from the canvas - -You can dismiss nodes to show less nodes and edges on the canvas to focus on the -relevant parts of the graph at a given time. This only changes what is displayed -on the canvas. It doesn't delete the underlying documents and you can add the -dismissed nodes and their edges back to the canvas later on. - -1. Decide which nodes you want to either dismiss or keep. You can select nodes - in different ways: - - Right-click a single node to select only this node. - - Hold the {{< kbd "Shift" >}} or {{< kbd "Ctrl" >}} key and click multiple nodes or drag the - mouse to perform a box selection, then right-click one of the selected nodes. -2. In the context menu, click **Dismiss _n_ nodes** to hide the selected nodes, - or click **Dismiss other nodes** to only keep the selection. -3. The canvas updates to only display the remaining nodes, with no dangling edges. - -### View node and edge properties - -You can inspect the document attributes of node or edge as follows: - -- Double-click a node or edge to open a dialog with the properties. -- Right-click a node to open the context menu and click **View Node** to open - the dialog with the properties. - -![A screenshot of the properties dialog with the keys and values of a node](../../images/graph-visualizer-node-properties.png) - -### Layouts and navigation tools - -These features allow you to clear, zoom, and pan the canvas, as well as rearrange -the displayed graph data for a better spatial understanding of node clusters, -hierarchies, and relationship flows. - -- **Minimap**: A small overview to easier navigate the canvas. - -- **Zoom Controls**: Zoom in/out or reset the zoom to 100%. - -- **Fit to Screen**: Resize and center the canvas so you can see everything. - -- **Re-run Layout**: Automatically rearrange the nodes using the selected algorithm. - -- **Layout Algorithms**: Choose between different ways of arranging the nodes. - Which algorithm to use depends on the situation and the graph topology. - -## Edit graph data - -While the Graph Visualizer is primarily designed for exploring graph data, you -can also create and modify nodes and edges directly from the canvas. - -You need to have write access for the database and the collections for this. - -### Create new nodes - -You can add nodes to the graph's document collections directly from the -canvas. This allows you to create additional entities to the graph. - -1. In the **Graphs** section of the ArangoDB web interface, select your graph. -2. Right-click on the canvas and choose **Create Node**. -3. A dialog opens with the following options: - - Select the target collection (**Node Type**). - - Optionally specify a unique identifier (**Node ID**). -4. Click **Create** to add the node to the canvas and database. - -### Create New Edges - -You can add edges to the graph's edge collections directly from the canvas. -This allows you to create additional connections between nodes. - -1. In the **Graphs** section of the ArangoDB web interface, select your graph. -2. Right-click on the canvas and choose **Create Edge**. -3. In the dialog: - - Select the target collection (**Edge Type**, which corresponds to an edge collection). - - Set the `_from` and `_to` fields by selecting the source and target nodes. - - Optionally specify a unique identifier (**Edge ID**). -4. Click **Create** to add the edge to the canvas and database. - -{{< info >}} -If you select two nodes before right-clicking to open the edge creation -dialog, the `_from` and `_to` fields are automatically pre-filled. -You may need to swap the IDs as the order is not based on your selection sequence. -{{< /info >}} - -![A screenshot of the dialog for creating an edge with the From and To fields filled in](../../images/graph-visualizer-create-edge.png) - -### Edit node and edge properties - -You can modify the document attributes of nodes and edges from the canvas as follows: - -1. Double-click a node or edge. -2. In the properties dialog that opens, click **Edit**. -3. Change the properties and click **Save**. <!-- TODO: Can't change system attributes, even though _from and _to are generally mutable --> - -### Delete nodes - -You can delete individual nodes which deletes the corresponding document. - -1. Right-click a node to open the context menu. -2. Click **Delete Node**. -3. Any edges connected to this node are deleted by default to ensure graph - consistency. To keep the edges, untick **Delete connected edge(s)**. -4. Confirm the deletion by clicking **Delete**. - -### Delete edges - -1. Right-click an edge to open the context menu. -2. Click **Delete Edge**. -3. Confirm the deletion by clicking **Delete**. - -## Visual customization - -You can adjust how the graph data is displayed, like the color, opacity, and -labels. All styling changes are visual-only and do not affect the underlying data. - -1. Optional: Reset to default styling if desired. -2. Click the _palette_ icon in the top right to open the **Customization** panel - if it's closed. -3. Adjust the styling for nodes or edges: - - Select a **Label Attribute** to display a custom top-level field - (e.g. `name` or `type`) instead of `_id`. - - Assign a specific **Color** to highlight and distinguish elements. - - Adjust how transparent elements are with the **Opacity**. - - Set the **Line Thickness** (edges only). - - Choose different **Arrowhead Styles** (edges only). -4. You can also do the following: - - Clear the styling modifications. - - See the number of nodes respectively edges on the canvas (by collection). - -![A screenshot of the Customization panel with a popover dialog for edge styling open](../../images/graph-visualizer-customization.png) diff --git a/site/content/3.11/arangograph/_index.md b/site/content/amp/_index.md similarity index 79% rename from site/content/3.11/arangograph/_index.md rename to site/content/amp/_index.md index 0e07d4c600..e43ab5ae79 100644 --- a/site/content/3.11/arangograph/_index.md +++ b/site/content/amp/_index.md @@ -1,19 +1,19 @@ --- -title: ArangoGraph Insights Platform -menuTitle: ArangoGraph -weight: 65 +title: Arango Managed Platform (AMP) +menuTitle: Managed Platform +weight: 4 description: >- - The ArangoGraph Insights Platform provides the entire functionality of + The Arango Managed Platform (AMP) provides the entire functionality of ArangoDB as a service, without the need to run or manage databases yourself aliases: - arangograph/changelog --- -The [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), +The [Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), formerly called Oasis, provides ArangoDB databases as a Service (DBaaS). It enables you to use the entire functionality of an ArangoDB cluster deployment without the need to run or manage the system yourself. -The ArangoGraph Insights Platform... +The Arango Managed Platform (AMP)... - runs your databases in data centers of the cloud provider of your choice: Google Cloud Platform (GCP) or Amazon Web Services (AWS). @@ -35,4 +35,4 @@ For more information see [dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) For quick start guide, see -[Use ArangoDB in the Cloud](../get-started/set-up-a-cloud-instance.md). +[Use ArangoDB in the Cloud](../arangodb/3.12/get-started/set-up-a-cloud-instance.md). diff --git a/site/content/3.11/arangograph/api/_index.md b/site/content/amp/api/_index.md similarity index 65% rename from site/content/3.11/arangograph/api/_index.md rename to site/content/amp/api/_index.md index ee4f21371f..dd3aa14ea9 100644 --- a/site/content/3.11/arangograph/api/_index.md +++ b/site/content/amp/api/_index.md @@ -1,18 +1,19 @@ --- -title: The ArangoGraph API -menuTitle: ArangoGraph API +title: The Arango Managed Platform (AMP) API +menuTitle: AMP API weight: 60 description: >- - Interface to control all resources inside ArangoGraph in a scriptable manner + The interface to control all resources inside the Arango Managed Platform in + a scriptable manner aliases: - arangograph-api --- -The [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), +The [Arango Managed Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), comes with its own API. This API enables you to control all -resources inside ArangoGraph in a scriptable manner. Typical use cases are spinning -up ArangoGraph deployments during continuous integration and infrastructure as code. +resources inside AMP in a scriptable manner. Typical use cases are spinning +up AMP deployments during continuous integration and infrastructure as code. -The ArangoGraph API… +The AMP API… - is a well-specified API that uses [Protocol Buffers](https://developers.google.com/protocol-buffers/) @@ -29,7 +30,7 @@ The ArangoGraph API… - is also available as a [Terraform plugin](https://github.com/arangodb-managed/terraform-provider-oasis/). - This plugin makes integration of ArangoGraph in infrastructure as code projects + This plugin makes integration of AMP in infrastructure as code projects very simple. To learn more, refer to the [plugin documentation](https://registry.terraform.io/providers/arangodb-managed/oasis/latest/docs). Also see: diff --git a/site/content/3.13/arangograph/api/get-started.md b/site/content/amp/api/get-started.md similarity index 93% rename from site/content/3.13/arangograph/api/get-started.md rename to site/content/amp/api/get-started.md index b4ea00e39d..d228d5020b 100644 --- a/site/content/3.13/arangograph/api/get-started.md +++ b/site/content/amp/api/get-started.md @@ -40,7 +40,7 @@ key you will need to be signed into your account at [dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). Once you are signed in, hover over the profile icon in the top right corner. -![Profile Icon](../../../images/arangograph-my-account-hover.png) +![Profile Icon](../../images/arangograph-my-account-hover.png) Click _My API keys_. @@ -49,7 +49,7 @@ create, reject, and delete API keys. Click the _New API key_ button. -![Blank API Screen](../../../images/arangograph-my-api-keys.png) +![Blank API Screen](../../images/arangograph-my-api-keys.png) The pop-up box that follows has a few options for customizing the access level of this API key. @@ -65,7 +65,7 @@ your API key ID and API key secret. It is very important that you capture the API key secret before clicking the close button. There is no way to retrieve the API key secret after closing this pop-up window. -![API Secret Key](../../../images/arangograph-api-key-secret.png) +![API Secret Key](../../images/arangograph-api-key-secret.png) Once you have securely stored your API key ID and secret, click close. @@ -88,7 +88,7 @@ oasisctl login --help You should see an output similar to this: -![login help output](../../../images/oasisctl-login-help.png) +![login help output](../../images/oasisctl-login-help.png) This shows two additional flags are available, aside from the help flag. @@ -107,7 +107,7 @@ oasisctl login \ Upon successful login you should receive an authentication token: -![On Successful Login](../../../images/oasisctl-login-success.png) +![On Successful Login](../../images/oasisctl-login-success.png) Depending on your environment, you could instead store this token for easier access. For example: @@ -166,7 +166,7 @@ oasisctl list --help This should output a screen similar to: -![List help output](../../../images/oasisctl-list-help.png) +![List help output](../../images/oasisctl-list-help.png) As you can see you can get information on anything you would need about your ArangoGraph organizations, deployments, and access control. To start, let’s take a @@ -187,7 +187,7 @@ oasisctl list organizations --format json Once you have your available organizations you can refer to your desired organization using its name or id. -![List organizations output](../../../images/oasisctl-list-org.png) +![List organizations output](../../images/oasisctl-list-org.png) Note: You may also notice the url attribute, this is for internal use only and should not be treated as a publicly accessible path. @@ -209,7 +209,7 @@ oasisctl list projects \ This will return information on all projects that the authenticated user has access to. -![List projects output](../../../images/oasisctl-list-projects.png) +![List projects output](../../images/oasisctl-list-projects.png) ### List Deployments @@ -224,7 +224,7 @@ oasisctl list deployments \ --format json ``` -![List deployments output](../../../images/oasisctl-list-deployments.png) +![List deployments output](../../images/oasisctl-list-deployments.png) This provides some basic details for all of the deployments associated with the project. Namely, it provides a deployment ID which we can use to start making @@ -258,7 +258,7 @@ This returns quite a bit more information about the deployment including more detailed server information, the endpoint URL where you can access the web interface, and optionally the root user password. -![Get deployment details](../../../images/oasisctl-get-deployment.png) +![Get deployment details](../../images/oasisctl-get-deployment.png) ### Node Size ID @@ -282,7 +282,7 @@ oasisctl list nodesizes \ The output you will see will be similar to this: -![List node size id](../../../images/oasisctl-list-node-size-id.png) +![List node size id](../../images/oasisctl-list-node-size-id.png) It is important to note that you can scale up with more disk size but you are unable to scale down your deployment disk size. The only way to revert back to @@ -330,7 +330,7 @@ To see all the possible options you can start with the following command: oasisctl create --help ``` -![Create command help output](../../../images/oasisctl-create-help.png) +![Create command help output](../../images/oasisctl-create-help.png) ### Create a Deployment @@ -341,7 +341,7 @@ best place to start is with our trusty help command. oasisctl create deployment --help ``` -![Create deployment help output](../../../images/oasisctl-create-deployment-help.png) +![Create deployment help output](../../images/oasisctl-create-deployment-help.png) As you can see there are a lot of default options but also a few that require some knowledge of our pre-existing resources. Attempting to create a deployment @@ -367,7 +367,7 @@ oasisctl create deployment \ If everything went according to play you should see similar output: -![Deployment created successfully](../../../images/oasisctl-create-first-deployment-success.png) +![Deployment created successfully](../../images/oasisctl-create-first-deployment-success.png) ### Wait on Deployment Status @@ -390,7 +390,7 @@ oasisctl get deployment \ --deployment-id hmkuedzw9oavvjmjdo0i ``` -![Get deployment bootstrap status](../../../images/oasisctl-get-first-deployment-bootstrapped.png) +![Get deployment bootstrap status](../../images/oasisctl-get-first-deployment-bootstrapped.png) Once the deployment is ready you will get two new pieces of information, the endpoint URL and Bootstrapped-At will indicate the time it became available. @@ -437,7 +437,7 @@ oasisctl update deployment --help You will see the full list of options available that will allow you to scale your deployment as needed. -![Update deployment help output](../../../images/oasisctl-update-deployment-help.png) +![Update deployment help output](../../images/oasisctl-update-deployment-help.png) ## Delete a Deployment diff --git a/site/content/3.10/arangograph/api/set-up-a-connection.md b/site/content/amp/api/set-up-a-connection.md similarity index 100% rename from site/content/3.10/arangograph/api/set-up-a-connection.md rename to site/content/amp/api/set-up-a-connection.md diff --git a/site/content/3.12/arangograph/backups.md b/site/content/amp/backups.md similarity index 83% rename from site/content/3.12/arangograph/backups.md rename to site/content/amp/backups.md index e4adcd0a0e..ef93d724c7 100644 --- a/site/content/3.12/arangograph/backups.md +++ b/site/content/amp/backups.md @@ -11,7 +11,7 @@ description: >- To backup data in ArangoGraph for an ArangoDB installation, navigate to the **Backups** section of your deployment created previously. -![Backup ArangoDB](../../images/arangograph-backup-section.png) +![Backup ArangoDB](../images/arangograph-backup-section.png) There are two ways to create backups. Create periodic backups using a **Backup policy**, or create a backup manually. @@ -23,13 +23,13 @@ as well. Periodic backups are created at a given schedule. To see when the new backup is due, observe the schedule section. -![Backup Policy schedule](../../images/arangograph-backup-policy-schedule.png) +![Backup Policy schedule](../images/arangograph-backup-policy-schedule.png) When a new deployment is created, a default **Backup policy** is created for it as well. This policy creates backups every two hours. To edit this policy (or any policy), highlight it in the row above and hit the pencil icon. -![Edit Backup Policy](../../images/arangograph-edit-backup-policy.png) +![Edit Backup Policy](../images/arangograph-edit-backup-policy.png) These backups are not automatically uploaded. To enable this, use the **Upload backup to storage** option and choose a retention period that @@ -44,9 +44,9 @@ The regions where the default backup is copied are shown in the It's also possible to create a backup on demand. To do this, click **Back up now**. -![Back up Now](../../images/arangograph-back-up-now.png) +![Back up Now](../images/arangograph-back-up-now.png) -![Back up Now Dialog](../../images/arangograph-back-up-now-dialog.png) +![Back up Now Dialog](../images/arangograph-back-up-now-dialog.png) If you want to manually copy a backup to a different region than the default one, first ensure that the **Upload backup to storage** option is enabled. @@ -56,9 +56,9 @@ Then, highlight the backup row and use the The source backup ID from which the copy is created is displayed in the **Copied from Backup** column. -![Copy backup to a different region](../../images/arangograph-copy-backup-different-region.png) +![Copy backup to a different region](../images/arangograph-copy-backup-different-region.png) -![Multiple Backups](../../images/arangograph-multiple-backups.png) +![Multiple Backups](../images/arangograph-multiple-backups.png) ### Uploading backups @@ -110,7 +110,7 @@ regions, significantly improving reliability. Multiple region backup is only available when the **Upload backup to cloud storage** option is enabled. -![Multiple Region Backup](../../images/arangograph-multi-region-backup.png) +![Multiple Region Backup](../images/arangograph-multi-region-backup.png) ## How to restore backups @@ -124,13 +124,13 @@ backup before using the **Restore Backup** feature. During restore, the deployment is temporarily not available. {{< /warning >}} -![Restore From Backup](../../images/arangograph-restore-from-backup.png) +![Restore From Backup](../images/arangograph-restore-from-backup.png) -![Restore From Backup Dialog](../../images/arangograph-restore-from-backup-dialog.png) +![Restore From Backup Dialog](../images/arangograph-restore-from-backup-dialog.png) -![Restore From Backup Status Pending](../../images/arangograph-restore-from-backup-status-pending.png) +![Restore From Backup Status Pending](../images/arangograph-restore-from-backup-status-pending.png) -![Restore From Backup Status Restored](../../images/arangograph-restore-from-backup-status-restored.png) +![Restore From Backup Status Restored](../images/arangograph-restore-from-backup-status-restored.png) ## How to clone deployments using backups @@ -157,16 +157,16 @@ The *root password* for this deployment will be different. 1. Highlight the backup you wish to clone from and hit **Clone backup to new deployment**. - ![ArangoGraph Clone Deployment From Backup](../../images/arangograph-clone-deployment-from-backup.png) + ![ArangoGraph Clone Deployment From Backup](../images/arangograph-clone-deployment-from-backup.png) 2. Choose whether the clone should be created using the current provider and in the same region as the backup or using a different provider, a different region, or both. - ![ArangoGraph Clone Deployment Select Region](../../images/arangograph-clone-deployment-select.png) + ![ArangoGraph Clone Deployment Select Region](../images/arangograph-clone-deployment-select.png) 3. The view should navigate to the new deployment being bootstrapped. - ![ArangoGraph Cloned Deployment](../../images/arangograph-cloned-deployment.png) + ![ArangoGraph Cloned Deployment](../images/arangograph-cloned-deployment.png) This feature is also available through [oasisctl](oasisctl/_index.md). diff --git a/site/content/3.12/arangograph/data-loader/_index.md b/site/content/amp/data-loader/_index.md similarity index 84% rename from site/content/3.12/arangograph/data-loader/_index.md rename to site/content/amp/data-loader/_index.md index 7955fcb47a..a374f18c34 100644 --- a/site/content/3.12/arangograph/data-loader/_index.md +++ b/site/content/amp/data-loader/_index.md @@ -34,7 +34,7 @@ You can get started in a few easy steps. 4. **Import data**: Once you are ready, save and start the import. The resulting graph is an - [EnterpriseGraph](../../graphs/enterprisegraphs/_index.md) with its + [EnterpriseGraph](../../arangodb/3.12/graphs/enterprisegraphs/_index.md) with its corresponding collections, available in your ArangoDB web interface. Follow this [working example](../data-loader/example.md) to see how easy it is @@ -47,10 +47,10 @@ get the ArangoDB client tools for your operating system from the [download page](https://arangodb.com/download-major/). - To import data to ArangoGraph from an existing ArangoDB instance, see - [arangodump](../../components/tools/arangodump/) and - [arangorestore](../../components/tools/arangorestore/). + [arangodump](../../arangodb/3.12/components/tools/arangodump/) and + [arangorestore](../../arangodb/3.12/components/tools/arangorestore/). - To import pre-existing data in JSON, CSV, or TSV format, see - [arangoimport](../../components/tools/arangoimport/). + [arangoimport](../../arangodb/3.12/components/tools/arangoimport/). ## How to access the Data Loader @@ -59,4 +59,4 @@ get the ArangoDB client tools for your operating system from the 3. In the **Load Data** section, click the **Load your data** button. 4. Select your migration use case. -![ArangoGraph Data Loader Migration Use Cases](../../../images/arangograph-data-loader-migration-use-cases.png) \ No newline at end of file +![ArangoGraph Data Loader Migration Use Cases](../../images/arangograph-data-loader-migration-use-cases.png) \ No newline at end of file diff --git a/site/content/3.11/arangograph/data-loader/add-files.md b/site/content/amp/data-loader/add-files.md similarity index 95% rename from site/content/3.11/arangograph/data-loader/add-files.md rename to site/content/amp/data-loader/add-files.md index 114b588e40..63ffb166de 100644 --- a/site/content/3.11/arangograph/data-loader/add-files.md +++ b/site/content/amp/data-loader/add-files.md @@ -17,7 +17,7 @@ You can upload your CSV files in the following ways: - Drag and drop your files in the designated area. - Click the **Browse files** button and select the files you want to add. -![ArangoGraph Data Loader Upload Files](../../../images/arangograph-data-loader-upload-files.png) +![ArangoGraph Data Loader Upload Files](../../images/arangograph-data-loader-upload-files.png) You have the option to either upload several files collectively as a batch or add them individually. Furthermore, you can supplement additional files later on. diff --git a/site/content/3.12/arangograph/data-loader/design-graph.md b/site/content/amp/data-loader/design-graph.md similarity index 91% rename from site/content/3.12/arangograph/data-loader/design-graph.md rename to site/content/amp/data-loader/design-graph.md index b1c5eaf3af..697b6bf2e9 100644 --- a/site/content/3.12/arangograph/data-loader/design-graph.md +++ b/site/content/amp/data-loader/design-graph.md @@ -9,7 +9,7 @@ description: >- Based on the data you have uploaded, you can start designing your graph. The graph designer allows you to create a schema using nodes and edges. Once this is done, you can save and start the import. The resulting -[EnterpriseGraph](../../graphs/enterprisegraphs/_index.md) and the +[EnterpriseGraph](../../arangodb/3.12/graphs/enterprisegraphs/_index.md) and the corresponding collections are created in your ArangoDB database instance. ## How to add a node @@ -26,7 +26,7 @@ objects. reference the nodes when you define relations with edges. - For **File Headers**, select one or more attributes from the list. -![ArangoGraph Data Loader Add Node](../../../images/arangograph-data-loader-add-node.png) +![ArangoGraph Data Loader Add Node](../../images/arangograph-data-loader-add-node.png) ## How to connect nodes @@ -60,7 +60,7 @@ See below the steps to add details to an edge. destination file (`_to`). - For **File Headers**, select one or more attributes from the list. -![ArangoGraph Data Loader Edit Edge](../../../images/arangograph-data-loader-edit-edge.png) +![ArangoGraph Data Loader Edit Edge](../../images/arangograph-data-loader-edit-edge.png) ## How to delete elements diff --git a/site/content/3.10/arangograph/data-loader/example.md b/site/content/amp/data-loader/example.md similarity index 85% rename from site/content/3.10/arangograph/data-loader/example.md rename to site/content/amp/data-loader/example.md index 46fdd1b38e..b6d14f3000 100644 --- a/site/content/3.10/arangograph/data-loader/example.md +++ b/site/content/amp/data-loader/example.md @@ -29,21 +29,21 @@ The whole process can be broken down into these steps: data from the uploaded files to them. This allows creating the corresponding documents and collections for your graph. 4. **Import data**: Import the data and start using your newly created - [EnterpriseGraph](../../graphs/enterprisegraphs/_index.md) and its + [EnterpriseGraph](../../arangodb/3.12/graphs/enterprisegraphs/_index.md) and its corresponding collections. ## Step 1: Create a database and choose the graph name Start by creating a new database and adding a name for your graph. -![Data Loader Example Step 1](../../../images/arangograph-data-loader-example-choose-names.png) +![Data Loader Example Step 1](../../images/arangograph-data-loader-example-choose-names.png) ## Step 2: Add files Upload your CSV files to the Data Loader web interface. You can drag and drop them or upload them via a file browser window. -![Data Loader Example Step 2](../../../images/arangograph-data-loader-example-add-files.png) +![Data Loader Example Step 2](../../images/arangograph-data-loader-example-add-files.png) See also [Add files into Data Loader](../data-loader/add-files.md). @@ -69,7 +69,7 @@ In this example, two node collections have been created (`origin_airport` and attribute for documents in both node collections. The header preview makes it easy to select the headers you want to use. -![Data Loader Example Step 3 Nodes](../../../images/arangograph-data-loader-example-map-nodes.png) +![Data Loader Example Step 3 Nodes](../../images/arangograph-data-loader-example-map-nodes.png) For edges, the **Edge label** is going to be an edge collection name. Then, you need to specify how edges will connect nodes. You can do this by selecting the @@ -77,7 +77,7 @@ need to specify how edges will connect nodes. You can do this by selecting the In this example, the `source airport` header has been selected as a source and the `destination airport` header as a target for the edge. -![Data Loader Example Step 3 Edges](../../../images/arangograph-data-loader-example-map-edges.png) +![Data Loader Example Step 3 Edges](../../images/arangograph-data-loader-example-map-edges.png) Note that the values of the source and target for the edge correspond to the **Primary identifier** (`_key` attribute) of the nodes. In this case, it is the @@ -93,11 +93,11 @@ After all the mapping is done, all you need to do is click processed and the documents created, as well as a link to your new graph. See also [Start import](../data-loader/import.md). -![Data Loader Example Step 4 See your new graph](../../../images/arangograph-data-loader-example-data-import.png) +![Data Loader Example Step 4 See your new graph](../../images/arangograph-data-loader-example-data-import.png) Finally, click **See your new graph** to open the ArangoDB web interface and explore your new collections and graph. -![Data Loader Example Step 4 Resulting graph](../../../images/arangograph-data-loader-example-resulting-graph.png) +![Data Loader Example Step 4 Resulting graph](../../images/arangograph-data-loader-example-resulting-graph.png) Happy graphing! \ No newline at end of file diff --git a/site/content/3.10/arangograph/data-loader/import.md b/site/content/amp/data-loader/import.md similarity index 100% rename from site/content/3.10/arangograph/data-loader/import.md rename to site/content/amp/data-loader/import.md diff --git a/site/content/3.12/arangograph/deployments/_index.md b/site/content/amp/deployments/_index.md similarity index 94% rename from site/content/3.12/arangograph/deployments/_index.md rename to site/content/amp/deployments/_index.md index b3416805a1..b518164516 100644 --- a/site/content/3.12/arangograph/deployments/_index.md +++ b/site/content/amp/deployments/_index.md @@ -13,7 +13,7 @@ You can have any number of deployments under one project. **Organizations → Projects → <u>Deployments</u>** -![ArangoGraph Deployments](../../../images/arangograph-deployments-page.png) +![ArangoGraph Deployments](../../images/arangograph-deployments-page.png) ## How to create a new deployment @@ -38,7 +38,7 @@ role bindings to regulate access control on a deployment level. provider and region anymore. {{< /warning >}} -![ArangoGraph New Deployment General](../../../images/arangograph-new-deployment-general.png) +![ArangoGraph New Deployment General](../../images/arangograph-new-deployment-general.png) ### In the **Sizing** section @@ -60,7 +60,7 @@ role bindings to regulate access control on a deployment level. - Select a __NODE SIZE__ from the list of available options. Each option is a combination of vCPUs, memory, and disk space per node. -![ArangoGraph New Deployment Sizing](../../../images/arangograph-new-deployment-sizing.png) +![ArangoGraph New Deployment Sizing](../../images/arangograph-new-deployment-sizing.png) ### In the **Advanced** section @@ -84,7 +84,7 @@ role bindings to regulate access control on a deployment level. {{< /security >}} - Select a __Deployment Profile__. Profile options are only available on request. -![ArangoGraph New Deployment Advanced](../../../images/arangograph-new-deployment-advanced.png) +![ArangoGraph New Deployment Advanced](../../images/arangograph-new-deployment-advanced.png) ### In the **Summary** panel @@ -150,7 +150,7 @@ a self-signed certificate is recommended. Read more on the Password rotation refers to changing passwords regularly - a security best practice to reduce the vulnerability to password-based attacks and exploits -by limiting for how long passwords are valid. The ArangoGraph Insights Platform +by limiting for how long passwords are valid. The Arango Managed Platform (AMP) can automatically change the `root` user password of an ArangoDB deployment periodically to improve security. @@ -161,7 +161,7 @@ periodically to improve security. 3. In the __Password Settings__ dialog, turn the automatic password rotation on and click the __Save__ button. - ![ArangoGraph Deployment Password Rotation](../../../images/arangograph-deployment-password-rotation.png) + ![ArangoGraph Deployment Password Rotation](../../images/arangograph-deployment-password-rotation.png) 4. You can expand the __Root password__ panel to see when the password was rotated last. The rotation takes place every three months. @@ -263,7 +263,7 @@ attached to your role. Read more about [roles and permissions](../security-and-a ## How to connect a driver to your deployment -[ArangoDB drivers](../../develop/drivers/_index.md) allow you to use your ArangoGraph +[ArangoDB drivers](../../arangodb/3.12/develop/drivers/_index.md) allow you to use your ArangoGraph deployment as a database system for your applications. Drivers act as interfaces between different programming languages and ArangoDB, which enable you to connect to and manipulate ArangoDB deployments from within compiled programs @@ -275,12 +275,12 @@ select your programming language. The code snippets provide examples on how to connect to your instance. {{< tip >}} -Note that ArangoGraph Insights Platform runs deployments in a cluster +Note that Arango Managed Platform (AMP) runs deployments in a cluster configuration. To achieve the best possible availability, your client application has to handle connection failures by retrying operations if needed. {{< /tip >}} -![ArangoGraph Connecting Drivers Example](../../../images/arangograph-connecting-drivers-example.png) +![ArangoGraph Connecting Drivers Example](../../images/arangograph-connecting-drivers-example.png) ## How to pause a deployment diff --git a/site/content/3.12/arangograph/deployments/private-endpoints.md b/site/content/amp/deployments/private-endpoints.md similarity index 91% rename from site/content/3.12/arangograph/deployments/private-endpoints.md rename to site/content/amp/deployments/private-endpoints.md index c3400b9711..dae87f4e93 100644 --- a/site/content/3.12/arangograph/deployments/private-endpoints.md +++ b/site/content/amp/deployments/private-endpoints.md @@ -47,11 +47,11 @@ service attachment that you need during the creation of your private endpoint(s) 2. In the **Quick start** section, click the **Edit** button with an ellipsis (`…`) icon. 3. Click **Change to private endpoint** in the menu. - ![ArangoGraph Deployment Private Endpoint Menu](../../../images/arangograph-gcp-change.png) + ![ArangoGraph Deployment Private Endpoint Menu](../../images/arangograph-gcp-change.png) 4. In the configuration wizard, click **Next** to enter your configuration details. 5. Enter one or more Google project names. You can also add them later in the summary view. Click **Next**. - ![ArangoGraph Deployment Private Endpoint Setup 2](../../../images/arangograph-gcp-private-endpoint.png) + ![ArangoGraph Deployment Private Endpoint Setup 2](../../images/arangograph-gcp-private-endpoint.png) 6. Configure custom DNS names. This step is optional and disabled by default. Note that, once enabled, this setting is immutable and cannot be reverted. Click **Next** to continue. @@ -62,7 +62,7 @@ service attachment that you need during the creation of your private endpoint(s) If the custom DNS is enabled, you will be responsible for the DNS of your private endpoints. {{< /info >}} - ![ArangoGraph Private Endpoint Custom DNS](../../../images/arangograph-gcp-custom-dns.png) + ![ArangoGraph Private Endpoint Custom DNS](../../images/arangograph-gcp-custom-dns.png) 7. Click **Confirm Settings** to change the deployment. 8. Back in the **Overview** page, scroll down to the **Private Endpoint** section that is now displayed to see the connection status and to change the @@ -100,14 +100,14 @@ it to a public deployment, please contact the support team via **Request help** in the help menu. To configure a private endpoint for AWS, you need to provide the AWS principals related -to your VPC. The ArangoGraph Insights Platform configures a **Private Endpoint Service** +to your VPC. The Arango Managed Platform (AMP) configures a **Private Endpoint Service** that automatically connects to private endpoints that are created in those principals. 1. Open the deployment you want to change. 2. In the **Quick start** section, click the **Edit** button with an ellipsis (`…`) icon. 3. Click **Change to private endpoint** in the menu. - ![ArangoGraph Deployment AWS Change to Private Endpoint](../../../images/arangograph-aws-change-to-private-endpoint.png) + ![ArangoGraph Deployment AWS Change to Private Endpoint](../../images/arangograph-aws-change-to-private-endpoint.png) 4. In the configuration wizard, click **Next** to enter your configuration details. 5. Click **Add Principal** to start configuring the AWS principal(s). You need to enter a valid account, which is your 12 digit AWS account ID. @@ -120,7 +120,7 @@ that automatically connects to private endpoints that are created in those princ To verify your endpoint service in AWS, you must use the same principal as configured in ArangoGraph. Otherwise, the service name cannot be verified. {{< /warning >}} - ![ArangoGraph AWS Private Endpoint Configure Principals](../../../images/arangograph-aws-endpoint-configure-principals.png) + ![ArangoGraph AWS Private Endpoint Configure Principals](../../images/arangograph-aws-endpoint-configure-principals.png) 6. Configure custom DNS names. This step is optional and disabled by default, you can also add or change them later from the summary view. Click **Next** to continue. @@ -130,13 +130,13 @@ that automatically connects to private endpoints that are created in those princ If the custom DNS is enabled, you will be responsible for the DNS of your private endpoints. {{< /info >}} - ![ArangoGraph AWS Private Endpoint Alternate DNS](../../../images/arangograph-aws-private-endpoint-dns.png) + ![ArangoGraph AWS Private Endpoint Alternate DNS](../../images/arangograph-aws-private-endpoint-dns.png) 7. Confirm that you want to use a private endpoint for your deployment by clicking **Confirm Settings**. 8. Back in the **Overview** page, scroll down to the **Private Endpoint** section that is now displayed to see the connection status and change the configuration, if needed. - ![ArangoGraph AWS Private Endpoint Overview](../../../images/arangograph-aws-private-endpoint-overview.png) + ![ArangoGraph AWS Private Endpoint Overview](../../images/arangograph-aws-private-endpoint-overview.png) {{< info >}} Note that [Availability Zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones) diff --git a/site/content/3.10/arangograph/deployments/upgrades-and-versioning.md b/site/content/amp/deployments/upgrades-and-versioning.md similarity index 100% rename from site/content/3.10/arangograph/deployments/upgrades-and-versioning.md rename to site/content/amp/deployments/upgrades-and-versioning.md diff --git a/site/content/3.11/arangograph/migrate-to-the-cloud.md b/site/content/amp/migrate-to-the-cloud.md similarity index 98% rename from site/content/3.11/arangograph/migrate-to-the-cloud.md rename to site/content/amp/migrate-to-the-cloud.md index 8a3f4a9802..1ce835620d 100644 --- a/site/content/3.11/arangograph/migrate-to-the-cloud.md +++ b/site/content/amp/migrate-to-the-cloud.md @@ -46,7 +46,7 @@ chmod 755 ./arangosync-migration Before getting started, make sure the following prerequisites are in place: -- Go to the [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home) +- Go to the [Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home) and sign in. If you don’t have an account yet, sign-up to create one. - Generate an ArangoGraph API key and API secret. See a detailed guide on @@ -150,7 +150,7 @@ have and how often write operations are executed during the process. You can also track the progress by checking the **Migration status** section of your target deployment in ArangoGraph dashboard. -![ArangoGraph Cloud Migration Progress](../../images/arangograph-migration-agent.png) +![ArangoGraph Cloud Migration Progress](../images/arangograph-migration-agent.png) ### Getting the current status diff --git a/site/content/3.12/arangograph/monitoring-and-metrics.md b/site/content/amp/monitoring-and-metrics.md similarity index 89% rename from site/content/3.12/arangograph/monitoring-and-metrics.md rename to site/content/amp/monitoring-and-metrics.md index 2b9ede4b4a..a4e5652ced 100644 --- a/site/content/3.12/arangograph/monitoring-and-metrics.md +++ b/site/content/amp/monitoring-and-metrics.md @@ -6,7 +6,7 @@ description: >- ArangoGraph provides various built-in tools and integrations to help you monitor your deployment --- -The ArangoGraph Insights Platform provides integrated charts, metrics, and logs +The Arango Managed Platform (AMP) provides integrated charts, metrics, and logs to help you monitor your deployment. This allows you to track your deployment's performance, resource utilization, and its overall status. @@ -21,7 +21,7 @@ The key features include: To get started, select an existing deployment from within a project and click **Monitoring** in the navigation. -![ArangoGraph Monitoring tab](../../images/arangograph-monitoring-tab.png) +![ArangoGraph Monitoring tab](../images/arangograph-monitoring-tab.png) ## Built-in monitoring and metrics @@ -42,7 +42,7 @@ you to apply filters to obtain logs from all server types or select specific one (i.e. only Coordinators or only DB-Servers) within a timeframe. To download the logs, click the **Save** button. -![ArangoGraph Monitoring Servers](../../images/arangograph-monitoring-servers.png) +![ArangoGraph Monitoring Servers](../images/arangograph-monitoring-servers.png) ### In the **Metrics** section @@ -57,18 +57,18 @@ or when needing to quickly find a particular one among many. Similarly, you can repeat the process for Coordinators to see the **CPU** and **Memory** usage. -![Arangograph Monitoring Metrics Chart](../../images/arangograph-monitoring-metrics-chart.png) +![Arangograph Monitoring Metrics Chart](../images/arangograph-monitoring-metrics-chart.png) ## Connect with Prometheus and Grafana -The ArangoGraph Insights Platform provides metrics for each deployment in a +The Arango Managed Platform (AMP) provides metrics for each deployment in a [Prometheus](https://prometheus.io/)-compatible format. You can use these metrics to gather detailed insights into the current and previous states of your deployment. Once metrics are collected by Prometheus, you can inspect them using tools such as [Grafana](https://grafana.com/oss/grafana/). -![ArangoGraph Connect Metrics Section](../../images/arangograph-connect-metrics-section.png) +![ArangoGraph Connect Metrics Section](../images/arangograph-connect-metrics-section.png) ### Metrics tokens @@ -81,7 +81,7 @@ which is required for connecting to Prometheus. 4. Select the **Lifetime** of the metrics token. 5. Click **Create**. -![ArangoGraph Metrics Tokens](../../images/arangograph-metrics-token.png) +![ArangoGraph Metrics Tokens](../images/arangograph-metrics-token.png) ### How to connect Prometheus diff --git a/site/content/3.12/arangograph/my-account.md b/site/content/amp/my-account.md similarity index 85% rename from site/content/3.12/arangograph/my-account.md rename to site/content/amp/my-account.md index 91cd87fb3c..98a9c2cfee 100644 --- a/site/content/3.12/arangograph/my-account.md +++ b/site/content/amp/my-account.md @@ -12,7 +12,7 @@ accessible from every view. There are two elements: - __Question mark icon__: Help - __User icon__: My Account -![ArangoGraph My Account](../../images/arangograph-my-account.png) +![ArangoGraph My Account](../images/arangograph-my-account.png) ## Overview @@ -30,7 +30,7 @@ accessible from every view. There are two elements: 3. Click the __Edit__ button. 4. Change your personal information and __Save__. -![ArangoGraph My Account Info](../../images/arangograph-my-account-info.png) +![ArangoGraph My Account Info](../images/arangograph-my-account-info.png) ## Organizations @@ -72,7 +72,7 @@ If you are no longer a member of any organization, then a new organization is created for you when you log in again. {{< /info >}} -![ArangoGraph New Organization](../../images/arangograph-new-org.png) +![ArangoGraph New Organization](../images/arangograph-new-org.png) ## Invites @@ -89,19 +89,19 @@ See [Users and Groups: How to add a new member to the organization](organization 1. Once invited, you will receive an email asking to join your ArangoGraph organization. - ![ArangoGraph Organization Invite Email](../../images/arangograph-org-invite-email.png) + ![ArangoGraph Organization Invite Email](../images/arangograph-org-invite-email.png) 2. Click the __View my organization invite__ link in the email. You will be asked to log in or to create a new account. 3. To sign up for a new account, click the __Start Free__ button or the __Sign up__ link in the header navigation. - ![ArangoGraph Homepage](../../images/arangograph-homepage.png) + ![ArangoGraph Homepage](../images/arangograph-homepage.png) 4. After successfully signing up, you will receive a verification email. 5. Click the __Verify my email address__ link in the email. It takes you back - to the ArangoGraph Insights Platform site. - ![ArangoGraph Organization Invite Email Verify](../../images/arangograph-org-invite-email-verify.png) + to the Arango Managed Platform (AMP) site. + ![ArangoGraph Organization Invite Email Verify](../images/arangograph-org-invite-email-verify.png) 6. After successfully logging in, you can accept or reject the invite to join your organization. - ![ArangoGraph Organization Invite](../../images/arangograph-org-invite.png) + ![ArangoGraph Organization Invite](../images/arangograph-org-invite.png) 7. After accepting the invite, you become a member of your organization and will be granted access to the organization and its related projects and deployments. @@ -113,11 +113,11 @@ See [Users and Groups: How to add a new member to the organization](organization 2. Click the __View my organization invites__ link in the email, or hover over the user icon in the top right corner of the dashboard and click __My organization invites__. - ![ArangoGraph Organization Invite Notification](../../images/arangograph-org-invite-notification.png) + ![ArangoGraph Organization Invite Notification](../images/arangograph-org-invite-notification.png) 3. On the __Invites__ tab of the __My account__ view, you can accept or reject pending invitations, as well as see past invitations that you accepted or rejected. Click the button with a checkmark icon to join the organization. - ![ArangoGraph Organization Invites Accept](../../images/arangograph-org-invites-accept.png) + ![ArangoGraph Organization Invites Accept](../images/arangograph-org-invites-accept.png) ## API Keys @@ -133,7 +133,7 @@ authentication. 2. Click __My API keys__ in the __My account__ section. 3. Information about the API keys are listed in the __My API keys__ section. -![ArangoGraph My API keys](../../images/arangograph-my-api-keys.png) +![ArangoGraph My API keys](../images/arangograph-my-api-keys.png) ### How to create a new API key @@ -152,9 +152,9 @@ The secret is only shown once at creation time. You have to store it in a safe place. {{< /security >}} -![ArangoGraph New API key](../../images/arangograph-new-api-key.png) +![ArangoGraph New API key](../images/arangograph-new-api-key.png) -![ArangoGraph API key Secret](../../images/arangograph-api-key-secret.png) +![ArangoGraph API key Secret](../images/arangograph-api-key-secret.png) ### How to revoke or delete an API key diff --git a/site/content/3.12/arangograph/notebooks.md b/site/content/amp/notebooks.md similarity index 98% rename from site/content/3.12/arangograph/notebooks.md rename to site/content/amp/notebooks.md index 7c8b0afff9..b02393bff4 100644 --- a/site/content/3.12/arangograph/notebooks.md +++ b/site/content/amp/notebooks.md @@ -17,7 +17,7 @@ ArangoML platform services. This makes it much easier to leverage these resources without having to download any data locally or to remember user IDs, passwords, and endpoint URLs. -![ArangoGraph Notebooks Architecture](../../images/arangograph-notebooks-architecture.png) +![ArangoGraph Notebooks Architecture](../images/arangograph-notebooks-architecture.png) The ArangoGraph Notebook has built-in [ArangoGraph Magic Commands](#arangograph-magic-commands) that answer questions like: @@ -58,7 +58,7 @@ Depending on the tier your organization belongs to, different limitations apply: - Free-to-try: you can only create one notebook per deployment. {{< /info >}} -![Notebooks](../../images/arangograph-notebooks.png) +![Notebooks](../images/arangograph-notebooks.png) {{< info >}} Notebooks in beta version have a fixed configuration of 10 GB of disk size. diff --git a/site/content/3.10/arangograph/oasisctl/_index.md b/site/content/amp/oasisctl/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/_index.md rename to site/content/amp/oasisctl/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/accept/_index.md b/site/content/amp/oasisctl/accept/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/accept/_index.md rename to site/content/amp/oasisctl/accept/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/accept/accept-organization-invite.md b/site/content/amp/oasisctl/accept/accept-organization-invite.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/accept/accept-organization-invite.md rename to site/content/amp/oasisctl/accept/accept-organization-invite.md diff --git a/site/content/3.10/arangograph/oasisctl/accept/accept-organization.md b/site/content/amp/oasisctl/accept/accept-organization.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/accept/accept-organization.md rename to site/content/amp/oasisctl/accept/accept-organization.md diff --git a/site/content/3.10/arangograph/oasisctl/add/_index.md b/site/content/amp/oasisctl/add/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/add/_index.md rename to site/content/amp/oasisctl/add/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/add/add-auditlog-destination.md b/site/content/amp/oasisctl/add/add-auditlog-destination.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/add/add-auditlog-destination.md rename to site/content/amp/oasisctl/add/add-auditlog-destination.md diff --git a/site/content/3.10/arangograph/oasisctl/add/add-auditlog.md b/site/content/amp/oasisctl/add/add-auditlog.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/add/add-auditlog.md rename to site/content/amp/oasisctl/add/add-auditlog.md diff --git a/site/content/3.10/arangograph/oasisctl/add/add-group-members.md b/site/content/amp/oasisctl/add/add-group-members.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/add/add-group-members.md rename to site/content/amp/oasisctl/add/add-group-members.md diff --git a/site/content/3.10/arangograph/oasisctl/add/add-group.md b/site/content/amp/oasisctl/add/add-group.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/add/add-group.md rename to site/content/amp/oasisctl/add/add-group.md diff --git a/site/content/3.10/arangograph/oasisctl/auditlog/_index.md b/site/content/amp/oasisctl/auditlog/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/auditlog/_index.md rename to site/content/amp/oasisctl/auditlog/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/auditlog/auditlog-attach.md b/site/content/amp/oasisctl/auditlog/auditlog-attach.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/auditlog/auditlog-attach.md rename to site/content/amp/oasisctl/auditlog/auditlog-attach.md diff --git a/site/content/3.10/arangograph/oasisctl/auditlog/auditlog-detach.md b/site/content/amp/oasisctl/auditlog/auditlog-detach.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/auditlog/auditlog-detach.md rename to site/content/amp/oasisctl/auditlog/auditlog-detach.md diff --git a/site/content/3.10/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md b/site/content/amp/oasisctl/auditlog/auditlog-get-attached-project.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/auditlog/auditlog-get-attached-project.md rename to site/content/amp/oasisctl/auditlog/auditlog-get-attached-project.md diff --git a/site/content/3.10/arangograph/oasisctl/auditlog/auditlog-get-attached.md b/site/content/amp/oasisctl/auditlog/auditlog-get-attached.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/auditlog/auditlog-get-attached.md rename to site/content/amp/oasisctl/auditlog/auditlog-get-attached.md diff --git a/site/content/3.10/arangograph/oasisctl/auditlog/auditlog-get.md b/site/content/amp/oasisctl/auditlog/auditlog-get.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/auditlog/auditlog-get.md rename to site/content/amp/oasisctl/auditlog/auditlog-get.md diff --git a/site/content/3.10/arangograph/oasisctl/backup/_index.md b/site/content/amp/oasisctl/backup/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/backup/_index.md rename to site/content/amp/oasisctl/backup/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/backup/backup-copy.md b/site/content/amp/oasisctl/backup/backup-copy.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/backup/backup-copy.md rename to site/content/amp/oasisctl/backup/backup-copy.md diff --git a/site/content/3.10/arangograph/oasisctl/backup/backup-download.md b/site/content/amp/oasisctl/backup/backup-download.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/backup/backup-download.md rename to site/content/amp/oasisctl/backup/backup-download.md diff --git a/site/content/3.10/arangograph/oasisctl/clone/_index.md b/site/content/amp/oasisctl/clone/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/clone/_index.md rename to site/content/amp/oasisctl/clone/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/clone/clone-deployment-backup.md b/site/content/amp/oasisctl/clone/clone-deployment-backup.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/clone/clone-deployment-backup.md rename to site/content/amp/oasisctl/clone/clone-deployment-backup.md diff --git a/site/content/3.10/arangograph/oasisctl/clone/clone-deployment.md b/site/content/amp/oasisctl/clone/clone-deployment.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/clone/clone-deployment.md rename to site/content/amp/oasisctl/clone/clone-deployment.md diff --git a/site/content/3.10/arangograph/oasisctl/completion.md b/site/content/amp/oasisctl/completion.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/completion.md rename to site/content/amp/oasisctl/completion.md diff --git a/site/content/3.10/arangograph/oasisctl/create/_index.md b/site/content/amp/oasisctl/create/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/_index.md rename to site/content/amp/oasisctl/create/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-apikey.md b/site/content/amp/oasisctl/create/create-apikey.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-apikey.md rename to site/content/amp/oasisctl/create/create-apikey.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-auditlog.md b/site/content/amp/oasisctl/create/create-auditlog.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-auditlog.md rename to site/content/amp/oasisctl/create/create-auditlog.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-backup-policy.md b/site/content/amp/oasisctl/create/create-backup-policy.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-backup-policy.md rename to site/content/amp/oasisctl/create/create-backup-policy.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-backup.md b/site/content/amp/oasisctl/create/create-backup.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-backup.md rename to site/content/amp/oasisctl/create/create-backup.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-cacertificate.md b/site/content/amp/oasisctl/create/create-cacertificate.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-cacertificate.md rename to site/content/amp/oasisctl/create/create-cacertificate.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-deployment.md b/site/content/amp/oasisctl/create/create-deployment.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-deployment.md rename to site/content/amp/oasisctl/create/create-deployment.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-example-installation.md b/site/content/amp/oasisctl/create/create-example-installation.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-example-installation.md rename to site/content/amp/oasisctl/create/create-example-installation.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-example.md b/site/content/amp/oasisctl/create/create-example.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-example.md rename to site/content/amp/oasisctl/create/create-example.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-group.md b/site/content/amp/oasisctl/create/create-group.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-group.md rename to site/content/amp/oasisctl/create/create-group.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-ipallowlist.md b/site/content/amp/oasisctl/create/create-ipallowlist.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-ipallowlist.md rename to site/content/amp/oasisctl/create/create-ipallowlist.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-metrics-token.md b/site/content/amp/oasisctl/create/create-metrics-token.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-metrics-token.md rename to site/content/amp/oasisctl/create/create-metrics-token.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-metrics.md b/site/content/amp/oasisctl/create/create-metrics.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-metrics.md rename to site/content/amp/oasisctl/create/create-metrics.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-notebook.md b/site/content/amp/oasisctl/create/create-notebook.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-notebook.md rename to site/content/amp/oasisctl/create/create-notebook.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-organization-invite.md b/site/content/amp/oasisctl/create/create-organization-invite.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-organization-invite.md rename to site/content/amp/oasisctl/create/create-organization-invite.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-organization.md b/site/content/amp/oasisctl/create/create-organization.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-organization.md rename to site/content/amp/oasisctl/create/create-organization.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-private-endpoint-service.md b/site/content/amp/oasisctl/create/create-private-endpoint-service.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-private-endpoint-service.md rename to site/content/amp/oasisctl/create/create-private-endpoint-service.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-private-endpoint.md b/site/content/amp/oasisctl/create/create-private-endpoint.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-private-endpoint.md rename to site/content/amp/oasisctl/create/create-private-endpoint.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-private.md b/site/content/amp/oasisctl/create/create-private.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-private.md rename to site/content/amp/oasisctl/create/create-private.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-project.md b/site/content/amp/oasisctl/create/create-project.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-project.md rename to site/content/amp/oasisctl/create/create-project.md diff --git a/site/content/3.10/arangograph/oasisctl/create/create-role.md b/site/content/amp/oasisctl/create/create-role.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/create/create-role.md rename to site/content/amp/oasisctl/create/create-role.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/_index.md b/site/content/amp/oasisctl/delete/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/_index.md rename to site/content/amp/oasisctl/delete/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-apikey.md b/site/content/amp/oasisctl/delete/delete-apikey.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-apikey.md rename to site/content/amp/oasisctl/delete/delete-apikey.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-auditlog-archive-events.md b/site/content/amp/oasisctl/delete/delete-auditlog-archive-events.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-auditlog-archive-events.md rename to site/content/amp/oasisctl/delete/delete-auditlog-archive-events.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-auditlog-archive.md b/site/content/amp/oasisctl/delete/delete-auditlog-archive.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-auditlog-archive.md rename to site/content/amp/oasisctl/delete/delete-auditlog-archive.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-auditlog-destination.md b/site/content/amp/oasisctl/delete/delete-auditlog-destination.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-auditlog-destination.md rename to site/content/amp/oasisctl/delete/delete-auditlog-destination.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-auditlog.md b/site/content/amp/oasisctl/delete/delete-auditlog.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-auditlog.md rename to site/content/amp/oasisctl/delete/delete-auditlog.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-backup-policy.md b/site/content/amp/oasisctl/delete/delete-backup-policy.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-backup-policy.md rename to site/content/amp/oasisctl/delete/delete-backup-policy.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-backup.md b/site/content/amp/oasisctl/delete/delete-backup.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-backup.md rename to site/content/amp/oasisctl/delete/delete-backup.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-cacertificate.md b/site/content/amp/oasisctl/delete/delete-cacertificate.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-cacertificate.md rename to site/content/amp/oasisctl/delete/delete-cacertificate.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-deployment.md b/site/content/amp/oasisctl/delete/delete-deployment.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-deployment.md rename to site/content/amp/oasisctl/delete/delete-deployment.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-example-installation.md b/site/content/amp/oasisctl/delete/delete-example-installation.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-example-installation.md rename to site/content/amp/oasisctl/delete/delete-example-installation.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-example.md b/site/content/amp/oasisctl/delete/delete-example.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-example.md rename to site/content/amp/oasisctl/delete/delete-example.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-group-members.md b/site/content/amp/oasisctl/delete/delete-group-members.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-group-members.md rename to site/content/amp/oasisctl/delete/delete-group-members.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-group.md b/site/content/amp/oasisctl/delete/delete-group.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-group.md rename to site/content/amp/oasisctl/delete/delete-group.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-ipallowlist.md b/site/content/amp/oasisctl/delete/delete-ipallowlist.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-ipallowlist.md rename to site/content/amp/oasisctl/delete/delete-ipallowlist.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-metrics-token.md b/site/content/amp/oasisctl/delete/delete-metrics-token.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-metrics-token.md rename to site/content/amp/oasisctl/delete/delete-metrics-token.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-metrics.md b/site/content/amp/oasisctl/delete/delete-metrics.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-metrics.md rename to site/content/amp/oasisctl/delete/delete-metrics.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-notebook.md b/site/content/amp/oasisctl/delete/delete-notebook.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-notebook.md rename to site/content/amp/oasisctl/delete/delete-notebook.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-organization-invite.md b/site/content/amp/oasisctl/delete/delete-organization-invite.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-organization-invite.md rename to site/content/amp/oasisctl/delete/delete-organization-invite.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-organization-members.md b/site/content/amp/oasisctl/delete/delete-organization-members.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-organization-members.md rename to site/content/amp/oasisctl/delete/delete-organization-members.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-organization.md b/site/content/amp/oasisctl/delete/delete-organization.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-organization.md rename to site/content/amp/oasisctl/delete/delete-organization.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-project.md b/site/content/amp/oasisctl/delete/delete-project.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-project.md rename to site/content/amp/oasisctl/delete/delete-project.md diff --git a/site/content/3.10/arangograph/oasisctl/delete/delete-role.md b/site/content/amp/oasisctl/delete/delete-role.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/delete/delete-role.md rename to site/content/amp/oasisctl/delete/delete-role.md diff --git a/site/content/3.10/arangograph/oasisctl/disable/_index.md b/site/content/amp/oasisctl/disable/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/disable/_index.md rename to site/content/amp/oasisctl/disable/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md b/site/content/amp/oasisctl/disable/disable-scheduled-root-password-rotation.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/disable/disable-scheduled-root-password-rotation.md rename to site/content/amp/oasisctl/disable/disable-scheduled-root-password-rotation.md diff --git a/site/content/3.10/arangograph/oasisctl/enable/_index.md b/site/content/amp/oasisctl/enable/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/enable/_index.md rename to site/content/amp/oasisctl/enable/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md b/site/content/amp/oasisctl/enable/enable-scheduled-root-password-rotation.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/enable/enable-scheduled-root-password-rotation.md rename to site/content/amp/oasisctl/enable/enable-scheduled-root-password-rotation.md diff --git a/site/content/3.10/arangograph/oasisctl/generate-docs.md b/site/content/amp/oasisctl/generate-docs.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/generate-docs.md rename to site/content/amp/oasisctl/generate-docs.md diff --git a/site/content/3.10/arangograph/oasisctl/get/_index.md b/site/content/amp/oasisctl/get/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/_index.md rename to site/content/amp/oasisctl/get/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-auditlog-archive.md b/site/content/amp/oasisctl/get/get-auditlog-archive.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-auditlog-archive.md rename to site/content/amp/oasisctl/get/get-auditlog-archive.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-auditlog-events.md b/site/content/amp/oasisctl/get/get-auditlog-events.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-auditlog-events.md rename to site/content/amp/oasisctl/get/get-auditlog-events.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-auditlog.md b/site/content/amp/oasisctl/get/get-auditlog.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-auditlog.md rename to site/content/amp/oasisctl/get/get-auditlog.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-backup-policy.md b/site/content/amp/oasisctl/get/get-backup-policy.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-backup-policy.md rename to site/content/amp/oasisctl/get/get-backup-policy.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-backup.md b/site/content/amp/oasisctl/get/get-backup.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-backup.md rename to site/content/amp/oasisctl/get/get-backup.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-cacertificate.md b/site/content/amp/oasisctl/get/get-cacertificate.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-cacertificate.md rename to site/content/amp/oasisctl/get/get-cacertificate.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-deployment.md b/site/content/amp/oasisctl/get/get-deployment.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-deployment.md rename to site/content/amp/oasisctl/get/get-deployment.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-example-installation.md b/site/content/amp/oasisctl/get/get-example-installation.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-example-installation.md rename to site/content/amp/oasisctl/get/get-example-installation.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-example.md b/site/content/amp/oasisctl/get/get-example.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-example.md rename to site/content/amp/oasisctl/get/get-example.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-group.md b/site/content/amp/oasisctl/get/get-group.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-group.md rename to site/content/amp/oasisctl/get/get-group.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-ipallowlist.md b/site/content/amp/oasisctl/get/get-ipallowlist.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-ipallowlist.md rename to site/content/amp/oasisctl/get/get-ipallowlist.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-metrics-token.md b/site/content/amp/oasisctl/get/get-metrics-token.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-metrics-token.md rename to site/content/amp/oasisctl/get/get-metrics-token.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-metrics.md b/site/content/amp/oasisctl/get/get-metrics.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-metrics.md rename to site/content/amp/oasisctl/get/get-metrics.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-notebook.md b/site/content/amp/oasisctl/get/get-notebook.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-notebook.md rename to site/content/amp/oasisctl/get/get-notebook.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-organization-authentication-providers.md b/site/content/amp/oasisctl/get/get-organization-authentication-providers.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-organization-authentication-providers.md rename to site/content/amp/oasisctl/get/get-organization-authentication-providers.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-organization-authentication.md b/site/content/amp/oasisctl/get/get-organization-authentication.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-organization-authentication.md rename to site/content/amp/oasisctl/get/get-organization-authentication.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md b/site/content/amp/oasisctl/get/get-organization-email-domain-restrictions.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-organization-email-domain-restrictions.md rename to site/content/amp/oasisctl/get/get-organization-email-domain-restrictions.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-organization-email-domain.md b/site/content/amp/oasisctl/get/get-organization-email-domain.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-organization-email-domain.md rename to site/content/amp/oasisctl/get/get-organization-email-domain.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-organization-email.md b/site/content/amp/oasisctl/get/get-organization-email.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-organization-email.md rename to site/content/amp/oasisctl/get/get-organization-email.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-organization-invite.md b/site/content/amp/oasisctl/get/get-organization-invite.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-organization-invite.md rename to site/content/amp/oasisctl/get/get-organization-invite.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-organization.md b/site/content/amp/oasisctl/get/get-organization.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-organization.md rename to site/content/amp/oasisctl/get/get-organization.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-policy.md b/site/content/amp/oasisctl/get/get-policy.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-policy.md rename to site/content/amp/oasisctl/get/get-policy.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-private-endpoint-service.md b/site/content/amp/oasisctl/get/get-private-endpoint-service.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-private-endpoint-service.md rename to site/content/amp/oasisctl/get/get-private-endpoint-service.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-private-endpoint.md b/site/content/amp/oasisctl/get/get-private-endpoint.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-private-endpoint.md rename to site/content/amp/oasisctl/get/get-private-endpoint.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-private.md b/site/content/amp/oasisctl/get/get-private.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-private.md rename to site/content/amp/oasisctl/get/get-private.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-project.md b/site/content/amp/oasisctl/get/get-project.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-project.md rename to site/content/amp/oasisctl/get/get-project.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-provider.md b/site/content/amp/oasisctl/get/get-provider.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-provider.md rename to site/content/amp/oasisctl/get/get-provider.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-region.md b/site/content/amp/oasisctl/get/get-region.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-region.md rename to site/content/amp/oasisctl/get/get-region.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-role.md b/site/content/amp/oasisctl/get/get-role.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-role.md rename to site/content/amp/oasisctl/get/get-role.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-self.md b/site/content/amp/oasisctl/get/get-self.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-self.md rename to site/content/amp/oasisctl/get/get-self.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-server-status.md b/site/content/amp/oasisctl/get/get-server-status.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-server-status.md rename to site/content/amp/oasisctl/get/get-server-status.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-server.md b/site/content/amp/oasisctl/get/get-server.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-server.md rename to site/content/amp/oasisctl/get/get-server.md diff --git a/site/content/3.10/arangograph/oasisctl/get/get-tandc.md b/site/content/amp/oasisctl/get/get-tandc.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/get/get-tandc.md rename to site/content/amp/oasisctl/get/get-tandc.md diff --git a/site/content/3.10/arangograph/oasisctl/import.md b/site/content/amp/oasisctl/import.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/import.md rename to site/content/amp/oasisctl/import.md diff --git a/site/content/3.10/arangograph/oasisctl/list/_index.md b/site/content/amp/oasisctl/list/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/_index.md rename to site/content/amp/oasisctl/list/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-apikeys.md b/site/content/amp/oasisctl/list/list-apikeys.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-apikeys.md rename to site/content/amp/oasisctl/list/list-apikeys.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-arangodb-versions.md b/site/content/amp/oasisctl/list/list-arangodb-versions.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-arangodb-versions.md rename to site/content/amp/oasisctl/list/list-arangodb-versions.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-arangodb.md b/site/content/amp/oasisctl/list/list-arangodb.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-arangodb.md rename to site/content/amp/oasisctl/list/list-arangodb.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-auditlog-archives.md b/site/content/amp/oasisctl/list/list-auditlog-archives.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-auditlog-archives.md rename to site/content/amp/oasisctl/list/list-auditlog-archives.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-auditlog-destinations.md b/site/content/amp/oasisctl/list/list-auditlog-destinations.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-auditlog-destinations.md rename to site/content/amp/oasisctl/list/list-auditlog-destinations.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-auditlog.md b/site/content/amp/oasisctl/list/list-auditlog.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-auditlog.md rename to site/content/amp/oasisctl/list/list-auditlog.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-auditlogs.md b/site/content/amp/oasisctl/list/list-auditlogs.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-auditlogs.md rename to site/content/amp/oasisctl/list/list-auditlogs.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-backup-policies.md b/site/content/amp/oasisctl/list/list-backup-policies.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-backup-policies.md rename to site/content/amp/oasisctl/list/list-backup-policies.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-backup.md b/site/content/amp/oasisctl/list/list-backup.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-backup.md rename to site/content/amp/oasisctl/list/list-backup.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-backups.md b/site/content/amp/oasisctl/list/list-backups.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-backups.md rename to site/content/amp/oasisctl/list/list-backups.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-cacertificates.md b/site/content/amp/oasisctl/list/list-cacertificates.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-cacertificates.md rename to site/content/amp/oasisctl/list/list-cacertificates.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-cpusizes.md b/site/content/amp/oasisctl/list/list-cpusizes.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-cpusizes.md rename to site/content/amp/oasisctl/list/list-cpusizes.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-deployments.md b/site/content/amp/oasisctl/list/list-deployments.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-deployments.md rename to site/content/amp/oasisctl/list/list-deployments.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-diskperformances.md b/site/content/amp/oasisctl/list/list-diskperformances.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-diskperformances.md rename to site/content/amp/oasisctl/list/list-diskperformances.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-effective-permissions.md b/site/content/amp/oasisctl/list/list-effective-permissions.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-effective-permissions.md rename to site/content/amp/oasisctl/list/list-effective-permissions.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-effective.md b/site/content/amp/oasisctl/list/list-effective.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-effective.md rename to site/content/amp/oasisctl/list/list-effective.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-example-installations.md b/site/content/amp/oasisctl/list/list-example-installations.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-example-installations.md rename to site/content/amp/oasisctl/list/list-example-installations.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-example.md b/site/content/amp/oasisctl/list/list-example.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-example.md rename to site/content/amp/oasisctl/list/list-example.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-examples.md b/site/content/amp/oasisctl/list/list-examples.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-examples.md rename to site/content/amp/oasisctl/list/list-examples.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-group-members.md b/site/content/amp/oasisctl/list/list-group-members.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-group-members.md rename to site/content/amp/oasisctl/list/list-group-members.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-group.md b/site/content/amp/oasisctl/list/list-group.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-group.md rename to site/content/amp/oasisctl/list/list-group.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-groups.md b/site/content/amp/oasisctl/list/list-groups.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-groups.md rename to site/content/amp/oasisctl/list/list-groups.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-ipallowlists.md b/site/content/amp/oasisctl/list/list-ipallowlists.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-ipallowlists.md rename to site/content/amp/oasisctl/list/list-ipallowlists.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-metrics-tokens.md b/site/content/amp/oasisctl/list/list-metrics-tokens.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-metrics-tokens.md rename to site/content/amp/oasisctl/list/list-metrics-tokens.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-metrics.md b/site/content/amp/oasisctl/list/list-metrics.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-metrics.md rename to site/content/amp/oasisctl/list/list-metrics.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-nodesizes.md b/site/content/amp/oasisctl/list/list-nodesizes.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-nodesizes.md rename to site/content/amp/oasisctl/list/list-nodesizes.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-notebookmodels.md b/site/content/amp/oasisctl/list/list-notebookmodels.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-notebookmodels.md rename to site/content/amp/oasisctl/list/list-notebookmodels.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-notebooks.md b/site/content/amp/oasisctl/list/list-notebooks.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-notebooks.md rename to site/content/amp/oasisctl/list/list-notebooks.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-organization-invites.md b/site/content/amp/oasisctl/list/list-organization-invites.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-organization-invites.md rename to site/content/amp/oasisctl/list/list-organization-invites.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-organization-members.md b/site/content/amp/oasisctl/list/list-organization-members.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-organization-members.md rename to site/content/amp/oasisctl/list/list-organization-members.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-organization.md b/site/content/amp/oasisctl/list/list-organization.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-organization.md rename to site/content/amp/oasisctl/list/list-organization.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-organizations.md b/site/content/amp/oasisctl/list/list-organizations.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-organizations.md rename to site/content/amp/oasisctl/list/list-organizations.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-permissions.md b/site/content/amp/oasisctl/list/list-permissions.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-permissions.md rename to site/content/amp/oasisctl/list/list-permissions.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-projects.md b/site/content/amp/oasisctl/list/list-projects.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-projects.md rename to site/content/amp/oasisctl/list/list-projects.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-providers.md b/site/content/amp/oasisctl/list/list-providers.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-providers.md rename to site/content/amp/oasisctl/list/list-providers.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-regions.md b/site/content/amp/oasisctl/list/list-regions.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-regions.md rename to site/content/amp/oasisctl/list/list-regions.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-roles.md b/site/content/amp/oasisctl/list/list-roles.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-roles.md rename to site/content/amp/oasisctl/list/list-roles.md diff --git a/site/content/3.10/arangograph/oasisctl/list/list-servers.md b/site/content/amp/oasisctl/list/list-servers.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/list/list-servers.md rename to site/content/amp/oasisctl/list/list-servers.md diff --git a/site/content/3.10/arangograph/oasisctl/lock/_index.md b/site/content/amp/oasisctl/lock/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/lock/_index.md rename to site/content/amp/oasisctl/lock/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/lock/lock-cacertificate.md b/site/content/amp/oasisctl/lock/lock-cacertificate.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/lock/lock-cacertificate.md rename to site/content/amp/oasisctl/lock/lock-cacertificate.md diff --git a/site/content/3.10/arangograph/oasisctl/lock/lock-deployment.md b/site/content/amp/oasisctl/lock/lock-deployment.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/lock/lock-deployment.md rename to site/content/amp/oasisctl/lock/lock-deployment.md diff --git a/site/content/3.10/arangograph/oasisctl/lock/lock-ipallowlist.md b/site/content/amp/oasisctl/lock/lock-ipallowlist.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/lock/lock-ipallowlist.md rename to site/content/amp/oasisctl/lock/lock-ipallowlist.md diff --git a/site/content/3.10/arangograph/oasisctl/lock/lock-organization.md b/site/content/amp/oasisctl/lock/lock-organization.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/lock/lock-organization.md rename to site/content/amp/oasisctl/lock/lock-organization.md diff --git a/site/content/3.10/arangograph/oasisctl/lock/lock-policy.md b/site/content/amp/oasisctl/lock/lock-policy.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/lock/lock-policy.md rename to site/content/amp/oasisctl/lock/lock-policy.md diff --git a/site/content/3.10/arangograph/oasisctl/lock/lock-project.md b/site/content/amp/oasisctl/lock/lock-project.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/lock/lock-project.md rename to site/content/amp/oasisctl/lock/lock-project.md diff --git a/site/content/3.10/arangograph/oasisctl/login.md b/site/content/amp/oasisctl/login.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/login.md rename to site/content/amp/oasisctl/login.md diff --git a/site/content/3.10/arangograph/oasisctl/logs.md b/site/content/amp/oasisctl/logs.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/logs.md rename to site/content/amp/oasisctl/logs.md diff --git a/site/content/3.10/arangograph/oasisctl/options.md b/site/content/amp/oasisctl/options.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/options.md rename to site/content/amp/oasisctl/options.md diff --git a/site/content/3.10/arangograph/oasisctl/pause/_index.md b/site/content/amp/oasisctl/pause/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/pause/_index.md rename to site/content/amp/oasisctl/pause/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/pause/pause-notebook.md b/site/content/amp/oasisctl/pause/pause-notebook.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/pause/pause-notebook.md rename to site/content/amp/oasisctl/pause/pause-notebook.md diff --git a/site/content/3.10/arangograph/oasisctl/rebalance/_index.md b/site/content/amp/oasisctl/rebalance/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/rebalance/_index.md rename to site/content/amp/oasisctl/rebalance/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md b/site/content/amp/oasisctl/rebalance/rebalance-deployment-shards.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/rebalance/rebalance-deployment-shards.md rename to site/content/amp/oasisctl/rebalance/rebalance-deployment-shards.md diff --git a/site/content/3.10/arangograph/oasisctl/rebalance/rebalance-deployment.md b/site/content/amp/oasisctl/rebalance/rebalance-deployment.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/rebalance/rebalance-deployment.md rename to site/content/amp/oasisctl/rebalance/rebalance-deployment.md diff --git a/site/content/3.10/arangograph/oasisctl/reject/_index.md b/site/content/amp/oasisctl/reject/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/reject/_index.md rename to site/content/amp/oasisctl/reject/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/reject/reject-organization-invite.md b/site/content/amp/oasisctl/reject/reject-organization-invite.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/reject/reject-organization-invite.md rename to site/content/amp/oasisctl/reject/reject-organization-invite.md diff --git a/site/content/3.10/arangograph/oasisctl/reject/reject-organization.md b/site/content/amp/oasisctl/reject/reject-organization.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/reject/reject-organization.md rename to site/content/amp/oasisctl/reject/reject-organization.md diff --git a/site/content/3.10/arangograph/oasisctl/renew/_index.md b/site/content/amp/oasisctl/renew/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/renew/_index.md rename to site/content/amp/oasisctl/renew/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/renew/renew-apikey-token.md b/site/content/amp/oasisctl/renew/renew-apikey-token.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/renew/renew-apikey-token.md rename to site/content/amp/oasisctl/renew/renew-apikey-token.md diff --git a/site/content/3.10/arangograph/oasisctl/renew/renew-apikey.md b/site/content/amp/oasisctl/renew/renew-apikey.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/renew/renew-apikey.md rename to site/content/amp/oasisctl/renew/renew-apikey.md diff --git a/site/content/3.10/arangograph/oasisctl/resume/_index.md b/site/content/amp/oasisctl/resume/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/resume/_index.md rename to site/content/amp/oasisctl/resume/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/resume/resume-deployment.md b/site/content/amp/oasisctl/resume/resume-deployment.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/resume/resume-deployment.md rename to site/content/amp/oasisctl/resume/resume-deployment.md diff --git a/site/content/3.10/arangograph/oasisctl/resume/resume-notebook.md b/site/content/amp/oasisctl/resume/resume-notebook.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/resume/resume-notebook.md rename to site/content/amp/oasisctl/resume/resume-notebook.md diff --git a/site/content/3.10/arangograph/oasisctl/revoke/_index.md b/site/content/amp/oasisctl/revoke/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/revoke/_index.md rename to site/content/amp/oasisctl/revoke/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/revoke/revoke-apikey-token.md b/site/content/amp/oasisctl/revoke/revoke-apikey-token.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/revoke/revoke-apikey-token.md rename to site/content/amp/oasisctl/revoke/revoke-apikey-token.md diff --git a/site/content/3.10/arangograph/oasisctl/revoke/revoke-apikey.md b/site/content/amp/oasisctl/revoke/revoke-apikey.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/revoke/revoke-apikey.md rename to site/content/amp/oasisctl/revoke/revoke-apikey.md diff --git a/site/content/3.10/arangograph/oasisctl/revoke/revoke-metrics-token.md b/site/content/amp/oasisctl/revoke/revoke-metrics-token.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/revoke/revoke-metrics-token.md rename to site/content/amp/oasisctl/revoke/revoke-metrics-token.md diff --git a/site/content/3.10/arangograph/oasisctl/revoke/revoke-metrics.md b/site/content/amp/oasisctl/revoke/revoke-metrics.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/revoke/revoke-metrics.md rename to site/content/amp/oasisctl/revoke/revoke-metrics.md diff --git a/site/content/3.10/arangograph/oasisctl/rotate/_index.md b/site/content/amp/oasisctl/rotate/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/rotate/_index.md rename to site/content/amp/oasisctl/rotate/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/rotate/rotate-deployment-server.md b/site/content/amp/oasisctl/rotate/rotate-deployment-server.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/rotate/rotate-deployment-server.md rename to site/content/amp/oasisctl/rotate/rotate-deployment-server.md diff --git a/site/content/3.10/arangograph/oasisctl/rotate/rotate-deployment.md b/site/content/amp/oasisctl/rotate/rotate-deployment.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/rotate/rotate-deployment.md rename to site/content/amp/oasisctl/rotate/rotate-deployment.md diff --git a/site/content/3.10/arangograph/oasisctl/top.md b/site/content/amp/oasisctl/top.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/top.md rename to site/content/amp/oasisctl/top.md diff --git a/site/content/3.10/arangograph/oasisctl/unlock/_index.md b/site/content/amp/oasisctl/unlock/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/unlock/_index.md rename to site/content/amp/oasisctl/unlock/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/unlock/unlock-cacertificate.md b/site/content/amp/oasisctl/unlock/unlock-cacertificate.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/unlock/unlock-cacertificate.md rename to site/content/amp/oasisctl/unlock/unlock-cacertificate.md diff --git a/site/content/3.10/arangograph/oasisctl/unlock/unlock-deployment.md b/site/content/amp/oasisctl/unlock/unlock-deployment.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/unlock/unlock-deployment.md rename to site/content/amp/oasisctl/unlock/unlock-deployment.md diff --git a/site/content/3.10/arangograph/oasisctl/unlock/unlock-ipallowlist.md b/site/content/amp/oasisctl/unlock/unlock-ipallowlist.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/unlock/unlock-ipallowlist.md rename to site/content/amp/oasisctl/unlock/unlock-ipallowlist.md diff --git a/site/content/3.10/arangograph/oasisctl/unlock/unlock-organization.md b/site/content/amp/oasisctl/unlock/unlock-organization.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/unlock/unlock-organization.md rename to site/content/amp/oasisctl/unlock/unlock-organization.md diff --git a/site/content/3.10/arangograph/oasisctl/unlock/unlock-policy.md b/site/content/amp/oasisctl/unlock/unlock-policy.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/unlock/unlock-policy.md rename to site/content/amp/oasisctl/unlock/unlock-policy.md diff --git a/site/content/3.10/arangograph/oasisctl/unlock/unlock-project.md b/site/content/amp/oasisctl/unlock/unlock-project.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/unlock/unlock-project.md rename to site/content/amp/oasisctl/unlock/unlock-project.md diff --git a/site/content/3.10/arangograph/oasisctl/update/_index.md b/site/content/amp/oasisctl/update/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/_index.md rename to site/content/amp/oasisctl/update/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-auditlog.md b/site/content/amp/oasisctl/update/update-auditlog.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-auditlog.md rename to site/content/amp/oasisctl/update/update-auditlog.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-backup-policy.md b/site/content/amp/oasisctl/update/update-backup-policy.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-backup-policy.md rename to site/content/amp/oasisctl/update/update-backup-policy.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-backup.md b/site/content/amp/oasisctl/update/update-backup.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-backup.md rename to site/content/amp/oasisctl/update/update-backup.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-cacertificate.md b/site/content/amp/oasisctl/update/update-cacertificate.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-cacertificate.md rename to site/content/amp/oasisctl/update/update-cacertificate.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-deployment.md b/site/content/amp/oasisctl/update/update-deployment.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-deployment.md rename to site/content/amp/oasisctl/update/update-deployment.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-group.md b/site/content/amp/oasisctl/update/update-group.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-group.md rename to site/content/amp/oasisctl/update/update-group.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-ipallowlist.md b/site/content/amp/oasisctl/update/update-ipallowlist.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-ipallowlist.md rename to site/content/amp/oasisctl/update/update-ipallowlist.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-metrics-token.md b/site/content/amp/oasisctl/update/update-metrics-token.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-metrics-token.md rename to site/content/amp/oasisctl/update/update-metrics-token.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-metrics.md b/site/content/amp/oasisctl/update/update-metrics.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-metrics.md rename to site/content/amp/oasisctl/update/update-metrics.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-notebook.md b/site/content/amp/oasisctl/update/update-notebook.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-notebook.md rename to site/content/amp/oasisctl/update/update-notebook.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-organization-authentication-providers.md b/site/content/amp/oasisctl/update/update-organization-authentication-providers.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-organization-authentication-providers.md rename to site/content/amp/oasisctl/update/update-organization-authentication-providers.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-organization-authentication.md b/site/content/amp/oasisctl/update/update-organization-authentication.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-organization-authentication.md rename to site/content/amp/oasisctl/update/update-organization-authentication.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md b/site/content/amp/oasisctl/update/update-organization-email-domain-restrictions.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-organization-email-domain-restrictions.md rename to site/content/amp/oasisctl/update/update-organization-email-domain-restrictions.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-organization-email-domain.md b/site/content/amp/oasisctl/update/update-organization-email-domain.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-organization-email-domain.md rename to site/content/amp/oasisctl/update/update-organization-email-domain.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-organization-email.md b/site/content/amp/oasisctl/update/update-organization-email.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-organization-email.md rename to site/content/amp/oasisctl/update/update-organization-email.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-organization.md b/site/content/amp/oasisctl/update/update-organization.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-organization.md rename to site/content/amp/oasisctl/update/update-organization.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-policy-add-binding.md b/site/content/amp/oasisctl/update/update-policy-add-binding.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-policy-add-binding.md rename to site/content/amp/oasisctl/update/update-policy-add-binding.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-policy-add.md b/site/content/amp/oasisctl/update/update-policy-add.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-policy-add.md rename to site/content/amp/oasisctl/update/update-policy-add.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-policy-delete-binding.md b/site/content/amp/oasisctl/update/update-policy-delete-binding.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-policy-delete-binding.md rename to site/content/amp/oasisctl/update/update-policy-delete-binding.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-policy-delete.md b/site/content/amp/oasisctl/update/update-policy-delete.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-policy-delete.md rename to site/content/amp/oasisctl/update/update-policy-delete.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-policy.md b/site/content/amp/oasisctl/update/update-policy.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-policy.md rename to site/content/amp/oasisctl/update/update-policy.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-private-endpoint-service.md b/site/content/amp/oasisctl/update/update-private-endpoint-service.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-private-endpoint-service.md rename to site/content/amp/oasisctl/update/update-private-endpoint-service.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-private-endpoint.md b/site/content/amp/oasisctl/update/update-private-endpoint.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-private-endpoint.md rename to site/content/amp/oasisctl/update/update-private-endpoint.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-private.md b/site/content/amp/oasisctl/update/update-private.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-private.md rename to site/content/amp/oasisctl/update/update-private.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-project.md b/site/content/amp/oasisctl/update/update-project.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-project.md rename to site/content/amp/oasisctl/update/update-project.md diff --git a/site/content/3.10/arangograph/oasisctl/update/update-role.md b/site/content/amp/oasisctl/update/update-role.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/update/update-role.md rename to site/content/amp/oasisctl/update/update-role.md diff --git a/site/content/3.10/arangograph/oasisctl/upgrade.md b/site/content/amp/oasisctl/upgrade.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/upgrade.md rename to site/content/amp/oasisctl/upgrade.md diff --git a/site/content/3.10/arangograph/oasisctl/version.md b/site/content/amp/oasisctl/version.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/version.md rename to site/content/amp/oasisctl/version.md diff --git a/site/content/3.10/arangograph/oasisctl/wait/_index.md b/site/content/amp/oasisctl/wait/_index.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/wait/_index.md rename to site/content/amp/oasisctl/wait/_index.md diff --git a/site/content/3.10/arangograph/oasisctl/wait/wait-deployment.md b/site/content/amp/oasisctl/wait/wait-deployment.md similarity index 100% rename from site/content/3.10/arangograph/oasisctl/wait/wait-deployment.md rename to site/content/amp/oasisctl/wait/wait-deployment.md diff --git a/site/content/3.13/arangograph/organizations/_index.md b/site/content/amp/organizations/_index.md similarity index 92% rename from site/content/3.13/arangograph/organizations/_index.md rename to site/content/amp/organizations/_index.md index 083b746dda..0a0a4e0618 100644 --- a/site/content/3.13/arangograph/organizations/_index.md +++ b/site/content/amp/organizations/_index.md @@ -23,13 +23,13 @@ member of one _Free-to-try_ tier organization at a time. 3. The overview will open for the selected organization, showing the number of projects, the tier and when it was created. -![ArangoGraph Organization Switcher](../../../images/arangograph-organization-switcher.png) +![ArangoGraph Organization Switcher](../../images/arangograph-organization-switcher.png) -![ArangoGraph Organization Overview](../../../images/arangograph-organization-overview.png) +![ArangoGraph Organization Overview](../../images/arangograph-organization-overview.png) ## ArangoGraph Packages -With the ArangoGraph Insights Platform, your organization can choose one of the +With the Arango Managed Platform (AMP), your organization can choose one of the following packages. ### Free Trial @@ -77,7 +77,7 @@ deployments will no longer expire and you can create more and larger deployments See [Billing: How to add billing details / payment methods](billing.md) -![ArangoGraph Billing](../../../images/arangograph-billing.png) +![ArangoGraph Billing](../../images/arangograph-billing.png) ## How to create a new organization diff --git a/site/content/3.11/arangograph/organizations/billing.md b/site/content/amp/organizations/billing.md similarity index 85% rename from site/content/3.11/arangograph/organizations/billing.md rename to site/content/amp/organizations/billing.md index 9b892b5500..34e2010384 100644 --- a/site/content/3.11/arangograph/organizations/billing.md +++ b/site/content/amp/organizations/billing.md @@ -15,7 +15,7 @@ description: >- to automatically. 6. Click **Save**. -![ArangoGraph Billing Details](../../../images/arangograph-billing-details.png) +![ArangoGraph Billing Details](../../images/arangograph-billing-details.png) ## How to add a payment method @@ -25,7 +25,7 @@ description: >- 4. Fill out the form with your credit card details. Currently, a credit card is the only available payment method. 5. Click **Save**. -![ArangoGraph Payment Method](../../../images/arangograph-add-payment-method-credit-card.png) +![ArangoGraph Payment Method](../../images/arangograph-add-payment-method-credit-card.png) {{% comment %}} TODO: Need screenshot with invoice diff --git a/site/content/3.10/arangograph/organizations/credits-and-usage.md b/site/content/amp/organizations/credits-and-usage.md similarity index 98% rename from site/content/3.10/arangograph/organizations/credits-and-usage.md rename to site/content/amp/organizations/credits-and-usage.md index 34dafb8488..b0253b6ac7 100644 --- a/site/content/3.10/arangograph/organizations/credits-and-usage.md +++ b/site/content/amp/organizations/credits-and-usage.md @@ -57,7 +57,7 @@ There are a number of benefits that ArangoGraph credits provide: - The number of credits remaining. - The number of credits consumed for each deployment. -![ArangoGraph Credits and Usage](../../../images/arangograph-credits-and-usage.png) +![ArangoGraph Credits and Usage](../../images/arangograph-credits-and-usage.png) ## FAQs diff --git a/site/content/3.10/arangograph/organizations/users-and-groups.md b/site/content/amp/organizations/users-and-groups.md similarity index 90% rename from site/content/3.10/arangograph/organizations/users-and-groups.md rename to site/content/amp/organizations/users-and-groups.md index abed36697b..0835792ad6 100644 --- a/site/content/3.10/arangograph/organizations/users-and-groups.md +++ b/site/content/amp/organizations/users-and-groups.md @@ -32,7 +32,7 @@ To edit permissions of members see [Access Control](../security-and-access-contr Members are a list of users that can access an organization. -![ArangoGraph Member Access Control](../../../images/arangograph-access-control-members.png) +![ArangoGraph Member Access Control](../../images/arangograph-access-control-members.png) ### How to add a new member to the organization @@ -48,7 +48,7 @@ Members are a list of users that can access an organization. 8. After accepting the invite the person will be added to the organization [members](#members). -![ArangoGraph Organization Invites](../../../images/arangograph-new-invite.png) +![ArangoGraph Organization Invites](../../images/arangograph-new-invite.png) ### How to respond to an organization invite @@ -77,7 +77,7 @@ You cannot delete members who are organization owners. A group is a defined set of members. Groups can then be bound to roles. These bindings contribute to the respective organization, project or deployment policy. -![ArangoGraph Groups](../../../images/arangograph-groups.png) +![ArangoGraph Groups](../../images/arangograph-groups.png) ### How to create a new group @@ -87,7 +87,7 @@ bindings contribute to the respective organization, project or deployment policy 4. Select the members you want to be part of the group. 5. Press the __Create__ button. -![ArangoGraph New Group](../../../images/arangograph-new-group.png) +![ArangoGraph New Group](../../images/arangograph-new-group.png) ### How to view, edit or remove a group @@ -100,7 +100,7 @@ bindings contribute to the respective organization, project or deployment policy You can also click a group name to view it. There are buttons to __Edit__ and __Delete__ the currently viewed group. -![ArangoGraph Group](../../../images/arangograph-group.png) +![ArangoGraph Group](../../images/arangograph-group.png) {{< info >}} The groups __Organization members__ and __Organization owners__ are virtual groups @@ -122,4 +122,4 @@ See [How to add a new member to the organization](#how-to-add-a-new-member-to-th 3. You may delete pending invites by clicking the __recycle bin__ icon in the __Actions__ column. -![ArangoGraph Organization Invites](../../../images/arangograph-org-invites.png) +![ArangoGraph Organization Invites](../../images/arangograph-org-invites.png) diff --git a/site/content/3.10/arangograph/projects.md b/site/content/amp/projects.md similarity index 93% rename from site/content/3.10/arangograph/projects.md rename to site/content/amp/projects.md index f4efd27833..0943c30bdb 100644 --- a/site/content/3.10/arangograph/projects.md +++ b/site/content/amp/projects.md @@ -15,7 +15,7 @@ Projects are a container for related deployments, certificates & IP allowlists. Projects also come with their own policy for access control. You can have any number of deployment under one project. -![ArangoGraph Projects Overview](../../images/arangograph-projects-overview.png) +![ArangoGraph Projects Overview](../images/arangograph-projects-overview.png) ## How to create a new project @@ -27,9 +27,9 @@ number of deployment under one project. 6. You will be taken to the project page. 7. To change the name or description, click either at the top of the page. -![ArangoGraph New Project](../../images/arangograph-new-project.png) +![ArangoGraph New Project](../images/arangograph-new-project.png) -![ArangoGraph Project Summary](../../images/arangograph-project.png) +![ArangoGraph Project Summary](../images/arangograph-project.png) {{< info >}} Projects contain exactly **one policy**. Within that policy, you can define diff --git a/site/content/3.12/arangograph/security-and-access-control/_index.md b/site/content/amp/security-and-access-control/_index.md similarity index 98% rename from site/content/3.12/arangograph/security-and-access-control/_index.md rename to site/content/amp/security-and-access-control/_index.md index fa37f9af13..1c91090aab 100644 --- a/site/content/3.12/arangograph/security-and-access-control/_index.md +++ b/site/content/amp/security-and-access-control/_index.md @@ -6,7 +6,7 @@ description: >- This guide explains which access control concepts are available in ArangoGraph and how to use them --- -The ArangoGraph Insights Platform has a structured set of resources that are subject to security and +The Arango Managed Platform (AMP) has a structured set of resources that are subject to security and access control: - Organizations @@ -79,7 +79,7 @@ To delete a role binding, click the **Recycle Bin** icon in the **Actions** colu Currently, you cannot edit a role binding, you can only delete it. {{< /info >}} -![ArangoGraph Project Policy](../../../images/arangograph-policy-page.png) +![ArangoGraph Project Policy](../../images/arangograph-policy-page.png) ### How to add a role binding to a policy @@ -89,7 +89,7 @@ Currently, you cannot edit a role binding, you can only delete it. 4. Select one or more roles you want to assign to the specified members. 5. Click **Create**. -![ArangoGraph New Role Binding](../../../images/arangograph-new-policy-role-binding.png) +![ArangoGraph New Role Binding](../../images/arangograph-new-policy-role-binding.png) ## Roles @@ -104,7 +104,7 @@ project, or deployment policy. There are predefined roles, but you can also create custom ones. -![ArangoGraph Roles](../../../images/arangograph-access-control-roles.png) +![ArangoGraph Roles](../../images/arangograph-access-control-roles.png) ### Predefined roles @@ -485,7 +485,7 @@ The roles below are described following this pattern: 4. Select the required permissions. 5. Click **Create**. -![ArangoGraph New Role](../../../images/arangograph-create-role.png) +![ArangoGraph New Role](../../images/arangograph-create-role.png) ### How to view, edit or remove a custom role @@ -693,7 +693,7 @@ projects belonging to that organization. - **Confirmation** - confirm that logging auditing events increases the price of your deployments. - ![ArangoGraph audit log](../../../images/arangograph-audit-log.png) + ![ArangoGraph audit log](../../images/arangograph-audit-log.png) 4. Click **Create** to add the audit log. You can now use it in the projects belonging to your organization. diff --git a/site/content/3.11/arangograph/security-and-access-control/single-sign-on/_index.md b/site/content/amp/security-and-access-control/single-sign-on/_index.md similarity index 87% rename from site/content/3.11/arangograph/security-and-access-control/single-sign-on/_index.md rename to site/content/amp/security-and-access-control/single-sign-on/_index.md index 1004352974..4d58442907 100644 --- a/site/content/3.11/arangograph/security-and-access-control/single-sign-on/_index.md +++ b/site/content/amp/security-and-access-control/single-sign-on/_index.md @@ -48,15 +48,15 @@ Provider (IdP). For more information about Okta, please refer to the 2. Click **Create App Integration**. 3. In the **Create a new app integration** dialog, select **SAML 2.0**. - ![ArangoGraph Create Okta App Integration](../../../../images/arangograph-okta-create-integration.png) + ![ArangoGraph Create Okta App Integration](../../../images/arangograph-okta-create-integration.png) 4. In the **General Settings**, specify a name for your integration and click **Next**. - ![ArangoGraph Okta Integration Name](../../../../images/arangograph-okta-integration-name.png) + ![ArangoGraph Okta Integration Name](../../../images/arangograph-okta-integration-name.png) 5. Configure the SAML settings: - For **Single sign-on URL**, use `https://auth.arangodb.com/login/callback?connection=ORG_ID` - For **Audience URI (SP Entity ID)**, use `urn:auth0:arangodb:ORG_ID` - ![ArangoGraph Okta SAML General Settings](../../../../images/arangograph-okta-saml-general-settings.png) + ![ArangoGraph Okta SAML General Settings](../../../images/arangograph-okta-saml-general-settings.png) 6. Replace **ORG_ID** with your organization identifier from the ArangoGraph Dashboard. To find your organization ID, go to the **User Toolbar** @@ -68,7 +68,7 @@ Provider (IdP). For more information about Okta, please refer to the - `https://auth.arangodb.com/login/callback?connection=14587062` - `urn:auth0:arangodb:14587062` - ![ArangoGraph Organization ID](../../../../images/arangograph-organization-id.png) + ![ArangoGraph Organization ID](../../../images/arangograph-organization-id.png) 7. In the **Attribute Statements** section, add custom attributes as seen in the image below: - email: `user.email` - given_name: `user.firstName` @@ -79,7 +79,7 @@ Provider (IdP). For more information about Okta, please refer to the Okta attribute names. The values of these attributes are automatically filled in based on the users list that is defined in Okta. - ![ArangoGraph Okta SAML Attributes](../../../../images/arangograph-okta-saml-attributes.png) + ![ArangoGraph Okta SAML Attributes](../../../images/arangograph-okta-saml-attributes.png) 8. Click **Next**. 9. In the **Configure feedback** section, select **I'm an Okta customer adding an internal app**. 10. Click **Finish**. The SAML app integration is now created. @@ -92,7 +92,7 @@ the SSO configuration. 1. Go to the **SAML Signing Certificates** section, displayed under the **Sign On** tab. 2. Click **View SAML setup instructions**. - ![ArangoGraph Okta SAML Setup](../../../../images/arangograph-okta-saml-setup.png) + ![ArangoGraph Okta SAML Setup](../../../images/arangograph-okta-saml-setup.png) 3. The setup instructions include the following items: - **Identity Provider Single Sign-On URL** - **Identity Provider Issuer** diff --git a/site/content/3.12/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md b/site/content/amp/security-and-access-control/single-sign-on/scim-provisioning.md similarity index 97% rename from site/content/3.12/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md rename to site/content/amp/security-and-access-control/single-sign-on/scim-provisioning.md index 8cf40b8009..8fc8f15289 100644 --- a/site/content/3.12/arangograph/security-and-access-control/single-sign-on/scim-provisioning.md +++ b/site/content/amp/security-and-access-control/single-sign-on/scim-provisioning.md @@ -67,7 +67,7 @@ supports the SCIM provisioning feature. for the account that handles the SCIM actions - in this case ArangoGraph. 7. Go to the ArangoGraph Dashboard and create a new API key ID and Secret. - ![ArangoGraph Create new API key](../../../../images/arangograph-okta-api-key.png) + ![ArangoGraph Create new API key](../../../images/arangograph-okta-api-key.png) Make sure to select one organization from the list and do not set any value in the **Time to live** field. For more information, diff --git a/site/content/3.12/arangograph/security-and-access-control/x-509-certificates.md b/site/content/amp/security-and-access-control/x-509-certificates.md similarity index 94% rename from site/content/3.12/arangograph/security-and-access-control/x-509-certificates.md rename to site/content/amp/security-and-access-control/x-509-certificates.md index d8d694a139..d0890e2738 100644 --- a/site/content/3.12/arangograph/security-and-access-control/x-509-certificates.md +++ b/site/content/amp/security-and-access-control/x-509-certificates.md @@ -116,7 +116,7 @@ the self-signed certificate as Subject Alternative Name (SAN). - The **tag** icon to make the certificate the new default. - The **recycle bin** icon to delete a certificate. -![ArangoGraph Create New Certificate](../../../images/arangograph-new-certificate.png) +![ArangoGraph Create New Certificate](../../images/arangograph-new-certificate.png) ## How to install a certificate @@ -130,9 +130,9 @@ well. This operation varies between operating systems. To install a self-signed certificate on your local machine, open the certificate and follow the installation instructions. -![ArangoGraph Certificates](../../../images/arangograph-cert-page-with-cert-present.png) +![ArangoGraph Certificates](../../images/arangograph-cert-page-with-cert-present.png) -![ArangoGraph Certificate Install Instructions](../../../images/arangograph-cert-install-instructions.png) +![ArangoGraph Certificate Install Instructions](../../images/arangograph-cert-install-instructions.png) You can also extract the information from all certificates in the chain using the `openssl` tool. @@ -152,7 +152,7 @@ unique ID that is part of your ArangoGraph deployment endpoint URL. ## How to connect to your application -[ArangoDB drivers](../../develop/drivers/_index.md), also called connectors, allow you to +[ArangoDB drivers](../../arangodb/3.12/develop/drivers/_index.md), also called connectors, allow you to easily connect ArangoGraph deployments to your application. 1. Navigate to **Deployments** and click the **View** button to show the @@ -162,7 +162,7 @@ easily connect ArangoGraph deployments to your application. 4. Follow the examples to connect a driver to your deployment. They include code examples on how to use certificates in your application. -![ArangoGraph Connecting Drivers](../../../images/arangograph-connecting-drivers.png) +![ArangoGraph Connecting Drivers](../../images/arangograph-connecting-drivers.png) ## Certificate Rotation diff --git a/site/content/3.10/_index.md b/site/content/arangodb/3.10/_index.md similarity index 82% rename from site/content/3.10/_index.md rename to site/content/arangodb/3.10/_index.md index dee4818818..5322d252a7 100644 --- a/site/content/3.10/_index.md +++ b/site/content/arangodb/3.10/_index.md @@ -1,14 +1,14 @@ --- title: Recommended Resources menuTitle: '3.10' -weight: 0 +weight: 1 layout: default --- {{< cloudbanner >}} {{< cards >}} -{{% card title="What is ArangoDB?" link="about-arangodb/" %}} +{{% card title="What is ArangoDB?" link="about/" %}} Get to know graphs, ArangoDB's use cases and features. {{% /card %}} @@ -17,8 +17,8 @@ Learn about ArangoDB's core concepts, how to interact with the database system, and get a server instance up and running. {{% /card %}} -{{% card title="ArangoGraph Insights Platform" link="arangograph/" %}} -Try out ArangoDB's fully-managed cloud offering for a faster time to value. +{{% card title="Arango Managed Platform (AMP)" link="amp/" %}} +Try out Arango's fully-managed cloud offering for a faster time to value. {{% /card %}} {{% card title="AQL" link="aql/" %}} diff --git a/site/content/3.11/about-arangodb/_index.md b/site/content/arangodb/3.10/about/_index.md similarity index 82% rename from site/content/3.11/about-arangodb/_index.md rename to site/content/arangodb/3.10/about/_index.md index 9b96a70c37..62ade93bbb 100644 --- a/site/content/3.11/about-arangodb/_index.md +++ b/site/content/arangodb/3.10/about/_index.md @@ -9,7 +9,7 @@ aliases: - introduction - introduction/about-arangodb --- -![ArangoDB Overview Diagram](../../images/arangodb-overview-diagram.png) +![ArangoDB Overview Diagram](../../../images/arangodb-overview-diagram.png) ArangoDB combines the analytical power of native graphs with an integrated search engine, JSON support, and a variety of data access patterns via a single, @@ -17,25 +17,25 @@ composable query language. ArangoDB is available in an open-source and a commercial [edition](features/_index.md). You can use it for on-premises deployments, as well as a fully managed -cloud service, the [ArangoGraph Insights Platform](../arangograph/_index.md). +cloud service, the [Arango Managed Platform (AMP)](../../../amp/_index.md). ## What are Graphs? Graphs are information networks comprised of nodes and relations. -![Node - Relation - Node](../../images/data-model-graph-relation-abstract.png) +![Node - Relation - Node](../../../images/data-model-graph-relation-abstract.png) A social network is a common example of a graph. People are represented by nodes and their friendships by relations. -![Mary - is friend of - John](../../images/data-model-graph-relation-concrete.png) +![Mary - is friend of - John](../../../images/data-model-graph-relation-concrete.png) Nodes are also called vertices (singular: vertex), and relations are edges that connect vertices. A vertex typically represents a specific entity (a person, a book, a sensor reading, etc.) and an edge defines how one entity relates to another. -![Mary - bought - Book, is friend of - John](../../images/data-model-graph-relations.png) +![Mary - bought - Book, is friend of - John](../../../images/data-model-graph-relations.png) This paradigm of storing data feels natural because it closely matches the cognitive model of humans. It is an expressive data model that allows you to @@ -48,7 +48,7 @@ Not everything is a graph use case. ArangoDB lets you equally work with structured, semi-structured, and unstructured data in the form of schema-free JSON objects, without having to connect these objects to form a graph. -![Person Mary, Book ArangoDB](../../images/data-model-document.png) +![Person Mary, Book ArangoDB](../../../images/data-model-document.png) <!-- TODO: Seems too disconnected, what is the relation? diff --git a/site/content/3.10/about-arangodb/features/_index.md b/site/content/arangodb/3.10/about/features/_index.md similarity index 98% rename from site/content/3.10/about-arangodb/features/_index.md rename to site/content/arangodb/3.10/about/features/_index.md index d33b990636..9094c1e174 100644 --- a/site/content/3.10/about-arangodb/features/_index.md +++ b/site/content/arangodb/3.10/about/features/_index.md @@ -13,7 +13,7 @@ aliases: ### Fully managed cloud service The fully managed multi-cloud -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) is the easiest and fastest way to get started. It runs the Enterprise Edition of ArangoDB, lets you deploy clusters with just a few clicks, and is operated by a dedicated team of ArangoDB engineers day and night. You can choose from a @@ -27,7 +27,7 @@ variety of support plans to meet your needs. - Highly secure with encryption at transit and at rest - Includes elastic scalability for all deployment models (OneShard and Sharded clusters) -To learn more, go to the [ArangoGraph documentation](../../arangograph/_index.md). +To learn more, go to the [ArangoGraph documentation](../../../../amp/_index.md). ### Self-managed in the cloud diff --git a/site/content/3.10/about-arangodb/features/community-edition.md b/site/content/arangodb/3.10/about/features/community-edition.md similarity index 100% rename from site/content/3.10/about-arangodb/features/community-edition.md rename to site/content/arangodb/3.10/about/features/community-edition.md diff --git a/site/content/3.11/about-arangodb/features/enterprise-edition.md b/site/content/arangodb/3.10/about/features/enterprise-edition.md similarity index 98% rename from site/content/3.11/about-arangodb/features/enterprise-edition.md rename to site/content/arangodb/3.10/about/features/enterprise-edition.md index 8e962a4a34..166de7f4fd 100644 --- a/site/content/3.11/about-arangodb/features/enterprise-edition.md +++ b/site/content/arangodb/3.10/about/features/enterprise-edition.md @@ -73,7 +73,7 @@ features outlined below. For additional information, see ## Querying -- [**Pregel in Cluster**](../../data-science/pregel/_index.md#prerequisites): +- **Pregel in Cluster**](../../data-science/pregel/_index.md#prerequisites): Distributed iterative graph analytics for cluster deployments. - [**Search highlighting**](../../index-and-search/arangosearch/search-highlighting.md): diff --git a/site/content/3.10/about-arangodb/features/highlights-by-version.md b/site/content/arangodb/3.10/about/features/highlights-by-version.md similarity index 100% rename from site/content/3.10/about-arangodb/features/highlights-by-version.md rename to site/content/arangodb/3.10/about/features/highlights-by-version.md diff --git a/site/content/3.13/about-arangodb/use-cases.md b/site/content/arangodb/3.10/about/use-cases.md similarity index 77% rename from site/content/3.13/about-arangodb/use-cases.md rename to site/content/arangodb/3.10/about/use-cases.md index fab9e86a90..0128025595 100644 --- a/site/content/3.13/about-arangodb/use-cases.md +++ b/site/content/arangodb/3.10/about/use-cases.md @@ -19,7 +19,7 @@ more. ### Fraud Detection -{{< image src="../../images/icon-fraud-detection.png" alt="Fraud Detection icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-fraud-detection.png" alt="Fraud Detection icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Uncover illegal activities by discovering difficult-to-detect patterns. ArangoDB lets you look beyond individual data points in disparate data sources, @@ -29,7 +29,7 @@ complex fraudulent behavior such as fraud rings. ### Recommendation Engine -{{< image src="../../images/icon-recommendation-engine.png" alt="Recommendation Engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-recommendation-engine.png" alt="Recommendation Engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Suggest products, services, and information to users based on data relationships. For example, you can use ArangoDB together with PyTorch Geometric to build a @@ -39,7 +39,7 @@ with a graph neural network (GNN). ### Network Management -{{< image src="../../images/icon-network-management.png" alt="Network Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-network-management.png" alt="Network Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Reduce downtime by connecting and visualizing network, infrastructure, and code. Network devices and how they interconnect can naturally be modeled as a graph. @@ -49,7 +49,7 @@ bandwidth into account when path-finding. ### Customer 360 -{{< image src="../../images/icon-customer-360.png" alt="Customer 360 icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-customer-360.png" alt="Customer 360 icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Gain a complete understanding of your customers by integrating multiple data sources and code. ArangoDB can act as the platform to merge and consolidate @@ -58,7 +58,7 @@ track data origins using graph features. ### Identity and Access Management -{{< image src="../../images/icon-identity-management.png" alt="Identity Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-identity-management.png" alt="Identity Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Increase security and compliance by managing data access based on role and position. You can map out an organization chart as a graph and use ArangoDB to @@ -68,7 +68,7 @@ inheritance. ### Supply Chain -{{< image src="../../images/icon-supply-chain.png" alt="Supply Chain icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-supply-chain.png" alt="Supply Chain icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Speed shipments by monitoring and optimizing the flow of goods through a supply chain. You can represent your inventory, supplier, and delivery @@ -84,7 +84,7 @@ and scalable data store. ### Content Management -{{< image src="../../images/icon-content-management.png" alt="Content management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-content-management.png" alt="Content management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Store information of any kind without upfront schema declaration. ArangoDB is schema-free, storing every data record as a self-contained document, allowing @@ -93,7 +93,7 @@ content management system on top of ArangoDB. ### E-Commerce Systems -{{< image src="../../images/icon-e-commerce.png" alt="E-commerce icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-e-commerce.png" alt="E-commerce icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} ArangoDB combines data modeling freedom with strong consistency and resilience features to power online shops and ordering systems. Handle product catalog data @@ -102,7 +102,7 @@ checkouts with the necessary transactional guarantees. ### Internet of Things -{{< image src="../../images/icon-internet-of-things.png" alt="Internet of things icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-internet-of-things.png" alt="Internet of things icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Collect sensor readings and other IoT data in ArangoDB for a single view of everything. Store all data points in the same system that also lets you run @@ -110,7 +110,7 @@ aggregation queries using sliding windows for efficient data analysis. ## ArangoDB as a Key-Value Database -{{< image src="../../images/icon-key-value.png" alt="Key value icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-key-value.png" alt="Key value icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Key-value stores are the simplest kind of database systems. Each record is stored as a block of data under a key that uniquely identifies the record. @@ -134,7 +134,7 @@ For more information about how ArangoDB persists data, see ## ArangoDB as a Search Engine -{{< image src="../../images/icon-search-engine.png" alt="Search engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-search-engine.png" alt="Search engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} ArangoDB has a natively integrated search engine for a broad range of information retrieval needs. It is powered by inverted indexes and can index @@ -161,4 +161,4 @@ ArangoDB integrates well into existing data infrastructures and provides connectors for popular machine learning frameworks and data processing ecosystems. -![Machine Learning Architecture of ArangoDB](../../images/machine-learning-architecture.png) +![Machine Learning Architecture of ArangoDB](../../../images/machine-learning-architecture.png) diff --git a/site/content/3.10/aql/_index.md b/site/content/arangodb/3.10/aql/_index.md similarity index 100% rename from site/content/3.10/aql/_index.md rename to site/content/arangodb/3.10/aql/_index.md diff --git a/site/content/3.10/aql/common-errors.md b/site/content/arangodb/3.10/aql/common-errors.md similarity index 100% rename from site/content/3.10/aql/common-errors.md rename to site/content/arangodb/3.10/aql/common-errors.md diff --git a/site/content/3.10/aql/data-queries.md b/site/content/arangodb/3.10/aql/data-queries.md similarity index 100% rename from site/content/3.10/aql/data-queries.md rename to site/content/arangodb/3.10/aql/data-queries.md diff --git a/site/content/3.10/aql/examples-and-query-patterns/_index.md b/site/content/arangodb/3.10/aql/examples-and-query-patterns/_index.md similarity index 100% rename from site/content/3.10/aql/examples-and-query-patterns/_index.md rename to site/content/arangodb/3.10/aql/examples-and-query-patterns/_index.md diff --git a/site/content/3.10/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md b/site/content/arangodb/3.10/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md similarity index 100% rename from site/content/3.10/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md rename to site/content/arangodb/3.10/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md diff --git a/site/content/3.10/aql/examples-and-query-patterns/counting.md b/site/content/arangodb/3.10/aql/examples-and-query-patterns/counting.md similarity index 100% rename from site/content/3.10/aql/examples-and-query-patterns/counting.md rename to site/content/arangodb/3.10/aql/examples-and-query-patterns/counting.md diff --git a/site/content/3.10/aql/examples-and-query-patterns/create-test-data.md b/site/content/arangodb/3.10/aql/examples-and-query-patterns/create-test-data.md similarity index 100% rename from site/content/3.10/aql/examples-and-query-patterns/create-test-data.md rename to site/content/arangodb/3.10/aql/examples-and-query-patterns/create-test-data.md diff --git a/site/content/3.10/aql/examples-and-query-patterns/diffing-two-documents.md b/site/content/arangodb/3.10/aql/examples-and-query-patterns/diffing-two-documents.md similarity index 100% rename from site/content/3.10/aql/examples-and-query-patterns/diffing-two-documents.md rename to site/content/arangodb/3.10/aql/examples-and-query-patterns/diffing-two-documents.md diff --git a/site/content/3.10/aql/examples-and-query-patterns/dynamic-attribute-names.md b/site/content/arangodb/3.10/aql/examples-and-query-patterns/dynamic-attribute-names.md similarity index 100% rename from site/content/3.10/aql/examples-and-query-patterns/dynamic-attribute-names.md rename to site/content/arangodb/3.10/aql/examples-and-query-patterns/dynamic-attribute-names.md diff --git a/site/content/3.10/aql/examples-and-query-patterns/grouping.md b/site/content/arangodb/3.10/aql/examples-and-query-patterns/grouping.md similarity index 100% rename from site/content/3.10/aql/examples-and-query-patterns/grouping.md rename to site/content/arangodb/3.10/aql/examples-and-query-patterns/grouping.md diff --git a/site/content/3.10/aql/examples-and-query-patterns/joins.md b/site/content/arangodb/3.10/aql/examples-and-query-patterns/joins.md similarity index 100% rename from site/content/3.10/aql/examples-and-query-patterns/joins.md rename to site/content/arangodb/3.10/aql/examples-and-query-patterns/joins.md diff --git a/site/content/3.10/aql/examples-and-query-patterns/projections-and-filters.md b/site/content/arangodb/3.10/aql/examples-and-query-patterns/projections-and-filters.md similarity index 100% rename from site/content/3.10/aql/examples-and-query-patterns/projections-and-filters.md rename to site/content/arangodb/3.10/aql/examples-and-query-patterns/projections-and-filters.md diff --git a/site/content/3.10/aql/examples-and-query-patterns/queries-without-collections.md b/site/content/arangodb/3.10/aql/examples-and-query-patterns/queries-without-collections.md similarity index 100% rename from site/content/3.10/aql/examples-and-query-patterns/queries-without-collections.md rename to site/content/arangodb/3.10/aql/examples-and-query-patterns/queries-without-collections.md diff --git a/site/content/3.10/aql/examples-and-query-patterns/remove-vertex.md b/site/content/arangodb/3.10/aql/examples-and-query-patterns/remove-vertex.md similarity index 96% rename from site/content/3.10/aql/examples-and-query-patterns/remove-vertex.md rename to site/content/arangodb/3.10/aql/examples-and-query-patterns/remove-vertex.md index 60a845ad94..e80cf8f390 100644 --- a/site/content/3.10/aql/examples-and-query-patterns/remove-vertex.md +++ b/site/content/arangodb/3.10/aql/examples-and-query-patterns/remove-vertex.md @@ -15,7 +15,7 @@ However, as shown in this example based on the [Knows Graph](../../graphs/example-graphs.md#knows-graph), a query for this use case can be created. -![Example Graph](../../../images/knows_graph.png) +![Example Graph](../../../../images/knows_graph.png) When deleting vertex **eve** from the graph, we also want the edges `eve -> alice` and `eve -> bob` to be removed. @@ -59,7 +59,7 @@ For example, the [City Graph](../../graphs/example-graphs.md#city-graph) contains several vertex collections - `germanCity` and `frenchCity` and several edge collections - `french / german / international Highway`. -![Example Graph2](../../../images/cities_graph.png) +![Example Graph2](../../../../images/cities_graph.png) To delete city **Berlin** all edge collections `french / german / international Highway` have to be considered. The **REMOVE** operation has to be applied on all edge diff --git a/site/content/3.10/aql/examples-and-query-patterns/traversals.md b/site/content/arangodb/3.10/aql/examples-and-query-patterns/traversals.md similarity index 98% rename from site/content/3.10/aql/examples-and-query-patterns/traversals.md rename to site/content/arangodb/3.10/aql/examples-and-query-patterns/traversals.md index 3b9452edbc..4a484699b1 100644 --- a/site/content/3.10/aql/examples-and-query-patterns/traversals.md +++ b/site/content/arangodb/3.10/aql/examples-and-query-patterns/traversals.md @@ -10,7 +10,7 @@ description: >- Our first example will locate the start vertex for a graph traversal via [a geo index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). We use the [City Graph](../../graphs/example-graphs.md#city-graph) and its geo indexes: -![Cities Example Graph](../../../images/cities_graph.png) +![Cities Example Graph](../../../../images/cities_graph.png) ```js --- diff --git a/site/content/3.10/aql/examples-and-query-patterns/upsert-repsert-guide.md b/site/content/arangodb/3.10/aql/examples-and-query-patterns/upsert-repsert-guide.md similarity index 100% rename from site/content/3.10/aql/examples-and-query-patterns/upsert-repsert-guide.md rename to site/content/arangodb/3.10/aql/examples-and-query-patterns/upsert-repsert-guide.md diff --git a/site/content/3.10/aql/execution-and-performance/_index.md b/site/content/arangodb/3.10/aql/execution-and-performance/_index.md similarity index 100% rename from site/content/3.10/aql/execution-and-performance/_index.md rename to site/content/arangodb/3.10/aql/execution-and-performance/_index.md diff --git a/site/content/3.10/aql/execution-and-performance/caching-query-results.md b/site/content/arangodb/3.10/aql/execution-and-performance/caching-query-results.md similarity index 100% rename from site/content/3.10/aql/execution-and-performance/caching-query-results.md rename to site/content/arangodb/3.10/aql/execution-and-performance/caching-query-results.md diff --git a/site/content/3.10/aql/execution-and-performance/explaining-queries.md b/site/content/arangodb/3.10/aql/execution-and-performance/explaining-queries.md similarity index 100% rename from site/content/3.10/aql/execution-and-performance/explaining-queries.md rename to site/content/arangodb/3.10/aql/execution-and-performance/explaining-queries.md diff --git a/site/content/3.10/aql/execution-and-performance/parsing-queries.md b/site/content/arangodb/3.10/aql/execution-and-performance/parsing-queries.md similarity index 100% rename from site/content/3.10/aql/execution-and-performance/parsing-queries.md rename to site/content/arangodb/3.10/aql/execution-and-performance/parsing-queries.md diff --git a/site/content/3.10/aql/execution-and-performance/query-optimization.md b/site/content/arangodb/3.10/aql/execution-and-performance/query-optimization.md similarity index 100% rename from site/content/3.10/aql/execution-and-performance/query-optimization.md rename to site/content/arangodb/3.10/aql/execution-and-performance/query-optimization.md diff --git a/site/content/3.10/aql/execution-and-performance/query-profiling.md b/site/content/arangodb/3.10/aql/execution-and-performance/query-profiling.md similarity index 100% rename from site/content/3.10/aql/execution-and-performance/query-profiling.md rename to site/content/arangodb/3.10/aql/execution-and-performance/query-profiling.md diff --git a/site/content/3.10/aql/execution-and-performance/query-statistics.md b/site/content/arangodb/3.10/aql/execution-and-performance/query-statistics.md similarity index 100% rename from site/content/3.10/aql/execution-and-performance/query-statistics.md rename to site/content/arangodb/3.10/aql/execution-and-performance/query-statistics.md diff --git a/site/content/3.10/aql/functions/_index.md b/site/content/arangodb/3.10/aql/functions/_index.md similarity index 100% rename from site/content/3.10/aql/functions/_index.md rename to site/content/arangodb/3.10/aql/functions/_index.md diff --git a/site/content/3.10/aql/functions/arangosearch.md b/site/content/arangodb/3.10/aql/functions/arangosearch.md similarity index 100% rename from site/content/3.10/aql/functions/arangosearch.md rename to site/content/arangodb/3.10/aql/functions/arangosearch.md diff --git a/site/content/3.10/aql/functions/array.md b/site/content/arangodb/3.10/aql/functions/array.md similarity index 100% rename from site/content/3.10/aql/functions/array.md rename to site/content/arangodb/3.10/aql/functions/array.md diff --git a/site/content/3.10/aql/functions/bit.md b/site/content/arangodb/3.10/aql/functions/bit.md similarity index 100% rename from site/content/3.10/aql/functions/bit.md rename to site/content/arangodb/3.10/aql/functions/bit.md diff --git a/site/content/3.10/aql/functions/date.md b/site/content/arangodb/3.10/aql/functions/date.md similarity index 100% rename from site/content/3.10/aql/functions/date.md rename to site/content/arangodb/3.10/aql/functions/date.md diff --git a/site/content/3.10/aql/functions/document-object.md b/site/content/arangodb/3.10/aql/functions/document-object.md similarity index 100% rename from site/content/3.10/aql/functions/document-object.md rename to site/content/arangodb/3.10/aql/functions/document-object.md diff --git a/site/content/3.10/aql/functions/fulltext.md b/site/content/arangodb/3.10/aql/functions/fulltext.md similarity index 100% rename from site/content/3.10/aql/functions/fulltext.md rename to site/content/arangodb/3.10/aql/functions/fulltext.md diff --git a/site/content/3.10/aql/functions/geo.md b/site/content/arangodb/3.10/aql/functions/geo.md similarity index 99% rename from site/content/3.10/aql/functions/geo.md rename to site/content/arangodb/3.10/aql/functions/geo.md index b35d8c375b..d07563f6c6 100644 --- a/site/content/3.10/aql/functions/geo.md +++ b/site/content/arangodb/3.10/aql/functions/geo.md @@ -322,7 +322,7 @@ Consider the following polygon (remember that GeoJSON has ]] } ``` -![GeoJSON Polygon Geodesic](../../../images/geojson-polygon-geodesic.webp) +![GeoJSON Polygon Geodesic](../../../../images/geojson-polygon-geodesic.webp) It does not contain the point `[10, 47]` since the shortest path (geodesic) from `[4, 47]` to `[16, 47]` lies North relative to the parallel of latitude at @@ -359,7 +359,7 @@ Pole. ]] } ``` -![GeoJSON Polygon Counter-clockwise](../../../images/geojson-polygon-ccw.webp) +![GeoJSON Polygon Counter-clockwise](../../../../images/geojson-polygon-ccw.webp) On the other hand, the following polygon travels **clockwise** around the point `[10, 50]`, and thus its "interior" does not contain `[10, 50]`, but does @@ -371,7 +371,7 @@ contain the North Pole and the South Pole: ]] } ``` -![GeoJSON Polygon Clockwise](../../../images/geojson-polygon-cw.webp) +![GeoJSON Polygon Clockwise](../../../../images/geojson-polygon-cw.webp) Remember that the "interior" is to the left of the given linear ring, so this second polygon is basically the complement on Earth diff --git a/site/content/3.10/aql/functions/miscellaneous.md b/site/content/arangodb/3.10/aql/functions/miscellaneous.md similarity index 100% rename from site/content/3.10/aql/functions/miscellaneous.md rename to site/content/arangodb/3.10/aql/functions/miscellaneous.md diff --git a/site/content/3.10/aql/functions/numeric.md b/site/content/arangodb/3.10/aql/functions/numeric.md similarity index 100% rename from site/content/3.10/aql/functions/numeric.md rename to site/content/arangodb/3.10/aql/functions/numeric.md diff --git a/site/content/3.10/aql/functions/string.md b/site/content/arangodb/3.10/aql/functions/string.md similarity index 100% rename from site/content/3.10/aql/functions/string.md rename to site/content/arangodb/3.10/aql/functions/string.md diff --git a/site/content/3.10/aql/functions/type-check-and-cast.md b/site/content/arangodb/3.10/aql/functions/type-check-and-cast.md similarity index 100% rename from site/content/3.10/aql/functions/type-check-and-cast.md rename to site/content/arangodb/3.10/aql/functions/type-check-and-cast.md diff --git a/site/content/3.10/aql/fundamentals/_index.md b/site/content/arangodb/3.10/aql/fundamentals/_index.md similarity index 100% rename from site/content/3.10/aql/fundamentals/_index.md rename to site/content/arangodb/3.10/aql/fundamentals/_index.md diff --git a/site/content/3.10/aql/fundamentals/accessing-data-from-collections.md b/site/content/arangodb/3.10/aql/fundamentals/accessing-data-from-collections.md similarity index 100% rename from site/content/3.10/aql/fundamentals/accessing-data-from-collections.md rename to site/content/arangodb/3.10/aql/fundamentals/accessing-data-from-collections.md diff --git a/site/content/3.10/aql/fundamentals/bind-parameters.md b/site/content/arangodb/3.10/aql/fundamentals/bind-parameters.md similarity index 100% rename from site/content/3.10/aql/fundamentals/bind-parameters.md rename to site/content/arangodb/3.10/aql/fundamentals/bind-parameters.md diff --git a/site/content/3.10/aql/fundamentals/data-types.md b/site/content/arangodb/3.10/aql/fundamentals/data-types.md similarity index 100% rename from site/content/3.10/aql/fundamentals/data-types.md rename to site/content/arangodb/3.10/aql/fundamentals/data-types.md diff --git a/site/content/3.10/aql/fundamentals/limitations.md b/site/content/arangodb/3.10/aql/fundamentals/limitations.md similarity index 100% rename from site/content/3.10/aql/fundamentals/limitations.md rename to site/content/arangodb/3.10/aql/fundamentals/limitations.md diff --git a/site/content/3.10/aql/fundamentals/query-errors.md b/site/content/arangodb/3.10/aql/fundamentals/query-errors.md similarity index 100% rename from site/content/3.10/aql/fundamentals/query-errors.md rename to site/content/arangodb/3.10/aql/fundamentals/query-errors.md diff --git a/site/content/3.10/aql/fundamentals/query-results.md b/site/content/arangodb/3.10/aql/fundamentals/query-results.md similarity index 100% rename from site/content/3.10/aql/fundamentals/query-results.md rename to site/content/arangodb/3.10/aql/fundamentals/query-results.md diff --git a/site/content/3.10/aql/fundamentals/subqueries.md b/site/content/arangodb/3.10/aql/fundamentals/subqueries.md similarity index 100% rename from site/content/3.10/aql/fundamentals/subqueries.md rename to site/content/arangodb/3.10/aql/fundamentals/subqueries.md diff --git a/site/content/3.10/aql/fundamentals/syntax.md b/site/content/arangodb/3.10/aql/fundamentals/syntax.md similarity index 100% rename from site/content/3.10/aql/fundamentals/syntax.md rename to site/content/arangodb/3.10/aql/fundamentals/syntax.md diff --git a/site/content/3.10/aql/fundamentals/type-and-value-order.md b/site/content/arangodb/3.10/aql/fundamentals/type-and-value-order.md similarity index 100% rename from site/content/3.10/aql/fundamentals/type-and-value-order.md rename to site/content/arangodb/3.10/aql/fundamentals/type-and-value-order.md diff --git a/site/content/3.10/aql/graphs/_index.md b/site/content/arangodb/3.10/aql/graphs/_index.md similarity index 100% rename from site/content/3.10/aql/graphs/_index.md rename to site/content/arangodb/3.10/aql/graphs/_index.md diff --git a/site/content/3.10/aql/graphs/all-shortest-paths.md b/site/content/arangodb/3.10/aql/graphs/all-shortest-paths.md similarity index 98% rename from site/content/3.10/aql/graphs/all-shortest-paths.md rename to site/content/arangodb/3.10/aql/graphs/all-shortest-paths.md index 1dc67cc001..d904c5eca1 100644 --- a/site/content/3.10/aql/graphs/all-shortest-paths.md +++ b/site/content/arangodb/3.10/aql/graphs/all-shortest-paths.md @@ -19,7 +19,7 @@ Every returned path is a JSON object with two attributes: A visual representation of the example graph: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) Each ellipse stands for a train station with the name of the city written inside of it. They are the vertices of the graph. Arrows represent train connections @@ -105,7 +105,7 @@ direction for each collection in your path search. Load an example graph to get a named graph that reflects some possible train connections in Europe and North America: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) ```js --- diff --git a/site/content/3.10/aql/graphs/k-paths.md b/site/content/arangodb/3.10/aql/graphs/k-paths.md similarity index 98% rename from site/content/3.10/aql/graphs/k-paths.md rename to site/content/arangodb/3.10/aql/graphs/k-paths.md index d7e6aabe2a..fb12340f1f 100644 --- a/site/content/3.10/aql/graphs/k-paths.md +++ b/site/content/arangodb/3.10/aql/graphs/k-paths.md @@ -22,7 +22,7 @@ Every such path will be returned as a JSON object with two components: Let us take a look at a simple example to explain how it works. This is the graph that we are going to find some paths on: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) Each ellipse stands for a train station with the name of the city written inside of it. They are the vertices of the graph. Arrows represent train connections @@ -181,7 +181,7 @@ direction for each collection in your path search. We load an example graph to get a named graph that reflects some possible train connections in Europe and North America. -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) ```js --- diff --git a/site/content/3.10/aql/graphs/k-shortest-paths.md b/site/content/arangodb/3.10/aql/graphs/k-shortest-paths.md similarity index 98% rename from site/content/3.10/aql/graphs/k-shortest-paths.md rename to site/content/arangodb/3.10/aql/graphs/k-shortest-paths.md index bb2ba93017..1672e24738 100644 --- a/site/content/3.10/aql/graphs/k-shortest-paths.md +++ b/site/content/arangodb/3.10/aql/graphs/k-shortest-paths.md @@ -27,7 +27,7 @@ If no `weightAttribute` is given, the weight of the path is just its length. Let us take a look at a simple example to explain how it works. This is the graph that we are going to find some shortest path on: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) Each ellipse stands for a train station with the name of the city written inside of it. They are the vertices of the graph. Arrows represent train connections @@ -169,7 +169,7 @@ direction for each collection in your path search. We load an example graph to get a named graph that reflects some possible train connections in Europe and North America. -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) ```js --- diff --git a/site/content/3.10/aql/graphs/shortest-path.md b/site/content/arangodb/3.10/aql/graphs/shortest-path.md similarity index 98% rename from site/content/3.10/aql/graphs/shortest-path.md rename to site/content/arangodb/3.10/aql/graphs/shortest-path.md index 29d689422b..87df80b3eb 100644 --- a/site/content/3.10/aql/graphs/shortest-path.md +++ b/site/content/arangodb/3.10/aql/graphs/shortest-path.md @@ -20,7 +20,7 @@ path you will get a result in form of a set with two items: Let's take a look at a simple example to explain how it works. This is the graph that you are going to find a shortest path on: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) You can use the following parameters for the query: @@ -132,7 +132,7 @@ collections you expect to be involved. ## Examples Creating a simple symmetric traversal demonstration graph: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) ```js --- diff --git a/site/content/3.10/aql/graphs/traversals-explained.md b/site/content/arangodb/3.10/aql/graphs/traversals-explained.md similarity index 83% rename from site/content/3.10/aql/graphs/traversals-explained.md rename to site/content/arangodb/3.10/aql/graphs/traversals-explained.md index a211ae6087..b4e9741151 100644 --- a/site/content/3.10/aql/graphs/traversals-explained.md +++ b/site/content/arangodb/3.10/aql/graphs/traversals-explained.md @@ -31,7 +31,7 @@ set with three items: Let's take a look at a simple example to explain how it works. This is the graph that we are going to traverse: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) We use the following parameters for our query: @@ -40,39 +40,39 @@ We use the following parameters for our query: 3. We use a *max* depth of 2. 4. We follow only in `OUTBOUND` direction of edges -![traversal graph step 1](../../../images/traversal_graph1.png) +![traversal graph step 1](../../../../images/traversal_graph1.png) Now it walks to one of the direct neighbors of **A**, say **B** (note: ordering is not guaranteed!): -![traversal graph step 2](../../../images/traversal_graph2.png) +![traversal graph step 2](../../../../images/traversal_graph2.png) The query will remember the state (red circle) and will emit the first result **A** → **B** (black box). This will also prevent the traverser to be trapped in cycles. Now again it will visit one of the direct neighbors of **B**, say **E**: -![traversal graph step 3](../../../images/traversal_graph3.png) +![traversal graph step 3](../../../../images/traversal_graph3.png) We have limited the query with a *max* depth of *2*, so it will not pick any neighbor of **E**, as the path from **A** to **E** already requires *2* steps. Instead, we will go back one level to **B** and continue with any other direct neighbor there: -![traversal graph step 4](../../../images/traversal_graph4.png) +![traversal graph step 4](../../../../images/traversal_graph4.png) Again after we produced this result we will step back to **B**. But there is no neighbor of **B** left that we have not yet visited. Hence we go another step back to **A** and continue with any other neighbor there. -![traversal graph step 5](../../../images/traversal_graph5.png) +![traversal graph step 5](../../../../images/traversal_graph5.png) And identical to the iterations before we will visit **H**: -![traversal graph step 6](../../../images/traversal_graph6.png) +![traversal graph step 6](../../../../images/traversal_graph6.png) And **J**: -![traversal graph step 7](../../../images/traversal_graph7.png) +![traversal graph step 7](../../../../images/traversal_graph7.png) After these steps there is no further result left. So all together this query has returned the following paths: diff --git a/site/content/3.10/aql/graphs/traversals.md b/site/content/arangodb/3.10/aql/graphs/traversals.md similarity index 99% rename from site/content/3.10/aql/graphs/traversals.md rename to site/content/arangodb/3.10/aql/graphs/traversals.md index 283703f0b7..08d18ddfa6 100644 --- a/site/content/3.10/aql/graphs/traversals.md +++ b/site/content/arangodb/3.10/aql/graphs/traversals.md @@ -258,7 +258,7 @@ FOR v, e, p IN 0..10 OUTBOUND "places/Toronto" GRAPH "kShortestPathsGraph" The above example shows a graph traversal using a [train station and connections dataset](../../graphs/example-graphs.md#k-shortest-paths-graph): -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) The traversal starts at **Toronto** (bottom left), the traversal depth is limited to 10, and every station is only visited once. The traversal could @@ -606,7 +606,7 @@ you may be interested in documents further down the path. Create a simple symmetric traversal demonstration graph: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) ```js --- diff --git a/site/content/3.10/aql/high-level-operations/_index.md b/site/content/arangodb/3.10/aql/high-level-operations/_index.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/_index.md rename to site/content/arangodb/3.10/aql/high-level-operations/_index.md diff --git a/site/content/3.10/aql/high-level-operations/collect.md b/site/content/arangodb/3.10/aql/high-level-operations/collect.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/collect.md rename to site/content/arangodb/3.10/aql/high-level-operations/collect.md diff --git a/site/content/3.10/aql/high-level-operations/filter.md b/site/content/arangodb/3.10/aql/high-level-operations/filter.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/filter.md rename to site/content/arangodb/3.10/aql/high-level-operations/filter.md diff --git a/site/content/3.10/aql/high-level-operations/for.md b/site/content/arangodb/3.10/aql/high-level-operations/for.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/for.md rename to site/content/arangodb/3.10/aql/high-level-operations/for.md diff --git a/site/content/3.10/aql/high-level-operations/insert.md b/site/content/arangodb/3.10/aql/high-level-operations/insert.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/insert.md rename to site/content/arangodb/3.10/aql/high-level-operations/insert.md diff --git a/site/content/3.10/aql/high-level-operations/let.md b/site/content/arangodb/3.10/aql/high-level-operations/let.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/let.md rename to site/content/arangodb/3.10/aql/high-level-operations/let.md diff --git a/site/content/3.10/aql/high-level-operations/limit.md b/site/content/arangodb/3.10/aql/high-level-operations/limit.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/limit.md rename to site/content/arangodb/3.10/aql/high-level-operations/limit.md diff --git a/site/content/3.10/aql/high-level-operations/remove.md b/site/content/arangodb/3.10/aql/high-level-operations/remove.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/remove.md rename to site/content/arangodb/3.10/aql/high-level-operations/remove.md diff --git a/site/content/3.10/aql/high-level-operations/replace.md b/site/content/arangodb/3.10/aql/high-level-operations/replace.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/replace.md rename to site/content/arangodb/3.10/aql/high-level-operations/replace.md diff --git a/site/content/3.10/aql/high-level-operations/return.md b/site/content/arangodb/3.10/aql/high-level-operations/return.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/return.md rename to site/content/arangodb/3.10/aql/high-level-operations/return.md diff --git a/site/content/3.10/aql/high-level-operations/search.md b/site/content/arangodb/3.10/aql/high-level-operations/search.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/search.md rename to site/content/arangodb/3.10/aql/high-level-operations/search.md diff --git a/site/content/3.10/aql/high-level-operations/sort.md b/site/content/arangodb/3.10/aql/high-level-operations/sort.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/sort.md rename to site/content/arangodb/3.10/aql/high-level-operations/sort.md diff --git a/site/content/3.10/aql/high-level-operations/update.md b/site/content/arangodb/3.10/aql/high-level-operations/update.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/update.md rename to site/content/arangodb/3.10/aql/high-level-operations/update.md diff --git a/site/content/3.10/aql/high-level-operations/upsert.md b/site/content/arangodb/3.10/aql/high-level-operations/upsert.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/upsert.md rename to site/content/arangodb/3.10/aql/high-level-operations/upsert.md diff --git a/site/content/3.10/aql/high-level-operations/window.md b/site/content/arangodb/3.10/aql/high-level-operations/window.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/window.md rename to site/content/arangodb/3.10/aql/high-level-operations/window.md diff --git a/site/content/3.10/aql/high-level-operations/with.md b/site/content/arangodb/3.10/aql/high-level-operations/with.md similarity index 100% rename from site/content/3.10/aql/high-level-operations/with.md rename to site/content/arangodb/3.10/aql/high-level-operations/with.md diff --git a/site/content/3.10/aql/how-to-invoke-aql/_index.md b/site/content/arangodb/3.10/aql/how-to-invoke-aql/_index.md similarity index 100% rename from site/content/3.10/aql/how-to-invoke-aql/_index.md rename to site/content/arangodb/3.10/aql/how-to-invoke-aql/_index.md diff --git a/site/content/3.10/aql/how-to-invoke-aql/with-arangosh.md b/site/content/arangodb/3.10/aql/how-to-invoke-aql/with-arangosh.md similarity index 100% rename from site/content/3.10/aql/how-to-invoke-aql/with-arangosh.md rename to site/content/arangodb/3.10/aql/how-to-invoke-aql/with-arangosh.md diff --git a/site/content/3.10/aql/how-to-invoke-aql/with-the-web-interface.md b/site/content/arangodb/3.10/aql/how-to-invoke-aql/with-the-web-interface.md similarity index 100% rename from site/content/3.10/aql/how-to-invoke-aql/with-the-web-interface.md rename to site/content/arangodb/3.10/aql/how-to-invoke-aql/with-the-web-interface.md diff --git a/site/content/3.10/aql/operators.md b/site/content/arangodb/3.10/aql/operators.md similarity index 100% rename from site/content/3.10/aql/operators.md rename to site/content/arangodb/3.10/aql/operators.md diff --git a/site/content/3.10/aql/user-defined-functions.md b/site/content/arangodb/3.10/aql/user-defined-functions.md similarity index 100% rename from site/content/3.10/aql/user-defined-functions.md rename to site/content/arangodb/3.10/aql/user-defined-functions.md diff --git a/site/content/3.10/components/_index.md b/site/content/arangodb/3.10/components/_index.md similarity index 100% rename from site/content/3.10/components/_index.md rename to site/content/arangodb/3.10/components/_index.md diff --git a/site/content/3.10/components/arangodb-server/_index.md b/site/content/arangodb/3.10/components/arangodb-server/_index.md similarity index 88% rename from site/content/3.10/components/arangodb-server/_index.md rename to site/content/arangodb/3.10/components/arangodb-server/_index.md index 82da2f3a5f..44c9d1040c 100644 --- a/site/content/3.10/components/arangodb-server/_index.md +++ b/site/content/arangodb/3.10/components/arangodb-server/_index.md @@ -14,8 +14,8 @@ The server process serves the various client connections to the server via the TCP/HTTP protocol. It also provides a [web interface](../web-interface/_index.md). _arangod_ can run in different modes for a variety of setups like single server -and clusters. It differs between the [Community Edition](../../about-arangodb/features/community-edition.md) -and [Enterprise Edition](../../about-arangodb/features/enterprise-edition.md). +and clusters. It differs between the [Community Edition](../../about/features/community-edition.md) +and [Enterprise Edition](../../about/features/enterprise-edition.md). See [Administration](../../operations/administration/_index.md) for server configuration and [Deploy](../../deploy/_index.md) for operation mode details. diff --git a/site/content/3.10/components/arangodb-server/environment-variables.md b/site/content/arangodb/3.10/components/arangodb-server/environment-variables.md similarity index 100% rename from site/content/3.10/components/arangodb-server/environment-variables.md rename to site/content/arangodb/3.10/components/arangodb-server/environment-variables.md diff --git a/site/content/3.10/components/arangodb-server/ldap.md b/site/content/arangodb/3.10/components/arangodb-server/ldap.md similarity index 100% rename from site/content/3.10/components/arangodb-server/ldap.md rename to site/content/arangodb/3.10/components/arangodb-server/ldap.md diff --git a/site/content/3.10/components/arangodb-server/options.md b/site/content/arangodb/3.10/components/arangodb-server/options.md similarity index 100% rename from site/content/3.10/components/arangodb-server/options.md rename to site/content/arangodb/3.10/components/arangodb-server/options.md diff --git a/site/content/3.10/components/arangodb-server/storage-engine.md b/site/content/arangodb/3.10/components/arangodb-server/storage-engine.md similarity index 100% rename from site/content/3.10/components/arangodb-server/storage-engine.md rename to site/content/arangodb/3.10/components/arangodb-server/storage-engine.md diff --git a/site/content/3.10/components/tools/_index.md b/site/content/arangodb/3.10/components/tools/_index.md similarity index 94% rename from site/content/3.10/components/tools/_index.md rename to site/content/arangodb/3.10/components/tools/_index.md index a0d260bac0..82a6a260f5 100644 --- a/site/content/3.10/components/tools/_index.md +++ b/site/content/arangodb/3.10/components/tools/_index.md @@ -31,4 +31,4 @@ Additional tools which are available separately: |-----------------|-------------------| | [Foxx CLI](foxx-cli/_index.md) | Command line tool for managing and developing Foxx services | [kube-arangodb](../../deploy/kubernetes.md) | Operators to manage Kubernetes deployments -| [Oasisctl](../../arangograph/oasisctl/_index.md) | Command-line tool for managing the ArangoGraph Insights Platform +| [Oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) diff --git a/site/content/3.10/components/tools/arangobackup/_index.md b/site/content/arangodb/3.10/components/tools/arangobackup/_index.md similarity index 100% rename from site/content/3.10/components/tools/arangobackup/_index.md rename to site/content/arangodb/3.10/components/tools/arangobackup/_index.md diff --git a/site/content/3.10/components/tools/arangobackup/examples.md b/site/content/arangodb/3.10/components/tools/arangobackup/examples.md similarity index 100% rename from site/content/3.10/components/tools/arangobackup/examples.md rename to site/content/arangodb/3.10/components/tools/arangobackup/examples.md diff --git a/site/content/3.10/components/tools/arangobackup/options.md b/site/content/arangodb/3.10/components/tools/arangobackup/options.md similarity index 100% rename from site/content/3.10/components/tools/arangobackup/options.md rename to site/content/arangodb/3.10/components/tools/arangobackup/options.md diff --git a/site/content/3.10/components/tools/arangobench/_index.md b/site/content/arangodb/3.10/components/tools/arangobench/_index.md similarity index 100% rename from site/content/3.10/components/tools/arangobench/_index.md rename to site/content/arangodb/3.10/components/tools/arangobench/_index.md diff --git a/site/content/3.10/components/tools/arangobench/options.md b/site/content/arangodb/3.10/components/tools/arangobench/options.md similarity index 100% rename from site/content/3.10/components/tools/arangobench/options.md rename to site/content/arangodb/3.10/components/tools/arangobench/options.md diff --git a/site/content/3.10/components/tools/arangodb-shell/_index.md b/site/content/arangodb/3.10/components/tools/arangodb-shell/_index.md similarity index 100% rename from site/content/3.10/components/tools/arangodb-shell/_index.md rename to site/content/arangodb/3.10/components/tools/arangodb-shell/_index.md diff --git a/site/content/3.10/components/tools/arangodb-shell/details.md b/site/content/arangodb/3.10/components/tools/arangodb-shell/details.md similarity index 100% rename from site/content/3.10/components/tools/arangodb-shell/details.md rename to site/content/arangodb/3.10/components/tools/arangodb-shell/details.md diff --git a/site/content/3.10/components/tools/arangodb-shell/examples.md b/site/content/arangodb/3.10/components/tools/arangodb-shell/examples.md similarity index 100% rename from site/content/3.10/components/tools/arangodb-shell/examples.md rename to site/content/arangodb/3.10/components/tools/arangodb-shell/examples.md diff --git a/site/content/3.10/components/tools/arangodb-shell/options.md b/site/content/arangodb/3.10/components/tools/arangodb-shell/options.md similarity index 100% rename from site/content/3.10/components/tools/arangodb-shell/options.md rename to site/content/arangodb/3.10/components/tools/arangodb-shell/options.md diff --git a/site/content/3.10/components/tools/arangodb-starter/_index.md b/site/content/arangodb/3.10/components/tools/arangodb-starter/_index.md similarity index 100% rename from site/content/3.10/components/tools/arangodb-starter/_index.md rename to site/content/arangodb/3.10/components/tools/arangodb-starter/_index.md diff --git a/site/content/3.10/components/tools/arangodb-starter/architecture.md b/site/content/arangodb/3.10/components/tools/arangodb-starter/architecture.md similarity index 100% rename from site/content/3.10/components/tools/arangodb-starter/architecture.md rename to site/content/arangodb/3.10/components/tools/arangodb-starter/architecture.md diff --git a/site/content/3.10/components/tools/arangodb-starter/options.md b/site/content/arangodb/3.10/components/tools/arangodb-starter/options.md similarity index 100% rename from site/content/3.10/components/tools/arangodb-starter/options.md rename to site/content/arangodb/3.10/components/tools/arangodb-starter/options.md diff --git a/site/content/3.10/components/tools/arangodb-starter/security.md b/site/content/arangodb/3.10/components/tools/arangodb-starter/security.md similarity index 100% rename from site/content/3.10/components/tools/arangodb-starter/security.md rename to site/content/arangodb/3.10/components/tools/arangodb-starter/security.md diff --git a/site/content/3.10/components/tools/arangodump/_index.md b/site/content/arangodb/3.10/components/tools/arangodump/_index.md similarity index 100% rename from site/content/3.10/components/tools/arangodump/_index.md rename to site/content/arangodb/3.10/components/tools/arangodump/_index.md diff --git a/site/content/3.10/components/tools/arangodump/examples.md b/site/content/arangodb/3.10/components/tools/arangodump/examples.md similarity index 100% rename from site/content/3.10/components/tools/arangodump/examples.md rename to site/content/arangodb/3.10/components/tools/arangodump/examples.md diff --git a/site/content/3.10/components/tools/arangodump/limitations.md b/site/content/arangodb/3.10/components/tools/arangodump/limitations.md similarity index 100% rename from site/content/3.10/components/tools/arangodump/limitations.md rename to site/content/arangodb/3.10/components/tools/arangodump/limitations.md diff --git a/site/content/3.10/components/tools/arangodump/maskings.md b/site/content/arangodb/3.10/components/tools/arangodump/maskings.md similarity index 100% rename from site/content/3.10/components/tools/arangodump/maskings.md rename to site/content/arangodb/3.10/components/tools/arangodump/maskings.md diff --git a/site/content/3.10/components/tools/arangodump/options.md b/site/content/arangodb/3.10/components/tools/arangodump/options.md similarity index 100% rename from site/content/3.10/components/tools/arangodump/options.md rename to site/content/arangodb/3.10/components/tools/arangodump/options.md diff --git a/site/content/3.10/components/tools/arangoexport/_index.md b/site/content/arangodb/3.10/components/tools/arangoexport/_index.md similarity index 100% rename from site/content/3.10/components/tools/arangoexport/_index.md rename to site/content/arangodb/3.10/components/tools/arangoexport/_index.md diff --git a/site/content/3.10/components/tools/arangoexport/examples.md b/site/content/arangodb/3.10/components/tools/arangoexport/examples.md similarity index 100% rename from site/content/3.10/components/tools/arangoexport/examples.md rename to site/content/arangodb/3.10/components/tools/arangoexport/examples.md diff --git a/site/content/3.10/components/tools/arangoexport/options.md b/site/content/arangodb/3.10/components/tools/arangoexport/options.md similarity index 100% rename from site/content/3.10/components/tools/arangoexport/options.md rename to site/content/arangodb/3.10/components/tools/arangoexport/options.md diff --git a/site/content/3.10/components/tools/arangoimport/_index.md b/site/content/arangodb/3.10/components/tools/arangoimport/_index.md similarity index 100% rename from site/content/3.10/components/tools/arangoimport/_index.md rename to site/content/arangodb/3.10/components/tools/arangoimport/_index.md diff --git a/site/content/3.10/components/tools/arangoimport/details.md b/site/content/arangodb/3.10/components/tools/arangoimport/details.md similarity index 100% rename from site/content/3.10/components/tools/arangoimport/details.md rename to site/content/arangodb/3.10/components/tools/arangoimport/details.md diff --git a/site/content/3.10/components/tools/arangoimport/examples-csv.md b/site/content/arangodb/3.10/components/tools/arangoimport/examples-csv.md similarity index 100% rename from site/content/3.10/components/tools/arangoimport/examples-csv.md rename to site/content/arangodb/3.10/components/tools/arangoimport/examples-csv.md diff --git a/site/content/3.10/components/tools/arangoimport/examples-json.md b/site/content/arangodb/3.10/components/tools/arangoimport/examples-json.md similarity index 100% rename from site/content/3.10/components/tools/arangoimport/examples-json.md rename to site/content/arangodb/3.10/components/tools/arangoimport/examples-json.md diff --git a/site/content/3.10/components/tools/arangoimport/options.md b/site/content/arangodb/3.10/components/tools/arangoimport/options.md similarity index 100% rename from site/content/3.10/components/tools/arangoimport/options.md rename to site/content/arangodb/3.10/components/tools/arangoimport/options.md diff --git a/site/content/3.10/components/tools/arangoinspect/_index.md b/site/content/arangodb/3.10/components/tools/arangoinspect/_index.md similarity index 100% rename from site/content/3.10/components/tools/arangoinspect/_index.md rename to site/content/arangodb/3.10/components/tools/arangoinspect/_index.md diff --git a/site/content/3.10/components/tools/arangoinspect/examples.md b/site/content/arangodb/3.10/components/tools/arangoinspect/examples.md similarity index 100% rename from site/content/3.10/components/tools/arangoinspect/examples.md rename to site/content/arangodb/3.10/components/tools/arangoinspect/examples.md diff --git a/site/content/3.10/components/tools/arangoinspect/options.md b/site/content/arangodb/3.10/components/tools/arangoinspect/options.md similarity index 100% rename from site/content/3.10/components/tools/arangoinspect/options.md rename to site/content/arangodb/3.10/components/tools/arangoinspect/options.md diff --git a/site/content/3.10/components/tools/arangorestore/_index.md b/site/content/arangodb/3.10/components/tools/arangorestore/_index.md similarity index 100% rename from site/content/3.10/components/tools/arangorestore/_index.md rename to site/content/arangodb/3.10/components/tools/arangorestore/_index.md diff --git a/site/content/3.10/components/tools/arangorestore/examples.md b/site/content/arangodb/3.10/components/tools/arangorestore/examples.md similarity index 100% rename from site/content/3.10/components/tools/arangorestore/examples.md rename to site/content/arangodb/3.10/components/tools/arangorestore/examples.md diff --git a/site/content/3.10/components/tools/arangorestore/fast-cluster-restore.md b/site/content/arangodb/3.10/components/tools/arangorestore/fast-cluster-restore.md similarity index 100% rename from site/content/3.10/components/tools/arangorestore/fast-cluster-restore.md rename to site/content/arangodb/3.10/components/tools/arangorestore/fast-cluster-restore.md diff --git a/site/content/3.10/components/tools/arangorestore/options.md b/site/content/arangodb/3.10/components/tools/arangorestore/options.md similarity index 100% rename from site/content/3.10/components/tools/arangorestore/options.md rename to site/content/arangodb/3.10/components/tools/arangorestore/options.md diff --git a/site/content/3.10/components/tools/arangovpack/_index.md b/site/content/arangodb/3.10/components/tools/arangovpack/_index.md similarity index 100% rename from site/content/3.10/components/tools/arangovpack/_index.md rename to site/content/arangodb/3.10/components/tools/arangovpack/_index.md diff --git a/site/content/3.10/components/tools/arangovpack/options.md b/site/content/arangodb/3.10/components/tools/arangovpack/options.md similarity index 100% rename from site/content/3.10/components/tools/arangovpack/options.md rename to site/content/arangodb/3.10/components/tools/arangovpack/options.md diff --git a/site/content/3.10/components/tools/foxx-cli/_index.md b/site/content/arangodb/3.10/components/tools/foxx-cli/_index.md similarity index 100% rename from site/content/3.10/components/tools/foxx-cli/_index.md rename to site/content/arangodb/3.10/components/tools/foxx-cli/_index.md diff --git a/site/content/3.10/components/tools/foxx-cli/details.md b/site/content/arangodb/3.10/components/tools/foxx-cli/details.md similarity index 100% rename from site/content/3.10/components/tools/foxx-cli/details.md rename to site/content/arangodb/3.10/components/tools/foxx-cli/details.md diff --git a/site/content/3.11/components/web-interface/_index.md b/site/content/arangodb/3.10/components/web-interface/_index.md similarity index 90% rename from site/content/3.11/components/web-interface/_index.md rename to site/content/arangodb/3.10/components/web-interface/_index.md index 12863abcb6..dc6affca41 100644 --- a/site/content/3.11/components/web-interface/_index.md +++ b/site/content/arangodb/3.10/components/web-interface/_index.md @@ -13,4 +13,4 @@ convenient way. Statistics and server status are provided as well. The web interface (also referred to as Web UI, frontend or *Aardvark*) can be accessed with a browser under the URL `http://localhost:8529` with default server settings. -![Standalone Web Interface](../../../images/overview.png) +![Standalone Web Interface](../../../../images/overview.png) diff --git a/site/content/3.10/components/web-interface/cluster.md b/site/content/arangodb/3.10/components/web-interface/cluster.md similarity index 94% rename from site/content/3.10/components/web-interface/cluster.md rename to site/content/arangodb/3.10/components/web-interface/cluster.md index 91ae4bd075..108ed759bb 100644 --- a/site/content/3.10/components/web-interface/cluster.md +++ b/site/content/arangodb/3.10/components/web-interface/cluster.md @@ -14,7 +14,7 @@ You can access the logs of individual Coordinators and DB-Servers via the The cluster section displays statistics about the general cluster performance. -![Cluster](../../../images/clusterView.png) +![Cluster](../../../../images/clusterView.png) Statistics: @@ -32,7 +32,7 @@ Statistics: The overview shows available and missing Coordinators and DB-Servers. -![Nodes](../../../images/nodesView.png) +![Nodes](../../../../images/nodesView.png) Functions: @@ -50,7 +50,7 @@ Information (Coordinator / DB-Servers): The shard section displays all available sharded collections. -![Shards](../../../images/shardsView.png) +![Shards](../../../../images/shardsView.png) Functions: diff --git a/site/content/3.10/components/web-interface/collections.md b/site/content/arangodb/3.10/components/web-interface/collections.md similarity index 91% rename from site/content/3.10/components/web-interface/collections.md rename to site/content/arangodb/3.10/components/web-interface/collections.md index d53138f83e..ad8e937e88 100644 --- a/site/content/3.10/components/web-interface/collections.md +++ b/site/content/arangodb/3.10/components/web-interface/collections.md @@ -8,7 +8,7 @@ The collections section displays all available collections. From here you can create new collections and jump into a collection for details (click on a collection tile). -![Collections](../../../images/collectionsView.png) +![Collections](../../../../images/collectionsView.png) Functions: @@ -26,7 +26,7 @@ Information: ## Collection -![Collection](../../../images/collectionView.png) +![Collection](../../../../images/collectionView.png) There are four view categories: diff --git a/site/content/3.10/components/web-interface/dashboard.md b/site/content/arangodb/3.10/components/web-interface/dashboard.md similarity index 92% rename from site/content/3.10/components/web-interface/dashboard.md rename to site/content/arangodb/3.10/components/web-interface/dashboard.md index aac4f439ae..599127ba12 100644 --- a/site/content/3.10/components/web-interface/dashboard.md +++ b/site/content/arangodb/3.10/components/web-interface/dashboard.md @@ -7,7 +7,7 @@ description: '' The **DASHBOARD** section provides statistics which are polled regularly from the ArangoDB server. -![Nodes](../../../images/dashboardView.png) +![Nodes](../../../../images/dashboardView.png) There is a different interface for [Cluster](cluster.md) deployments. diff --git a/site/content/3.11/components/web-interface/document.md b/site/content/arangodb/3.10/components/web-interface/document.md similarity index 87% rename from site/content/3.11/components/web-interface/document.md rename to site/content/arangodb/3.10/components/web-interface/document.md index 2ff9addb44..85cc5583a9 100644 --- a/site/content/3.11/components/web-interface/document.md +++ b/site/content/arangodb/3.10/components/web-interface/document.md @@ -6,7 +6,7 @@ description: '' --- The document section offers a editor which let you edit documents and edges of a collection. -![Document](../../../images/documentView.png) +![Document](../../../../images/documentView.png) Functions: diff --git a/site/content/3.10/components/web-interface/graphs.md b/site/content/arangodb/3.10/components/web-interface/graphs.md similarity index 95% rename from site/content/3.10/components/web-interface/graphs.md rename to site/content/arangodb/3.10/components/web-interface/graphs.md index 85e3affcc9..e43a66f9e2 100644 --- a/site/content/3.10/components/web-interface/graphs.md +++ b/site/content/arangodb/3.10/components/web-interface/graphs.md @@ -10,7 +10,7 @@ The *Graphs* tab provides a viewer facility for graph data stored in ArangoDB. It allows browsing ArangoDB graphs stored in the *_graphs* system collection or a graph consisting of an arbitrary vertex and [edge collection](../../concepts/data-models.md#graph-model). -![manage graphs](../../../images/graphsView.png) +![manage graphs](../../../../images/graphsView.png) Please note that the graph viewer requires canvas (optional: webgl) support in your browser. Especially Internet Explorer browsers older than version 9 @@ -18,7 +18,7 @@ are likely to not support this. ## Graph Viewer -![display graphs](../../../images/graphViewer.png) +![display graphs](../../../../images/graphViewer.png) Top Toolbar Functions: @@ -49,7 +49,7 @@ Edge Highlighting (right-mouse-click node): - Highlight all edges connected to the node (right-click at the background will remove highlighting) -![graph context menu](../../../images/graphViewerContextMenu.png) +![graph context menu](../../../../images/graphViewerContextMenu.png) ### Graph Viewer Options diff --git a/site/content/3.11/components/web-interface/logs.md b/site/content/arangodb/3.10/components/web-interface/logs.md similarity index 87% rename from site/content/3.11/components/web-interface/logs.md rename to site/content/arangodb/3.10/components/web-interface/logs.md index f9ddcc007b..46c70ffb19 100644 --- a/site/content/3.11/components/web-interface/logs.md +++ b/site/content/arangodb/3.10/components/web-interface/logs.md @@ -7,7 +7,7 @@ description: '' The logs section displays all available log entries. Log entries are filterable by their log level types. -![Logs](../../../images/logsView.png) +![Logs](../../../../images/logsView.png) Functions: diff --git a/site/content/3.10/components/web-interface/queries.md b/site/content/arangodb/3.10/components/web-interface/queries.md similarity index 91% rename from site/content/3.10/components/web-interface/queries.md rename to site/content/arangodb/3.10/components/web-interface/queries.md index c263e2e6b0..bc5d76591b 100644 --- a/site/content/3.10/components/web-interface/queries.md +++ b/site/content/arangodb/3.10/components/web-interface/queries.md @@ -14,7 +14,7 @@ The query view offers you three different subviews: The web interface offers a AQL Query Editor: -![Editor Input](../../../images/queryEditorInput.png) +![Editor Input](../../../../images/queryEditorInput.png) The editor is split into two parts, the query editor pane and the bind parameter pane. @@ -49,7 +49,7 @@ edit the bind parameters in raw JSON format. To save the current query use the *Save* button in the top left corner of the editor or use the shortcut (see below). -![Custom Queries](../../../images/queryCustoms.png) +![Custom Queries](../../../../images/queryCustoms.png) By pressing the *Queries* button in the top left corner of the editor you activate the custom queries view. Here you can select a previously stored custom @@ -70,7 +70,7 @@ right-hand side. ### Result -![Editor Output](../../../images/queryEditorOutput.png) +![Editor Output](../../../../images/queryEditorOutput.png) Each query you execute or explain opens up a new result box, so you are able to fire up multiple queries and view their results at the same time. Every query @@ -81,7 +81,7 @@ switches back and forth between the *Result* and *AQL* query with bind parameter ### Spotlight -![Spotlight](../../../images/querySpotlight.png) +![Spotlight](../../../../images/querySpotlight.png) The spotlight feature opens up a modal view. There you can find all AQL keywords, AQL functions and collections (filtered by their type) to help you to be more @@ -105,13 +105,13 @@ in the toolbar or via shortcut (see below). ## Running Queries -![Running Queries](../../../images/runningQueries.png) +![Running Queries](../../../../images/runningQueries.png) The *Running Queries* tab gives you a compact overview of all running queries. By clicking the red minus button, you can abort the execution of a running query. ## Slow Query History -![Slow Queries](../../../images/slowQueries.png) +![Slow Queries](../../../../images/slowQueries.png) The *Slow Query History* tab gives you a compact overview of all past slow queries. diff --git a/site/content/3.10/components/web-interface/services.md b/site/content/arangodb/3.10/components/web-interface/services.md similarity index 87% rename from site/content/3.10/components/web-interface/services.md rename to site/content/arangodb/3.10/components/web-interface/services.md index 3bae62eb84..478bfd2b29 100644 --- a/site/content/3.10/components/web-interface/services.md +++ b/site/content/arangodb/3.10/components/web-interface/services.md @@ -7,7 +7,7 @@ description: '' The services section displays all installed Foxx applications. You can create new services or go into a detailed view of a chosen service. -![Services](../../../images/servicesView.png) +![Services](../../../../images/servicesView.png) ## Create Service @@ -18,13 +18,13 @@ There are four different possibilities to create a new service: 3. Create service via official ArangoDB store 4. Create a blank service from scratch -![Create Service](../../../images/installService.png) +![Create Service](../../../../images/installService.png) ## Service View This section offers several information about a specific service. -![Create Service](../../../images/serviceView.png) +![Create Service](../../../../images/serviceView.png) There are four view categories: diff --git a/site/content/3.11/components/web-interface/users.md b/site/content/arangodb/3.10/components/web-interface/users.md similarity index 90% rename from site/content/3.11/components/web-interface/users.md rename to site/content/arangodb/3.10/components/web-interface/users.md index 3ecc4fc927..49b3511339 100644 --- a/site/content/3.11/components/web-interface/users.md +++ b/site/content/arangodb/3.10/components/web-interface/users.md @@ -7,21 +7,21 @@ description: '' ArangoDB users are globally stored in the `_system` database and can only be managed while logged on to this database. There you can find the *Users* section: -![Users](../../../images/users.png) +![Users](../../../../images/users.png) ## General Select a user to bring up the *General* tab with the username, name and active status, as well as options to delete the user or change the password. -![User General](../../../images/userGeneral.png) +![User General](../../../../images/userGeneral.png) ## Permissions Select a user and go to the *Permissions* tab. You will see a list of databases and their corresponding database access level for that user. -![User Permissions](../../../images/userPermissions.png) +![User Permissions](../../../../images/userPermissions.png) Please note that server access level follows from the access level on the `_system` database. Furthermore, the default database access level diff --git a/site/content/3.10/concepts/_index.md b/site/content/arangodb/3.10/concepts/_index.md similarity index 100% rename from site/content/3.10/concepts/_index.md rename to site/content/arangodb/3.10/concepts/_index.md diff --git a/site/content/3.10/concepts/data-models.md b/site/content/arangodb/3.10/concepts/data-models.md similarity index 100% rename from site/content/3.10/concepts/data-models.md rename to site/content/arangodb/3.10/concepts/data-models.md diff --git a/site/content/3.10/concepts/data-retrieval.md b/site/content/arangodb/3.10/concepts/data-retrieval.md similarity index 100% rename from site/content/3.10/concepts/data-retrieval.md rename to site/content/arangodb/3.10/concepts/data-retrieval.md diff --git a/site/content/3.10/concepts/data-structure/_index.md b/site/content/arangodb/3.10/concepts/data-structure/_index.md similarity index 100% rename from site/content/3.10/concepts/data-structure/_index.md rename to site/content/arangodb/3.10/concepts/data-structure/_index.md diff --git a/site/content/3.10/concepts/data-structure/collections.md b/site/content/arangodb/3.10/concepts/data-structure/collections.md similarity index 100% rename from site/content/3.10/concepts/data-structure/collections.md rename to site/content/arangodb/3.10/concepts/data-structure/collections.md diff --git a/site/content/3.10/concepts/data-structure/databases.md b/site/content/arangodb/3.10/concepts/data-structure/databases.md similarity index 100% rename from site/content/3.10/concepts/data-structure/databases.md rename to site/content/arangodb/3.10/concepts/data-structure/databases.md diff --git a/site/content/3.10/concepts/data-structure/documents/_index.md b/site/content/arangodb/3.10/concepts/data-structure/documents/_index.md similarity index 100% rename from site/content/3.10/concepts/data-structure/documents/_index.md rename to site/content/arangodb/3.10/concepts/data-structure/documents/_index.md diff --git a/site/content/3.10/concepts/data-structure/documents/computed-values.md b/site/content/arangodb/3.10/concepts/data-structure/documents/computed-values.md similarity index 100% rename from site/content/3.10/concepts/data-structure/documents/computed-values.md rename to site/content/arangodb/3.10/concepts/data-structure/documents/computed-values.md diff --git a/site/content/3.10/concepts/data-structure/documents/schema-validation.md b/site/content/arangodb/3.10/concepts/data-structure/documents/schema-validation.md similarity index 100% rename from site/content/3.10/concepts/data-structure/documents/schema-validation.md rename to site/content/arangodb/3.10/concepts/data-structure/documents/schema-validation.md diff --git a/site/content/3.10/concepts/data-structure/views.md b/site/content/arangodb/3.10/concepts/data-structure/views.md similarity index 100% rename from site/content/3.10/concepts/data-structure/views.md rename to site/content/arangodb/3.10/concepts/data-structure/views.md diff --git a/site/content/3.10/data-science/_index.md b/site/content/arangodb/3.10/data-science/_index.md similarity index 95% rename from site/content/3.10/data-science/_index.md rename to site/content/arangodb/3.10/data-science/_index.md index c6182c0cc9..52030ffef6 100644 --- a/site/content/3.10/data-science/_index.md +++ b/site/content/arangodb/3.10/data-science/_index.md @@ -21,7 +21,7 @@ ArangoDB, as the foundation for GraphML, comes with the following key features: - **Open Source**: extensibility and community. - **NLP Support**: built-in text processing, search, and similarity ranking. -![ArangoDB Machine Learning Architecture](../../images/machine-learning-architecture.png) +![ArangoDB Machine Learning Architecture](../../../images/machine-learning-architecture.png) ## Graph Analytics vs. GraphML @@ -37,7 +37,7 @@ and then the edge indicates what the next connected vertex will be. Graph queries can answer questions like _**Who can introduce me to person X**_? -![Graph Query](../../images/graph-query.png) +![Graph Query](../../../images/graph-query.png) ### Graph Analytics @@ -46,7 +46,7 @@ know aggregate information about your graph, while analyzing the entire graph. Graph analytics can answer questions like _**Who are the most connected persons**_? -![Graph Analytics](../../images/graph-analytics.png) +![Graph Analytics](../../../images/graph-analytics.png) ### GraphML @@ -58,7 +58,7 @@ GraphML can answer questions like: - _**Will a customer churn?**_ - _**Is this particular transaction Anomalous?**_ -![Graph ML](../../images/graph-ml.png) +![Graph ML](../../../images/graph-ml.png) ## Use Cases @@ -134,7 +134,7 @@ The ArangoFlix demo uses five different recommendation methods: - Matrix Factorization - Graph Neural Networks -![ArangoFlix demo](../../images/data-science-arangoflix.png) +![ArangoFlix demo](../../../images/data-science-arangoflix.png) The ArangoFlix website not only offers an example of how the user recommendations might look like in real life, but it also provides information on a recommendation method, diff --git a/site/content/3.10/data-science/adapters/_index.md b/site/content/arangodb/3.10/data-science/adapters/_index.md similarity index 100% rename from site/content/3.10/data-science/adapters/_index.md rename to site/content/arangodb/3.10/data-science/adapters/_index.md diff --git a/site/content/3.10/data-science/adapters/arangodb-cugraph-adapter.md b/site/content/arangodb/3.10/data-science/adapters/arangodb-cugraph-adapter.md similarity index 100% rename from site/content/3.10/data-science/adapters/arangodb-cugraph-adapter.md rename to site/content/arangodb/3.10/data-science/adapters/arangodb-cugraph-adapter.md diff --git a/site/content/3.10/data-science/adapters/arangodb-dgl-adapter.md b/site/content/arangodb/3.10/data-science/adapters/arangodb-dgl-adapter.md similarity index 100% rename from site/content/3.10/data-science/adapters/arangodb-dgl-adapter.md rename to site/content/arangodb/3.10/data-science/adapters/arangodb-dgl-adapter.md diff --git a/site/content/3.10/data-science/adapters/arangodb-networkx-adapter.md b/site/content/arangodb/3.10/data-science/adapters/arangodb-networkx-adapter.md similarity index 100% rename from site/content/3.10/data-science/adapters/arangodb-networkx-adapter.md rename to site/content/arangodb/3.10/data-science/adapters/arangodb-networkx-adapter.md diff --git a/site/content/3.10/data-science/adapters/arangodb-pyg-adapter.md b/site/content/arangodb/3.10/data-science/adapters/arangodb-pyg-adapter.md similarity index 100% rename from site/content/3.10/data-science/adapters/arangodb-pyg-adapter.md rename to site/content/arangodb/3.10/data-science/adapters/arangodb-pyg-adapter.md diff --git a/site/content/3.10/data-science/adapters/arangodb-rdf-adapter.md b/site/content/arangodb/3.10/data-science/adapters/arangodb-rdf-adapter.md similarity index 100% rename from site/content/3.10/data-science/adapters/arangodb-rdf-adapter.md rename to site/content/arangodb/3.10/data-science/adapters/arangodb-rdf-adapter.md diff --git a/site/content/arangodb/3.10/data-science/arangograph-notebooks.md b/site/content/arangodb/3.10/data-science/arangograph-notebooks.md new file mode 100644 index 0000000000..833a0525f1 --- /dev/null +++ b/site/content/arangodb/3.10/data-science/arangograph-notebooks.md @@ -0,0 +1,22 @@ +--- +title: AMP Notebooks +menuTitle: AMP Notebooks +weight: 130 +description: >- + Colocated Jupyter Notebooks within the Arango Managed Platform +--- +{{< tip >}} +AMP Notebooks don't include the ArangoGraphML services. +To enable the ArangoGraphML services, +[get in touch](https://www.arangodb.com/contact/) +with the ArangoDB team. +{{< /tip >}} + +The AMP Notebook is a JupyterLab notebook embedded in the +[Arango Managed Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). +The notebook integrates seamlessly with the platform, +automatically connecting to AMP services and ArangoDB. +This makes it much easier to leverage these resources without having +to download any data locally or to remember user IDs, passwords, and endpoint URLs. + +For more information, see the [Notebooks](../../../amp/notebooks.md) documentation. diff --git a/site/content/3.10/data-science/arangographml/_index.md b/site/content/arangodb/3.10/data-science/arangographml/_index.md similarity index 97% rename from site/content/3.10/data-science/arangographml/_index.md rename to site/content/arangodb/3.10/data-science/arangographml/_index.md index baa200deaa..0d1238abdd 100644 --- a/site/content/3.10/data-science/arangographml/_index.md +++ b/site/content/arangodb/3.10/data-science/arangographml/_index.md @@ -22,7 +22,7 @@ and facilitating their resolution. The process involves incorporating a graph's topology (node and edge structure) and the node and edge characteristics and features to create a numerical representation known as an embedding. -![GraphML Embeddings](../../../images/GraphML-Embeddings.webp) +![GraphML Embeddings](../../../../images/GraphML-Embeddings.webp) Graph Neural Networks (GNNs) are explicitly designed to learn meaningful numerical representations, or embeddings, for nodes and edges in a graph. @@ -34,7 +34,7 @@ for various tasks, such as node classification, link prediction, and graph-level classification, where the model can make predictions based on the learned patterns and relationships within the graph. -![GraphML Workflow](../../../images/GraphML-How-it-works.webp) +![GraphML Workflow](../../../../images/GraphML-How-it-works.webp) It is no longer necessary to understand the complexities involved with graph machine learning, thanks to the accessibility of the ArangoML package. diff --git a/site/content/3.10/data-science/arangographml/deploy.md b/site/content/arangodb/3.10/data-science/arangographml/deploy.md similarity index 79% rename from site/content/3.10/data-science/arangographml/deploy.md rename to site/content/arangodb/3.10/data-science/arangographml/deploy.md index 0d62cb12f6..b3f8c26068 100644 --- a/site/content/3.10/data-science/arangographml/deploy.md +++ b/site/content/arangodb/3.10/data-science/arangographml/deploy.md @@ -11,14 +11,14 @@ description: >- ArangoDB offers two deployment options, tailored to suit diverse requirements and infrastructure preferences: -- Managed cloud service via the [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) +- Managed cloud service via the [Arango Managed Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) - Self-managed solution via the [ArangoDB Kubernetes Operator](https://github.com/arangodb/kube-arangodb) ### ArangoGraphML ArangoGraphML provides enterprise-ready Graph Machine Learning as a Cloud Service via Jupyter Notebooks that run on the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). +[Arango Managed Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). {{< tip >}} To get access to ArangoGraphML services and packages, @@ -36,20 +36,20 @@ with the ArangoDB team. - Metadata capture - Model management -![ArangoGraphML Pipeline](../../../images/ArangoGraphML_Pipeline.png) +![ArangoGraphML Pipeline](../../../../images/ArangoGraphML_Pipeline.png) #### Setup The ArangoGraphML managed-service runs on the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). +[Arango Managed Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). It offers a pre-configured environment where everything, including necessary components and configurations, comes preloaded. You don't need to set up or configure the infrastructure, and can immediately start using the GraphML functionalities. To summarize, all you need to do is: -1. Sign up for an [ArangoGraph account](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -2. Create a new [deployment in ArangoGraph](../../arangograph/deployments/_index.md#how-to-create-a-new-deployment). +1. Sign up for an [AMP account](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). +2. Create a new [deployment in AMP](../../../../amp/deployments/_index.md#how-to-create-a-new-deployment). 3. Start using the ArangoGraphML functionalities. ### Self-managed ArangoGraphML diff --git a/site/content/3.10/data-science/arangographml/getting-started.md b/site/content/arangodb/3.10/data-science/arangographml/getting-started.md similarity index 99% rename from site/content/3.10/data-science/arangographml/getting-started.md rename to site/content/arangodb/3.10/data-science/arangographml/getting-started.md index 8742ec3aa0..e1309785dc 100644 --- a/site/content/3.10/data-science/arangographml/getting-started.md +++ b/site/content/arangodb/3.10/data-science/arangographml/getting-started.md @@ -175,12 +175,12 @@ Knowledge Graph constructed from the [GDELT Project](https://www.gdeltproject.or The events used range from peaceful protests to significant battles in Angola. The image below depicts the connections around an example event: -![Example Event](../../../images/ArangoML_open_intelligence_sample.png) +![Example Event](../../../../images/ArangoML_open_intelligence_sample.png) You can also see a larger portion of this graph, showing how the events, actors, news sources, and locations are interconnected into a large graph. -![Example Event](../../../images/ArangoML_open_intelligence_visualization.png) +![Example Event](../../../../images/ArangoML_open_intelligence_visualization.png) Let's get started! diff --git a/site/content/3.10/data-science/llm-knowledge-graphs.md b/site/content/arangodb/3.10/data-science/llm-knowledge-graphs.md similarity index 97% rename from site/content/3.10/data-science/llm-knowledge-graphs.md rename to site/content/arangodb/3.10/data-science/llm-knowledge-graphs.md index 80d8be9666..de8da64e7a 100644 --- a/site/content/3.10/data-science/llm-knowledge-graphs.md +++ b/site/content/arangodb/3.10/data-science/llm-knowledge-graphs.md @@ -46,7 +46,7 @@ the following tasks: - End-to-end knowledge graph construction - (Text) Embeddings -![ArangoDB Knowledge Graphs and LLMs](../../images/ArangoDB-knowledge-graphs-meets-llms.png) +![ArangoDB Knowledge Graphs and LLMs](../../../images/ArangoDB-knowledge-graphs-meets-llms.png) ## ArangoDB and LangChain diff --git a/site/content/3.10/data-science/pregel/_index.md b/site/content/arangodb/3.10/data-science/pregel/_index.md similarity index 100% rename from site/content/3.10/data-science/pregel/_index.md rename to site/content/arangodb/3.10/data-science/pregel/_index.md diff --git a/site/content/3.10/data-science/pregel/algorithms.md b/site/content/arangodb/3.10/data-science/pregel/algorithms.md similarity index 98% rename from site/content/3.10/data-science/pregel/algorithms.md rename to site/content/arangodb/3.10/data-science/pregel/algorithms.md index b596d7669b..3b17aecc8b 100644 --- a/site/content/3.10/data-science/pregel/algorithms.md +++ b/site/content/arangodb/3.10/data-science/pregel/algorithms.md @@ -215,7 +215,7 @@ It is probably impossible to discover an efficient algorithm which computes them in a distributed way. Fortunately there are scalable substitutions available, which should be equally usable for most use cases. -![Illustration of an execution of different centrality measures (Freeman 1977)](../../../images/centrality_visual.png) +![Illustration of an execution of different centrality measures (Freeman 1977)](../../../../images/centrality_visual.png) #### Effective Closeness @@ -224,7 +224,7 @@ A common definitions of centrality is the **closeness centrality** length of the shortest path between the vertex and all other vertices. For vertices *x*, *y* and shortest distance `d(y, x)` it is defined as: -![Vertex Closeness Formula](../../../images/closeness.png) +![Vertex Closeness Formula](../../../../images/closeness.png) Effective Closeness approximates the closeness measure. The algorithm works by iteratively estimating the number of shortest paths passing through each vertex. @@ -252,7 +252,7 @@ Another common measure is the [*betweenness* centrality](https://en.wikipedia.or It measures the number of times a vertex is part of shortest paths between any pairs of vertices. For a vertex *v* betweenness is defined as: -![Vertex Betweenness Formula](../../../images/betweenness.png) +![Vertex Betweenness Formula](../../../../images/betweenness.png) Where the σ represents the number of shortest paths between *x* and *y*, and σ(v) represents the number of paths also passing through a vertex *v*. diff --git a/site/content/3.10/deploy/_index.md b/site/content/arangodb/3.10/deploy/_index.md similarity index 98% rename from site/content/3.10/deploy/_index.md rename to site/content/arangodb/3.10/deploy/_index.md index 2b049622fb..e073069b53 100644 --- a/site/content/3.10/deploy/_index.md +++ b/site/content/arangodb/3.10/deploy/_index.md @@ -136,7 +136,7 @@ If you want a specific version, download the precompiled executable via the ### Run in the cloud - [AWS and Azure](in-the-cloud.md) -- [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), +- [Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), fully managed, available on AWS, Azure & GCP ### Run in Kubernetes diff --git a/site/content/3.10/deploy/active-failover/_index.md b/site/content/arangodb/3.10/deploy/active-failover/_index.md similarity index 98% rename from site/content/3.10/deploy/active-failover/_index.md rename to site/content/arangodb/3.10/deploy/active-failover/_index.md index 1bbfdf8f2a..8672afa5e4 100644 --- a/site/content/3.10/deploy/active-failover/_index.md +++ b/site/content/arangodb/3.10/deploy/active-failover/_index.md @@ -17,7 +17,7 @@ An _Active Failover_ is defined as: An _Active Failover_ behaves differently from an [ArangoDB Cluster](../cluster/_index.md), please see the [limitations section](#limitations) for more details. -![ArangoDB Active Failover](../../../images/leader-follower.png) +![ArangoDB Active Failover](../../../../images/leader-follower.png) The advantage of the _Active Failover_ setup is that there is an active third party, the _Agency_, which observes and supervises all involved server processes. diff --git a/site/content/3.10/deploy/active-failover/administration.md b/site/content/arangodb/3.10/deploy/active-failover/administration.md similarity index 100% rename from site/content/3.10/deploy/active-failover/administration.md rename to site/content/arangodb/3.10/deploy/active-failover/administration.md diff --git a/site/content/3.10/deploy/active-failover/manual-start.md b/site/content/arangodb/3.10/deploy/active-failover/manual-start.md similarity index 100% rename from site/content/3.10/deploy/active-failover/manual-start.md rename to site/content/arangodb/3.10/deploy/active-failover/manual-start.md diff --git a/site/content/3.10/deploy/active-failover/using-the-arangodb-starter.md b/site/content/arangodb/3.10/deploy/active-failover/using-the-arangodb-starter.md similarity index 100% rename from site/content/3.10/deploy/active-failover/using-the-arangodb-starter.md rename to site/content/arangodb/3.10/deploy/active-failover/using-the-arangodb-starter.md diff --git a/site/content/3.10/deploy/arangosync/_index.md b/site/content/arangodb/3.10/deploy/arangosync/_index.md similarity index 99% rename from site/content/3.10/deploy/arangosync/_index.md rename to site/content/arangodb/3.10/deploy/arangosync/_index.md index b660c58918..84e98d03fd 100644 --- a/site/content/3.10/deploy/arangosync/_index.md +++ b/site/content/arangodb/3.10/deploy/arangosync/_index.md @@ -27,7 +27,7 @@ in one place to a Cluster in another place. Typically it is used from one datace to another. It is possible to replicate to multiple other datacenters as well. It is not a solution for replicating single server instances. -![ArangoDB DC2DC](../../../images/dc2dc_topology.png) +![ArangoDB DC2DC](../../../../images/dc2dc_topology.png) The replication done by _ArangoSync_ is **asynchronous**. That means that when a client is writing data into the source datacenter, it will consider the diff --git a/site/content/3.10/deploy/arangosync/administration.md b/site/content/arangodb/3.10/deploy/arangosync/administration.md similarity index 100% rename from site/content/3.10/deploy/arangosync/administration.md rename to site/content/arangodb/3.10/deploy/arangosync/administration.md diff --git a/site/content/3.10/deploy/arangosync/deployment/_index.md b/site/content/arangodb/3.10/deploy/arangosync/deployment/_index.md similarity index 100% rename from site/content/3.10/deploy/arangosync/deployment/_index.md rename to site/content/arangodb/3.10/deploy/arangosync/deployment/_index.md diff --git a/site/content/3.10/deploy/arangosync/deployment/arangodb-cluster.md b/site/content/arangodb/3.10/deploy/arangosync/deployment/arangodb-cluster.md similarity index 100% rename from site/content/3.10/deploy/arangosync/deployment/arangodb-cluster.md rename to site/content/arangodb/3.10/deploy/arangosync/deployment/arangodb-cluster.md diff --git a/site/content/3.10/deploy/arangosync/deployment/arangosync-master.md b/site/content/arangodb/3.10/deploy/arangosync/deployment/arangosync-master.md similarity index 100% rename from site/content/3.10/deploy/arangosync/deployment/arangosync-master.md rename to site/content/arangodb/3.10/deploy/arangosync/deployment/arangosync-master.md diff --git a/site/content/3.10/deploy/arangosync/deployment/arangosync-workers.md b/site/content/arangodb/3.10/deploy/arangosync/deployment/arangosync-workers.md similarity index 100% rename from site/content/3.10/deploy/arangosync/deployment/arangosync-workers.md rename to site/content/arangodb/3.10/deploy/arangosync/deployment/arangosync-workers.md diff --git a/site/content/3.10/deploy/arangosync/deployment/prometheus-and-grafana.md b/site/content/arangodb/3.10/deploy/arangosync/deployment/prometheus-and-grafana.md similarity index 100% rename from site/content/3.10/deploy/arangosync/deployment/prometheus-and-grafana.md rename to site/content/arangodb/3.10/deploy/arangosync/deployment/prometheus-and-grafana.md diff --git a/site/content/3.10/deploy/arangosync/monitoring.md b/site/content/arangodb/3.10/deploy/arangosync/monitoring.md similarity index 100% rename from site/content/3.10/deploy/arangosync/monitoring.md rename to site/content/arangodb/3.10/deploy/arangosync/monitoring.md diff --git a/site/content/3.10/deploy/arangosync/operations-and-maintenance.md b/site/content/arangodb/3.10/deploy/arangosync/operations-and-maintenance.md similarity index 100% rename from site/content/3.10/deploy/arangosync/operations-and-maintenance.md rename to site/content/arangodb/3.10/deploy/arangosync/operations-and-maintenance.md diff --git a/site/content/3.10/deploy/arangosync/security.md b/site/content/arangodb/3.10/deploy/arangosync/security.md similarity index 100% rename from site/content/3.10/deploy/arangosync/security.md rename to site/content/arangodb/3.10/deploy/arangosync/security.md diff --git a/site/content/3.10/deploy/arangosync/troubleshooting.md b/site/content/arangodb/3.10/deploy/arangosync/troubleshooting.md similarity index 100% rename from site/content/3.10/deploy/arangosync/troubleshooting.md rename to site/content/arangodb/3.10/deploy/arangosync/troubleshooting.md diff --git a/site/content/3.10/deploy/architecture/_index.md b/site/content/arangodb/3.10/deploy/architecture/_index.md similarity index 100% rename from site/content/3.10/deploy/architecture/_index.md rename to site/content/arangodb/3.10/deploy/architecture/_index.md diff --git a/site/content/3.10/deploy/architecture/data-sharding.md b/site/content/arangodb/3.10/deploy/architecture/data-sharding.md similarity index 98% rename from site/content/3.10/deploy/architecture/data-sharding.md rename to site/content/arangodb/3.10/deploy/architecture/data-sharding.md index d495f38981..6139b13938 100644 --- a/site/content/3.10/deploy/architecture/data-sharding.md +++ b/site/content/arangodb/3.10/deploy/architecture/data-sharding.md @@ -44,7 +44,7 @@ cost-effective than pre-provisioning a single large machine. Increased complexity in infrastructure can be managed using modern containerization and cluster orchestrations tools like [Kubernetes](../kubernetes.md). -![Cluster Sharding](../../../images/cluster_sharding.jpg) +![Cluster Sharding](../../../../images/cluster_sharding.jpg) To achieve this ArangoDB splits your dataset into so called _shards_. The number of shards is something you may choose according to your needs. Proper sharding @@ -84,7 +84,7 @@ a given document is to be stored. Choosing the right shard key can have significant impact on your performance can reduce network traffic and increase performance. -![Hash Sharding](../../../images/cluster_sharding_hash.jpg) +![Hash Sharding](../../../../images/cluster_sharding_hash.jpg) ArangoDB uses consistent hashing to compute the target shard from the given values (as specified via by the `shardKeys` collection property). The ideal set diff --git a/site/content/3.10/deploy/architecture/replication.md b/site/content/arangodb/3.10/deploy/architecture/replication.md similarity index 100% rename from site/content/3.10/deploy/architecture/replication.md rename to site/content/arangodb/3.10/deploy/architecture/replication.md diff --git a/site/content/3.10/deploy/architecture/scalability.md b/site/content/arangodb/3.10/deploy/architecture/scalability.md similarity index 100% rename from site/content/3.10/deploy/architecture/scalability.md rename to site/content/arangodb/3.10/deploy/architecture/scalability.md diff --git a/site/content/3.10/deploy/cluster/_index.md b/site/content/arangodb/3.10/deploy/cluster/_index.md similarity index 98% rename from site/content/3.10/deploy/cluster/_index.md rename to site/content/arangodb/3.10/deploy/cluster/_index.md index 4d10cec023..60b256783a 100644 --- a/site/content/3.10/deploy/cluster/_index.md +++ b/site/content/arangodb/3.10/deploy/cluster/_index.md @@ -39,7 +39,7 @@ roles: - _Coordinators_ - _DB-Servers_. -![ArangoDB Cluster](../../../images/cluster-topology.png) +![ArangoDB Cluster](../../../../images/cluster-topology.png) ### Agents @@ -142,7 +142,7 @@ automatically to the different servers. In many situations one can also reap a benefit in data throughput, again because the load can be distributed to multiple machines. -![Cluster Sharding](../../../images/cluster_sharding.jpg) +![Cluster Sharding](../../../../images/cluster_sharding.jpg) From the outside this process is fully transparent: An application may talk to any _Coordinator_ and @@ -385,7 +385,7 @@ See the [Cluster Deployment](deployment/_index.md) chapter for instructions. ArangoDB is also available as a cloud service, the -[**ArangoGraph Insights Platform**](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). +[**Arango Managed Platform (AMP)**](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). ## Cluster ID diff --git a/site/content/3.10/deploy/cluster/administration.md b/site/content/arangodb/3.10/deploy/cluster/administration.md similarity index 100% rename from site/content/3.10/deploy/cluster/administration.md rename to site/content/arangodb/3.10/deploy/cluster/administration.md diff --git a/site/content/3.10/deploy/cluster/deployment/_index.md b/site/content/arangodb/3.10/deploy/cluster/deployment/_index.md similarity index 97% rename from site/content/3.10/deploy/cluster/deployment/_index.md rename to site/content/arangodb/3.10/deploy/cluster/deployment/_index.md index 4bd6b1550d..55d16885b4 100644 --- a/site/content/3.10/deploy/cluster/deployment/_index.md +++ b/site/content/arangodb/3.10/deploy/cluster/deployment/_index.md @@ -9,7 +9,7 @@ You can deploy an ArangoDB cluster in different ways: - [Using the ArangoDB Starter](using-the-arangodb-starter.md) - [Manual Start](manual-start.md) - [Kubernetes](../../kubernetes.md) -- [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), +- [Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), fully managed, available on AWS, Azure & GCP ## Preliminary Information For Debian/Ubuntu Systems diff --git a/site/content/3.10/deploy/cluster/deployment/manual-start.md b/site/content/arangodb/3.10/deploy/cluster/deployment/manual-start.md similarity index 100% rename from site/content/3.10/deploy/cluster/deployment/manual-start.md rename to site/content/arangodb/3.10/deploy/cluster/deployment/manual-start.md diff --git a/site/content/3.10/deploy/cluster/deployment/using-the-arangodb-starter.md b/site/content/arangodb/3.10/deploy/cluster/deployment/using-the-arangodb-starter.md similarity index 100% rename from site/content/3.10/deploy/cluster/deployment/using-the-arangodb-starter.md rename to site/content/arangodb/3.10/deploy/cluster/deployment/using-the-arangodb-starter.md diff --git a/site/content/3.10/deploy/cluster/limitations.md b/site/content/arangodb/3.10/deploy/cluster/limitations.md similarity index 100% rename from site/content/3.10/deploy/cluster/limitations.md rename to site/content/arangodb/3.10/deploy/cluster/limitations.md diff --git a/site/content/3.10/deploy/in-the-cloud.md b/site/content/arangodb/3.10/deploy/in-the-cloud.md similarity index 100% rename from site/content/3.10/deploy/in-the-cloud.md rename to site/content/arangodb/3.10/deploy/in-the-cloud.md diff --git a/site/content/3.10/deploy/kubernetes.md b/site/content/arangodb/3.10/deploy/kubernetes.md similarity index 100% rename from site/content/3.10/deploy/kubernetes.md rename to site/content/arangodb/3.10/deploy/kubernetes.md diff --git a/site/content/3.11/deploy/oneshard.md b/site/content/arangodb/3.10/deploy/oneshard.md similarity index 99% rename from site/content/3.11/deploy/oneshard.md rename to site/content/arangodb/3.10/deploy/oneshard.md index cd4eed572b..048508fdfd 100644 --- a/site/content/3.11/deploy/oneshard.md +++ b/site/content/arangodb/3.10/deploy/oneshard.md @@ -49,7 +49,7 @@ because they need to send and receive data on several connections, build up results for collection accesses from the received parts followed by further processing. -![OneShard vs. Sharded Cluster Setup](../../images/cluster-sharded-oneshard.png) +![OneShard vs. Sharded Cluster Setup](../../../images/cluster-sharded-oneshard.png) If the database involved in a query is a OneShard database, then the OneShard optimization can be applied to run the query on the diff --git a/site/content/3.10/deploy/production-checklist.md b/site/content/arangodb/3.10/deploy/production-checklist.md similarity index 100% rename from site/content/3.10/deploy/production-checklist.md rename to site/content/arangodb/3.10/deploy/production-checklist.md diff --git a/site/content/3.10/deploy/single-instance-vs-cluster.md b/site/content/arangodb/3.10/deploy/single-instance-vs-cluster.md similarity index 100% rename from site/content/3.10/deploy/single-instance-vs-cluster.md rename to site/content/arangodb/3.10/deploy/single-instance-vs-cluster.md diff --git a/site/content/3.10/deploy/single-instance/_index.md b/site/content/arangodb/3.10/deploy/single-instance/_index.md similarity index 100% rename from site/content/3.10/deploy/single-instance/_index.md rename to site/content/arangodb/3.10/deploy/single-instance/_index.md diff --git a/site/content/3.10/deploy/single-instance/manual-start.md b/site/content/arangodb/3.10/deploy/single-instance/manual-start.md similarity index 100% rename from site/content/3.10/deploy/single-instance/manual-start.md rename to site/content/arangodb/3.10/deploy/single-instance/manual-start.md diff --git a/site/content/3.10/deploy/single-instance/using-the-arangodb-starter.md b/site/content/arangodb/3.10/deploy/single-instance/using-the-arangodb-starter.md similarity index 100% rename from site/content/3.10/deploy/single-instance/using-the-arangodb-starter.md rename to site/content/arangodb/3.10/deploy/single-instance/using-the-arangodb-starter.md diff --git a/site/content/3.10/develop/_index.md b/site/content/arangodb/3.10/develop/_index.md similarity index 100% rename from site/content/3.10/develop/_index.md rename to site/content/arangodb/3.10/develop/_index.md diff --git a/site/content/3.10/develop/drivers/_index.md b/site/content/arangodb/3.10/develop/drivers/_index.md similarity index 100% rename from site/content/3.10/develop/drivers/_index.md rename to site/content/arangodb/3.10/develop/drivers/_index.md diff --git a/site/content/3.10/develop/drivers/csharp-dotnet.md b/site/content/arangodb/3.10/develop/drivers/csharp-dotnet.md similarity index 100% rename from site/content/3.10/develop/drivers/csharp-dotnet.md rename to site/content/arangodb/3.10/develop/drivers/csharp-dotnet.md diff --git a/site/content/3.10/develop/drivers/go.md b/site/content/arangodb/3.10/develop/drivers/go.md similarity index 100% rename from site/content/3.10/develop/drivers/go.md rename to site/content/arangodb/3.10/develop/drivers/go.md diff --git a/site/content/3.10/develop/drivers/java/_index.md b/site/content/arangodb/3.10/develop/drivers/java/_index.md similarity index 100% rename from site/content/3.10/develop/drivers/java/_index.md rename to site/content/arangodb/3.10/develop/drivers/java/_index.md diff --git a/site/content/3.10/develop/drivers/java/reference-version-6/_index.md b/site/content/arangodb/3.10/develop/drivers/java/reference-version-6/_index.md similarity index 100% rename from site/content/3.10/develop/drivers/java/reference-version-6/_index.md rename to site/content/arangodb/3.10/develop/drivers/java/reference-version-6/_index.md diff --git a/site/content/3.10/develop/drivers/java/reference-version-6/driver-setup.md b/site/content/arangodb/3.10/develop/drivers/java/reference-version-6/driver-setup.md similarity index 100% rename from site/content/3.10/develop/drivers/java/reference-version-6/driver-setup.md rename to site/content/arangodb/3.10/develop/drivers/java/reference-version-6/driver-setup.md diff --git a/site/content/3.10/develop/drivers/java/reference-version-6/serialization.md b/site/content/arangodb/3.10/develop/drivers/java/reference-version-6/serialization.md similarity index 100% rename from site/content/3.10/develop/drivers/java/reference-version-6/serialization.md rename to site/content/arangodb/3.10/develop/drivers/java/reference-version-6/serialization.md diff --git a/site/content/3.10/develop/drivers/java/reference-version-7/_index.md b/site/content/arangodb/3.10/develop/drivers/java/reference-version-7/_index.md similarity index 100% rename from site/content/3.10/develop/drivers/java/reference-version-7/_index.md rename to site/content/arangodb/3.10/develop/drivers/java/reference-version-7/_index.md diff --git a/site/content/3.10/develop/drivers/java/reference-version-7/changes-in-version-7.md b/site/content/arangodb/3.10/develop/drivers/java/reference-version-7/changes-in-version-7.md similarity index 100% rename from site/content/3.10/develop/drivers/java/reference-version-7/changes-in-version-7.md rename to site/content/arangodb/3.10/develop/drivers/java/reference-version-7/changes-in-version-7.md diff --git a/site/content/3.10/develop/drivers/java/reference-version-7/driver-setup.md b/site/content/arangodb/3.10/develop/drivers/java/reference-version-7/driver-setup.md similarity index 100% rename from site/content/3.10/develop/drivers/java/reference-version-7/driver-setup.md rename to site/content/arangodb/3.10/develop/drivers/java/reference-version-7/driver-setup.md diff --git a/site/content/3.10/develop/drivers/java/reference-version-7/serialization.md b/site/content/arangodb/3.10/develop/drivers/java/reference-version-7/serialization.md similarity index 100% rename from site/content/3.10/develop/drivers/java/reference-version-7/serialization.md rename to site/content/arangodb/3.10/develop/drivers/java/reference-version-7/serialization.md diff --git a/site/content/3.10/develop/drivers/nodejs.md b/site/content/arangodb/3.10/develop/drivers/nodejs.md similarity index 100% rename from site/content/3.10/develop/drivers/nodejs.md rename to site/content/arangodb/3.10/develop/drivers/nodejs.md diff --git a/site/content/3.10/develop/drivers/python.md b/site/content/arangodb/3.10/develop/drivers/python.md similarity index 100% rename from site/content/3.10/develop/drivers/python.md rename to site/content/arangodb/3.10/develop/drivers/python.md diff --git a/site/content/3.10/develop/error-codes-and-meanings.md b/site/content/arangodb/3.10/develop/error-codes-and-meanings.md similarity index 100% rename from site/content/3.10/develop/error-codes-and-meanings.md rename to site/content/arangodb/3.10/develop/error-codes-and-meanings.md diff --git a/site/content/3.10/develop/foxx-microservices/_index.md b/site/content/arangodb/3.10/develop/foxx-microservices/_index.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/_index.md rename to site/content/arangodb/3.10/develop/foxx-microservices/_index.md diff --git a/site/content/3.10/develop/foxx-microservices/deployment.md b/site/content/arangodb/3.10/develop/foxx-microservices/deployment.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/deployment.md rename to site/content/arangodb/3.10/develop/foxx-microservices/deployment.md diff --git a/site/content/3.10/develop/foxx-microservices/getting-started.md b/site/content/arangodb/3.10/develop/foxx-microservices/getting-started.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/getting-started.md rename to site/content/arangodb/3.10/develop/foxx-microservices/getting-started.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/_index.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/_index.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/_index.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/_index.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/access-from-the-browser.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/access-from-the-browser.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/access-from-the-browser.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/access-from-the-browser.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/authentication-and-sessions.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/authentication-and-sessions.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/authentication-and-sessions.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/authentication-and-sessions.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/development-mode.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/development-mode.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/development-mode.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/development-mode.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/foxx-in-a-cluster.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/foxx-in-a-cluster.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/foxx-in-a-cluster.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/foxx-in-a-cluster.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/linking-services-together.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/linking-services-together.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/linking-services-together.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/linking-services-together.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/making-requests.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/making-requests.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/making-requests.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/making-requests.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/scripts-and-scheduling.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/scripts-and-scheduling.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/scripts-and-scheduling.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/scripts-and-scheduling.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/testing-foxx-services.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/testing-foxx-services.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/testing-foxx-services.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/testing-foxx-services.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/using-node-modules.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/using-node-modules.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/using-node-modules.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/using-node-modules.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/using-webpack-with-foxx.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/using-webpack-with-foxx.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/using-webpack-with-foxx.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/using-webpack-with-foxx.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/working-with-collections.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/working-with-collections.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/working-with-collections.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/working-with-collections.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/working-with-files.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/working-with-files.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/working-with-files.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/working-with-files.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/working-with-routers.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/working-with-routers.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/working-with-routers.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/working-with-routers.md diff --git a/site/content/3.10/develop/foxx-microservices/guides/writing-queries.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/writing-queries.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/guides/writing-queries.md rename to site/content/arangodb/3.10/develop/foxx-microservices/guides/writing-queries.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/_index.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/_index.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/_index.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/_index.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/configuration.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/configuration.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/configuration.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/configuration.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/related-modules/_index.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/related-modules/_index.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/related-modules/_index.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/related-modules/_index.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/related-modules/authentication.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/related-modules/authentication.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/related-modules/authentication.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/related-modules/authentication.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/related-modules/graphql.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/related-modules/graphql.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/related-modules/graphql.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/related-modules/graphql.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/related-modules/oauth-2-0.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/related-modules/oauth-2-0.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/related-modules/oauth-2-0.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/related-modules/oauth-2-0.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/related-modules/queues.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/related-modules/queues.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/related-modules/queues.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/related-modules/queues.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/routers/_index.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/routers/_index.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/routers/_index.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/routers/_index.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/routers/endpoints.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/routers/endpoints.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/routers/endpoints.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/routers/endpoints.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/routers/middleware.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/routers/middleware.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/routers/middleware.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/routers/middleware.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/routers/request.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/routers/request.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/routers/request.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/routers/request.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/routers/response.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/routers/response.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/routers/response.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/routers/response.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/service-context.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/service-context.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/service-context.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/service-context.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/service-manifest.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/service-manifest.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/service-manifest.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/service-manifest.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/_index.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/_index.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/_index.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/_index.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md diff --git a/site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md b/site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md similarity index 100% rename from site/content/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md rename to site/content/arangodb/3.10/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md diff --git a/site/content/3.10/develop/http-api/_index.md b/site/content/arangodb/3.10/develop/http-api/_index.md similarity index 98% rename from site/content/3.10/develop/http-api/_index.md rename to site/content/arangodb/3.10/develop/http-api/_index.md index 3068e60f26..4e14d398c3 100644 --- a/site/content/3.10/develop/http-api/_index.md +++ b/site/content/arangodb/3.10/develop/http-api/_index.md @@ -105,7 +105,7 @@ You can explore the API with the interactive **Swagger UI** using the 2. Click the **Rest API** tab. 3. Click a section and endpoint to view the description and parameters. -![The web interface with the navigation on the left and the tabs at the top](../../../images/swagger_serverapi_overview.png) +![The web interface with the navigation on the left and the tabs at the top](../../../../images/swagger_serverapi_overview.png) Also see this blog post: [Using the ArangoDB Swagger.io Interactive API Documentation](https://www.arangodb.com/2018/03/using-arangodb-swaggerio-interactive-api-documentation/). diff --git a/site/content/3.10/develop/http-api/administration.md b/site/content/arangodb/3.10/develop/http-api/administration.md similarity index 100% rename from site/content/3.10/develop/http-api/administration.md rename to site/content/arangodb/3.10/develop/http-api/administration.md diff --git a/site/content/3.10/develop/http-api/analyzers.md b/site/content/arangodb/3.10/develop/http-api/analyzers.md similarity index 100% rename from site/content/3.10/develop/http-api/analyzers.md rename to site/content/arangodb/3.10/develop/http-api/analyzers.md diff --git a/site/content/3.10/develop/http-api/authentication.md b/site/content/arangodb/3.10/develop/http-api/authentication.md similarity index 100% rename from site/content/3.10/develop/http-api/authentication.md rename to site/content/arangodb/3.10/develop/http-api/authentication.md diff --git a/site/content/3.10/develop/http-api/batch-requests.md b/site/content/arangodb/3.10/develop/http-api/batch-requests.md similarity index 100% rename from site/content/3.10/develop/http-api/batch-requests.md rename to site/content/arangodb/3.10/develop/http-api/batch-requests.md diff --git a/site/content/3.10/develop/http-api/cluster.md b/site/content/arangodb/3.10/develop/http-api/cluster.md similarity index 100% rename from site/content/3.10/develop/http-api/cluster.md rename to site/content/arangodb/3.10/develop/http-api/cluster.md diff --git a/site/content/3.10/develop/http-api/collections.md b/site/content/arangodb/3.10/develop/http-api/collections.md similarity index 100% rename from site/content/3.10/develop/http-api/collections.md rename to site/content/arangodb/3.10/develop/http-api/collections.md diff --git a/site/content/3.10/develop/http-api/databases.md b/site/content/arangodb/3.10/develop/http-api/databases.md similarity index 100% rename from site/content/3.10/develop/http-api/databases.md rename to site/content/arangodb/3.10/develop/http-api/databases.md diff --git a/site/content/3.10/develop/http-api/documents.md b/site/content/arangodb/3.10/develop/http-api/documents.md similarity index 100% rename from site/content/3.10/develop/http-api/documents.md rename to site/content/arangodb/3.10/develop/http-api/documents.md diff --git a/site/content/3.10/develop/http-api/foxx.md b/site/content/arangodb/3.10/develop/http-api/foxx.md similarity index 100% rename from site/content/3.10/develop/http-api/foxx.md rename to site/content/arangodb/3.10/develop/http-api/foxx.md diff --git a/site/content/3.10/develop/http-api/general-request-handling.md b/site/content/arangodb/3.10/develop/http-api/general-request-handling.md similarity index 100% rename from site/content/3.10/develop/http-api/general-request-handling.md rename to site/content/arangodb/3.10/develop/http-api/general-request-handling.md diff --git a/site/content/3.10/develop/http-api/graphs/_index.md b/site/content/arangodb/3.10/develop/http-api/graphs/_index.md similarity index 100% rename from site/content/3.10/develop/http-api/graphs/_index.md rename to site/content/arangodb/3.10/develop/http-api/graphs/_index.md diff --git a/site/content/3.10/develop/http-api/graphs/edges.md b/site/content/arangodb/3.10/develop/http-api/graphs/edges.md similarity index 100% rename from site/content/3.10/develop/http-api/graphs/edges.md rename to site/content/arangodb/3.10/develop/http-api/graphs/edges.md diff --git a/site/content/3.10/develop/http-api/graphs/named-graphs.md b/site/content/arangodb/3.10/develop/http-api/graphs/named-graphs.md similarity index 99% rename from site/content/3.10/develop/http-api/graphs/named-graphs.md rename to site/content/arangodb/3.10/develop/http-api/graphs/named-graphs.md index e3bdcb3b8e..430cf36b6a 100644 --- a/site/content/3.10/develop/http-api/graphs/named-graphs.md +++ b/site/content/arangodb/3.10/develop/http-api/graphs/named-graphs.md @@ -18,11 +18,11 @@ The examples use the following example graphs: [_Social Graph_](../../../graphs/example-graphs.md#social-graph): -![Social Example Graph](../../../../images/social_graph.png) +![Social Example Graph](../../../../../images/social_graph.png) [_Knows Graph_](../../../graphs/example-graphs.md#knows-graph): -![Social Example Graph](../../../../images/knows_graph.png) +![Social Example Graph](../../../../../images/knows_graph.png) ## Management diff --git a/site/content/3.10/develop/http-api/hot-backups.md b/site/content/arangodb/3.10/develop/http-api/hot-backups.md similarity index 100% rename from site/content/3.10/develop/http-api/hot-backups.md rename to site/content/arangodb/3.10/develop/http-api/hot-backups.md diff --git a/site/content/3.10/develop/http-api/import.md b/site/content/arangodb/3.10/develop/http-api/import.md similarity index 100% rename from site/content/3.10/develop/http-api/import.md rename to site/content/arangodb/3.10/develop/http-api/import.md diff --git a/site/content/3.10/develop/http-api/indexes/_index.md b/site/content/arangodb/3.10/develop/http-api/indexes/_index.md similarity index 100% rename from site/content/3.10/develop/http-api/indexes/_index.md rename to site/content/arangodb/3.10/develop/http-api/indexes/_index.md diff --git a/site/content/3.10/develop/http-api/indexes/fulltext.md b/site/content/arangodb/3.10/develop/http-api/indexes/fulltext.md similarity index 100% rename from site/content/3.10/develop/http-api/indexes/fulltext.md rename to site/content/arangodb/3.10/develop/http-api/indexes/fulltext.md diff --git a/site/content/3.10/develop/http-api/indexes/geo-spatial.md b/site/content/arangodb/3.10/develop/http-api/indexes/geo-spatial.md similarity index 100% rename from site/content/3.10/develop/http-api/indexes/geo-spatial.md rename to site/content/arangodb/3.10/develop/http-api/indexes/geo-spatial.md diff --git a/site/content/3.10/develop/http-api/indexes/inverted.md b/site/content/arangodb/3.10/develop/http-api/indexes/inverted.md similarity index 100% rename from site/content/3.10/develop/http-api/indexes/inverted.md rename to site/content/arangodb/3.10/develop/http-api/indexes/inverted.md diff --git a/site/content/3.10/develop/http-api/indexes/multi-dimensional.md b/site/content/arangodb/3.10/develop/http-api/indexes/multi-dimensional.md similarity index 100% rename from site/content/3.10/develop/http-api/indexes/multi-dimensional.md rename to site/content/arangodb/3.10/develop/http-api/indexes/multi-dimensional.md diff --git a/site/content/3.10/develop/http-api/indexes/persistent.md b/site/content/arangodb/3.10/develop/http-api/indexes/persistent.md similarity index 100% rename from site/content/3.10/develop/http-api/indexes/persistent.md rename to site/content/arangodb/3.10/develop/http-api/indexes/persistent.md diff --git a/site/content/3.10/develop/http-api/indexes/ttl.md b/site/content/arangodb/3.10/develop/http-api/indexes/ttl.md similarity index 100% rename from site/content/3.10/develop/http-api/indexes/ttl.md rename to site/content/arangodb/3.10/develop/http-api/indexes/ttl.md diff --git a/site/content/3.10/develop/http-api/jobs.md b/site/content/arangodb/3.10/develop/http-api/jobs.md similarity index 100% rename from site/content/3.10/develop/http-api/jobs.md rename to site/content/arangodb/3.10/develop/http-api/jobs.md diff --git a/site/content/3.10/develop/http-api/monitoring/_index.md b/site/content/arangodb/3.10/develop/http-api/monitoring/_index.md similarity index 100% rename from site/content/3.10/develop/http-api/monitoring/_index.md rename to site/content/arangodb/3.10/develop/http-api/monitoring/_index.md diff --git a/site/content/3.10/develop/http-api/monitoring/logs.md b/site/content/arangodb/3.10/develop/http-api/monitoring/logs.md similarity index 100% rename from site/content/3.10/develop/http-api/monitoring/logs.md rename to site/content/arangodb/3.10/develop/http-api/monitoring/logs.md diff --git a/site/content/3.10/develop/http-api/monitoring/metrics.md b/site/content/arangodb/3.10/develop/http-api/monitoring/metrics.md similarity index 100% rename from site/content/3.10/develop/http-api/monitoring/metrics.md rename to site/content/arangodb/3.10/develop/http-api/monitoring/metrics.md diff --git a/site/content/3.10/develop/http-api/monitoring/statistics.md b/site/content/arangodb/3.10/develop/http-api/monitoring/statistics.md similarity index 100% rename from site/content/3.10/develop/http-api/monitoring/statistics.md rename to site/content/arangodb/3.10/develop/http-api/monitoring/statistics.md diff --git a/site/content/3.10/develop/http-api/pregel.md b/site/content/arangodb/3.10/develop/http-api/pregel.md similarity index 100% rename from site/content/3.10/develop/http-api/pregel.md rename to site/content/arangodb/3.10/develop/http-api/pregel.md diff --git a/site/content/3.10/develop/http-api/queries/_index.md b/site/content/arangodb/3.10/develop/http-api/queries/_index.md similarity index 100% rename from site/content/3.10/develop/http-api/queries/_index.md rename to site/content/arangodb/3.10/develop/http-api/queries/_index.md diff --git a/site/content/3.10/develop/http-api/queries/aql-queries.md b/site/content/arangodb/3.10/develop/http-api/queries/aql-queries.md similarity index 100% rename from site/content/3.10/develop/http-api/queries/aql-queries.md rename to site/content/arangodb/3.10/develop/http-api/queries/aql-queries.md diff --git a/site/content/3.10/develop/http-api/queries/aql-query-results-cache.md b/site/content/arangodb/3.10/develop/http-api/queries/aql-query-results-cache.md similarity index 100% rename from site/content/3.10/develop/http-api/queries/aql-query-results-cache.md rename to site/content/arangodb/3.10/develop/http-api/queries/aql-query-results-cache.md diff --git a/site/content/3.10/develop/http-api/queries/user-defined-aql-functions.md b/site/content/arangodb/3.10/develop/http-api/queries/user-defined-aql-functions.md similarity index 100% rename from site/content/3.10/develop/http-api/queries/user-defined-aql-functions.md rename to site/content/arangodb/3.10/develop/http-api/queries/user-defined-aql-functions.md diff --git a/site/content/3.10/develop/http-api/replication/_index.md b/site/content/arangodb/3.10/develop/http-api/replication/_index.md similarity index 100% rename from site/content/3.10/develop/http-api/replication/_index.md rename to site/content/arangodb/3.10/develop/http-api/replication/_index.md diff --git a/site/content/3.10/develop/http-api/replication/other-replication-commands.md b/site/content/arangodb/3.10/develop/http-api/replication/other-replication-commands.md similarity index 100% rename from site/content/3.10/develop/http-api/replication/other-replication-commands.md rename to site/content/arangodb/3.10/develop/http-api/replication/other-replication-commands.md diff --git a/site/content/3.10/develop/http-api/replication/replication-applier.md b/site/content/arangodb/3.10/develop/http-api/replication/replication-applier.md similarity index 100% rename from site/content/3.10/develop/http-api/replication/replication-applier.md rename to site/content/arangodb/3.10/develop/http-api/replication/replication-applier.md diff --git a/site/content/3.10/develop/http-api/replication/replication-dump.md b/site/content/arangodb/3.10/develop/http-api/replication/replication-dump.md similarity index 100% rename from site/content/3.10/develop/http-api/replication/replication-dump.md rename to site/content/arangodb/3.10/develop/http-api/replication/replication-dump.md diff --git a/site/content/3.10/develop/http-api/replication/replication-logger.md b/site/content/arangodb/3.10/develop/http-api/replication/replication-logger.md similarity index 100% rename from site/content/3.10/develop/http-api/replication/replication-logger.md rename to site/content/arangodb/3.10/develop/http-api/replication/replication-logger.md diff --git a/site/content/3.10/develop/http-api/replication/write-ahead-log.md b/site/content/arangodb/3.10/develop/http-api/replication/write-ahead-log.md similarity index 100% rename from site/content/3.10/develop/http-api/replication/write-ahead-log.md rename to site/content/arangodb/3.10/develop/http-api/replication/write-ahead-log.md diff --git a/site/content/3.10/develop/http-api/security.md b/site/content/arangodb/3.10/develop/http-api/security.md similarity index 100% rename from site/content/3.10/develop/http-api/security.md rename to site/content/arangodb/3.10/develop/http-api/security.md diff --git a/site/content/3.10/develop/http-api/tasks.md b/site/content/arangodb/3.10/develop/http-api/tasks.md similarity index 100% rename from site/content/3.10/develop/http-api/tasks.md rename to site/content/arangodb/3.10/develop/http-api/tasks.md diff --git a/site/content/3.10/develop/http-api/transactions/_index.md b/site/content/arangodb/3.10/develop/http-api/transactions/_index.md similarity index 100% rename from site/content/3.10/develop/http-api/transactions/_index.md rename to site/content/arangodb/3.10/develop/http-api/transactions/_index.md diff --git a/site/content/3.10/develop/http-api/transactions/javascript-transactions.md b/site/content/arangodb/3.10/develop/http-api/transactions/javascript-transactions.md similarity index 100% rename from site/content/3.10/develop/http-api/transactions/javascript-transactions.md rename to site/content/arangodb/3.10/develop/http-api/transactions/javascript-transactions.md diff --git a/site/content/3.10/develop/http-api/transactions/stream-transactions.md b/site/content/arangodb/3.10/develop/http-api/transactions/stream-transactions.md similarity index 100% rename from site/content/3.10/develop/http-api/transactions/stream-transactions.md rename to site/content/arangodb/3.10/develop/http-api/transactions/stream-transactions.md diff --git a/site/content/3.10/develop/http-api/users.md b/site/content/arangodb/3.10/develop/http-api/users.md similarity index 100% rename from site/content/3.10/develop/http-api/users.md rename to site/content/arangodb/3.10/develop/http-api/users.md diff --git a/site/content/3.10/develop/http-api/views/_index.md b/site/content/arangodb/3.10/develop/http-api/views/_index.md similarity index 100% rename from site/content/3.10/develop/http-api/views/_index.md rename to site/content/arangodb/3.10/develop/http-api/views/_index.md diff --git a/site/content/3.10/develop/http-api/views/arangosearch-views.md b/site/content/arangodb/3.10/develop/http-api/views/arangosearch-views.md similarity index 100% rename from site/content/3.10/develop/http-api/views/arangosearch-views.md rename to site/content/arangodb/3.10/develop/http-api/views/arangosearch-views.md diff --git a/site/content/3.10/develop/http-api/views/search-alias-views.md b/site/content/arangodb/3.10/develop/http-api/views/search-alias-views.md similarity index 100% rename from site/content/3.10/develop/http-api/views/search-alias-views.md rename to site/content/arangodb/3.10/develop/http-api/views/search-alias-views.md diff --git a/site/content/3.10/develop/integrations/_index.md b/site/content/arangodb/3.10/develop/integrations/_index.md similarity index 100% rename from site/content/3.10/develop/integrations/_index.md rename to site/content/arangodb/3.10/develop/integrations/_index.md diff --git a/site/content/3.10/develop/integrations/arangodb-datasource-for-apache-spark.md b/site/content/arangodb/3.10/develop/integrations/arangodb-datasource-for-apache-spark.md similarity index 99% rename from site/content/3.10/develop/integrations/arangodb-datasource-for-apache-spark.md rename to site/content/arangodb/3.10/develop/integrations/arangodb-datasource-for-apache-spark.md index 6cb6217cb0..031f1b8c06 100644 --- a/site/content/3.10/develop/integrations/arangodb-datasource-for-apache-spark.md +++ b/site/content/arangodb/3.10/develop/integrations/arangodb-datasource-for-apache-spark.md @@ -324,7 +324,7 @@ The following Spark SQL data types (subtypes of `org.apache.spark.sql.types.Filt - `MapType` (only with key type `StringType`) - `StructType` -## Connect to the ArangoGraph Insights Platform +## Connect to the Arango Managed Platform (AMP) To connect to SSL secured deployments using X.509 Base64 encoded CA certificate (ArangoGraph): diff --git a/site/content/3.10/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md b/site/content/arangodb/3.10/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md similarity index 100% rename from site/content/3.10/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md rename to site/content/arangodb/3.10/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md diff --git a/site/content/3.10/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md b/site/content/arangodb/3.10/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md similarity index 100% rename from site/content/3.10/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md rename to site/content/arangodb/3.10/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md diff --git a/site/content/3.10/develop/integrations/spring-boot-arangodb.md b/site/content/arangodb/3.10/develop/integrations/spring-boot-arangodb.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-boot-arangodb.md rename to site/content/arangodb/3.10/develop/integrations/spring-boot-arangodb.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/_index.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/_index.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/_index.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/_index.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/migration.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/migration.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/migration.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/migration.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/_index.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/_index.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/_index.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/_index.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/template.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/template.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-3/template.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/template.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/_index.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/_index.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/_index.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/_index.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md diff --git a/site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/template.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/template.md similarity index 100% rename from site/content/3.10/develop/integrations/spring-data-arangodb/reference-version-4/template.md rename to site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-4/template.md diff --git a/site/content/3.10/develop/javascript-api/@arangodb/_index.md b/site/content/arangodb/3.10/develop/javascript-api/@arangodb/_index.md similarity index 100% rename from site/content/3.10/develop/javascript-api/@arangodb/_index.md rename to site/content/arangodb/3.10/develop/javascript-api/@arangodb/_index.md diff --git a/site/content/3.10/develop/javascript-api/@arangodb/collection-object.md b/site/content/arangodb/3.10/develop/javascript-api/@arangodb/collection-object.md similarity index 100% rename from site/content/3.10/develop/javascript-api/@arangodb/collection-object.md rename to site/content/arangodb/3.10/develop/javascript-api/@arangodb/collection-object.md diff --git a/site/content/3.10/develop/javascript-api/@arangodb/cursor-object.md b/site/content/arangodb/3.10/develop/javascript-api/@arangodb/cursor-object.md similarity index 100% rename from site/content/3.10/develop/javascript-api/@arangodb/cursor-object.md rename to site/content/arangodb/3.10/develop/javascript-api/@arangodb/cursor-object.md diff --git a/site/content/3.10/develop/javascript-api/@arangodb/db-object.md b/site/content/arangodb/3.10/develop/javascript-api/@arangodb/db-object.md similarity index 100% rename from site/content/3.10/develop/javascript-api/@arangodb/db-object.md rename to site/content/arangodb/3.10/develop/javascript-api/@arangodb/db-object.md diff --git a/site/content/3.10/develop/javascript-api/@arangodb/view-object.md b/site/content/arangodb/3.10/develop/javascript-api/@arangodb/view-object.md similarity index 100% rename from site/content/3.10/develop/javascript-api/@arangodb/view-object.md rename to site/content/arangodb/3.10/develop/javascript-api/@arangodb/view-object.md diff --git a/site/content/3.10/develop/javascript-api/_index.md b/site/content/arangodb/3.10/develop/javascript-api/_index.md similarity index 100% rename from site/content/3.10/develop/javascript-api/_index.md rename to site/content/arangodb/3.10/develop/javascript-api/_index.md diff --git a/site/content/3.10/develop/javascript-api/actions.md b/site/content/arangodb/3.10/develop/javascript-api/actions.md similarity index 100% rename from site/content/3.10/develop/javascript-api/actions.md rename to site/content/arangodb/3.10/develop/javascript-api/actions.md diff --git a/site/content/3.10/develop/javascript-api/analyzers.md b/site/content/arangodb/3.10/develop/javascript-api/analyzers.md similarity index 100% rename from site/content/3.10/develop/javascript-api/analyzers.md rename to site/content/arangodb/3.10/develop/javascript-api/analyzers.md diff --git a/site/content/3.10/develop/javascript-api/aql-queries.md b/site/content/arangodb/3.10/develop/javascript-api/aql-queries.md similarity index 100% rename from site/content/3.10/develop/javascript-api/aql-queries.md rename to site/content/arangodb/3.10/develop/javascript-api/aql-queries.md diff --git a/site/content/3.10/develop/javascript-api/console.md b/site/content/arangodb/3.10/develop/javascript-api/console.md similarity index 100% rename from site/content/3.10/develop/javascript-api/console.md rename to site/content/arangodb/3.10/develop/javascript-api/console.md diff --git a/site/content/3.10/develop/javascript-api/crypto.md b/site/content/arangodb/3.10/develop/javascript-api/crypto.md similarity index 100% rename from site/content/3.10/develop/javascript-api/crypto.md rename to site/content/arangodb/3.10/develop/javascript-api/crypto.md diff --git a/site/content/3.10/develop/javascript-api/fs.md b/site/content/arangodb/3.10/develop/javascript-api/fs.md similarity index 100% rename from site/content/3.10/develop/javascript-api/fs.md rename to site/content/arangodb/3.10/develop/javascript-api/fs.md diff --git a/site/content/3.10/develop/javascript-api/request.md b/site/content/arangodb/3.10/develop/javascript-api/request.md similarity index 100% rename from site/content/3.10/develop/javascript-api/request.md rename to site/content/arangodb/3.10/develop/javascript-api/request.md diff --git a/site/content/3.10/develop/javascript-api/tasks.md b/site/content/arangodb/3.10/develop/javascript-api/tasks.md similarity index 100% rename from site/content/3.10/develop/javascript-api/tasks.md rename to site/content/arangodb/3.10/develop/javascript-api/tasks.md diff --git a/site/content/3.10/develop/operational-factors.md b/site/content/arangodb/3.10/develop/operational-factors.md similarity index 100% rename from site/content/3.10/develop/operational-factors.md rename to site/content/arangodb/3.10/develop/operational-factors.md diff --git a/site/content/3.10/develop/satellitecollections.md b/site/content/arangodb/3.10/develop/satellitecollections.md similarity index 100% rename from site/content/3.10/develop/satellitecollections.md rename to site/content/arangodb/3.10/develop/satellitecollections.md diff --git a/site/content/3.10/develop/smartjoins.md b/site/content/arangodb/3.10/develop/smartjoins.md similarity index 100% rename from site/content/3.10/develop/smartjoins.md rename to site/content/arangodb/3.10/develop/smartjoins.md diff --git a/site/content/3.10/develop/transactions/_index.md b/site/content/arangodb/3.10/develop/transactions/_index.md similarity index 100% rename from site/content/3.10/develop/transactions/_index.md rename to site/content/arangodb/3.10/develop/transactions/_index.md diff --git a/site/content/3.10/develop/transactions/durability.md b/site/content/arangodb/3.10/develop/transactions/durability.md similarity index 100% rename from site/content/3.10/develop/transactions/durability.md rename to site/content/arangodb/3.10/develop/transactions/durability.md diff --git a/site/content/3.10/develop/transactions/javascript-transactions.md b/site/content/arangodb/3.10/develop/transactions/javascript-transactions.md similarity index 100% rename from site/content/3.10/develop/transactions/javascript-transactions.md rename to site/content/arangodb/3.10/develop/transactions/javascript-transactions.md diff --git a/site/content/3.10/develop/transactions/limitations.md b/site/content/arangodb/3.10/develop/transactions/limitations.md similarity index 100% rename from site/content/3.10/develop/transactions/limitations.md rename to site/content/arangodb/3.10/develop/transactions/limitations.md diff --git a/site/content/3.10/develop/transactions/locking-and-isolation.md b/site/content/arangodb/3.10/develop/transactions/locking-and-isolation.md similarity index 100% rename from site/content/3.10/develop/transactions/locking-and-isolation.md rename to site/content/arangodb/3.10/develop/transactions/locking-and-isolation.md diff --git a/site/content/3.10/develop/transactions/stream-transactions.md b/site/content/arangodb/3.10/develop/transactions/stream-transactions.md similarity index 100% rename from site/content/3.10/develop/transactions/stream-transactions.md rename to site/content/arangodb/3.10/develop/transactions/stream-transactions.md diff --git a/site/content/3.10/get-started/_index.md b/site/content/arangodb/3.10/get-started/_index.md similarity index 100% rename from site/content/3.10/get-started/_index.md rename to site/content/arangodb/3.10/get-started/_index.md diff --git a/site/content/3.10/get-started/how-to-interact-with-arangodb.md b/site/content/arangodb/3.10/get-started/how-to-interact-with-arangodb.md similarity index 100% rename from site/content/3.10/get-started/how-to-interact-with-arangodb.md rename to site/content/arangodb/3.10/get-started/how-to-interact-with-arangodb.md diff --git a/site/content/3.10/get-started/on-premises-installation.md b/site/content/arangodb/3.10/get-started/on-premises-installation.md similarity index 94% rename from site/content/3.10/get-started/on-premises-installation.md rename to site/content/arangodb/3.10/get-started/on-premises-installation.md index 5dda1d48f9..df93e81006 100644 --- a/site/content/3.10/get-started/on-premises-installation.md +++ b/site/content/arangodb/3.10/get-started/on-premises-installation.md @@ -33,16 +33,16 @@ Depending on the installation method used, the installation process either prompted for the root password or the default root password is empty (see [Securing the installation](.#securing-the-installation)). -![Web Interface Login Form](../../images/loginView.png) +![Web Interface Login Form](../../../../images/loginView.png) Next you will be asked which database to use. Every server instance comes with a `_system` database. Select this database to continue. -![select database](../../images/selectDBView.png) +![select database](../../../../images/selectDBView.png) You should then be presented the dashboard with server statistics like this: -![Web Interface Dashboard Request Statistics](../../images/dashboardView.png) +![Web Interface Dashboard Request Statistics](../../../../images/dashboardView.png) For a more detailed description of the interface, see [Web Interface](../components/web-interface/_index.md). --> diff --git a/site/content/3.10/get-started/set-up-a-cloud-instance.md b/site/content/arangodb/3.10/get-started/set-up-a-cloud-instance.md similarity index 70% rename from site/content/3.10/get-started/set-up-a-cloud-instance.md rename to site/content/arangodb/3.10/get-started/set-up-a-cloud-instance.md index 1973721015..2fbc242b94 100644 --- a/site/content/3.10/get-started/set-up-a-cloud-instance.md +++ b/site/content/arangodb/3.10/get-started/set-up-a-cloud-instance.md @@ -6,10 +6,10 @@ description: >- This quick start guide covers the basics from creating an ArangoGraph account to setting up and accessing your first ArangoGraph deployment --- -For general information about the ArangoGraph Insights Platform, see +For general information about the Arango Managed Platform (AMP), see [dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -For guides and reference documentation, see the [ArangoGraph](../arangograph/_index.md) documentation. +For guides and reference documentation, see the [ArangoGraph](../../../amp/_index.md) documentation. ## Prerequisites @@ -33,7 +33,7 @@ used for multiple accounts. 2. Click the __Start Free__ button or click the __Sign Up__ link in the top right corner. - ![ArangoGraph Homepage](../../images/arangograph-homepage.png) + ![ArangoGraph Homepage](../../../images/arangograph-homepage.png) 3. Review the terms & conditions and privacy policy and click __I accept__. 4. Select the type of sign up you would like to use (GitHub, Google, or @@ -42,11 +42,11 @@ used for multiple accounts. - For the email address option, type your desired email address in the email field and type a strong password in the password field. - {{< image src="../../images/arangograph-create-account.png" alt="ArangoGraph Sign up" style="max-height: 50vh">}} + {{< image src="../../../images/arangograph-create-account.png" alt="ArangoGraph Sign up" style="max-height: 50vh">}} Click the __Sign up__ button. You will receive a verification email. In that mail, click the __Verify my email address__ link or button. - It opens a page in the ArangoGraph Insights Platform that says __Welcome back!__ + It opens a page in the Arango Managed Platform (AMP) that says __Welcome back!__ 5. Click the __Log in__ button to continue and login. 6. If you signed up with an email address of a public email service provider (e.g. Hotmail), a form appears asking for your mobile phone number. Enter the country code @@ -67,25 +67,25 @@ used for multiple accounts. provider and region. Pick one and click __Create deployment__. You can also select your intended use-case. - ![ArangoGraph Dashboard](../../images/arangograph-dashboard-free-tier.png) + ![ArangoGraph Dashboard](../../../images/arangograph-dashboard-free-tier.png) - You can also [create a deployment](../arangograph/deployments/_index.md#how-to-create-a-new-deployment) + You can also [create a deployment](../../../amp/deployments/_index.md#how-to-create-a-new-deployment) manually, if you want fine-grained configuration options. 2. The new deployment is displayed in the list of deployments for the respective project (here: _Avocado_). - ![ArangoGraph Deployments Bootstrapping](../../images/arangograph-deployments-bootstrapping.png) + ![ArangoGraph Deployments Bootstrapping](../../../images/arangograph-deployments-bootstrapping.png) It takes a couple of minutes before the deployment can be used. The status is changed from __Bootstrapping__ to __OK__ eventually and you also receive an email when it is ready. - {{< image src="../../images/arangograph-deployment-ready-email.png" alt="ArangoGraph Deployment Ready Email" style="max-height: 50vh">}} + {{< image src="../../../images/arangograph-deployment-ready-email.png" alt="ArangoGraph Deployment Ready Email" style="max-height: 50vh">}} 3. Click the name of the deployment (or the __Open deployment details__ link in the email) to view the deployment details. - ![ArangoGraph Deployment Ready](../../images/arangograph-deployment-ready.png) + ![ArangoGraph Deployment Ready](../../../images/arangograph-deployment-ready.png) 4. Click the __Open database UI__ button to open the ArangoDB web interface. @@ -96,23 +96,23 @@ used for multiple accounts. Click __Guide__ for instructions on how to access and run queries against this data. - ![ArangoGraph Deployment Examples](../../images/arangograph-deployment-examples.png) + ![ArangoGraph Deployment Examples](../../../images/arangograph-deployment-examples.png) - ![ArangoGraph Deployment Examples IMDB Guide](../../images/arangograph-deployment-examples-imdb-guide.png) + ![ArangoGraph Deployment Examples IMDB Guide](../../../images/arangograph-deployment-examples-imdb-guide.png) ## General Hierarchy -The ArangoGraph Insights Platform supports multi-tenant setups via organizations. +The Arango Managed Platform (AMP) supports multi-tenant setups via organizations. You can create your own organization(s) and invite collaborators or join existing ones via invites. Your organization contains projects. Your projects hold your deployments. -- [**Organizations**](../arangograph/organizations/_index.md) +- [**Organizations**](../../../amp/organizations/_index.md) represent (commercial) entities such as companies. You can be part of multiple organizations with a single user account. - - [**Projects**](../arangograph/projects.md) + - [**Projects**](../../../amp/projects.md) represent organizational units such as teams or applications. - - [**Deployments**](../arangograph/deployments/_index.md) + - [**Deployments**](../../../amp/deployments/_index.md) are the actual instances of ArangoDB clusters. When you sign up for ArangoGraph, an organization and a default project are @@ -125,32 +125,32 @@ question mark to bring up the help menu and choose __Start tour__. This guided tour walks you through the creation of a deployment and shows you how to load example datasets and manage projects and deployments. -![Start tour in menu](../../images/arangograph-tour-start.png) +![Start tour in menu](../../../images/arangograph-tour-start.png) Alternatively, follow the steps of the linked guides: -- [Create a new project](../arangograph/projects.md#how-to-create-a-new-project) (optional) -- [Create a new deployment](../arangograph/deployments/_index.md#how-to-create-a-new-deployment) -- [Install a new certificate](../arangograph/security-and-access-control/x-509-certificates.md) (optional) -- [Access your deployment](../arangograph/deployments/_index.md#how-to-access-your-deployment) -- [Delete your deployment](../arangograph/deployments/_index.md#how-to-delete-a-deployment) +- [Create a new project](../../../amp/projects.md#how-to-create-a-new-project) (optional) +- [Create a new deployment](../../../../../amp/deployments/_index.md#how-to-create-a-new-deployment) +- [Install a new certificate](../../../amp/security-and-access-control/x-509-certificates.md) (optional) +- [Access your deployment](../../../amp/deployments/_index.md#how-to-access-your-deployment) +- [Delete your deployment](../../../amp/deployments/_index.md#how-to-delete-a-deployment) ## Free-to-Try vs. Paid -The ArangoGraph Insights Platform comes with a free-to-try tier that lets you test +The Arango Managed Platform (AMP) comes with a free-to-try tier that lets you test the ArangoDB Cloud for free for 14 days. It includes one project and one small deployment of 4GB, local backups, and one notebook for learning and data science. After the trial period, your deployment is automatically deleted. You can unlock all features in ArangoGraph at any time by adding your billing details and at least one payment method. See: -- [ArangoGraph Packages](../arangograph/organizations/_index.md#arangograph-packages) -- [How to add billing details to organizations](../arangograph/organizations/billing.md#how-to-add-billing-details) -- [How to add a payment method to an organization](../arangograph/organizations/billing.md#how-to-add-a-payment-method) +- [ArangoGraph Packages](../../../amp/organizations/_index.md#arangograph-packages) +- [How to add billing details to organizations](../../../amp/organizations/billing.md#how-to-add-billing-details) +- [How to add a payment method to an organization](../../../amp/organizations/billing.md#how-to-add-a-payment-method) ## Managed Cloud Service vs. On-premises Comparison: Key Differences -The ArangoGraph Insights Platform aims to make all features of the ArangoDB -[Enterprise Edition](../about-arangodb/features/enterprise-edition.md) available to you, but +The Arango Managed Platform (AMP) aims to make all features of the ArangoDB +[Enterprise Edition](../about/features/enterprise-edition.md) available to you, but there are a few key differences: - Encryption (both at rest & network traffic) is always on and cannot be diff --git a/site/content/3.10/get-started/start-using-aql.md b/site/content/arangodb/3.10/get-started/start-using-aql.md similarity index 100% rename from site/content/3.10/get-started/start-using-aql.md rename to site/content/arangodb/3.10/get-started/start-using-aql.md diff --git a/site/content/3.10/graphs/_index.md b/site/content/arangodb/3.10/graphs/_index.md similarity index 97% rename from site/content/3.10/graphs/_index.md rename to site/content/arangodb/3.10/graphs/_index.md index b22e55f098..e0f8c3da89 100644 --- a/site/content/3.10/graphs/_index.md +++ b/site/content/arangodb/3.10/graphs/_index.md @@ -17,12 +17,12 @@ relationships, flows of information, energy, and material, interactions and transactions, dependency and hierarchy, as well as similarity and relatedness of any kind. -![Node - Relation - Node](../../images/data-model-graph-relation-abstract.png) +![Node - Relation - Node](../../../images/data-model-graph-relation-abstract.png) For example, you can represent people by nodes and their friendships by relations. This lets you form a graph that is a social network in this case. -![Mary - is friend of - John](../../images/data-model-graph-relation-concrete.png) +![Mary - is friend of - John](../../../images/data-model-graph-relation-concrete.png) The specific terms to refer to nodes and relations in a graph vary depending on the field or context, but they are conceptually the same. In computer science @@ -37,7 +37,7 @@ relate to one another is a very expressive data model. It lets you represent a wide variety of information in a compact and intuitive way. It lets you model complex relationships and interactions of basically everything. -![Mary - bought - Book, is friend of - John](../../images/data-model-graph-relations.png) +![Mary - bought - Book, is friend of - John](../../../images/data-model-graph-relations.png) Graphs are commonly directed (_digraphs_), which means that each edge goes from one vertex to another vertex in a specific direction. This lets you model @@ -223,7 +223,7 @@ suboptimal query performance due to random data distribution. General graphs are the easiest way to get started, no special configuration required. {{< /tip >}} -![General Graph Random Distribution](../../images/general-graph-distribution.png) +![General Graph Random Distribution](../../../images/general-graph-distribution.png) #### When to use SmartGraphs @@ -238,7 +238,7 @@ scenarios, use SmartGraphs. Organize your data efficiently using the `smartGraphAttribute`. {{< /tip >}} -![SmartGraph Distribution](../../images/smartgraph-distribution.png) +![SmartGraph Distribution](../../../images/smartgraph-distribution.png) #### When to use EnterpriseGraphs @@ -252,7 +252,7 @@ If you need improved query execution without manual data distribution, consider using EnterpriseGraphs. {{< /tip >}} -![EnterpriseGraph Distribution](../../images/enterprisegraph-distribution.png) +![EnterpriseGraph Distribution](../../../images/enterprisegraph-distribution.png) #### When to use SatelliteGraphs @@ -339,7 +339,7 @@ with `_from` pointing to `Users/John` and `_to` pointing to attributes to qualify the relation further, like the permissions of **John** in this group, the date when John joined the group, and so on. -![User in group example](../../images/graph_user_in_group.png) +![User in group example](../../../images/graph_user_in_group.png) As a rule of thumb, if you use documents and their attributes in a sentence, nouns would typically be vertices, and the verbs the edges. diff --git a/site/content/3.10/graphs/enterprisegraphs/_index.md b/site/content/arangodb/3.10/graphs/enterprisegraphs/_index.md similarity index 100% rename from site/content/3.10/graphs/enterprisegraphs/_index.md rename to site/content/arangodb/3.10/graphs/enterprisegraphs/_index.md diff --git a/site/content/3.10/graphs/enterprisegraphs/getting-started.md b/site/content/arangodb/3.10/graphs/enterprisegraphs/getting-started.md similarity index 99% rename from site/content/3.10/graphs/enterprisegraphs/getting-started.md rename to site/content/arangodb/3.10/graphs/enterprisegraphs/getting-started.md index 1997e74ea5..3a622bbb27 100644 --- a/site/content/3.10/graphs/enterprisegraphs/getting-started.md +++ b/site/content/arangodb/3.10/graphs/enterprisegraphs/getting-started.md @@ -211,7 +211,7 @@ EnterpriseGraphs. To get started, follow the steps outlined below. 6. Click the card of the newly created graph use the functions of the Graph Viewer to visually interact with the graph and manage the graph data. -![Create EnterpriseGraph](../../../images/graphs-create-enterprise-graph-dialog.png) +![Create EnterpriseGraph](../../../../images/graphs-create-enterprise-graph-dialog.png) ## Create an EnterpriseGraph using *arangosh* diff --git a/site/content/3.10/graphs/enterprisegraphs/management.md b/site/content/arangodb/3.10/graphs/enterprisegraphs/management.md similarity index 100% rename from site/content/3.10/graphs/enterprisegraphs/management.md rename to site/content/arangodb/3.10/graphs/enterprisegraphs/management.md diff --git a/site/content/3.11/graphs/example-graphs.md b/site/content/arangodb/3.10/graphs/example-graphs.md similarity index 94% rename from site/content/3.11/graphs/example-graphs.md rename to site/content/arangodb/3.10/graphs/example-graphs.md index 300154d268..58b269cbf0 100644 --- a/site/content/3.11/graphs/example-graphs.md +++ b/site/content/arangodb/3.10/graphs/example-graphs.md @@ -26,7 +26,7 @@ for reference about how to manage graphs programmatically. The `knows` graph is a set of persons knowing each other: -![Persons relation Example Graph](../../images/knows_graph.png) +![Persons relation Example Graph](../../../images/knows_graph.png) The graph consists of a `persons` vertex collection connected via a `knows` edge collection. @@ -63,7 +63,7 @@ The `traversalGraph` has been designed to demonstrate filters in traversals. It has some labels to filter on it. The graph's vertices are in a collection called `circles`, and it has an edge collection `edges` to connect them. -![Traversal Graph](../../images/traversal_graph.png) +![Traversal Graph](../../../images/traversal_graph.png) Circles have unique numeric labels. Edges have two boolean attributes (`theFalse` always being `false`, `theTruth` always being `true`) and a label @@ -93,7 +93,7 @@ The vertices in the `kShortestPathsGraph` graph are train stations of cities in Europe and North America. The edges represent train connections between them, with the travel time for both directions as edge weight. -![Train Connection Map](../../images/train_map.png) +![Train Connection Map](../../../images/train_map.png) See the [k Shortest Paths page](../aql/graphs/k-shortest-paths.md) for query examples. @@ -118,7 +118,7 @@ The example graph consists of vertices in the `mps_verts` collection and edges in the `mps_edges` collection. It is a simple traversal graph with start node *A* and end node *C*. -![Mps Graph](../../images/mps_graph.png) +![Mps Graph](../../../images/mps_graph.png) With the [Shortest Path](../aql/graphs/shortest-path.md) algorithm, you either get the shortest path *A* - *B* - *C* or *A* - *D* - *C*. With the @@ -146,7 +146,7 @@ The `worldCountry` graph has as node structure as follows: world → continent → country → capital -![World Graph](../../images/world_graph.png) +![World Graph](../../../images/world_graph.png) In some cases, edge directions aren't forward. Therefore, it may get displayed disjunct in the graph viewer. @@ -175,7 +175,7 @@ The `social` graph is a set of persons and their relations. The graph has `female` and `male` persons as vertices in two vertex collections. The edges are their connections and stored in the `relation` edge collection. -![Social Example Graph](../../images/social_graph.png) +![Social Example Graph](../../../images/social_graph.png) Example of how to create the graph, inspect its vertices and edges, and delete it again: @@ -201,7 +201,7 @@ multiple vertex collections (`germanCity` and `frenchCity`). The edges are their interconnections in several edge collections (`frenchHighway`, `germanHighway`, `internationalHighway`). -![Cities Example Graph](../../images/cities_graph.png) +![Cities Example Graph](../../../images/cities_graph.png) Example of how to create the graph, inspect its edges and vertices, and delete it again: @@ -231,7 +231,7 @@ Also see: - [Distributed Iterative Graph Processing (Pregel)](../data-science/pregel/_index.md) - [Pregel HTTP API](../develop/http-api/pregel.md) -![Three disjoint subgraphs with 36 nodes and edges in total](../../images/connected_components.png) +![Three disjoint subgraphs with 36 nodes and edges in total](../../../images/connected_components.png) ```js --- diff --git a/site/content/3.10/graphs/general-graphs/_index.md b/site/content/arangodb/3.10/graphs/general-graphs/_index.md similarity index 98% rename from site/content/3.10/graphs/general-graphs/_index.md rename to site/content/arangodb/3.10/graphs/general-graphs/_index.md index d7c072c47e..6025339a08 100644 --- a/site/content/3.10/graphs/general-graphs/_index.md +++ b/site/content/arangodb/3.10/graphs/general-graphs/_index.md @@ -57,7 +57,7 @@ General Graphs. To get started, follow the steps outlined below. 8. Click the card of the newly created graph and use the functions of the Graph Viewer to visually interact with the graph and manage the graph data. -![Create General Graph](../../../images/Create-GeneralGraph.png) +![Create General Graph](../../../../images/Create-GeneralGraph.png) ### Create a General Graph using *arangosh* diff --git a/site/content/3.11/graphs/general-graphs/functions.md b/site/content/arangodb/3.10/graphs/general-graphs/functions.md similarity index 99% rename from site/content/3.11/graphs/general-graphs/functions.md rename to site/content/arangodb/3.10/graphs/general-graphs/functions.md index 87fb731922..c05189027d 100644 --- a/site/content/3.11/graphs/general-graphs/functions.md +++ b/site/content/arangodb/3.10/graphs/general-graphs/functions.md @@ -10,7 +10,7 @@ A lot of these accept a vertex (or edge) example as parameter as defined in the Examples explain the API using the [City Graph](../example-graphs.md#city-graph): -![Social Example Graph](../../../images/cities_graph.png) +![Social Example Graph](../../../../images/cities_graph.png) ## Definition of examples diff --git a/site/content/3.10/graphs/general-graphs/management.md b/site/content/arangodb/3.10/graphs/general-graphs/management.md similarity index 100% rename from site/content/3.10/graphs/general-graphs/management.md rename to site/content/arangodb/3.10/graphs/general-graphs/management.md diff --git a/site/content/3.10/graphs/satellitegraphs/_index.md b/site/content/arangodb/3.10/graphs/satellitegraphs/_index.md similarity index 98% rename from site/content/3.10/graphs/satellitegraphs/_index.md rename to site/content/arangodb/3.10/graphs/satellitegraphs/_index.md index 3d2c9b9a7b..9f22526ee7 100644 --- a/site/content/3.10/graphs/satellitegraphs/_index.md +++ b/site/content/arangodb/3.10/graphs/satellitegraphs/_index.md @@ -21,7 +21,7 @@ the performance of such queries. They are the natural extension of the [SatelliteCollections](../../develop/satellitecollections.md) concept to graphs. The same benefits and caveats apply. -![ArangoDB SatelliteGraphs](../../../images/SatelliteGraphs.webp) +![ArangoDB SatelliteGraphs](../../../../images/SatelliteGraphs.webp) ## Why use a SatelliteGraph? diff --git a/site/content/3.10/graphs/satellitegraphs/details.md b/site/content/arangodb/3.10/graphs/satellitegraphs/details.md similarity index 100% rename from site/content/3.10/graphs/satellitegraphs/details.md rename to site/content/arangodb/3.10/graphs/satellitegraphs/details.md diff --git a/site/content/3.10/graphs/satellitegraphs/management.md b/site/content/arangodb/3.10/graphs/satellitegraphs/management.md similarity index 100% rename from site/content/3.10/graphs/satellitegraphs/management.md rename to site/content/arangodb/3.10/graphs/satellitegraphs/management.md diff --git a/site/content/3.10/graphs/smartgraphs/_index.md b/site/content/arangodb/3.10/graphs/smartgraphs/_index.md similarity index 94% rename from site/content/3.10/graphs/smartgraphs/_index.md rename to site/content/arangodb/3.10/graphs/smartgraphs/_index.md index 3d15be6c58..a9a166b0fe 100644 --- a/site/content/3.10/graphs/smartgraphs/_index.md +++ b/site/content/arangodb/3.10/graphs/smartgraphs/_index.md @@ -62,7 +62,7 @@ cluster for both scenarios. Let's take a closer look at it. The natural distribution of data for graphs that handle large datasets involves a series of highly interconnected nodes with many edges running between them. -![Random data distribution](../../../images/SmartGraphs_random_distribution.png) +![Random data distribution](../../../../images/SmartGraphs_random_distribution.png) _The orange line indicates an example graph traversal. Notice how it touches nodes on every server._ @@ -88,7 +88,7 @@ connecting vertices with identical `smartGraphAttribute` values are stored on this machine as well. Sharding with this attribute means that the relevant data is now co-located on servers, whenever possible. -![SmartGraphs data distribution](../../../images/SmartGraphs_distribution.png) +![SmartGraphs data distribution](../../../../images/SmartGraphs_distribution.png) _The outcome of moving the data like this is that you retain the scalability as well as the performance of graph traversals in ArangoDB._ @@ -103,7 +103,7 @@ and (k-)shortest path(s) query can partially be executed locally on each DB-Serv This means a larger part of the query can be executed fully local whenever data from the SatelliteCollections is required. -![SmartGraphs with SatelliteCollections](../../../images/SmartGraphs-using-SatelliteCollections.png) +![SmartGraphs with SatelliteCollections](../../../../images/SmartGraphs-using-SatelliteCollections.png) ## Disjoint SmartGraphs @@ -112,7 +112,7 @@ large forest of graphs, when you have clearly separated subgraphs in your graph dataset. Disjoint SmartGraphs enable the automatic sharding of these subgraphs and prohibit edges connecting them. -![Disjoint SmartGraphs](../../../images/SmartGraphs-Disjoint.png) +![Disjoint SmartGraphs](../../../../images/SmartGraphs-Disjoint.png) _This ensures that graph traversals, shortest path, and k-shortest-paths queries can be executed locally on a DB-Server, achieving improved performance for diff --git a/site/content/3.10/graphs/smartgraphs/getting-started.md b/site/content/arangodb/3.10/graphs/smartgraphs/getting-started.md similarity index 99% rename from site/content/3.10/graphs/smartgraphs/getting-started.md rename to site/content/arangodb/3.10/graphs/smartgraphs/getting-started.md index 7a41c973bf..cae518afd9 100644 --- a/site/content/3.10/graphs/smartgraphs/getting-started.md +++ b/site/content/arangodb/3.10/graphs/smartgraphs/getting-started.md @@ -63,7 +63,7 @@ SmartGraphs. To get started, follow the steps outlined below. 7. Click the card of the newly created graph and use the functions of the Graph Viewer to visually interact with the graph and manage the graph data. -![Create SmartGraph](../../../images/Create-SmartGraph.png) +![Create SmartGraph](../../../../images/Create-SmartGraph.png) ## Create a SmartGraph using *arangosh* diff --git a/site/content/3.10/graphs/smartgraphs/management.md b/site/content/arangodb/3.10/graphs/smartgraphs/management.md similarity index 100% rename from site/content/3.10/graphs/smartgraphs/management.md rename to site/content/arangodb/3.10/graphs/smartgraphs/management.md diff --git a/site/content/3.10/graphs/smartgraphs/testing-graphs-on-single-server.md b/site/content/arangodb/3.10/graphs/smartgraphs/testing-graphs-on-single-server.md similarity index 100% rename from site/content/3.10/graphs/smartgraphs/testing-graphs-on-single-server.md rename to site/content/arangodb/3.10/graphs/smartgraphs/testing-graphs-on-single-server.md diff --git a/site/content/3.10/graphs/working-with-edges.md b/site/content/arangodb/3.10/graphs/working-with-edges.md similarity index 100% rename from site/content/3.10/graphs/working-with-edges.md rename to site/content/arangodb/3.10/graphs/working-with-edges.md diff --git a/site/content/3.10/index-and-search/_index.md b/site/content/arangodb/3.10/index-and-search/_index.md similarity index 100% rename from site/content/3.10/index-and-search/_index.md rename to site/content/arangodb/3.10/index-and-search/_index.md diff --git a/site/content/3.10/index-and-search/analyzers.md b/site/content/arangodb/3.10/index-and-search/analyzers.md similarity index 100% rename from site/content/3.10/index-and-search/analyzers.md rename to site/content/arangodb/3.10/index-and-search/analyzers.md diff --git a/site/content/3.10/index-and-search/arangosearch/_index.md b/site/content/arangodb/3.10/index-and-search/arangosearch/_index.md similarity index 99% rename from site/content/3.10/index-and-search/arangosearch/_index.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/_index.md index 795de06af3..c6c092b8a0 100644 --- a/site/content/3.10/index-and-search/arangosearch/_index.md +++ b/site/content/arangodb/3.10/index-and-search/arangosearch/_index.md @@ -65,7 +65,7 @@ Search results can be sorted by their similarity ranking to return the best matches first using popular scoring algorithms (Okapi BM25, TF-IDF), user-defined relevance boosting and dynamic score calculation. -![Conceptual model of ArangoSearch interacting with Collections and Analyzers](../../../images/arangosearch.png) +![Conceptual model of ArangoSearch interacting with Collections and Analyzers](../../../../images/arangosearch.png) Views can be managed in the web interface, via an [HTTP API](../../develop/http-api/views/_index.md) and through a [JavaScript API](../../develop/javascript-api/@arangodb/db-object.md#views). diff --git a/site/content/3.10/index-and-search/arangosearch/arangosearch-views-reference.md b/site/content/arangodb/3.10/index-and-search/arangosearch/arangosearch-views-reference.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/arangosearch-views-reference.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/arangosearch-views-reference.md diff --git a/site/content/3.10/index-and-search/arangosearch/case-sensitivity-and-diacritics.md b/site/content/arangodb/3.10/index-and-search/arangosearch/case-sensitivity-and-diacritics.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/case-sensitivity-and-diacritics.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/case-sensitivity-and-diacritics.md diff --git a/site/content/3.10/index-and-search/arangosearch/exact-value-matching.md b/site/content/arangodb/3.10/index-and-search/arangosearch/exact-value-matching.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/exact-value-matching.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/exact-value-matching.md diff --git a/site/content/3.10/index-and-search/arangosearch/example-datasets.md b/site/content/arangodb/3.10/index-and-search/arangosearch/example-datasets.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/example-datasets.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/example-datasets.md diff --git a/site/content/3.10/index-and-search/arangosearch/faceted-search.md b/site/content/arangodb/3.10/index-and-search/arangosearch/faceted-search.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/faceted-search.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/faceted-search.md diff --git a/site/content/3.10/index-and-search/arangosearch/full-text-token-search.md b/site/content/arangodb/3.10/index-and-search/arangosearch/full-text-token-search.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/full-text-token-search.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/full-text-token-search.md diff --git a/site/content/3.10/index-and-search/arangosearch/fuzzy-search.md b/site/content/arangodb/3.10/index-and-search/arangosearch/fuzzy-search.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/fuzzy-search.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/fuzzy-search.md diff --git a/site/content/3.10/index-and-search/arangosearch/geospatial-search.md b/site/content/arangodb/3.10/index-and-search/arangosearch/geospatial-search.md similarity index 99% rename from site/content/3.10/index-and-search/arangosearch/geospatial-search.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/geospatial-search.md index 996e1f9eb0..d8df3fc973 100644 --- a/site/content/3.10/index-and-search/arangosearch/geospatial-search.md +++ b/site/content/arangodb/3.10/index-and-search/arangosearch/geospatial-search.md @@ -297,7 +297,7 @@ FOR result IN PUSH( {{< /tabs >}} -![ArangoSearch geospatial query for points in a polygon](../../../images/arangosearch-geo-points-in-polygon.png) +![ArangoSearch geospatial query for points in a polygon](../../../../images/arangosearch-geo-points-in-polygon.png) You do not have to look up the polygon, you can also provide one inline. It is also not necessary to return the polygon, you can return the matches only: @@ -559,7 +559,7 @@ FOR result IN PUSH( {{< /tabs >}} -![ArangoSearch geosptial query for polygons in a polygon](../../../images/arangosearch-geo-polygons-in-polygon.png) +![ArangoSearch geosptial query for polygons in a polygon](../../../../images/arangosearch-geo-polygons-in-polygon.png) Searching for geo features in a rectangle is something you can use together with an interactive map that the user can select the area of interest with. @@ -629,4 +629,4 @@ FOR result IN PUSH( {{< /tabs >}} -![ArangoSearch geospatial query for polygons intersecting a polygon](../../../images/arangosearch-geo-polygons-intersecting-polygon.png) +![ArangoSearch geospatial query for polygons intersecting a polygon](../../../../images/arangosearch-geo-polygons-intersecting-polygon.png) diff --git a/site/content/3.10/index-and-search/arangosearch/nested-search.md b/site/content/arangodb/3.10/index-and-search/arangosearch/nested-search.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/nested-search.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/nested-search.md diff --git a/site/content/3.10/index-and-search/arangosearch/performance.md b/site/content/arangodb/3.10/index-and-search/arangosearch/performance.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/performance.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/performance.md diff --git a/site/content/3.10/index-and-search/arangosearch/phrase-and-proximity-search.md b/site/content/arangodb/3.10/index-and-search/arangosearch/phrase-and-proximity-search.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/phrase-and-proximity-search.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/phrase-and-proximity-search.md diff --git a/site/content/3.10/index-and-search/arangosearch/prefix-matching.md b/site/content/arangodb/3.10/index-and-search/arangosearch/prefix-matching.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/prefix-matching.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/prefix-matching.md diff --git a/site/content/3.10/index-and-search/arangosearch/range-queries.md b/site/content/arangodb/3.10/index-and-search/arangosearch/range-queries.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/range-queries.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/range-queries.md diff --git a/site/content/3.10/index-and-search/arangosearch/ranking.md b/site/content/arangodb/3.10/index-and-search/arangosearch/ranking.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/ranking.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/ranking.md diff --git a/site/content/3.10/index-and-search/arangosearch/search-alias-views-reference.md b/site/content/arangodb/3.10/index-and-search/arangosearch/search-alias-views-reference.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/search-alias-views-reference.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/search-alias-views-reference.md diff --git a/site/content/3.10/index-and-search/arangosearch/search-highlighting.md b/site/content/arangodb/3.10/index-and-search/arangosearch/search-highlighting.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/search-highlighting.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/search-highlighting.md diff --git a/site/content/3.10/index-and-search/arangosearch/wildcard-search.md b/site/content/arangodb/3.10/index-and-search/arangosearch/wildcard-search.md similarity index 100% rename from site/content/3.10/index-and-search/arangosearch/wildcard-search.md rename to site/content/arangodb/3.10/index-and-search/arangosearch/wildcard-search.md diff --git a/site/content/3.10/index-and-search/indexing/_index.md b/site/content/arangodb/3.10/index-and-search/indexing/_index.md similarity index 100% rename from site/content/3.10/index-and-search/indexing/_index.md rename to site/content/arangodb/3.10/index-and-search/indexing/_index.md diff --git a/site/content/3.10/index-and-search/indexing/basics.md b/site/content/arangodb/3.10/index-and-search/indexing/basics.md similarity index 100% rename from site/content/3.10/index-and-search/indexing/basics.md rename to site/content/arangodb/3.10/index-and-search/indexing/basics.md diff --git a/site/content/3.10/index-and-search/indexing/index-utilization.md b/site/content/arangodb/3.10/index-and-search/indexing/index-utilization.md similarity index 100% rename from site/content/3.10/index-and-search/indexing/index-utilization.md rename to site/content/arangodb/3.10/index-and-search/indexing/index-utilization.md diff --git a/site/content/3.10/index-and-search/indexing/which-index-to-use-when.md b/site/content/arangodb/3.10/index-and-search/indexing/which-index-to-use-when.md similarity index 100% rename from site/content/3.10/index-and-search/indexing/which-index-to-use-when.md rename to site/content/arangodb/3.10/index-and-search/indexing/which-index-to-use-when.md diff --git a/site/content/3.10/index-and-search/indexing/working-with-indexes/_index.md b/site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/_index.md similarity index 100% rename from site/content/3.10/index-and-search/indexing/working-with-indexes/_index.md rename to site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/_index.md diff --git a/site/content/3.10/index-and-search/indexing/working-with-indexes/fulltext-indexes.md b/site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/fulltext-indexes.md similarity index 100% rename from site/content/3.10/index-and-search/indexing/working-with-indexes/fulltext-indexes.md rename to site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/fulltext-indexes.md diff --git a/site/content/3.10/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md b/site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md similarity index 100% rename from site/content/3.10/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md rename to site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md diff --git a/site/content/3.10/index-and-search/indexing/working-with-indexes/inverted-indexes.md b/site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/inverted-indexes.md similarity index 100% rename from site/content/3.10/index-and-search/indexing/working-with-indexes/inverted-indexes.md rename to site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/inverted-indexes.md diff --git a/site/content/3.10/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md b/site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md similarity index 100% rename from site/content/3.10/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md rename to site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md diff --git a/site/content/3.10/index-and-search/indexing/working-with-indexes/persistent-indexes.md b/site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/persistent-indexes.md similarity index 100% rename from site/content/3.10/index-and-search/indexing/working-with-indexes/persistent-indexes.md rename to site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/persistent-indexes.md diff --git a/site/content/3.10/index-and-search/indexing/working-with-indexes/ttl-indexes.md b/site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/ttl-indexes.md similarity index 100% rename from site/content/3.10/index-and-search/indexing/working-with-indexes/ttl-indexes.md rename to site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/ttl-indexes.md diff --git a/site/content/3.10/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md b/site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md similarity index 100% rename from site/content/3.10/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md rename to site/content/arangodb/3.10/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md diff --git a/site/content/3.10/operations/_index.md b/site/content/arangodb/3.10/operations/_index.md similarity index 100% rename from site/content/3.10/operations/_index.md rename to site/content/arangodb/3.10/operations/_index.md diff --git a/site/content/3.10/operations/administration/_index.md b/site/content/arangodb/3.10/operations/administration/_index.md similarity index 100% rename from site/content/3.10/operations/administration/_index.md rename to site/content/arangodb/3.10/operations/administration/_index.md diff --git a/site/content/3.10/operations/administration/arangodb-starter/_index.md b/site/content/arangodb/3.10/operations/administration/arangodb-starter/_index.md similarity index 100% rename from site/content/3.10/operations/administration/arangodb-starter/_index.md rename to site/content/arangodb/3.10/operations/administration/arangodb-starter/_index.md diff --git a/site/content/3.10/operations/administration/arangodb-starter/recovery-procedure.md b/site/content/arangodb/3.10/operations/administration/arangodb-starter/recovery-procedure.md similarity index 100% rename from site/content/3.10/operations/administration/arangodb-starter/recovery-procedure.md rename to site/content/arangodb/3.10/operations/administration/arangodb-starter/recovery-procedure.md diff --git a/site/content/3.10/operations/administration/arangodb-starter/removal-procedure.md b/site/content/arangodb/3.10/operations/administration/arangodb-starter/removal-procedure.md similarity index 100% rename from site/content/3.10/operations/administration/arangodb-starter/removal-procedure.md rename to site/content/arangodb/3.10/operations/administration/arangodb-starter/removal-procedure.md diff --git a/site/content/3.10/operations/administration/configuration.md b/site/content/arangodb/3.10/operations/administration/configuration.md similarity index 100% rename from site/content/3.10/operations/administration/configuration.md rename to site/content/arangodb/3.10/operations/administration/configuration.md diff --git a/site/content/3.10/operations/administration/import-and-export.md b/site/content/arangodb/3.10/operations/administration/import-and-export.md similarity index 100% rename from site/content/3.10/operations/administration/import-and-export.md rename to site/content/arangodb/3.10/operations/administration/import-and-export.md diff --git a/site/content/3.10/operations/administration/license-management.md b/site/content/arangodb/3.10/operations/administration/license-management.md similarity index 100% rename from site/content/3.10/operations/administration/license-management.md rename to site/content/arangodb/3.10/operations/administration/license-management.md diff --git a/site/content/3.10/operations/administration/log-levels.md b/site/content/arangodb/3.10/operations/administration/log-levels.md similarity index 100% rename from site/content/3.10/operations/administration/log-levels.md rename to site/content/arangodb/3.10/operations/administration/log-levels.md diff --git a/site/content/3.10/operations/administration/reduce-memory-footprint.md b/site/content/arangodb/3.10/operations/administration/reduce-memory-footprint.md similarity index 99% rename from site/content/3.10/operations/administration/reduce-memory-footprint.md rename to site/content/arangodb/3.10/operations/administration/reduce-memory-footprint.md index d38c42a797..a43aea092f 100644 --- a/site/content/3.10/operations/administration/reduce-memory-footprint.md +++ b/site/content/arangodb/3.10/operations/administration/reduce-memory-footprint.md @@ -674,7 +674,7 @@ otherwise. ## Testing the Effects of Reduced I/O Buffers -![Performance Graph](../../../images/performance_graph.png) +![Performance Graph](../../../../images/performance_graph.png) - 15:50 – Start bigger import - 16:00 – Start writing documents of ~60 KB size one at a time diff --git a/site/content/3.10/operations/administration/user-management/_index.md b/site/content/arangodb/3.10/operations/administration/user-management/_index.md similarity index 100% rename from site/content/3.10/operations/administration/user-management/_index.md rename to site/content/arangodb/3.10/operations/administration/user-management/_index.md diff --git a/site/content/3.10/operations/administration/user-management/in-arangosh.md b/site/content/arangodb/3.10/operations/administration/user-management/in-arangosh.md similarity index 100% rename from site/content/3.10/operations/administration/user-management/in-arangosh.md rename to site/content/arangodb/3.10/operations/administration/user-management/in-arangosh.md diff --git a/site/content/3.10/operations/backup-and-restore.md b/site/content/arangodb/3.10/operations/backup-and-restore.md similarity index 100% rename from site/content/3.10/operations/backup-and-restore.md rename to site/content/arangodb/3.10/operations/backup-and-restore.md diff --git a/site/content/3.10/operations/installation/_index.md b/site/content/arangodb/3.10/operations/installation/_index.md similarity index 97% rename from site/content/3.10/operations/installation/_index.md rename to site/content/arangodb/3.10/operations/installation/_index.md index 0678048be7..b3d809b5f8 100644 --- a/site/content/3.10/operations/installation/_index.md +++ b/site/content/arangodb/3.10/operations/installation/_index.md @@ -39,7 +39,7 @@ ArangoDB requires systems with Little Endian byte order. {{< /info >}} {{< tip >}} -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) is a fully-managed service and requires no installation. It's the easiest way to run ArangoDB in the cloud. {{< /tip >}} diff --git a/site/content/3.10/operations/installation/compiling/_index.md b/site/content/arangodb/3.10/operations/installation/compiling/_index.md similarity index 100% rename from site/content/3.10/operations/installation/compiling/_index.md rename to site/content/arangodb/3.10/operations/installation/compiling/_index.md diff --git a/site/content/3.10/operations/installation/compiling/compile-on-debian.md b/site/content/arangodb/3.10/operations/installation/compiling/compile-on-debian.md similarity index 100% rename from site/content/3.10/operations/installation/compiling/compile-on-debian.md rename to site/content/arangodb/3.10/operations/installation/compiling/compile-on-debian.md diff --git a/site/content/3.10/operations/installation/compiling/compile-on-windows.md b/site/content/arangodb/3.10/operations/installation/compiling/compile-on-windows.md similarity index 99% rename from site/content/3.10/operations/installation/compiling/compile-on-windows.md rename to site/content/arangodb/3.10/operations/installation/compiling/compile-on-windows.md index c89c5d3347..dcdac2e1a1 100644 --- a/site/content/3.10/operations/installation/compiling/compile-on-windows.md +++ b/site/content/arangodb/3.10/operations/installation/compiling/compile-on-windows.md @@ -116,7 +116,7 @@ right click on `This PC` in the tree on the left, choose `Properties` in the ope in the Popup `Environment Variables`, another popup opens, in the `System Variables` part you click `New`, And variable name: `ICU_DATA` to the value: `c:\\Windows` -![HowtoSetEnv](../../../../images/SetEnvironmentVar.png) +![HowtoSetEnv](../../../../../images/SetEnvironmentVar.png) ## Unit tests (Optional) diff --git a/site/content/3.10/operations/installation/compiling/recompiling-jemalloc.md b/site/content/arangodb/3.10/operations/installation/compiling/recompiling-jemalloc.md similarity index 100% rename from site/content/3.10/operations/installation/compiling/recompiling-jemalloc.md rename to site/content/arangodb/3.10/operations/installation/compiling/recompiling-jemalloc.md diff --git a/site/content/3.10/operations/installation/compiling/running-custom-build.md b/site/content/arangodb/3.10/operations/installation/compiling/running-custom-build.md similarity index 100% rename from site/content/3.10/operations/installation/compiling/running-custom-build.md rename to site/content/arangodb/3.10/operations/installation/compiling/running-custom-build.md diff --git a/site/content/3.10/operations/installation/docker.md b/site/content/arangodb/3.10/operations/installation/docker.md similarity index 100% rename from site/content/3.10/operations/installation/docker.md rename to site/content/arangodb/3.10/operations/installation/docker.md diff --git a/site/content/3.10/operations/installation/linux/_index.md b/site/content/arangodb/3.10/operations/installation/linux/_index.md similarity index 100% rename from site/content/3.10/operations/installation/linux/_index.md rename to site/content/arangodb/3.10/operations/installation/linux/_index.md diff --git a/site/content/3.10/operations/installation/linux/linux-os-tuning-script-examples.md b/site/content/arangodb/3.10/operations/installation/linux/linux-os-tuning-script-examples.md similarity index 100% rename from site/content/3.10/operations/installation/linux/linux-os-tuning-script-examples.md rename to site/content/arangodb/3.10/operations/installation/linux/linux-os-tuning-script-examples.md diff --git a/site/content/3.10/operations/installation/linux/operating-system-configuration.md b/site/content/arangodb/3.10/operations/installation/linux/operating-system-configuration.md similarity index 100% rename from site/content/3.10/operations/installation/linux/operating-system-configuration.md rename to site/content/arangodb/3.10/operations/installation/linux/operating-system-configuration.md diff --git a/site/content/3.10/operations/installation/macos.md b/site/content/arangodb/3.10/operations/installation/macos.md similarity index 100% rename from site/content/3.10/operations/installation/macos.md rename to site/content/arangodb/3.10/operations/installation/macos.md diff --git a/site/content/3.10/operations/installation/uninstallation.md b/site/content/arangodb/3.10/operations/installation/uninstallation.md similarity index 100% rename from site/content/3.10/operations/installation/uninstallation.md rename to site/content/arangodb/3.10/operations/installation/uninstallation.md diff --git a/site/content/3.10/operations/installation/windows.md b/site/content/arangodb/3.10/operations/installation/windows.md similarity index 100% rename from site/content/3.10/operations/installation/windows.md rename to site/content/arangodb/3.10/operations/installation/windows.md diff --git a/site/content/3.10/operations/security/_index.md b/site/content/arangodb/3.10/operations/security/_index.md similarity index 100% rename from site/content/3.10/operations/security/_index.md rename to site/content/arangodb/3.10/operations/security/_index.md diff --git a/site/content/3.10/operations/security/audit-logging.md b/site/content/arangodb/3.10/operations/security/audit-logging.md similarity index 98% rename from site/content/3.10/operations/security/audit-logging.md rename to site/content/arangodb/3.10/operations/security/audit-logging.md index 651d1917da..b4e3164010 100644 --- a/site/content/3.10/operations/security/audit-logging.md +++ b/site/content/arangodb/3.10/operations/security/audit-logging.md @@ -13,7 +13,7 @@ pageToc: {{< tip >}} A similar feature is also available in the -[ArangoGraph Insights Platform](../../arangograph/security-and-access-control/_index.md#using-an-audit-log). +[Arango Managed Platform (AMP)](../../../../amp/security-and-access-control/_index.md#using-an-audit-log). {{< /tip >}} ## Configuration diff --git a/site/content/3.10/operations/security/change-root-password.md b/site/content/arangodb/3.10/operations/security/change-root-password.md similarity index 100% rename from site/content/3.10/operations/security/change-root-password.md rename to site/content/arangodb/3.10/operations/security/change-root-password.md diff --git a/site/content/3.10/operations/security/encryption-at-rest.md b/site/content/arangodb/3.10/operations/security/encryption-at-rest.md similarity index 97% rename from site/content/3.10/operations/security/encryption-at-rest.md rename to site/content/arangodb/3.10/operations/security/encryption-at-rest.md index 9821486e56..8a958d9be1 100644 --- a/site/content/3.10/operations/security/encryption-at-rest.md +++ b/site/content/arangodb/3.10/operations/security/encryption-at-rest.md @@ -30,9 +30,9 @@ performance and resistance to side-channel attacks. The encryption feature is supported by all ArangoDB deployment modes. {{< info >}} -The ArangoGraph Insights Platform has encryption at rest as well as in transit +The Arango Managed Platform (AMP) has encryption at rest as well as in transit set on by default and cannot be disabled. For more information, see the -[ArangoGraph documentation](../../arangograph/_index.md). +[ArangoGraph documentation](../../../../amp/_index.md). {{< /info >}} ## Limitations diff --git a/site/content/3.10/operations/security/securing-starter-deployments.md b/site/content/arangodb/3.10/operations/security/securing-starter-deployments.md similarity index 100% rename from site/content/3.10/operations/security/securing-starter-deployments.md rename to site/content/arangodb/3.10/operations/security/securing-starter-deployments.md diff --git a/site/content/3.10/operations/security/security-options.md b/site/content/arangodb/3.10/operations/security/security-options.md similarity index 100% rename from site/content/3.10/operations/security/security-options.md rename to site/content/arangodb/3.10/operations/security/security-options.md diff --git a/site/content/3.10/operations/troubleshooting/_index.md b/site/content/arangodb/3.10/operations/troubleshooting/_index.md similarity index 100% rename from site/content/3.10/operations/troubleshooting/_index.md rename to site/content/arangodb/3.10/operations/troubleshooting/_index.md diff --git a/site/content/3.10/operations/troubleshooting/arangod.md b/site/content/arangodb/3.10/operations/troubleshooting/arangod.md similarity index 100% rename from site/content/3.10/operations/troubleshooting/arangod.md rename to site/content/arangodb/3.10/operations/troubleshooting/arangod.md diff --git a/site/content/3.10/operations/troubleshooting/cluster/_index.md b/site/content/arangodb/3.10/operations/troubleshooting/cluster/_index.md similarity index 100% rename from site/content/3.10/operations/troubleshooting/cluster/_index.md rename to site/content/arangodb/3.10/operations/troubleshooting/cluster/_index.md diff --git a/site/content/3.10/operations/troubleshooting/cluster/agency-dump.md b/site/content/arangodb/3.10/operations/troubleshooting/cluster/agency-dump.md similarity index 100% rename from site/content/3.10/operations/troubleshooting/cluster/agency-dump.md rename to site/content/arangodb/3.10/operations/troubleshooting/cluster/agency-dump.md diff --git a/site/content/3.10/operations/troubleshooting/emergency-console.md b/site/content/arangodb/3.10/operations/troubleshooting/emergency-console.md similarity index 100% rename from site/content/3.10/operations/troubleshooting/emergency-console.md rename to site/content/arangodb/3.10/operations/troubleshooting/emergency-console.md diff --git a/site/content/3.10/operations/troubleshooting/query-debug-packages.md b/site/content/arangodb/3.10/operations/troubleshooting/query-debug-packages.md similarity index 100% rename from site/content/3.10/operations/troubleshooting/query-debug-packages.md rename to site/content/arangodb/3.10/operations/troubleshooting/query-debug-packages.md diff --git a/site/content/3.10/operations/upgrading/_index.md b/site/content/arangodb/3.10/operations/upgrading/_index.md similarity index 100% rename from site/content/3.10/operations/upgrading/_index.md rename to site/content/arangodb/3.10/operations/upgrading/_index.md diff --git a/site/content/3.10/operations/upgrading/community-to-enterprise-upgrade.md b/site/content/arangodb/3.10/operations/upgrading/community-to-enterprise-upgrade.md similarity index 100% rename from site/content/3.10/operations/upgrading/community-to-enterprise-upgrade.md rename to site/content/arangodb/3.10/operations/upgrading/community-to-enterprise-upgrade.md diff --git a/site/content/3.10/operations/upgrading/downgrading.md b/site/content/arangodb/3.10/operations/upgrading/downgrading.md similarity index 100% rename from site/content/3.10/operations/upgrading/downgrading.md rename to site/content/arangodb/3.10/operations/upgrading/downgrading.md diff --git a/site/content/3.10/operations/upgrading/manual-deployments/_index.md b/site/content/arangodb/3.10/operations/upgrading/manual-deployments/_index.md similarity index 100% rename from site/content/3.10/operations/upgrading/manual-deployments/_index.md rename to site/content/arangodb/3.10/operations/upgrading/manual-deployments/_index.md diff --git a/site/content/3.10/operations/upgrading/manual-deployments/active-failover.md b/site/content/arangodb/3.10/operations/upgrading/manual-deployments/active-failover.md similarity index 100% rename from site/content/3.10/operations/upgrading/manual-deployments/active-failover.md rename to site/content/arangodb/3.10/operations/upgrading/manual-deployments/active-failover.md diff --git a/site/content/3.10/operations/upgrading/manual-deployments/cluster.md b/site/content/arangodb/3.10/operations/upgrading/manual-deployments/cluster.md similarity index 100% rename from site/content/3.10/operations/upgrading/manual-deployments/cluster.md rename to site/content/arangodb/3.10/operations/upgrading/manual-deployments/cluster.md diff --git a/site/content/3.10/operations/upgrading/os-specific-information/_index.md b/site/content/arangodb/3.10/operations/upgrading/os-specific-information/_index.md similarity index 100% rename from site/content/3.10/operations/upgrading/os-specific-information/_index.md rename to site/content/arangodb/3.10/operations/upgrading/os-specific-information/_index.md diff --git a/site/content/3.10/operations/upgrading/os-specific-information/linux.md b/site/content/arangodb/3.10/operations/upgrading/os-specific-information/linux.md similarity index 100% rename from site/content/3.10/operations/upgrading/os-specific-information/linux.md rename to site/content/arangodb/3.10/operations/upgrading/os-specific-information/linux.md diff --git a/site/content/3.10/operations/upgrading/os-specific-information/macos.md b/site/content/arangodb/3.10/operations/upgrading/os-specific-information/macos.md similarity index 95% rename from site/content/3.10/operations/upgrading/os-specific-information/macos.md rename to site/content/arangodb/3.10/operations/upgrading/os-specific-information/macos.md index 3e010631cc..9e5ec267db 100644 --- a/site/content/3.10/operations/upgrading/os-specific-information/macos.md +++ b/site/content/arangodb/3.10/operations/upgrading/os-specific-information/macos.md @@ -23,7 +23,7 @@ Drag and drop the `ArangoDB3-CLI` (Community Edition) or the `ArangoDB3e-CLI` (Enterprise Edition) file onto the shown `Applications` folder. You are asked if you want to replace the old file with the newer one. -![MacOSUpgrade](../../../../images/MacOSUpgrade.png) +![MacOSUpgrade](../../../../../images/MacOSUpgrade.png) Select `Replace` to install the new ArangoDB version. diff --git a/site/content/3.10/operations/upgrading/os-specific-information/windows.md b/site/content/arangodb/3.10/operations/upgrading/os-specific-information/windows.md similarity index 96% rename from site/content/3.10/operations/upgrading/os-specific-information/windows.md rename to site/content/arangodb/3.10/operations/upgrading/os-specific-information/windows.md index b43686c6e1..dcb9b5d831 100644 --- a/site/content/3.10/operations/upgrading/os-specific-information/windows.md +++ b/site/content/arangodb/3.10/operations/upgrading/os-specific-information/windows.md @@ -34,7 +34,7 @@ If you have installed via the _Installer_, to upgrade: the option "_Automatically update existing ArangoDB database_" so that the database files will be upgraded. -![Update Option](../../../../images/installer_upgrade.png) +![Update Option](../../../../../images/installer_upgrade.png) {{< info >}} Upgrading via the Installer, when the old data is kept, will keep your @@ -45,14 +45,14 @@ password and choice of storage engine as it is. - You can uninstall the old one manually (make a copy of your old configuration file first). -![Uninstall old version](../../../../images/both_installations.png) +![Uninstall old version](../../../../../images/both_installations.png) {{< danger >}} When uninstalling the old package, please make sure the option "_Delete databases with uninstallation_" is **not** checked. {{< /danger >}} -![Delete Option](../../../../images/installer_delete.png) +![Delete Option](../../../../../images/installer_delete.png) {{< danger >}} When upgrading, the Windows Installer does not use the old configuration file diff --git a/site/content/3.10/operations/upgrading/starter-deployments.md b/site/content/arangodb/3.10/operations/upgrading/starter-deployments.md similarity index 100% rename from site/content/3.10/operations/upgrading/starter-deployments.md rename to site/content/arangodb/3.10/operations/upgrading/starter-deployments.md diff --git a/site/content/3.10/release-notes/_index.md b/site/content/arangodb/3.10/release-notes/_index.md similarity index 100% rename from site/content/3.10/release-notes/_index.md rename to site/content/arangodb/3.10/release-notes/_index.md diff --git a/site/content/3.10/release-notes/deprecated-and-removed-features.md b/site/content/arangodb/3.10/release-notes/deprecated-and-removed-features.md similarity index 100% rename from site/content/3.10/release-notes/deprecated-and-removed-features.md rename to site/content/arangodb/3.10/release-notes/deprecated-and-removed-features.md diff --git a/site/content/3.10/release-notes/version-3.0/_index.md b/site/content/arangodb/3.10/release-notes/version-3.0/_index.md similarity index 100% rename from site/content/3.10/release-notes/version-3.0/_index.md rename to site/content/arangodb/3.10/release-notes/version-3.0/_index.md diff --git a/site/content/3.10/release-notes/version-3.0/incompatible-changes-in-3-0.md b/site/content/arangodb/3.10/release-notes/version-3.0/incompatible-changes-in-3-0.md similarity index 100% rename from site/content/3.10/release-notes/version-3.0/incompatible-changes-in-3-0.md rename to site/content/arangodb/3.10/release-notes/version-3.0/incompatible-changes-in-3-0.md diff --git a/site/content/3.10/release-notes/version-3.0/whats-new-in-3-0.md b/site/content/arangodb/3.10/release-notes/version-3.0/whats-new-in-3-0.md similarity index 100% rename from site/content/3.10/release-notes/version-3.0/whats-new-in-3-0.md rename to site/content/arangodb/3.10/release-notes/version-3.0/whats-new-in-3-0.md diff --git a/site/content/3.10/release-notes/version-3.1/_index.md b/site/content/arangodb/3.10/release-notes/version-3.1/_index.md similarity index 100% rename from site/content/3.10/release-notes/version-3.1/_index.md rename to site/content/arangodb/3.10/release-notes/version-3.1/_index.md diff --git a/site/content/3.10/release-notes/version-3.1/incompatible-changes-in-3-1.md b/site/content/arangodb/3.10/release-notes/version-3.1/incompatible-changes-in-3-1.md similarity index 100% rename from site/content/3.10/release-notes/version-3.1/incompatible-changes-in-3-1.md rename to site/content/arangodb/3.10/release-notes/version-3.1/incompatible-changes-in-3-1.md diff --git a/site/content/3.10/release-notes/version-3.1/whats-new-in-3-1.md b/site/content/arangodb/3.10/release-notes/version-3.1/whats-new-in-3-1.md similarity index 100% rename from site/content/3.10/release-notes/version-3.1/whats-new-in-3-1.md rename to site/content/arangodb/3.10/release-notes/version-3.1/whats-new-in-3-1.md diff --git a/site/content/3.10/release-notes/version-3.10/_index.md b/site/content/arangodb/3.10/release-notes/version-3.10/_index.md similarity index 100% rename from site/content/3.10/release-notes/version-3.10/_index.md rename to site/content/arangodb/3.10/release-notes/version-3.10/_index.md diff --git a/site/content/3.10/release-notes/version-3.10/api-changes-in-3-10.md b/site/content/arangodb/3.10/release-notes/version-3.10/api-changes-in-3-10.md similarity index 100% rename from site/content/3.10/release-notes/version-3.10/api-changes-in-3-10.md rename to site/content/arangodb/3.10/release-notes/version-3.10/api-changes-in-3-10.md diff --git a/site/content/3.10/release-notes/version-3.10/incompatible-changes-in-3-10.md b/site/content/arangodb/3.10/release-notes/version-3.10/incompatible-changes-in-3-10.md similarity index 100% rename from site/content/3.10/release-notes/version-3.10/incompatible-changes-in-3-10.md rename to site/content/arangodb/3.10/release-notes/version-3.10/incompatible-changes-in-3-10.md diff --git a/site/content/3.10/release-notes/version-3.10/known-issues-in-3-10.md b/site/content/arangodb/3.10/release-notes/version-3.10/known-issues-in-3-10.md similarity index 100% rename from site/content/3.10/release-notes/version-3.10/known-issues-in-3-10.md rename to site/content/arangodb/3.10/release-notes/version-3.10/known-issues-in-3-10.md diff --git a/site/content/3.10/release-notes/version-3.10/whats-new-in-3-10.md b/site/content/arangodb/3.10/release-notes/version-3.10/whats-new-in-3-10.md similarity index 100% rename from site/content/3.10/release-notes/version-3.10/whats-new-in-3-10.md rename to site/content/arangodb/3.10/release-notes/version-3.10/whats-new-in-3-10.md diff --git a/site/content/3.10/release-notes/version-3.2/_index.md b/site/content/arangodb/3.10/release-notes/version-3.2/_index.md similarity index 100% rename from site/content/3.10/release-notes/version-3.2/_index.md rename to site/content/arangodb/3.10/release-notes/version-3.2/_index.md diff --git a/site/content/3.10/release-notes/version-3.2/incompatible-changes-in-3-2.md b/site/content/arangodb/3.10/release-notes/version-3.2/incompatible-changes-in-3-2.md similarity index 100% rename from site/content/3.10/release-notes/version-3.2/incompatible-changes-in-3-2.md rename to site/content/arangodb/3.10/release-notes/version-3.2/incompatible-changes-in-3-2.md diff --git a/site/content/3.10/release-notes/version-3.2/known-issues-in-3-2.md b/site/content/arangodb/3.10/release-notes/version-3.2/known-issues-in-3-2.md similarity index 100% rename from site/content/3.10/release-notes/version-3.2/known-issues-in-3-2.md rename to site/content/arangodb/3.10/release-notes/version-3.2/known-issues-in-3-2.md diff --git a/site/content/3.10/release-notes/version-3.2/whats-new-in-3-2.md b/site/content/arangodb/3.10/release-notes/version-3.2/whats-new-in-3-2.md similarity index 100% rename from site/content/3.10/release-notes/version-3.2/whats-new-in-3-2.md rename to site/content/arangodb/3.10/release-notes/version-3.2/whats-new-in-3-2.md diff --git a/site/content/3.10/release-notes/version-3.3/_index.md b/site/content/arangodb/3.10/release-notes/version-3.3/_index.md similarity index 100% rename from site/content/3.10/release-notes/version-3.3/_index.md rename to site/content/arangodb/3.10/release-notes/version-3.3/_index.md diff --git a/site/content/3.10/release-notes/version-3.3/incompatible-changes-in-3-3.md b/site/content/arangodb/3.10/release-notes/version-3.3/incompatible-changes-in-3-3.md similarity index 100% rename from site/content/3.10/release-notes/version-3.3/incompatible-changes-in-3-3.md rename to site/content/arangodb/3.10/release-notes/version-3.3/incompatible-changes-in-3-3.md diff --git a/site/content/3.10/release-notes/version-3.3/known-issues-in-3-3.md b/site/content/arangodb/3.10/release-notes/version-3.3/known-issues-in-3-3.md similarity index 100% rename from site/content/3.10/release-notes/version-3.3/known-issues-in-3-3.md rename to site/content/arangodb/3.10/release-notes/version-3.3/known-issues-in-3-3.md diff --git a/site/content/3.10/release-notes/version-3.3/whats-new-in-3-3.md b/site/content/arangodb/3.10/release-notes/version-3.3/whats-new-in-3-3.md similarity index 100% rename from site/content/3.10/release-notes/version-3.3/whats-new-in-3-3.md rename to site/content/arangodb/3.10/release-notes/version-3.3/whats-new-in-3-3.md diff --git a/site/content/3.10/release-notes/version-3.4/_index.md b/site/content/arangodb/3.10/release-notes/version-3.4/_index.md similarity index 100% rename from site/content/3.10/release-notes/version-3.4/_index.md rename to site/content/arangodb/3.10/release-notes/version-3.4/_index.md diff --git a/site/content/3.10/release-notes/version-3.4/incompatible-changes-in-3-4.md b/site/content/arangodb/3.10/release-notes/version-3.4/incompatible-changes-in-3-4.md similarity index 100% rename from site/content/3.10/release-notes/version-3.4/incompatible-changes-in-3-4.md rename to site/content/arangodb/3.10/release-notes/version-3.4/incompatible-changes-in-3-4.md diff --git a/site/content/3.10/release-notes/version-3.4/known-issues-in-3-4.md b/site/content/arangodb/3.10/release-notes/version-3.4/known-issues-in-3-4.md similarity index 100% rename from site/content/3.10/release-notes/version-3.4/known-issues-in-3-4.md rename to site/content/arangodb/3.10/release-notes/version-3.4/known-issues-in-3-4.md diff --git a/site/content/3.10/release-notes/version-3.4/whats-new-in-3-4.md b/site/content/arangodb/3.10/release-notes/version-3.4/whats-new-in-3-4.md similarity index 100% rename from site/content/3.10/release-notes/version-3.4/whats-new-in-3-4.md rename to site/content/arangodb/3.10/release-notes/version-3.4/whats-new-in-3-4.md diff --git a/site/content/3.10/release-notes/version-3.5/_index.md b/site/content/arangodb/3.10/release-notes/version-3.5/_index.md similarity index 100% rename from site/content/3.10/release-notes/version-3.5/_index.md rename to site/content/arangodb/3.10/release-notes/version-3.5/_index.md diff --git a/site/content/3.10/release-notes/version-3.5/incompatible-changes-in-3-5.md b/site/content/arangodb/3.10/release-notes/version-3.5/incompatible-changes-in-3-5.md similarity index 100% rename from site/content/3.10/release-notes/version-3.5/incompatible-changes-in-3-5.md rename to site/content/arangodb/3.10/release-notes/version-3.5/incompatible-changes-in-3-5.md diff --git a/site/content/3.10/release-notes/version-3.5/known-issues-in-3-5.md b/site/content/arangodb/3.10/release-notes/version-3.5/known-issues-in-3-5.md similarity index 100% rename from site/content/3.10/release-notes/version-3.5/known-issues-in-3-5.md rename to site/content/arangodb/3.10/release-notes/version-3.5/known-issues-in-3-5.md diff --git a/site/content/3.10/release-notes/version-3.5/whats-new-in-3-5.md b/site/content/arangodb/3.10/release-notes/version-3.5/whats-new-in-3-5.md similarity index 100% rename from site/content/3.10/release-notes/version-3.5/whats-new-in-3-5.md rename to site/content/arangodb/3.10/release-notes/version-3.5/whats-new-in-3-5.md diff --git a/site/content/3.10/release-notes/version-3.6/_index.md b/site/content/arangodb/3.10/release-notes/version-3.6/_index.md similarity index 100% rename from site/content/3.10/release-notes/version-3.6/_index.md rename to site/content/arangodb/3.10/release-notes/version-3.6/_index.md diff --git a/site/content/3.10/release-notes/version-3.6/incompatible-changes-in-3-6.md b/site/content/arangodb/3.10/release-notes/version-3.6/incompatible-changes-in-3-6.md similarity index 100% rename from site/content/3.10/release-notes/version-3.6/incompatible-changes-in-3-6.md rename to site/content/arangodb/3.10/release-notes/version-3.6/incompatible-changes-in-3-6.md diff --git a/site/content/3.10/release-notes/version-3.6/known-issues-in-3-6.md b/site/content/arangodb/3.10/release-notes/version-3.6/known-issues-in-3-6.md similarity index 100% rename from site/content/3.10/release-notes/version-3.6/known-issues-in-3-6.md rename to site/content/arangodb/3.10/release-notes/version-3.6/known-issues-in-3-6.md diff --git a/site/content/3.10/release-notes/version-3.6/whats-new-in-3-6.md b/site/content/arangodb/3.10/release-notes/version-3.6/whats-new-in-3-6.md similarity index 100% rename from site/content/3.10/release-notes/version-3.6/whats-new-in-3-6.md rename to site/content/arangodb/3.10/release-notes/version-3.6/whats-new-in-3-6.md diff --git a/site/content/3.10/release-notes/version-3.7/_index.md b/site/content/arangodb/3.10/release-notes/version-3.7/_index.md similarity index 100% rename from site/content/3.10/release-notes/version-3.7/_index.md rename to site/content/arangodb/3.10/release-notes/version-3.7/_index.md diff --git a/site/content/3.10/release-notes/version-3.7/api-changes-in-3-7.md b/site/content/arangodb/3.10/release-notes/version-3.7/api-changes-in-3-7.md similarity index 100% rename from site/content/3.10/release-notes/version-3.7/api-changes-in-3-7.md rename to site/content/arangodb/3.10/release-notes/version-3.7/api-changes-in-3-7.md diff --git a/site/content/3.10/release-notes/version-3.7/incompatible-changes-in-3-7.md b/site/content/arangodb/3.10/release-notes/version-3.7/incompatible-changes-in-3-7.md similarity index 100% rename from site/content/3.10/release-notes/version-3.7/incompatible-changes-in-3-7.md rename to site/content/arangodb/3.10/release-notes/version-3.7/incompatible-changes-in-3-7.md diff --git a/site/content/3.10/release-notes/version-3.7/known-issues-in-3-7.md b/site/content/arangodb/3.10/release-notes/version-3.7/known-issues-in-3-7.md similarity index 100% rename from site/content/3.10/release-notes/version-3.7/known-issues-in-3-7.md rename to site/content/arangodb/3.10/release-notes/version-3.7/known-issues-in-3-7.md diff --git a/site/content/3.10/release-notes/version-3.7/whats-new-in-3-7.md b/site/content/arangodb/3.10/release-notes/version-3.7/whats-new-in-3-7.md similarity index 100% rename from site/content/3.10/release-notes/version-3.7/whats-new-in-3-7.md rename to site/content/arangodb/3.10/release-notes/version-3.7/whats-new-in-3-7.md diff --git a/site/content/3.10/release-notes/version-3.8/_index.md b/site/content/arangodb/3.10/release-notes/version-3.8/_index.md similarity index 100% rename from site/content/3.10/release-notes/version-3.8/_index.md rename to site/content/arangodb/3.10/release-notes/version-3.8/_index.md diff --git a/site/content/3.10/release-notes/version-3.8/api-changes-in-3-8.md b/site/content/arangodb/3.10/release-notes/version-3.8/api-changes-in-3-8.md similarity index 100% rename from site/content/3.10/release-notes/version-3.8/api-changes-in-3-8.md rename to site/content/arangodb/3.10/release-notes/version-3.8/api-changes-in-3-8.md diff --git a/site/content/3.10/release-notes/version-3.8/incompatible-changes-in-3-8.md b/site/content/arangodb/3.10/release-notes/version-3.8/incompatible-changes-in-3-8.md similarity index 100% rename from site/content/3.10/release-notes/version-3.8/incompatible-changes-in-3-8.md rename to site/content/arangodb/3.10/release-notes/version-3.8/incompatible-changes-in-3-8.md diff --git a/site/content/3.10/release-notes/version-3.8/known-issues-in-3-8.md b/site/content/arangodb/3.10/release-notes/version-3.8/known-issues-in-3-8.md similarity index 100% rename from site/content/3.10/release-notes/version-3.8/known-issues-in-3-8.md rename to site/content/arangodb/3.10/release-notes/version-3.8/known-issues-in-3-8.md diff --git a/site/content/3.10/release-notes/version-3.8/whats-new-in-3-8.md b/site/content/arangodb/3.10/release-notes/version-3.8/whats-new-in-3-8.md similarity index 100% rename from site/content/3.10/release-notes/version-3.8/whats-new-in-3-8.md rename to site/content/arangodb/3.10/release-notes/version-3.8/whats-new-in-3-8.md diff --git a/site/content/3.10/release-notes/version-3.9/_index.md b/site/content/arangodb/3.10/release-notes/version-3.9/_index.md similarity index 100% rename from site/content/3.10/release-notes/version-3.9/_index.md rename to site/content/arangodb/3.10/release-notes/version-3.9/_index.md diff --git a/site/content/3.10/release-notes/version-3.9/api-changes-in-3-9.md b/site/content/arangodb/3.10/release-notes/version-3.9/api-changes-in-3-9.md similarity index 100% rename from site/content/3.10/release-notes/version-3.9/api-changes-in-3-9.md rename to site/content/arangodb/3.10/release-notes/version-3.9/api-changes-in-3-9.md diff --git a/site/content/3.10/release-notes/version-3.9/incompatible-changes-in-3-9.md b/site/content/arangodb/3.10/release-notes/version-3.9/incompatible-changes-in-3-9.md similarity index 100% rename from site/content/3.10/release-notes/version-3.9/incompatible-changes-in-3-9.md rename to site/content/arangodb/3.10/release-notes/version-3.9/incompatible-changes-in-3-9.md diff --git a/site/content/3.10/release-notes/version-3.9/known-issues-in-3-9.md b/site/content/arangodb/3.10/release-notes/version-3.9/known-issues-in-3-9.md similarity index 100% rename from site/content/3.10/release-notes/version-3.9/known-issues-in-3-9.md rename to site/content/arangodb/3.10/release-notes/version-3.9/known-issues-in-3-9.md diff --git a/site/content/3.10/release-notes/version-3.9/whats-new-in-3-9.md b/site/content/arangodb/3.10/release-notes/version-3.9/whats-new-in-3-9.md similarity index 100% rename from site/content/3.10/release-notes/version-3.9/whats-new-in-3-9.md rename to site/content/arangodb/3.10/release-notes/version-3.9/whats-new-in-3-9.md diff --git a/site/content/3.11/_index.md b/site/content/arangodb/3.11/_index.md similarity index 88% rename from site/content/3.11/_index.md rename to site/content/arangodb/3.11/_index.md index a50a8ab193..26db7a1f0d 100644 --- a/site/content/3.11/_index.md +++ b/site/content/arangodb/3.11/_index.md @@ -1,14 +1,14 @@ --- title: Recommended Resources menuTitle: '3.11' -weight: 0 +weight: 1 layout: default --- {{< cloudbanner >}} {{< cards >}} -{{% card title="What is ArangoDB?" link="about-arangodb/" %}} +{{% card title="What is ArangoDB?" link="about/" %}} Get to know graphs, ArangoDB's use cases and features. {{% /card %}} @@ -17,7 +17,7 @@ Learn about ArangoDB's core concepts, how to interact with the database system, and get a server instance up and running. {{% /card %}} -{{% card title="ArangoGraph Insights Platform" link="arangograph/" %}} +{{% card title="Arango Managed Platform (AMP)" link="amp/" %}} Try out ArangoDB's fully-managed cloud offering for a faster time to value. {{% /card %}} diff --git a/site/content/3.10/about-arangodb/_index.md b/site/content/arangodb/3.11/about/_index.md similarity index 82% rename from site/content/3.10/about-arangodb/_index.md rename to site/content/arangodb/3.11/about/_index.md index 9b96a70c37..62ade93bbb 100644 --- a/site/content/3.10/about-arangodb/_index.md +++ b/site/content/arangodb/3.11/about/_index.md @@ -9,7 +9,7 @@ aliases: - introduction - introduction/about-arangodb --- -![ArangoDB Overview Diagram](../../images/arangodb-overview-diagram.png) +![ArangoDB Overview Diagram](../../../images/arangodb-overview-diagram.png) ArangoDB combines the analytical power of native graphs with an integrated search engine, JSON support, and a variety of data access patterns via a single, @@ -17,25 +17,25 @@ composable query language. ArangoDB is available in an open-source and a commercial [edition](features/_index.md). You can use it for on-premises deployments, as well as a fully managed -cloud service, the [ArangoGraph Insights Platform](../arangograph/_index.md). +cloud service, the [Arango Managed Platform (AMP)](../../../amp/_index.md). ## What are Graphs? Graphs are information networks comprised of nodes and relations. -![Node - Relation - Node](../../images/data-model-graph-relation-abstract.png) +![Node - Relation - Node](../../../images/data-model-graph-relation-abstract.png) A social network is a common example of a graph. People are represented by nodes and their friendships by relations. -![Mary - is friend of - John](../../images/data-model-graph-relation-concrete.png) +![Mary - is friend of - John](../../../images/data-model-graph-relation-concrete.png) Nodes are also called vertices (singular: vertex), and relations are edges that connect vertices. A vertex typically represents a specific entity (a person, a book, a sensor reading, etc.) and an edge defines how one entity relates to another. -![Mary - bought - Book, is friend of - John](../../images/data-model-graph-relations.png) +![Mary - bought - Book, is friend of - John](../../../images/data-model-graph-relations.png) This paradigm of storing data feels natural because it closely matches the cognitive model of humans. It is an expressive data model that allows you to @@ -48,7 +48,7 @@ Not everything is a graph use case. ArangoDB lets you equally work with structured, semi-structured, and unstructured data in the form of schema-free JSON objects, without having to connect these objects to form a graph. -![Person Mary, Book ArangoDB](../../images/data-model-document.png) +![Person Mary, Book ArangoDB](../../../images/data-model-document.png) <!-- TODO: Seems too disconnected, what is the relation? diff --git a/site/content/3.11/about-arangodb/features/_index.md b/site/content/arangodb/3.11/about/features/_index.md similarity index 98% rename from site/content/3.11/about-arangodb/features/_index.md rename to site/content/arangodb/3.11/about/features/_index.md index 0d303e5ba6..caebf5177a 100644 --- a/site/content/3.11/about-arangodb/features/_index.md +++ b/site/content/arangodb/3.11/about/features/_index.md @@ -13,7 +13,7 @@ aliases: ### Fully managed cloud service The fully managed multi-cloud -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) is the easiest and fastest way to get started. It runs the Enterprise Edition of ArangoDB, lets you deploy clusters with just a few clicks, and is operated by a dedicated team of ArangoDB engineers day and night. You can choose from a @@ -26,7 +26,7 @@ variety of support plans to meet your needs. - Highly secure with encryption at transit and at rest - Includes elastic scalability for all deployment models (OneShard and Sharded clusters) -To learn more, go to the [ArangoGraph documentation](../../arangograph/_index.md). +To learn more, go to the [ArangoGraph documentation](../../../../amp/_index.md). ### Self-managed in the cloud diff --git a/site/content/3.11/about-arangodb/features/community-edition.md b/site/content/arangodb/3.11/about/features/community-edition.md similarity index 100% rename from site/content/3.11/about-arangodb/features/community-edition.md rename to site/content/arangodb/3.11/about/features/community-edition.md diff --git a/site/content/3.10/about-arangodb/features/enterprise-edition.md b/site/content/arangodb/3.11/about/features/enterprise-edition.md similarity index 100% rename from site/content/3.10/about-arangodb/features/enterprise-edition.md rename to site/content/arangodb/3.11/about/features/enterprise-edition.md diff --git a/site/content/3.11/about-arangodb/features/highlights-by-version.md b/site/content/arangodb/3.11/about/features/highlights-by-version.md similarity index 100% rename from site/content/3.11/about-arangodb/features/highlights-by-version.md rename to site/content/arangodb/3.11/about/features/highlights-by-version.md diff --git a/site/content/3.10/about-arangodb/use-cases.md b/site/content/arangodb/3.11/about/use-cases.md similarity index 77% rename from site/content/3.10/about-arangodb/use-cases.md rename to site/content/arangodb/3.11/about/use-cases.md index fab9e86a90..01f0bcbac2 100644 --- a/site/content/3.10/about-arangodb/use-cases.md +++ b/site/content/arangodb/3.11/about/use-cases.md @@ -19,7 +19,7 @@ more. ### Fraud Detection -{{< image src="../../images/icon-fraud-detection.png" alt="Fraud Detection icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-fraud-detection.png" alt="Fraud Detection icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Uncover illegal activities by discovering difficult-to-detect patterns. ArangoDB lets you look beyond individual data points in disparate data sources, @@ -29,7 +29,7 @@ complex fraudulent behavior such as fraud rings. ### Recommendation Engine -{{< image src="../../images/icon-recommendation-engine.png" alt="Recommendation Engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-recommendation-engine.png" alt="Recommendation Engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Suggest products, services, and information to users based on data relationships. For example, you can use ArangoDB together with PyTorch Geometric to build a @@ -39,7 +39,7 @@ with a graph neural network (GNN). ### Network Management -{{< image src="../../images/icon-network-management.png" alt="Network Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-network-management.png" alt="Network Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Reduce downtime by connecting and visualizing network, infrastructure, and code. Network devices and how they interconnect can naturally be modeled as a graph. @@ -49,7 +49,7 @@ bandwidth into account when path-finding. ### Customer 360 -{{< image src="../../images/icon-customer-360.png" alt="Customer 360 icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-customer-360.png" alt="Customer 360 icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Gain a complete understanding of your customers by integrating multiple data sources and code. ArangoDB can act as the platform to merge and consolidate @@ -58,7 +58,7 @@ track data origins using graph features. ### Identity and Access Management -{{< image src="../../images/icon-identity-management.png" alt="Identity Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-identity-management.png" alt="Identity Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Increase security and compliance by managing data access based on role and position. You can map out an organization chart as a graph and use ArangoDB to @@ -68,7 +68,7 @@ inheritance. ### Supply Chain -{{< image src="../../images/icon-supply-chain.png" alt="Supply Chain icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-supply-chain.png" alt="Supply Chain icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Speed shipments by monitoring and optimizing the flow of goods through a supply chain. You can represent your inventory, supplier, and delivery @@ -84,7 +84,7 @@ and scalable data store. ### Content Management -{{< image src="../../images/icon-content-management.png" alt="Content management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-content-management.png" alt="Content management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Store information of any kind without upfront schema declaration. ArangoDB is schema-free, storing every data record as a self-contained document, allowing @@ -93,7 +93,7 @@ content management system on top of ArangoDB. ### E-Commerce Systems -{{< image src="../../images/icon-e-commerce.png" alt="E-commerce icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-e-commerce.png" alt="E-commerce icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} ArangoDB combines data modeling freedom with strong consistency and resilience features to power online shops and ordering systems. Handle product catalog data @@ -102,7 +102,7 @@ checkouts with the necessary transactional guarantees. ### Internet of Things -{{< image src="../../images/icon-internet-of-things.png" alt="Internet of things icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-internet-of-things.png" alt="Internet of things icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Collect sensor readings and other IoT data in ArangoDB for a single view of everything. Store all data points in the same system that also lets you run @@ -110,7 +110,7 @@ aggregation queries using sliding windows for efficient data analysis. ## ArangoDB as a Key-Value Database -{{< image src="../../images/icon-key-value.png" alt="Key value icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-key-value.png" alt="Key value icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Key-value stores are the simplest kind of database systems. Each record is stored as a block of data under a key that uniquely identifies the record. @@ -134,7 +134,7 @@ For more information about how ArangoDB persists data, see ## ArangoDB as a Search Engine -{{< image src="../../images/icon-search-engine.png" alt="Search engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-search-engine.png" alt="Search engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} ArangoDB has a natively integrated search engine for a broad range of information retrieval needs. It is powered by inverted indexes and can index @@ -161,4 +161,4 @@ ArangoDB integrates well into existing data infrastructures and provides connectors for popular machine learning frameworks and data processing ecosystems. -![Machine Learning Architecture of ArangoDB](../../images/machine-learning-architecture.png) +![Machine Learning Architecture of ArangoDB](../../../../images/machine-learning-architecture.png) diff --git a/site/content/3.11/aql/_index.md b/site/content/arangodb/3.11/aql/_index.md similarity index 100% rename from site/content/3.11/aql/_index.md rename to site/content/arangodb/3.11/aql/_index.md diff --git a/site/content/3.11/aql/common-errors.md b/site/content/arangodb/3.11/aql/common-errors.md similarity index 100% rename from site/content/3.11/aql/common-errors.md rename to site/content/arangodb/3.11/aql/common-errors.md diff --git a/site/content/3.11/aql/data-queries.md b/site/content/arangodb/3.11/aql/data-queries.md similarity index 100% rename from site/content/3.11/aql/data-queries.md rename to site/content/arangodb/3.11/aql/data-queries.md diff --git a/site/content/3.11/aql/examples-and-query-patterns/_index.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/_index.md similarity index 100% rename from site/content/3.11/aql/examples-and-query-patterns/_index.md rename to site/content/arangodb/3.11/aql/examples-and-query-patterns/_index.md diff --git a/site/content/3.11/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md similarity index 100% rename from site/content/3.11/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md rename to site/content/arangodb/3.11/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md diff --git a/site/content/3.11/aql/examples-and-query-patterns/counting.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/counting.md similarity index 100% rename from site/content/3.11/aql/examples-and-query-patterns/counting.md rename to site/content/arangodb/3.11/aql/examples-and-query-patterns/counting.md diff --git a/site/content/3.11/aql/examples-and-query-patterns/create-test-data.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/create-test-data.md similarity index 100% rename from site/content/3.11/aql/examples-and-query-patterns/create-test-data.md rename to site/content/arangodb/3.11/aql/examples-and-query-patterns/create-test-data.md diff --git a/site/content/3.11/aql/examples-and-query-patterns/diffing-two-documents.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/diffing-two-documents.md similarity index 100% rename from site/content/3.11/aql/examples-and-query-patterns/diffing-two-documents.md rename to site/content/arangodb/3.11/aql/examples-and-query-patterns/diffing-two-documents.md diff --git a/site/content/3.11/aql/examples-and-query-patterns/dynamic-attribute-names.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/dynamic-attribute-names.md similarity index 100% rename from site/content/3.11/aql/examples-and-query-patterns/dynamic-attribute-names.md rename to site/content/arangodb/3.11/aql/examples-and-query-patterns/dynamic-attribute-names.md diff --git a/site/content/3.11/aql/examples-and-query-patterns/grouping.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/grouping.md similarity index 100% rename from site/content/3.11/aql/examples-and-query-patterns/grouping.md rename to site/content/arangodb/3.11/aql/examples-and-query-patterns/grouping.md diff --git a/site/content/3.11/aql/examples-and-query-patterns/joins.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/joins.md similarity index 100% rename from site/content/3.11/aql/examples-and-query-patterns/joins.md rename to site/content/arangodb/3.11/aql/examples-and-query-patterns/joins.md diff --git a/site/content/3.11/aql/examples-and-query-patterns/projections-and-filters.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/projections-and-filters.md similarity index 100% rename from site/content/3.11/aql/examples-and-query-patterns/projections-and-filters.md rename to site/content/arangodb/3.11/aql/examples-and-query-patterns/projections-and-filters.md diff --git a/site/content/3.11/aql/examples-and-query-patterns/queries-without-collections.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/queries-without-collections.md similarity index 100% rename from site/content/3.11/aql/examples-and-query-patterns/queries-without-collections.md rename to site/content/arangodb/3.11/aql/examples-and-query-patterns/queries-without-collections.md diff --git a/site/content/3.11/aql/examples-and-query-patterns/remove-vertex.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/remove-vertex.md similarity index 96% rename from site/content/3.11/aql/examples-and-query-patterns/remove-vertex.md rename to site/content/arangodb/3.11/aql/examples-and-query-patterns/remove-vertex.md index 60a845ad94..e80cf8f390 100644 --- a/site/content/3.11/aql/examples-and-query-patterns/remove-vertex.md +++ b/site/content/arangodb/3.11/aql/examples-and-query-patterns/remove-vertex.md @@ -15,7 +15,7 @@ However, as shown in this example based on the [Knows Graph](../../graphs/example-graphs.md#knows-graph), a query for this use case can be created. -![Example Graph](../../../images/knows_graph.png) +![Example Graph](../../../../images/knows_graph.png) When deleting vertex **eve** from the graph, we also want the edges `eve -> alice` and `eve -> bob` to be removed. @@ -59,7 +59,7 @@ For example, the [City Graph](../../graphs/example-graphs.md#city-graph) contains several vertex collections - `germanCity` and `frenchCity` and several edge collections - `french / german / international Highway`. -![Example Graph2](../../../images/cities_graph.png) +![Example Graph2](../../../../images/cities_graph.png) To delete city **Berlin** all edge collections `french / german / international Highway` have to be considered. The **REMOVE** operation has to be applied on all edge diff --git a/site/content/3.11/aql/examples-and-query-patterns/traversals.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/traversals.md similarity index 98% rename from site/content/3.11/aql/examples-and-query-patterns/traversals.md rename to site/content/arangodb/3.11/aql/examples-and-query-patterns/traversals.md index b2521d48c2..08296c64e4 100644 --- a/site/content/3.11/aql/examples-and-query-patterns/traversals.md +++ b/site/content/arangodb/3.11/aql/examples-and-query-patterns/traversals.md @@ -10,7 +10,7 @@ description: >- Our first example will locate the start vertex for a graph traversal via [a geo index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). We use the [City Graph](../../graphs/example-graphs.md#city-graph) and its geo indexes: -![Cities Example Graph](../../../images/cities_graph.png) +![Cities Example Graph](../../../../images/cities_graph.png) ```js --- diff --git a/site/content/3.11/aql/examples-and-query-patterns/upsert-repsert-guide.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/upsert-repsert-guide.md similarity index 100% rename from site/content/3.11/aql/examples-and-query-patterns/upsert-repsert-guide.md rename to site/content/arangodb/3.11/aql/examples-and-query-patterns/upsert-repsert-guide.md diff --git a/site/content/3.11/aql/execution-and-performance/_index.md b/site/content/arangodb/3.11/aql/execution-and-performance/_index.md similarity index 100% rename from site/content/3.11/aql/execution-and-performance/_index.md rename to site/content/arangodb/3.11/aql/execution-and-performance/_index.md diff --git a/site/content/3.11/aql/execution-and-performance/caching-query-results.md b/site/content/arangodb/3.11/aql/execution-and-performance/caching-query-results.md similarity index 100% rename from site/content/3.11/aql/execution-and-performance/caching-query-results.md rename to site/content/arangodb/3.11/aql/execution-and-performance/caching-query-results.md diff --git a/site/content/3.11/aql/execution-and-performance/explaining-queries.md b/site/content/arangodb/3.11/aql/execution-and-performance/explaining-queries.md similarity index 100% rename from site/content/3.11/aql/execution-and-performance/explaining-queries.md rename to site/content/arangodb/3.11/aql/execution-and-performance/explaining-queries.md diff --git a/site/content/3.11/aql/execution-and-performance/parsing-queries.md b/site/content/arangodb/3.11/aql/execution-and-performance/parsing-queries.md similarity index 100% rename from site/content/3.11/aql/execution-and-performance/parsing-queries.md rename to site/content/arangodb/3.11/aql/execution-and-performance/parsing-queries.md diff --git a/site/content/3.11/aql/execution-and-performance/query-optimization.md b/site/content/arangodb/3.11/aql/execution-and-performance/query-optimization.md similarity index 100% rename from site/content/3.11/aql/execution-and-performance/query-optimization.md rename to site/content/arangodb/3.11/aql/execution-and-performance/query-optimization.md diff --git a/site/content/3.11/aql/execution-and-performance/query-profiling.md b/site/content/arangodb/3.11/aql/execution-and-performance/query-profiling.md similarity index 100% rename from site/content/3.11/aql/execution-and-performance/query-profiling.md rename to site/content/arangodb/3.11/aql/execution-and-performance/query-profiling.md diff --git a/site/content/3.11/aql/execution-and-performance/query-statistics.md b/site/content/arangodb/3.11/aql/execution-and-performance/query-statistics.md similarity index 100% rename from site/content/3.11/aql/execution-and-performance/query-statistics.md rename to site/content/arangodb/3.11/aql/execution-and-performance/query-statistics.md diff --git a/site/content/3.11/aql/functions/_index.md b/site/content/arangodb/3.11/aql/functions/_index.md similarity index 100% rename from site/content/3.11/aql/functions/_index.md rename to site/content/arangodb/3.11/aql/functions/_index.md diff --git a/site/content/3.11/aql/functions/arangosearch.md b/site/content/arangodb/3.11/aql/functions/arangosearch.md similarity index 100% rename from site/content/3.11/aql/functions/arangosearch.md rename to site/content/arangodb/3.11/aql/functions/arangosearch.md diff --git a/site/content/3.11/aql/functions/array.md b/site/content/arangodb/3.11/aql/functions/array.md similarity index 100% rename from site/content/3.11/aql/functions/array.md rename to site/content/arangodb/3.11/aql/functions/array.md diff --git a/site/content/3.11/aql/functions/bit.md b/site/content/arangodb/3.11/aql/functions/bit.md similarity index 100% rename from site/content/3.11/aql/functions/bit.md rename to site/content/arangodb/3.11/aql/functions/bit.md diff --git a/site/content/3.11/aql/functions/date.md b/site/content/arangodb/3.11/aql/functions/date.md similarity index 100% rename from site/content/3.11/aql/functions/date.md rename to site/content/arangodb/3.11/aql/functions/date.md diff --git a/site/content/3.11/aql/functions/document-object.md b/site/content/arangodb/3.11/aql/functions/document-object.md similarity index 100% rename from site/content/3.11/aql/functions/document-object.md rename to site/content/arangodb/3.11/aql/functions/document-object.md diff --git a/site/content/3.11/aql/functions/fulltext.md b/site/content/arangodb/3.11/aql/functions/fulltext.md similarity index 100% rename from site/content/3.11/aql/functions/fulltext.md rename to site/content/arangodb/3.11/aql/functions/fulltext.md diff --git a/site/content/3.12/aql/functions/geo.md b/site/content/arangodb/3.11/aql/functions/geo.md similarity index 99% rename from site/content/3.12/aql/functions/geo.md rename to site/content/arangodb/3.11/aql/functions/geo.md index bc4558ee74..cf5b3f8a2d 100644 --- a/site/content/3.12/aql/functions/geo.md +++ b/site/content/arangodb/3.11/aql/functions/geo.md @@ -322,7 +322,7 @@ Consider the following polygon (remember that GeoJSON has ]] } ``` -![GeoJSON Polygon Geodesic](../../../images/geojson-polygon-geodesic.webp) +![GeoJSON Polygon Geodesic](../../../../images/geojson-polygon-geodesic.webp) It does not contain the point `[10, 47]` since the shortest path (geodesic) from `[4, 47]` to `[16, 47]` lies North relative to the parallel of latitude at @@ -359,7 +359,7 @@ Pole. ]] } ``` -![GeoJSON Polygon Counter-clockwise](../../../images/geojson-polygon-ccw.webp) +![GeoJSON Polygon Counter-clockwise](../../../../images/geojson-polygon-ccw.webp) On the other hand, the following polygon travels **clockwise** around the point `[10, 50]`, and thus its "interior" does not contain `[10, 50]`, but does @@ -371,7 +371,7 @@ contain the North Pole and the South Pole: ]] } ``` -![GeoJSON Polygon Clockwise](../../../images/geojson-polygon-cw.webp) +![GeoJSON Polygon Clockwise](../../../../images/geojson-polygon-cw.webp) Remember that the "interior" is to the left of the given linear ring, so this second polygon is basically the complement on Earth diff --git a/site/content/3.11/aql/functions/miscellaneous.md b/site/content/arangodb/3.11/aql/functions/miscellaneous.md similarity index 100% rename from site/content/3.11/aql/functions/miscellaneous.md rename to site/content/arangodb/3.11/aql/functions/miscellaneous.md diff --git a/site/content/3.11/aql/functions/numeric.md b/site/content/arangodb/3.11/aql/functions/numeric.md similarity index 100% rename from site/content/3.11/aql/functions/numeric.md rename to site/content/arangodb/3.11/aql/functions/numeric.md diff --git a/site/content/3.11/aql/functions/string.md b/site/content/arangodb/3.11/aql/functions/string.md similarity index 100% rename from site/content/3.11/aql/functions/string.md rename to site/content/arangodb/3.11/aql/functions/string.md diff --git a/site/content/3.11/aql/functions/type-check-and-cast.md b/site/content/arangodb/3.11/aql/functions/type-check-and-cast.md similarity index 100% rename from site/content/3.11/aql/functions/type-check-and-cast.md rename to site/content/arangodb/3.11/aql/functions/type-check-and-cast.md diff --git a/site/content/3.11/aql/fundamentals/_index.md b/site/content/arangodb/3.11/aql/fundamentals/_index.md similarity index 100% rename from site/content/3.11/aql/fundamentals/_index.md rename to site/content/arangodb/3.11/aql/fundamentals/_index.md diff --git a/site/content/3.11/aql/fundamentals/accessing-data-from-collections.md b/site/content/arangodb/3.11/aql/fundamentals/accessing-data-from-collections.md similarity index 100% rename from site/content/3.11/aql/fundamentals/accessing-data-from-collections.md rename to site/content/arangodb/3.11/aql/fundamentals/accessing-data-from-collections.md diff --git a/site/content/3.11/aql/fundamentals/bind-parameters.md b/site/content/arangodb/3.11/aql/fundamentals/bind-parameters.md similarity index 100% rename from site/content/3.11/aql/fundamentals/bind-parameters.md rename to site/content/arangodb/3.11/aql/fundamentals/bind-parameters.md diff --git a/site/content/3.11/aql/fundamentals/data-types.md b/site/content/arangodb/3.11/aql/fundamentals/data-types.md similarity index 100% rename from site/content/3.11/aql/fundamentals/data-types.md rename to site/content/arangodb/3.11/aql/fundamentals/data-types.md diff --git a/site/content/3.11/aql/fundamentals/limitations.md b/site/content/arangodb/3.11/aql/fundamentals/limitations.md similarity index 100% rename from site/content/3.11/aql/fundamentals/limitations.md rename to site/content/arangodb/3.11/aql/fundamentals/limitations.md diff --git a/site/content/3.11/aql/fundamentals/query-errors.md b/site/content/arangodb/3.11/aql/fundamentals/query-errors.md similarity index 100% rename from site/content/3.11/aql/fundamentals/query-errors.md rename to site/content/arangodb/3.11/aql/fundamentals/query-errors.md diff --git a/site/content/3.11/aql/fundamentals/query-results.md b/site/content/arangodb/3.11/aql/fundamentals/query-results.md similarity index 100% rename from site/content/3.11/aql/fundamentals/query-results.md rename to site/content/arangodb/3.11/aql/fundamentals/query-results.md diff --git a/site/content/3.11/aql/fundamentals/subqueries.md b/site/content/arangodb/3.11/aql/fundamentals/subqueries.md similarity index 100% rename from site/content/3.11/aql/fundamentals/subqueries.md rename to site/content/arangodb/3.11/aql/fundamentals/subqueries.md diff --git a/site/content/3.11/aql/fundamentals/syntax.md b/site/content/arangodb/3.11/aql/fundamentals/syntax.md similarity index 100% rename from site/content/3.11/aql/fundamentals/syntax.md rename to site/content/arangodb/3.11/aql/fundamentals/syntax.md diff --git a/site/content/3.11/aql/fundamentals/type-and-value-order.md b/site/content/arangodb/3.11/aql/fundamentals/type-and-value-order.md similarity index 100% rename from site/content/3.11/aql/fundamentals/type-and-value-order.md rename to site/content/arangodb/3.11/aql/fundamentals/type-and-value-order.md diff --git a/site/content/3.11/aql/graphs/_index.md b/site/content/arangodb/3.11/aql/graphs/_index.md similarity index 100% rename from site/content/3.11/aql/graphs/_index.md rename to site/content/arangodb/3.11/aql/graphs/_index.md diff --git a/site/content/3.11/aql/graphs/all-shortest-paths.md b/site/content/arangodb/3.11/aql/graphs/all-shortest-paths.md similarity index 98% rename from site/content/3.11/aql/graphs/all-shortest-paths.md rename to site/content/arangodb/3.11/aql/graphs/all-shortest-paths.md index a60da2eab8..571a6857d3 100644 --- a/site/content/3.11/aql/graphs/all-shortest-paths.md +++ b/site/content/arangodb/3.11/aql/graphs/all-shortest-paths.md @@ -19,7 +19,7 @@ Every returned path is a JSON object with two attributes: A visual representation of the example graph: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) Each ellipse stands for a train station with the name of the city written inside of it. They are the vertices of the graph. Arrows represent train connections @@ -105,7 +105,7 @@ direction for each collection in your path search. Load an example graph to get a named graph that reflects some possible train connections in Europe and North America: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) ```js --- diff --git a/site/content/3.11/aql/graphs/k-paths.md b/site/content/arangodb/3.11/aql/graphs/k-paths.md similarity index 98% rename from site/content/3.11/aql/graphs/k-paths.md rename to site/content/arangodb/3.11/aql/graphs/k-paths.md index 582232dc9a..e4da13c5e3 100644 --- a/site/content/3.11/aql/graphs/k-paths.md +++ b/site/content/arangodb/3.11/aql/graphs/k-paths.md @@ -20,7 +20,7 @@ Every such path is returned as a JSON object with two components: Here is an example graph to explain how the k Paths algorithm works: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) Each ellipse stands for a train station with the name of the city written inside of it. They are the vertices of the graph. Arrows represent train connections @@ -176,7 +176,7 @@ direction for each collection in your path search. You can load the `kShortestPathsGraph` example graph to get a named graph that reflects some possible train connections in Europe and North America. -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) ```js --- diff --git a/site/content/3.11/aql/graphs/k-shortest-paths.md b/site/content/arangodb/3.11/aql/graphs/k-shortest-paths.md similarity index 98% rename from site/content/3.11/aql/graphs/k-shortest-paths.md rename to site/content/arangodb/3.11/aql/graphs/k-shortest-paths.md index 3a339ea9c9..917dba2516 100644 --- a/site/content/3.11/aql/graphs/k-shortest-paths.md +++ b/site/content/arangodb/3.11/aql/graphs/k-shortest-paths.md @@ -25,7 +25,7 @@ If no `weightAttribute` is specified, the weight of the path is just its length. Here is an example graph to explain how the k Shortest Paths algorithm works: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) Each ellipse stands for a train station with the name of the city written inside of it. They are the vertices of the graph. Arrows represent train connections @@ -182,7 +182,7 @@ direction for each collection in your path search. You can load the `kShortestPathsGraph` example graph to get a named graph that reflects some possible train connections in Europe and North America. -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) ```js --- diff --git a/site/content/3.11/aql/graphs/shortest-path.md b/site/content/arangodb/3.11/aql/graphs/shortest-path.md similarity index 98% rename from site/content/3.11/aql/graphs/shortest-path.md rename to site/content/arangodb/3.11/aql/graphs/shortest-path.md index bfc7e0fa5c..ed8540e777 100644 --- a/site/content/3.11/aql/graphs/shortest-path.md +++ b/site/content/arangodb/3.11/aql/graphs/shortest-path.md @@ -23,7 +23,7 @@ the path: Let's take a look at a simple example to explain how it works. This is the graph that you are going to find a shortest path on: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) You can use the following parameters for the query: @@ -151,7 +151,7 @@ collections you expect to be involved. Creating a simple symmetric traversal demonstration graph: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) ```js --- diff --git a/site/content/3.11/aql/graphs/traversals-explained.md b/site/content/arangodb/3.11/aql/graphs/traversals-explained.md similarity index 83% rename from site/content/3.11/aql/graphs/traversals-explained.md rename to site/content/arangodb/3.11/aql/graphs/traversals-explained.md index a211ae6087..b4e9741151 100644 --- a/site/content/3.11/aql/graphs/traversals-explained.md +++ b/site/content/arangodb/3.11/aql/graphs/traversals-explained.md @@ -31,7 +31,7 @@ set with three items: Let's take a look at a simple example to explain how it works. This is the graph that we are going to traverse: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) We use the following parameters for our query: @@ -40,39 +40,39 @@ We use the following parameters for our query: 3. We use a *max* depth of 2. 4. We follow only in `OUTBOUND` direction of edges -![traversal graph step 1](../../../images/traversal_graph1.png) +![traversal graph step 1](../../../../images/traversal_graph1.png) Now it walks to one of the direct neighbors of **A**, say **B** (note: ordering is not guaranteed!): -![traversal graph step 2](../../../images/traversal_graph2.png) +![traversal graph step 2](../../../../images/traversal_graph2.png) The query will remember the state (red circle) and will emit the first result **A** → **B** (black box). This will also prevent the traverser to be trapped in cycles. Now again it will visit one of the direct neighbors of **B**, say **E**: -![traversal graph step 3](../../../images/traversal_graph3.png) +![traversal graph step 3](../../../../images/traversal_graph3.png) We have limited the query with a *max* depth of *2*, so it will not pick any neighbor of **E**, as the path from **A** to **E** already requires *2* steps. Instead, we will go back one level to **B** and continue with any other direct neighbor there: -![traversal graph step 4](../../../images/traversal_graph4.png) +![traversal graph step 4](../../../../images/traversal_graph4.png) Again after we produced this result we will step back to **B**. But there is no neighbor of **B** left that we have not yet visited. Hence we go another step back to **A** and continue with any other neighbor there. -![traversal graph step 5](../../../images/traversal_graph5.png) +![traversal graph step 5](../../../../images/traversal_graph5.png) And identical to the iterations before we will visit **H**: -![traversal graph step 6](../../../images/traversal_graph6.png) +![traversal graph step 6](../../../../images/traversal_graph6.png) And **J**: -![traversal graph step 7](../../../images/traversal_graph7.png) +![traversal graph step 7](../../../../images/traversal_graph7.png) After these steps there is no further result left. So all together this query has returned the following paths: diff --git a/site/content/3.11/aql/graphs/traversals.md b/site/content/arangodb/3.11/aql/graphs/traversals.md similarity index 99% rename from site/content/3.11/aql/graphs/traversals.md rename to site/content/arangodb/3.11/aql/graphs/traversals.md index 0048d9c38f..f9268387a1 100644 --- a/site/content/3.11/aql/graphs/traversals.md +++ b/site/content/arangodb/3.11/aql/graphs/traversals.md @@ -301,7 +301,7 @@ FOR v, e, p IN 0..10 OUTBOUND "places/Toronto" GRAPH "kShortestPathsGraph" The above example shows a graph traversal using a [train station and connections dataset](../../graphs/example-graphs.md#k-shortest-paths-graph): -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) The traversal starts at **Toronto** (bottom left), the traversal depth is limited to 10, and every station is only visited once. The traversal could @@ -649,7 +649,7 @@ you may be interested in documents further down the path. Create a simple symmetric traversal demonstration graph: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) ```js --- diff --git a/site/content/3.11/aql/high-level-operations/_index.md b/site/content/arangodb/3.11/aql/high-level-operations/_index.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/_index.md rename to site/content/arangodb/3.11/aql/high-level-operations/_index.md diff --git a/site/content/3.11/aql/high-level-operations/collect.md b/site/content/arangodb/3.11/aql/high-level-operations/collect.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/collect.md rename to site/content/arangodb/3.11/aql/high-level-operations/collect.md diff --git a/site/content/3.11/aql/high-level-operations/filter.md b/site/content/arangodb/3.11/aql/high-level-operations/filter.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/filter.md rename to site/content/arangodb/3.11/aql/high-level-operations/filter.md diff --git a/site/content/3.11/aql/high-level-operations/for.md b/site/content/arangodb/3.11/aql/high-level-operations/for.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/for.md rename to site/content/arangodb/3.11/aql/high-level-operations/for.md diff --git a/site/content/3.11/aql/high-level-operations/insert.md b/site/content/arangodb/3.11/aql/high-level-operations/insert.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/insert.md rename to site/content/arangodb/3.11/aql/high-level-operations/insert.md diff --git a/site/content/3.11/aql/high-level-operations/let.md b/site/content/arangodb/3.11/aql/high-level-operations/let.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/let.md rename to site/content/arangodb/3.11/aql/high-level-operations/let.md diff --git a/site/content/3.11/aql/high-level-operations/limit.md b/site/content/arangodb/3.11/aql/high-level-operations/limit.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/limit.md rename to site/content/arangodb/3.11/aql/high-level-operations/limit.md diff --git a/site/content/3.11/aql/high-level-operations/remove.md b/site/content/arangodb/3.11/aql/high-level-operations/remove.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/remove.md rename to site/content/arangodb/3.11/aql/high-level-operations/remove.md diff --git a/site/content/3.11/aql/high-level-operations/replace.md b/site/content/arangodb/3.11/aql/high-level-operations/replace.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/replace.md rename to site/content/arangodb/3.11/aql/high-level-operations/replace.md diff --git a/site/content/3.11/aql/high-level-operations/return.md b/site/content/arangodb/3.11/aql/high-level-operations/return.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/return.md rename to site/content/arangodb/3.11/aql/high-level-operations/return.md diff --git a/site/content/3.11/aql/high-level-operations/search.md b/site/content/arangodb/3.11/aql/high-level-operations/search.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/search.md rename to site/content/arangodb/3.11/aql/high-level-operations/search.md diff --git a/site/content/3.11/aql/high-level-operations/sort.md b/site/content/arangodb/3.11/aql/high-level-operations/sort.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/sort.md rename to site/content/arangodb/3.11/aql/high-level-operations/sort.md diff --git a/site/content/3.11/aql/high-level-operations/update.md b/site/content/arangodb/3.11/aql/high-level-operations/update.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/update.md rename to site/content/arangodb/3.11/aql/high-level-operations/update.md diff --git a/site/content/3.11/aql/high-level-operations/upsert.md b/site/content/arangodb/3.11/aql/high-level-operations/upsert.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/upsert.md rename to site/content/arangodb/3.11/aql/high-level-operations/upsert.md diff --git a/site/content/3.11/aql/high-level-operations/window.md b/site/content/arangodb/3.11/aql/high-level-operations/window.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/window.md rename to site/content/arangodb/3.11/aql/high-level-operations/window.md diff --git a/site/content/3.11/aql/high-level-operations/with.md b/site/content/arangodb/3.11/aql/high-level-operations/with.md similarity index 100% rename from site/content/3.11/aql/high-level-operations/with.md rename to site/content/arangodb/3.11/aql/high-level-operations/with.md diff --git a/site/content/3.11/aql/how-to-invoke-aql/_index.md b/site/content/arangodb/3.11/aql/how-to-invoke-aql/_index.md similarity index 100% rename from site/content/3.11/aql/how-to-invoke-aql/_index.md rename to site/content/arangodb/3.11/aql/how-to-invoke-aql/_index.md diff --git a/site/content/3.11/aql/how-to-invoke-aql/with-arangosh.md b/site/content/arangodb/3.11/aql/how-to-invoke-aql/with-arangosh.md similarity index 100% rename from site/content/3.11/aql/how-to-invoke-aql/with-arangosh.md rename to site/content/arangodb/3.11/aql/how-to-invoke-aql/with-arangosh.md diff --git a/site/content/3.11/aql/how-to-invoke-aql/with-the-web-interface.md b/site/content/arangodb/3.11/aql/how-to-invoke-aql/with-the-web-interface.md similarity index 100% rename from site/content/3.11/aql/how-to-invoke-aql/with-the-web-interface.md rename to site/content/arangodb/3.11/aql/how-to-invoke-aql/with-the-web-interface.md diff --git a/site/content/3.11/aql/operators.md b/site/content/arangodb/3.11/aql/operators.md similarity index 100% rename from site/content/3.11/aql/operators.md rename to site/content/arangodb/3.11/aql/operators.md diff --git a/site/content/3.11/aql/user-defined-functions.md b/site/content/arangodb/3.11/aql/user-defined-functions.md similarity index 100% rename from site/content/3.11/aql/user-defined-functions.md rename to site/content/arangodb/3.11/aql/user-defined-functions.md diff --git a/site/content/3.11/components/_index.md b/site/content/arangodb/3.11/components/_index.md similarity index 100% rename from site/content/3.11/components/_index.md rename to site/content/arangodb/3.11/components/_index.md diff --git a/site/content/3.11/components/arangodb-server/_index.md b/site/content/arangodb/3.11/components/arangodb-server/_index.md similarity index 88% rename from site/content/3.11/components/arangodb-server/_index.md rename to site/content/arangodb/3.11/components/arangodb-server/_index.md index 82da2f3a5f..44c9d1040c 100644 --- a/site/content/3.11/components/arangodb-server/_index.md +++ b/site/content/arangodb/3.11/components/arangodb-server/_index.md @@ -14,8 +14,8 @@ The server process serves the various client connections to the server via the TCP/HTTP protocol. It also provides a [web interface](../web-interface/_index.md). _arangod_ can run in different modes for a variety of setups like single server -and clusters. It differs between the [Community Edition](../../about-arangodb/features/community-edition.md) -and [Enterprise Edition](../../about-arangodb/features/enterprise-edition.md). +and clusters. It differs between the [Community Edition](../../about/features/community-edition.md) +and [Enterprise Edition](../../about/features/enterprise-edition.md). See [Administration](../../operations/administration/_index.md) for server configuration and [Deploy](../../deploy/_index.md) for operation mode details. diff --git a/site/content/3.11/components/arangodb-server/environment-variables.md b/site/content/arangodb/3.11/components/arangodb-server/environment-variables.md similarity index 100% rename from site/content/3.11/components/arangodb-server/environment-variables.md rename to site/content/arangodb/3.11/components/arangodb-server/environment-variables.md diff --git a/site/content/3.11/components/arangodb-server/ldap.md b/site/content/arangodb/3.11/components/arangodb-server/ldap.md similarity index 100% rename from site/content/3.11/components/arangodb-server/ldap.md rename to site/content/arangodb/3.11/components/arangodb-server/ldap.md diff --git a/site/content/3.11/components/arangodb-server/options.md b/site/content/arangodb/3.11/components/arangodb-server/options.md similarity index 100% rename from site/content/3.11/components/arangodb-server/options.md rename to site/content/arangodb/3.11/components/arangodb-server/options.md diff --git a/site/content/3.11/components/arangodb-server/storage-engine.md b/site/content/arangodb/3.11/components/arangodb-server/storage-engine.md similarity index 100% rename from site/content/3.11/components/arangodb-server/storage-engine.md rename to site/content/arangodb/3.11/components/arangodb-server/storage-engine.md diff --git a/site/content/3.12/components/tools/_index.md b/site/content/arangodb/3.11/components/tools/_index.md similarity index 94% rename from site/content/3.12/components/tools/_index.md rename to site/content/arangodb/3.11/components/tools/_index.md index 72bf4118a4..9909dbe302 100644 --- a/site/content/3.12/components/tools/_index.md +++ b/site/content/arangodb/3.11/components/tools/_index.md @@ -31,5 +31,5 @@ Additional tools which are available separately: |-----------------|-------------------| | [Foxx CLI](foxx-cli/_index.md) | Command line tool for managing and developing Foxx services | [kube-arangodb](../../deploy/kubernetes.md) | Operators to manage Kubernetes deployments -| [Oasisctl](../../arangograph/oasisctl/_index.md) | Command-line tool for managing the ArangoGraph Insights Platform +| [Oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) | [ArangoDB Datasets](arango-datasets.md) | A Python package for loading sample datasets into ArangoDB diff --git a/site/content/3.11/components/tools/arango-datasets.md b/site/content/arangodb/3.11/components/tools/arango-datasets.md similarity index 100% rename from site/content/3.11/components/tools/arango-datasets.md rename to site/content/arangodb/3.11/components/tools/arango-datasets.md diff --git a/site/content/3.11/components/tools/arangobackup/_index.md b/site/content/arangodb/3.11/components/tools/arangobackup/_index.md similarity index 100% rename from site/content/3.11/components/tools/arangobackup/_index.md rename to site/content/arangodb/3.11/components/tools/arangobackup/_index.md diff --git a/site/content/3.11/components/tools/arangobackup/examples.md b/site/content/arangodb/3.11/components/tools/arangobackup/examples.md similarity index 100% rename from site/content/3.11/components/tools/arangobackup/examples.md rename to site/content/arangodb/3.11/components/tools/arangobackup/examples.md diff --git a/site/content/3.11/components/tools/arangobackup/options.md b/site/content/arangodb/3.11/components/tools/arangobackup/options.md similarity index 100% rename from site/content/3.11/components/tools/arangobackup/options.md rename to site/content/arangodb/3.11/components/tools/arangobackup/options.md diff --git a/site/content/3.11/components/tools/arangobench/_index.md b/site/content/arangodb/3.11/components/tools/arangobench/_index.md similarity index 100% rename from site/content/3.11/components/tools/arangobench/_index.md rename to site/content/arangodb/3.11/components/tools/arangobench/_index.md diff --git a/site/content/3.11/components/tools/arangobench/options.md b/site/content/arangodb/3.11/components/tools/arangobench/options.md similarity index 100% rename from site/content/3.11/components/tools/arangobench/options.md rename to site/content/arangodb/3.11/components/tools/arangobench/options.md diff --git a/site/content/3.11/components/tools/arangodb-shell/_index.md b/site/content/arangodb/3.11/components/tools/arangodb-shell/_index.md similarity index 100% rename from site/content/3.11/components/tools/arangodb-shell/_index.md rename to site/content/arangodb/3.11/components/tools/arangodb-shell/_index.md diff --git a/site/content/3.11/components/tools/arangodb-shell/details.md b/site/content/arangodb/3.11/components/tools/arangodb-shell/details.md similarity index 100% rename from site/content/3.11/components/tools/arangodb-shell/details.md rename to site/content/arangodb/3.11/components/tools/arangodb-shell/details.md diff --git a/site/content/3.11/components/tools/arangodb-shell/examples.md b/site/content/arangodb/3.11/components/tools/arangodb-shell/examples.md similarity index 100% rename from site/content/3.11/components/tools/arangodb-shell/examples.md rename to site/content/arangodb/3.11/components/tools/arangodb-shell/examples.md diff --git a/site/content/3.11/components/tools/arangodb-shell/options.md b/site/content/arangodb/3.11/components/tools/arangodb-shell/options.md similarity index 100% rename from site/content/3.11/components/tools/arangodb-shell/options.md rename to site/content/arangodb/3.11/components/tools/arangodb-shell/options.md diff --git a/site/content/3.11/components/tools/arangodb-starter/_index.md b/site/content/arangodb/3.11/components/tools/arangodb-starter/_index.md similarity index 100% rename from site/content/3.11/components/tools/arangodb-starter/_index.md rename to site/content/arangodb/3.11/components/tools/arangodb-starter/_index.md diff --git a/site/content/3.11/components/tools/arangodb-starter/architecture.md b/site/content/arangodb/3.11/components/tools/arangodb-starter/architecture.md similarity index 100% rename from site/content/3.11/components/tools/arangodb-starter/architecture.md rename to site/content/arangodb/3.11/components/tools/arangodb-starter/architecture.md diff --git a/site/content/3.11/components/tools/arangodb-starter/options.md b/site/content/arangodb/3.11/components/tools/arangodb-starter/options.md similarity index 100% rename from site/content/3.11/components/tools/arangodb-starter/options.md rename to site/content/arangodb/3.11/components/tools/arangodb-starter/options.md diff --git a/site/content/3.11/components/tools/arangodb-starter/security.md b/site/content/arangodb/3.11/components/tools/arangodb-starter/security.md similarity index 100% rename from site/content/3.11/components/tools/arangodb-starter/security.md rename to site/content/arangodb/3.11/components/tools/arangodb-starter/security.md diff --git a/site/content/3.11/components/tools/arangodump/_index.md b/site/content/arangodb/3.11/components/tools/arangodump/_index.md similarity index 100% rename from site/content/3.11/components/tools/arangodump/_index.md rename to site/content/arangodb/3.11/components/tools/arangodump/_index.md diff --git a/site/content/3.11/components/tools/arangodump/examples.md b/site/content/arangodb/3.11/components/tools/arangodump/examples.md similarity index 100% rename from site/content/3.11/components/tools/arangodump/examples.md rename to site/content/arangodb/3.11/components/tools/arangodump/examples.md diff --git a/site/content/3.11/components/tools/arangodump/limitations.md b/site/content/arangodb/3.11/components/tools/arangodump/limitations.md similarity index 100% rename from site/content/3.11/components/tools/arangodump/limitations.md rename to site/content/arangodb/3.11/components/tools/arangodump/limitations.md diff --git a/site/content/3.11/components/tools/arangodump/maskings.md b/site/content/arangodb/3.11/components/tools/arangodump/maskings.md similarity index 100% rename from site/content/3.11/components/tools/arangodump/maskings.md rename to site/content/arangodb/3.11/components/tools/arangodump/maskings.md diff --git a/site/content/3.11/components/tools/arangodump/options.md b/site/content/arangodb/3.11/components/tools/arangodump/options.md similarity index 100% rename from site/content/3.11/components/tools/arangodump/options.md rename to site/content/arangodb/3.11/components/tools/arangodump/options.md diff --git a/site/content/3.11/components/tools/arangoexport/_index.md b/site/content/arangodb/3.11/components/tools/arangoexport/_index.md similarity index 100% rename from site/content/3.11/components/tools/arangoexport/_index.md rename to site/content/arangodb/3.11/components/tools/arangoexport/_index.md diff --git a/site/content/3.11/components/tools/arangoexport/examples.md b/site/content/arangodb/3.11/components/tools/arangoexport/examples.md similarity index 100% rename from site/content/3.11/components/tools/arangoexport/examples.md rename to site/content/arangodb/3.11/components/tools/arangoexport/examples.md diff --git a/site/content/3.11/components/tools/arangoexport/options.md b/site/content/arangodb/3.11/components/tools/arangoexport/options.md similarity index 100% rename from site/content/3.11/components/tools/arangoexport/options.md rename to site/content/arangodb/3.11/components/tools/arangoexport/options.md diff --git a/site/content/3.11/components/tools/arangoimport/_index.md b/site/content/arangodb/3.11/components/tools/arangoimport/_index.md similarity index 100% rename from site/content/3.11/components/tools/arangoimport/_index.md rename to site/content/arangodb/3.11/components/tools/arangoimport/_index.md diff --git a/site/content/3.11/components/tools/arangoimport/details.md b/site/content/arangodb/3.11/components/tools/arangoimport/details.md similarity index 100% rename from site/content/3.11/components/tools/arangoimport/details.md rename to site/content/arangodb/3.11/components/tools/arangoimport/details.md diff --git a/site/content/3.11/components/tools/arangoimport/examples-csv.md b/site/content/arangodb/3.11/components/tools/arangoimport/examples-csv.md similarity index 100% rename from site/content/3.11/components/tools/arangoimport/examples-csv.md rename to site/content/arangodb/3.11/components/tools/arangoimport/examples-csv.md diff --git a/site/content/3.11/components/tools/arangoimport/examples-json.md b/site/content/arangodb/3.11/components/tools/arangoimport/examples-json.md similarity index 100% rename from site/content/3.11/components/tools/arangoimport/examples-json.md rename to site/content/arangodb/3.11/components/tools/arangoimport/examples-json.md diff --git a/site/content/3.11/components/tools/arangoimport/options.md b/site/content/arangodb/3.11/components/tools/arangoimport/options.md similarity index 100% rename from site/content/3.11/components/tools/arangoimport/options.md rename to site/content/arangodb/3.11/components/tools/arangoimport/options.md diff --git a/site/content/3.11/components/tools/arangoinspect/_index.md b/site/content/arangodb/3.11/components/tools/arangoinspect/_index.md similarity index 100% rename from site/content/3.11/components/tools/arangoinspect/_index.md rename to site/content/arangodb/3.11/components/tools/arangoinspect/_index.md diff --git a/site/content/3.11/components/tools/arangoinspect/examples.md b/site/content/arangodb/3.11/components/tools/arangoinspect/examples.md similarity index 100% rename from site/content/3.11/components/tools/arangoinspect/examples.md rename to site/content/arangodb/3.11/components/tools/arangoinspect/examples.md diff --git a/site/content/3.11/components/tools/arangoinspect/options.md b/site/content/arangodb/3.11/components/tools/arangoinspect/options.md similarity index 100% rename from site/content/3.11/components/tools/arangoinspect/options.md rename to site/content/arangodb/3.11/components/tools/arangoinspect/options.md diff --git a/site/content/3.11/components/tools/arangorestore/_index.md b/site/content/arangodb/3.11/components/tools/arangorestore/_index.md similarity index 100% rename from site/content/3.11/components/tools/arangorestore/_index.md rename to site/content/arangodb/3.11/components/tools/arangorestore/_index.md diff --git a/site/content/3.11/components/tools/arangorestore/examples.md b/site/content/arangodb/3.11/components/tools/arangorestore/examples.md similarity index 100% rename from site/content/3.11/components/tools/arangorestore/examples.md rename to site/content/arangodb/3.11/components/tools/arangorestore/examples.md diff --git a/site/content/3.11/components/tools/arangorestore/options.md b/site/content/arangodb/3.11/components/tools/arangorestore/options.md similarity index 100% rename from site/content/3.11/components/tools/arangorestore/options.md rename to site/content/arangodb/3.11/components/tools/arangorestore/options.md diff --git a/site/content/3.11/components/tools/arangovpack/_index.md b/site/content/arangodb/3.11/components/tools/arangovpack/_index.md similarity index 100% rename from site/content/3.11/components/tools/arangovpack/_index.md rename to site/content/arangodb/3.11/components/tools/arangovpack/_index.md diff --git a/site/content/3.11/components/tools/arangovpack/options.md b/site/content/arangodb/3.11/components/tools/arangovpack/options.md similarity index 100% rename from site/content/3.11/components/tools/arangovpack/options.md rename to site/content/arangodb/3.11/components/tools/arangovpack/options.md diff --git a/site/content/3.11/components/tools/foxx-cli/_index.md b/site/content/arangodb/3.11/components/tools/foxx-cli/_index.md similarity index 100% rename from site/content/3.11/components/tools/foxx-cli/_index.md rename to site/content/arangodb/3.11/components/tools/foxx-cli/_index.md diff --git a/site/content/3.11/components/tools/foxx-cli/details.md b/site/content/arangodb/3.11/components/tools/foxx-cli/details.md similarity index 100% rename from site/content/3.11/components/tools/foxx-cli/details.md rename to site/content/arangodb/3.11/components/tools/foxx-cli/details.md diff --git a/site/content/3.10/components/web-interface/_index.md b/site/content/arangodb/3.11/components/web-interface/_index.md similarity index 90% rename from site/content/3.10/components/web-interface/_index.md rename to site/content/arangodb/3.11/components/web-interface/_index.md index 12863abcb6..dc6affca41 100644 --- a/site/content/3.10/components/web-interface/_index.md +++ b/site/content/arangodb/3.11/components/web-interface/_index.md @@ -13,4 +13,4 @@ convenient way. Statistics and server status are provided as well. The web interface (also referred to as Web UI, frontend or *Aardvark*) can be accessed with a browser under the URL `http://localhost:8529` with default server settings. -![Standalone Web Interface](../../../images/overview.png) +![Standalone Web Interface](../../../../images/overview.png) diff --git a/site/content/3.11/components/web-interface/cluster.md b/site/content/arangodb/3.11/components/web-interface/cluster.md similarity index 94% rename from site/content/3.11/components/web-interface/cluster.md rename to site/content/arangodb/3.11/components/web-interface/cluster.md index 91ae4bd075..108ed759bb 100644 --- a/site/content/3.11/components/web-interface/cluster.md +++ b/site/content/arangodb/3.11/components/web-interface/cluster.md @@ -14,7 +14,7 @@ You can access the logs of individual Coordinators and DB-Servers via the The cluster section displays statistics about the general cluster performance. -![Cluster](../../../images/clusterView.png) +![Cluster](../../../../images/clusterView.png) Statistics: @@ -32,7 +32,7 @@ Statistics: The overview shows available and missing Coordinators and DB-Servers. -![Nodes](../../../images/nodesView.png) +![Nodes](../../../../images/nodesView.png) Functions: @@ -50,7 +50,7 @@ Information (Coordinator / DB-Servers): The shard section displays all available sharded collections. -![Shards](../../../images/shardsView.png) +![Shards](../../../../images/shardsView.png) Functions: diff --git a/site/content/3.11/components/web-interface/collections.md b/site/content/arangodb/3.11/components/web-interface/collections.md similarity index 91% rename from site/content/3.11/components/web-interface/collections.md rename to site/content/arangodb/3.11/components/web-interface/collections.md index d53138f83e..ad8e937e88 100644 --- a/site/content/3.11/components/web-interface/collections.md +++ b/site/content/arangodb/3.11/components/web-interface/collections.md @@ -8,7 +8,7 @@ The collections section displays all available collections. From here you can create new collections and jump into a collection for details (click on a collection tile). -![Collections](../../../images/collectionsView.png) +![Collections](../../../../images/collectionsView.png) Functions: @@ -26,7 +26,7 @@ Information: ## Collection -![Collection](../../../images/collectionView.png) +![Collection](../../../../images/collectionView.png) There are four view categories: diff --git a/site/content/3.11/components/web-interface/dashboard.md b/site/content/arangodb/3.11/components/web-interface/dashboard.md similarity index 92% rename from site/content/3.11/components/web-interface/dashboard.md rename to site/content/arangodb/3.11/components/web-interface/dashboard.md index aac4f439ae..599127ba12 100644 --- a/site/content/3.11/components/web-interface/dashboard.md +++ b/site/content/arangodb/3.11/components/web-interface/dashboard.md @@ -7,7 +7,7 @@ description: '' The **DASHBOARD** section provides statistics which are polled regularly from the ArangoDB server. -![Nodes](../../../images/dashboardView.png) +![Nodes](../../../../images/dashboardView.png) There is a different interface for [Cluster](cluster.md) deployments. diff --git a/site/content/3.10/components/web-interface/document.md b/site/content/arangodb/3.11/components/web-interface/document.md similarity index 87% rename from site/content/3.10/components/web-interface/document.md rename to site/content/arangodb/3.11/components/web-interface/document.md index 2ff9addb44..85cc5583a9 100644 --- a/site/content/3.10/components/web-interface/document.md +++ b/site/content/arangodb/3.11/components/web-interface/document.md @@ -6,7 +6,7 @@ description: '' --- The document section offers a editor which let you edit documents and edges of a collection. -![Document](../../../images/documentView.png) +![Document](../../../../images/documentView.png) Functions: diff --git a/site/content/3.11/components/web-interface/graphs.md b/site/content/arangodb/3.11/components/web-interface/graphs.md similarity index 98% rename from site/content/3.11/components/web-interface/graphs.md rename to site/content/arangodb/3.11/components/web-interface/graphs.md index dafa51f9f8..3388a97ae5 100644 --- a/site/content/3.11/components/web-interface/graphs.md +++ b/site/content/arangodb/3.11/components/web-interface/graphs.md @@ -12,7 +12,7 @@ lets you create new named graphs as well as view and edit the settings of existing named graphs. It also provides a viewer facility for visualizing subsets of a graph or an entire graph. -![manage graphs](../../../images/graphsView.png) +![manage graphs](../../../../images/graphsView.png) ## Create a named graph @@ -59,7 +59,7 @@ their direct neighbors are selected. You can select one or more start nodes and change the depth and the limit in the settings panel. You can also load the entire graph via the toolbar, but only use this with small graphs. -![The graph viewer with the settings panel open](../../../images/graphViewer.png) +![The graph viewer with the settings panel open](../../../../images/graphViewer.png) ### Viewport diff --git a/site/content/3.10/components/web-interface/logs.md b/site/content/arangodb/3.11/components/web-interface/logs.md similarity index 87% rename from site/content/3.10/components/web-interface/logs.md rename to site/content/arangodb/3.11/components/web-interface/logs.md index f9ddcc007b..46c70ffb19 100644 --- a/site/content/3.10/components/web-interface/logs.md +++ b/site/content/arangodb/3.11/components/web-interface/logs.md @@ -7,7 +7,7 @@ description: '' The logs section displays all available log entries. Log entries are filterable by their log level types. -![Logs](../../../images/logsView.png) +![Logs](../../../../images/logsView.png) Functions: diff --git a/site/content/3.11/components/web-interface/queries.md b/site/content/arangodb/3.11/components/web-interface/queries.md similarity index 91% rename from site/content/3.11/components/web-interface/queries.md rename to site/content/arangodb/3.11/components/web-interface/queries.md index c263e2e6b0..bc5d76591b 100644 --- a/site/content/3.11/components/web-interface/queries.md +++ b/site/content/arangodb/3.11/components/web-interface/queries.md @@ -14,7 +14,7 @@ The query view offers you three different subviews: The web interface offers a AQL Query Editor: -![Editor Input](../../../images/queryEditorInput.png) +![Editor Input](../../../../images/queryEditorInput.png) The editor is split into two parts, the query editor pane and the bind parameter pane. @@ -49,7 +49,7 @@ edit the bind parameters in raw JSON format. To save the current query use the *Save* button in the top left corner of the editor or use the shortcut (see below). -![Custom Queries](../../../images/queryCustoms.png) +![Custom Queries](../../../../images/queryCustoms.png) By pressing the *Queries* button in the top left corner of the editor you activate the custom queries view. Here you can select a previously stored custom @@ -70,7 +70,7 @@ right-hand side. ### Result -![Editor Output](../../../images/queryEditorOutput.png) +![Editor Output](../../../../images/queryEditorOutput.png) Each query you execute or explain opens up a new result box, so you are able to fire up multiple queries and view their results at the same time. Every query @@ -81,7 +81,7 @@ switches back and forth between the *Result* and *AQL* query with bind parameter ### Spotlight -![Spotlight](../../../images/querySpotlight.png) +![Spotlight](../../../../images/querySpotlight.png) The spotlight feature opens up a modal view. There you can find all AQL keywords, AQL functions and collections (filtered by their type) to help you to be more @@ -105,13 +105,13 @@ in the toolbar or via shortcut (see below). ## Running Queries -![Running Queries](../../../images/runningQueries.png) +![Running Queries](../../../../images/runningQueries.png) The *Running Queries* tab gives you a compact overview of all running queries. By clicking the red minus button, you can abort the execution of a running query. ## Slow Query History -![Slow Queries](../../../images/slowQueries.png) +![Slow Queries](../../../../images/slowQueries.png) The *Slow Query History* tab gives you a compact overview of all past slow queries. diff --git a/site/content/3.11/components/web-interface/services.md b/site/content/arangodb/3.11/components/web-interface/services.md similarity index 87% rename from site/content/3.11/components/web-interface/services.md rename to site/content/arangodb/3.11/components/web-interface/services.md index 3bae62eb84..478bfd2b29 100644 --- a/site/content/3.11/components/web-interface/services.md +++ b/site/content/arangodb/3.11/components/web-interface/services.md @@ -7,7 +7,7 @@ description: '' The services section displays all installed Foxx applications. You can create new services or go into a detailed view of a chosen service. -![Services](../../../images/servicesView.png) +![Services](../../../../images/servicesView.png) ## Create Service @@ -18,13 +18,13 @@ There are four different possibilities to create a new service: 3. Create service via official ArangoDB store 4. Create a blank service from scratch -![Create Service](../../../images/installService.png) +![Create Service](../../../../images/installService.png) ## Service View This section offers several information about a specific service. -![Create Service](../../../images/serviceView.png) +![Create Service](../../../../images/serviceView.png) There are four view categories: diff --git a/site/content/3.10/components/web-interface/users.md b/site/content/arangodb/3.11/components/web-interface/users.md similarity index 90% rename from site/content/3.10/components/web-interface/users.md rename to site/content/arangodb/3.11/components/web-interface/users.md index 3ecc4fc927..49b3511339 100644 --- a/site/content/3.10/components/web-interface/users.md +++ b/site/content/arangodb/3.11/components/web-interface/users.md @@ -7,21 +7,21 @@ description: '' ArangoDB users are globally stored in the `_system` database and can only be managed while logged on to this database. There you can find the *Users* section: -![Users](../../../images/users.png) +![Users](../../../../images/users.png) ## General Select a user to bring up the *General* tab with the username, name and active status, as well as options to delete the user or change the password. -![User General](../../../images/userGeneral.png) +![User General](../../../../images/userGeneral.png) ## Permissions Select a user and go to the *Permissions* tab. You will see a list of databases and their corresponding database access level for that user. -![User Permissions](../../../images/userPermissions.png) +![User Permissions](../../../../images/userPermissions.png) Please note that server access level follows from the access level on the `_system` database. Furthermore, the default database access level diff --git a/site/content/3.11/concepts/_index.md b/site/content/arangodb/3.11/concepts/_index.md similarity index 100% rename from site/content/3.11/concepts/_index.md rename to site/content/arangodb/3.11/concepts/_index.md diff --git a/site/content/3.11/concepts/data-models.md b/site/content/arangodb/3.11/concepts/data-models.md similarity index 100% rename from site/content/3.11/concepts/data-models.md rename to site/content/arangodb/3.11/concepts/data-models.md diff --git a/site/content/3.11/concepts/data-retrieval.md b/site/content/arangodb/3.11/concepts/data-retrieval.md similarity index 100% rename from site/content/3.11/concepts/data-retrieval.md rename to site/content/arangodb/3.11/concepts/data-retrieval.md diff --git a/site/content/3.11/concepts/data-structure/_index.md b/site/content/arangodb/3.11/concepts/data-structure/_index.md similarity index 100% rename from site/content/3.11/concepts/data-structure/_index.md rename to site/content/arangodb/3.11/concepts/data-structure/_index.md diff --git a/site/content/3.11/concepts/data-structure/collections.md b/site/content/arangodb/3.11/concepts/data-structure/collections.md similarity index 100% rename from site/content/3.11/concepts/data-structure/collections.md rename to site/content/arangodb/3.11/concepts/data-structure/collections.md diff --git a/site/content/3.11/concepts/data-structure/databases.md b/site/content/arangodb/3.11/concepts/data-structure/databases.md similarity index 100% rename from site/content/3.11/concepts/data-structure/databases.md rename to site/content/arangodb/3.11/concepts/data-structure/databases.md diff --git a/site/content/3.11/concepts/data-structure/documents/_index.md b/site/content/arangodb/3.11/concepts/data-structure/documents/_index.md similarity index 100% rename from site/content/3.11/concepts/data-structure/documents/_index.md rename to site/content/arangodb/3.11/concepts/data-structure/documents/_index.md diff --git a/site/content/3.11/concepts/data-structure/documents/computed-values.md b/site/content/arangodb/3.11/concepts/data-structure/documents/computed-values.md similarity index 100% rename from site/content/3.11/concepts/data-structure/documents/computed-values.md rename to site/content/arangodb/3.11/concepts/data-structure/documents/computed-values.md diff --git a/site/content/3.11/concepts/data-structure/documents/schema-validation.md b/site/content/arangodb/3.11/concepts/data-structure/documents/schema-validation.md similarity index 100% rename from site/content/3.11/concepts/data-structure/documents/schema-validation.md rename to site/content/arangodb/3.11/concepts/data-structure/documents/schema-validation.md diff --git a/site/content/3.11/concepts/data-structure/views.md b/site/content/arangodb/3.11/concepts/data-structure/views.md similarity index 100% rename from site/content/3.11/concepts/data-structure/views.md rename to site/content/arangodb/3.11/concepts/data-structure/views.md diff --git a/site/content/3.11/data-science/_index.md b/site/content/arangodb/3.11/data-science/_index.md similarity index 94% rename from site/content/3.11/data-science/_index.md rename to site/content/arangodb/3.11/data-science/_index.md index 32d6450b82..7f8eee4780 100644 --- a/site/content/3.11/data-science/_index.md +++ b/site/content/arangodb/3.11/data-science/_index.md @@ -21,7 +21,7 @@ ArangoDB, as the foundation for GraphML, comes with the following key features: - **Open Source**: extensibility and community. - **NLP Support**: built-in text processing, search, and similarity ranking. -![ArangoDB Machine Learning Architecture](../../images/machine-learning-architecture.png) +![ArangoDB Machine Learning Architecture](../../../images/machine-learning-architecture.png) ## Graph Analytics vs. GraphML @@ -38,7 +38,7 @@ Graph queries can also determine the shortest paths between vertices. Graph queries can answer questions like _**Who can introduce me to person X**_? -![Graph Query](../../images/graph-query.png) +![Graph Query](../../../images/graph-query.png) See [Graphs in AQL](../aql/graphs/_index.md) for the supported graph queries. @@ -49,7 +49,7 @@ know aggregate information about your graph, while analyzing the entire graph. Graph analytics can answer questions like _**Who are the most connected persons**_? -![Graph Analytics](../../images/graph-analytics.png) +![Graph Analytics](../../../images/graph-analytics.png) ArangoDB offers _Graph Analytics Engines_ to run algorithms such as connected components, label propagation, and PageRank on your data. This feature @@ -66,7 +66,7 @@ GraphML can answer questions like: - _**Will a customer churn?**_ - _**Is this particular transaction Anomalous?**_ -![Graph ML](../../images/graph-ml.png) +![Graph ML](../../../images/graph-ml.png) For ArangoDB's enterprise-ready, graph-powered machine learning offering, see [ArangoGraphML](arangographml/_index.md). @@ -120,7 +120,7 @@ The ArangoFlix demo uses five different recommendation methods: - Matrix Factorization - Graph Neural Networks -![ArangoFlix demo](../../images/data-science-arangoflix.png) +![ArangoFlix demo](../../../images/data-science-arangoflix.png) The ArangoFlix website not only offers an example of how the user recommendations might look like in real life, but it also provides information on a recommendation method, diff --git a/site/content/3.11/data-science/adapters/_index.md b/site/content/arangodb/3.11/data-science/adapters/_index.md similarity index 100% rename from site/content/3.11/data-science/adapters/_index.md rename to site/content/arangodb/3.11/data-science/adapters/_index.md diff --git a/site/content/3.11/data-science/adapters/arangodb-cugraph-adapter.md b/site/content/arangodb/3.11/data-science/adapters/arangodb-cugraph-adapter.md similarity index 100% rename from site/content/3.11/data-science/adapters/arangodb-cugraph-adapter.md rename to site/content/arangodb/3.11/data-science/adapters/arangodb-cugraph-adapter.md diff --git a/site/content/3.11/data-science/adapters/arangodb-dgl-adapter.md b/site/content/arangodb/3.11/data-science/adapters/arangodb-dgl-adapter.md similarity index 100% rename from site/content/3.11/data-science/adapters/arangodb-dgl-adapter.md rename to site/content/arangodb/3.11/data-science/adapters/arangodb-dgl-adapter.md diff --git a/site/content/3.11/data-science/adapters/arangodb-networkx-adapter.md b/site/content/arangodb/3.11/data-science/adapters/arangodb-networkx-adapter.md similarity index 100% rename from site/content/3.11/data-science/adapters/arangodb-networkx-adapter.md rename to site/content/arangodb/3.11/data-science/adapters/arangodb-networkx-adapter.md diff --git a/site/content/3.11/data-science/adapters/arangodb-pyg-adapter.md b/site/content/arangodb/3.11/data-science/adapters/arangodb-pyg-adapter.md similarity index 100% rename from site/content/3.11/data-science/adapters/arangodb-pyg-adapter.md rename to site/content/arangodb/3.11/data-science/adapters/arangodb-pyg-adapter.md diff --git a/site/content/3.11/data-science/adapters/arangodb-rdf-adapter.md b/site/content/arangodb/3.11/data-science/adapters/arangodb-rdf-adapter.md similarity index 100% rename from site/content/3.11/data-science/adapters/arangodb-rdf-adapter.md rename to site/content/arangodb/3.11/data-science/adapters/arangodb-rdf-adapter.md diff --git a/site/content/arangodb/3.11/data-science/arangograph-notebooks.md b/site/content/arangodb/3.11/data-science/arangograph-notebooks.md new file mode 100644 index 0000000000..833a0525f1 --- /dev/null +++ b/site/content/arangodb/3.11/data-science/arangograph-notebooks.md @@ -0,0 +1,22 @@ +--- +title: AMP Notebooks +menuTitle: AMP Notebooks +weight: 130 +description: >- + Colocated Jupyter Notebooks within the Arango Managed Platform +--- +{{< tip >}} +AMP Notebooks don't include the ArangoGraphML services. +To enable the ArangoGraphML services, +[get in touch](https://www.arangodb.com/contact/) +with the ArangoDB team. +{{< /tip >}} + +The AMP Notebook is a JupyterLab notebook embedded in the +[Arango Managed Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). +The notebook integrates seamlessly with the platform, +automatically connecting to AMP services and ArangoDB. +This makes it much easier to leverage these resources without having +to download any data locally or to remember user IDs, passwords, and endpoint URLs. + +For more information, see the [Notebooks](../../../amp/notebooks.md) documentation. diff --git a/site/content/3.11/data-science/arangographml/_index.md b/site/content/arangodb/3.11/data-science/arangographml/_index.md similarity index 98% rename from site/content/3.11/data-science/arangographml/_index.md rename to site/content/arangodb/3.11/data-science/arangographml/_index.md index e8d6ea4137..4a570b9f68 100644 --- a/site/content/3.11/data-science/arangographml/_index.md +++ b/site/content/arangodb/3.11/data-science/arangographml/_index.md @@ -36,9 +36,9 @@ ArangoGraphML streamlines these steps, providing an intuitive and scalable framework to integrate GraphML into various applications, from fraud detection to recommendation systems. -![GraphML Embeddings](../../../images/GraphML-Embeddings.webp) +![GraphML Embeddings](../../../../images/GraphML-Embeddings.webp) -![GraphML Workflow](../../../images/GraphML-How-it-works.webp) +![GraphML Workflow](../../../../images/GraphML-How-it-works.webp) It is no longer necessary to understand the complexities involved with graph machine learning, thanks to the accessibility of the ArangoML package. diff --git a/site/content/3.11/data-science/arangographml/deploy.md b/site/content/arangodb/3.11/data-science/arangographml/deploy.md similarity index 94% rename from site/content/3.11/data-science/arangographml/deploy.md rename to site/content/arangodb/3.11/data-science/arangographml/deploy.md index 0d62cb12f6..ceb4b92662 100644 --- a/site/content/3.11/data-science/arangographml/deploy.md +++ b/site/content/arangodb/3.11/data-science/arangographml/deploy.md @@ -36,7 +36,7 @@ with the ArangoDB team. - Metadata capture - Model management -![ArangoGraphML Pipeline](../../../images/ArangoGraphML_Pipeline.png) +![ArangoGraphML Pipeline](../../../../images/ArangoGraphML_Pipeline.png) #### Setup @@ -49,7 +49,7 @@ GraphML functionalities. To summarize, all you need to do is: 1. Sign up for an [ArangoGraph account](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -2. Create a new [deployment in ArangoGraph](../../arangograph/deployments/_index.md#how-to-create-a-new-deployment). +2. Create a new [deployment in ArangoGraph](../../../../amp/deployments/_index.md#how-to-create-a-new-deployment). 3. Start using the ArangoGraphML functionalities. ### Self-managed ArangoGraphML diff --git a/site/content/3.11/data-science/arangographml/getting-started.md b/site/content/arangodb/3.11/data-science/arangographml/getting-started.md similarity index 99% rename from site/content/3.11/data-science/arangographml/getting-started.md rename to site/content/arangodb/3.11/data-science/arangographml/getting-started.md index 6bd614167e..e6c6221fdc 100644 --- a/site/content/3.11/data-science/arangographml/getting-started.md +++ b/site/content/arangodb/3.11/data-science/arangographml/getting-started.md @@ -173,12 +173,12 @@ Knowledge Graph constructed from the [GDELT Project](https://www.gdeltproject.or The events used range from peaceful protests to significant battles in Angola. The image below depicts the connections around an example event: -![Example Event](../../../images/ArangoML_open_intelligence_sample.png) +![Example Event](../../../../images/ArangoML_open_intelligence_sample.png) You can also see a larger portion of this graph, showing how the events, actors, news sources, and locations are interconnected into a large graph. -![Example Event](../../../images/ArangoML_open_intelligence_visualization.png) +![Example Event](../../../../images/ArangoML_open_intelligence_visualization.png) Let's get started! diff --git a/site/content/3.11/data-science/graph-analytics.md b/site/content/arangodb/3.11/data-science/graph-analytics.md similarity index 98% rename from site/content/3.11/data-science/graph-analytics.md rename to site/content/arangodb/3.11/data-science/graph-analytics.md index 18df401e84..dca26ae758 100644 --- a/site/content/3.11/data-science/graph-analytics.md +++ b/site/content/arangodb/3.11/data-science/graph-analytics.md @@ -62,15 +62,15 @@ Single server deployments using ArangoDB version 3.11 are not supported. The [Management API](#management-api) for deploying and deleting engines requires an ArangoGraph **API key**. See -[Generating an API Key](../arangograph/api/get-started.md#generating-an-api-key) +[Generating an API Key](../../../amp/api/get-started.md#generating-an-api-key) on how to create one. You then need to generate an **access token** using the API key. See -[Authenticating with Oasisctl](../arangograph/api/get-started.md#authenticating-with-oasisctl) +[Authenticating with Oasisctl](../../../amp/api/get-started.md#authenticating-with-oasisctl) on how to do so using `oasisctl login`. The [Engine API](#engine-api) uses one of two authentication methods, depending -on the [__auto login to database UI__](../arangograph/deployments/_index.md#auto-login-to-database-ui) +on the [__auto login to database UI__](../../../amp/deployments/_index.md#auto-login-to-database-ui) setting in ArangoGraph: - **Enabled**: You can use an ArangoGraph access token created with an API key (see above), allowing you to use one token for both the Management API and @@ -382,7 +382,7 @@ It is probably impossible to discover an efficient algorithm which computes them in a distributed way. Fortunately there are scalable substitutions available, which should be equally usable for most use cases. -![Illustration of an execution of different centrality measures (Freeman 1977)](../../images/centrality_visual.png) +![Illustration of an execution of different centrality measures (Freeman 1977)](../../../images/centrality_visual.png) ##### Betweenness Centrality @@ -416,7 +416,7 @@ A common definitions of centrality is the **closeness centrality** length of the shortest path between the vertex and all other vertices. For vertices *x*, *y* and shortest distance `d(y, x)` it is defined as: -![Vertex Closeness Formula](../../images/closeness.png) +![Vertex Closeness Formula](../../../images/closeness.png) Effective Closeness approximates the closeness measure. The algorithm works by iteratively estimating the number of shortest paths passing through each vertex. @@ -452,7 +452,7 @@ Another common measure is the [*betweenness* centrality](https://en.wikipedia.or It measures the number of times a vertex is part of shortest paths between any pairs of vertices. For a vertex *v* betweenness is defined as: -![Vertex Betweenness Formula](../../images/betweenness.png) +![Vertex Betweenness Formula](../../../images/betweenness.png) Where the σ represents the number of shortest paths between *x* and *y*, and σ(v) represents the number of paths also passing through a vertex *v*. diff --git a/site/content/3.11/data-science/llm-knowledge-graphs.md b/site/content/arangodb/3.11/data-science/llm-knowledge-graphs.md similarity index 97% rename from site/content/3.11/data-science/llm-knowledge-graphs.md rename to site/content/arangodb/3.11/data-science/llm-knowledge-graphs.md index aa5c11bc84..7cd2e3a447 100644 --- a/site/content/3.11/data-science/llm-knowledge-graphs.md +++ b/site/content/arangodb/3.11/data-science/llm-knowledge-graphs.md @@ -46,7 +46,7 @@ the following tasks: - End-to-end knowledge graph construction - (Text) Embeddings -![ArangoDB Knowledge Graphs and LLMs](../../images/ArangoDB-knowledge-graphs-meets-llms.png) +![ArangoDB Knowledge Graphs and LLMs](../../../images/ArangoDB-knowledge-graphs-meets-llms.png) ## ArangoDB and LangChain diff --git a/site/content/3.11/data-science/pregel/_index.md b/site/content/arangodb/3.11/data-science/pregel/_index.md similarity index 100% rename from site/content/3.11/data-science/pregel/_index.md rename to site/content/arangodb/3.11/data-science/pregel/_index.md diff --git a/site/content/3.11/data-science/pregel/algorithms.md b/site/content/arangodb/3.11/data-science/pregel/algorithms.md similarity index 98% rename from site/content/3.11/data-science/pregel/algorithms.md rename to site/content/arangodb/3.11/data-science/pregel/algorithms.md index b596d7669b..3b17aecc8b 100644 --- a/site/content/3.11/data-science/pregel/algorithms.md +++ b/site/content/arangodb/3.11/data-science/pregel/algorithms.md @@ -215,7 +215,7 @@ It is probably impossible to discover an efficient algorithm which computes them in a distributed way. Fortunately there are scalable substitutions available, which should be equally usable for most use cases. -![Illustration of an execution of different centrality measures (Freeman 1977)](../../../images/centrality_visual.png) +![Illustration of an execution of different centrality measures (Freeman 1977)](../../../../images/centrality_visual.png) #### Effective Closeness @@ -224,7 +224,7 @@ A common definitions of centrality is the **closeness centrality** length of the shortest path between the vertex and all other vertices. For vertices *x*, *y* and shortest distance `d(y, x)` it is defined as: -![Vertex Closeness Formula](../../../images/closeness.png) +![Vertex Closeness Formula](../../../../images/closeness.png) Effective Closeness approximates the closeness measure. The algorithm works by iteratively estimating the number of shortest paths passing through each vertex. @@ -252,7 +252,7 @@ Another common measure is the [*betweenness* centrality](https://en.wikipedia.or It measures the number of times a vertex is part of shortest paths between any pairs of vertices. For a vertex *v* betweenness is defined as: -![Vertex Betweenness Formula](../../../images/betweenness.png) +![Vertex Betweenness Formula](../../../../images/betweenness.png) Where the σ represents the number of shortest paths between *x* and *y*, and σ(v) represents the number of paths also passing through a vertex *v*. diff --git a/site/content/3.11/deploy/_index.md b/site/content/arangodb/3.11/deploy/_index.md similarity index 97% rename from site/content/3.11/deploy/_index.md rename to site/content/arangodb/3.11/deploy/_index.md index be8b6e30f4..d23d40ddf1 100644 --- a/site/content/3.11/deploy/_index.md +++ b/site/content/arangodb/3.11/deploy/_index.md @@ -78,7 +78,7 @@ There are different ways to set up and operate ArangoDB. ArangoDB Kubernetes Operator (`kube-arangodb`). The fastest way to get ArangoDB up and running is to run it in the cloud - the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) offers a fully managed cloud service, available on AWS and GCP. ### Manual Deployment @@ -136,7 +136,7 @@ If you want a specific version, download the precompiled executable via the ### Run in the cloud - [AWS and Azure](in-the-cloud.md) -- [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), +- [Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), fully managed, available on AWS and GCP ### Run in Kubernetes diff --git a/site/content/3.11/deploy/active-failover/_index.md b/site/content/arangodb/3.11/deploy/active-failover/_index.md similarity index 99% rename from site/content/3.11/deploy/active-failover/_index.md rename to site/content/arangodb/3.11/deploy/active-failover/_index.md index 21bd1e1bba..223002c10f 100644 --- a/site/content/3.11/deploy/active-failover/_index.md +++ b/site/content/arangodb/3.11/deploy/active-failover/_index.md @@ -22,7 +22,7 @@ The Active Failover deployment mode is deprecated and will no longer be supported in the next minor version of ArangoDB, from v3.12 onward. {{< /warning >}} -![ArangoDB Active Failover](../../../images/leader-follower.png) +![ArangoDB Active Failover](../../../../images/leader-follower.png) The advantage of the _Active Failover_ setup is that there is an active third party, the _Agency_, which observes and supervises all involved server processes. diff --git a/site/content/3.11/deploy/active-failover/administration.md b/site/content/arangodb/3.11/deploy/active-failover/administration.md similarity index 100% rename from site/content/3.11/deploy/active-failover/administration.md rename to site/content/arangodb/3.11/deploy/active-failover/administration.md diff --git a/site/content/3.11/deploy/active-failover/manual-start.md b/site/content/arangodb/3.11/deploy/active-failover/manual-start.md similarity index 100% rename from site/content/3.11/deploy/active-failover/manual-start.md rename to site/content/arangodb/3.11/deploy/active-failover/manual-start.md diff --git a/site/content/3.11/deploy/active-failover/using-the-arangodb-starter.md b/site/content/arangodb/3.11/deploy/active-failover/using-the-arangodb-starter.md similarity index 100% rename from site/content/3.11/deploy/active-failover/using-the-arangodb-starter.md rename to site/content/arangodb/3.11/deploy/active-failover/using-the-arangodb-starter.md diff --git a/site/content/3.11/deploy/arangosync/_index.md b/site/content/arangodb/3.11/deploy/arangosync/_index.md similarity index 99% rename from site/content/3.11/deploy/arangosync/_index.md rename to site/content/arangodb/3.11/deploy/arangosync/_index.md index b660c58918..84e98d03fd 100644 --- a/site/content/3.11/deploy/arangosync/_index.md +++ b/site/content/arangodb/3.11/deploy/arangosync/_index.md @@ -27,7 +27,7 @@ in one place to a Cluster in another place. Typically it is used from one datace to another. It is possible to replicate to multiple other datacenters as well. It is not a solution for replicating single server instances. -![ArangoDB DC2DC](../../../images/dc2dc_topology.png) +![ArangoDB DC2DC](../../../../images/dc2dc_topology.png) The replication done by _ArangoSync_ is **asynchronous**. That means that when a client is writing data into the source datacenter, it will consider the diff --git a/site/content/3.11/deploy/arangosync/administration.md b/site/content/arangodb/3.11/deploy/arangosync/administration.md similarity index 100% rename from site/content/3.11/deploy/arangosync/administration.md rename to site/content/arangodb/3.11/deploy/arangosync/administration.md diff --git a/site/content/3.11/deploy/arangosync/deployment/_index.md b/site/content/arangodb/3.11/deploy/arangosync/deployment/_index.md similarity index 100% rename from site/content/3.11/deploy/arangosync/deployment/_index.md rename to site/content/arangodb/3.11/deploy/arangosync/deployment/_index.md diff --git a/site/content/3.11/deploy/arangosync/deployment/arangodb-cluster.md b/site/content/arangodb/3.11/deploy/arangosync/deployment/arangodb-cluster.md similarity index 100% rename from site/content/3.11/deploy/arangosync/deployment/arangodb-cluster.md rename to site/content/arangodb/3.11/deploy/arangosync/deployment/arangodb-cluster.md diff --git a/site/content/3.11/deploy/arangosync/deployment/arangosync-master.md b/site/content/arangodb/3.11/deploy/arangosync/deployment/arangosync-master.md similarity index 100% rename from site/content/3.11/deploy/arangosync/deployment/arangosync-master.md rename to site/content/arangodb/3.11/deploy/arangosync/deployment/arangosync-master.md diff --git a/site/content/3.11/deploy/arangosync/deployment/arangosync-workers.md b/site/content/arangodb/3.11/deploy/arangosync/deployment/arangosync-workers.md similarity index 100% rename from site/content/3.11/deploy/arangosync/deployment/arangosync-workers.md rename to site/content/arangodb/3.11/deploy/arangosync/deployment/arangosync-workers.md diff --git a/site/content/3.11/deploy/arangosync/deployment/prometheus-and-grafana.md b/site/content/arangodb/3.11/deploy/arangosync/deployment/prometheus-and-grafana.md similarity index 100% rename from site/content/3.11/deploy/arangosync/deployment/prometheus-and-grafana.md rename to site/content/arangodb/3.11/deploy/arangosync/deployment/prometheus-and-grafana.md diff --git a/site/content/3.11/deploy/arangosync/monitoring.md b/site/content/arangodb/3.11/deploy/arangosync/monitoring.md similarity index 100% rename from site/content/3.11/deploy/arangosync/monitoring.md rename to site/content/arangodb/3.11/deploy/arangosync/monitoring.md diff --git a/site/content/3.11/deploy/arangosync/operations-and-maintenance.md b/site/content/arangodb/3.11/deploy/arangosync/operations-and-maintenance.md similarity index 100% rename from site/content/3.11/deploy/arangosync/operations-and-maintenance.md rename to site/content/arangodb/3.11/deploy/arangosync/operations-and-maintenance.md diff --git a/site/content/3.11/deploy/arangosync/security.md b/site/content/arangodb/3.11/deploy/arangosync/security.md similarity index 100% rename from site/content/3.11/deploy/arangosync/security.md rename to site/content/arangodb/3.11/deploy/arangosync/security.md diff --git a/site/content/3.11/deploy/arangosync/troubleshooting.md b/site/content/arangodb/3.11/deploy/arangosync/troubleshooting.md similarity index 100% rename from site/content/3.11/deploy/arangosync/troubleshooting.md rename to site/content/arangodb/3.11/deploy/arangosync/troubleshooting.md diff --git a/site/content/3.11/deploy/architecture/_index.md b/site/content/arangodb/3.11/deploy/architecture/_index.md similarity index 100% rename from site/content/3.11/deploy/architecture/_index.md rename to site/content/arangodb/3.11/deploy/architecture/_index.md diff --git a/site/content/3.11/deploy/architecture/data-sharding.md b/site/content/arangodb/3.11/deploy/architecture/data-sharding.md similarity index 98% rename from site/content/3.11/deploy/architecture/data-sharding.md rename to site/content/arangodb/3.11/deploy/architecture/data-sharding.md index d495f38981..6139b13938 100644 --- a/site/content/3.11/deploy/architecture/data-sharding.md +++ b/site/content/arangodb/3.11/deploy/architecture/data-sharding.md @@ -44,7 +44,7 @@ cost-effective than pre-provisioning a single large machine. Increased complexity in infrastructure can be managed using modern containerization and cluster orchestrations tools like [Kubernetes](../kubernetes.md). -![Cluster Sharding](../../../images/cluster_sharding.jpg) +![Cluster Sharding](../../../../images/cluster_sharding.jpg) To achieve this ArangoDB splits your dataset into so called _shards_. The number of shards is something you may choose according to your needs. Proper sharding @@ -84,7 +84,7 @@ a given document is to be stored. Choosing the right shard key can have significant impact on your performance can reduce network traffic and increase performance. -![Hash Sharding](../../../images/cluster_sharding_hash.jpg) +![Hash Sharding](../../../../images/cluster_sharding_hash.jpg) ArangoDB uses consistent hashing to compute the target shard from the given values (as specified via by the `shardKeys` collection property). The ideal set diff --git a/site/content/3.11/deploy/architecture/replication.md b/site/content/arangodb/3.11/deploy/architecture/replication.md similarity index 100% rename from site/content/3.11/deploy/architecture/replication.md rename to site/content/arangodb/3.11/deploy/architecture/replication.md diff --git a/site/content/3.11/deploy/architecture/scalability.md b/site/content/arangodb/3.11/deploy/architecture/scalability.md similarity index 100% rename from site/content/3.11/deploy/architecture/scalability.md rename to site/content/arangodb/3.11/deploy/architecture/scalability.md diff --git a/site/content/3.11/deploy/cluster/_index.md b/site/content/arangodb/3.11/deploy/cluster/_index.md similarity index 98% rename from site/content/3.11/deploy/cluster/_index.md rename to site/content/arangodb/3.11/deploy/cluster/_index.md index 4d10cec023..60b256783a 100644 --- a/site/content/3.11/deploy/cluster/_index.md +++ b/site/content/arangodb/3.11/deploy/cluster/_index.md @@ -39,7 +39,7 @@ roles: - _Coordinators_ - _DB-Servers_. -![ArangoDB Cluster](../../../images/cluster-topology.png) +![ArangoDB Cluster](../../../../images/cluster-topology.png) ### Agents @@ -142,7 +142,7 @@ automatically to the different servers. In many situations one can also reap a benefit in data throughput, again because the load can be distributed to multiple machines. -![Cluster Sharding](../../../images/cluster_sharding.jpg) +![Cluster Sharding](../../../../images/cluster_sharding.jpg) From the outside this process is fully transparent: An application may talk to any _Coordinator_ and @@ -385,7 +385,7 @@ See the [Cluster Deployment](deployment/_index.md) chapter for instructions. ArangoDB is also available as a cloud service, the -[**ArangoGraph Insights Platform**](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). +[**Arango Managed Platform (AMP)**](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). ## Cluster ID diff --git a/site/content/3.11/deploy/cluster/administration.md b/site/content/arangodb/3.11/deploy/cluster/administration.md similarity index 100% rename from site/content/3.11/deploy/cluster/administration.md rename to site/content/arangodb/3.11/deploy/cluster/administration.md diff --git a/site/content/3.11/deploy/cluster/deployment/_index.md b/site/content/arangodb/3.11/deploy/cluster/deployment/_index.md similarity index 97% rename from site/content/3.11/deploy/cluster/deployment/_index.md rename to site/content/arangodb/3.11/deploy/cluster/deployment/_index.md index 102d40bed3..5d6d6232f2 100644 --- a/site/content/3.11/deploy/cluster/deployment/_index.md +++ b/site/content/arangodb/3.11/deploy/cluster/deployment/_index.md @@ -9,7 +9,7 @@ You can deploy an ArangoDB cluster in different ways: - [Using the ArangoDB Starter](using-the-arangodb-starter.md) - [Manual Start](manual-start.md) - [Kubernetes](../../kubernetes.md) -- [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), +- [Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), fully managed, available on AWS and GCP ## Preliminary Information For Debian/Ubuntu Systems diff --git a/site/content/3.11/deploy/cluster/deployment/manual-start.md b/site/content/arangodb/3.11/deploy/cluster/deployment/manual-start.md similarity index 100% rename from site/content/3.11/deploy/cluster/deployment/manual-start.md rename to site/content/arangodb/3.11/deploy/cluster/deployment/manual-start.md diff --git a/site/content/3.11/deploy/cluster/deployment/using-the-arangodb-starter.md b/site/content/arangodb/3.11/deploy/cluster/deployment/using-the-arangodb-starter.md similarity index 100% rename from site/content/3.11/deploy/cluster/deployment/using-the-arangodb-starter.md rename to site/content/arangodb/3.11/deploy/cluster/deployment/using-the-arangodb-starter.md diff --git a/site/content/3.11/deploy/cluster/limitations.md b/site/content/arangodb/3.11/deploy/cluster/limitations.md similarity index 100% rename from site/content/3.11/deploy/cluster/limitations.md rename to site/content/arangodb/3.11/deploy/cluster/limitations.md diff --git a/site/content/3.11/deploy/in-the-cloud.md b/site/content/arangodb/3.11/deploy/in-the-cloud.md similarity index 100% rename from site/content/3.11/deploy/in-the-cloud.md rename to site/content/arangodb/3.11/deploy/in-the-cloud.md diff --git a/site/content/3.11/deploy/kubernetes.md b/site/content/arangodb/3.11/deploy/kubernetes.md similarity index 100% rename from site/content/3.11/deploy/kubernetes.md rename to site/content/arangodb/3.11/deploy/kubernetes.md diff --git a/site/content/3.10/deploy/oneshard.md b/site/content/arangodb/3.11/deploy/oneshard.md similarity index 99% rename from site/content/3.10/deploy/oneshard.md rename to site/content/arangodb/3.11/deploy/oneshard.md index cd4eed572b..8a35123968 100644 --- a/site/content/3.10/deploy/oneshard.md +++ b/site/content/arangodb/3.11/deploy/oneshard.md @@ -49,7 +49,7 @@ because they need to send and receive data on several connections, build up results for collection accesses from the received parts followed by further processing. -![OneShard vs. Sharded Cluster Setup](../../images/cluster-sharded-oneshard.png) +![OneShard vs. Sharded Cluster Setup](../../../../images/cluster-sharded-oneshard.png) If the database involved in a query is a OneShard database, then the OneShard optimization can be applied to run the query on the diff --git a/site/content/3.11/deploy/production-checklist.md b/site/content/arangodb/3.11/deploy/production-checklist.md similarity index 100% rename from site/content/3.11/deploy/production-checklist.md rename to site/content/arangodb/3.11/deploy/production-checklist.md diff --git a/site/content/3.11/deploy/single-instance-vs-cluster.md b/site/content/arangodb/3.11/deploy/single-instance-vs-cluster.md similarity index 100% rename from site/content/3.11/deploy/single-instance-vs-cluster.md rename to site/content/arangodb/3.11/deploy/single-instance-vs-cluster.md diff --git a/site/content/3.11/deploy/single-instance/_index.md b/site/content/arangodb/3.11/deploy/single-instance/_index.md similarity index 100% rename from site/content/3.11/deploy/single-instance/_index.md rename to site/content/arangodb/3.11/deploy/single-instance/_index.md diff --git a/site/content/3.11/deploy/single-instance/manual-start.md b/site/content/arangodb/3.11/deploy/single-instance/manual-start.md similarity index 100% rename from site/content/3.11/deploy/single-instance/manual-start.md rename to site/content/arangodb/3.11/deploy/single-instance/manual-start.md diff --git a/site/content/3.11/deploy/single-instance/using-the-arangodb-starter.md b/site/content/arangodb/3.11/deploy/single-instance/using-the-arangodb-starter.md similarity index 100% rename from site/content/3.11/deploy/single-instance/using-the-arangodb-starter.md rename to site/content/arangodb/3.11/deploy/single-instance/using-the-arangodb-starter.md diff --git a/site/content/3.11/develop/_index.md b/site/content/arangodb/3.11/develop/_index.md similarity index 100% rename from site/content/3.11/develop/_index.md rename to site/content/arangodb/3.11/develop/_index.md diff --git a/site/content/3.11/develop/drivers/_index.md b/site/content/arangodb/3.11/develop/drivers/_index.md similarity index 100% rename from site/content/3.11/develop/drivers/_index.md rename to site/content/arangodb/3.11/develop/drivers/_index.md diff --git a/site/content/3.11/develop/drivers/go.md b/site/content/arangodb/3.11/develop/drivers/go.md similarity index 100% rename from site/content/3.11/develop/drivers/go.md rename to site/content/arangodb/3.11/develop/drivers/go.md diff --git a/site/content/3.11/develop/drivers/java/_index.md b/site/content/arangodb/3.11/develop/drivers/java/_index.md similarity index 100% rename from site/content/3.11/develop/drivers/java/_index.md rename to site/content/arangodb/3.11/develop/drivers/java/_index.md diff --git a/site/content/3.11/develop/drivers/java/reference-version-6/_index.md b/site/content/arangodb/3.11/develop/drivers/java/reference-version-6/_index.md similarity index 100% rename from site/content/3.11/develop/drivers/java/reference-version-6/_index.md rename to site/content/arangodb/3.11/develop/drivers/java/reference-version-6/_index.md diff --git a/site/content/3.11/develop/drivers/java/reference-version-6/driver-setup.md b/site/content/arangodb/3.11/develop/drivers/java/reference-version-6/driver-setup.md similarity index 100% rename from site/content/3.11/develop/drivers/java/reference-version-6/driver-setup.md rename to site/content/arangodb/3.11/develop/drivers/java/reference-version-6/driver-setup.md diff --git a/site/content/3.11/develop/drivers/java/reference-version-6/serialization.md b/site/content/arangodb/3.11/develop/drivers/java/reference-version-6/serialization.md similarity index 100% rename from site/content/3.11/develop/drivers/java/reference-version-6/serialization.md rename to site/content/arangodb/3.11/develop/drivers/java/reference-version-6/serialization.md diff --git a/site/content/3.11/develop/drivers/java/reference-version-7/_index.md b/site/content/arangodb/3.11/develop/drivers/java/reference-version-7/_index.md similarity index 100% rename from site/content/3.11/develop/drivers/java/reference-version-7/_index.md rename to site/content/arangodb/3.11/develop/drivers/java/reference-version-7/_index.md diff --git a/site/content/3.11/develop/drivers/java/reference-version-7/changes-in-version-7.md b/site/content/arangodb/3.11/develop/drivers/java/reference-version-7/changes-in-version-7.md similarity index 100% rename from site/content/3.11/develop/drivers/java/reference-version-7/changes-in-version-7.md rename to site/content/arangodb/3.11/develop/drivers/java/reference-version-7/changes-in-version-7.md diff --git a/site/content/3.11/develop/drivers/java/reference-version-7/driver-setup.md b/site/content/arangodb/3.11/develop/drivers/java/reference-version-7/driver-setup.md similarity index 100% rename from site/content/3.11/develop/drivers/java/reference-version-7/driver-setup.md rename to site/content/arangodb/3.11/develop/drivers/java/reference-version-7/driver-setup.md diff --git a/site/content/3.11/develop/drivers/java/reference-version-7/serialization.md b/site/content/arangodb/3.11/develop/drivers/java/reference-version-7/serialization.md similarity index 100% rename from site/content/3.11/develop/drivers/java/reference-version-7/serialization.md rename to site/content/arangodb/3.11/develop/drivers/java/reference-version-7/serialization.md diff --git a/site/content/3.11/develop/drivers/javascript.md b/site/content/arangodb/3.11/develop/drivers/javascript.md similarity index 100% rename from site/content/3.11/develop/drivers/javascript.md rename to site/content/arangodb/3.11/develop/drivers/javascript.md diff --git a/site/content/3.11/develop/drivers/python.md b/site/content/arangodb/3.11/develop/drivers/python.md similarity index 100% rename from site/content/3.11/develop/drivers/python.md rename to site/content/arangodb/3.11/develop/drivers/python.md diff --git a/site/content/3.11/develop/error-codes.md b/site/content/arangodb/3.11/develop/error-codes.md similarity index 100% rename from site/content/3.11/develop/error-codes.md rename to site/content/arangodb/3.11/develop/error-codes.md diff --git a/site/content/3.11/develop/exit-codes.md b/site/content/arangodb/3.11/develop/exit-codes.md similarity index 100% rename from site/content/3.11/develop/exit-codes.md rename to site/content/arangodb/3.11/develop/exit-codes.md diff --git a/site/content/3.11/develop/foxx-microservices/_index.md b/site/content/arangodb/3.11/develop/foxx-microservices/_index.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/_index.md rename to site/content/arangodb/3.11/develop/foxx-microservices/_index.md diff --git a/site/content/3.11/develop/foxx-microservices/deployment.md b/site/content/arangodb/3.11/develop/foxx-microservices/deployment.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/deployment.md rename to site/content/arangodb/3.11/develop/foxx-microservices/deployment.md diff --git a/site/content/3.11/develop/foxx-microservices/getting-started.md b/site/content/arangodb/3.11/develop/foxx-microservices/getting-started.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/getting-started.md rename to site/content/arangodb/3.11/develop/foxx-microservices/getting-started.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/_index.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/_index.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/_index.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/_index.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/access-from-the-browser.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/access-from-the-browser.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/access-from-the-browser.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/access-from-the-browser.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/authentication-and-sessions.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/authentication-and-sessions.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/authentication-and-sessions.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/authentication-and-sessions.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/development-mode.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/development-mode.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/development-mode.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/development-mode.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/foxx-in-a-cluster.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/foxx-in-a-cluster.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/foxx-in-a-cluster.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/foxx-in-a-cluster.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/linking-services-together.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/linking-services-together.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/linking-services-together.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/linking-services-together.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/making-requests.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/making-requests.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/making-requests.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/making-requests.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/scripts-and-scheduling.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/scripts-and-scheduling.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/scripts-and-scheduling.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/scripts-and-scheduling.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/testing-foxx-services.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/testing-foxx-services.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/testing-foxx-services.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/testing-foxx-services.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/using-node-modules.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/using-node-modules.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/using-node-modules.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/using-node-modules.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/using-webpack-with-foxx.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/using-webpack-with-foxx.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/using-webpack-with-foxx.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/using-webpack-with-foxx.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/working-with-collections.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/working-with-collections.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/working-with-collections.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/working-with-collections.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/working-with-files.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/working-with-files.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/working-with-files.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/working-with-files.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/working-with-routers.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/working-with-routers.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/working-with-routers.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/working-with-routers.md diff --git a/site/content/3.11/develop/foxx-microservices/guides/writing-queries.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/writing-queries.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/guides/writing-queries.md rename to site/content/arangodb/3.11/develop/foxx-microservices/guides/writing-queries.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/_index.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/_index.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/_index.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/_index.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/configuration.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/configuration.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/configuration.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/configuration.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/related-modules/_index.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/related-modules/_index.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/related-modules/_index.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/related-modules/_index.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/related-modules/authentication.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/related-modules/authentication.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/related-modules/authentication.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/related-modules/authentication.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/related-modules/graphql.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/related-modules/graphql.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/related-modules/graphql.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/related-modules/graphql.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/related-modules/oauth-2-0.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/related-modules/oauth-2-0.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/related-modules/oauth-2-0.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/related-modules/oauth-2-0.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/related-modules/queues.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/related-modules/queues.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/related-modules/queues.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/related-modules/queues.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/routers/_index.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/routers/_index.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/routers/_index.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/routers/_index.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/routers/endpoints.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/routers/endpoints.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/routers/endpoints.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/routers/endpoints.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/routers/middleware.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/routers/middleware.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/routers/middleware.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/routers/middleware.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/routers/request.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/routers/request.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/routers/request.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/routers/request.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/routers/response.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/routers/response.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/routers/response.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/routers/response.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/service-context.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/service-context.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/service-context.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/service-context.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/service-manifest.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/service-manifest.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/service-manifest.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/service-manifest.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/_index.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/_index.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/_index.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/_index.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md diff --git a/site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md b/site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md similarity index 100% rename from site/content/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md rename to site/content/arangodb/3.11/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md diff --git a/site/content/3.11/develop/http-api/_index.md b/site/content/arangodb/3.11/develop/http-api/_index.md similarity index 98% rename from site/content/3.11/develop/http-api/_index.md rename to site/content/arangodb/3.11/develop/http-api/_index.md index 3068e60f26..4e14d398c3 100644 --- a/site/content/3.11/develop/http-api/_index.md +++ b/site/content/arangodb/3.11/develop/http-api/_index.md @@ -105,7 +105,7 @@ You can explore the API with the interactive **Swagger UI** using the 2. Click the **Rest API** tab. 3. Click a section and endpoint to view the description and parameters. -![The web interface with the navigation on the left and the tabs at the top](../../../images/swagger_serverapi_overview.png) +![The web interface with the navigation on the left and the tabs at the top](../../../../images/swagger_serverapi_overview.png) Also see this blog post: [Using the ArangoDB Swagger.io Interactive API Documentation](https://www.arangodb.com/2018/03/using-arangodb-swaggerio-interactive-api-documentation/). diff --git a/site/content/3.11/develop/http-api/administration.md b/site/content/arangodb/3.11/develop/http-api/administration.md similarity index 100% rename from site/content/3.11/develop/http-api/administration.md rename to site/content/arangodb/3.11/develop/http-api/administration.md diff --git a/site/content/3.11/develop/http-api/analyzers.md b/site/content/arangodb/3.11/develop/http-api/analyzers.md similarity index 100% rename from site/content/3.11/develop/http-api/analyzers.md rename to site/content/arangodb/3.11/develop/http-api/analyzers.md diff --git a/site/content/3.11/develop/http-api/authentication.md b/site/content/arangodb/3.11/develop/http-api/authentication.md similarity index 100% rename from site/content/3.11/develop/http-api/authentication.md rename to site/content/arangodb/3.11/develop/http-api/authentication.md diff --git a/site/content/3.11/develop/http-api/batch-requests.md b/site/content/arangodb/3.11/develop/http-api/batch-requests.md similarity index 100% rename from site/content/3.11/develop/http-api/batch-requests.md rename to site/content/arangodb/3.11/develop/http-api/batch-requests.md diff --git a/site/content/3.11/develop/http-api/cluster.md b/site/content/arangodb/3.11/develop/http-api/cluster.md similarity index 100% rename from site/content/3.11/develop/http-api/cluster.md rename to site/content/arangodb/3.11/develop/http-api/cluster.md diff --git a/site/content/3.11/develop/http-api/collections.md b/site/content/arangodb/3.11/develop/http-api/collections.md similarity index 100% rename from site/content/3.11/develop/http-api/collections.md rename to site/content/arangodb/3.11/develop/http-api/collections.md diff --git a/site/content/3.11/develop/http-api/databases.md b/site/content/arangodb/3.11/develop/http-api/databases.md similarity index 100% rename from site/content/3.11/develop/http-api/databases.md rename to site/content/arangodb/3.11/develop/http-api/databases.md diff --git a/site/content/3.11/develop/http-api/documents.md b/site/content/arangodb/3.11/develop/http-api/documents.md similarity index 100% rename from site/content/3.11/develop/http-api/documents.md rename to site/content/arangodb/3.11/develop/http-api/documents.md diff --git a/site/content/3.11/develop/http-api/foxx.md b/site/content/arangodb/3.11/develop/http-api/foxx.md similarity index 100% rename from site/content/3.11/develop/http-api/foxx.md rename to site/content/arangodb/3.11/develop/http-api/foxx.md diff --git a/site/content/3.11/develop/http-api/general-request-handling.md b/site/content/arangodb/3.11/develop/http-api/general-request-handling.md similarity index 100% rename from site/content/3.11/develop/http-api/general-request-handling.md rename to site/content/arangodb/3.11/develop/http-api/general-request-handling.md diff --git a/site/content/3.11/develop/http-api/graphs/_index.md b/site/content/arangodb/3.11/develop/http-api/graphs/_index.md similarity index 100% rename from site/content/3.11/develop/http-api/graphs/_index.md rename to site/content/arangodb/3.11/develop/http-api/graphs/_index.md diff --git a/site/content/3.11/develop/http-api/graphs/edges.md b/site/content/arangodb/3.11/develop/http-api/graphs/edges.md similarity index 100% rename from site/content/3.11/develop/http-api/graphs/edges.md rename to site/content/arangodb/3.11/develop/http-api/graphs/edges.md diff --git a/site/content/3.11/develop/http-api/graphs/named-graphs.md b/site/content/arangodb/3.11/develop/http-api/graphs/named-graphs.md similarity index 99% rename from site/content/3.11/develop/http-api/graphs/named-graphs.md rename to site/content/arangodb/3.11/develop/http-api/graphs/named-graphs.md index 39a8fc252c..36e9043faa 100644 --- a/site/content/3.11/develop/http-api/graphs/named-graphs.md +++ b/site/content/arangodb/3.11/develop/http-api/graphs/named-graphs.md @@ -18,11 +18,11 @@ The examples use the following example graphs: [_Social Graph_](../../../graphs/example-graphs.md#social-graph): -![Social Example Graph](../../../../images/social_graph.png) +![Social Example Graph](../../../../../images/social_graph.png) [_Knows Graph_](../../../graphs/example-graphs.md#knows-graph): -![Social Example Graph](../../../../images/knows_graph.png) +![Social Example Graph](../../../../../images/knows_graph.png) ## Management diff --git a/site/content/3.11/develop/http-api/hot-backups.md b/site/content/arangodb/3.11/develop/http-api/hot-backups.md similarity index 100% rename from site/content/3.11/develop/http-api/hot-backups.md rename to site/content/arangodb/3.11/develop/http-api/hot-backups.md diff --git a/site/content/3.11/develop/http-api/import.md b/site/content/arangodb/3.11/develop/http-api/import.md similarity index 100% rename from site/content/3.11/develop/http-api/import.md rename to site/content/arangodb/3.11/develop/http-api/import.md diff --git a/site/content/3.11/develop/http-api/indexes/_index.md b/site/content/arangodb/3.11/develop/http-api/indexes/_index.md similarity index 100% rename from site/content/3.11/develop/http-api/indexes/_index.md rename to site/content/arangodb/3.11/develop/http-api/indexes/_index.md diff --git a/site/content/3.11/develop/http-api/indexes/fulltext.md b/site/content/arangodb/3.11/develop/http-api/indexes/fulltext.md similarity index 100% rename from site/content/3.11/develop/http-api/indexes/fulltext.md rename to site/content/arangodb/3.11/develop/http-api/indexes/fulltext.md diff --git a/site/content/3.11/develop/http-api/indexes/geo-spatial.md b/site/content/arangodb/3.11/develop/http-api/indexes/geo-spatial.md similarity index 100% rename from site/content/3.11/develop/http-api/indexes/geo-spatial.md rename to site/content/arangodb/3.11/develop/http-api/indexes/geo-spatial.md diff --git a/site/content/3.11/develop/http-api/indexes/inverted.md b/site/content/arangodb/3.11/develop/http-api/indexes/inverted.md similarity index 100% rename from site/content/3.11/develop/http-api/indexes/inverted.md rename to site/content/arangodb/3.11/develop/http-api/indexes/inverted.md diff --git a/site/content/3.11/develop/http-api/indexes/multi-dimensional.md b/site/content/arangodb/3.11/develop/http-api/indexes/multi-dimensional.md similarity index 100% rename from site/content/3.11/develop/http-api/indexes/multi-dimensional.md rename to site/content/arangodb/3.11/develop/http-api/indexes/multi-dimensional.md diff --git a/site/content/3.11/develop/http-api/indexes/persistent.md b/site/content/arangodb/3.11/develop/http-api/indexes/persistent.md similarity index 100% rename from site/content/3.11/develop/http-api/indexes/persistent.md rename to site/content/arangodb/3.11/develop/http-api/indexes/persistent.md diff --git a/site/content/3.11/develop/http-api/indexes/ttl.md b/site/content/arangodb/3.11/develop/http-api/indexes/ttl.md similarity index 100% rename from site/content/3.11/develop/http-api/indexes/ttl.md rename to site/content/arangodb/3.11/develop/http-api/indexes/ttl.md diff --git a/site/content/3.11/develop/http-api/jobs.md b/site/content/arangodb/3.11/develop/http-api/jobs.md similarity index 100% rename from site/content/3.11/develop/http-api/jobs.md rename to site/content/arangodb/3.11/develop/http-api/jobs.md diff --git a/site/content/3.11/develop/http-api/monitoring/_index.md b/site/content/arangodb/3.11/develop/http-api/monitoring/_index.md similarity index 100% rename from site/content/3.11/develop/http-api/monitoring/_index.md rename to site/content/arangodb/3.11/develop/http-api/monitoring/_index.md diff --git a/site/content/3.11/develop/http-api/monitoring/logs.md b/site/content/arangodb/3.11/develop/http-api/monitoring/logs.md similarity index 100% rename from site/content/3.11/develop/http-api/monitoring/logs.md rename to site/content/arangodb/3.11/develop/http-api/monitoring/logs.md diff --git a/site/content/3.11/develop/http-api/monitoring/metrics.md b/site/content/arangodb/3.11/develop/http-api/monitoring/metrics.md similarity index 100% rename from site/content/3.11/develop/http-api/monitoring/metrics.md rename to site/content/arangodb/3.11/develop/http-api/monitoring/metrics.md diff --git a/site/content/3.11/develop/http-api/monitoring/statistics.md b/site/content/arangodb/3.11/develop/http-api/monitoring/statistics.md similarity index 100% rename from site/content/3.11/develop/http-api/monitoring/statistics.md rename to site/content/arangodb/3.11/develop/http-api/monitoring/statistics.md diff --git a/site/content/3.11/develop/http-api/pregel.md b/site/content/arangodb/3.11/develop/http-api/pregel.md similarity index 100% rename from site/content/3.11/develop/http-api/pregel.md rename to site/content/arangodb/3.11/develop/http-api/pregel.md diff --git a/site/content/3.11/develop/http-api/queries/_index.md b/site/content/arangodb/3.11/develop/http-api/queries/_index.md similarity index 100% rename from site/content/3.11/develop/http-api/queries/_index.md rename to site/content/arangodb/3.11/develop/http-api/queries/_index.md diff --git a/site/content/3.11/develop/http-api/queries/aql-queries.md b/site/content/arangodb/3.11/develop/http-api/queries/aql-queries.md similarity index 100% rename from site/content/3.11/develop/http-api/queries/aql-queries.md rename to site/content/arangodb/3.11/develop/http-api/queries/aql-queries.md diff --git a/site/content/3.11/develop/http-api/queries/aql-query-results-cache.md b/site/content/arangodb/3.11/develop/http-api/queries/aql-query-results-cache.md similarity index 100% rename from site/content/3.11/develop/http-api/queries/aql-query-results-cache.md rename to site/content/arangodb/3.11/develop/http-api/queries/aql-query-results-cache.md diff --git a/site/content/3.11/develop/http-api/queries/user-defined-aql-functions.md b/site/content/arangodb/3.11/develop/http-api/queries/user-defined-aql-functions.md similarity index 100% rename from site/content/3.11/develop/http-api/queries/user-defined-aql-functions.md rename to site/content/arangodb/3.11/develop/http-api/queries/user-defined-aql-functions.md diff --git a/site/content/3.11/develop/http-api/replication/_index.md b/site/content/arangodb/3.11/develop/http-api/replication/_index.md similarity index 100% rename from site/content/3.11/develop/http-api/replication/_index.md rename to site/content/arangodb/3.11/develop/http-api/replication/_index.md diff --git a/site/content/3.11/develop/http-api/replication/other-replication-commands.md b/site/content/arangodb/3.11/develop/http-api/replication/other-replication-commands.md similarity index 100% rename from site/content/3.11/develop/http-api/replication/other-replication-commands.md rename to site/content/arangodb/3.11/develop/http-api/replication/other-replication-commands.md diff --git a/site/content/3.11/develop/http-api/replication/replication-applier.md b/site/content/arangodb/3.11/develop/http-api/replication/replication-applier.md similarity index 100% rename from site/content/3.11/develop/http-api/replication/replication-applier.md rename to site/content/arangodb/3.11/develop/http-api/replication/replication-applier.md diff --git a/site/content/3.11/develop/http-api/replication/replication-dump.md b/site/content/arangodb/3.11/develop/http-api/replication/replication-dump.md similarity index 100% rename from site/content/3.11/develop/http-api/replication/replication-dump.md rename to site/content/arangodb/3.11/develop/http-api/replication/replication-dump.md diff --git a/site/content/3.11/develop/http-api/replication/replication-logger.md b/site/content/arangodb/3.11/develop/http-api/replication/replication-logger.md similarity index 100% rename from site/content/3.11/develop/http-api/replication/replication-logger.md rename to site/content/arangodb/3.11/develop/http-api/replication/replication-logger.md diff --git a/site/content/3.11/develop/http-api/replication/write-ahead-log.md b/site/content/arangodb/3.11/develop/http-api/replication/write-ahead-log.md similarity index 100% rename from site/content/3.11/develop/http-api/replication/write-ahead-log.md rename to site/content/arangodb/3.11/develop/http-api/replication/write-ahead-log.md diff --git a/site/content/3.11/develop/http-api/security.md b/site/content/arangodb/3.11/develop/http-api/security.md similarity index 100% rename from site/content/3.11/develop/http-api/security.md rename to site/content/arangodb/3.11/develop/http-api/security.md diff --git a/site/content/3.11/develop/http-api/tasks.md b/site/content/arangodb/3.11/develop/http-api/tasks.md similarity index 100% rename from site/content/3.11/develop/http-api/tasks.md rename to site/content/arangodb/3.11/develop/http-api/tasks.md diff --git a/site/content/3.11/develop/http-api/transactions/_index.md b/site/content/arangodb/3.11/develop/http-api/transactions/_index.md similarity index 100% rename from site/content/3.11/develop/http-api/transactions/_index.md rename to site/content/arangodb/3.11/develop/http-api/transactions/_index.md diff --git a/site/content/3.11/develop/http-api/transactions/javascript-transactions.md b/site/content/arangodb/3.11/develop/http-api/transactions/javascript-transactions.md similarity index 100% rename from site/content/3.11/develop/http-api/transactions/javascript-transactions.md rename to site/content/arangodb/3.11/develop/http-api/transactions/javascript-transactions.md diff --git a/site/content/3.11/develop/http-api/transactions/stream-transactions.md b/site/content/arangodb/3.11/develop/http-api/transactions/stream-transactions.md similarity index 100% rename from site/content/3.11/develop/http-api/transactions/stream-transactions.md rename to site/content/arangodb/3.11/develop/http-api/transactions/stream-transactions.md diff --git a/site/content/3.11/develop/http-api/users.md b/site/content/arangodb/3.11/develop/http-api/users.md similarity index 100% rename from site/content/3.11/develop/http-api/users.md rename to site/content/arangodb/3.11/develop/http-api/users.md diff --git a/site/content/3.11/develop/http-api/views/_index.md b/site/content/arangodb/3.11/develop/http-api/views/_index.md similarity index 100% rename from site/content/3.11/develop/http-api/views/_index.md rename to site/content/arangodb/3.11/develop/http-api/views/_index.md diff --git a/site/content/3.11/develop/http-api/views/arangosearch-views.md b/site/content/arangodb/3.11/develop/http-api/views/arangosearch-views.md similarity index 100% rename from site/content/3.11/develop/http-api/views/arangosearch-views.md rename to site/content/arangodb/3.11/develop/http-api/views/arangosearch-views.md diff --git a/site/content/3.11/develop/http-api/views/search-alias-views.md b/site/content/arangodb/3.11/develop/http-api/views/search-alias-views.md similarity index 100% rename from site/content/3.11/develop/http-api/views/search-alias-views.md rename to site/content/arangodb/3.11/develop/http-api/views/search-alias-views.md diff --git a/site/content/3.11/develop/integrations/_index.md b/site/content/arangodb/3.11/develop/integrations/_index.md similarity index 100% rename from site/content/3.11/develop/integrations/_index.md rename to site/content/arangodb/3.11/develop/integrations/_index.md diff --git a/site/content/3.11/develop/integrations/arangodb-datasource-for-apache-spark.md b/site/content/arangodb/3.11/develop/integrations/arangodb-datasource-for-apache-spark.md similarity index 99% rename from site/content/3.11/develop/integrations/arangodb-datasource-for-apache-spark.md rename to site/content/arangodb/3.11/develop/integrations/arangodb-datasource-for-apache-spark.md index 5428ba08b8..a9f8e991f1 100644 --- a/site/content/3.11/develop/integrations/arangodb-datasource-for-apache-spark.md +++ b/site/content/arangodb/3.11/develop/integrations/arangodb-datasource-for-apache-spark.md @@ -374,7 +374,7 @@ The following Spark SQL data types (subtypes of `org.apache.spark.sql.types.Filt - `MapType` (only with key type `StringType`) - `StructType` -## Connect to the ArangoGraph Insights Platform +## Connect to the Arango Managed Platform (AMP) To connect to SSL secured deployments using X.509 Base64 encoded CA certificate (ArangoGraph): diff --git a/site/content/3.11/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md b/site/content/arangodb/3.11/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md similarity index 100% rename from site/content/3.11/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md rename to site/content/arangodb/3.11/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md diff --git a/site/content/3.11/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md b/site/content/arangodb/3.11/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md similarity index 100% rename from site/content/3.11/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md rename to site/content/arangodb/3.11/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md diff --git a/site/content/3.11/develop/integrations/spring-boot-arangodb.md b/site/content/arangodb/3.11/develop/integrations/spring-boot-arangodb.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-boot-arangodb.md rename to site/content/arangodb/3.11/develop/integrations/spring-boot-arangodb.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/_index.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/_index.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/_index.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/_index.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/migration.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/migration.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/migration.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/migration.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/_index.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/_index.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/_index.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/_index.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/template.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/template.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-3/template.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/template.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/_index.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/_index.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/_index.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/_index.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md diff --git a/site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/template.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/template.md similarity index 100% rename from site/content/3.11/develop/integrations/spring-data-arangodb/reference-version-4/template.md rename to site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/template.md diff --git a/site/content/3.11/develop/javascript-api/@arangodb/_index.md b/site/content/arangodb/3.11/develop/javascript-api/@arangodb/_index.md similarity index 100% rename from site/content/3.11/develop/javascript-api/@arangodb/_index.md rename to site/content/arangodb/3.11/develop/javascript-api/@arangodb/_index.md diff --git a/site/content/3.11/develop/javascript-api/@arangodb/collection-object.md b/site/content/arangodb/3.11/develop/javascript-api/@arangodb/collection-object.md similarity index 100% rename from site/content/3.11/develop/javascript-api/@arangodb/collection-object.md rename to site/content/arangodb/3.11/develop/javascript-api/@arangodb/collection-object.md diff --git a/site/content/3.11/develop/javascript-api/@arangodb/cursor-object.md b/site/content/arangodb/3.11/develop/javascript-api/@arangodb/cursor-object.md similarity index 100% rename from site/content/3.11/develop/javascript-api/@arangodb/cursor-object.md rename to site/content/arangodb/3.11/develop/javascript-api/@arangodb/cursor-object.md diff --git a/site/content/3.11/develop/javascript-api/@arangodb/db-object.md b/site/content/arangodb/3.11/develop/javascript-api/@arangodb/db-object.md similarity index 100% rename from site/content/3.11/develop/javascript-api/@arangodb/db-object.md rename to site/content/arangodb/3.11/develop/javascript-api/@arangodb/db-object.md diff --git a/site/content/3.11/develop/javascript-api/@arangodb/view-object.md b/site/content/arangodb/3.11/develop/javascript-api/@arangodb/view-object.md similarity index 100% rename from site/content/3.11/develop/javascript-api/@arangodb/view-object.md rename to site/content/arangodb/3.11/develop/javascript-api/@arangodb/view-object.md diff --git a/site/content/3.11/develop/javascript-api/_index.md b/site/content/arangodb/3.11/develop/javascript-api/_index.md similarity index 100% rename from site/content/3.11/develop/javascript-api/_index.md rename to site/content/arangodb/3.11/develop/javascript-api/_index.md diff --git a/site/content/3.11/develop/javascript-api/actions.md b/site/content/arangodb/3.11/develop/javascript-api/actions.md similarity index 100% rename from site/content/3.11/develop/javascript-api/actions.md rename to site/content/arangodb/3.11/develop/javascript-api/actions.md diff --git a/site/content/3.11/develop/javascript-api/analyzers.md b/site/content/arangodb/3.11/develop/javascript-api/analyzers.md similarity index 100% rename from site/content/3.11/develop/javascript-api/analyzers.md rename to site/content/arangodb/3.11/develop/javascript-api/analyzers.md diff --git a/site/content/3.11/develop/javascript-api/aql-queries.md b/site/content/arangodb/3.11/develop/javascript-api/aql-queries.md similarity index 100% rename from site/content/3.11/develop/javascript-api/aql-queries.md rename to site/content/arangodb/3.11/develop/javascript-api/aql-queries.md diff --git a/site/content/3.11/develop/javascript-api/console.md b/site/content/arangodb/3.11/develop/javascript-api/console.md similarity index 100% rename from site/content/3.11/develop/javascript-api/console.md rename to site/content/arangodb/3.11/develop/javascript-api/console.md diff --git a/site/content/3.11/develop/javascript-api/crypto.md b/site/content/arangodb/3.11/develop/javascript-api/crypto.md similarity index 100% rename from site/content/3.11/develop/javascript-api/crypto.md rename to site/content/arangodb/3.11/develop/javascript-api/crypto.md diff --git a/site/content/3.11/develop/javascript-api/fs.md b/site/content/arangodb/3.11/develop/javascript-api/fs.md similarity index 100% rename from site/content/3.11/develop/javascript-api/fs.md rename to site/content/arangodb/3.11/develop/javascript-api/fs.md diff --git a/site/content/3.11/develop/javascript-api/request.md b/site/content/arangodb/3.11/develop/javascript-api/request.md similarity index 100% rename from site/content/3.11/develop/javascript-api/request.md rename to site/content/arangodb/3.11/develop/javascript-api/request.md diff --git a/site/content/3.11/develop/javascript-api/tasks.md b/site/content/arangodb/3.11/develop/javascript-api/tasks.md similarity index 100% rename from site/content/3.11/develop/javascript-api/tasks.md rename to site/content/arangodb/3.11/develop/javascript-api/tasks.md diff --git a/site/content/3.11/develop/operational-factors.md b/site/content/arangodb/3.11/develop/operational-factors.md similarity index 100% rename from site/content/3.11/develop/operational-factors.md rename to site/content/arangodb/3.11/develop/operational-factors.md diff --git a/site/content/3.11/develop/satellitecollections.md b/site/content/arangodb/3.11/develop/satellitecollections.md similarity index 100% rename from site/content/3.11/develop/satellitecollections.md rename to site/content/arangodb/3.11/develop/satellitecollections.md diff --git a/site/content/3.11/develop/smartjoins.md b/site/content/arangodb/3.11/develop/smartjoins.md similarity index 100% rename from site/content/3.11/develop/smartjoins.md rename to site/content/arangodb/3.11/develop/smartjoins.md diff --git a/site/content/3.11/develop/transactions/_index.md b/site/content/arangodb/3.11/develop/transactions/_index.md similarity index 100% rename from site/content/3.11/develop/transactions/_index.md rename to site/content/arangodb/3.11/develop/transactions/_index.md diff --git a/site/content/3.11/develop/transactions/durability.md b/site/content/arangodb/3.11/develop/transactions/durability.md similarity index 100% rename from site/content/3.11/develop/transactions/durability.md rename to site/content/arangodb/3.11/develop/transactions/durability.md diff --git a/site/content/3.11/develop/transactions/javascript-transactions.md b/site/content/arangodb/3.11/develop/transactions/javascript-transactions.md similarity index 100% rename from site/content/3.11/develop/transactions/javascript-transactions.md rename to site/content/arangodb/3.11/develop/transactions/javascript-transactions.md diff --git a/site/content/3.11/develop/transactions/limitations.md b/site/content/arangodb/3.11/develop/transactions/limitations.md similarity index 100% rename from site/content/3.11/develop/transactions/limitations.md rename to site/content/arangodb/3.11/develop/transactions/limitations.md diff --git a/site/content/3.11/develop/transactions/locking-and-isolation.md b/site/content/arangodb/3.11/develop/transactions/locking-and-isolation.md similarity index 100% rename from site/content/3.11/develop/transactions/locking-and-isolation.md rename to site/content/arangodb/3.11/develop/transactions/locking-and-isolation.md diff --git a/site/content/3.11/develop/transactions/stream-transactions.md b/site/content/arangodb/3.11/develop/transactions/stream-transactions.md similarity index 100% rename from site/content/3.11/develop/transactions/stream-transactions.md rename to site/content/arangodb/3.11/develop/transactions/stream-transactions.md diff --git a/site/content/3.11/get-started/_index.md b/site/content/arangodb/3.11/get-started/_index.md similarity index 100% rename from site/content/3.11/get-started/_index.md rename to site/content/arangodb/3.11/get-started/_index.md diff --git a/site/content/3.11/get-started/how-to-interact-with-arangodb.md b/site/content/arangodb/3.11/get-started/how-to-interact-with-arangodb.md similarity index 100% rename from site/content/3.11/get-started/how-to-interact-with-arangodb.md rename to site/content/arangodb/3.11/get-started/how-to-interact-with-arangodb.md diff --git a/site/content/3.11/get-started/on-premises-installation.md b/site/content/arangodb/3.11/get-started/on-premises-installation.md similarity index 94% rename from site/content/3.11/get-started/on-premises-installation.md rename to site/content/arangodb/3.11/get-started/on-premises-installation.md index 5dda1d48f9..df93e81006 100644 --- a/site/content/3.11/get-started/on-premises-installation.md +++ b/site/content/arangodb/3.11/get-started/on-premises-installation.md @@ -33,16 +33,16 @@ Depending on the installation method used, the installation process either prompted for the root password or the default root password is empty (see [Securing the installation](.#securing-the-installation)). -![Web Interface Login Form](../../images/loginView.png) +![Web Interface Login Form](../../../../images/loginView.png) Next you will be asked which database to use. Every server instance comes with a `_system` database. Select this database to continue. -![select database](../../images/selectDBView.png) +![select database](../../../../images/selectDBView.png) You should then be presented the dashboard with server statistics like this: -![Web Interface Dashboard Request Statistics](../../images/dashboardView.png) +![Web Interface Dashboard Request Statistics](../../../../images/dashboardView.png) For a more detailed description of the interface, see [Web Interface](../components/web-interface/_index.md). --> diff --git a/site/content/3.11/get-started/set-up-a-cloud-instance.md b/site/content/arangodb/3.11/get-started/set-up-a-cloud-instance.md similarity index 71% rename from site/content/3.11/get-started/set-up-a-cloud-instance.md rename to site/content/arangodb/3.11/get-started/set-up-a-cloud-instance.md index 31e2ad4494..c0541b0403 100644 --- a/site/content/3.11/get-started/set-up-a-cloud-instance.md +++ b/site/content/arangodb/3.11/get-started/set-up-a-cloud-instance.md @@ -6,10 +6,10 @@ description: >- This quick start guide covers the basics from creating an ArangoGraph account to setting up and accessing your first ArangoGraph deployment --- -For general information about the ArangoGraph Insights Platform, see +For general information about the Arango Managed Platform (AMP), see [dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -For guides and reference documentation, see the [ArangoGraph](../arangograph/_index.md) documentation. +For guides and reference documentation, see the [ArangoGraph](../../../amp/_index.md) documentation. ## Prerequisites @@ -33,7 +33,7 @@ used for multiple accounts. 2. Click the __Start Free__ button or click the __Sign Up__ link in the top right corner. - ![ArangoGraph Homepage](../../images/arangograph-homepage.png) + ![ArangoGraph Homepage](../../../images/arangograph-homepage.png) 3. Review the terms & conditions and privacy policy and click __I accept__. 4. Select the type of sign up you would like to use (GitHub, Google, or @@ -42,11 +42,11 @@ used for multiple accounts. - For the email address option, type your desired email address in the email field and type a strong password in the password field. - {{< image src="../../images/arangograph-create-account.png" alt="ArangoGraph Sign up" style="max-height: 50vh">}} + {{< image src="../../../images/arangograph-create-account.png" alt="ArangoGraph Sign up" style="max-height: 50vh">}} Click the __Sign up__ button. You will receive a verification email. In that mail, click the __Verify my email address__ link or button. - It opens a page in the ArangoGraph Insights Platform that says __Welcome back!__ + It opens a page in the Arango Managed Platform (AMP) that says __Welcome back!__ 5. Click the __Log in__ button to continue and login. 6. If you signed up with an email address of a public email service provider (e.g. Hotmail), a form appears asking for your mobile phone number. Enter the country code @@ -67,25 +67,25 @@ used for multiple accounts. provider and region. Pick one and click __Create deployment__. You can also select your intended use-case. - ![ArangoGraph Dashboard](../../images/arangograph-dashboard-free-tier.png) + ![ArangoGraph Dashboard](../../../images/arangograph-dashboard-free-tier.png) - You can also [create a deployment](../arangograph/deployments/_index.md#how-to-create-a-new-deployment) + You can also [create a deployment](../../../amp/deployments/_index.md#how-to-create-a-new-deployment) manually, if you want fine-grained configuration options. 2. The new deployment is displayed in the list of deployments for the respective project (here: _Avocado_). - ![ArangoGraph Deployments Bootstrapping](../../images/arangograph-deployments-bootstrapping.png) + ![ArangoGraph Deployments Bootstrapping](../../../images/arangograph-deployments-bootstrapping.png) It takes a couple of minutes before the deployment can be used. The status is changed from __Bootstrapping__ to __OK__ eventually and you also receive an email when it is ready. - {{< image src="../../images/arangograph-deployment-ready-email.png" alt="ArangoGraph Deployment Ready Email" style="max-height: 50vh">}} + {{< image src="../../../images/arangograph-deployment-ready-email.png" alt="ArangoGraph Deployment Ready Email" style="max-height: 50vh">}} 3. Click the name of the deployment (or the __Open deployment details__ link in the email) to view the deployment details. - ![ArangoGraph Deployment Ready](../../images/arangograph-deployment-ready.png) + ![ArangoGraph Deployment Ready](../../../images/arangograph-deployment-ready.png) 4. Click the __Open database UI__ button to open the ArangoDB web interface. @@ -96,23 +96,23 @@ used for multiple accounts. Click __Guide__ for instructions on how to access and run queries against this data. - ![ArangoGraph Deployment Examples](../../images/arangograph-deployment-examples.png) + ![ArangoGraph Deployment Examples](../../../images/arangograph-deployment-examples.png) - ![ArangoGraph Deployment Examples IMDB Guide](../../images/arangograph-deployment-examples-imdb-guide.png) + ![ArangoGraph Deployment Examples IMDB Guide](../../../images/arangograph-deployment-examples-imdb-guide.png) ## General Hierarchy -The ArangoGraph Insights Platform supports multi-tenant setups via organizations. +The Arango Managed Platform (AMP) supports multi-tenant setups via organizations. You can create your own organization(s) and invite collaborators or join existing ones via invites. Your organization contains projects. Your projects hold your deployments. -- [**Organizations**](../arangograph/organizations/_index.md) +- [**Organizations**](../../../amp/organizations/_index.md) represent (commercial) entities such as companies. You can be part of multiple organizations with a single user account. - - [**Projects**](../arangograph/projects.md) + - [**Projects**](../../../amp/projects.md) represent organizational units such as teams or applications. - - [**Deployments**](../arangograph/deployments/_index.md) + - [**Deployments**](../../../amp/deployments/_index.md) are the actual instances of ArangoDB clusters. When you sign up for ArangoGraph, an organization and a default project are @@ -125,32 +125,32 @@ question mark to bring up the help menu and choose __Start tour__. This guided tour walks you through the creation of a deployment and shows you how to load example datasets and manage projects and deployments. -![Start tour in menu](../../images/arangograph-tour-start.png) +![Start tour in menu](../../../images/arangograph-tour-start.png) Alternatively, follow the steps of the linked guides: -- [Create a new project](../arangograph/projects.md#how-to-create-a-new-project) (optional) -- [Create a new deployment](../arangograph/deployments/_index.md#how-to-create-a-new-deployment) -- [Install a new certificate](../arangograph/security-and-access-control/x-509-certificates.md) (optional) -- [Access your deployment](../arangograph/deployments/_index.md#how-to-access-your-deployment) -- [Delete your deployment](../arangograph/deployments/_index.md#how-to-delete-a-deployment) +- [Create a new project](../../../amp/projects.md#how-to-create-a-new-project) (optional) +- [Create a new deployment](../../../amp/deployments/_index.md#how-to-create-a-new-deployment) +- [Install a new certificate](../../../amp/security-and-access-control/x-509-certificates.md) (optional) +- [Access your deployment](../../../amp/deployments/_index.md#how-to-access-your-deployment) +- [Delete your deployment](../../../amp/deployments/_index.md#how-to-delete-a-deployment) ## Free-to-Try vs. Paid -The ArangoGraph Insights Platform comes with a free-to-try tier that lets you test +The Arango Managed Platform (AMP) comes with a free-to-try tier that lets you test the ArangoDB Cloud for free for 14 days. It includes one project and one small deployment of 4GB, local backups, and one notebook for learning and data science. After the trial period, your deployment is automatically deleted. You can unlock all features in ArangoGraph at any time by adding your billing details and at least one payment method. See: -- [ArangoGraph Packages](../arangograph/organizations/_index.md#arangograph-packages) -- [How to add billing details to organizations](../arangograph/organizations/billing.md#how-to-add-billing-details) -- [How to add a payment method to an organization](../arangograph/organizations/billing.md#how-to-add-a-payment-method) +- [ArangoGraph Packages](../../../amp/organizations/_index.md#arangograph-packages) +- [How to add billing details to organizations](../../../amp/organizations/billing.md#how-to-add-billing-details) +- [How to add a payment method to an organization](../../../amp/organizations/billing.md#how-to-add-a-payment-method) ## Managed Cloud Service vs. On-premises Comparison: Key Differences -The ArangoGraph Insights Platform aims to make all features of the ArangoDB -[Enterprise Edition](../about-arangodb/features/enterprise-edition.md) available to you, but +The Arango Managed Platform (AMP) aims to make all features of the ArangoDB +[Enterprise Edition](../about/features/enterprise-edition.md) available to you, but there are a few key differences: - Encryption (both at rest & network traffic) is always on and cannot be diff --git a/site/content/3.11/get-started/start-using-aql/_index.md b/site/content/arangodb/3.11/get-started/start-using-aql/_index.md similarity index 100% rename from site/content/3.11/get-started/start-using-aql/_index.md rename to site/content/arangodb/3.11/get-started/start-using-aql/_index.md diff --git a/site/content/3.11/get-started/start-using-aql/crud.md b/site/content/arangodb/3.11/get-started/start-using-aql/crud.md similarity index 100% rename from site/content/3.11/get-started/start-using-aql/crud.md rename to site/content/arangodb/3.11/get-started/start-using-aql/crud.md diff --git a/site/content/3.11/get-started/start-using-aql/dataset.md b/site/content/arangodb/3.11/get-started/start-using-aql/dataset.md similarity index 100% rename from site/content/3.11/get-started/start-using-aql/dataset.md rename to site/content/arangodb/3.11/get-started/start-using-aql/dataset.md diff --git a/site/content/3.11/get-started/start-using-aql/filter.md b/site/content/arangodb/3.11/get-started/start-using-aql/filter.md similarity index 100% rename from site/content/3.11/get-started/start-using-aql/filter.md rename to site/content/arangodb/3.11/get-started/start-using-aql/filter.md diff --git a/site/content/3.11/get-started/start-using-aql/geo.md b/site/content/arangodb/3.11/get-started/start-using-aql/geo.md similarity index 100% rename from site/content/3.11/get-started/start-using-aql/geo.md rename to site/content/arangodb/3.11/get-started/start-using-aql/geo.md diff --git a/site/content/3.11/get-started/start-using-aql/graphs.md b/site/content/arangodb/3.11/get-started/start-using-aql/graphs.md similarity index 98% rename from site/content/3.11/get-started/start-using-aql/graphs.md rename to site/content/arangodb/3.11/get-started/start-using-aql/graphs.md index 704679a4dc..2bc5ff07b2 100644 --- a/site/content/3.11/get-started/start-using-aql/graphs.md +++ b/site/content/arangodb/3.11/get-started/start-using-aql/graphs.md @@ -36,7 +36,7 @@ Our characters have the following relations between parents and children Visualized as a graph: -![ChildOf graph visualization](../../../images/ChildOf_Graph.png) +![ChildOf graph visualization](../../../../images/ChildOf_Graph.png) ## Creating the edges @@ -252,7 +252,7 @@ It might be a bit unexpected, that Joffrey is returned twice. However, if you look at the graph visualization, you can see that multiple paths lead from Joffrey (bottom right) to Tywin: -![ChildOf graph visualization](../../../images/ChildOf_Graph.png) +![ChildOf graph visualization](../../../../images/ChildOf_Graph.png) ``` Tywin <- Jaime <- Joffrey diff --git a/site/content/3.11/get-started/start-using-aql/joins.md b/site/content/arangodb/3.11/get-started/start-using-aql/joins.md similarity index 100% rename from site/content/3.11/get-started/start-using-aql/joins.md rename to site/content/arangodb/3.11/get-started/start-using-aql/joins.md diff --git a/site/content/3.11/get-started/start-using-aql/sort-limit.md b/site/content/arangodb/3.11/get-started/start-using-aql/sort-limit.md similarity index 100% rename from site/content/3.11/get-started/start-using-aql/sort-limit.md rename to site/content/arangodb/3.11/get-started/start-using-aql/sort-limit.md diff --git a/site/content/3.11/graphs/_index.md b/site/content/arangodb/3.11/graphs/_index.md similarity index 97% rename from site/content/3.11/graphs/_index.md rename to site/content/arangodb/3.11/graphs/_index.md index b22e55f098..8468fcc125 100644 --- a/site/content/3.11/graphs/_index.md +++ b/site/content/arangodb/3.11/graphs/_index.md @@ -17,12 +17,12 @@ relationships, flows of information, energy, and material, interactions and transactions, dependency and hierarchy, as well as similarity and relatedness of any kind. -![Node - Relation - Node](../../images/data-model-graph-relation-abstract.png) +![Node - Relation - Node](../../../../images/data-model-graph-relation-abstract.png) For example, you can represent people by nodes and their friendships by relations. This lets you form a graph that is a social network in this case. -![Mary - is friend of - John](../../images/data-model-graph-relation-concrete.png) +![Mary - is friend of - John](../../../../images/data-model-graph-relation-concrete.png) The specific terms to refer to nodes and relations in a graph vary depending on the field or context, but they are conceptually the same. In computer science @@ -37,7 +37,7 @@ relate to one another is a very expressive data model. It lets you represent a wide variety of information in a compact and intuitive way. It lets you model complex relationships and interactions of basically everything. -![Mary - bought - Book, is friend of - John](../../images/data-model-graph-relations.png) +![Mary - bought - Book, is friend of - John](../../../../images/data-model-graph-relations.png) Graphs are commonly directed (_digraphs_), which means that each edge goes from one vertex to another vertex in a specific direction. This lets you model @@ -223,7 +223,7 @@ suboptimal query performance due to random data distribution. General graphs are the easiest way to get started, no special configuration required. {{< /tip >}} -![General Graph Random Distribution](../../images/general-graph-distribution.png) +![General Graph Random Distribution](../../../../images/general-graph-distribution.png) #### When to use SmartGraphs @@ -238,7 +238,7 @@ scenarios, use SmartGraphs. Organize your data efficiently using the `smartGraphAttribute`. {{< /tip >}} -![SmartGraph Distribution](../../images/smartgraph-distribution.png) +![SmartGraph Distribution](../../../../images/smartgraph-distribution.png) #### When to use EnterpriseGraphs @@ -252,7 +252,7 @@ If you need improved query execution without manual data distribution, consider using EnterpriseGraphs. {{< /tip >}} -![EnterpriseGraph Distribution](../../images/enterprisegraph-distribution.png) +![EnterpriseGraph Distribution](../../../../images/enterprisegraph-distribution.png) #### When to use SatelliteGraphs @@ -339,7 +339,7 @@ with `_from` pointing to `Users/John` and `_to` pointing to attributes to qualify the relation further, like the permissions of **John** in this group, the date when John joined the group, and so on. -![User in group example](../../images/graph_user_in_group.png) +![User in group example](../../../../images/graph_user_in_group.png) As a rule of thumb, if you use documents and their attributes in a sentence, nouns would typically be vertices, and the verbs the edges. diff --git a/site/content/3.11/graphs/enterprisegraphs/_index.md b/site/content/arangodb/3.11/graphs/enterprisegraphs/_index.md similarity index 100% rename from site/content/3.11/graphs/enterprisegraphs/_index.md rename to site/content/arangodb/3.11/graphs/enterprisegraphs/_index.md diff --git a/site/content/3.11/graphs/enterprisegraphs/getting-started.md b/site/content/arangodb/3.11/graphs/enterprisegraphs/getting-started.md similarity index 99% rename from site/content/3.11/graphs/enterprisegraphs/getting-started.md rename to site/content/arangodb/3.11/graphs/enterprisegraphs/getting-started.md index 1997e74ea5..3a622bbb27 100644 --- a/site/content/3.11/graphs/enterprisegraphs/getting-started.md +++ b/site/content/arangodb/3.11/graphs/enterprisegraphs/getting-started.md @@ -211,7 +211,7 @@ EnterpriseGraphs. To get started, follow the steps outlined below. 6. Click the card of the newly created graph use the functions of the Graph Viewer to visually interact with the graph and manage the graph data. -![Create EnterpriseGraph](../../../images/graphs-create-enterprise-graph-dialog.png) +![Create EnterpriseGraph](../../../../images/graphs-create-enterprise-graph-dialog.png) ## Create an EnterpriseGraph using *arangosh* diff --git a/site/content/3.11/graphs/enterprisegraphs/management.md b/site/content/arangodb/3.11/graphs/enterprisegraphs/management.md similarity index 100% rename from site/content/3.11/graphs/enterprisegraphs/management.md rename to site/content/arangodb/3.11/graphs/enterprisegraphs/management.md diff --git a/site/content/3.10/graphs/example-graphs.md b/site/content/arangodb/3.11/graphs/example-graphs.md similarity index 94% rename from site/content/3.10/graphs/example-graphs.md rename to site/content/arangodb/3.11/graphs/example-graphs.md index 300154d268..58b269cbf0 100644 --- a/site/content/3.10/graphs/example-graphs.md +++ b/site/content/arangodb/3.11/graphs/example-graphs.md @@ -26,7 +26,7 @@ for reference about how to manage graphs programmatically. The `knows` graph is a set of persons knowing each other: -![Persons relation Example Graph](../../images/knows_graph.png) +![Persons relation Example Graph](../../../images/knows_graph.png) The graph consists of a `persons` vertex collection connected via a `knows` edge collection. @@ -63,7 +63,7 @@ The `traversalGraph` has been designed to demonstrate filters in traversals. It has some labels to filter on it. The graph's vertices are in a collection called `circles`, and it has an edge collection `edges` to connect them. -![Traversal Graph](../../images/traversal_graph.png) +![Traversal Graph](../../../images/traversal_graph.png) Circles have unique numeric labels. Edges have two boolean attributes (`theFalse` always being `false`, `theTruth` always being `true`) and a label @@ -93,7 +93,7 @@ The vertices in the `kShortestPathsGraph` graph are train stations of cities in Europe and North America. The edges represent train connections between them, with the travel time for both directions as edge weight. -![Train Connection Map](../../images/train_map.png) +![Train Connection Map](../../../images/train_map.png) See the [k Shortest Paths page](../aql/graphs/k-shortest-paths.md) for query examples. @@ -118,7 +118,7 @@ The example graph consists of vertices in the `mps_verts` collection and edges in the `mps_edges` collection. It is a simple traversal graph with start node *A* and end node *C*. -![Mps Graph](../../images/mps_graph.png) +![Mps Graph](../../../images/mps_graph.png) With the [Shortest Path](../aql/graphs/shortest-path.md) algorithm, you either get the shortest path *A* - *B* - *C* or *A* - *D* - *C*. With the @@ -146,7 +146,7 @@ The `worldCountry` graph has as node structure as follows: world → continent → country → capital -![World Graph](../../images/world_graph.png) +![World Graph](../../../images/world_graph.png) In some cases, edge directions aren't forward. Therefore, it may get displayed disjunct in the graph viewer. @@ -175,7 +175,7 @@ The `social` graph is a set of persons and their relations. The graph has `female` and `male` persons as vertices in two vertex collections. The edges are their connections and stored in the `relation` edge collection. -![Social Example Graph](../../images/social_graph.png) +![Social Example Graph](../../../images/social_graph.png) Example of how to create the graph, inspect its vertices and edges, and delete it again: @@ -201,7 +201,7 @@ multiple vertex collections (`germanCity` and `frenchCity`). The edges are their interconnections in several edge collections (`frenchHighway`, `germanHighway`, `internationalHighway`). -![Cities Example Graph](../../images/cities_graph.png) +![Cities Example Graph](../../../images/cities_graph.png) Example of how to create the graph, inspect its edges and vertices, and delete it again: @@ -231,7 +231,7 @@ Also see: - [Distributed Iterative Graph Processing (Pregel)](../data-science/pregel/_index.md) - [Pregel HTTP API](../develop/http-api/pregel.md) -![Three disjoint subgraphs with 36 nodes and edges in total](../../images/connected_components.png) +![Three disjoint subgraphs with 36 nodes and edges in total](../../../images/connected_components.png) ```js --- diff --git a/site/content/3.11/graphs/general-graphs/_index.md b/site/content/arangodb/3.11/graphs/general-graphs/_index.md similarity index 98% rename from site/content/3.11/graphs/general-graphs/_index.md rename to site/content/arangodb/3.11/graphs/general-graphs/_index.md index d7c072c47e..6025339a08 100644 --- a/site/content/3.11/graphs/general-graphs/_index.md +++ b/site/content/arangodb/3.11/graphs/general-graphs/_index.md @@ -57,7 +57,7 @@ General Graphs. To get started, follow the steps outlined below. 8. Click the card of the newly created graph and use the functions of the Graph Viewer to visually interact with the graph and manage the graph data. -![Create General Graph](../../../images/Create-GeneralGraph.png) +![Create General Graph](../../../../images/Create-GeneralGraph.png) ### Create a General Graph using *arangosh* diff --git a/site/content/3.10/graphs/general-graphs/functions.md b/site/content/arangodb/3.11/graphs/general-graphs/functions.md similarity index 99% rename from site/content/3.10/graphs/general-graphs/functions.md rename to site/content/arangodb/3.11/graphs/general-graphs/functions.md index 87fb731922..c05189027d 100644 --- a/site/content/3.10/graphs/general-graphs/functions.md +++ b/site/content/arangodb/3.11/graphs/general-graphs/functions.md @@ -10,7 +10,7 @@ A lot of these accept a vertex (or edge) example as parameter as defined in the Examples explain the API using the [City Graph](../example-graphs.md#city-graph): -![Social Example Graph](../../../images/cities_graph.png) +![Social Example Graph](../../../../images/cities_graph.png) ## Definition of examples diff --git a/site/content/3.11/graphs/general-graphs/management.md b/site/content/arangodb/3.11/graphs/general-graphs/management.md similarity index 100% rename from site/content/3.11/graphs/general-graphs/management.md rename to site/content/arangodb/3.11/graphs/general-graphs/management.md diff --git a/site/content/3.11/graphs/satellitegraphs/_index.md b/site/content/arangodb/3.11/graphs/satellitegraphs/_index.md similarity index 98% rename from site/content/3.11/graphs/satellitegraphs/_index.md rename to site/content/arangodb/3.11/graphs/satellitegraphs/_index.md index dae85bc5a3..05019c8b3a 100644 --- a/site/content/3.11/graphs/satellitegraphs/_index.md +++ b/site/content/arangodb/3.11/graphs/satellitegraphs/_index.md @@ -19,7 +19,7 @@ the performance of such queries. They are the natural extension of the [SatelliteCollections](../../develop/satellitecollections.md) concept to graphs. The same benefits and caveats apply. -![ArangoDB SatelliteGraphs](../../../images/SatelliteGraphs.webp) +![ArangoDB SatelliteGraphs](../../../../images/SatelliteGraphs.webp) ## Why use a SatelliteGraph? diff --git a/site/content/3.11/graphs/satellitegraphs/details.md b/site/content/arangodb/3.11/graphs/satellitegraphs/details.md similarity index 100% rename from site/content/3.11/graphs/satellitegraphs/details.md rename to site/content/arangodb/3.11/graphs/satellitegraphs/details.md diff --git a/site/content/3.11/graphs/satellitegraphs/management.md b/site/content/arangodb/3.11/graphs/satellitegraphs/management.md similarity index 100% rename from site/content/3.11/graphs/satellitegraphs/management.md rename to site/content/arangodb/3.11/graphs/satellitegraphs/management.md diff --git a/site/content/3.11/graphs/smartgraphs/_index.md b/site/content/arangodb/3.11/graphs/smartgraphs/_index.md similarity index 94% rename from site/content/3.11/graphs/smartgraphs/_index.md rename to site/content/arangodb/3.11/graphs/smartgraphs/_index.md index 3d15be6c58..a9a166b0fe 100644 --- a/site/content/3.11/graphs/smartgraphs/_index.md +++ b/site/content/arangodb/3.11/graphs/smartgraphs/_index.md @@ -62,7 +62,7 @@ cluster for both scenarios. Let's take a closer look at it. The natural distribution of data for graphs that handle large datasets involves a series of highly interconnected nodes with many edges running between them. -![Random data distribution](../../../images/SmartGraphs_random_distribution.png) +![Random data distribution](../../../../images/SmartGraphs_random_distribution.png) _The orange line indicates an example graph traversal. Notice how it touches nodes on every server._ @@ -88,7 +88,7 @@ connecting vertices with identical `smartGraphAttribute` values are stored on this machine as well. Sharding with this attribute means that the relevant data is now co-located on servers, whenever possible. -![SmartGraphs data distribution](../../../images/SmartGraphs_distribution.png) +![SmartGraphs data distribution](../../../../images/SmartGraphs_distribution.png) _The outcome of moving the data like this is that you retain the scalability as well as the performance of graph traversals in ArangoDB._ @@ -103,7 +103,7 @@ and (k-)shortest path(s) query can partially be executed locally on each DB-Serv This means a larger part of the query can be executed fully local whenever data from the SatelliteCollections is required. -![SmartGraphs with SatelliteCollections](../../../images/SmartGraphs-using-SatelliteCollections.png) +![SmartGraphs with SatelliteCollections](../../../../images/SmartGraphs-using-SatelliteCollections.png) ## Disjoint SmartGraphs @@ -112,7 +112,7 @@ large forest of graphs, when you have clearly separated subgraphs in your graph dataset. Disjoint SmartGraphs enable the automatic sharding of these subgraphs and prohibit edges connecting them. -![Disjoint SmartGraphs](../../../images/SmartGraphs-Disjoint.png) +![Disjoint SmartGraphs](../../../../images/SmartGraphs-Disjoint.png) _This ensures that graph traversals, shortest path, and k-shortest-paths queries can be executed locally on a DB-Server, achieving improved performance for diff --git a/site/content/3.11/graphs/smartgraphs/getting-started.md b/site/content/arangodb/3.11/graphs/smartgraphs/getting-started.md similarity index 99% rename from site/content/3.11/graphs/smartgraphs/getting-started.md rename to site/content/arangodb/3.11/graphs/smartgraphs/getting-started.md index 7a41c973bf..cae518afd9 100644 --- a/site/content/3.11/graphs/smartgraphs/getting-started.md +++ b/site/content/arangodb/3.11/graphs/smartgraphs/getting-started.md @@ -63,7 +63,7 @@ SmartGraphs. To get started, follow the steps outlined below. 7. Click the card of the newly created graph and use the functions of the Graph Viewer to visually interact with the graph and manage the graph data. -![Create SmartGraph](../../../images/Create-SmartGraph.png) +![Create SmartGraph](../../../../images/Create-SmartGraph.png) ## Create a SmartGraph using *arangosh* diff --git a/site/content/3.11/graphs/smartgraphs/management.md b/site/content/arangodb/3.11/graphs/smartgraphs/management.md similarity index 100% rename from site/content/3.11/graphs/smartgraphs/management.md rename to site/content/arangodb/3.11/graphs/smartgraphs/management.md diff --git a/site/content/3.11/graphs/smartgraphs/testing-graphs-on-single-server.md b/site/content/arangodb/3.11/graphs/smartgraphs/testing-graphs-on-single-server.md similarity index 100% rename from site/content/3.11/graphs/smartgraphs/testing-graphs-on-single-server.md rename to site/content/arangodb/3.11/graphs/smartgraphs/testing-graphs-on-single-server.md diff --git a/site/content/3.11/graphs/working-with-edges.md b/site/content/arangodb/3.11/graphs/working-with-edges.md similarity index 100% rename from site/content/3.11/graphs/working-with-edges.md rename to site/content/arangodb/3.11/graphs/working-with-edges.md diff --git a/site/content/3.11/index-and-search/_index.md b/site/content/arangodb/3.11/index-and-search/_index.md similarity index 100% rename from site/content/3.11/index-and-search/_index.md rename to site/content/arangodb/3.11/index-and-search/_index.md diff --git a/site/content/3.11/index-and-search/analyzers.md b/site/content/arangodb/3.11/index-and-search/analyzers.md similarity index 100% rename from site/content/3.11/index-and-search/analyzers.md rename to site/content/arangodb/3.11/index-and-search/analyzers.md diff --git a/site/content/3.11/index-and-search/arangosearch/_index.md b/site/content/arangodb/3.11/index-and-search/arangosearch/_index.md similarity index 99% rename from site/content/3.11/index-and-search/arangosearch/_index.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/_index.md index c6d6e5d952..ea2dcc46cb 100644 --- a/site/content/3.11/index-and-search/arangosearch/_index.md +++ b/site/content/arangodb/3.11/index-and-search/arangosearch/_index.md @@ -65,7 +65,7 @@ Search results can be sorted by their similarity ranking to return the best matches first using popular scoring algorithms (Okapi BM25, TF-IDF), user-defined relevance boosting and dynamic score calculation. -![Conceptual model of ArangoSearch interacting with Collections and Analyzers](../../../images/arangosearch.png) +![Conceptual model of ArangoSearch interacting with Collections and Analyzers](../../../../images/arangosearch.png) Views can be managed in the web interface, via an [HTTP API](../../develop/http-api/views/_index.md) and through a [JavaScript API](../../develop/javascript-api/@arangodb/db-object.md#views). diff --git a/site/content/3.11/index-and-search/arangosearch/arangosearch-views-reference.md b/site/content/arangodb/3.11/index-and-search/arangosearch/arangosearch-views-reference.md similarity index 99% rename from site/content/3.11/index-and-search/arangosearch/arangosearch-views-reference.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/arangosearch-views-reference.md index 9d53f53c56..ca4e877a28 100644 --- a/site/content/3.11/index-and-search/arangosearch/arangosearch-views-reference.md +++ b/site/content/arangodb/3.11/index-and-search/arangosearch/arangosearch-views-reference.md @@ -58,7 +58,7 @@ To get started, follow the steps outlined below. turn off this limit for any writer. 8. Click **Create**. -![Create new arangosearch View](../../../images/arangosearch-create-new-view.png) +![Create new arangosearch View](../../../../images/arangosearch-create-new-view.png) ## Create `arangosearch` Views using the JavaScript API diff --git a/site/content/3.11/index-and-search/arangosearch/case-sensitivity-and-diacritics.md b/site/content/arangodb/3.11/index-and-search/arangosearch/case-sensitivity-and-diacritics.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/case-sensitivity-and-diacritics.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/case-sensitivity-and-diacritics.md diff --git a/site/content/3.11/index-and-search/arangosearch/exact-value-matching.md b/site/content/arangodb/3.11/index-and-search/arangosearch/exact-value-matching.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/exact-value-matching.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/exact-value-matching.md diff --git a/site/content/3.11/index-and-search/arangosearch/example-datasets.md b/site/content/arangodb/3.11/index-and-search/arangosearch/example-datasets.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/example-datasets.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/example-datasets.md diff --git a/site/content/3.11/index-and-search/arangosearch/faceted-search.md b/site/content/arangodb/3.11/index-and-search/arangosearch/faceted-search.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/faceted-search.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/faceted-search.md diff --git a/site/content/3.11/index-and-search/arangosearch/full-text-token-search.md b/site/content/arangodb/3.11/index-and-search/arangosearch/full-text-token-search.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/full-text-token-search.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/full-text-token-search.md diff --git a/site/content/3.11/index-and-search/arangosearch/fuzzy-search.md b/site/content/arangodb/3.11/index-and-search/arangosearch/fuzzy-search.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/fuzzy-search.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/fuzzy-search.md diff --git a/site/content/3.11/index-and-search/arangosearch/geospatial-search.md b/site/content/arangodb/3.11/index-and-search/arangosearch/geospatial-search.md similarity index 99% rename from site/content/3.11/index-and-search/arangosearch/geospatial-search.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/geospatial-search.md index 996e1f9eb0..d8df3fc973 100644 --- a/site/content/3.11/index-and-search/arangosearch/geospatial-search.md +++ b/site/content/arangodb/3.11/index-and-search/arangosearch/geospatial-search.md @@ -297,7 +297,7 @@ FOR result IN PUSH( {{< /tabs >}} -![ArangoSearch geospatial query for points in a polygon](../../../images/arangosearch-geo-points-in-polygon.png) +![ArangoSearch geospatial query for points in a polygon](../../../../images/arangosearch-geo-points-in-polygon.png) You do not have to look up the polygon, you can also provide one inline. It is also not necessary to return the polygon, you can return the matches only: @@ -559,7 +559,7 @@ FOR result IN PUSH( {{< /tabs >}} -![ArangoSearch geosptial query for polygons in a polygon](../../../images/arangosearch-geo-polygons-in-polygon.png) +![ArangoSearch geosptial query for polygons in a polygon](../../../../images/arangosearch-geo-polygons-in-polygon.png) Searching for geo features in a rectangle is something you can use together with an interactive map that the user can select the area of interest with. @@ -629,4 +629,4 @@ FOR result IN PUSH( {{< /tabs >}} -![ArangoSearch geospatial query for polygons intersecting a polygon](../../../images/arangosearch-geo-polygons-intersecting-polygon.png) +![ArangoSearch geospatial query for polygons intersecting a polygon](../../../../images/arangosearch-geo-polygons-intersecting-polygon.png) diff --git a/site/content/3.11/index-and-search/arangosearch/nested-search.md b/site/content/arangodb/3.11/index-and-search/arangosearch/nested-search.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/nested-search.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/nested-search.md diff --git a/site/content/3.11/index-and-search/arangosearch/performance.md b/site/content/arangodb/3.11/index-and-search/arangosearch/performance.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/performance.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/performance.md diff --git a/site/content/3.11/index-and-search/arangosearch/phrase-and-proximity-search.md b/site/content/arangodb/3.11/index-and-search/arangosearch/phrase-and-proximity-search.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/phrase-and-proximity-search.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/phrase-and-proximity-search.md diff --git a/site/content/3.11/index-and-search/arangosearch/prefix-matching.md b/site/content/arangodb/3.11/index-and-search/arangosearch/prefix-matching.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/prefix-matching.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/prefix-matching.md diff --git a/site/content/3.11/index-and-search/arangosearch/range-queries.md b/site/content/arangodb/3.11/index-and-search/arangosearch/range-queries.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/range-queries.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/range-queries.md diff --git a/site/content/3.11/index-and-search/arangosearch/ranking.md b/site/content/arangodb/3.11/index-and-search/arangosearch/ranking.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/ranking.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/ranking.md diff --git a/site/content/3.11/index-and-search/arangosearch/search-alias-views-reference.md b/site/content/arangodb/3.11/index-and-search/arangosearch/search-alias-views-reference.md similarity index 97% rename from site/content/3.11/index-and-search/arangosearch/search-alias-views-reference.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/search-alias-views-reference.md index 89f964a838..df4c778732 100644 --- a/site/content/3.11/index-and-search/arangosearch/search-alias-views-reference.md +++ b/site/content/arangodb/3.11/index-and-search/arangosearch/search-alias-views-reference.md @@ -61,7 +61,7 @@ To get started, follow the steps outlined below. 6. To define multiple indexes, click the **Add index** button. 7. Click **Create**. -![Create new search-alias View](../../../images/arangosearch-create-search-alias-view.png) +![Create new search-alias View](../../../../images/arangosearch-create-search-alias-view.png) ## Create `search-alias` Views using the JavaScript API diff --git a/site/content/3.11/index-and-search/arangosearch/search-highlighting.md b/site/content/arangodb/3.11/index-and-search/arangosearch/search-highlighting.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/search-highlighting.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/search-highlighting.md diff --git a/site/content/3.11/index-and-search/arangosearch/wildcard-search.md b/site/content/arangodb/3.11/index-and-search/arangosearch/wildcard-search.md similarity index 100% rename from site/content/3.11/index-and-search/arangosearch/wildcard-search.md rename to site/content/arangodb/3.11/index-and-search/arangosearch/wildcard-search.md diff --git a/site/content/3.11/index-and-search/indexing/_index.md b/site/content/arangodb/3.11/index-and-search/indexing/_index.md similarity index 100% rename from site/content/3.11/index-and-search/indexing/_index.md rename to site/content/arangodb/3.11/index-and-search/indexing/_index.md diff --git a/site/content/3.11/index-and-search/indexing/basics.md b/site/content/arangodb/3.11/index-and-search/indexing/basics.md similarity index 100% rename from site/content/3.11/index-and-search/indexing/basics.md rename to site/content/arangodb/3.11/index-and-search/indexing/basics.md diff --git a/site/content/3.11/index-and-search/indexing/index-utilization.md b/site/content/arangodb/3.11/index-and-search/indexing/index-utilization.md similarity index 100% rename from site/content/3.11/index-and-search/indexing/index-utilization.md rename to site/content/arangodb/3.11/index-and-search/indexing/index-utilization.md diff --git a/site/content/3.11/index-and-search/indexing/which-index-to-use-when.md b/site/content/arangodb/3.11/index-and-search/indexing/which-index-to-use-when.md similarity index 100% rename from site/content/3.11/index-and-search/indexing/which-index-to-use-when.md rename to site/content/arangodb/3.11/index-and-search/indexing/which-index-to-use-when.md diff --git a/site/content/3.11/index-and-search/indexing/working-with-indexes/_index.md b/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/_index.md similarity index 100% rename from site/content/3.11/index-and-search/indexing/working-with-indexes/_index.md rename to site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/_index.md diff --git a/site/content/3.11/index-and-search/indexing/working-with-indexes/fulltext-indexes.md b/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/fulltext-indexes.md similarity index 100% rename from site/content/3.11/index-and-search/indexing/working-with-indexes/fulltext-indexes.md rename to site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/fulltext-indexes.md diff --git a/site/content/3.11/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md b/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md similarity index 100% rename from site/content/3.11/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md rename to site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md diff --git a/site/content/3.11/index-and-search/indexing/working-with-indexes/inverted-indexes.md b/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/inverted-indexes.md similarity index 100% rename from site/content/3.11/index-and-search/indexing/working-with-indexes/inverted-indexes.md rename to site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/inverted-indexes.md diff --git a/site/content/3.11/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md b/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md similarity index 100% rename from site/content/3.11/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md rename to site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md diff --git a/site/content/3.11/index-and-search/indexing/working-with-indexes/persistent-indexes.md b/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/persistent-indexes.md similarity index 100% rename from site/content/3.11/index-and-search/indexing/working-with-indexes/persistent-indexes.md rename to site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/persistent-indexes.md diff --git a/site/content/3.11/index-and-search/indexing/working-with-indexes/ttl-indexes.md b/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/ttl-indexes.md similarity index 100% rename from site/content/3.11/index-and-search/indexing/working-with-indexes/ttl-indexes.md rename to site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/ttl-indexes.md diff --git a/site/content/3.11/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md b/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md similarity index 100% rename from site/content/3.11/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md rename to site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md diff --git a/site/content/3.11/operations/_index.md b/site/content/arangodb/3.11/operations/_index.md similarity index 100% rename from site/content/3.11/operations/_index.md rename to site/content/arangodb/3.11/operations/_index.md diff --git a/site/content/3.11/operations/administration/_index.md b/site/content/arangodb/3.11/operations/administration/_index.md similarity index 100% rename from site/content/3.11/operations/administration/_index.md rename to site/content/arangodb/3.11/operations/administration/_index.md diff --git a/site/content/3.11/operations/administration/arangodb-starter/_index.md b/site/content/arangodb/3.11/operations/administration/arangodb-starter/_index.md similarity index 100% rename from site/content/3.11/operations/administration/arangodb-starter/_index.md rename to site/content/arangodb/3.11/operations/administration/arangodb-starter/_index.md diff --git a/site/content/3.11/operations/administration/arangodb-starter/recovery-procedure.md b/site/content/arangodb/3.11/operations/administration/arangodb-starter/recovery-procedure.md similarity index 100% rename from site/content/3.11/operations/administration/arangodb-starter/recovery-procedure.md rename to site/content/arangodb/3.11/operations/administration/arangodb-starter/recovery-procedure.md diff --git a/site/content/3.11/operations/administration/arangodb-starter/removal-procedure.md b/site/content/arangodb/3.11/operations/administration/arangodb-starter/removal-procedure.md similarity index 100% rename from site/content/3.11/operations/administration/arangodb-starter/removal-procedure.md rename to site/content/arangodb/3.11/operations/administration/arangodb-starter/removal-procedure.md diff --git a/site/content/3.11/operations/administration/configuration.md b/site/content/arangodb/3.11/operations/administration/configuration.md similarity index 100% rename from site/content/3.11/operations/administration/configuration.md rename to site/content/arangodb/3.11/operations/administration/configuration.md diff --git a/site/content/3.11/operations/administration/import-and-export.md b/site/content/arangodb/3.11/operations/administration/import-and-export.md similarity index 100% rename from site/content/3.11/operations/administration/import-and-export.md rename to site/content/arangodb/3.11/operations/administration/import-and-export.md diff --git a/site/content/3.11/operations/administration/license-management.md b/site/content/arangodb/3.11/operations/administration/license-management.md similarity index 100% rename from site/content/3.11/operations/administration/license-management.md rename to site/content/arangodb/3.11/operations/administration/license-management.md diff --git a/site/content/3.11/operations/administration/log-levels.md b/site/content/arangodb/3.11/operations/administration/log-levels.md similarity index 100% rename from site/content/3.11/operations/administration/log-levels.md rename to site/content/arangodb/3.11/operations/administration/log-levels.md diff --git a/site/content/3.11/operations/administration/reduce-memory-footprint.md b/site/content/arangodb/3.11/operations/administration/reduce-memory-footprint.md similarity index 99% rename from site/content/3.11/operations/administration/reduce-memory-footprint.md rename to site/content/arangodb/3.11/operations/administration/reduce-memory-footprint.md index 070f1ae311..5039fe7dcd 100644 --- a/site/content/3.11/operations/administration/reduce-memory-footprint.md +++ b/site/content/arangodb/3.11/operations/administration/reduce-memory-footprint.md @@ -701,7 +701,7 @@ otherwise. ## Testing the Effects of Reduced I/O Buffers -![Performance Graph](../../../images/performance_graph.png) +![Performance Graph](../../../../images/performance_graph.png) - 15:50 – Start bigger import - 16:00 – Start writing documents of ~60 KB size one at a time diff --git a/site/content/3.11/operations/administration/telemetrics.md b/site/content/arangodb/3.11/operations/administration/telemetrics.md similarity index 100% rename from site/content/3.11/operations/administration/telemetrics.md rename to site/content/arangodb/3.11/operations/administration/telemetrics.md diff --git a/site/content/3.11/operations/administration/user-management/_index.md b/site/content/arangodb/3.11/operations/administration/user-management/_index.md similarity index 100% rename from site/content/3.11/operations/administration/user-management/_index.md rename to site/content/arangodb/3.11/operations/administration/user-management/_index.md diff --git a/site/content/3.11/operations/administration/user-management/in-arangosh.md b/site/content/arangodb/3.11/operations/administration/user-management/in-arangosh.md similarity index 100% rename from site/content/3.11/operations/administration/user-management/in-arangosh.md rename to site/content/arangodb/3.11/operations/administration/user-management/in-arangosh.md diff --git a/site/content/3.11/operations/backup-and-restore.md b/site/content/arangodb/3.11/operations/backup-and-restore.md similarity index 100% rename from site/content/3.11/operations/backup-and-restore.md rename to site/content/arangodb/3.11/operations/backup-and-restore.md diff --git a/site/content/3.11/operations/installation/_index.md b/site/content/arangodb/3.11/operations/installation/_index.md similarity index 97% rename from site/content/3.11/operations/installation/_index.md rename to site/content/arangodb/3.11/operations/installation/_index.md index e64692e4f5..9f247d359a 100644 --- a/site/content/3.11/operations/installation/_index.md +++ b/site/content/arangodb/3.11/operations/installation/_index.md @@ -39,7 +39,7 @@ ArangoDB requires systems with Little Endian byte order. {{< /info >}} {{< tip >}} -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) is a fully-managed service and requires no installation. It's the easiest way to run ArangoDB in the cloud. {{< /tip >}} diff --git a/site/content/3.11/operations/installation/compiling/_index.md b/site/content/arangodb/3.11/operations/installation/compiling/_index.md similarity index 100% rename from site/content/3.11/operations/installation/compiling/_index.md rename to site/content/arangodb/3.11/operations/installation/compiling/_index.md diff --git a/site/content/3.11/operations/installation/compiling/compile-on-debian.md b/site/content/arangodb/3.11/operations/installation/compiling/compile-on-debian.md similarity index 100% rename from site/content/3.11/operations/installation/compiling/compile-on-debian.md rename to site/content/arangodb/3.11/operations/installation/compiling/compile-on-debian.md diff --git a/site/content/3.11/operations/installation/compiling/compile-on-windows.md b/site/content/arangodb/3.11/operations/installation/compiling/compile-on-windows.md similarity index 99% rename from site/content/3.11/operations/installation/compiling/compile-on-windows.md rename to site/content/arangodb/3.11/operations/installation/compiling/compile-on-windows.md index c89c5d3347..dcdac2e1a1 100644 --- a/site/content/3.11/operations/installation/compiling/compile-on-windows.md +++ b/site/content/arangodb/3.11/operations/installation/compiling/compile-on-windows.md @@ -116,7 +116,7 @@ right click on `This PC` in the tree on the left, choose `Properties` in the ope in the Popup `Environment Variables`, another popup opens, in the `System Variables` part you click `New`, And variable name: `ICU_DATA` to the value: `c:\\Windows` -![HowtoSetEnv](../../../../images/SetEnvironmentVar.png) +![HowtoSetEnv](../../../../../images/SetEnvironmentVar.png) ## Unit tests (Optional) diff --git a/site/content/3.11/operations/installation/compiling/recompiling-jemalloc.md b/site/content/arangodb/3.11/operations/installation/compiling/recompiling-jemalloc.md similarity index 100% rename from site/content/3.11/operations/installation/compiling/recompiling-jemalloc.md rename to site/content/arangodb/3.11/operations/installation/compiling/recompiling-jemalloc.md diff --git a/site/content/3.11/operations/installation/compiling/running-custom-build.md b/site/content/arangodb/3.11/operations/installation/compiling/running-custom-build.md similarity index 100% rename from site/content/3.11/operations/installation/compiling/running-custom-build.md rename to site/content/arangodb/3.11/operations/installation/compiling/running-custom-build.md diff --git a/site/content/3.11/operations/installation/docker.md b/site/content/arangodb/3.11/operations/installation/docker.md similarity index 100% rename from site/content/3.11/operations/installation/docker.md rename to site/content/arangodb/3.11/operations/installation/docker.md diff --git a/site/content/3.11/operations/installation/linux/_index.md b/site/content/arangodb/3.11/operations/installation/linux/_index.md similarity index 100% rename from site/content/3.11/operations/installation/linux/_index.md rename to site/content/arangodb/3.11/operations/installation/linux/_index.md diff --git a/site/content/3.11/operations/installation/linux/linux-os-tuning-script-examples.md b/site/content/arangodb/3.11/operations/installation/linux/linux-os-tuning-script-examples.md similarity index 100% rename from site/content/3.11/operations/installation/linux/linux-os-tuning-script-examples.md rename to site/content/arangodb/3.11/operations/installation/linux/linux-os-tuning-script-examples.md diff --git a/site/content/3.11/operations/installation/linux/operating-system-configuration.md b/site/content/arangodb/3.11/operations/installation/linux/operating-system-configuration.md similarity index 100% rename from site/content/3.11/operations/installation/linux/operating-system-configuration.md rename to site/content/arangodb/3.11/operations/installation/linux/operating-system-configuration.md diff --git a/site/content/3.11/operations/installation/macos.md b/site/content/arangodb/3.11/operations/installation/macos.md similarity index 100% rename from site/content/3.11/operations/installation/macos.md rename to site/content/arangodb/3.11/operations/installation/macos.md diff --git a/site/content/3.11/operations/installation/uninstallation.md b/site/content/arangodb/3.11/operations/installation/uninstallation.md similarity index 100% rename from site/content/3.11/operations/installation/uninstallation.md rename to site/content/arangodb/3.11/operations/installation/uninstallation.md diff --git a/site/content/3.11/operations/installation/windows.md b/site/content/arangodb/3.11/operations/installation/windows.md similarity index 100% rename from site/content/3.11/operations/installation/windows.md rename to site/content/arangodb/3.11/operations/installation/windows.md diff --git a/site/content/3.11/operations/security/_index.md b/site/content/arangodb/3.11/operations/security/_index.md similarity index 100% rename from site/content/3.11/operations/security/_index.md rename to site/content/arangodb/3.11/operations/security/_index.md diff --git a/site/content/3.11/operations/security/audit-logging.md b/site/content/arangodb/3.11/operations/security/audit-logging.md similarity index 98% rename from site/content/3.11/operations/security/audit-logging.md rename to site/content/arangodb/3.11/operations/security/audit-logging.md index 792762bb2e..60dd5d212c 100644 --- a/site/content/3.11/operations/security/audit-logging.md +++ b/site/content/arangodb/3.11/operations/security/audit-logging.md @@ -13,7 +13,7 @@ pageToc: {{< tip >}} A similar feature is also available in the -[ArangoGraph Insights Platform](../../arangograph/security-and-access-control/_index.md#using-an-audit-log). +[Arango Managed Platform (AMP)](../../../../amp/security-and-access-control/_index.md#using-an-audit-log). {{< /tip >}} ## Configuration diff --git a/site/content/3.11/operations/security/change-root-password.md b/site/content/arangodb/3.11/operations/security/change-root-password.md similarity index 100% rename from site/content/3.11/operations/security/change-root-password.md rename to site/content/arangodb/3.11/operations/security/change-root-password.md diff --git a/site/content/3.11/operations/security/encryption-at-rest.md b/site/content/arangodb/3.11/operations/security/encryption-at-rest.md similarity index 97% rename from site/content/3.11/operations/security/encryption-at-rest.md rename to site/content/arangodb/3.11/operations/security/encryption-at-rest.md index 9821486e56..8a958d9be1 100644 --- a/site/content/3.11/operations/security/encryption-at-rest.md +++ b/site/content/arangodb/3.11/operations/security/encryption-at-rest.md @@ -30,9 +30,9 @@ performance and resistance to side-channel attacks. The encryption feature is supported by all ArangoDB deployment modes. {{< info >}} -The ArangoGraph Insights Platform has encryption at rest as well as in transit +The Arango Managed Platform (AMP) has encryption at rest as well as in transit set on by default and cannot be disabled. For more information, see the -[ArangoGraph documentation](../../arangograph/_index.md). +[ArangoGraph documentation](../../../../amp/_index.md). {{< /info >}} ## Limitations diff --git a/site/content/3.11/operations/security/securing-starter-deployments.md b/site/content/arangodb/3.11/operations/security/securing-starter-deployments.md similarity index 100% rename from site/content/3.11/operations/security/securing-starter-deployments.md rename to site/content/arangodb/3.11/operations/security/securing-starter-deployments.md diff --git a/site/content/3.11/operations/security/security-options.md b/site/content/arangodb/3.11/operations/security/security-options.md similarity index 100% rename from site/content/3.11/operations/security/security-options.md rename to site/content/arangodb/3.11/operations/security/security-options.md diff --git a/site/content/3.11/operations/troubleshooting/_index.md b/site/content/arangodb/3.11/operations/troubleshooting/_index.md similarity index 100% rename from site/content/3.11/operations/troubleshooting/_index.md rename to site/content/arangodb/3.11/operations/troubleshooting/_index.md diff --git a/site/content/3.11/operations/troubleshooting/arangod.md b/site/content/arangodb/3.11/operations/troubleshooting/arangod.md similarity index 100% rename from site/content/3.11/operations/troubleshooting/arangod.md rename to site/content/arangodb/3.11/operations/troubleshooting/arangod.md diff --git a/site/content/3.11/operations/troubleshooting/cluster/_index.md b/site/content/arangodb/3.11/operations/troubleshooting/cluster/_index.md similarity index 100% rename from site/content/3.11/operations/troubleshooting/cluster/_index.md rename to site/content/arangodb/3.11/operations/troubleshooting/cluster/_index.md diff --git a/site/content/3.11/operations/troubleshooting/cluster/agency-dump.md b/site/content/arangodb/3.11/operations/troubleshooting/cluster/agency-dump.md similarity index 100% rename from site/content/3.11/operations/troubleshooting/cluster/agency-dump.md rename to site/content/arangodb/3.11/operations/troubleshooting/cluster/agency-dump.md diff --git a/site/content/3.11/operations/troubleshooting/emergency-console.md b/site/content/arangodb/3.11/operations/troubleshooting/emergency-console.md similarity index 100% rename from site/content/3.11/operations/troubleshooting/emergency-console.md rename to site/content/arangodb/3.11/operations/troubleshooting/emergency-console.md diff --git a/site/content/3.11/operations/troubleshooting/query-debug-packages.md b/site/content/arangodb/3.11/operations/troubleshooting/query-debug-packages.md similarity index 100% rename from site/content/3.11/operations/troubleshooting/query-debug-packages.md rename to site/content/arangodb/3.11/operations/troubleshooting/query-debug-packages.md diff --git a/site/content/3.11/operations/upgrading/_index.md b/site/content/arangodb/3.11/operations/upgrading/_index.md similarity index 100% rename from site/content/3.11/operations/upgrading/_index.md rename to site/content/arangodb/3.11/operations/upgrading/_index.md diff --git a/site/content/3.11/operations/upgrading/community-to-enterprise-upgrade.md b/site/content/arangodb/3.11/operations/upgrading/community-to-enterprise-upgrade.md similarity index 100% rename from site/content/3.11/operations/upgrading/community-to-enterprise-upgrade.md rename to site/content/arangodb/3.11/operations/upgrading/community-to-enterprise-upgrade.md diff --git a/site/content/3.11/operations/upgrading/downgrading.md b/site/content/arangodb/3.11/operations/upgrading/downgrading.md similarity index 100% rename from site/content/3.11/operations/upgrading/downgrading.md rename to site/content/arangodb/3.11/operations/upgrading/downgrading.md diff --git a/site/content/3.11/operations/upgrading/manual-deployments/_index.md b/site/content/arangodb/3.11/operations/upgrading/manual-deployments/_index.md similarity index 100% rename from site/content/3.11/operations/upgrading/manual-deployments/_index.md rename to site/content/arangodb/3.11/operations/upgrading/manual-deployments/_index.md diff --git a/site/content/3.11/operations/upgrading/manual-deployments/active-failover.md b/site/content/arangodb/3.11/operations/upgrading/manual-deployments/active-failover.md similarity index 100% rename from site/content/3.11/operations/upgrading/manual-deployments/active-failover.md rename to site/content/arangodb/3.11/operations/upgrading/manual-deployments/active-failover.md diff --git a/site/content/3.11/operations/upgrading/manual-deployments/cluster.md b/site/content/arangodb/3.11/operations/upgrading/manual-deployments/cluster.md similarity index 100% rename from site/content/3.11/operations/upgrading/manual-deployments/cluster.md rename to site/content/arangodb/3.11/operations/upgrading/manual-deployments/cluster.md diff --git a/site/content/3.11/operations/upgrading/os-specific-information/_index.md b/site/content/arangodb/3.11/operations/upgrading/os-specific-information/_index.md similarity index 100% rename from site/content/3.11/operations/upgrading/os-specific-information/_index.md rename to site/content/arangodb/3.11/operations/upgrading/os-specific-information/_index.md diff --git a/site/content/3.11/operations/upgrading/os-specific-information/linux.md b/site/content/arangodb/3.11/operations/upgrading/os-specific-information/linux.md similarity index 100% rename from site/content/3.11/operations/upgrading/os-specific-information/linux.md rename to site/content/arangodb/3.11/operations/upgrading/os-specific-information/linux.md diff --git a/site/content/3.11/operations/upgrading/os-specific-information/macos.md b/site/content/arangodb/3.11/operations/upgrading/os-specific-information/macos.md similarity index 95% rename from site/content/3.11/operations/upgrading/os-specific-information/macos.md rename to site/content/arangodb/3.11/operations/upgrading/os-specific-information/macos.md index 3e010631cc..9e5ec267db 100644 --- a/site/content/3.11/operations/upgrading/os-specific-information/macos.md +++ b/site/content/arangodb/3.11/operations/upgrading/os-specific-information/macos.md @@ -23,7 +23,7 @@ Drag and drop the `ArangoDB3-CLI` (Community Edition) or the `ArangoDB3e-CLI` (Enterprise Edition) file onto the shown `Applications` folder. You are asked if you want to replace the old file with the newer one. -![MacOSUpgrade](../../../../images/MacOSUpgrade.png) +![MacOSUpgrade](../../../../../images/MacOSUpgrade.png) Select `Replace` to install the new ArangoDB version. diff --git a/site/content/3.11/operations/upgrading/os-specific-information/windows.md b/site/content/arangodb/3.11/operations/upgrading/os-specific-information/windows.md similarity index 96% rename from site/content/3.11/operations/upgrading/os-specific-information/windows.md rename to site/content/arangodb/3.11/operations/upgrading/os-specific-information/windows.md index b43686c6e1..dcb9b5d831 100644 --- a/site/content/3.11/operations/upgrading/os-specific-information/windows.md +++ b/site/content/arangodb/3.11/operations/upgrading/os-specific-information/windows.md @@ -34,7 +34,7 @@ If you have installed via the _Installer_, to upgrade: the option "_Automatically update existing ArangoDB database_" so that the database files will be upgraded. -![Update Option](../../../../images/installer_upgrade.png) +![Update Option](../../../../../images/installer_upgrade.png) {{< info >}} Upgrading via the Installer, when the old data is kept, will keep your @@ -45,14 +45,14 @@ password and choice of storage engine as it is. - You can uninstall the old one manually (make a copy of your old configuration file first). -![Uninstall old version](../../../../images/both_installations.png) +![Uninstall old version](../../../../../images/both_installations.png) {{< danger >}} When uninstalling the old package, please make sure the option "_Delete databases with uninstallation_" is **not** checked. {{< /danger >}} -![Delete Option](../../../../images/installer_delete.png) +![Delete Option](../../../../../images/installer_delete.png) {{< danger >}} When upgrading, the Windows Installer does not use the old configuration file diff --git a/site/content/3.11/operations/upgrading/starter-deployments.md b/site/content/arangodb/3.11/operations/upgrading/starter-deployments.md similarity index 100% rename from site/content/3.11/operations/upgrading/starter-deployments.md rename to site/content/arangodb/3.11/operations/upgrading/starter-deployments.md diff --git a/site/content/3.11/release-notes/_index.md b/site/content/arangodb/3.11/release-notes/_index.md similarity index 100% rename from site/content/3.11/release-notes/_index.md rename to site/content/arangodb/3.11/release-notes/_index.md diff --git a/site/content/3.11/release-notes/deprecated-and-removed-features.md b/site/content/arangodb/3.11/release-notes/deprecated-and-removed-features.md similarity index 100% rename from site/content/3.11/release-notes/deprecated-and-removed-features.md rename to site/content/arangodb/3.11/release-notes/deprecated-and-removed-features.md diff --git a/site/content/3.11/release-notes/version-3.0/_index.md b/site/content/arangodb/3.11/release-notes/version-3.0/_index.md similarity index 100% rename from site/content/3.11/release-notes/version-3.0/_index.md rename to site/content/arangodb/3.11/release-notes/version-3.0/_index.md diff --git a/site/content/3.11/release-notes/version-3.0/incompatible-changes-in-3-0.md b/site/content/arangodb/3.11/release-notes/version-3.0/incompatible-changes-in-3-0.md similarity index 100% rename from site/content/3.11/release-notes/version-3.0/incompatible-changes-in-3-0.md rename to site/content/arangodb/3.11/release-notes/version-3.0/incompatible-changes-in-3-0.md diff --git a/site/content/3.11/release-notes/version-3.0/whats-new-in-3-0.md b/site/content/arangodb/3.11/release-notes/version-3.0/whats-new-in-3-0.md similarity index 100% rename from site/content/3.11/release-notes/version-3.0/whats-new-in-3-0.md rename to site/content/arangodb/3.11/release-notes/version-3.0/whats-new-in-3-0.md diff --git a/site/content/3.11/release-notes/version-3.1/_index.md b/site/content/arangodb/3.11/release-notes/version-3.1/_index.md similarity index 100% rename from site/content/3.11/release-notes/version-3.1/_index.md rename to site/content/arangodb/3.11/release-notes/version-3.1/_index.md diff --git a/site/content/3.11/release-notes/version-3.1/incompatible-changes-in-3-1.md b/site/content/arangodb/3.11/release-notes/version-3.1/incompatible-changes-in-3-1.md similarity index 100% rename from site/content/3.11/release-notes/version-3.1/incompatible-changes-in-3-1.md rename to site/content/arangodb/3.11/release-notes/version-3.1/incompatible-changes-in-3-1.md diff --git a/site/content/3.11/release-notes/version-3.1/whats-new-in-3-1.md b/site/content/arangodb/3.11/release-notes/version-3.1/whats-new-in-3-1.md similarity index 100% rename from site/content/3.11/release-notes/version-3.1/whats-new-in-3-1.md rename to site/content/arangodb/3.11/release-notes/version-3.1/whats-new-in-3-1.md diff --git a/site/content/3.11/release-notes/version-3.10/_index.md b/site/content/arangodb/3.11/release-notes/version-3.10/_index.md similarity index 100% rename from site/content/3.11/release-notes/version-3.10/_index.md rename to site/content/arangodb/3.11/release-notes/version-3.10/_index.md diff --git a/site/content/3.11/release-notes/version-3.10/api-changes-in-3-10.md b/site/content/arangodb/3.11/release-notes/version-3.10/api-changes-in-3-10.md similarity index 100% rename from site/content/3.11/release-notes/version-3.10/api-changes-in-3-10.md rename to site/content/arangodb/3.11/release-notes/version-3.10/api-changes-in-3-10.md diff --git a/site/content/3.11/release-notes/version-3.10/incompatible-changes-in-3-10.md b/site/content/arangodb/3.11/release-notes/version-3.10/incompatible-changes-in-3-10.md similarity index 100% rename from site/content/3.11/release-notes/version-3.10/incompatible-changes-in-3-10.md rename to site/content/arangodb/3.11/release-notes/version-3.10/incompatible-changes-in-3-10.md diff --git a/site/content/3.11/release-notes/version-3.10/known-issues-in-3-10.md b/site/content/arangodb/3.11/release-notes/version-3.10/known-issues-in-3-10.md similarity index 100% rename from site/content/3.11/release-notes/version-3.10/known-issues-in-3-10.md rename to site/content/arangodb/3.11/release-notes/version-3.10/known-issues-in-3-10.md diff --git a/site/content/3.11/release-notes/version-3.10/whats-new-in-3-10.md b/site/content/arangodb/3.11/release-notes/version-3.10/whats-new-in-3-10.md similarity index 100% rename from site/content/3.11/release-notes/version-3.10/whats-new-in-3-10.md rename to site/content/arangodb/3.11/release-notes/version-3.10/whats-new-in-3-10.md diff --git a/site/content/3.11/release-notes/version-3.11/_index.md b/site/content/arangodb/3.11/release-notes/version-3.11/_index.md similarity index 100% rename from site/content/3.11/release-notes/version-3.11/_index.md rename to site/content/arangodb/3.11/release-notes/version-3.11/_index.md diff --git a/site/content/3.11/release-notes/version-3.11/api-changes-in-3-11.md b/site/content/arangodb/3.11/release-notes/version-3.11/api-changes-in-3-11.md similarity index 100% rename from site/content/3.11/release-notes/version-3.11/api-changes-in-3-11.md rename to site/content/arangodb/3.11/release-notes/version-3.11/api-changes-in-3-11.md diff --git a/site/content/3.11/release-notes/version-3.11/incompatible-changes-in-3-11.md b/site/content/arangodb/3.11/release-notes/version-3.11/incompatible-changes-in-3-11.md similarity index 100% rename from site/content/3.11/release-notes/version-3.11/incompatible-changes-in-3-11.md rename to site/content/arangodb/3.11/release-notes/version-3.11/incompatible-changes-in-3-11.md diff --git a/site/content/3.11/release-notes/version-3.11/known-issues-in-3-11.md b/site/content/arangodb/3.11/release-notes/version-3.11/known-issues-in-3-11.md similarity index 100% rename from site/content/3.11/release-notes/version-3.11/known-issues-in-3-11.md rename to site/content/arangodb/3.11/release-notes/version-3.11/known-issues-in-3-11.md diff --git a/site/content/3.11/release-notes/version-3.11/whats-new-in-3-11.md b/site/content/arangodb/3.11/release-notes/version-3.11/whats-new-in-3-11.md similarity index 99% rename from site/content/3.11/release-notes/version-3.11/whats-new-in-3-11.md rename to site/content/arangodb/3.11/release-notes/version-3.11/whats-new-in-3-11.md index d3141442d0..698caac625 100644 --- a/site/content/3.11/release-notes/version-3.11/whats-new-in-3-11.md +++ b/site/content/arangodb/3.11/release-notes/version-3.11/whats-new-in-3-11.md @@ -127,7 +127,7 @@ vertex. Another quality-of-life improvement is the **Start node** setting listin the graph's vertex collections and the available document keys, that you can also search by. -![New graph viewer](../../../images/graphViewer.png) +![New graph viewer](../../../../images/graphViewer.png) You can still switch to the old graph viewer if desired. diff --git a/site/content/3.11/release-notes/version-3.2/_index.md b/site/content/arangodb/3.11/release-notes/version-3.2/_index.md similarity index 100% rename from site/content/3.11/release-notes/version-3.2/_index.md rename to site/content/arangodb/3.11/release-notes/version-3.2/_index.md diff --git a/site/content/3.11/release-notes/version-3.2/incompatible-changes-in-3-2.md b/site/content/arangodb/3.11/release-notes/version-3.2/incompatible-changes-in-3-2.md similarity index 100% rename from site/content/3.11/release-notes/version-3.2/incompatible-changes-in-3-2.md rename to site/content/arangodb/3.11/release-notes/version-3.2/incompatible-changes-in-3-2.md diff --git a/site/content/3.11/release-notes/version-3.2/known-issues-in-3-2.md b/site/content/arangodb/3.11/release-notes/version-3.2/known-issues-in-3-2.md similarity index 100% rename from site/content/3.11/release-notes/version-3.2/known-issues-in-3-2.md rename to site/content/arangodb/3.11/release-notes/version-3.2/known-issues-in-3-2.md diff --git a/site/content/3.11/release-notes/version-3.2/whats-new-in-3-2.md b/site/content/arangodb/3.11/release-notes/version-3.2/whats-new-in-3-2.md similarity index 100% rename from site/content/3.11/release-notes/version-3.2/whats-new-in-3-2.md rename to site/content/arangodb/3.11/release-notes/version-3.2/whats-new-in-3-2.md diff --git a/site/content/3.11/release-notes/version-3.3/_index.md b/site/content/arangodb/3.11/release-notes/version-3.3/_index.md similarity index 100% rename from site/content/3.11/release-notes/version-3.3/_index.md rename to site/content/arangodb/3.11/release-notes/version-3.3/_index.md diff --git a/site/content/3.11/release-notes/version-3.3/incompatible-changes-in-3-3.md b/site/content/arangodb/3.11/release-notes/version-3.3/incompatible-changes-in-3-3.md similarity index 100% rename from site/content/3.11/release-notes/version-3.3/incompatible-changes-in-3-3.md rename to site/content/arangodb/3.11/release-notes/version-3.3/incompatible-changes-in-3-3.md diff --git a/site/content/3.11/release-notes/version-3.3/known-issues-in-3-3.md b/site/content/arangodb/3.11/release-notes/version-3.3/known-issues-in-3-3.md similarity index 100% rename from site/content/3.11/release-notes/version-3.3/known-issues-in-3-3.md rename to site/content/arangodb/3.11/release-notes/version-3.3/known-issues-in-3-3.md diff --git a/site/content/3.11/release-notes/version-3.3/whats-new-in-3-3.md b/site/content/arangodb/3.11/release-notes/version-3.3/whats-new-in-3-3.md similarity index 100% rename from site/content/3.11/release-notes/version-3.3/whats-new-in-3-3.md rename to site/content/arangodb/3.11/release-notes/version-3.3/whats-new-in-3-3.md diff --git a/site/content/3.11/release-notes/version-3.4/_index.md b/site/content/arangodb/3.11/release-notes/version-3.4/_index.md similarity index 100% rename from site/content/3.11/release-notes/version-3.4/_index.md rename to site/content/arangodb/3.11/release-notes/version-3.4/_index.md diff --git a/site/content/3.11/release-notes/version-3.4/incompatible-changes-in-3-4.md b/site/content/arangodb/3.11/release-notes/version-3.4/incompatible-changes-in-3-4.md similarity index 100% rename from site/content/3.11/release-notes/version-3.4/incompatible-changes-in-3-4.md rename to site/content/arangodb/3.11/release-notes/version-3.4/incompatible-changes-in-3-4.md diff --git a/site/content/3.11/release-notes/version-3.4/known-issues-in-3-4.md b/site/content/arangodb/3.11/release-notes/version-3.4/known-issues-in-3-4.md similarity index 100% rename from site/content/3.11/release-notes/version-3.4/known-issues-in-3-4.md rename to site/content/arangodb/3.11/release-notes/version-3.4/known-issues-in-3-4.md diff --git a/site/content/3.11/release-notes/version-3.4/whats-new-in-3-4.md b/site/content/arangodb/3.11/release-notes/version-3.4/whats-new-in-3-4.md similarity index 100% rename from site/content/3.11/release-notes/version-3.4/whats-new-in-3-4.md rename to site/content/arangodb/3.11/release-notes/version-3.4/whats-new-in-3-4.md diff --git a/site/content/3.11/release-notes/version-3.5/_index.md b/site/content/arangodb/3.11/release-notes/version-3.5/_index.md similarity index 100% rename from site/content/3.11/release-notes/version-3.5/_index.md rename to site/content/arangodb/3.11/release-notes/version-3.5/_index.md diff --git a/site/content/3.11/release-notes/version-3.5/incompatible-changes-in-3-5.md b/site/content/arangodb/3.11/release-notes/version-3.5/incompatible-changes-in-3-5.md similarity index 100% rename from site/content/3.11/release-notes/version-3.5/incompatible-changes-in-3-5.md rename to site/content/arangodb/3.11/release-notes/version-3.5/incompatible-changes-in-3-5.md diff --git a/site/content/3.11/release-notes/version-3.5/known-issues-in-3-5.md b/site/content/arangodb/3.11/release-notes/version-3.5/known-issues-in-3-5.md similarity index 100% rename from site/content/3.11/release-notes/version-3.5/known-issues-in-3-5.md rename to site/content/arangodb/3.11/release-notes/version-3.5/known-issues-in-3-5.md diff --git a/site/content/3.11/release-notes/version-3.5/whats-new-in-3-5.md b/site/content/arangodb/3.11/release-notes/version-3.5/whats-new-in-3-5.md similarity index 100% rename from site/content/3.11/release-notes/version-3.5/whats-new-in-3-5.md rename to site/content/arangodb/3.11/release-notes/version-3.5/whats-new-in-3-5.md diff --git a/site/content/3.11/release-notes/version-3.6/_index.md b/site/content/arangodb/3.11/release-notes/version-3.6/_index.md similarity index 100% rename from site/content/3.11/release-notes/version-3.6/_index.md rename to site/content/arangodb/3.11/release-notes/version-3.6/_index.md diff --git a/site/content/3.11/release-notes/version-3.6/incompatible-changes-in-3-6.md b/site/content/arangodb/3.11/release-notes/version-3.6/incompatible-changes-in-3-6.md similarity index 100% rename from site/content/3.11/release-notes/version-3.6/incompatible-changes-in-3-6.md rename to site/content/arangodb/3.11/release-notes/version-3.6/incompatible-changes-in-3-6.md diff --git a/site/content/3.11/release-notes/version-3.6/known-issues-in-3-6.md b/site/content/arangodb/3.11/release-notes/version-3.6/known-issues-in-3-6.md similarity index 100% rename from site/content/3.11/release-notes/version-3.6/known-issues-in-3-6.md rename to site/content/arangodb/3.11/release-notes/version-3.6/known-issues-in-3-6.md diff --git a/site/content/3.11/release-notes/version-3.6/whats-new-in-3-6.md b/site/content/arangodb/3.11/release-notes/version-3.6/whats-new-in-3-6.md similarity index 100% rename from site/content/3.11/release-notes/version-3.6/whats-new-in-3-6.md rename to site/content/arangodb/3.11/release-notes/version-3.6/whats-new-in-3-6.md diff --git a/site/content/3.11/release-notes/version-3.7/_index.md b/site/content/arangodb/3.11/release-notes/version-3.7/_index.md similarity index 100% rename from site/content/3.11/release-notes/version-3.7/_index.md rename to site/content/arangodb/3.11/release-notes/version-3.7/_index.md diff --git a/site/content/3.11/release-notes/version-3.7/api-changes-in-3-7.md b/site/content/arangodb/3.11/release-notes/version-3.7/api-changes-in-3-7.md similarity index 100% rename from site/content/3.11/release-notes/version-3.7/api-changes-in-3-7.md rename to site/content/arangodb/3.11/release-notes/version-3.7/api-changes-in-3-7.md diff --git a/site/content/3.11/release-notes/version-3.7/incompatible-changes-in-3-7.md b/site/content/arangodb/3.11/release-notes/version-3.7/incompatible-changes-in-3-7.md similarity index 100% rename from site/content/3.11/release-notes/version-3.7/incompatible-changes-in-3-7.md rename to site/content/arangodb/3.11/release-notes/version-3.7/incompatible-changes-in-3-7.md diff --git a/site/content/3.11/release-notes/version-3.7/known-issues-in-3-7.md b/site/content/arangodb/3.11/release-notes/version-3.7/known-issues-in-3-7.md similarity index 100% rename from site/content/3.11/release-notes/version-3.7/known-issues-in-3-7.md rename to site/content/arangodb/3.11/release-notes/version-3.7/known-issues-in-3-7.md diff --git a/site/content/3.11/release-notes/version-3.7/whats-new-in-3-7.md b/site/content/arangodb/3.11/release-notes/version-3.7/whats-new-in-3-7.md similarity index 100% rename from site/content/3.11/release-notes/version-3.7/whats-new-in-3-7.md rename to site/content/arangodb/3.11/release-notes/version-3.7/whats-new-in-3-7.md diff --git a/site/content/3.11/release-notes/version-3.8/_index.md b/site/content/arangodb/3.11/release-notes/version-3.8/_index.md similarity index 100% rename from site/content/3.11/release-notes/version-3.8/_index.md rename to site/content/arangodb/3.11/release-notes/version-3.8/_index.md diff --git a/site/content/3.11/release-notes/version-3.8/api-changes-in-3-8.md b/site/content/arangodb/3.11/release-notes/version-3.8/api-changes-in-3-8.md similarity index 100% rename from site/content/3.11/release-notes/version-3.8/api-changes-in-3-8.md rename to site/content/arangodb/3.11/release-notes/version-3.8/api-changes-in-3-8.md diff --git a/site/content/3.11/release-notes/version-3.8/incompatible-changes-in-3-8.md b/site/content/arangodb/3.11/release-notes/version-3.8/incompatible-changes-in-3-8.md similarity index 100% rename from site/content/3.11/release-notes/version-3.8/incompatible-changes-in-3-8.md rename to site/content/arangodb/3.11/release-notes/version-3.8/incompatible-changes-in-3-8.md diff --git a/site/content/3.11/release-notes/version-3.8/known-issues-in-3-8.md b/site/content/arangodb/3.11/release-notes/version-3.8/known-issues-in-3-8.md similarity index 100% rename from site/content/3.11/release-notes/version-3.8/known-issues-in-3-8.md rename to site/content/arangodb/3.11/release-notes/version-3.8/known-issues-in-3-8.md diff --git a/site/content/3.11/release-notes/version-3.8/whats-new-in-3-8.md b/site/content/arangodb/3.11/release-notes/version-3.8/whats-new-in-3-8.md similarity index 100% rename from site/content/3.11/release-notes/version-3.8/whats-new-in-3-8.md rename to site/content/arangodb/3.11/release-notes/version-3.8/whats-new-in-3-8.md diff --git a/site/content/3.11/release-notes/version-3.9/_index.md b/site/content/arangodb/3.11/release-notes/version-3.9/_index.md similarity index 100% rename from site/content/3.11/release-notes/version-3.9/_index.md rename to site/content/arangodb/3.11/release-notes/version-3.9/_index.md diff --git a/site/content/3.11/release-notes/version-3.9/api-changes-in-3-9.md b/site/content/arangodb/3.11/release-notes/version-3.9/api-changes-in-3-9.md similarity index 100% rename from site/content/3.11/release-notes/version-3.9/api-changes-in-3-9.md rename to site/content/arangodb/3.11/release-notes/version-3.9/api-changes-in-3-9.md diff --git a/site/content/3.11/release-notes/version-3.9/incompatible-changes-in-3-9.md b/site/content/arangodb/3.11/release-notes/version-3.9/incompatible-changes-in-3-9.md similarity index 100% rename from site/content/3.11/release-notes/version-3.9/incompatible-changes-in-3-9.md rename to site/content/arangodb/3.11/release-notes/version-3.9/incompatible-changes-in-3-9.md diff --git a/site/content/3.11/release-notes/version-3.9/known-issues-in-3-9.md b/site/content/arangodb/3.11/release-notes/version-3.9/known-issues-in-3-9.md similarity index 100% rename from site/content/3.11/release-notes/version-3.9/known-issues-in-3-9.md rename to site/content/arangodb/3.11/release-notes/version-3.9/known-issues-in-3-9.md diff --git a/site/content/3.11/release-notes/version-3.9/whats-new-in-3-9.md b/site/content/arangodb/3.11/release-notes/version-3.9/whats-new-in-3-9.md similarity index 100% rename from site/content/3.11/release-notes/version-3.9/whats-new-in-3-9.md rename to site/content/arangodb/3.11/release-notes/version-3.9/whats-new-in-3-9.md diff --git a/site/content/3.12/_index.md b/site/content/arangodb/3.12/_index.md similarity index 58% rename from site/content/3.12/_index.md rename to site/content/arangodb/3.12/_index.md index cc569bfae0..9fe6125694 100644 --- a/site/content/3.12/_index.md +++ b/site/content/arangodb/3.12/_index.md @@ -1,14 +1,14 @@ --- title: Recommended Resources menuTitle: '3.12' -weight: 0 +weight: 1 layout: default --- {{< cloudbanner >}} {{< cards >}} -{{% card title="What is ArangoDB?" link="about-arangodb/" %}} +{{% card title="What is ArangoDB?" link="about/" %}} Get to know graphs, ArangoDB's use cases and features. {{% /card %}} @@ -17,24 +17,11 @@ Learn about ArangoDB's core concepts, how to interact with the database system, and get a server instance up and running. {{% /card %}} -{{% card title="ArangoGraph Insights Platform" link="arangograph/" %}} -Try out ArangoDB's fully-managed cloud offering for a faster time to value. -{{% /card %}} - {{% card title="AQL" link="aql/" %}} ArangoDB's Query Language AQL lets you use graphs, JSON documents, and search via a single, composable query language. {{% /card %}} -{{% card title="GenAI & Data Science" link="../platform/data-science/" %}} -Discover the graph-powered machine learning and GraphRAG features of ArangoDB. -{{% /card %}} - -{{% card title="ArangoDB Platform" link="../platform/" %}} -The ArangoDB Platform is the umbrella for hosting the entire ArangoDB offering -of products, including GraphML and GraphRAG. -{{% /card %}} - {{% card title="Deploy" link="deploy/" %}} Find the right deployment mode and set up your ArangoDB instance. {{% /card %}} diff --git a/site/content/3.12/about-arangodb/_index.md b/site/content/arangodb/3.12/about/_index.md similarity index 83% rename from site/content/3.12/about-arangodb/_index.md rename to site/content/arangodb/3.12/about/_index.md index ea7094cbb1..b998bac24e 100644 --- a/site/content/3.12/about-arangodb/_index.md +++ b/site/content/arangodb/3.12/about/_index.md @@ -9,7 +9,7 @@ aliases: - introduction - introduction/about-arangodb --- -![ArangoDB Overview Diagram](../../images/arangodb-overview-diagram.png) +![ArangoDB Overview Diagram](../../../images/arangodb-overview-diagram.png) ArangoDB combines the analytical power of native graphs with an integrated search engine, JSON support, and a variety of data access patterns via a single, @@ -17,25 +17,25 @@ composable query language. ArangoDB is available in a community and a commercial [edition](features/_index.md). You can use it for on-premises deployments, as well as a fully managed -cloud service, the [ArangoGraph Insights Platform](../arangograph/_index.md). +cloud service, the [Arango Managed Platform (AMP)](../../../amp/_index.md). ## What are Graphs? Graphs are information networks composed of nodes and edges. -![An arrow labeled as "Edge" pointing from one circle to another, both labeled "Node"](../../images/data-model-graph-relation-abstract-edge.png) +![An arrow labeled as "Edge" pointing from one circle to another, both labeled "Node"](../../../images/data-model-graph-relation-abstract-edge.png) A social network is a common example of a graph. People are represented by nodes and their friendships by relations. -![Two circles labeled "Mary" and "John", with an arrow labeled "isFriendOf" pointing from "Mary" to "John"](../../images/data-model-graph-relation-concrete.png) +![Two circles labeled "Mary" and "John", with an arrow labeled "isFriendOf" pointing from "Mary" to "John"](../../../images/data-model-graph-relation-concrete.png) Nodes are also called vertices (singular: vertex), and edges are relations that connect nodes. A node typically represents a specific entity (a person, a book, a sensor reading, etc.) and an edge defines how one entity relates to another. -![Three circles labeled "Mary", "Book", and "John", with an arrow labeled "bought" from "Mary" to "Book" and an arrow labeled "isFriendOf" from "Mary" to "John"](../../images/data-model-graph-relations.png) +![Three circles labeled "Mary", "Book", and "John", with an arrow labeled "bought" from "Mary" to "Book" and an arrow labeled "isFriendOf" from "Mary" to "John"](../../../images/data-model-graph-relations.png) This paradigm of storing data feels natural because it closely matches the cognitive model of humans. It is an expressive data model that allows you to @@ -48,7 +48,7 @@ Not everything is a graph use case. ArangoDB lets you equally work with structured, semi-structured, and unstructured data in the form of schema-free JSON objects, without having to connect these objects to form a graph. -![Person Mary, Book ArangoDB](../../images/data-model-document.png) +![Person Mary, Book ArangoDB](../../../images/data-model-document.png) Depending on your needs, you may mix graphs and unconnected data. ArangoDB is designed from the ground up to support multiple data models with a diff --git a/site/content/3.13/about-arangodb/features/_index.md b/site/content/arangodb/3.12/about/features/_index.md similarity index 94% rename from site/content/3.13/about-arangodb/features/_index.md rename to site/content/arangodb/3.12/about/features/_index.md index b1b00f00c5..674e603252 100644 --- a/site/content/3.13/about-arangodb/features/_index.md +++ b/site/content/arangodb/3.12/about/features/_index.md @@ -19,18 +19,18 @@ aliases: - Enhanced data security with on-disk and backup encryption, key rotation, audit logging, and incremental backups without downtime -See the full [Feature list of the ArangoDB core database system](core.md). +See the full [Feature list of the ArangoDB database system](list.md). For a scalable architecture based on Kubernetes that supports the full offering of ArangoDB including graph-powered machine learning and GenAI features, see -the [Feature list of the ArangoDB Platform](platform.md). +the [Feature list of the ArangoDB Platform](../../../../data-platform/about/features.md). ## On-premises versus Cloud ### Fully managed cloud service The fully managed multi-cloud -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) is the easiest and fastest way to get started. It lets you deploy clusters with just a few clicks, and is operated by a dedicated team of ArangoDB engineers day and night. You can choose from a @@ -43,7 +43,7 @@ variety of support plans to meet your needs. - Highly secure with encryption at transit and at rest - Includes elastic scalability for all deployment models (OneShard and Sharded clusters) -To learn more, go to the [ArangoGraph documentation](../../arangograph/_index.md). +To learn more, go to the [ArangoGraph documentation](../../../../amp/_index.md). ### Self-managed in the cloud diff --git a/site/content/3.12/about-arangodb/features/highlights-by-version.md b/site/content/arangodb/3.12/about/features/highlights-by-version.md similarity index 100% rename from site/content/3.12/about-arangodb/features/highlights-by-version.md rename to site/content/arangodb/3.12/about/features/highlights-by-version.md diff --git a/site/content/3.12/about-arangodb/features/core.md b/site/content/arangodb/3.12/about/features/list.md similarity index 100% rename from site/content/3.12/about-arangodb/features/core.md rename to site/content/arangodb/3.12/about/features/list.md diff --git a/site/content/3.11/about-arangodb/use-cases.md b/site/content/arangodb/3.12/about/use-cases.md similarity index 77% rename from site/content/3.11/about-arangodb/use-cases.md rename to site/content/arangodb/3.12/about/use-cases.md index fab9e86a90..0128025595 100644 --- a/site/content/3.11/about-arangodb/use-cases.md +++ b/site/content/arangodb/3.12/about/use-cases.md @@ -19,7 +19,7 @@ more. ### Fraud Detection -{{< image src="../../images/icon-fraud-detection.png" alt="Fraud Detection icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-fraud-detection.png" alt="Fraud Detection icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Uncover illegal activities by discovering difficult-to-detect patterns. ArangoDB lets you look beyond individual data points in disparate data sources, @@ -29,7 +29,7 @@ complex fraudulent behavior such as fraud rings. ### Recommendation Engine -{{< image src="../../images/icon-recommendation-engine.png" alt="Recommendation Engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-recommendation-engine.png" alt="Recommendation Engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Suggest products, services, and information to users based on data relationships. For example, you can use ArangoDB together with PyTorch Geometric to build a @@ -39,7 +39,7 @@ with a graph neural network (GNN). ### Network Management -{{< image src="../../images/icon-network-management.png" alt="Network Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-network-management.png" alt="Network Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Reduce downtime by connecting and visualizing network, infrastructure, and code. Network devices and how they interconnect can naturally be modeled as a graph. @@ -49,7 +49,7 @@ bandwidth into account when path-finding. ### Customer 360 -{{< image src="../../images/icon-customer-360.png" alt="Customer 360 icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-customer-360.png" alt="Customer 360 icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Gain a complete understanding of your customers by integrating multiple data sources and code. ArangoDB can act as the platform to merge and consolidate @@ -58,7 +58,7 @@ track data origins using graph features. ### Identity and Access Management -{{< image src="../../images/icon-identity-management.png" alt="Identity Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-identity-management.png" alt="Identity Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Increase security and compliance by managing data access based on role and position. You can map out an organization chart as a graph and use ArangoDB to @@ -68,7 +68,7 @@ inheritance. ### Supply Chain -{{< image src="../../images/icon-supply-chain.png" alt="Supply Chain icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-supply-chain.png" alt="Supply Chain icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Speed shipments by monitoring and optimizing the flow of goods through a supply chain. You can represent your inventory, supplier, and delivery @@ -84,7 +84,7 @@ and scalable data store. ### Content Management -{{< image src="../../images/icon-content-management.png" alt="Content management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-content-management.png" alt="Content management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Store information of any kind without upfront schema declaration. ArangoDB is schema-free, storing every data record as a self-contained document, allowing @@ -93,7 +93,7 @@ content management system on top of ArangoDB. ### E-Commerce Systems -{{< image src="../../images/icon-e-commerce.png" alt="E-commerce icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-e-commerce.png" alt="E-commerce icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} ArangoDB combines data modeling freedom with strong consistency and resilience features to power online shops and ordering systems. Handle product catalog data @@ -102,7 +102,7 @@ checkouts with the necessary transactional guarantees. ### Internet of Things -{{< image src="../../images/icon-internet-of-things.png" alt="Internet of things icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-internet-of-things.png" alt="Internet of things icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Collect sensor readings and other IoT data in ArangoDB for a single view of everything. Store all data points in the same system that also lets you run @@ -110,7 +110,7 @@ aggregation queries using sliding windows for efficient data analysis. ## ArangoDB as a Key-Value Database -{{< image src="../../images/icon-key-value.png" alt="Key value icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-key-value.png" alt="Key value icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Key-value stores are the simplest kind of database systems. Each record is stored as a block of data under a key that uniquely identifies the record. @@ -134,7 +134,7 @@ For more information about how ArangoDB persists data, see ## ArangoDB as a Search Engine -{{< image src="../../images/icon-search-engine.png" alt="Search engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-search-engine.png" alt="Search engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} ArangoDB has a natively integrated search engine for a broad range of information retrieval needs. It is powered by inverted indexes and can index @@ -161,4 +161,4 @@ ArangoDB integrates well into existing data infrastructures and provides connectors for popular machine learning frameworks and data processing ecosystems. -![Machine Learning Architecture of ArangoDB](../../images/machine-learning-architecture.png) +![Machine Learning Architecture of ArangoDB](../../../images/machine-learning-architecture.png) diff --git a/site/content/3.12/aql/_index.md b/site/content/arangodb/3.12/aql/_index.md similarity index 96% rename from site/content/3.12/aql/_index.md rename to site/content/arangodb/3.12/aql/_index.md index befe676097..ef7dd67757 100644 --- a/site/content/3.12/aql/_index.md +++ b/site/content/arangodb/3.12/aql/_index.md @@ -6,7 +6,7 @@ description: >- The ArangoDB Query Language (AQL) lets you store, retrieve, and modify data in various ways in ArangoDB --- -- [Link to Platform](../../platform/data-science/_index.md) +- [Link to Platform](../../../data-platform/_index.md) AQL is mainly a declarative language, meaning that a query expresses what result should be achieved but not how it should be achieved. AQL aims to be diff --git a/site/content/3.12/aql/common-errors.md b/site/content/arangodb/3.12/aql/common-errors.md similarity index 100% rename from site/content/3.12/aql/common-errors.md rename to site/content/arangodb/3.12/aql/common-errors.md diff --git a/site/content/3.12/aql/data-queries.md b/site/content/arangodb/3.12/aql/data-queries.md similarity index 100% rename from site/content/3.12/aql/data-queries.md rename to site/content/arangodb/3.12/aql/data-queries.md diff --git a/site/content/3.12/aql/examples-and-query-patterns/_index.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/_index.md similarity index 100% rename from site/content/3.12/aql/examples-and-query-patterns/_index.md rename to site/content/arangodb/3.12/aql/examples-and-query-patterns/_index.md diff --git a/site/content/3.12/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md similarity index 100% rename from site/content/3.12/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md rename to site/content/arangodb/3.12/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md diff --git a/site/content/3.12/aql/examples-and-query-patterns/counting.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/counting.md similarity index 100% rename from site/content/3.12/aql/examples-and-query-patterns/counting.md rename to site/content/arangodb/3.12/aql/examples-and-query-patterns/counting.md diff --git a/site/content/3.12/aql/examples-and-query-patterns/create-test-data.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/create-test-data.md similarity index 100% rename from site/content/3.12/aql/examples-and-query-patterns/create-test-data.md rename to site/content/arangodb/3.12/aql/examples-and-query-patterns/create-test-data.md diff --git a/site/content/3.12/aql/examples-and-query-patterns/diffing-two-documents.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/diffing-two-documents.md similarity index 100% rename from site/content/3.12/aql/examples-and-query-patterns/diffing-two-documents.md rename to site/content/arangodb/3.12/aql/examples-and-query-patterns/diffing-two-documents.md diff --git a/site/content/3.12/aql/examples-and-query-patterns/dynamic-attribute-names.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/dynamic-attribute-names.md similarity index 100% rename from site/content/3.12/aql/examples-and-query-patterns/dynamic-attribute-names.md rename to site/content/arangodb/3.12/aql/examples-and-query-patterns/dynamic-attribute-names.md diff --git a/site/content/3.12/aql/examples-and-query-patterns/grouping.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/grouping.md similarity index 100% rename from site/content/3.12/aql/examples-and-query-patterns/grouping.md rename to site/content/arangodb/3.12/aql/examples-and-query-patterns/grouping.md diff --git a/site/content/3.12/aql/examples-and-query-patterns/joins.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/joins.md similarity index 100% rename from site/content/3.12/aql/examples-and-query-patterns/joins.md rename to site/content/arangodb/3.12/aql/examples-and-query-patterns/joins.md diff --git a/site/content/3.12/aql/examples-and-query-patterns/projections-and-filters.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/projections-and-filters.md similarity index 100% rename from site/content/3.12/aql/examples-and-query-patterns/projections-and-filters.md rename to site/content/arangodb/3.12/aql/examples-and-query-patterns/projections-and-filters.md diff --git a/site/content/3.12/aql/examples-and-query-patterns/queries-without-collections.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/queries-without-collections.md similarity index 100% rename from site/content/3.12/aql/examples-and-query-patterns/queries-without-collections.md rename to site/content/arangodb/3.12/aql/examples-and-query-patterns/queries-without-collections.md diff --git a/site/content/3.12/aql/examples-and-query-patterns/remove-nodes.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/remove-nodes.md similarity index 96% rename from site/content/3.12/aql/examples-and-query-patterns/remove-nodes.md rename to site/content/arangodb/3.12/aql/examples-and-query-patterns/remove-nodes.md index 8e9b0a9f61..a0843817e6 100644 --- a/site/content/3.12/aql/examples-and-query-patterns/remove-nodes.md +++ b/site/content/arangodb/3.12/aql/examples-and-query-patterns/remove-nodes.md @@ -17,7 +17,7 @@ However, as shown in this example based on the [Knows Graph](../../graphs/example-graphs.md#knows-graph), a query for this use case can be created. -![Example Graph](../../../images/knows_graph.png) +![Example Graph](../../../../images/knows_graph.png) When deleting node **eve** from the graph, we also want the edges `eve -> alice` and `eve -> bob` to be removed. @@ -61,7 +61,7 @@ For example, the [City Graph](../../graphs/example-graphs.md#city-graph) contains several node collections - `germanCity` and `frenchCity` and several edge collections - `french / german / international Highway`. -![Example Graph2](../../../images/cities_graph.png) +![Example Graph2](../../../../images/cities_graph.png) To delete city **Berlin** all edge collections `french / german / international Highway` have to be considered. The **REMOVE** operation has to be applied on all edge diff --git a/site/content/3.12/aql/examples-and-query-patterns/traversals.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/traversals.md similarity index 97% rename from site/content/3.12/aql/examples-and-query-patterns/traversals.md rename to site/content/arangodb/3.12/aql/examples-and-query-patterns/traversals.md index 725885961c..f495de1e4b 100644 --- a/site/content/3.12/aql/examples-and-query-patterns/traversals.md +++ b/site/content/arangodb/3.12/aql/examples-and-query-patterns/traversals.md @@ -10,7 +10,7 @@ description: >- Our first example will locate the start node for a graph traversal via [a geo index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). We use the [City Graph](../../graphs/example-graphs.md#city-graph) and its geo indexes: -![Cities Example Graph](../../../images/cities_graph.png) +![Cities Example Graph](../../../../images/cities_graph.png) ```js --- diff --git a/site/content/3.12/aql/examples-and-query-patterns/upsert-repsert-guide.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/upsert-repsert-guide.md similarity index 100% rename from site/content/3.12/aql/examples-and-query-patterns/upsert-repsert-guide.md rename to site/content/arangodb/3.12/aql/examples-and-query-patterns/upsert-repsert-guide.md diff --git a/site/content/3.12/aql/execution-and-performance/_index.md b/site/content/arangodb/3.12/aql/execution-and-performance/_index.md similarity index 100% rename from site/content/3.12/aql/execution-and-performance/_index.md rename to site/content/arangodb/3.12/aql/execution-and-performance/_index.md diff --git a/site/content/3.12/aql/execution-and-performance/caching-query-plans.md b/site/content/arangodb/3.12/aql/execution-and-performance/caching-query-plans.md similarity index 100% rename from site/content/3.12/aql/execution-and-performance/caching-query-plans.md rename to site/content/arangodb/3.12/aql/execution-and-performance/caching-query-plans.md diff --git a/site/content/3.12/aql/execution-and-performance/caching-query-results.md b/site/content/arangodb/3.12/aql/execution-and-performance/caching-query-results.md similarity index 100% rename from site/content/3.12/aql/execution-and-performance/caching-query-results.md rename to site/content/arangodb/3.12/aql/execution-and-performance/caching-query-results.md diff --git a/site/content/3.12/aql/execution-and-performance/explaining-queries.md b/site/content/arangodb/3.12/aql/execution-and-performance/explaining-queries.md similarity index 100% rename from site/content/3.12/aql/execution-and-performance/explaining-queries.md rename to site/content/arangodb/3.12/aql/execution-and-performance/explaining-queries.md diff --git a/site/content/3.12/aql/execution-and-performance/parsing-queries.md b/site/content/arangodb/3.12/aql/execution-and-performance/parsing-queries.md similarity index 100% rename from site/content/3.12/aql/execution-and-performance/parsing-queries.md rename to site/content/arangodb/3.12/aql/execution-and-performance/parsing-queries.md diff --git a/site/content/3.12/aql/execution-and-performance/query-logging.md b/site/content/arangodb/3.12/aql/execution-and-performance/query-logging.md similarity index 100% rename from site/content/3.12/aql/execution-and-performance/query-logging.md rename to site/content/arangodb/3.12/aql/execution-and-performance/query-logging.md diff --git a/site/content/3.12/aql/execution-and-performance/query-optimization.md b/site/content/arangodb/3.12/aql/execution-and-performance/query-optimization.md similarity index 100% rename from site/content/3.12/aql/execution-and-performance/query-optimization.md rename to site/content/arangodb/3.12/aql/execution-and-performance/query-optimization.md diff --git a/site/content/3.12/aql/execution-and-performance/query-profiling.md b/site/content/arangodb/3.12/aql/execution-and-performance/query-profiling.md similarity index 100% rename from site/content/3.12/aql/execution-and-performance/query-profiling.md rename to site/content/arangodb/3.12/aql/execution-and-performance/query-profiling.md diff --git a/site/content/3.12/aql/execution-and-performance/query-statistics.md b/site/content/arangodb/3.12/aql/execution-and-performance/query-statistics.md similarity index 100% rename from site/content/3.12/aql/execution-and-performance/query-statistics.md rename to site/content/arangodb/3.12/aql/execution-and-performance/query-statistics.md diff --git a/site/content/3.12/aql/functions/_index.md b/site/content/arangodb/3.12/aql/functions/_index.md similarity index 100% rename from site/content/3.12/aql/functions/_index.md rename to site/content/arangodb/3.12/aql/functions/_index.md diff --git a/site/content/3.12/aql/functions/arangosearch.md b/site/content/arangodb/3.12/aql/functions/arangosearch.md similarity index 100% rename from site/content/3.12/aql/functions/arangosearch.md rename to site/content/arangodb/3.12/aql/functions/arangosearch.md diff --git a/site/content/3.12/aql/functions/array.md b/site/content/arangodb/3.12/aql/functions/array.md similarity index 100% rename from site/content/3.12/aql/functions/array.md rename to site/content/arangodb/3.12/aql/functions/array.md diff --git a/site/content/3.12/aql/functions/bit.md b/site/content/arangodb/3.12/aql/functions/bit.md similarity index 100% rename from site/content/3.12/aql/functions/bit.md rename to site/content/arangodb/3.12/aql/functions/bit.md diff --git a/site/content/3.12/aql/functions/date.md b/site/content/arangodb/3.12/aql/functions/date.md similarity index 100% rename from site/content/3.12/aql/functions/date.md rename to site/content/arangodb/3.12/aql/functions/date.md diff --git a/site/content/3.12/aql/functions/document-object.md b/site/content/arangodb/3.12/aql/functions/document-object.md similarity index 100% rename from site/content/3.12/aql/functions/document-object.md rename to site/content/arangodb/3.12/aql/functions/document-object.md diff --git a/site/content/3.12/aql/functions/fulltext.md b/site/content/arangodb/3.12/aql/functions/fulltext.md similarity index 100% rename from site/content/3.12/aql/functions/fulltext.md rename to site/content/arangodb/3.12/aql/functions/fulltext.md diff --git a/site/content/3.13/aql/functions/geo.md b/site/content/arangodb/3.12/aql/functions/geo.md similarity index 99% rename from site/content/3.13/aql/functions/geo.md rename to site/content/arangodb/3.12/aql/functions/geo.md index bc4558ee74..cf5b3f8a2d 100644 --- a/site/content/3.13/aql/functions/geo.md +++ b/site/content/arangodb/3.12/aql/functions/geo.md @@ -322,7 +322,7 @@ Consider the following polygon (remember that GeoJSON has ]] } ``` -![GeoJSON Polygon Geodesic](../../../images/geojson-polygon-geodesic.webp) +![GeoJSON Polygon Geodesic](../../../../images/geojson-polygon-geodesic.webp) It does not contain the point `[10, 47]` since the shortest path (geodesic) from `[4, 47]` to `[16, 47]` lies North relative to the parallel of latitude at @@ -359,7 +359,7 @@ Pole. ]] } ``` -![GeoJSON Polygon Counter-clockwise](../../../images/geojson-polygon-ccw.webp) +![GeoJSON Polygon Counter-clockwise](../../../../images/geojson-polygon-ccw.webp) On the other hand, the following polygon travels **clockwise** around the point `[10, 50]`, and thus its "interior" does not contain `[10, 50]`, but does @@ -371,7 +371,7 @@ contain the North Pole and the South Pole: ]] } ``` -![GeoJSON Polygon Clockwise](../../../images/geojson-polygon-cw.webp) +![GeoJSON Polygon Clockwise](../../../../images/geojson-polygon-cw.webp) Remember that the "interior" is to the left of the given linear ring, so this second polygon is basically the complement on Earth diff --git a/site/content/3.12/aql/functions/miscellaneous.md b/site/content/arangodb/3.12/aql/functions/miscellaneous.md similarity index 100% rename from site/content/3.12/aql/functions/miscellaneous.md rename to site/content/arangodb/3.12/aql/functions/miscellaneous.md diff --git a/site/content/3.12/aql/functions/numeric.md b/site/content/arangodb/3.12/aql/functions/numeric.md similarity index 100% rename from site/content/3.12/aql/functions/numeric.md rename to site/content/arangodb/3.12/aql/functions/numeric.md diff --git a/site/content/3.12/aql/functions/string.md b/site/content/arangodb/3.12/aql/functions/string.md similarity index 100% rename from site/content/3.12/aql/functions/string.md rename to site/content/arangodb/3.12/aql/functions/string.md diff --git a/site/content/3.12/aql/functions/type-check-and-cast.md b/site/content/arangodb/3.12/aql/functions/type-check-and-cast.md similarity index 100% rename from site/content/3.12/aql/functions/type-check-and-cast.md rename to site/content/arangodb/3.12/aql/functions/type-check-and-cast.md diff --git a/site/content/3.13/aql/functions/vector.md b/site/content/arangodb/3.12/aql/functions/vector.md similarity index 99% rename from site/content/3.13/aql/functions/vector.md rename to site/content/arangodb/3.12/aql/functions/vector.md index 45341b8ea8..a20c562137 100644 --- a/site/content/3.13/aql/functions/vector.md +++ b/site/content/arangodb/3.12/aql/functions/vector.md @@ -12,7 +12,7 @@ To use vector search, you need to have vector embeddings stored in documents and the attribute that stores them needs to be indexed by a [vector index](../../index-and-search/indexing/working-with-indexes/vector-indexes.md). -You can calculate vector embeddings using [ArangoDB's GraphML](../../data-science/graphml/_index.md) +You can calculate vector embeddings using [ArangoDB's GraphML](../../../../gen-ai/graphml/_index.md) capabilities (available in ArangoGraph) or using external tools. {{< warning >}} diff --git a/site/content/3.12/aql/fundamentals/_index.md b/site/content/arangodb/3.12/aql/fundamentals/_index.md similarity index 100% rename from site/content/3.12/aql/fundamentals/_index.md rename to site/content/arangodb/3.12/aql/fundamentals/_index.md diff --git a/site/content/3.12/aql/fundamentals/accessing-data-from-collections.md b/site/content/arangodb/3.12/aql/fundamentals/accessing-data-from-collections.md similarity index 100% rename from site/content/3.12/aql/fundamentals/accessing-data-from-collections.md rename to site/content/arangodb/3.12/aql/fundamentals/accessing-data-from-collections.md diff --git a/site/content/3.12/aql/fundamentals/bind-parameters.md b/site/content/arangodb/3.12/aql/fundamentals/bind-parameters.md similarity index 100% rename from site/content/3.12/aql/fundamentals/bind-parameters.md rename to site/content/arangodb/3.12/aql/fundamentals/bind-parameters.md diff --git a/site/content/3.12/aql/fundamentals/data-types.md b/site/content/arangodb/3.12/aql/fundamentals/data-types.md similarity index 100% rename from site/content/3.12/aql/fundamentals/data-types.md rename to site/content/arangodb/3.12/aql/fundamentals/data-types.md diff --git a/site/content/3.12/aql/fundamentals/limitations.md b/site/content/arangodb/3.12/aql/fundamentals/limitations.md similarity index 100% rename from site/content/3.12/aql/fundamentals/limitations.md rename to site/content/arangodb/3.12/aql/fundamentals/limitations.md diff --git a/site/content/3.12/aql/fundamentals/query-errors.md b/site/content/arangodb/3.12/aql/fundamentals/query-errors.md similarity index 100% rename from site/content/3.12/aql/fundamentals/query-errors.md rename to site/content/arangodb/3.12/aql/fundamentals/query-errors.md diff --git a/site/content/3.12/aql/fundamentals/query-results.md b/site/content/arangodb/3.12/aql/fundamentals/query-results.md similarity index 100% rename from site/content/3.12/aql/fundamentals/query-results.md rename to site/content/arangodb/3.12/aql/fundamentals/query-results.md diff --git a/site/content/3.12/aql/fundamentals/subqueries.md b/site/content/arangodb/3.12/aql/fundamentals/subqueries.md similarity index 100% rename from site/content/3.12/aql/fundamentals/subqueries.md rename to site/content/arangodb/3.12/aql/fundamentals/subqueries.md diff --git a/site/content/3.12/aql/fundamentals/syntax.md b/site/content/arangodb/3.12/aql/fundamentals/syntax.md similarity index 100% rename from site/content/3.12/aql/fundamentals/syntax.md rename to site/content/arangodb/3.12/aql/fundamentals/syntax.md diff --git a/site/content/3.12/aql/fundamentals/type-and-value-order.md b/site/content/arangodb/3.12/aql/fundamentals/type-and-value-order.md similarity index 100% rename from site/content/3.12/aql/fundamentals/type-and-value-order.md rename to site/content/arangodb/3.12/aql/fundamentals/type-and-value-order.md diff --git a/site/content/3.12/aql/graphs/_index.md b/site/content/arangodb/3.12/aql/graphs/_index.md similarity index 100% rename from site/content/3.12/aql/graphs/_index.md rename to site/content/arangodb/3.12/aql/graphs/_index.md diff --git a/site/content/3.12/aql/graphs/all-shortest-paths.md b/site/content/arangodb/3.12/aql/graphs/all-shortest-paths.md similarity index 98% rename from site/content/3.12/aql/graphs/all-shortest-paths.md rename to site/content/arangodb/3.12/aql/graphs/all-shortest-paths.md index 69c770af05..bef591606d 100644 --- a/site/content/3.12/aql/graphs/all-shortest-paths.md +++ b/site/content/arangodb/3.12/aql/graphs/all-shortest-paths.md @@ -19,7 +19,7 @@ Every returned path is a JSON object with two attributes: A visual representation of the example graph: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) Each ellipse stands for a train station with the name of the city written inside of it. They are the nodes of the graph. Arrows represent train connections @@ -122,7 +122,7 @@ direction for each collection in your path search. Load an example graph to get a named graph that reflects some possible train connections in Europe and North America: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) ```js --- diff --git a/site/content/3.12/aql/graphs/k-paths.md b/site/content/arangodb/3.12/aql/graphs/k-paths.md similarity index 98% rename from site/content/3.12/aql/graphs/k-paths.md rename to site/content/arangodb/3.12/aql/graphs/k-paths.md index 89b63f6f41..0c490ce041 100644 --- a/site/content/3.12/aql/graphs/k-paths.md +++ b/site/content/arangodb/3.12/aql/graphs/k-paths.md @@ -20,7 +20,7 @@ Every such path is returned as a JSON object with two components: Here is an example graph to explain how the k Paths algorithm works: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) Each ellipse stands for a train station with the name of the city written inside of it. They are the nodes of the graph. Arrows represent train connections @@ -193,7 +193,7 @@ direction for each collection in your path search. You can load the `kShortestPathsGraph` example graph to get a named graph that reflects some possible train connections in Europe and North America. -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) ```js --- diff --git a/site/content/3.13/aql/graphs/k-shortest-paths.md b/site/content/arangodb/3.12/aql/graphs/k-shortest-paths.md similarity index 98% rename from site/content/3.13/aql/graphs/k-shortest-paths.md rename to site/content/arangodb/3.12/aql/graphs/k-shortest-paths.md index cad5ee1771..9c638740d7 100644 --- a/site/content/3.13/aql/graphs/k-shortest-paths.md +++ b/site/content/arangodb/3.12/aql/graphs/k-shortest-paths.md @@ -25,7 +25,7 @@ If no `weightAttribute` is specified, the weight of the path is just its length. Here is an example graph to explain how the k Shortest Paths algorithm works: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) Each ellipse stands for a train station with the name of the city written inside of it. They are the nodes of the graph. Arrows represent train connections @@ -191,7 +191,7 @@ direction for each collection in your path search. You can load the `kShortestPathsGraph` example graph to get a named graph that reflects some possible train connections in Europe and North America. -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) ```js --- diff --git a/site/content/3.13/aql/graphs/shortest-path.md b/site/content/arangodb/3.12/aql/graphs/shortest-path.md similarity index 98% rename from site/content/3.13/aql/graphs/shortest-path.md rename to site/content/arangodb/3.12/aql/graphs/shortest-path.md index 7f0b6421fa..e3cab31823 100644 --- a/site/content/3.13/aql/graphs/shortest-path.md +++ b/site/content/arangodb/3.12/aql/graphs/shortest-path.md @@ -23,7 +23,7 @@ the path: Let's take a look at a simple example to explain how it works. This is the graph that you are going to find a shortest path on: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) You can use the following parameters for the query: @@ -160,7 +160,7 @@ collections you expect to be involved. Creating a simple symmetric traversal demonstration graph: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) ```js --- diff --git a/site/content/3.13/aql/graphs/traversals-explained.md b/site/content/arangodb/3.12/aql/graphs/traversals-explained.md similarity index 83% rename from site/content/3.13/aql/graphs/traversals-explained.md rename to site/content/arangodb/3.12/aql/graphs/traversals-explained.md index e090af2a1e..6d4300e161 100644 --- a/site/content/3.13/aql/graphs/traversals-explained.md +++ b/site/content/arangodb/3.12/aql/graphs/traversals-explained.md @@ -31,7 +31,7 @@ set with three items: Let's take a look at a simple example to explain how it works. This is the graph that we are going to traverse: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) We use the following parameters for our query: @@ -40,39 +40,39 @@ We use the following parameters for our query: 3. We use a *max* depth of 2. 4. We follow only in `OUTBOUND` direction of edges -![traversal graph step 1](../../../images/traversal_graph1.png) +![traversal graph step 1](../../../../images/traversal_graph1.png) Now it walks to one of the direct neighbors of **A**, say **B** (note: ordering is not guaranteed!): -![traversal graph step 2](../../../images/traversal_graph2.png) +![traversal graph step 2](../../../../images/traversal_graph2.png) The query will remember the state (red circle) and will emit the first result **A** → **B** (black box). This will also prevent the traverser to be trapped in cycles. Now again it will visit one of the direct neighbors of **B**, say **E**: -![traversal graph step 3](../../../images/traversal_graph3.png) +![traversal graph step 3](../../../../images/traversal_graph3.png) We have limited the query with a *max* depth of *2*, so it will not pick any neighbor of **E**, as the path from **A** to **E** already requires *2* steps. Instead, we will go back one level to **B** and continue with any other direct neighbor there: -![traversal graph step 4](../../../images/traversal_graph4.png) +![traversal graph step 4](../../../../images/traversal_graph4.png) Again after we produced this result we will step back to **B**. But there is no neighbor of **B** left that we have not yet visited. Hence we go another step back to **A** and continue with any other neighbor there. -![traversal graph step 5](../../../images/traversal_graph5.png) +![traversal graph step 5](../../../../images/traversal_graph5.png) And identical to the iterations before we will visit **H**: -![traversal graph step 6](../../../images/traversal_graph6.png) +![traversal graph step 6](../../../../images/traversal_graph6.png) And **J**: -![traversal graph step 7](../../../images/traversal_graph7.png) +![traversal graph step 7](../../../../images/traversal_graph7.png) After these steps there is no further result left. So all together this query has returned the following paths: diff --git a/site/content/3.12/aql/graphs/traversals.md b/site/content/arangodb/3.12/aql/graphs/traversals.md similarity index 99% rename from site/content/3.12/aql/graphs/traversals.md rename to site/content/arangodb/3.12/aql/graphs/traversals.md index d6ae7e2eeb..ef4870dfef 100644 --- a/site/content/3.12/aql/graphs/traversals.md +++ b/site/content/arangodb/3.12/aql/graphs/traversals.md @@ -378,7 +378,7 @@ FOR v, e, p IN 0..10 OUTBOUND "places/Toronto" GRAPH "kShortestPathsGraph" The above example shows a graph traversal using a [train station and connections dataset](../../graphs/example-graphs.md#k-shortest-paths-graph): -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) The traversal starts at **Toronto** (bottom left), the traversal depth is limited to 10, and every station is only visited once. The traversal could @@ -726,7 +726,7 @@ you may be interested in documents further down the path. Create a simple symmetric traversal demonstration graph: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) ```js --- diff --git a/site/content/3.12/aql/high-level-operations/_index.md b/site/content/arangodb/3.12/aql/high-level-operations/_index.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/_index.md rename to site/content/arangodb/3.12/aql/high-level-operations/_index.md diff --git a/site/content/3.12/aql/high-level-operations/collect.md b/site/content/arangodb/3.12/aql/high-level-operations/collect.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/collect.md rename to site/content/arangodb/3.12/aql/high-level-operations/collect.md diff --git a/site/content/3.12/aql/high-level-operations/filter.md b/site/content/arangodb/3.12/aql/high-level-operations/filter.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/filter.md rename to site/content/arangodb/3.12/aql/high-level-operations/filter.md diff --git a/site/content/3.12/aql/high-level-operations/for.md b/site/content/arangodb/3.12/aql/high-level-operations/for.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/for.md rename to site/content/arangodb/3.12/aql/high-level-operations/for.md diff --git a/site/content/3.12/aql/high-level-operations/insert.md b/site/content/arangodb/3.12/aql/high-level-operations/insert.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/insert.md rename to site/content/arangodb/3.12/aql/high-level-operations/insert.md diff --git a/site/content/3.12/aql/high-level-operations/let.md b/site/content/arangodb/3.12/aql/high-level-operations/let.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/let.md rename to site/content/arangodb/3.12/aql/high-level-operations/let.md diff --git a/site/content/3.12/aql/high-level-operations/limit.md b/site/content/arangodb/3.12/aql/high-level-operations/limit.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/limit.md rename to site/content/arangodb/3.12/aql/high-level-operations/limit.md diff --git a/site/content/3.12/aql/high-level-operations/remove.md b/site/content/arangodb/3.12/aql/high-level-operations/remove.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/remove.md rename to site/content/arangodb/3.12/aql/high-level-operations/remove.md diff --git a/site/content/3.12/aql/high-level-operations/replace.md b/site/content/arangodb/3.12/aql/high-level-operations/replace.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/replace.md rename to site/content/arangodb/3.12/aql/high-level-operations/replace.md diff --git a/site/content/3.12/aql/high-level-operations/return.md b/site/content/arangodb/3.12/aql/high-level-operations/return.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/return.md rename to site/content/arangodb/3.12/aql/high-level-operations/return.md diff --git a/site/content/3.12/aql/high-level-operations/search.md b/site/content/arangodb/3.12/aql/high-level-operations/search.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/search.md rename to site/content/arangodb/3.12/aql/high-level-operations/search.md diff --git a/site/content/3.12/aql/high-level-operations/sort.md b/site/content/arangodb/3.12/aql/high-level-operations/sort.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/sort.md rename to site/content/arangodb/3.12/aql/high-level-operations/sort.md diff --git a/site/content/3.12/aql/high-level-operations/update.md b/site/content/arangodb/3.12/aql/high-level-operations/update.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/update.md rename to site/content/arangodb/3.12/aql/high-level-operations/update.md diff --git a/site/content/3.12/aql/high-level-operations/upsert.md b/site/content/arangodb/3.12/aql/high-level-operations/upsert.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/upsert.md rename to site/content/arangodb/3.12/aql/high-level-operations/upsert.md diff --git a/site/content/3.12/aql/high-level-operations/window.md b/site/content/arangodb/3.12/aql/high-level-operations/window.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/window.md rename to site/content/arangodb/3.12/aql/high-level-operations/window.md diff --git a/site/content/3.12/aql/high-level-operations/with.md b/site/content/arangodb/3.12/aql/high-level-operations/with.md similarity index 100% rename from site/content/3.12/aql/high-level-operations/with.md rename to site/content/arangodb/3.12/aql/high-level-operations/with.md diff --git a/site/content/3.12/aql/how-to-invoke-aql/_index.md b/site/content/arangodb/3.12/aql/how-to-invoke-aql/_index.md similarity index 100% rename from site/content/3.12/aql/how-to-invoke-aql/_index.md rename to site/content/arangodb/3.12/aql/how-to-invoke-aql/_index.md diff --git a/site/content/3.12/aql/how-to-invoke-aql/with-arangosh.md b/site/content/arangodb/3.12/aql/how-to-invoke-aql/with-arangosh.md similarity index 100% rename from site/content/3.12/aql/how-to-invoke-aql/with-arangosh.md rename to site/content/arangodb/3.12/aql/how-to-invoke-aql/with-arangosh.md diff --git a/site/content/3.12/aql/how-to-invoke-aql/with-the-web-interface.md b/site/content/arangodb/3.12/aql/how-to-invoke-aql/with-the-web-interface.md similarity index 100% rename from site/content/3.12/aql/how-to-invoke-aql/with-the-web-interface.md rename to site/content/arangodb/3.12/aql/how-to-invoke-aql/with-the-web-interface.md diff --git a/site/content/3.12/aql/operators.md b/site/content/arangodb/3.12/aql/operators.md similarity index 100% rename from site/content/3.12/aql/operators.md rename to site/content/arangodb/3.12/aql/operators.md diff --git a/site/content/3.12/aql/user-defined-functions.md b/site/content/arangodb/3.12/aql/user-defined-functions.md similarity index 100% rename from site/content/3.12/aql/user-defined-functions.md rename to site/content/arangodb/3.12/aql/user-defined-functions.md diff --git a/site/content/3.12/components/_index.md b/site/content/arangodb/3.12/components/_index.md similarity index 100% rename from site/content/3.12/components/_index.md rename to site/content/arangodb/3.12/components/_index.md diff --git a/site/content/3.12/components/arangodb-server/_index.md b/site/content/arangodb/3.12/components/arangodb-server/_index.md similarity index 100% rename from site/content/3.12/components/arangodb-server/_index.md rename to site/content/arangodb/3.12/components/arangodb-server/_index.md diff --git a/site/content/3.12/components/arangodb-server/environment-variables.md b/site/content/arangodb/3.12/components/arangodb-server/environment-variables.md similarity index 100% rename from site/content/3.12/components/arangodb-server/environment-variables.md rename to site/content/arangodb/3.12/components/arangodb-server/environment-variables.md diff --git a/site/content/3.12/components/arangodb-server/options.md b/site/content/arangodb/3.12/components/arangodb-server/options.md similarity index 100% rename from site/content/3.12/components/arangodb-server/options.md rename to site/content/arangodb/3.12/components/arangodb-server/options.md diff --git a/site/content/3.12/components/arangodb-server/storage-engine.md b/site/content/arangodb/3.12/components/arangodb-server/storage-engine.md similarity index 100% rename from site/content/3.12/components/arangodb-server/storage-engine.md rename to site/content/arangodb/3.12/components/arangodb-server/storage-engine.md diff --git a/site/content/3.11/components/tools/_index.md b/site/content/arangodb/3.12/components/tools/_index.md similarity index 94% rename from site/content/3.11/components/tools/_index.md rename to site/content/arangodb/3.12/components/tools/_index.md index 72bf4118a4..9909dbe302 100644 --- a/site/content/3.11/components/tools/_index.md +++ b/site/content/arangodb/3.12/components/tools/_index.md @@ -31,5 +31,5 @@ Additional tools which are available separately: |-----------------|-------------------| | [Foxx CLI](foxx-cli/_index.md) | Command line tool for managing and developing Foxx services | [kube-arangodb](../../deploy/kubernetes.md) | Operators to manage Kubernetes deployments -| [Oasisctl](../../arangograph/oasisctl/_index.md) | Command-line tool for managing the ArangoGraph Insights Platform +| [Oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) | [ArangoDB Datasets](arango-datasets.md) | A Python package for loading sample datasets into ArangoDB diff --git a/site/content/3.12/components/tools/arango-datasets.md b/site/content/arangodb/3.12/components/tools/arango-datasets.md similarity index 100% rename from site/content/3.12/components/tools/arango-datasets.md rename to site/content/arangodb/3.12/components/tools/arango-datasets.md diff --git a/site/content/3.13/components/tools/arangobackup/_index.md b/site/content/arangodb/3.12/components/tools/arangobackup/_index.md similarity index 92% rename from site/content/3.13/components/tools/arangobackup/_index.md rename to site/content/arangodb/3.12/components/tools/arangobackup/_index.md index 342c24c29a..fc71fd4547 100644 --- a/site/content/3.13/components/tools/arangobackup/_index.md +++ b/site/content/arangodb/3.12/components/tools/arangobackup/_index.md @@ -7,8 +7,8 @@ description: >- ArangoDB deployments --- {{< tip >}} -In the ArangoGraph Insights Platform, use managed -[Backups](../../../arangograph/backups.md) instead. +In the Arango Managed Platform (AMP), use managed +[Backups](../../../../../amp/backups.md) instead. {{< /tip >}} _arangobackup_ creates instantaneous and consistent diff --git a/site/content/3.12/components/tools/arangobackup/examples.md b/site/content/arangodb/3.12/components/tools/arangobackup/examples.md similarity index 100% rename from site/content/3.12/components/tools/arangobackup/examples.md rename to site/content/arangodb/3.12/components/tools/arangobackup/examples.md diff --git a/site/content/3.12/components/tools/arangobackup/options.md b/site/content/arangodb/3.12/components/tools/arangobackup/options.md similarity index 100% rename from site/content/3.12/components/tools/arangobackup/options.md rename to site/content/arangodb/3.12/components/tools/arangobackup/options.md diff --git a/site/content/3.12/components/tools/arangobench/_index.md b/site/content/arangodb/3.12/components/tools/arangobench/_index.md similarity index 100% rename from site/content/3.12/components/tools/arangobench/_index.md rename to site/content/arangodb/3.12/components/tools/arangobench/_index.md diff --git a/site/content/3.12/components/tools/arangobench/options.md b/site/content/arangodb/3.12/components/tools/arangobench/options.md similarity index 100% rename from site/content/3.12/components/tools/arangobench/options.md rename to site/content/arangodb/3.12/components/tools/arangobench/options.md diff --git a/site/content/3.12/components/tools/arangodb-shell/_index.md b/site/content/arangodb/3.12/components/tools/arangodb-shell/_index.md similarity index 100% rename from site/content/3.12/components/tools/arangodb-shell/_index.md rename to site/content/arangodb/3.12/components/tools/arangodb-shell/_index.md diff --git a/site/content/3.12/components/tools/arangodb-shell/details.md b/site/content/arangodb/3.12/components/tools/arangodb-shell/details.md similarity index 100% rename from site/content/3.12/components/tools/arangodb-shell/details.md rename to site/content/arangodb/3.12/components/tools/arangodb-shell/details.md diff --git a/site/content/3.12/components/tools/arangodb-shell/examples.md b/site/content/arangodb/3.12/components/tools/arangodb-shell/examples.md similarity index 100% rename from site/content/3.12/components/tools/arangodb-shell/examples.md rename to site/content/arangodb/3.12/components/tools/arangodb-shell/examples.md diff --git a/site/content/3.12/components/tools/arangodb-shell/options.md b/site/content/arangodb/3.12/components/tools/arangodb-shell/options.md similarity index 100% rename from site/content/3.12/components/tools/arangodb-shell/options.md rename to site/content/arangodb/3.12/components/tools/arangodb-shell/options.md diff --git a/site/content/3.12/components/tools/arangodb-starter/_index.md b/site/content/arangodb/3.12/components/tools/arangodb-starter/_index.md similarity index 100% rename from site/content/3.12/components/tools/arangodb-starter/_index.md rename to site/content/arangodb/3.12/components/tools/arangodb-starter/_index.md diff --git a/site/content/3.12/components/tools/arangodb-starter/architecture.md b/site/content/arangodb/3.12/components/tools/arangodb-starter/architecture.md similarity index 100% rename from site/content/3.12/components/tools/arangodb-starter/architecture.md rename to site/content/arangodb/3.12/components/tools/arangodb-starter/architecture.md diff --git a/site/content/3.12/components/tools/arangodb-starter/options.md b/site/content/arangodb/3.12/components/tools/arangodb-starter/options.md similarity index 100% rename from site/content/3.12/components/tools/arangodb-starter/options.md rename to site/content/arangodb/3.12/components/tools/arangodb-starter/options.md diff --git a/site/content/3.12/components/tools/arangodb-starter/security.md b/site/content/arangodb/3.12/components/tools/arangodb-starter/security.md similarity index 100% rename from site/content/3.12/components/tools/arangodb-starter/security.md rename to site/content/arangodb/3.12/components/tools/arangodb-starter/security.md diff --git a/site/content/3.12/components/tools/arangodump/_index.md b/site/content/arangodb/3.12/components/tools/arangodump/_index.md similarity index 100% rename from site/content/3.12/components/tools/arangodump/_index.md rename to site/content/arangodb/3.12/components/tools/arangodump/_index.md diff --git a/site/content/3.12/components/tools/arangodump/examples.md b/site/content/arangodb/3.12/components/tools/arangodump/examples.md similarity index 100% rename from site/content/3.12/components/tools/arangodump/examples.md rename to site/content/arangodb/3.12/components/tools/arangodump/examples.md diff --git a/site/content/3.12/components/tools/arangodump/limitations.md b/site/content/arangodb/3.12/components/tools/arangodump/limitations.md similarity index 100% rename from site/content/3.12/components/tools/arangodump/limitations.md rename to site/content/arangodb/3.12/components/tools/arangodump/limitations.md diff --git a/site/content/3.12/components/tools/arangodump/maskings.md b/site/content/arangodb/3.12/components/tools/arangodump/maskings.md similarity index 100% rename from site/content/3.12/components/tools/arangodump/maskings.md rename to site/content/arangodb/3.12/components/tools/arangodump/maskings.md diff --git a/site/content/3.12/components/tools/arangodump/options.md b/site/content/arangodb/3.12/components/tools/arangodump/options.md similarity index 100% rename from site/content/3.12/components/tools/arangodump/options.md rename to site/content/arangodb/3.12/components/tools/arangodump/options.md diff --git a/site/content/3.12/components/tools/arangoexport/_index.md b/site/content/arangodb/3.12/components/tools/arangoexport/_index.md similarity index 100% rename from site/content/3.12/components/tools/arangoexport/_index.md rename to site/content/arangodb/3.12/components/tools/arangoexport/_index.md diff --git a/site/content/3.12/components/tools/arangoexport/examples.md b/site/content/arangodb/3.12/components/tools/arangoexport/examples.md similarity index 100% rename from site/content/3.12/components/tools/arangoexport/examples.md rename to site/content/arangodb/3.12/components/tools/arangoexport/examples.md diff --git a/site/content/3.12/components/tools/arangoexport/options.md b/site/content/arangodb/3.12/components/tools/arangoexport/options.md similarity index 100% rename from site/content/3.12/components/tools/arangoexport/options.md rename to site/content/arangodb/3.12/components/tools/arangoexport/options.md diff --git a/site/content/3.12/components/tools/arangoimport/_index.md b/site/content/arangodb/3.12/components/tools/arangoimport/_index.md similarity index 100% rename from site/content/3.12/components/tools/arangoimport/_index.md rename to site/content/arangodb/3.12/components/tools/arangoimport/_index.md diff --git a/site/content/3.12/components/tools/arangoimport/details.md b/site/content/arangodb/3.12/components/tools/arangoimport/details.md similarity index 100% rename from site/content/3.12/components/tools/arangoimport/details.md rename to site/content/arangodb/3.12/components/tools/arangoimport/details.md diff --git a/site/content/3.12/components/tools/arangoimport/examples-csv.md b/site/content/arangodb/3.12/components/tools/arangoimport/examples-csv.md similarity index 100% rename from site/content/3.12/components/tools/arangoimport/examples-csv.md rename to site/content/arangodb/3.12/components/tools/arangoimport/examples-csv.md diff --git a/site/content/3.12/components/tools/arangoimport/examples-json.md b/site/content/arangodb/3.12/components/tools/arangoimport/examples-json.md similarity index 100% rename from site/content/3.12/components/tools/arangoimport/examples-json.md rename to site/content/arangodb/3.12/components/tools/arangoimport/examples-json.md diff --git a/site/content/3.12/components/tools/arangoimport/options.md b/site/content/arangodb/3.12/components/tools/arangoimport/options.md similarity index 100% rename from site/content/3.12/components/tools/arangoimport/options.md rename to site/content/arangodb/3.12/components/tools/arangoimport/options.md diff --git a/site/content/3.12/components/tools/arangoinspect/_index.md b/site/content/arangodb/3.12/components/tools/arangoinspect/_index.md similarity index 100% rename from site/content/3.12/components/tools/arangoinspect/_index.md rename to site/content/arangodb/3.12/components/tools/arangoinspect/_index.md diff --git a/site/content/3.12/components/tools/arangoinspect/examples.md b/site/content/arangodb/3.12/components/tools/arangoinspect/examples.md similarity index 100% rename from site/content/3.12/components/tools/arangoinspect/examples.md rename to site/content/arangodb/3.12/components/tools/arangoinspect/examples.md diff --git a/site/content/3.12/components/tools/arangoinspect/options.md b/site/content/arangodb/3.12/components/tools/arangoinspect/options.md similarity index 100% rename from site/content/3.12/components/tools/arangoinspect/options.md rename to site/content/arangodb/3.12/components/tools/arangoinspect/options.md diff --git a/site/content/3.12/components/tools/arangorestore/_index.md b/site/content/arangodb/3.12/components/tools/arangorestore/_index.md similarity index 100% rename from site/content/3.12/components/tools/arangorestore/_index.md rename to site/content/arangodb/3.12/components/tools/arangorestore/_index.md diff --git a/site/content/3.12/components/tools/arangorestore/examples.md b/site/content/arangodb/3.12/components/tools/arangorestore/examples.md similarity index 100% rename from site/content/3.12/components/tools/arangorestore/examples.md rename to site/content/arangodb/3.12/components/tools/arangorestore/examples.md diff --git a/site/content/3.12/components/tools/arangorestore/options.md b/site/content/arangodb/3.12/components/tools/arangorestore/options.md similarity index 100% rename from site/content/3.12/components/tools/arangorestore/options.md rename to site/content/arangodb/3.12/components/tools/arangorestore/options.md diff --git a/site/content/3.12/components/tools/arangovpack/_index.md b/site/content/arangodb/3.12/components/tools/arangovpack/_index.md similarity index 100% rename from site/content/3.12/components/tools/arangovpack/_index.md rename to site/content/arangodb/3.12/components/tools/arangovpack/_index.md diff --git a/site/content/3.12/components/tools/arangovpack/options.md b/site/content/arangodb/3.12/components/tools/arangovpack/options.md similarity index 100% rename from site/content/3.12/components/tools/arangovpack/options.md rename to site/content/arangodb/3.12/components/tools/arangovpack/options.md diff --git a/site/content/3.12/components/tools/foxx-cli/_index.md b/site/content/arangodb/3.12/components/tools/foxx-cli/_index.md similarity index 100% rename from site/content/3.12/components/tools/foxx-cli/_index.md rename to site/content/arangodb/3.12/components/tools/foxx-cli/_index.md diff --git a/site/content/3.12/components/tools/foxx-cli/details.md b/site/content/arangodb/3.12/components/tools/foxx-cli/details.md similarity index 100% rename from site/content/3.12/components/tools/foxx-cli/details.md rename to site/content/arangodb/3.12/components/tools/foxx-cli/details.md diff --git a/site/content/3.12/components/web-interface/_index.md b/site/content/arangodb/3.12/components/web-interface/_index.md similarity index 89% rename from site/content/3.12/components/web-interface/_index.md rename to site/content/arangodb/3.12/components/web-interface/_index.md index 42934ab4f6..5d3412cdac 100644 --- a/site/content/3.12/components/web-interface/_index.md +++ b/site/content/arangodb/3.12/components/web-interface/_index.md @@ -13,4 +13,4 @@ convenient way. Statistics and server status are provided as well. The web interface (also referred to as Web UI, frontend or *Aardvark*) can be accessed with a browser under the URL `http://localhost:8529` with default server settings. -![Single-server Web Interface](../../../images/ui-dashboard312.webp) +![Single-server Web Interface](../../../../images/ui-dashboard312.webp) diff --git a/site/content/3.12/components/web-interface/cluster.md b/site/content/arangodb/3.12/components/web-interface/cluster.md similarity index 97% rename from site/content/3.12/components/web-interface/cluster.md rename to site/content/arangodb/3.12/components/web-interface/cluster.md index 9662f6c93c..75807b2a42 100644 --- a/site/content/3.12/components/web-interface/cluster.md +++ b/site/content/arangodb/3.12/components/web-interface/cluster.md @@ -16,7 +16,7 @@ You can access the logs of individual Coordinators and DB-Servers via the The **Cluster** section displays statistics about the general cluster performance. -![Web Interface Cluster Dashboard](../../../images/ui-cluster-dashboard312.webp) +![Web Interface Cluster Dashboard](../../../../images/ui-cluster-dashboard312.webp) Statistics: diff --git a/site/content/3.12/components/web-interface/collections.md b/site/content/arangodb/3.12/components/web-interface/collections.md similarity index 100% rename from site/content/3.12/components/web-interface/collections.md rename to site/content/arangodb/3.12/components/web-interface/collections.md diff --git a/site/content/3.12/components/web-interface/dashboard.md b/site/content/arangodb/3.12/components/web-interface/dashboard.md similarity index 90% rename from site/content/3.12/components/web-interface/dashboard.md rename to site/content/arangodb/3.12/components/web-interface/dashboard.md index 9a6bcf5feb..b1018e2f80 100644 --- a/site/content/3.12/components/web-interface/dashboard.md +++ b/site/content/arangodb/3.12/components/web-interface/dashboard.md @@ -7,7 +7,7 @@ description: '' The **Dashboard** section provides statistics which are polled regularly from the ArangoDB server. -![Web Interface Dashboard](../../../images/ui-dashboard312.webp) +![Web Interface Dashboard](../../../../images/ui-dashboard312.webp) There is a different interface for [Cluster](cluster.md) deployments. diff --git a/site/content/3.12/components/web-interface/document.md b/site/content/arangodb/3.12/components/web-interface/document.md similarity index 100% rename from site/content/3.12/components/web-interface/document.md rename to site/content/arangodb/3.12/components/web-interface/document.md diff --git a/site/content/3.13/components/web-interface/graphs.md b/site/content/arangodb/3.12/components/web-interface/graphs.md similarity index 98% rename from site/content/3.13/components/web-interface/graphs.md rename to site/content/arangodb/3.12/components/web-interface/graphs.md index 9b298a16ec..d601939a70 100644 --- a/site/content/3.13/components/web-interface/graphs.md +++ b/site/content/arangodb/3.12/components/web-interface/graphs.md @@ -57,7 +57,7 @@ their direct neighbors are selected. You can select one or more start nodes and change the depth and the limit in the settings panel. You can also load the entire graph via the toolbar, but only use this with small graphs. -![The graph viewer with the settings panel open](../../../images/graphViewer312.png) +![The graph viewer with the settings panel open](../../../../images/graphViewer312.png) ### Viewport diff --git a/site/content/3.12/components/web-interface/logs.md b/site/content/arangodb/3.12/components/web-interface/logs.md similarity index 100% rename from site/content/3.12/components/web-interface/logs.md rename to site/content/arangodb/3.12/components/web-interface/logs.md diff --git a/site/content/3.12/components/web-interface/queries.md b/site/content/arangodb/3.12/components/web-interface/queries.md similarity index 98% rename from site/content/3.12/components/web-interface/queries.md rename to site/content/arangodb/3.12/components/web-interface/queries.md index 7c65ffc809..4da1b6f706 100644 --- a/site/content/3.12/components/web-interface/queries.md +++ b/site/content/arangodb/3.12/components/web-interface/queries.md @@ -14,7 +14,7 @@ The query view offers you three different subviews: The web interface offers a AQL Query Editor: -![Editor Input](../../../images/queryEditorInput312.png) +![Editor Input](../../../../images/queryEditorInput312.png) The editor is split into two parts, the query editor pane and the pane for bind variables and query options. diff --git a/site/content/3.12/components/web-interface/services.md b/site/content/arangodb/3.12/components/web-interface/services.md similarity index 100% rename from site/content/3.12/components/web-interface/services.md rename to site/content/arangodb/3.12/components/web-interface/services.md diff --git a/site/content/3.12/components/web-interface/users.md b/site/content/arangodb/3.12/components/web-interface/users.md similarity index 100% rename from site/content/3.12/components/web-interface/users.md rename to site/content/arangodb/3.12/components/web-interface/users.md diff --git a/site/content/3.12/concepts/_index.md b/site/content/arangodb/3.12/concepts/_index.md similarity index 100% rename from site/content/3.12/concepts/_index.md rename to site/content/arangodb/3.12/concepts/_index.md diff --git a/site/content/3.12/concepts/data-models.md b/site/content/arangodb/3.12/concepts/data-models.md similarity index 100% rename from site/content/3.12/concepts/data-models.md rename to site/content/arangodb/3.12/concepts/data-models.md diff --git a/site/content/3.12/concepts/data-retrieval.md b/site/content/arangodb/3.12/concepts/data-retrieval.md similarity index 100% rename from site/content/3.12/concepts/data-retrieval.md rename to site/content/arangodb/3.12/concepts/data-retrieval.md diff --git a/site/content/3.12/concepts/data-structure/_index.md b/site/content/arangodb/3.12/concepts/data-structure/_index.md similarity index 100% rename from site/content/3.12/concepts/data-structure/_index.md rename to site/content/arangodb/3.12/concepts/data-structure/_index.md diff --git a/site/content/3.12/concepts/data-structure/collections.md b/site/content/arangodb/3.12/concepts/data-structure/collections.md similarity index 100% rename from site/content/3.12/concepts/data-structure/collections.md rename to site/content/arangodb/3.12/concepts/data-structure/collections.md diff --git a/site/content/3.12/concepts/data-structure/databases.md b/site/content/arangodb/3.12/concepts/data-structure/databases.md similarity index 100% rename from site/content/3.12/concepts/data-structure/databases.md rename to site/content/arangodb/3.12/concepts/data-structure/databases.md diff --git a/site/content/3.12/concepts/data-structure/documents/_index.md b/site/content/arangodb/3.12/concepts/data-structure/documents/_index.md similarity index 100% rename from site/content/3.12/concepts/data-structure/documents/_index.md rename to site/content/arangodb/3.12/concepts/data-structure/documents/_index.md diff --git a/site/content/3.12/concepts/data-structure/documents/computed-values.md b/site/content/arangodb/3.12/concepts/data-structure/documents/computed-values.md similarity index 100% rename from site/content/3.12/concepts/data-structure/documents/computed-values.md rename to site/content/arangodb/3.12/concepts/data-structure/documents/computed-values.md diff --git a/site/content/3.12/concepts/data-structure/documents/schema-validation.md b/site/content/arangodb/3.12/concepts/data-structure/documents/schema-validation.md similarity index 100% rename from site/content/3.12/concepts/data-structure/documents/schema-validation.md rename to site/content/arangodb/3.12/concepts/data-structure/documents/schema-validation.md diff --git a/site/content/3.12/concepts/data-structure/views.md b/site/content/arangodb/3.12/concepts/data-structure/views.md similarity index 100% rename from site/content/3.12/concepts/data-structure/views.md rename to site/content/arangodb/3.12/concepts/data-structure/views.md diff --git a/site/content/3.12/deploy/_index.md b/site/content/arangodb/3.12/deploy/_index.md similarity index 94% rename from site/content/3.12/deploy/_index.md rename to site/content/arangodb/3.12/deploy/_index.md index e99d1d56e5..499c517066 100644 --- a/site/content/3.12/deploy/_index.md +++ b/site/content/arangodb/3.12/deploy/_index.md @@ -48,9 +48,9 @@ for multi-tenant use cases. The ArangoDB Platform is the umbrella for deploying and operating the entire ArangoDB product offering with a unified interface in a Kubernetes cluster. It is offered for self-hosting on-prem or in the cloud and as a managed service, -superseding the ArangoGraph Insights Platform. +superseding the Arango Managed Platform (AMP). -See [The ArangoDB Platform](../../platform/about-the-platform/_index.md) for details. +See [The ArangoDB Platform](../../../data-platform/about/_index.md) for details. ## How to deploy @@ -68,7 +68,7 @@ There are different ways to set up and operate ArangoDB. ArangoDB Kubernetes Operator (`kube-arangodb`). The fastest way to get ArangoDB up and running is to run it in the cloud - the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) offers a fully managed cloud service, available on AWS and GCP. ### Manual Deployment @@ -115,7 +115,7 @@ If you want a specific version, download the precompiled executable via the ### Run in the cloud - [AWS and Azure](in-the-cloud.md) -- [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), +- [Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), fully managed, available on AWS and GCP ### Run in Kubernetes diff --git a/site/content/3.12/deploy/architecture/_index.md b/site/content/arangodb/3.12/deploy/architecture/_index.md similarity index 100% rename from site/content/3.12/deploy/architecture/_index.md rename to site/content/arangodb/3.12/deploy/architecture/_index.md diff --git a/site/content/3.12/deploy/architecture/data-sharding.md b/site/content/arangodb/3.12/deploy/architecture/data-sharding.md similarity index 98% rename from site/content/3.12/deploy/architecture/data-sharding.md rename to site/content/arangodb/3.12/deploy/architecture/data-sharding.md index a677edbfd6..61e67cb5d9 100644 --- a/site/content/3.12/deploy/architecture/data-sharding.md +++ b/site/content/arangodb/3.12/deploy/architecture/data-sharding.md @@ -44,7 +44,7 @@ cost-effective than pre-provisioning a single large machine. Increased complexity in infrastructure can be managed using modern containerization and cluster orchestrations tools like [Kubernetes](../kubernetes.md). -![Cluster Sharding](../../../images/cluster_sharding.jpg) +![Cluster Sharding](../../../../images/cluster_sharding.jpg) To achieve this ArangoDB splits your dataset into so called _shards_. The number of shards is something you may choose according to your needs. Proper sharding @@ -84,7 +84,7 @@ a given document is to be stored. Choosing the right shard key can have significant impact on your performance can reduce network traffic and increase performance. -![Hash Sharding](../../../images/cluster_sharding_hash.jpg) +![Hash Sharding](../../../../images/cluster_sharding_hash.jpg) ArangoDB uses consistent hashing to compute the target shard from the given values (as specified via by the `shardKeys` collection property). The ideal set diff --git a/site/content/3.12/deploy/architecture/replication.md b/site/content/arangodb/3.12/deploy/architecture/replication.md similarity index 100% rename from site/content/3.12/deploy/architecture/replication.md rename to site/content/arangodb/3.12/deploy/architecture/replication.md diff --git a/site/content/3.12/deploy/architecture/scalability.md b/site/content/arangodb/3.12/deploy/architecture/scalability.md similarity index 100% rename from site/content/3.12/deploy/architecture/scalability.md rename to site/content/arangodb/3.12/deploy/architecture/scalability.md diff --git a/site/content/3.12/deploy/cluster/_index.md b/site/content/arangodb/3.12/deploy/cluster/_index.md similarity index 98% rename from site/content/3.12/deploy/cluster/_index.md rename to site/content/arangodb/3.12/deploy/cluster/_index.md index 7a285ae5cd..fe840ace5d 100644 --- a/site/content/3.12/deploy/cluster/_index.md +++ b/site/content/arangodb/3.12/deploy/cluster/_index.md @@ -39,7 +39,7 @@ roles: - _Coordinators_ - _DB-Servers_. -![ArangoDB Cluster](../../../images/cluster-topology.png) +![ArangoDB Cluster](../../../../images/cluster-topology.png) ### Agents @@ -137,7 +137,7 @@ automatically to the different servers. In many situations one can also reap a benefit in data throughput, again because the load can be distributed to multiple machines. -![Cluster Sharding](../../../images/cluster_sharding.jpg) +![Cluster Sharding](../../../../images/cluster_sharding.jpg) From the outside this process is fully transparent: An application may talk to any _Coordinator_ and @@ -380,7 +380,7 @@ See the [Cluster Deployment](deployment/_index.md) chapter for instructions. ArangoDB is also available as a cloud service, the -[**ArangoGraph Insights Platform**](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). +[**Arango Managed Platform (AMP)**](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). ## Cluster ID diff --git a/site/content/3.12/deploy/cluster/administration.md b/site/content/arangodb/3.12/deploy/cluster/administration.md similarity index 100% rename from site/content/3.12/deploy/cluster/administration.md rename to site/content/arangodb/3.12/deploy/cluster/administration.md diff --git a/site/content/3.12/deploy/cluster/deployment/_index.md b/site/content/arangodb/3.12/deploy/cluster/deployment/_index.md similarity index 97% rename from site/content/3.12/deploy/cluster/deployment/_index.md rename to site/content/arangodb/3.12/deploy/cluster/deployment/_index.md index 102d40bed3..5d6d6232f2 100644 --- a/site/content/3.12/deploy/cluster/deployment/_index.md +++ b/site/content/arangodb/3.12/deploy/cluster/deployment/_index.md @@ -9,7 +9,7 @@ You can deploy an ArangoDB cluster in different ways: - [Using the ArangoDB Starter](using-the-arangodb-starter.md) - [Manual Start](manual-start.md) - [Kubernetes](../../kubernetes.md) -- [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), +- [Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), fully managed, available on AWS and GCP ## Preliminary Information For Debian/Ubuntu Systems diff --git a/site/content/3.12/deploy/cluster/deployment/manual-start.md b/site/content/arangodb/3.12/deploy/cluster/deployment/manual-start.md similarity index 100% rename from site/content/3.12/deploy/cluster/deployment/manual-start.md rename to site/content/arangodb/3.12/deploy/cluster/deployment/manual-start.md diff --git a/site/content/3.12/deploy/cluster/deployment/using-the-arangodb-starter.md b/site/content/arangodb/3.12/deploy/cluster/deployment/using-the-arangodb-starter.md similarity index 100% rename from site/content/3.12/deploy/cluster/deployment/using-the-arangodb-starter.md rename to site/content/arangodb/3.12/deploy/cluster/deployment/using-the-arangodb-starter.md diff --git a/site/content/3.12/deploy/cluster/limitations.md b/site/content/arangodb/3.12/deploy/cluster/limitations.md similarity index 100% rename from site/content/3.12/deploy/cluster/limitations.md rename to site/content/arangodb/3.12/deploy/cluster/limitations.md diff --git a/site/content/3.12/deploy/in-the-cloud.md b/site/content/arangodb/3.12/deploy/in-the-cloud.md similarity index 100% rename from site/content/3.12/deploy/in-the-cloud.md rename to site/content/arangodb/3.12/deploy/in-the-cloud.md diff --git a/site/content/3.12/deploy/kubernetes.md b/site/content/arangodb/3.12/deploy/kubernetes.md similarity index 100% rename from site/content/3.12/deploy/kubernetes.md rename to site/content/arangodb/3.12/deploy/kubernetes.md diff --git a/site/content/3.12/deploy/oneshard.md b/site/content/arangodb/3.12/deploy/oneshard.md similarity index 99% rename from site/content/3.12/deploy/oneshard.md rename to site/content/arangodb/3.12/deploy/oneshard.md index cb7ed57fe7..eeaffdd7ad 100644 --- a/site/content/3.12/deploy/oneshard.md +++ b/site/content/arangodb/3.12/deploy/oneshard.md @@ -48,7 +48,7 @@ because they need to send and receive data on several connections, build up results for collection accesses from the received parts followed by further processing. -![OneShard vs. Sharded Cluster Setup](../../images/cluster-sharded-oneshard.png) +![OneShard vs. Sharded Cluster Setup](../../../images/cluster-sharded-oneshard.png) If the database involved in a query is a OneShard database, then the OneShard optimization can be applied to run the query on the diff --git a/site/content/3.12/deploy/production-checklist.md b/site/content/arangodb/3.12/deploy/production-checklist.md similarity index 100% rename from site/content/3.12/deploy/production-checklist.md rename to site/content/arangodb/3.12/deploy/production-checklist.md diff --git a/site/content/3.12/deploy/single-instance-vs-cluster.md b/site/content/arangodb/3.12/deploy/single-instance-vs-cluster.md similarity index 100% rename from site/content/3.12/deploy/single-instance-vs-cluster.md rename to site/content/arangodb/3.12/deploy/single-instance-vs-cluster.md diff --git a/site/content/3.12/deploy/single-instance/_index.md b/site/content/arangodb/3.12/deploy/single-instance/_index.md similarity index 100% rename from site/content/3.12/deploy/single-instance/_index.md rename to site/content/arangodb/3.12/deploy/single-instance/_index.md diff --git a/site/content/3.12/deploy/single-instance/manual-start.md b/site/content/arangodb/3.12/deploy/single-instance/manual-start.md similarity index 100% rename from site/content/3.12/deploy/single-instance/manual-start.md rename to site/content/arangodb/3.12/deploy/single-instance/manual-start.md diff --git a/site/content/3.12/deploy/single-instance/using-the-arangodb-starter.md b/site/content/arangodb/3.12/deploy/single-instance/using-the-arangodb-starter.md similarity index 100% rename from site/content/3.12/deploy/single-instance/using-the-arangodb-starter.md rename to site/content/arangodb/3.12/deploy/single-instance/using-the-arangodb-starter.md diff --git a/site/content/3.12/develop/_index.md b/site/content/arangodb/3.12/develop/_index.md similarity index 100% rename from site/content/3.12/develop/_index.md rename to site/content/arangodb/3.12/develop/_index.md diff --git a/site/content/3.12/develop/drivers/_index.md b/site/content/arangodb/3.12/develop/drivers/_index.md similarity index 100% rename from site/content/3.12/develop/drivers/_index.md rename to site/content/arangodb/3.12/develop/drivers/_index.md diff --git a/site/content/3.12/develop/drivers/go.md b/site/content/arangodb/3.12/develop/drivers/go.md similarity index 100% rename from site/content/3.12/develop/drivers/go.md rename to site/content/arangodb/3.12/develop/drivers/go.md diff --git a/site/content/3.12/develop/drivers/java/_index.md b/site/content/arangodb/3.12/develop/drivers/java/_index.md similarity index 100% rename from site/content/3.12/develop/drivers/java/_index.md rename to site/content/arangodb/3.12/develop/drivers/java/_index.md diff --git a/site/content/3.12/develop/drivers/java/reference-version-6/_index.md b/site/content/arangodb/3.12/develop/drivers/java/reference-version-6/_index.md similarity index 100% rename from site/content/3.12/develop/drivers/java/reference-version-6/_index.md rename to site/content/arangodb/3.12/develop/drivers/java/reference-version-6/_index.md diff --git a/site/content/3.12/develop/drivers/java/reference-version-6/driver-setup.md b/site/content/arangodb/3.12/develop/drivers/java/reference-version-6/driver-setup.md similarity index 100% rename from site/content/3.12/develop/drivers/java/reference-version-6/driver-setup.md rename to site/content/arangodb/3.12/develop/drivers/java/reference-version-6/driver-setup.md diff --git a/site/content/3.12/develop/drivers/java/reference-version-6/serialization.md b/site/content/arangodb/3.12/develop/drivers/java/reference-version-6/serialization.md similarity index 100% rename from site/content/3.12/develop/drivers/java/reference-version-6/serialization.md rename to site/content/arangodb/3.12/develop/drivers/java/reference-version-6/serialization.md diff --git a/site/content/3.12/develop/drivers/java/reference-version-7/_index.md b/site/content/arangodb/3.12/develop/drivers/java/reference-version-7/_index.md similarity index 100% rename from site/content/3.12/develop/drivers/java/reference-version-7/_index.md rename to site/content/arangodb/3.12/develop/drivers/java/reference-version-7/_index.md diff --git a/site/content/3.12/develop/drivers/java/reference-version-7/changes-in-version-7.md b/site/content/arangodb/3.12/develop/drivers/java/reference-version-7/changes-in-version-7.md similarity index 100% rename from site/content/3.12/develop/drivers/java/reference-version-7/changes-in-version-7.md rename to site/content/arangodb/3.12/develop/drivers/java/reference-version-7/changes-in-version-7.md diff --git a/site/content/3.12/develop/drivers/java/reference-version-7/driver-setup.md b/site/content/arangodb/3.12/develop/drivers/java/reference-version-7/driver-setup.md similarity index 100% rename from site/content/3.12/develop/drivers/java/reference-version-7/driver-setup.md rename to site/content/arangodb/3.12/develop/drivers/java/reference-version-7/driver-setup.md diff --git a/site/content/3.12/develop/drivers/java/reference-version-7/serialization.md b/site/content/arangodb/3.12/develop/drivers/java/reference-version-7/serialization.md similarity index 100% rename from site/content/3.12/develop/drivers/java/reference-version-7/serialization.md rename to site/content/arangodb/3.12/develop/drivers/java/reference-version-7/serialization.md diff --git a/site/content/3.12/develop/drivers/javascript.md b/site/content/arangodb/3.12/develop/drivers/javascript.md similarity index 100% rename from site/content/3.12/develop/drivers/javascript.md rename to site/content/arangodb/3.12/develop/drivers/javascript.md diff --git a/site/content/3.12/develop/drivers/python.md b/site/content/arangodb/3.12/develop/drivers/python.md similarity index 100% rename from site/content/3.12/develop/drivers/python.md rename to site/content/arangodb/3.12/develop/drivers/python.md diff --git a/site/content/3.12/develop/error-codes.md b/site/content/arangodb/3.12/develop/error-codes.md similarity index 100% rename from site/content/3.12/develop/error-codes.md rename to site/content/arangodb/3.12/develop/error-codes.md diff --git a/site/content/3.12/develop/exit-codes.md b/site/content/arangodb/3.12/develop/exit-codes.md similarity index 100% rename from site/content/3.12/develop/exit-codes.md rename to site/content/arangodb/3.12/develop/exit-codes.md diff --git a/site/content/3.12/develop/foxx-microservices/_index.md b/site/content/arangodb/3.12/develop/foxx-microservices/_index.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/_index.md rename to site/content/arangodb/3.12/develop/foxx-microservices/_index.md diff --git a/site/content/3.12/develop/foxx-microservices/deployment.md b/site/content/arangodb/3.12/develop/foxx-microservices/deployment.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/deployment.md rename to site/content/arangodb/3.12/develop/foxx-microservices/deployment.md diff --git a/site/content/3.12/develop/foxx-microservices/getting-started.md b/site/content/arangodb/3.12/develop/foxx-microservices/getting-started.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/getting-started.md rename to site/content/arangodb/3.12/develop/foxx-microservices/getting-started.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/_index.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/_index.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/_index.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/_index.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/access-from-the-browser.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/access-from-the-browser.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/access-from-the-browser.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/access-from-the-browser.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/authentication-and-sessions.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/authentication-and-sessions.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/authentication-and-sessions.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/authentication-and-sessions.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/development-mode.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/development-mode.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/development-mode.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/development-mode.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/foxx-in-a-cluster.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/foxx-in-a-cluster.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/foxx-in-a-cluster.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/foxx-in-a-cluster.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/linking-services-together.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/linking-services-together.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/linking-services-together.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/linking-services-together.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/making-requests.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/making-requests.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/making-requests.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/making-requests.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/scripts-and-scheduling.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/scripts-and-scheduling.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/scripts-and-scheduling.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/scripts-and-scheduling.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/testing-foxx-services.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/testing-foxx-services.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/testing-foxx-services.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/testing-foxx-services.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/using-node-modules.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/using-node-modules.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/using-node-modules.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/using-node-modules.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/using-webpack-with-foxx.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/using-webpack-with-foxx.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/using-webpack-with-foxx.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/using-webpack-with-foxx.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/working-with-collections.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/working-with-collections.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/working-with-collections.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/working-with-collections.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/working-with-files.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/working-with-files.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/working-with-files.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/working-with-files.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/working-with-routers.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/working-with-routers.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/working-with-routers.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/working-with-routers.md diff --git a/site/content/3.12/develop/foxx-microservices/guides/writing-queries.md b/site/content/arangodb/3.12/develop/foxx-microservices/guides/writing-queries.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/guides/writing-queries.md rename to site/content/arangodb/3.12/develop/foxx-microservices/guides/writing-queries.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/_index.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/_index.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/_index.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/_index.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/configuration.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/configuration.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/configuration.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/configuration.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/related-modules/_index.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/related-modules/_index.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/related-modules/_index.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/related-modules/_index.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/related-modules/authentication.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/related-modules/authentication.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/related-modules/authentication.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/related-modules/authentication.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/related-modules/graphql.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/related-modules/graphql.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/related-modules/graphql.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/related-modules/graphql.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/related-modules/oauth-2-0.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/related-modules/oauth-2-0.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/related-modules/oauth-2-0.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/related-modules/oauth-2-0.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/related-modules/queues.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/related-modules/queues.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/related-modules/queues.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/related-modules/queues.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/routers/_index.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/routers/_index.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/routers/_index.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/routers/_index.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/routers/endpoints.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/routers/endpoints.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/routers/endpoints.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/routers/endpoints.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/routers/middleware.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/routers/middleware.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/routers/middleware.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/routers/middleware.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/routers/request.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/routers/request.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/routers/request.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/routers/request.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/routers/response.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/routers/response.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/routers/response.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/routers/response.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/service-context.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/service-context.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/service-context.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/service-context.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/service-manifest.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/service-manifest.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/service-manifest.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/service-manifest.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/_index.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/_index.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/_index.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/_index.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md diff --git a/site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md b/site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md similarity index 100% rename from site/content/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md rename to site/content/arangodb/3.12/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md diff --git a/site/content/3.12/develop/http-api/_index.md b/site/content/arangodb/3.12/develop/http-api/_index.md similarity index 98% rename from site/content/3.12/develop/http-api/_index.md rename to site/content/arangodb/3.12/develop/http-api/_index.md index 2a6b57b51e..e42c7b49f3 100644 --- a/site/content/3.12/develop/http-api/_index.md +++ b/site/content/arangodb/3.12/develop/http-api/_index.md @@ -105,7 +105,7 @@ You can explore the API with the interactive **Swagger UI** using the 2. Click the **Rest API** tab. 3. Click a section and endpoint to view the description and parameters. -![The web interface with the navigation on the left and the tabs at the top](../../../images/swagger_serverapi_overview312.png) +![The web interface with the navigation on the left and the tabs at the top](../../../../images/swagger_serverapi_overview312.png) Also see this blog post: [Using the ArangoDB Swagger.io Interactive API Documentation](https://www.arangodb.com/2018/03/using-arangodb-swaggerio-interactive-api-documentation/). diff --git a/site/content/3.12/develop/http-api/administration.md b/site/content/arangodb/3.12/develop/http-api/administration.md similarity index 100% rename from site/content/3.12/develop/http-api/administration.md rename to site/content/arangodb/3.12/develop/http-api/administration.md diff --git a/site/content/3.12/develop/http-api/analyzers.md b/site/content/arangodb/3.12/develop/http-api/analyzers.md similarity index 100% rename from site/content/3.12/develop/http-api/analyzers.md rename to site/content/arangodb/3.12/develop/http-api/analyzers.md diff --git a/site/content/3.12/develop/http-api/authentication.md b/site/content/arangodb/3.12/develop/http-api/authentication.md similarity index 99% rename from site/content/3.12/develop/http-api/authentication.md rename to site/content/arangodb/3.12/develop/http-api/authentication.md index dcae69cdcb..7c004950b4 100644 --- a/site/content/3.12/develop/http-api/authentication.md +++ b/site/content/arangodb/3.12/develop/http-api/authentication.md @@ -938,7 +938,7 @@ assert(response.tokens?.length === 0); ## Hot-reload JWT secrets {{< tip >}} -In the ArangoGraph Insights Platform, authentication secrets are managed and +In the Arango Managed Platform (AMP), authentication secrets are managed and therefore this feature isn't available. {{< /tip >}} diff --git a/site/content/3.12/develop/http-api/batch-requests.md b/site/content/arangodb/3.12/develop/http-api/batch-requests.md similarity index 100% rename from site/content/3.12/develop/http-api/batch-requests.md rename to site/content/arangodb/3.12/develop/http-api/batch-requests.md diff --git a/site/content/3.12/develop/http-api/cluster.md b/site/content/arangodb/3.12/develop/http-api/cluster.md similarity index 100% rename from site/content/3.12/develop/http-api/cluster.md rename to site/content/arangodb/3.12/develop/http-api/cluster.md diff --git a/site/content/3.12/develop/http-api/collections.md b/site/content/arangodb/3.12/develop/http-api/collections.md similarity index 100% rename from site/content/3.12/develop/http-api/collections.md rename to site/content/arangodb/3.12/develop/http-api/collections.md diff --git a/site/content/3.12/develop/http-api/databases.md b/site/content/arangodb/3.12/develop/http-api/databases.md similarity index 100% rename from site/content/3.12/develop/http-api/databases.md rename to site/content/arangodb/3.12/develop/http-api/databases.md diff --git a/site/content/3.12/develop/http-api/documents.md b/site/content/arangodb/3.12/develop/http-api/documents.md similarity index 100% rename from site/content/3.12/develop/http-api/documents.md rename to site/content/arangodb/3.12/develop/http-api/documents.md diff --git a/site/content/3.12/develop/http-api/foxx.md b/site/content/arangodb/3.12/develop/http-api/foxx.md similarity index 100% rename from site/content/3.12/develop/http-api/foxx.md rename to site/content/arangodb/3.12/develop/http-api/foxx.md diff --git a/site/content/3.12/develop/http-api/general-request-handling.md b/site/content/arangodb/3.12/develop/http-api/general-request-handling.md similarity index 100% rename from site/content/3.12/develop/http-api/general-request-handling.md rename to site/content/arangodb/3.12/develop/http-api/general-request-handling.md diff --git a/site/content/3.12/develop/http-api/graphs/_index.md b/site/content/arangodb/3.12/develop/http-api/graphs/_index.md similarity index 100% rename from site/content/3.12/develop/http-api/graphs/_index.md rename to site/content/arangodb/3.12/develop/http-api/graphs/_index.md diff --git a/site/content/3.12/develop/http-api/graphs/edges.md b/site/content/arangodb/3.12/develop/http-api/graphs/edges.md similarity index 100% rename from site/content/3.12/develop/http-api/graphs/edges.md rename to site/content/arangodb/3.12/develop/http-api/graphs/edges.md diff --git a/site/content/3.12/develop/http-api/graphs/named-graphs.md b/site/content/arangodb/3.12/develop/http-api/graphs/named-graphs.md similarity index 99% rename from site/content/3.12/develop/http-api/graphs/named-graphs.md rename to site/content/arangodb/3.12/develop/http-api/graphs/named-graphs.md index 5f5123ad4b..88602a529a 100644 --- a/site/content/3.12/develop/http-api/graphs/named-graphs.md +++ b/site/content/arangodb/3.12/develop/http-api/graphs/named-graphs.md @@ -18,11 +18,11 @@ The examples use the following example graphs: [_Social Graph_](../../../graphs/example-graphs.md#social-graph): -![Social Example Graph](../../../../images/social_graph.png) +![Social Example Graph](../../../../../images/social_graph.png) [_Knows Graph_](../../../graphs/example-graphs.md#knows-graph): -![Social Example Graph](../../../../images/knows_graph.png) +![Social Example Graph](../../../../../images/knows_graph.png) ## Management diff --git a/site/content/3.12/develop/http-api/hot-backups.md b/site/content/arangodb/3.12/develop/http-api/hot-backups.md similarity index 99% rename from site/content/3.12/develop/http-api/hot-backups.md rename to site/content/arangodb/3.12/develop/http-api/hot-backups.md index a585b2244c..d1962db6f9 100644 --- a/site/content/3.12/develop/http-api/hot-backups.md +++ b/site/content/arangodb/3.12/develop/http-api/hot-backups.md @@ -7,8 +7,8 @@ description: >- backups --- {{< tip >}} -In the ArangoGraph Insights Platform, use managed -[Backups](../../arangograph/backups.md) instead. +In the Arango Managed Platform (AMP), use managed +[Backups](../../../../amp/backups.md) instead. {{< /tip >}} Hot Backups are near instantaneous consistent snapshots of an diff --git a/site/content/3.12/develop/http-api/import.md b/site/content/arangodb/3.12/develop/http-api/import.md similarity index 100% rename from site/content/3.12/develop/http-api/import.md rename to site/content/arangodb/3.12/develop/http-api/import.md diff --git a/site/content/3.12/develop/http-api/indexes/_index.md b/site/content/arangodb/3.12/develop/http-api/indexes/_index.md similarity index 100% rename from site/content/3.12/develop/http-api/indexes/_index.md rename to site/content/arangodb/3.12/develop/http-api/indexes/_index.md diff --git a/site/content/3.12/develop/http-api/indexes/fulltext.md b/site/content/arangodb/3.12/develop/http-api/indexes/fulltext.md similarity index 100% rename from site/content/3.12/develop/http-api/indexes/fulltext.md rename to site/content/arangodb/3.12/develop/http-api/indexes/fulltext.md diff --git a/site/content/3.12/develop/http-api/indexes/geo-spatial.md b/site/content/arangodb/3.12/develop/http-api/indexes/geo-spatial.md similarity index 100% rename from site/content/3.12/develop/http-api/indexes/geo-spatial.md rename to site/content/arangodb/3.12/develop/http-api/indexes/geo-spatial.md diff --git a/site/content/3.12/develop/http-api/indexes/inverted.md b/site/content/arangodb/3.12/develop/http-api/indexes/inverted.md similarity index 100% rename from site/content/3.12/develop/http-api/indexes/inverted.md rename to site/content/arangodb/3.12/develop/http-api/indexes/inverted.md diff --git a/site/content/3.12/develop/http-api/indexes/multi-dimensional.md b/site/content/arangodb/3.12/develop/http-api/indexes/multi-dimensional.md similarity index 100% rename from site/content/3.12/develop/http-api/indexes/multi-dimensional.md rename to site/content/arangodb/3.12/develop/http-api/indexes/multi-dimensional.md diff --git a/site/content/3.12/develop/http-api/indexes/persistent.md b/site/content/arangodb/3.12/develop/http-api/indexes/persistent.md similarity index 100% rename from site/content/3.12/develop/http-api/indexes/persistent.md rename to site/content/arangodb/3.12/develop/http-api/indexes/persistent.md diff --git a/site/content/3.12/develop/http-api/indexes/ttl.md b/site/content/arangodb/3.12/develop/http-api/indexes/ttl.md similarity index 100% rename from site/content/3.12/develop/http-api/indexes/ttl.md rename to site/content/arangodb/3.12/develop/http-api/indexes/ttl.md diff --git a/site/content/3.12/develop/http-api/indexes/vector.md b/site/content/arangodb/3.12/develop/http-api/indexes/vector.md similarity index 100% rename from site/content/3.12/develop/http-api/indexes/vector.md rename to site/content/arangodb/3.12/develop/http-api/indexes/vector.md diff --git a/site/content/3.12/develop/http-api/jobs.md b/site/content/arangodb/3.12/develop/http-api/jobs.md similarity index 100% rename from site/content/3.12/develop/http-api/jobs.md rename to site/content/arangodb/3.12/develop/http-api/jobs.md diff --git a/site/content/3.12/develop/http-api/monitoring/_index.md b/site/content/arangodb/3.12/develop/http-api/monitoring/_index.md similarity index 100% rename from site/content/3.12/develop/http-api/monitoring/_index.md rename to site/content/arangodb/3.12/develop/http-api/monitoring/_index.md diff --git a/site/content/3.12/develop/http-api/monitoring/logs.md b/site/content/arangodb/3.12/develop/http-api/monitoring/logs.md similarity index 100% rename from site/content/3.12/develop/http-api/monitoring/logs.md rename to site/content/arangodb/3.12/develop/http-api/monitoring/logs.md diff --git a/site/content/3.12/develop/http-api/monitoring/metrics.md b/site/content/arangodb/3.12/develop/http-api/monitoring/metrics.md similarity index 100% rename from site/content/3.12/develop/http-api/monitoring/metrics.md rename to site/content/arangodb/3.12/develop/http-api/monitoring/metrics.md diff --git a/site/content/3.12/develop/http-api/monitoring/statistics.md b/site/content/arangodb/3.12/develop/http-api/monitoring/statistics.md similarity index 100% rename from site/content/3.12/develop/http-api/monitoring/statistics.md rename to site/content/arangodb/3.12/develop/http-api/monitoring/statistics.md diff --git a/site/content/3.12/develop/http-api/queries/_index.md b/site/content/arangodb/3.12/develop/http-api/queries/_index.md similarity index 100% rename from site/content/3.12/develop/http-api/queries/_index.md rename to site/content/arangodb/3.12/develop/http-api/queries/_index.md diff --git a/site/content/3.12/develop/http-api/queries/aql-queries.md b/site/content/arangodb/3.12/develop/http-api/queries/aql-queries.md similarity index 100% rename from site/content/3.12/develop/http-api/queries/aql-queries.md rename to site/content/arangodb/3.12/develop/http-api/queries/aql-queries.md diff --git a/site/content/3.12/develop/http-api/queries/aql-query-plan-cache.md b/site/content/arangodb/3.12/develop/http-api/queries/aql-query-plan-cache.md similarity index 100% rename from site/content/3.12/develop/http-api/queries/aql-query-plan-cache.md rename to site/content/arangodb/3.12/develop/http-api/queries/aql-query-plan-cache.md diff --git a/site/content/3.12/develop/http-api/queries/aql-query-results-cache.md b/site/content/arangodb/3.12/develop/http-api/queries/aql-query-results-cache.md similarity index 100% rename from site/content/3.12/develop/http-api/queries/aql-query-results-cache.md rename to site/content/arangodb/3.12/develop/http-api/queries/aql-query-results-cache.md diff --git a/site/content/3.12/develop/http-api/queries/user-defined-aql-functions.md b/site/content/arangodb/3.12/develop/http-api/queries/user-defined-aql-functions.md similarity index 100% rename from site/content/3.12/develop/http-api/queries/user-defined-aql-functions.md rename to site/content/arangodb/3.12/develop/http-api/queries/user-defined-aql-functions.md diff --git a/site/content/3.12/develop/http-api/replication/_index.md b/site/content/arangodb/3.12/develop/http-api/replication/_index.md similarity index 100% rename from site/content/3.12/develop/http-api/replication/_index.md rename to site/content/arangodb/3.12/develop/http-api/replication/_index.md diff --git a/site/content/3.12/develop/http-api/replication/other-replication-commands.md b/site/content/arangodb/3.12/develop/http-api/replication/other-replication-commands.md similarity index 100% rename from site/content/3.12/develop/http-api/replication/other-replication-commands.md rename to site/content/arangodb/3.12/develop/http-api/replication/other-replication-commands.md diff --git a/site/content/3.12/develop/http-api/replication/replication-applier.md b/site/content/arangodb/3.12/develop/http-api/replication/replication-applier.md similarity index 100% rename from site/content/3.12/develop/http-api/replication/replication-applier.md rename to site/content/arangodb/3.12/develop/http-api/replication/replication-applier.md diff --git a/site/content/3.12/develop/http-api/replication/replication-dump.md b/site/content/arangodb/3.12/develop/http-api/replication/replication-dump.md similarity index 100% rename from site/content/3.12/develop/http-api/replication/replication-dump.md rename to site/content/arangodb/3.12/develop/http-api/replication/replication-dump.md diff --git a/site/content/3.12/develop/http-api/replication/replication-logger.md b/site/content/arangodb/3.12/develop/http-api/replication/replication-logger.md similarity index 100% rename from site/content/3.12/develop/http-api/replication/replication-logger.md rename to site/content/arangodb/3.12/develop/http-api/replication/replication-logger.md diff --git a/site/content/3.12/develop/http-api/replication/write-ahead-log.md b/site/content/arangodb/3.12/develop/http-api/replication/write-ahead-log.md similarity index 100% rename from site/content/3.12/develop/http-api/replication/write-ahead-log.md rename to site/content/arangodb/3.12/develop/http-api/replication/write-ahead-log.md diff --git a/site/content/3.12/develop/http-api/security.md b/site/content/arangodb/3.12/develop/http-api/security.md similarity index 100% rename from site/content/3.12/develop/http-api/security.md rename to site/content/arangodb/3.12/develop/http-api/security.md diff --git a/site/content/3.12/develop/http-api/tasks.md b/site/content/arangodb/3.12/develop/http-api/tasks.md similarity index 100% rename from site/content/3.12/develop/http-api/tasks.md rename to site/content/arangodb/3.12/develop/http-api/tasks.md diff --git a/site/content/3.12/develop/http-api/transactions/_index.md b/site/content/arangodb/3.12/develop/http-api/transactions/_index.md similarity index 100% rename from site/content/3.12/develop/http-api/transactions/_index.md rename to site/content/arangodb/3.12/develop/http-api/transactions/_index.md diff --git a/site/content/3.12/develop/http-api/transactions/javascript-transactions.md b/site/content/arangodb/3.12/develop/http-api/transactions/javascript-transactions.md similarity index 100% rename from site/content/3.12/develop/http-api/transactions/javascript-transactions.md rename to site/content/arangodb/3.12/develop/http-api/transactions/javascript-transactions.md diff --git a/site/content/3.12/develop/http-api/transactions/stream-transactions.md b/site/content/arangodb/3.12/develop/http-api/transactions/stream-transactions.md similarity index 100% rename from site/content/3.12/develop/http-api/transactions/stream-transactions.md rename to site/content/arangodb/3.12/develop/http-api/transactions/stream-transactions.md diff --git a/site/content/3.12/develop/http-api/users.md b/site/content/arangodb/3.12/develop/http-api/users.md similarity index 100% rename from site/content/3.12/develop/http-api/users.md rename to site/content/arangodb/3.12/develop/http-api/users.md diff --git a/site/content/3.12/develop/http-api/views/_index.md b/site/content/arangodb/3.12/develop/http-api/views/_index.md similarity index 100% rename from site/content/3.12/develop/http-api/views/_index.md rename to site/content/arangodb/3.12/develop/http-api/views/_index.md diff --git a/site/content/3.12/develop/http-api/views/arangosearch-views.md b/site/content/arangodb/3.12/develop/http-api/views/arangosearch-views.md similarity index 100% rename from site/content/3.12/develop/http-api/views/arangosearch-views.md rename to site/content/arangodb/3.12/develop/http-api/views/arangosearch-views.md diff --git a/site/content/3.12/develop/http-api/views/search-alias-views.md b/site/content/arangodb/3.12/develop/http-api/views/search-alias-views.md similarity index 100% rename from site/content/3.12/develop/http-api/views/search-alias-views.md rename to site/content/arangodb/3.12/develop/http-api/views/search-alias-views.md diff --git a/site/content/3.12/develop/integrations/_index.md b/site/content/arangodb/3.12/develop/integrations/_index.md similarity index 100% rename from site/content/3.12/develop/integrations/_index.md rename to site/content/arangodb/3.12/develop/integrations/_index.md diff --git a/site/content/3.12/develop/integrations/arangodb-datasource-for-apache-spark.md b/site/content/arangodb/3.12/develop/integrations/arangodb-datasource-for-apache-spark.md similarity index 99% rename from site/content/3.12/develop/integrations/arangodb-datasource-for-apache-spark.md rename to site/content/arangodb/3.12/develop/integrations/arangodb-datasource-for-apache-spark.md index b05d1acfb1..1124193864 100644 --- a/site/content/3.12/develop/integrations/arangodb-datasource-for-apache-spark.md +++ b/site/content/arangodb/3.12/develop/integrations/arangodb-datasource-for-apache-spark.md @@ -374,7 +374,7 @@ The following Spark SQL data types (subtypes of `org.apache.spark.sql.types.Filt - `MapType` (only with key type `StringType`) - `StructType` -## Connect to the ArangoGraph Insights Platform +## Connect to the Arango Managed Platform (AMP) To connect to SSL secured deployments using X.509 Base64 encoded CA certificate (ArangoGraph): diff --git a/site/content/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md b/site/content/arangodb/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md similarity index 100% rename from site/content/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md rename to site/content/arangodb/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md diff --git a/site/content/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md b/site/content/arangodb/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md similarity index 100% rename from site/content/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md rename to site/content/arangodb/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md diff --git a/site/content/3.12/develop/integrations/spring-boot-arangodb.md b/site/content/arangodb/3.12/develop/integrations/spring-boot-arangodb.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-boot-arangodb.md rename to site/content/arangodb/3.12/develop/integrations/spring-boot-arangodb.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/_index.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/_index.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/_index.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/_index.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/migration.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/migration.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/migration.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/migration.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/_index.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/_index.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/_index.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/_index.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/template.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/template.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-3/template.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/template.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/_index.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/_index.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/_index.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/_index.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md diff --git a/site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/template.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/template.md similarity index 100% rename from site/content/3.12/develop/integrations/spring-data-arangodb/reference-version-4/template.md rename to site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/template.md diff --git a/site/content/3.12/develop/javascript-api/@arangodb/_index.md b/site/content/arangodb/3.12/develop/javascript-api/@arangodb/_index.md similarity index 100% rename from site/content/3.12/develop/javascript-api/@arangodb/_index.md rename to site/content/arangodb/3.12/develop/javascript-api/@arangodb/_index.md diff --git a/site/content/3.12/develop/javascript-api/@arangodb/collection-object.md b/site/content/arangodb/3.12/develop/javascript-api/@arangodb/collection-object.md similarity index 100% rename from site/content/3.12/develop/javascript-api/@arangodb/collection-object.md rename to site/content/arangodb/3.12/develop/javascript-api/@arangodb/collection-object.md diff --git a/site/content/3.12/develop/javascript-api/@arangodb/cursor-object.md b/site/content/arangodb/3.12/develop/javascript-api/@arangodb/cursor-object.md similarity index 100% rename from site/content/3.12/develop/javascript-api/@arangodb/cursor-object.md rename to site/content/arangodb/3.12/develop/javascript-api/@arangodb/cursor-object.md diff --git a/site/content/3.12/develop/javascript-api/@arangodb/db-object.md b/site/content/arangodb/3.12/develop/javascript-api/@arangodb/db-object.md similarity index 100% rename from site/content/3.12/develop/javascript-api/@arangodb/db-object.md rename to site/content/arangodb/3.12/develop/javascript-api/@arangodb/db-object.md diff --git a/site/content/3.12/develop/javascript-api/@arangodb/view-object.md b/site/content/arangodb/3.12/develop/javascript-api/@arangodb/view-object.md similarity index 100% rename from site/content/3.12/develop/javascript-api/@arangodb/view-object.md rename to site/content/arangodb/3.12/develop/javascript-api/@arangodb/view-object.md diff --git a/site/content/3.12/develop/javascript-api/_index.md b/site/content/arangodb/3.12/develop/javascript-api/_index.md similarity index 100% rename from site/content/3.12/develop/javascript-api/_index.md rename to site/content/arangodb/3.12/develop/javascript-api/_index.md diff --git a/site/content/3.12/develop/javascript-api/actions.md b/site/content/arangodb/3.12/develop/javascript-api/actions.md similarity index 100% rename from site/content/3.12/develop/javascript-api/actions.md rename to site/content/arangodb/3.12/develop/javascript-api/actions.md diff --git a/site/content/3.12/develop/javascript-api/analyzers.md b/site/content/arangodb/3.12/develop/javascript-api/analyzers.md similarity index 100% rename from site/content/3.12/develop/javascript-api/analyzers.md rename to site/content/arangodb/3.12/develop/javascript-api/analyzers.md diff --git a/site/content/3.12/develop/javascript-api/aql-queries.md b/site/content/arangodb/3.12/develop/javascript-api/aql-queries.md similarity index 100% rename from site/content/3.12/develop/javascript-api/aql-queries.md rename to site/content/arangodb/3.12/develop/javascript-api/aql-queries.md diff --git a/site/content/3.12/develop/javascript-api/console.md b/site/content/arangodb/3.12/develop/javascript-api/console.md similarity index 100% rename from site/content/3.12/develop/javascript-api/console.md rename to site/content/arangodb/3.12/develop/javascript-api/console.md diff --git a/site/content/3.12/develop/javascript-api/crypto.md b/site/content/arangodb/3.12/develop/javascript-api/crypto.md similarity index 100% rename from site/content/3.12/develop/javascript-api/crypto.md rename to site/content/arangodb/3.12/develop/javascript-api/crypto.md diff --git a/site/content/3.12/develop/javascript-api/fs.md b/site/content/arangodb/3.12/develop/javascript-api/fs.md similarity index 100% rename from site/content/3.12/develop/javascript-api/fs.md rename to site/content/arangodb/3.12/develop/javascript-api/fs.md diff --git a/site/content/3.12/develop/javascript-api/request.md b/site/content/arangodb/3.12/develop/javascript-api/request.md similarity index 100% rename from site/content/3.12/develop/javascript-api/request.md rename to site/content/arangodb/3.12/develop/javascript-api/request.md diff --git a/site/content/3.12/develop/javascript-api/tasks.md b/site/content/arangodb/3.12/develop/javascript-api/tasks.md similarity index 100% rename from site/content/3.12/develop/javascript-api/tasks.md rename to site/content/arangodb/3.12/develop/javascript-api/tasks.md diff --git a/site/content/3.12/develop/operational-factors.md b/site/content/arangodb/3.12/develop/operational-factors.md similarity index 100% rename from site/content/3.12/develop/operational-factors.md rename to site/content/arangodb/3.12/develop/operational-factors.md diff --git a/site/content/3.12/develop/satellitecollections.md b/site/content/arangodb/3.12/develop/satellitecollections.md similarity index 100% rename from site/content/3.12/develop/satellitecollections.md rename to site/content/arangodb/3.12/develop/satellitecollections.md diff --git a/site/content/3.12/develop/smartjoins.md b/site/content/arangodb/3.12/develop/smartjoins.md similarity index 100% rename from site/content/3.12/develop/smartjoins.md rename to site/content/arangodb/3.12/develop/smartjoins.md diff --git a/site/content/3.12/develop/transactions/_index.md b/site/content/arangodb/3.12/develop/transactions/_index.md similarity index 100% rename from site/content/3.12/develop/transactions/_index.md rename to site/content/arangodb/3.12/develop/transactions/_index.md diff --git a/site/content/3.12/develop/transactions/durability.md b/site/content/arangodb/3.12/develop/transactions/durability.md similarity index 100% rename from site/content/3.12/develop/transactions/durability.md rename to site/content/arangodb/3.12/develop/transactions/durability.md diff --git a/site/content/3.12/develop/transactions/javascript-transactions.md b/site/content/arangodb/3.12/develop/transactions/javascript-transactions.md similarity index 100% rename from site/content/3.12/develop/transactions/javascript-transactions.md rename to site/content/arangodb/3.12/develop/transactions/javascript-transactions.md diff --git a/site/content/3.12/develop/transactions/limitations.md b/site/content/arangodb/3.12/develop/transactions/limitations.md similarity index 100% rename from site/content/3.12/develop/transactions/limitations.md rename to site/content/arangodb/3.12/develop/transactions/limitations.md diff --git a/site/content/3.12/develop/transactions/locking-and-isolation.md b/site/content/arangodb/3.12/develop/transactions/locking-and-isolation.md similarity index 100% rename from site/content/3.12/develop/transactions/locking-and-isolation.md rename to site/content/arangodb/3.12/develop/transactions/locking-and-isolation.md diff --git a/site/content/3.12/develop/transactions/stream-transactions.md b/site/content/arangodb/3.12/develop/transactions/stream-transactions.md similarity index 100% rename from site/content/3.12/develop/transactions/stream-transactions.md rename to site/content/arangodb/3.12/develop/transactions/stream-transactions.md diff --git a/site/content/3.12/get-started/_index.md b/site/content/arangodb/3.12/get-started/_index.md similarity index 100% rename from site/content/3.12/get-started/_index.md rename to site/content/arangodb/3.12/get-started/_index.md diff --git a/site/content/3.12/get-started/how-to-interact-with-arangodb.md b/site/content/arangodb/3.12/get-started/how-to-interact-with-arangodb.md similarity index 100% rename from site/content/3.12/get-started/how-to-interact-with-arangodb.md rename to site/content/arangodb/3.12/get-started/how-to-interact-with-arangodb.md diff --git a/site/content/3.12/get-started/on-premises-installation.md b/site/content/arangodb/3.12/get-started/on-premises-installation.md similarity index 93% rename from site/content/3.12/get-started/on-premises-installation.md rename to site/content/arangodb/3.12/get-started/on-premises-installation.md index 1e4aea9cbf..a2e549904f 100644 --- a/site/content/3.12/get-started/on-premises-installation.md +++ b/site/content/arangodb/3.12/get-started/on-premises-installation.md @@ -28,16 +28,16 @@ Depending on the installation method used, the installation process either prompted for the root password or the default root password is empty (see [Securing the installation](.#securing-the-installation)). -![Web Interface Login Form](../../images/loginView.png) +![Web Interface Login Form](../../../../images/loginView.png) Next you will be asked which database to use. Every server instance comes with a `_system` database. Select this database to continue. -![select database](../../images/selectDBView.png) +![select database](../../../../images/selectDBView.png) You should then be presented the dashboard with server statistics like this: -![Web Interface Dashboard Request Statistics](../../images/ui-dashboard.webp) +![Web Interface Dashboard Request Statistics](../../../../images/ui-dashboard.webp) For a more detailed description of the interface, see [Web Interface](../components/web-interface/_index.md). --> diff --git a/site/content/3.12/get-started/set-up-a-cloud-instance.md b/site/content/arangodb/3.12/get-started/set-up-a-cloud-instance.md similarity index 71% rename from site/content/3.12/get-started/set-up-a-cloud-instance.md rename to site/content/arangodb/3.12/get-started/set-up-a-cloud-instance.md index 2383f20980..7fd3bfa149 100644 --- a/site/content/3.12/get-started/set-up-a-cloud-instance.md +++ b/site/content/arangodb/3.12/get-started/set-up-a-cloud-instance.md @@ -6,10 +6,10 @@ description: >- This quick start guide covers the basics from creating an ArangoGraph account to setting up and accessing your first ArangoGraph deployment --- -For general information about the ArangoGraph Insights Platform, see +For general information about the Arango Managed Platform (AMP), see [dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -For guides and reference documentation, see the [ArangoGraph](../arangograph/_index.md) documentation. +For guides and reference documentation, see the [ArangoGraph](../../../amp/_index.md) documentation. ## Prerequisites @@ -33,7 +33,7 @@ used for multiple accounts. 2. Click the __Start Free__ button or click the __Sign Up__ link in the top right corner. - ![ArangoGraph Homepage](../../images/arangograph-homepage.png) + ![ArangoGraph Homepage](../../../images/arangograph-homepage.png) 3. Review the terms & conditions and privacy policy and click __I accept__. 4. Select the type of sign up you would like to use (GitHub, Google, or @@ -42,11 +42,11 @@ used for multiple accounts. - For the email address option, type your desired email address in the email field and type a strong password in the password field. - {{< image src="../../images/arangograph-create-account.png" alt="ArangoGraph Sign up" style="max-height: 50vh">}} + {{< image src="../../../images/arangograph-create-account.png" alt="ArangoGraph Sign up" style="max-height: 50vh">}} Click the __Sign up__ button. You will receive a verification email. In that mail, click the __Verify my email address__ link or button. - It opens a page in the ArangoGraph Insights Platform that says __Welcome back!__ + It opens a page in the Arango Managed Platform (AMP) that says __Welcome back!__ 5. Click the __Log in__ button to continue and login. 6. If you signed up with an email address of a public email service provider (e.g. Hotmail), a form appears asking for your mobile phone number. Enter the country code @@ -67,25 +67,25 @@ used for multiple accounts. provider and region. Pick one and click __Create deployment__. You can also select your intended use-case. - ![ArangoGraph Dashboard](../../images/arangograph-dashboard-free-tier.png) + ![ArangoGraph Dashboard](../../../images/arangograph-dashboard-free-tier.png) - You can also [create a deployment](../arangograph/deployments/_index.md#how-to-create-a-new-deployment) + You can also [create a deployment](../../../amp/deployments/_index.md#how-to-create-a-new-deployment) manually, if you want fine-grained configuration options. 2. The new deployment is displayed in the list of deployments for the respective project (here: _Avocado_). - ![ArangoGraph Deployments Bootstrapping](../../images/arangograph-deployments-bootstrapping.png) + ![ArangoGraph Deployments Bootstrapping](../../../images/arangograph-deployments-bootstrapping.png) It takes a couple of minutes before the deployment can be used. The status is changed from __Bootstrapping__ to __OK__ eventually and you also receive an email when it is ready. - {{< image src="../../images/arangograph-deployment-ready-email.png" alt="ArangoGraph Deployment Ready Email" style="max-height: 50vh">}} + {{< image src="../../../images/arangograph-deployment-ready-email.png" alt="ArangoGraph Deployment Ready Email" style="max-height: 50vh">}} 3. Click the name of the deployment (or the __Open deployment details__ link in the email) to view the deployment details. - ![ArangoGraph Deployment Ready](../../images/arangograph-deployment-ready.png) + ![ArangoGraph Deployment Ready](../../../images/arangograph-deployment-ready.png) 4. Click the __Open database UI__ button to open the ArangoDB web interface. @@ -96,23 +96,23 @@ used for multiple accounts. Click __Guide__ for instructions on how to access and run queries against this data. - ![ArangoGraph Deployment Examples](../../images/arangograph-deployment-examples.png) + ![ArangoGraph Deployment Examples](../../../images/arangograph-deployment-examples.png) - ![ArangoGraph Deployment Examples IMDB Guide](../../images/arangograph-deployment-examples-imdb-guide.png) + ![ArangoGraph Deployment Examples IMDB Guide](../../../images/arangograph-deployment-examples-imdb-guide.png) ## General Hierarchy -The ArangoGraph Insights Platform supports multi-tenant setups via organizations. +The Arango Managed Platform (AMP) supports multi-tenant setups via organizations. You can create your own organization(s) and invite collaborators or join existing ones via invites. Your organization contains projects. Your projects hold your deployments. -- [**Organizations**](../arangograph/organizations/_index.md) +- [**Organizations**](../../../amp/organizations/_index.md) represent (commercial) entities such as companies. You can be part of multiple organizations with a single user account. - - [**Projects**](../arangograph/projects.md) + - [**Projects**](../../../amp/projects.md) represent organizational units such as teams or applications. - - [**Deployments**](../arangograph/deployments/_index.md) + - [**Deployments**](../../../amp/deployments/_index.md) are the actual instances of ArangoDB clusters. When you sign up for ArangoGraph, an organization and a default project are @@ -125,31 +125,31 @@ question mark to bring up the help menu and choose __Start tour__. This guided tour walks you through the creation of a deployment and shows you how to load example datasets and manage projects and deployments. -![Start tour in menu](../../images/arangograph-tour-start.png) +![Start tour in menu](../../../images/arangograph-tour-start.png) Alternatively, follow the steps of the linked guides: -- [Create a new project](../arangograph/projects.md#how-to-create-a-new-project) (optional) -- [Create a new deployment](../arangograph/deployments/_index.md#how-to-create-a-new-deployment) -- [Install a new certificate](../arangograph/security-and-access-control/x-509-certificates.md) (optional) -- [Access your deployment](../arangograph/deployments/_index.md#how-to-access-your-deployment) -- [Delete your deployment](../arangograph/deployments/_index.md#how-to-delete-a-deployment) +- [Create a new project](../../../amp/projects.md#how-to-create-a-new-project) (optional) +- [Create a new deployment](../../../amp/deployments/_index.md#how-to-create-a-new-deployment) +- [Install a new certificate](../../../amp/security-and-access-control/x-509-certificates.md) (optional) +- [Access your deployment](../../../amp/deployments/_index.md#how-to-access-your-deployment) +- [Delete your deployment](../../../amp/deployments/_index.md#how-to-delete-a-deployment) ## Free-to-Try vs. Paid -The ArangoGraph Insights Platform comes with a free-to-try tier that lets you test +The Arango Managed Platform (AMP) comes with a free-to-try tier that lets you test the ArangoDB Cloud for free for 14 days. It includes one project and one small deployment of 4GB, local backups, and one notebook for learning and data science. After the trial period, your deployment is automatically deleted. You can unlock all features in ArangoGraph at any time by adding your billing details and at least one payment method. See: -- [ArangoGraph Packages](../arangograph/organizations/_index.md#arangograph-packages) -- [How to add billing details to organizations](../arangograph/organizations/billing.md#how-to-add-billing-details) -- [How to add a payment method to an organization](../arangograph/organizations/billing.md#how-to-add-a-payment-method) +- [ArangoGraph Packages](../../../amp/organizations/_index.md#arangograph-packages) +- [How to add billing details to organizations](../../../amp/organizations/billing.md#how-to-add-billing-details) +- [How to add a payment method to an organization](../../../amp/organizations/billing.md#how-to-add-a-payment-method) ## Managed Cloud Service vs. On-premises Comparison: Key Differences -The ArangoGraph Insights Platform aims to make all features of ArangoDB +The Arango Managed Platform (AMP) aims to make all features of ArangoDB available to you, but there are a few key differences: - Encryption (both at rest & network traffic) is always on and cannot be diff --git a/site/content/3.12/get-started/start-using-aql/_index.md b/site/content/arangodb/3.12/get-started/start-using-aql/_index.md similarity index 100% rename from site/content/3.12/get-started/start-using-aql/_index.md rename to site/content/arangodb/3.12/get-started/start-using-aql/_index.md diff --git a/site/content/3.12/get-started/start-using-aql/crud.md b/site/content/arangodb/3.12/get-started/start-using-aql/crud.md similarity index 100% rename from site/content/3.12/get-started/start-using-aql/crud.md rename to site/content/arangodb/3.12/get-started/start-using-aql/crud.md diff --git a/site/content/3.12/get-started/start-using-aql/dataset.md b/site/content/arangodb/3.12/get-started/start-using-aql/dataset.md similarity index 100% rename from site/content/3.12/get-started/start-using-aql/dataset.md rename to site/content/arangodb/3.12/get-started/start-using-aql/dataset.md diff --git a/site/content/3.12/get-started/start-using-aql/filter.md b/site/content/arangodb/3.12/get-started/start-using-aql/filter.md similarity index 100% rename from site/content/3.12/get-started/start-using-aql/filter.md rename to site/content/arangodb/3.12/get-started/start-using-aql/filter.md diff --git a/site/content/3.12/get-started/start-using-aql/geo.md b/site/content/arangodb/3.12/get-started/start-using-aql/geo.md similarity index 100% rename from site/content/3.12/get-started/start-using-aql/geo.md rename to site/content/arangodb/3.12/get-started/start-using-aql/geo.md diff --git a/site/content/3.12/get-started/start-using-aql/graphs.md b/site/content/arangodb/3.12/get-started/start-using-aql/graphs.md similarity index 98% rename from site/content/3.12/get-started/start-using-aql/graphs.md rename to site/content/arangodb/3.12/get-started/start-using-aql/graphs.md index d5c9502ae3..044f1cc4a3 100644 --- a/site/content/3.12/get-started/start-using-aql/graphs.md +++ b/site/content/arangodb/3.12/get-started/start-using-aql/graphs.md @@ -36,7 +36,7 @@ Our characters have the following relations between parents and children Visualized as a graph: -![ChildOf graph visualization](../../../images/ChildOf_Graph.png) +![ChildOf graph visualization](../../../../images/ChildOf_Graph.png) ## Creating the edges @@ -252,7 +252,7 @@ It might be a bit unexpected, that Joffrey is returned twice. However, if you look at the graph visualization, you can see that multiple paths lead from Joffrey (bottom right) to Tywin: -![ChildOf graph visualization](../../../images/ChildOf_Graph.png) +![ChildOf graph visualization](../../../../images/ChildOf_Graph.png) ``` Tywin <- Jaime <- Joffrey diff --git a/site/content/3.12/get-started/start-using-aql/joins.md b/site/content/arangodb/3.12/get-started/start-using-aql/joins.md similarity index 100% rename from site/content/3.12/get-started/start-using-aql/joins.md rename to site/content/arangodb/3.12/get-started/start-using-aql/joins.md diff --git a/site/content/3.12/get-started/start-using-aql/sort-limit.md b/site/content/arangodb/3.12/get-started/start-using-aql/sort-limit.md similarity index 100% rename from site/content/3.12/get-started/start-using-aql/sort-limit.md rename to site/content/arangodb/3.12/get-started/start-using-aql/sort-limit.md diff --git a/site/content/3.12/graphs/_index.md b/site/content/arangodb/3.12/graphs/_index.md similarity index 97% rename from site/content/3.12/graphs/_index.md rename to site/content/arangodb/3.12/graphs/_index.md index 56f3e5e89b..76d5771e20 100644 --- a/site/content/3.12/graphs/_index.md +++ b/site/content/arangodb/3.12/graphs/_index.md @@ -17,12 +17,12 @@ causal relationships, flows of information, energy, and material, interactions a transactions, dependency and hierarchy, as well as similarity and relatedness of any kind. -![An arrow labeled as "Edge" pointing from one circle to another, both labeled "Node"](../../images/data-model-graph-relation-abstract-edge.png) +![An arrow labeled as "Edge" pointing from one circle to another, both labeled "Node"](../../../images/data-model-graph-relation-abstract-edge.png) For example, you can represent people by nodes and their friendships by edges. This lets you form a graph that is a social network in this case. -![Two circles labeled "Mary" and "John", with an arrow labeled "isFriendOf" pointing from "Mary" to "John"](../../images/data-model-graph-relation-concrete.png) +![Two circles labeled "Mary" and "John", with an arrow labeled "isFriendOf" pointing from "Mary" to "John"](../../../images/data-model-graph-relation-concrete.png) The specific terms to refer to nodes and edges in a graph vary depending on the field or context, but they are conceptually the same. In computer science @@ -42,7 +42,7 @@ relate to one another is a very expressive data model. It lets you represent a wide variety of information in a compact and intuitive way. It lets you model complex relationships and interactions of basically everything. -![Three circles labeled "Mary", "Book", and "John", with an arrow labeled "bought" from "Mary" to "Book" and an arrow labeled "isFriendOf" from "Mary" to "John"](../../images/data-model-graph-relations.png) +![Three circles labeled "Mary", "Book", and "John", with an arrow labeled "bought" from "Mary" to "Book" and an arrow labeled "isFriendOf" from "Mary" to "John"](../../../images/data-model-graph-relations.png) Graphs are commonly directed (_digraphs_), which means that each edge goes from one node to another node in a specific direction. This lets you model @@ -215,7 +215,7 @@ suboptimal query performance due to random data distribution. General graphs are the easiest way to get started, no special configuration required. {{< /tip >}} -![General Graph Random Distribution](../../images/general-graph-distribution.png) +![General Graph Random Distribution](../../../images/general-graph-distribution.png) #### When to use SmartGraphs @@ -230,7 +230,7 @@ scenarios, use SmartGraphs. Organize your data efficiently using the `smartGraphAttribute`. {{< /tip >}} -![SmartGraph Distribution](../../images/smartgraph-distribution.png) +![SmartGraph Distribution](../../../images/smartgraph-distribution.png) #### When to use EnterpriseGraphs @@ -244,7 +244,7 @@ If you need improved query execution without manual data distribution, consider using EnterpriseGraphs. {{< /tip >}} -![EnterpriseGraph Distribution](../../images/enterprisegraph-distribution.png) +![EnterpriseGraph Distribution](../../../images/enterprisegraph-distribution.png) #### When to use SatelliteGraphs @@ -331,7 +331,7 @@ with `_from` pointing to `Users/John` and `_to` pointing to attributes to qualify the relation further, like the permissions of **John** in this group, the date when John joined the group, and so on. -![User in group example](../../images/graph_user_in_group.png) +![User in group example](../../../images/graph_user_in_group.png) As a rule of thumb, if you use documents and their attributes in a sentence, nouns would typically be nodes, and the verbs the edges. diff --git a/site/content/3.12/graphs/enterprisegraphs/_index.md b/site/content/arangodb/3.12/graphs/enterprisegraphs/_index.md similarity index 100% rename from site/content/3.12/graphs/enterprisegraphs/_index.md rename to site/content/arangodb/3.12/graphs/enterprisegraphs/_index.md diff --git a/site/content/3.12/graphs/enterprisegraphs/getting-started.md b/site/content/arangodb/3.12/graphs/enterprisegraphs/getting-started.md similarity index 99% rename from site/content/3.12/graphs/enterprisegraphs/getting-started.md rename to site/content/arangodb/3.12/graphs/enterprisegraphs/getting-started.md index 35f92abd86..95e376f612 100644 --- a/site/content/3.12/graphs/enterprisegraphs/getting-started.md +++ b/site/content/arangodb/3.12/graphs/enterprisegraphs/getting-started.md @@ -211,7 +211,7 @@ EnterpriseGraphs. To get started, follow the steps outlined below. 6. Click the name or row of the newly created graph to open the Graph Viewer if you want to visually interact with the graph and manage the graph data. -![Create EnterpriseGraph](../../../images/graphs-create-enterprise-graph-dialog312.png) +![Create EnterpriseGraph](../../../../images/graphs-create-enterprise-graph-dialog312.png) ## Create an EnterpriseGraph using *arangosh* diff --git a/site/content/3.12/graphs/enterprisegraphs/management.md b/site/content/arangodb/3.12/graphs/enterprisegraphs/management.md similarity index 100% rename from site/content/3.12/graphs/enterprisegraphs/management.md rename to site/content/arangodb/3.12/graphs/enterprisegraphs/management.md diff --git a/site/content/3.13/graphs/example-graphs.md b/site/content/arangodb/3.12/graphs/example-graphs.md similarity index 94% rename from site/content/3.13/graphs/example-graphs.md rename to site/content/arangodb/3.12/graphs/example-graphs.md index 03434a4bfd..cfc699abad 100644 --- a/site/content/3.13/graphs/example-graphs.md +++ b/site/content/arangodb/3.12/graphs/example-graphs.md @@ -26,7 +26,7 @@ for reference about how to manage graphs programmatically. The `knows` graph is a set of persons knowing each other: -![Persons relation Example Graph](../../images/knows_graph.png) +![Persons relation Example Graph](../../../images/knows_graph.png) The graph consists of a `persons` node collection connected via a `knows` edge collection. @@ -63,7 +63,7 @@ The `traversalGraph` has been designed to demonstrate filters in traversals. It has some labels to filter on it. The graph's nodes are in a collection called `circles`, and it has an edge collection `edges` to connect them. -![Traversal Graph](../../images/traversal_graph.png) +![Traversal Graph](../../../images/traversal_graph.png) Circles have unique numeric labels. Edges have two boolean attributes (`theFalse` always being `false`, `theTruth` always being `true`) and a label @@ -93,7 +93,7 @@ The nodes in the `kShortestPathsGraph` graph are train stations of cities in Europe and North America. The edges represent train connections between them, with the travel time for both directions as edge weight. -![Train Connection Map](../../images/train_map.png) +![Train Connection Map](../../../images/train_map.png) See the [k Shortest Paths page](../aql/graphs/k-shortest-paths.md) for query examples. @@ -118,7 +118,7 @@ The example graph consists of nodes in the `mps_verts` collection and edges in the `mps_edges` collection. It is a simple traversal graph with start node *A* and end node *C*. -![Mps Graph](../../images/mps_graph.png) +![Mps Graph](../../../images/mps_graph.png) With the [Shortest Path](../aql/graphs/shortest-path.md) algorithm, you either get the shortest path *A* - *B* - *C* or *A* - *D* - *C*. With the @@ -146,7 +146,7 @@ The `worldCountry` graph has as node structure as follows: world → continent → country → capital -![World Graph](../../images/world_graph.png) +![World Graph](../../../images/world_graph.png) In some cases, edge directions aren't forward. Therefore, it may get displayed disjunct in the graph viewer. @@ -175,7 +175,7 @@ The `social` graph is a set of persons and their relations. The graph has `female` and `male` persons as nodes in two node collections. The edges are their connections and stored in the `relation` edge collection. -![Social Example Graph](../../images/social_graph.png) +![Social Example Graph](../../../images/social_graph.png) Example of how to create the graph, inspect its nodes and edges, and delete it again: @@ -201,7 +201,7 @@ multiple node collections (`germanCity` and `frenchCity`). The edges are their interconnections in several edge collections (`frenchHighway`, `germanHighway`, `internationalHighway`). -![Cities Example Graph](../../images/cities_graph.png) +![Cities Example Graph](../../../images/cities_graph.png) Example of how to create the graph, inspect its edges and nodes, and delete it again: @@ -227,7 +227,7 @@ A small example graph comprised of `components` (nodes) and `connections` (edges). Good for trying out graph algorithms such as Weakly Connected Components (WCC). -![Three disjoint subgraphs with 36 nodes and edges in total](../../images/connected_components.png) +![Three disjoint subgraphs with 36 nodes and edges in total](../../../images/connected_components.png) ```js --- diff --git a/site/content/3.12/graphs/general-graphs/_index.md b/site/content/arangodb/3.12/graphs/general-graphs/_index.md similarity index 98% rename from site/content/3.12/graphs/general-graphs/_index.md rename to site/content/arangodb/3.12/graphs/general-graphs/_index.md index db1c8ffaf8..26e4c9a7e3 100644 --- a/site/content/3.12/graphs/general-graphs/_index.md +++ b/site/content/arangodb/3.12/graphs/general-graphs/_index.md @@ -57,7 +57,7 @@ General Graphs. To get started, follow the steps outlined below. 8. Click the name or row of the newly created graph to open the Graph Viewer if you want to visually interact with the graph and manage the graph data. -![Create General Graph](../../../images/Create-GeneralGraph312.png) +![Create General Graph](../../../../images/Create-GeneralGraph312.png) ### Create a General Graph using *arangosh* diff --git a/site/content/3.13/graphs/general-graphs/functions.md b/site/content/arangodb/3.12/graphs/general-graphs/functions.md similarity index 99% rename from site/content/3.13/graphs/general-graphs/functions.md rename to site/content/arangodb/3.12/graphs/general-graphs/functions.md index 447a98a765..b7407a5cbc 100644 --- a/site/content/3.13/graphs/general-graphs/functions.md +++ b/site/content/arangodb/3.12/graphs/general-graphs/functions.md @@ -10,7 +10,7 @@ A lot of these accept a node (or edge) example as parameter as defined in the ne Examples explain the API using the [City Graph](../example-graphs.md#city-graph): -![Social Example Graph](../../../images/cities_graph.png) +![Social Example Graph](../../../../images/cities_graph.png) ## Definition of examples diff --git a/site/content/3.12/graphs/general-graphs/management.md b/site/content/arangodb/3.12/graphs/general-graphs/management.md similarity index 100% rename from site/content/3.12/graphs/general-graphs/management.md rename to site/content/arangodb/3.12/graphs/general-graphs/management.md diff --git a/site/content/3.12/graphs/satellitegraphs/_index.md b/site/content/arangodb/3.12/graphs/satellitegraphs/_index.md similarity index 98% rename from site/content/3.12/graphs/satellitegraphs/_index.md rename to site/content/arangodb/3.12/graphs/satellitegraphs/_index.md index bda0c8326e..9c716f43ed 100644 --- a/site/content/3.12/graphs/satellitegraphs/_index.md +++ b/site/content/arangodb/3.12/graphs/satellitegraphs/_index.md @@ -17,7 +17,7 @@ the performance of such queries. They are the natural extension of the [SatelliteCollections](../../develop/satellitecollections.md) concept to graphs. The same benefits and caveats apply. -![ArangoDB SatelliteGraphs](../../../images/SatelliteGraphs.webp) +![ArangoDB SatelliteGraphs](../../../../images/SatelliteGraphs.webp) ## Why use a SatelliteGraph? diff --git a/site/content/3.12/graphs/satellitegraphs/details.md b/site/content/arangodb/3.12/graphs/satellitegraphs/details.md similarity index 100% rename from site/content/3.12/graphs/satellitegraphs/details.md rename to site/content/arangodb/3.12/graphs/satellitegraphs/details.md diff --git a/site/content/3.12/graphs/satellitegraphs/management.md b/site/content/arangodb/3.12/graphs/satellitegraphs/management.md similarity index 100% rename from site/content/3.12/graphs/satellitegraphs/management.md rename to site/content/arangodb/3.12/graphs/satellitegraphs/management.md diff --git a/site/content/3.13/graphs/smartgraphs/_index.md b/site/content/arangodb/3.12/graphs/smartgraphs/_index.md similarity index 94% rename from site/content/3.13/graphs/smartgraphs/_index.md rename to site/content/arangodb/3.12/graphs/smartgraphs/_index.md index 3da62055e6..9122893c10 100644 --- a/site/content/3.13/graphs/smartgraphs/_index.md +++ b/site/content/arangodb/3.12/graphs/smartgraphs/_index.md @@ -59,7 +59,7 @@ cluster for both scenarios. Let's take a closer look at it. The natural distribution of data for graphs that handle large datasets involves a series of highly interconnected nodes with many edges running between them. -![Random data distribution](../../../images/SmartGraphs_random_distribution.png) +![Random data distribution](../../../../images/SmartGraphs_random_distribution.png) _The orange line indicates an example graph traversal. Notice how it touches nodes on every server._ @@ -85,7 +85,7 @@ connecting nodes with identical `smartGraphAttribute` values are stored on this machine as well. Sharding with this attribute means that the relevant data is now co-located on servers, whenever possible. -![SmartGraphs data distribution](../../../images/SmartGraphs_distribution.png) +![SmartGraphs data distribution](../../../../images/SmartGraphs_distribution.png) _The outcome of moving the data like this is that you retain the scalability as well as the performance of graph traversals in ArangoDB._ @@ -102,7 +102,7 @@ and path search queries can partially be executed locally on each DB-Server. This means a larger part of the query can be executed fully local whenever data from the SatelliteCollections is required. -![SmartGraphs with SatelliteCollections](../../../images/SmartGraphs-using-SatelliteCollections.png) +![SmartGraphs with SatelliteCollections](../../../../images/SmartGraphs-using-SatelliteCollections.png) ## Disjoint SmartGraphs @@ -111,7 +111,7 @@ large forest of graphs, when you have clearly separated subgraphs in your graph dataset. Disjoint SmartGraphs enable the automatic sharding of these subgraphs and prohibit edges connecting them. -![Disjoint SmartGraphs](../../../images/SmartGraphs-Disjoint.png) +![Disjoint SmartGraphs](../../../../images/SmartGraphs-Disjoint.png) _This ensures that graph traversals, shortest path, and k-shortest-paths queries can be executed locally on a DB-Server, achieving improved performance for diff --git a/site/content/3.13/graphs/smartgraphs/getting-started.md b/site/content/arangodb/3.12/graphs/smartgraphs/getting-started.md similarity index 99% rename from site/content/3.13/graphs/smartgraphs/getting-started.md rename to site/content/arangodb/3.12/graphs/smartgraphs/getting-started.md index 6a52edf103..ecf3605146 100644 --- a/site/content/3.13/graphs/smartgraphs/getting-started.md +++ b/site/content/arangodb/3.12/graphs/smartgraphs/getting-started.md @@ -63,7 +63,7 @@ SmartGraphs. To get started, follow the steps outlined below. 7. Click the name or row of the newly created graph to open the Graph Viewer if you want to visually interact with the graph and manage the graph data. -![Create SmartGraph](../../../images/Create-SmartGraph312.png) +![Create SmartGraph](../../../../images/Create-SmartGraph312.png) ## Create a SmartGraph using *arangosh* diff --git a/site/content/3.12/graphs/smartgraphs/management.md b/site/content/arangodb/3.12/graphs/smartgraphs/management.md similarity index 100% rename from site/content/3.12/graphs/smartgraphs/management.md rename to site/content/arangodb/3.12/graphs/smartgraphs/management.md diff --git a/site/content/3.12/graphs/smartgraphs/testing-graphs-on-single-server.md b/site/content/arangodb/3.12/graphs/smartgraphs/testing-graphs-on-single-server.md similarity index 100% rename from site/content/3.12/graphs/smartgraphs/testing-graphs-on-single-server.md rename to site/content/arangodb/3.12/graphs/smartgraphs/testing-graphs-on-single-server.md diff --git a/site/content/3.12/graphs/working-with-edges.md b/site/content/arangodb/3.12/graphs/working-with-edges.md similarity index 100% rename from site/content/3.12/graphs/working-with-edges.md rename to site/content/arangodb/3.12/graphs/working-with-edges.md diff --git a/site/content/3.12/index-and-search/_index.md b/site/content/arangodb/3.12/index-and-search/_index.md similarity index 100% rename from site/content/3.12/index-and-search/_index.md rename to site/content/arangodb/3.12/index-and-search/_index.md diff --git a/site/content/3.12/index-and-search/analyzers.md b/site/content/arangodb/3.12/index-and-search/analyzers.md similarity index 100% rename from site/content/3.12/index-and-search/analyzers.md rename to site/content/arangodb/3.12/index-and-search/analyzers.md diff --git a/site/content/3.12/index-and-search/arangosearch/_index.md b/site/content/arangodb/3.12/index-and-search/arangosearch/_index.md similarity index 99% rename from site/content/3.12/index-and-search/arangosearch/_index.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/_index.md index 1ed9427ec8..cafe475c19 100644 --- a/site/content/3.12/index-and-search/arangosearch/_index.md +++ b/site/content/arangodb/3.12/index-and-search/arangosearch/_index.md @@ -65,7 +65,7 @@ Search results can be sorted by their similarity ranking to return the best matches first using popular scoring algorithms (Okapi BM25, TF-IDF), user-defined relevance boosting and dynamic score calculation. -![Conceptual model of ArangoSearch interacting with Collections and Analyzers](../../../images/arangosearch.png) +![Conceptual model of ArangoSearch interacting with Collections and Analyzers](../../../../images/arangosearch.png) Views can be managed in the web interface, via an [HTTP API](../../develop/http-api/views/_index.md) and through a [JavaScript API](../../develop/javascript-api/@arangodb/db-object.md#views). diff --git a/site/content/3.13/index-and-search/arangosearch/arangosearch-views-reference.md b/site/content/arangodb/3.12/index-and-search/arangosearch/arangosearch-views-reference.md similarity index 99% rename from site/content/3.13/index-and-search/arangosearch/arangosearch-views-reference.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/arangosearch-views-reference.md index cf7c21cdba..758d758003 100644 --- a/site/content/3.13/index-and-search/arangosearch/arangosearch-views-reference.md +++ b/site/content/arangodb/3.12/index-and-search/arangosearch/arangosearch-views-reference.md @@ -58,7 +58,7 @@ To get started, follow the steps outlined below. turn off this limit for any writer. 8. Click **Create**. -![Create new arangosearch View](../../../images/arangosearch-create-new-view.png) +![Create new arangosearch View](../../../../images/arangosearch-create-new-view.png) ## Create `arangosearch` Views using the JavaScript API diff --git a/site/content/3.12/index-and-search/arangosearch/case-sensitivity-and-diacritics.md b/site/content/arangodb/3.12/index-and-search/arangosearch/case-sensitivity-and-diacritics.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/case-sensitivity-and-diacritics.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/case-sensitivity-and-diacritics.md diff --git a/site/content/3.12/index-and-search/arangosearch/exact-value-matching.md b/site/content/arangodb/3.12/index-and-search/arangosearch/exact-value-matching.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/exact-value-matching.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/exact-value-matching.md diff --git a/site/content/3.12/index-and-search/arangosearch/example-datasets.md b/site/content/arangodb/3.12/index-and-search/arangosearch/example-datasets.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/example-datasets.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/example-datasets.md diff --git a/site/content/3.12/index-and-search/arangosearch/faceted-search.md b/site/content/arangodb/3.12/index-and-search/arangosearch/faceted-search.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/faceted-search.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/faceted-search.md diff --git a/site/content/3.12/index-and-search/arangosearch/full-text-token-search.md b/site/content/arangodb/3.12/index-and-search/arangosearch/full-text-token-search.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/full-text-token-search.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/full-text-token-search.md diff --git a/site/content/3.12/index-and-search/arangosearch/fuzzy-search.md b/site/content/arangodb/3.12/index-and-search/arangosearch/fuzzy-search.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/fuzzy-search.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/fuzzy-search.md diff --git a/site/content/3.13/index-and-search/arangosearch/geospatial-search.md b/site/content/arangodb/3.12/index-and-search/arangosearch/geospatial-search.md similarity index 99% rename from site/content/3.13/index-and-search/arangosearch/geospatial-search.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/geospatial-search.md index 37bfad4fc3..7f33e7c73c 100644 --- a/site/content/3.13/index-and-search/arangosearch/geospatial-search.md +++ b/site/content/arangodb/3.12/index-and-search/arangosearch/geospatial-search.md @@ -297,7 +297,7 @@ FOR result IN PUSH( {{< /tabs >}} -![ArangoSearch geospatial query for points in a polygon](../../../images/arangosearch-geo-points-in-polygon.png) +![ArangoSearch geospatial query for points in a polygon](../../../../images/arangosearch-geo-points-in-polygon.png) You do not have to look up the polygon, you can also provide one inline. It is also not necessary to return the polygon, you can return the matches only: @@ -559,7 +559,7 @@ FOR result IN PUSH( {{< /tabs >}} -![ArangoSearch geosptial query for polygons in a polygon](../../../images/arangosearch-geo-polygons-in-polygon.png) +![ArangoSearch geosptial query for polygons in a polygon](../../../../images/arangosearch-geo-polygons-in-polygon.png) Searching for geo features in a rectangle is something you can use together with an interactive map that the user can select the area of interest with. @@ -629,4 +629,4 @@ FOR result IN PUSH( {{< /tabs >}} -![ArangoSearch geospatial query for polygons intersecting a polygon](../../../images/arangosearch-geo-polygons-intersecting-polygon.png) +![ArangoSearch geospatial query for polygons intersecting a polygon](../../../../images/arangosearch-geo-polygons-intersecting-polygon.png) diff --git a/site/content/3.12/index-and-search/arangosearch/nested-search.md b/site/content/arangodb/3.12/index-and-search/arangosearch/nested-search.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/nested-search.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/nested-search.md diff --git a/site/content/3.12/index-and-search/arangosearch/performance.md b/site/content/arangodb/3.12/index-and-search/arangosearch/performance.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/performance.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/performance.md diff --git a/site/content/3.12/index-and-search/arangosearch/phrase-and-proximity-search.md b/site/content/arangodb/3.12/index-and-search/arangosearch/phrase-and-proximity-search.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/phrase-and-proximity-search.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/phrase-and-proximity-search.md diff --git a/site/content/3.12/index-and-search/arangosearch/prefix-matching.md b/site/content/arangodb/3.12/index-and-search/arangosearch/prefix-matching.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/prefix-matching.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/prefix-matching.md diff --git a/site/content/3.12/index-and-search/arangosearch/range-queries.md b/site/content/arangodb/3.12/index-and-search/arangosearch/range-queries.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/range-queries.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/range-queries.md diff --git a/site/content/3.12/index-and-search/arangosearch/ranking.md b/site/content/arangodb/3.12/index-and-search/arangosearch/ranking.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/ranking.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/ranking.md diff --git a/site/content/3.12/index-and-search/arangosearch/search-alias-views-reference.md b/site/content/arangodb/3.12/index-and-search/arangosearch/search-alias-views-reference.md similarity index 97% rename from site/content/3.12/index-and-search/arangosearch/search-alias-views-reference.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/search-alias-views-reference.md index 3b95bd0c65..96a7a7ac19 100644 --- a/site/content/3.12/index-and-search/arangosearch/search-alias-views-reference.md +++ b/site/content/arangodb/3.12/index-and-search/arangosearch/search-alias-views-reference.md @@ -61,7 +61,7 @@ To get started, follow the steps outlined below. 6. To define multiple indexes, click the **Add index** button. 7. Click **Create**. -![Create new search-alias View](../../../images/arangosearch-create-search-alias-view.png) +![Create new search-alias View](../../../../images/arangosearch-create-search-alias-view.png) ## Create `search-alias` Views using the JavaScript API diff --git a/site/content/3.12/index-and-search/arangosearch/search-highlighting.md b/site/content/arangodb/3.12/index-and-search/arangosearch/search-highlighting.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/search-highlighting.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/search-highlighting.md diff --git a/site/content/3.12/index-and-search/arangosearch/wildcard-search.md b/site/content/arangodb/3.12/index-and-search/arangosearch/wildcard-search.md similarity index 100% rename from site/content/3.12/index-and-search/arangosearch/wildcard-search.md rename to site/content/arangodb/3.12/index-and-search/arangosearch/wildcard-search.md diff --git a/site/content/3.12/index-and-search/indexing/_index.md b/site/content/arangodb/3.12/index-and-search/indexing/_index.md similarity index 100% rename from site/content/3.12/index-and-search/indexing/_index.md rename to site/content/arangodb/3.12/index-and-search/indexing/_index.md diff --git a/site/content/3.12/index-and-search/indexing/basics.md b/site/content/arangodb/3.12/index-and-search/indexing/basics.md similarity index 100% rename from site/content/3.12/index-and-search/indexing/basics.md rename to site/content/arangodb/3.12/index-and-search/indexing/basics.md diff --git a/site/content/3.12/index-and-search/indexing/index-utilization.md b/site/content/arangodb/3.12/index-and-search/indexing/index-utilization.md similarity index 100% rename from site/content/3.12/index-and-search/indexing/index-utilization.md rename to site/content/arangodb/3.12/index-and-search/indexing/index-utilization.md diff --git a/site/content/3.12/index-and-search/indexing/which-index-to-use-when.md b/site/content/arangodb/3.12/index-and-search/indexing/which-index-to-use-when.md similarity index 100% rename from site/content/3.12/index-and-search/indexing/which-index-to-use-when.md rename to site/content/arangodb/3.12/index-and-search/indexing/which-index-to-use-when.md diff --git a/site/content/3.12/index-and-search/indexing/working-with-indexes/_index.md b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/_index.md similarity index 100% rename from site/content/3.12/index-and-search/indexing/working-with-indexes/_index.md rename to site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/_index.md diff --git a/site/content/3.12/index-and-search/indexing/working-with-indexes/fulltext-indexes.md b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/fulltext-indexes.md similarity index 100% rename from site/content/3.12/index-and-search/indexing/working-with-indexes/fulltext-indexes.md rename to site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/fulltext-indexes.md diff --git a/site/content/3.12/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md similarity index 100% rename from site/content/3.12/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md rename to site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md diff --git a/site/content/3.12/index-and-search/indexing/working-with-indexes/inverted-indexes.md b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/inverted-indexes.md similarity index 100% rename from site/content/3.12/index-and-search/indexing/working-with-indexes/inverted-indexes.md rename to site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/inverted-indexes.md diff --git a/site/content/3.12/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md similarity index 100% rename from site/content/3.12/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md rename to site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md diff --git a/site/content/3.12/index-and-search/indexing/working-with-indexes/persistent-indexes.md b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/persistent-indexes.md similarity index 100% rename from site/content/3.12/index-and-search/indexing/working-with-indexes/persistent-indexes.md rename to site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/persistent-indexes.md diff --git a/site/content/3.12/index-and-search/indexing/working-with-indexes/ttl-indexes.md b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/ttl-indexes.md similarity index 100% rename from site/content/3.12/index-and-search/indexing/working-with-indexes/ttl-indexes.md rename to site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/ttl-indexes.md diff --git a/site/content/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md similarity index 99% rename from site/content/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md rename to site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md index 54a2b416a7..a3e1fbf1bb 100644 --- a/site/content/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md +++ b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md @@ -33,7 +33,7 @@ startup option needs to be enabled on the deployment you want to restore to. {{< /warning >}} 1. Enable the experimental vector index feature. -2. Calculate vector embeddings using [ArangoDB's GraphML](../../../../platform/data-science/graphml/_index.md) +2. Calculate vector embeddings using [ArangoDB's GraphML](../../../../../gen-ai/graphml/_index.md) capabilities (available in ArangoGraph) or using external tools. Store each vector as an attribute in the respective document. 3. Create a vector index over this attribute. You need to choose which diff --git a/site/content/3.12/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md similarity index 100% rename from site/content/3.12/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md rename to site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md diff --git a/site/content/3.12/operations/_index.md b/site/content/arangodb/3.12/operations/_index.md similarity index 100% rename from site/content/3.12/operations/_index.md rename to site/content/arangodb/3.12/operations/_index.md diff --git a/site/content/3.12/operations/administration/_index.md b/site/content/arangodb/3.12/operations/administration/_index.md similarity index 100% rename from site/content/3.12/operations/administration/_index.md rename to site/content/arangodb/3.12/operations/administration/_index.md diff --git a/site/content/3.12/operations/administration/arangodb-starter/_index.md b/site/content/arangodb/3.12/operations/administration/arangodb-starter/_index.md similarity index 100% rename from site/content/3.12/operations/administration/arangodb-starter/_index.md rename to site/content/arangodb/3.12/operations/administration/arangodb-starter/_index.md diff --git a/site/content/3.12/operations/administration/arangodb-starter/recovery-procedure.md b/site/content/arangodb/3.12/operations/administration/arangodb-starter/recovery-procedure.md similarity index 100% rename from site/content/3.12/operations/administration/arangodb-starter/recovery-procedure.md rename to site/content/arangodb/3.12/operations/administration/arangodb-starter/recovery-procedure.md diff --git a/site/content/3.12/operations/administration/arangodb-starter/removal-procedure.md b/site/content/arangodb/3.12/operations/administration/arangodb-starter/removal-procedure.md similarity index 100% rename from site/content/3.12/operations/administration/arangodb-starter/removal-procedure.md rename to site/content/arangodb/3.12/operations/administration/arangodb-starter/removal-procedure.md diff --git a/site/content/3.12/operations/administration/configuration.md b/site/content/arangodb/3.12/operations/administration/configuration.md similarity index 100% rename from site/content/3.12/operations/administration/configuration.md rename to site/content/arangodb/3.12/operations/administration/configuration.md diff --git a/site/content/3.12/operations/administration/import-and-export.md b/site/content/arangodb/3.12/operations/administration/import-and-export.md similarity index 100% rename from site/content/3.12/operations/administration/import-and-export.md rename to site/content/arangodb/3.12/operations/administration/import-and-export.md diff --git a/site/content/3.12/operations/administration/license-management.md b/site/content/arangodb/3.12/operations/administration/license-management.md similarity index 99% rename from site/content/3.12/operations/administration/license-management.md rename to site/content/arangodb/3.12/operations/administration/license-management.md index c7b8ab61d5..30fc66adf2 100644 --- a/site/content/3.12/operations/administration/license-management.md +++ b/site/content/arangodb/3.12/operations/administration/license-management.md @@ -7,7 +7,7 @@ description: >- --- The Enterprise Edition of ArangoDB requires a license so that you can use ArangoDB for commercial purposes and have a dataset size over 100 GiB. See -[ArangoDB Editions](../../about-arangodb/features/_index.md#arangodb-editions) +[ArangoDB Editions](../../about/features/_index.md#arangodb-editions) for details. How to set a license key and to retrieve information about the current license diff --git a/site/content/3.12/operations/administration/log-levels.md b/site/content/arangodb/3.12/operations/administration/log-levels.md similarity index 100% rename from site/content/3.12/operations/administration/log-levels.md rename to site/content/arangodb/3.12/operations/administration/log-levels.md diff --git a/site/content/3.13/operations/administration/reduce-memory-footprint.md b/site/content/arangodb/3.12/operations/administration/reduce-memory-footprint.md similarity index 99% rename from site/content/3.13/operations/administration/reduce-memory-footprint.md rename to site/content/arangodb/3.12/operations/administration/reduce-memory-footprint.md index 4bd19f5572..d0d29b77a7 100644 --- a/site/content/3.13/operations/administration/reduce-memory-footprint.md +++ b/site/content/arangodb/3.12/operations/administration/reduce-memory-footprint.md @@ -701,7 +701,7 @@ otherwise. ## Testing the Effects of Reduced I/O Buffers -![Performance Graph](../../../images/performance_graph.png) +![Performance Graph](../../../../images/performance_graph.png) - 15:50 – Start bigger import - 16:00 – Start writing documents of ~60 KB size one at a time diff --git a/site/content/3.12/operations/administration/telemetrics.md b/site/content/arangodb/3.12/operations/administration/telemetrics.md similarity index 100% rename from site/content/3.12/operations/administration/telemetrics.md rename to site/content/arangodb/3.12/operations/administration/telemetrics.md diff --git a/site/content/3.12/operations/administration/user-management/_index.md b/site/content/arangodb/3.12/operations/administration/user-management/_index.md similarity index 100% rename from site/content/3.12/operations/administration/user-management/_index.md rename to site/content/arangodb/3.12/operations/administration/user-management/_index.md diff --git a/site/content/3.12/operations/administration/user-management/in-arangosh.md b/site/content/arangodb/3.12/operations/administration/user-management/in-arangosh.md similarity index 100% rename from site/content/3.12/operations/administration/user-management/in-arangosh.md rename to site/content/arangodb/3.12/operations/administration/user-management/in-arangosh.md diff --git a/site/content/3.12/operations/backup-and-restore.md b/site/content/arangodb/3.12/operations/backup-and-restore.md similarity index 100% rename from site/content/3.12/operations/backup-and-restore.md rename to site/content/arangodb/3.12/operations/backup-and-restore.md diff --git a/site/content/3.12/operations/installation/_index.md b/site/content/arangodb/3.12/operations/installation/_index.md similarity index 97% rename from site/content/3.12/operations/installation/_index.md rename to site/content/arangodb/3.12/operations/installation/_index.md index 3d225b8ada..eeaf51934f 100644 --- a/site/content/3.12/operations/installation/_index.md +++ b/site/content/arangodb/3.12/operations/installation/_index.md @@ -56,7 +56,7 @@ The official Linux release executables of ArangoDB require the operating system to use a page size of **4096 bytes** or less. {{< tip >}} -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) is a fully-managed service and requires no installation. It's the easiest way to run ArangoDB in the cloud. {{< /tip >}} diff --git a/site/content/3.12/operations/installation/docker.md b/site/content/arangodb/3.12/operations/installation/docker.md similarity index 100% rename from site/content/3.12/operations/installation/docker.md rename to site/content/arangodb/3.12/operations/installation/docker.md diff --git a/site/content/3.12/operations/installation/linux/_index.md b/site/content/arangodb/3.12/operations/installation/linux/_index.md similarity index 100% rename from site/content/3.12/operations/installation/linux/_index.md rename to site/content/arangodb/3.12/operations/installation/linux/_index.md diff --git a/site/content/3.12/operations/installation/linux/linux-os-tuning-script-examples.md b/site/content/arangodb/3.12/operations/installation/linux/linux-os-tuning-script-examples.md similarity index 100% rename from site/content/3.12/operations/installation/linux/linux-os-tuning-script-examples.md rename to site/content/arangodb/3.12/operations/installation/linux/linux-os-tuning-script-examples.md diff --git a/site/content/3.12/operations/installation/linux/operating-system-configuration.md b/site/content/arangodb/3.12/operations/installation/linux/operating-system-configuration.md similarity index 100% rename from site/content/3.12/operations/installation/linux/operating-system-configuration.md rename to site/content/arangodb/3.12/operations/installation/linux/operating-system-configuration.md diff --git a/site/content/3.12/operations/installation/uninstallation.md b/site/content/arangodb/3.12/operations/installation/uninstallation.md similarity index 100% rename from site/content/3.12/operations/installation/uninstallation.md rename to site/content/arangodb/3.12/operations/installation/uninstallation.md diff --git a/site/content/3.12/operations/security/_index.md b/site/content/arangodb/3.12/operations/security/_index.md similarity index 100% rename from site/content/3.12/operations/security/_index.md rename to site/content/arangodb/3.12/operations/security/_index.md diff --git a/site/content/3.12/operations/security/audit-logging.md b/site/content/arangodb/3.12/operations/security/audit-logging.md similarity index 98% rename from site/content/3.12/operations/security/audit-logging.md rename to site/content/arangodb/3.12/operations/security/audit-logging.md index cf18c9abf3..99732fa739 100644 --- a/site/content/3.12/operations/security/audit-logging.md +++ b/site/content/arangodb/3.12/operations/security/audit-logging.md @@ -11,7 +11,7 @@ pageToc: --- {{< tip >}} A similar feature is also available in the -[ArangoGraph Insights Platform](../../arangograph/security-and-access-control/_index.md#using-an-audit-log). +[Arango Managed Platform (AMP)](../../../../amp/security-and-access-control/_index.md#using-an-audit-log). {{< /tip >}} ## Configuration diff --git a/site/content/3.12/operations/security/change-root-password.md b/site/content/arangodb/3.12/operations/security/change-root-password.md similarity index 100% rename from site/content/3.12/operations/security/change-root-password.md rename to site/content/arangodb/3.12/operations/security/change-root-password.md diff --git a/site/content/3.13/operations/security/encryption-at-rest.md b/site/content/arangodb/3.12/operations/security/encryption-at-rest.md similarity index 97% rename from site/content/3.13/operations/security/encryption-at-rest.md rename to site/content/arangodb/3.12/operations/security/encryption-at-rest.md index d292695e48..e7af703377 100644 --- a/site/content/3.13/operations/security/encryption-at-rest.md +++ b/site/content/arangodb/3.12/operations/security/encryption-at-rest.md @@ -28,9 +28,9 @@ performance and resistance to side-channel attacks. The encryption feature is supported by all ArangoDB deployment modes. {{< info >}} -The ArangoGraph Insights Platform has encryption at rest as well as in transit +The Arango Managed Platform (AMP) has encryption at rest as well as in transit set on by default and cannot be disabled. For more information, see the -[ArangoGraph documentation](../../arangograph/_index.md). +[ArangoGraph documentation](../../../../amp/_index.md). {{< /info >}} ## Limitations diff --git a/site/content/3.12/operations/security/securing-starter-deployments.md b/site/content/arangodb/3.12/operations/security/securing-starter-deployments.md similarity index 100% rename from site/content/3.12/operations/security/securing-starter-deployments.md rename to site/content/arangodb/3.12/operations/security/securing-starter-deployments.md diff --git a/site/content/3.12/operations/security/security-options.md b/site/content/arangodb/3.12/operations/security/security-options.md similarity index 100% rename from site/content/3.12/operations/security/security-options.md rename to site/content/arangodb/3.12/operations/security/security-options.md diff --git a/site/content/3.12/operations/troubleshooting/_index.md b/site/content/arangodb/3.12/operations/troubleshooting/_index.md similarity index 100% rename from site/content/3.12/operations/troubleshooting/_index.md rename to site/content/arangodb/3.12/operations/troubleshooting/_index.md diff --git a/site/content/3.12/operations/troubleshooting/arangod.md b/site/content/arangodb/3.12/operations/troubleshooting/arangod.md similarity index 100% rename from site/content/3.12/operations/troubleshooting/arangod.md rename to site/content/arangodb/3.12/operations/troubleshooting/arangod.md diff --git a/site/content/3.12/operations/troubleshooting/cluster/_index.md b/site/content/arangodb/3.12/operations/troubleshooting/cluster/_index.md similarity index 100% rename from site/content/3.12/operations/troubleshooting/cluster/_index.md rename to site/content/arangodb/3.12/operations/troubleshooting/cluster/_index.md diff --git a/site/content/3.12/operations/troubleshooting/cluster/agency-dump.md b/site/content/arangodb/3.12/operations/troubleshooting/cluster/agency-dump.md similarity index 100% rename from site/content/3.12/operations/troubleshooting/cluster/agency-dump.md rename to site/content/arangodb/3.12/operations/troubleshooting/cluster/agency-dump.md diff --git a/site/content/3.12/operations/troubleshooting/emergency-console.md b/site/content/arangodb/3.12/operations/troubleshooting/emergency-console.md similarity index 100% rename from site/content/3.12/operations/troubleshooting/emergency-console.md rename to site/content/arangodb/3.12/operations/troubleshooting/emergency-console.md diff --git a/site/content/3.12/operations/troubleshooting/query-debug-packages.md b/site/content/arangodb/3.12/operations/troubleshooting/query-debug-packages.md similarity index 100% rename from site/content/3.12/operations/troubleshooting/query-debug-packages.md rename to site/content/arangodb/3.12/operations/troubleshooting/query-debug-packages.md diff --git a/site/content/3.12/operations/upgrading/_index.md b/site/content/arangodb/3.12/operations/upgrading/_index.md similarity index 100% rename from site/content/3.12/operations/upgrading/_index.md rename to site/content/arangodb/3.12/operations/upgrading/_index.md diff --git a/site/content/3.12/operations/upgrading/community-to-enterprise-upgrade.md b/site/content/arangodb/3.12/operations/upgrading/community-to-enterprise-upgrade.md similarity index 97% rename from site/content/3.12/operations/upgrading/community-to-enterprise-upgrade.md rename to site/content/arangodb/3.12/operations/upgrading/community-to-enterprise-upgrade.md index 919e38c63e..bce4a011da 100644 --- a/site/content/3.12/operations/upgrading/community-to-enterprise-upgrade.md +++ b/site/content/arangodb/3.12/operations/upgrading/community-to-enterprise-upgrade.md @@ -7,7 +7,7 @@ description: '' {{< info >}} From version 3.12.5 onward, the prepackaged binaries and official Docker images of the Community Edition include all features of the Enterprise Edition. -See [ArangoDB Editions](../../about-arangodb/features/_index.md#arangodb-editions) +See [ArangoDB Editions](../../about/features/_index.md#arangodb-editions) for details. To upgrade a deployment created with v3.12.5 or later from the Community Edition diff --git a/site/content/3.12/operations/upgrading/downgrading.md b/site/content/arangodb/3.12/operations/upgrading/downgrading.md similarity index 100% rename from site/content/3.12/operations/upgrading/downgrading.md rename to site/content/arangodb/3.12/operations/upgrading/downgrading.md diff --git a/site/content/3.12/operations/upgrading/manual-deployments/_index.md b/site/content/arangodb/3.12/operations/upgrading/manual-deployments/_index.md similarity index 100% rename from site/content/3.12/operations/upgrading/manual-deployments/_index.md rename to site/content/arangodb/3.12/operations/upgrading/manual-deployments/_index.md diff --git a/site/content/3.12/operations/upgrading/manual-deployments/cluster.md b/site/content/arangodb/3.12/operations/upgrading/manual-deployments/cluster.md similarity index 100% rename from site/content/3.12/operations/upgrading/manual-deployments/cluster.md rename to site/content/arangodb/3.12/operations/upgrading/manual-deployments/cluster.md diff --git a/site/content/3.12/operations/upgrading/manual-deployments/single-server.md b/site/content/arangodb/3.12/operations/upgrading/manual-deployments/single-server.md similarity index 100% rename from site/content/3.12/operations/upgrading/manual-deployments/single-server.md rename to site/content/arangodb/3.12/operations/upgrading/manual-deployments/single-server.md diff --git a/site/content/3.12/operations/upgrading/starter-deployments.md b/site/content/arangodb/3.12/operations/upgrading/starter-deployments.md similarity index 100% rename from site/content/3.12/operations/upgrading/starter-deployments.md rename to site/content/arangodb/3.12/operations/upgrading/starter-deployments.md diff --git a/site/content/3.12/release-notes/_index.md b/site/content/arangodb/3.12/release-notes/_index.md similarity index 100% rename from site/content/3.12/release-notes/_index.md rename to site/content/arangodb/3.12/release-notes/_index.md diff --git a/site/content/3.12/release-notes/deprecated-and-removed-features.md b/site/content/arangodb/3.12/release-notes/deprecated-and-removed-features.md similarity index 100% rename from site/content/3.12/release-notes/deprecated-and-removed-features.md rename to site/content/arangodb/3.12/release-notes/deprecated-and-removed-features.md diff --git a/site/content/3.12/release-notes/version-3.0/_index.md b/site/content/arangodb/3.12/release-notes/version-3.0/_index.md similarity index 100% rename from site/content/3.12/release-notes/version-3.0/_index.md rename to site/content/arangodb/3.12/release-notes/version-3.0/_index.md diff --git a/site/content/3.12/release-notes/version-3.0/incompatible-changes-in-3-0.md b/site/content/arangodb/3.12/release-notes/version-3.0/incompatible-changes-in-3-0.md similarity index 100% rename from site/content/3.12/release-notes/version-3.0/incompatible-changes-in-3-0.md rename to site/content/arangodb/3.12/release-notes/version-3.0/incompatible-changes-in-3-0.md diff --git a/site/content/3.12/release-notes/version-3.0/whats-new-in-3-0.md b/site/content/arangodb/3.12/release-notes/version-3.0/whats-new-in-3-0.md similarity index 100% rename from site/content/3.12/release-notes/version-3.0/whats-new-in-3-0.md rename to site/content/arangodb/3.12/release-notes/version-3.0/whats-new-in-3-0.md diff --git a/site/content/3.12/release-notes/version-3.1/_index.md b/site/content/arangodb/3.12/release-notes/version-3.1/_index.md similarity index 100% rename from site/content/3.12/release-notes/version-3.1/_index.md rename to site/content/arangodb/3.12/release-notes/version-3.1/_index.md diff --git a/site/content/3.12/release-notes/version-3.1/incompatible-changes-in-3-1.md b/site/content/arangodb/3.12/release-notes/version-3.1/incompatible-changes-in-3-1.md similarity index 100% rename from site/content/3.12/release-notes/version-3.1/incompatible-changes-in-3-1.md rename to site/content/arangodb/3.12/release-notes/version-3.1/incompatible-changes-in-3-1.md diff --git a/site/content/3.12/release-notes/version-3.1/whats-new-in-3-1.md b/site/content/arangodb/3.12/release-notes/version-3.1/whats-new-in-3-1.md similarity index 100% rename from site/content/3.12/release-notes/version-3.1/whats-new-in-3-1.md rename to site/content/arangodb/3.12/release-notes/version-3.1/whats-new-in-3-1.md diff --git a/site/content/3.12/release-notes/version-3.10/_index.md b/site/content/arangodb/3.12/release-notes/version-3.10/_index.md similarity index 100% rename from site/content/3.12/release-notes/version-3.10/_index.md rename to site/content/arangodb/3.12/release-notes/version-3.10/_index.md diff --git a/site/content/3.12/release-notes/version-3.10/api-changes-in-3-10.md b/site/content/arangodb/3.12/release-notes/version-3.10/api-changes-in-3-10.md similarity index 100% rename from site/content/3.12/release-notes/version-3.10/api-changes-in-3-10.md rename to site/content/arangodb/3.12/release-notes/version-3.10/api-changes-in-3-10.md diff --git a/site/content/3.12/release-notes/version-3.10/incompatible-changes-in-3-10.md b/site/content/arangodb/3.12/release-notes/version-3.10/incompatible-changes-in-3-10.md similarity index 100% rename from site/content/3.12/release-notes/version-3.10/incompatible-changes-in-3-10.md rename to site/content/arangodb/3.12/release-notes/version-3.10/incompatible-changes-in-3-10.md diff --git a/site/content/3.12/release-notes/version-3.10/known-issues-in-3-10.md b/site/content/arangodb/3.12/release-notes/version-3.10/known-issues-in-3-10.md similarity index 100% rename from site/content/3.12/release-notes/version-3.10/known-issues-in-3-10.md rename to site/content/arangodb/3.12/release-notes/version-3.10/known-issues-in-3-10.md diff --git a/site/content/3.12/release-notes/version-3.10/whats-new-in-3-10.md b/site/content/arangodb/3.12/release-notes/version-3.10/whats-new-in-3-10.md similarity index 100% rename from site/content/3.12/release-notes/version-3.10/whats-new-in-3-10.md rename to site/content/arangodb/3.12/release-notes/version-3.10/whats-new-in-3-10.md diff --git a/site/content/3.12/release-notes/version-3.11/_index.md b/site/content/arangodb/3.12/release-notes/version-3.11/_index.md similarity index 100% rename from site/content/3.12/release-notes/version-3.11/_index.md rename to site/content/arangodb/3.12/release-notes/version-3.11/_index.md diff --git a/site/content/3.12/release-notes/version-3.11/api-changes-in-3-11.md b/site/content/arangodb/3.12/release-notes/version-3.11/api-changes-in-3-11.md similarity index 100% rename from site/content/3.12/release-notes/version-3.11/api-changes-in-3-11.md rename to site/content/arangodb/3.12/release-notes/version-3.11/api-changes-in-3-11.md diff --git a/site/content/3.12/release-notes/version-3.11/incompatible-changes-in-3-11.md b/site/content/arangodb/3.12/release-notes/version-3.11/incompatible-changes-in-3-11.md similarity index 100% rename from site/content/3.12/release-notes/version-3.11/incompatible-changes-in-3-11.md rename to site/content/arangodb/3.12/release-notes/version-3.11/incompatible-changes-in-3-11.md diff --git a/site/content/3.12/release-notes/version-3.11/known-issues-in-3-11.md b/site/content/arangodb/3.12/release-notes/version-3.11/known-issues-in-3-11.md similarity index 100% rename from site/content/3.12/release-notes/version-3.11/known-issues-in-3-11.md rename to site/content/arangodb/3.12/release-notes/version-3.11/known-issues-in-3-11.md diff --git a/site/content/3.12/release-notes/version-3.11/whats-new-in-3-11.md b/site/content/arangodb/3.12/release-notes/version-3.11/whats-new-in-3-11.md similarity index 99% rename from site/content/3.12/release-notes/version-3.11/whats-new-in-3-11.md rename to site/content/arangodb/3.12/release-notes/version-3.11/whats-new-in-3-11.md index 44ee2b0339..e58d83ff2e 100644 --- a/site/content/3.12/release-notes/version-3.11/whats-new-in-3-11.md +++ b/site/content/arangodb/3.12/release-notes/version-3.11/whats-new-in-3-11.md @@ -127,7 +127,7 @@ vertex. Another quality-of-life improvement is the **Start node** setting listin the graph's vertex collections and the available document keys, that you can also search by. -![New graph viewer](../../../images/graphViewer.png) +![New graph viewer](../../../../images/graphViewer.png) You can still switch to the old graph viewer if desired. diff --git a/site/content/3.12/release-notes/version-3.12/_index.md b/site/content/arangodb/3.12/release-notes/version-3.12/_index.md similarity index 100% rename from site/content/3.12/release-notes/version-3.12/_index.md rename to site/content/arangodb/3.12/release-notes/version-3.12/_index.md diff --git a/site/content/3.12/release-notes/version-3.12/api-changes-in-3-12.md b/site/content/arangodb/3.12/release-notes/version-3.12/api-changes-in-3-12.md similarity index 100% rename from site/content/3.12/release-notes/version-3.12/api-changes-in-3-12.md rename to site/content/arangodb/3.12/release-notes/version-3.12/api-changes-in-3-12.md diff --git a/site/content/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md b/site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md similarity index 100% rename from site/content/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md rename to site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md diff --git a/site/content/3.12/release-notes/version-3.12/known-issues-in-3-12.md b/site/content/arangodb/3.12/release-notes/version-3.12/known-issues-in-3-12.md similarity index 100% rename from site/content/3.12/release-notes/version-3.12/known-issues-in-3-12.md rename to site/content/arangodb/3.12/release-notes/version-3.12/known-issues-in-3-12.md diff --git a/site/content/3.12/release-notes/version-3.12/whats-new-in-3-12.md b/site/content/arangodb/3.12/release-notes/version-3.12/whats-new-in-3-12.md similarity index 100% rename from site/content/3.12/release-notes/version-3.12/whats-new-in-3-12.md rename to site/content/arangodb/3.12/release-notes/version-3.12/whats-new-in-3-12.md diff --git a/site/content/3.12/release-notes/version-3.2/_index.md b/site/content/arangodb/3.12/release-notes/version-3.2/_index.md similarity index 100% rename from site/content/3.12/release-notes/version-3.2/_index.md rename to site/content/arangodb/3.12/release-notes/version-3.2/_index.md diff --git a/site/content/3.12/release-notes/version-3.2/incompatible-changes-in-3-2.md b/site/content/arangodb/3.12/release-notes/version-3.2/incompatible-changes-in-3-2.md similarity index 100% rename from site/content/3.12/release-notes/version-3.2/incompatible-changes-in-3-2.md rename to site/content/arangodb/3.12/release-notes/version-3.2/incompatible-changes-in-3-2.md diff --git a/site/content/3.12/release-notes/version-3.2/known-issues-in-3-2.md b/site/content/arangodb/3.12/release-notes/version-3.2/known-issues-in-3-2.md similarity index 100% rename from site/content/3.12/release-notes/version-3.2/known-issues-in-3-2.md rename to site/content/arangodb/3.12/release-notes/version-3.2/known-issues-in-3-2.md diff --git a/site/content/3.12/release-notes/version-3.2/whats-new-in-3-2.md b/site/content/arangodb/3.12/release-notes/version-3.2/whats-new-in-3-2.md similarity index 100% rename from site/content/3.12/release-notes/version-3.2/whats-new-in-3-2.md rename to site/content/arangodb/3.12/release-notes/version-3.2/whats-new-in-3-2.md diff --git a/site/content/3.12/release-notes/version-3.3/_index.md b/site/content/arangodb/3.12/release-notes/version-3.3/_index.md similarity index 100% rename from site/content/3.12/release-notes/version-3.3/_index.md rename to site/content/arangodb/3.12/release-notes/version-3.3/_index.md diff --git a/site/content/3.12/release-notes/version-3.3/incompatible-changes-in-3-3.md b/site/content/arangodb/3.12/release-notes/version-3.3/incompatible-changes-in-3-3.md similarity index 100% rename from site/content/3.12/release-notes/version-3.3/incompatible-changes-in-3-3.md rename to site/content/arangodb/3.12/release-notes/version-3.3/incompatible-changes-in-3-3.md diff --git a/site/content/3.12/release-notes/version-3.3/known-issues-in-3-3.md b/site/content/arangodb/3.12/release-notes/version-3.3/known-issues-in-3-3.md similarity index 100% rename from site/content/3.12/release-notes/version-3.3/known-issues-in-3-3.md rename to site/content/arangodb/3.12/release-notes/version-3.3/known-issues-in-3-3.md diff --git a/site/content/3.12/release-notes/version-3.3/whats-new-in-3-3.md b/site/content/arangodb/3.12/release-notes/version-3.3/whats-new-in-3-3.md similarity index 100% rename from site/content/3.12/release-notes/version-3.3/whats-new-in-3-3.md rename to site/content/arangodb/3.12/release-notes/version-3.3/whats-new-in-3-3.md diff --git a/site/content/3.12/release-notes/version-3.4/_index.md b/site/content/arangodb/3.12/release-notes/version-3.4/_index.md similarity index 100% rename from site/content/3.12/release-notes/version-3.4/_index.md rename to site/content/arangodb/3.12/release-notes/version-3.4/_index.md diff --git a/site/content/3.12/release-notes/version-3.4/incompatible-changes-in-3-4.md b/site/content/arangodb/3.12/release-notes/version-3.4/incompatible-changes-in-3-4.md similarity index 100% rename from site/content/3.12/release-notes/version-3.4/incompatible-changes-in-3-4.md rename to site/content/arangodb/3.12/release-notes/version-3.4/incompatible-changes-in-3-4.md diff --git a/site/content/3.12/release-notes/version-3.4/known-issues-in-3-4.md b/site/content/arangodb/3.12/release-notes/version-3.4/known-issues-in-3-4.md similarity index 100% rename from site/content/3.12/release-notes/version-3.4/known-issues-in-3-4.md rename to site/content/arangodb/3.12/release-notes/version-3.4/known-issues-in-3-4.md diff --git a/site/content/3.12/release-notes/version-3.4/whats-new-in-3-4.md b/site/content/arangodb/3.12/release-notes/version-3.4/whats-new-in-3-4.md similarity index 100% rename from site/content/3.12/release-notes/version-3.4/whats-new-in-3-4.md rename to site/content/arangodb/3.12/release-notes/version-3.4/whats-new-in-3-4.md diff --git a/site/content/3.12/release-notes/version-3.5/_index.md b/site/content/arangodb/3.12/release-notes/version-3.5/_index.md similarity index 100% rename from site/content/3.12/release-notes/version-3.5/_index.md rename to site/content/arangodb/3.12/release-notes/version-3.5/_index.md diff --git a/site/content/3.12/release-notes/version-3.5/incompatible-changes-in-3-5.md b/site/content/arangodb/3.12/release-notes/version-3.5/incompatible-changes-in-3-5.md similarity index 100% rename from site/content/3.12/release-notes/version-3.5/incompatible-changes-in-3-5.md rename to site/content/arangodb/3.12/release-notes/version-3.5/incompatible-changes-in-3-5.md diff --git a/site/content/3.12/release-notes/version-3.5/known-issues-in-3-5.md b/site/content/arangodb/3.12/release-notes/version-3.5/known-issues-in-3-5.md similarity index 100% rename from site/content/3.12/release-notes/version-3.5/known-issues-in-3-5.md rename to site/content/arangodb/3.12/release-notes/version-3.5/known-issues-in-3-5.md diff --git a/site/content/3.12/release-notes/version-3.5/whats-new-in-3-5.md b/site/content/arangodb/3.12/release-notes/version-3.5/whats-new-in-3-5.md similarity index 100% rename from site/content/3.12/release-notes/version-3.5/whats-new-in-3-5.md rename to site/content/arangodb/3.12/release-notes/version-3.5/whats-new-in-3-5.md diff --git a/site/content/3.12/release-notes/version-3.6/_index.md b/site/content/arangodb/3.12/release-notes/version-3.6/_index.md similarity index 100% rename from site/content/3.12/release-notes/version-3.6/_index.md rename to site/content/arangodb/3.12/release-notes/version-3.6/_index.md diff --git a/site/content/3.12/release-notes/version-3.6/incompatible-changes-in-3-6.md b/site/content/arangodb/3.12/release-notes/version-3.6/incompatible-changes-in-3-6.md similarity index 100% rename from site/content/3.12/release-notes/version-3.6/incompatible-changes-in-3-6.md rename to site/content/arangodb/3.12/release-notes/version-3.6/incompatible-changes-in-3-6.md diff --git a/site/content/3.12/release-notes/version-3.6/known-issues-in-3-6.md b/site/content/arangodb/3.12/release-notes/version-3.6/known-issues-in-3-6.md similarity index 100% rename from site/content/3.12/release-notes/version-3.6/known-issues-in-3-6.md rename to site/content/arangodb/3.12/release-notes/version-3.6/known-issues-in-3-6.md diff --git a/site/content/3.12/release-notes/version-3.6/whats-new-in-3-6.md b/site/content/arangodb/3.12/release-notes/version-3.6/whats-new-in-3-6.md similarity index 100% rename from site/content/3.12/release-notes/version-3.6/whats-new-in-3-6.md rename to site/content/arangodb/3.12/release-notes/version-3.6/whats-new-in-3-6.md diff --git a/site/content/3.12/release-notes/version-3.7/_index.md b/site/content/arangodb/3.12/release-notes/version-3.7/_index.md similarity index 100% rename from site/content/3.12/release-notes/version-3.7/_index.md rename to site/content/arangodb/3.12/release-notes/version-3.7/_index.md diff --git a/site/content/3.12/release-notes/version-3.7/api-changes-in-3-7.md b/site/content/arangodb/3.12/release-notes/version-3.7/api-changes-in-3-7.md similarity index 100% rename from site/content/3.12/release-notes/version-3.7/api-changes-in-3-7.md rename to site/content/arangodb/3.12/release-notes/version-3.7/api-changes-in-3-7.md diff --git a/site/content/3.12/release-notes/version-3.7/incompatible-changes-in-3-7.md b/site/content/arangodb/3.12/release-notes/version-3.7/incompatible-changes-in-3-7.md similarity index 100% rename from site/content/3.12/release-notes/version-3.7/incompatible-changes-in-3-7.md rename to site/content/arangodb/3.12/release-notes/version-3.7/incompatible-changes-in-3-7.md diff --git a/site/content/3.12/release-notes/version-3.7/known-issues-in-3-7.md b/site/content/arangodb/3.12/release-notes/version-3.7/known-issues-in-3-7.md similarity index 100% rename from site/content/3.12/release-notes/version-3.7/known-issues-in-3-7.md rename to site/content/arangodb/3.12/release-notes/version-3.7/known-issues-in-3-7.md diff --git a/site/content/3.12/release-notes/version-3.7/whats-new-in-3-7.md b/site/content/arangodb/3.12/release-notes/version-3.7/whats-new-in-3-7.md similarity index 100% rename from site/content/3.12/release-notes/version-3.7/whats-new-in-3-7.md rename to site/content/arangodb/3.12/release-notes/version-3.7/whats-new-in-3-7.md diff --git a/site/content/3.12/release-notes/version-3.8/_index.md b/site/content/arangodb/3.12/release-notes/version-3.8/_index.md similarity index 100% rename from site/content/3.12/release-notes/version-3.8/_index.md rename to site/content/arangodb/3.12/release-notes/version-3.8/_index.md diff --git a/site/content/3.12/release-notes/version-3.8/api-changes-in-3-8.md b/site/content/arangodb/3.12/release-notes/version-3.8/api-changes-in-3-8.md similarity index 100% rename from site/content/3.12/release-notes/version-3.8/api-changes-in-3-8.md rename to site/content/arangodb/3.12/release-notes/version-3.8/api-changes-in-3-8.md diff --git a/site/content/3.12/release-notes/version-3.8/incompatible-changes-in-3-8.md b/site/content/arangodb/3.12/release-notes/version-3.8/incompatible-changes-in-3-8.md similarity index 100% rename from site/content/3.12/release-notes/version-3.8/incompatible-changes-in-3-8.md rename to site/content/arangodb/3.12/release-notes/version-3.8/incompatible-changes-in-3-8.md diff --git a/site/content/3.12/release-notes/version-3.8/known-issues-in-3-8.md b/site/content/arangodb/3.12/release-notes/version-3.8/known-issues-in-3-8.md similarity index 100% rename from site/content/3.12/release-notes/version-3.8/known-issues-in-3-8.md rename to site/content/arangodb/3.12/release-notes/version-3.8/known-issues-in-3-8.md diff --git a/site/content/3.12/release-notes/version-3.8/whats-new-in-3-8.md b/site/content/arangodb/3.12/release-notes/version-3.8/whats-new-in-3-8.md similarity index 100% rename from site/content/3.12/release-notes/version-3.8/whats-new-in-3-8.md rename to site/content/arangodb/3.12/release-notes/version-3.8/whats-new-in-3-8.md diff --git a/site/content/3.12/release-notes/version-3.9/_index.md b/site/content/arangodb/3.12/release-notes/version-3.9/_index.md similarity index 100% rename from site/content/3.12/release-notes/version-3.9/_index.md rename to site/content/arangodb/3.12/release-notes/version-3.9/_index.md diff --git a/site/content/3.12/release-notes/version-3.9/api-changes-in-3-9.md b/site/content/arangodb/3.12/release-notes/version-3.9/api-changes-in-3-9.md similarity index 100% rename from site/content/3.12/release-notes/version-3.9/api-changes-in-3-9.md rename to site/content/arangodb/3.12/release-notes/version-3.9/api-changes-in-3-9.md diff --git a/site/content/3.12/release-notes/version-3.9/incompatible-changes-in-3-9.md b/site/content/arangodb/3.12/release-notes/version-3.9/incompatible-changes-in-3-9.md similarity index 100% rename from site/content/3.12/release-notes/version-3.9/incompatible-changes-in-3-9.md rename to site/content/arangodb/3.12/release-notes/version-3.9/incompatible-changes-in-3-9.md diff --git a/site/content/3.12/release-notes/version-3.9/known-issues-in-3-9.md b/site/content/arangodb/3.12/release-notes/version-3.9/known-issues-in-3-9.md similarity index 100% rename from site/content/3.12/release-notes/version-3.9/known-issues-in-3-9.md rename to site/content/arangodb/3.12/release-notes/version-3.9/known-issues-in-3-9.md diff --git a/site/content/3.12/release-notes/version-3.9/whats-new-in-3-9.md b/site/content/arangodb/3.12/release-notes/version-3.9/whats-new-in-3-9.md similarity index 100% rename from site/content/3.12/release-notes/version-3.9/whats-new-in-3-9.md rename to site/content/arangodb/3.12/release-notes/version-3.9/whats-new-in-3-9.md diff --git a/site/content/3.13/_index.md b/site/content/arangodb/3.13/_index.md similarity index 59% rename from site/content/3.13/_index.md rename to site/content/arangodb/3.13/_index.md index dbc8bb3ea2..43a6197b31 100644 --- a/site/content/3.13/_index.md +++ b/site/content/arangodb/3.13/_index.md @@ -8,7 +8,7 @@ layout: default {{< cards >}} -{{% card title="What is ArangoDB?" link="about-arangodb/" %}} +{{% card title="What is ArangoDB?" link="about/" %}} Get to know graphs, ArangoDB's use cases and features. {{% /card %}} @@ -17,24 +17,11 @@ Learn about ArangoDB's core concepts, how to interact with the database system, and get a server instance up and running. {{% /card %}} -{{% card title="ArangoGraph Insights Platform" link="arangograph/" %}} -Try out ArangoDB's fully-managed cloud offering for a faster time to value. -{{% /card %}} - {{% card title="AQL" link="aql/" %}} ArangoDB's Query Language AQL lets you use graphs, JSON documents, and search via a single, composable query language. {{% /card %}} -{{% card title="GenAI & Data Science" link="data-science/" %}} -Discover the graph-powered machine learning and GraphRAG features of ArangoDB. -{{% /card %}} - -{{% card title="ArangoDB Platform" link="components/platform/" %}} -The ArangoDB Platform is the umbrella for hosting the entire ArangoDB offering -of products, including GraphML and GraphRAG. -{{% /card %}} - {{% card title="Deploy" link="deploy/" %}} Find the right deployment mode and set up your ArangoDB instance. {{% /card %}} diff --git a/site/content/3.13/about-arangodb/_index.md b/site/content/arangodb/3.13/about/_index.md similarity index 82% rename from site/content/3.13/about-arangodb/_index.md rename to site/content/arangodb/3.13/about/_index.md index ea7094cbb1..b47cbeb22f 100644 --- a/site/content/3.13/about-arangodb/_index.md +++ b/site/content/arangodb/3.13/about/_index.md @@ -9,7 +9,7 @@ aliases: - introduction - introduction/about-arangodb --- -![ArangoDB Overview Diagram](../../images/arangodb-overview-diagram.png) +![ArangoDB Overview Diagram](../../../../images/arangodb-overview-diagram.png) ArangoDB combines the analytical power of native graphs with an integrated search engine, JSON support, and a variety of data access patterns via a single, @@ -17,25 +17,25 @@ composable query language. ArangoDB is available in a community and a commercial [edition](features/_index.md). You can use it for on-premises deployments, as well as a fully managed -cloud service, the [ArangoGraph Insights Platform](../arangograph/_index.md). +cloud service, the [Arango Managed Platform (AMP)](../../../amp/_index.md). ## What are Graphs? Graphs are information networks composed of nodes and edges. -![An arrow labeled as "Edge" pointing from one circle to another, both labeled "Node"](../../images/data-model-graph-relation-abstract-edge.png) +![An arrow labeled as "Edge" pointing from one circle to another, both labeled "Node"](../../../../images/data-model-graph-relation-abstract-edge.png) A social network is a common example of a graph. People are represented by nodes and their friendships by relations. -![Two circles labeled "Mary" and "John", with an arrow labeled "isFriendOf" pointing from "Mary" to "John"](../../images/data-model-graph-relation-concrete.png) +![Two circles labeled "Mary" and "John", with an arrow labeled "isFriendOf" pointing from "Mary" to "John"](../../../../images/data-model-graph-relation-concrete.png) Nodes are also called vertices (singular: vertex), and edges are relations that connect nodes. A node typically represents a specific entity (a person, a book, a sensor reading, etc.) and an edge defines how one entity relates to another. -![Three circles labeled "Mary", "Book", and "John", with an arrow labeled "bought" from "Mary" to "Book" and an arrow labeled "isFriendOf" from "Mary" to "John"](../../images/data-model-graph-relations.png) +![Three circles labeled "Mary", "Book", and "John", with an arrow labeled "bought" from "Mary" to "Book" and an arrow labeled "isFriendOf" from "Mary" to "John"](../../../../images/data-model-graph-relations.png) This paradigm of storing data feels natural because it closely matches the cognitive model of humans. It is an expressive data model that allows you to @@ -48,7 +48,7 @@ Not everything is a graph use case. ArangoDB lets you equally work with structured, semi-structured, and unstructured data in the form of schema-free JSON objects, without having to connect these objects to form a graph. -![Person Mary, Book ArangoDB](../../images/data-model-document.png) +![Person Mary, Book ArangoDB](../../../../images/data-model-document.png) Depending on your needs, you may mix graphs and unconnected data. ArangoDB is designed from the ground up to support multiple data models with a diff --git a/site/content/3.12/about-arangodb/features/_index.md b/site/content/arangodb/3.13/about/features/_index.md similarity index 94% rename from site/content/3.12/about-arangodb/features/_index.md rename to site/content/arangodb/3.13/about/features/_index.md index b1b00f00c5..674e603252 100644 --- a/site/content/3.12/about-arangodb/features/_index.md +++ b/site/content/arangodb/3.13/about/features/_index.md @@ -19,18 +19,18 @@ aliases: - Enhanced data security with on-disk and backup encryption, key rotation, audit logging, and incremental backups without downtime -See the full [Feature list of the ArangoDB core database system](core.md). +See the full [Feature list of the ArangoDB database system](list.md). For a scalable architecture based on Kubernetes that supports the full offering of ArangoDB including graph-powered machine learning and GenAI features, see -the [Feature list of the ArangoDB Platform](platform.md). +the [Feature list of the ArangoDB Platform](../../../../data-platform/about/features.md). ## On-premises versus Cloud ### Fully managed cloud service The fully managed multi-cloud -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) is the easiest and fastest way to get started. It lets you deploy clusters with just a few clicks, and is operated by a dedicated team of ArangoDB engineers day and night. You can choose from a @@ -43,7 +43,7 @@ variety of support plans to meet your needs. - Highly secure with encryption at transit and at rest - Includes elastic scalability for all deployment models (OneShard and Sharded clusters) -To learn more, go to the [ArangoGraph documentation](../../arangograph/_index.md). +To learn more, go to the [ArangoGraph documentation](../../../../amp/_index.md). ### Self-managed in the cloud diff --git a/site/content/3.13/about-arangodb/features/highlights-by-version.md b/site/content/arangodb/3.13/about/features/highlights-by-version.md similarity index 100% rename from site/content/3.13/about-arangodb/features/highlights-by-version.md rename to site/content/arangodb/3.13/about/features/highlights-by-version.md diff --git a/site/content/3.13/about-arangodb/features/core.md b/site/content/arangodb/3.13/about/features/list.md similarity index 100% rename from site/content/3.13/about-arangodb/features/core.md rename to site/content/arangodb/3.13/about/features/list.md diff --git a/site/content/3.12/about-arangodb/use-cases.md b/site/content/arangodb/3.13/about/use-cases.md similarity index 77% rename from site/content/3.12/about-arangodb/use-cases.md rename to site/content/arangodb/3.13/about/use-cases.md index fab9e86a90..0128025595 100644 --- a/site/content/3.12/about-arangodb/use-cases.md +++ b/site/content/arangodb/3.13/about/use-cases.md @@ -19,7 +19,7 @@ more. ### Fraud Detection -{{< image src="../../images/icon-fraud-detection.png" alt="Fraud Detection icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-fraud-detection.png" alt="Fraud Detection icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Uncover illegal activities by discovering difficult-to-detect patterns. ArangoDB lets you look beyond individual data points in disparate data sources, @@ -29,7 +29,7 @@ complex fraudulent behavior such as fraud rings. ### Recommendation Engine -{{< image src="../../images/icon-recommendation-engine.png" alt="Recommendation Engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-recommendation-engine.png" alt="Recommendation Engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Suggest products, services, and information to users based on data relationships. For example, you can use ArangoDB together with PyTorch Geometric to build a @@ -39,7 +39,7 @@ with a graph neural network (GNN). ### Network Management -{{< image src="../../images/icon-network-management.png" alt="Network Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-network-management.png" alt="Network Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Reduce downtime by connecting and visualizing network, infrastructure, and code. Network devices and how they interconnect can naturally be modeled as a graph. @@ -49,7 +49,7 @@ bandwidth into account when path-finding. ### Customer 360 -{{< image src="../../images/icon-customer-360.png" alt="Customer 360 icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-customer-360.png" alt="Customer 360 icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Gain a complete understanding of your customers by integrating multiple data sources and code. ArangoDB can act as the platform to merge and consolidate @@ -58,7 +58,7 @@ track data origins using graph features. ### Identity and Access Management -{{< image src="../../images/icon-identity-management.png" alt="Identity Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-identity-management.png" alt="Identity Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Increase security and compliance by managing data access based on role and position. You can map out an organization chart as a graph and use ArangoDB to @@ -68,7 +68,7 @@ inheritance. ### Supply Chain -{{< image src="../../images/icon-supply-chain.png" alt="Supply Chain icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-supply-chain.png" alt="Supply Chain icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Speed shipments by monitoring and optimizing the flow of goods through a supply chain. You can represent your inventory, supplier, and delivery @@ -84,7 +84,7 @@ and scalable data store. ### Content Management -{{< image src="../../images/icon-content-management.png" alt="Content management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-content-management.png" alt="Content management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Store information of any kind without upfront schema declaration. ArangoDB is schema-free, storing every data record as a self-contained document, allowing @@ -93,7 +93,7 @@ content management system on top of ArangoDB. ### E-Commerce Systems -{{< image src="../../images/icon-e-commerce.png" alt="E-commerce icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-e-commerce.png" alt="E-commerce icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} ArangoDB combines data modeling freedom with strong consistency and resilience features to power online shops and ordering systems. Handle product catalog data @@ -102,7 +102,7 @@ checkouts with the necessary transactional guarantees. ### Internet of Things -{{< image src="../../images/icon-internet-of-things.png" alt="Internet of things icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-internet-of-things.png" alt="Internet of things icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Collect sensor readings and other IoT data in ArangoDB for a single view of everything. Store all data points in the same system that also lets you run @@ -110,7 +110,7 @@ aggregation queries using sliding windows for efficient data analysis. ## ArangoDB as a Key-Value Database -{{< image src="../../images/icon-key-value.png" alt="Key value icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-key-value.png" alt="Key value icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Key-value stores are the simplest kind of database systems. Each record is stored as a block of data under a key that uniquely identifies the record. @@ -134,7 +134,7 @@ For more information about how ArangoDB persists data, see ## ArangoDB as a Search Engine -{{< image src="../../images/icon-search-engine.png" alt="Search engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../../images/icon-search-engine.png" alt="Search engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} ArangoDB has a natively integrated search engine for a broad range of information retrieval needs. It is powered by inverted indexes and can index @@ -161,4 +161,4 @@ ArangoDB integrates well into existing data infrastructures and provides connectors for popular machine learning frameworks and data processing ecosystems. -![Machine Learning Architecture of ArangoDB](../../images/machine-learning-architecture.png) +![Machine Learning Architecture of ArangoDB](../../../images/machine-learning-architecture.png) diff --git a/site/content/3.13/aql/_index.md b/site/content/arangodb/3.13/aql/_index.md similarity index 96% rename from site/content/3.13/aql/_index.md rename to site/content/arangodb/3.13/aql/_index.md index befe676097..ef7dd67757 100644 --- a/site/content/3.13/aql/_index.md +++ b/site/content/arangodb/3.13/aql/_index.md @@ -6,7 +6,7 @@ description: >- The ArangoDB Query Language (AQL) lets you store, retrieve, and modify data in various ways in ArangoDB --- -- [Link to Platform](../../platform/data-science/_index.md) +- [Link to Platform](../../../data-platform/_index.md) AQL is mainly a declarative language, meaning that a query expresses what result should be achieved but not how it should be achieved. AQL aims to be diff --git a/site/content/3.13/aql/common-errors.md b/site/content/arangodb/3.13/aql/common-errors.md similarity index 100% rename from site/content/3.13/aql/common-errors.md rename to site/content/arangodb/3.13/aql/common-errors.md diff --git a/site/content/3.13/aql/data-queries.md b/site/content/arangodb/3.13/aql/data-queries.md similarity index 100% rename from site/content/3.13/aql/data-queries.md rename to site/content/arangodb/3.13/aql/data-queries.md diff --git a/site/content/3.13/aql/examples-and-query-patterns/_index.md b/site/content/arangodb/3.13/aql/examples-and-query-patterns/_index.md similarity index 100% rename from site/content/3.13/aql/examples-and-query-patterns/_index.md rename to site/content/arangodb/3.13/aql/examples-and-query-patterns/_index.md diff --git a/site/content/3.13/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md b/site/content/arangodb/3.13/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md similarity index 100% rename from site/content/3.13/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md rename to site/content/arangodb/3.13/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md diff --git a/site/content/3.13/aql/examples-and-query-patterns/counting.md b/site/content/arangodb/3.13/aql/examples-and-query-patterns/counting.md similarity index 100% rename from site/content/3.13/aql/examples-and-query-patterns/counting.md rename to site/content/arangodb/3.13/aql/examples-and-query-patterns/counting.md diff --git a/site/content/3.13/aql/examples-and-query-patterns/create-test-data.md b/site/content/arangodb/3.13/aql/examples-and-query-patterns/create-test-data.md similarity index 100% rename from site/content/3.13/aql/examples-and-query-patterns/create-test-data.md rename to site/content/arangodb/3.13/aql/examples-and-query-patterns/create-test-data.md diff --git a/site/content/3.13/aql/examples-and-query-patterns/diffing-two-documents.md b/site/content/arangodb/3.13/aql/examples-and-query-patterns/diffing-two-documents.md similarity index 100% rename from site/content/3.13/aql/examples-and-query-patterns/diffing-two-documents.md rename to site/content/arangodb/3.13/aql/examples-and-query-patterns/diffing-two-documents.md diff --git a/site/content/3.13/aql/examples-and-query-patterns/dynamic-attribute-names.md b/site/content/arangodb/3.13/aql/examples-and-query-patterns/dynamic-attribute-names.md similarity index 100% rename from site/content/3.13/aql/examples-and-query-patterns/dynamic-attribute-names.md rename to site/content/arangodb/3.13/aql/examples-and-query-patterns/dynamic-attribute-names.md diff --git a/site/content/3.13/aql/examples-and-query-patterns/grouping.md b/site/content/arangodb/3.13/aql/examples-and-query-patterns/grouping.md similarity index 100% rename from site/content/3.13/aql/examples-and-query-patterns/grouping.md rename to site/content/arangodb/3.13/aql/examples-and-query-patterns/grouping.md diff --git a/site/content/3.13/aql/examples-and-query-patterns/joins.md b/site/content/arangodb/3.13/aql/examples-and-query-patterns/joins.md similarity index 100% rename from site/content/3.13/aql/examples-and-query-patterns/joins.md rename to site/content/arangodb/3.13/aql/examples-and-query-patterns/joins.md diff --git a/site/content/3.13/aql/examples-and-query-patterns/projections-and-filters.md b/site/content/arangodb/3.13/aql/examples-and-query-patterns/projections-and-filters.md similarity index 100% rename from site/content/3.13/aql/examples-and-query-patterns/projections-and-filters.md rename to site/content/arangodb/3.13/aql/examples-and-query-patterns/projections-and-filters.md diff --git a/site/content/3.13/aql/examples-and-query-patterns/queries-without-collections.md b/site/content/arangodb/3.13/aql/examples-and-query-patterns/queries-without-collections.md similarity index 100% rename from site/content/3.13/aql/examples-and-query-patterns/queries-without-collections.md rename to site/content/arangodb/3.13/aql/examples-and-query-patterns/queries-without-collections.md diff --git a/site/content/3.13/aql/examples-and-query-patterns/remove-nodes.md b/site/content/arangodb/3.13/aql/examples-and-query-patterns/remove-nodes.md similarity index 96% rename from site/content/3.13/aql/examples-and-query-patterns/remove-nodes.md rename to site/content/arangodb/3.13/aql/examples-and-query-patterns/remove-nodes.md index 8e9b0a9f61..a0843817e6 100644 --- a/site/content/3.13/aql/examples-and-query-patterns/remove-nodes.md +++ b/site/content/arangodb/3.13/aql/examples-and-query-patterns/remove-nodes.md @@ -17,7 +17,7 @@ However, as shown in this example based on the [Knows Graph](../../graphs/example-graphs.md#knows-graph), a query for this use case can be created. -![Example Graph](../../../images/knows_graph.png) +![Example Graph](../../../../images/knows_graph.png) When deleting node **eve** from the graph, we also want the edges `eve -> alice` and `eve -> bob` to be removed. @@ -61,7 +61,7 @@ For example, the [City Graph](../../graphs/example-graphs.md#city-graph) contains several node collections - `germanCity` and `frenchCity` and several edge collections - `french / german / international Highway`. -![Example Graph2](../../../images/cities_graph.png) +![Example Graph2](../../../../images/cities_graph.png) To delete city **Berlin** all edge collections `french / german / international Highway` have to be considered. The **REMOVE** operation has to be applied on all edge diff --git a/site/content/3.13/aql/examples-and-query-patterns/traversals.md b/site/content/arangodb/3.13/aql/examples-and-query-patterns/traversals.md similarity index 97% rename from site/content/3.13/aql/examples-and-query-patterns/traversals.md rename to site/content/arangodb/3.13/aql/examples-and-query-patterns/traversals.md index 725885961c..f495de1e4b 100644 --- a/site/content/3.13/aql/examples-and-query-patterns/traversals.md +++ b/site/content/arangodb/3.13/aql/examples-and-query-patterns/traversals.md @@ -10,7 +10,7 @@ description: >- Our first example will locate the start node for a graph traversal via [a geo index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). We use the [City Graph](../../graphs/example-graphs.md#city-graph) and its geo indexes: -![Cities Example Graph](../../../images/cities_graph.png) +![Cities Example Graph](../../../../images/cities_graph.png) ```js --- diff --git a/site/content/3.13/aql/examples-and-query-patterns/upsert-repsert-guide.md b/site/content/arangodb/3.13/aql/examples-and-query-patterns/upsert-repsert-guide.md similarity index 100% rename from site/content/3.13/aql/examples-and-query-patterns/upsert-repsert-guide.md rename to site/content/arangodb/3.13/aql/examples-and-query-patterns/upsert-repsert-guide.md diff --git a/site/content/3.13/aql/execution-and-performance/_index.md b/site/content/arangodb/3.13/aql/execution-and-performance/_index.md similarity index 100% rename from site/content/3.13/aql/execution-and-performance/_index.md rename to site/content/arangodb/3.13/aql/execution-and-performance/_index.md diff --git a/site/content/3.13/aql/execution-and-performance/caching-query-plans.md b/site/content/arangodb/3.13/aql/execution-and-performance/caching-query-plans.md similarity index 100% rename from site/content/3.13/aql/execution-and-performance/caching-query-plans.md rename to site/content/arangodb/3.13/aql/execution-and-performance/caching-query-plans.md diff --git a/site/content/3.13/aql/execution-and-performance/caching-query-results.md b/site/content/arangodb/3.13/aql/execution-and-performance/caching-query-results.md similarity index 100% rename from site/content/3.13/aql/execution-and-performance/caching-query-results.md rename to site/content/arangodb/3.13/aql/execution-and-performance/caching-query-results.md diff --git a/site/content/3.13/aql/execution-and-performance/explaining-queries.md b/site/content/arangodb/3.13/aql/execution-and-performance/explaining-queries.md similarity index 100% rename from site/content/3.13/aql/execution-and-performance/explaining-queries.md rename to site/content/arangodb/3.13/aql/execution-and-performance/explaining-queries.md diff --git a/site/content/3.13/aql/execution-and-performance/parsing-queries.md b/site/content/arangodb/3.13/aql/execution-and-performance/parsing-queries.md similarity index 100% rename from site/content/3.13/aql/execution-and-performance/parsing-queries.md rename to site/content/arangodb/3.13/aql/execution-and-performance/parsing-queries.md diff --git a/site/content/3.13/aql/execution-and-performance/query-logging.md b/site/content/arangodb/3.13/aql/execution-and-performance/query-logging.md similarity index 100% rename from site/content/3.13/aql/execution-and-performance/query-logging.md rename to site/content/arangodb/3.13/aql/execution-and-performance/query-logging.md diff --git a/site/content/3.13/aql/execution-and-performance/query-optimization.md b/site/content/arangodb/3.13/aql/execution-and-performance/query-optimization.md similarity index 100% rename from site/content/3.13/aql/execution-and-performance/query-optimization.md rename to site/content/arangodb/3.13/aql/execution-and-performance/query-optimization.md diff --git a/site/content/3.13/aql/execution-and-performance/query-profiling.md b/site/content/arangodb/3.13/aql/execution-and-performance/query-profiling.md similarity index 100% rename from site/content/3.13/aql/execution-and-performance/query-profiling.md rename to site/content/arangodb/3.13/aql/execution-and-performance/query-profiling.md diff --git a/site/content/3.13/aql/execution-and-performance/query-statistics.md b/site/content/arangodb/3.13/aql/execution-and-performance/query-statistics.md similarity index 100% rename from site/content/3.13/aql/execution-and-performance/query-statistics.md rename to site/content/arangodb/3.13/aql/execution-and-performance/query-statistics.md diff --git a/site/content/3.13/aql/functions/_index.md b/site/content/arangodb/3.13/aql/functions/_index.md similarity index 100% rename from site/content/3.13/aql/functions/_index.md rename to site/content/arangodb/3.13/aql/functions/_index.md diff --git a/site/content/3.13/aql/functions/arangosearch.md b/site/content/arangodb/3.13/aql/functions/arangosearch.md similarity index 100% rename from site/content/3.13/aql/functions/arangosearch.md rename to site/content/arangodb/3.13/aql/functions/arangosearch.md diff --git a/site/content/3.13/aql/functions/array.md b/site/content/arangodb/3.13/aql/functions/array.md similarity index 100% rename from site/content/3.13/aql/functions/array.md rename to site/content/arangodb/3.13/aql/functions/array.md diff --git a/site/content/3.13/aql/functions/bit.md b/site/content/arangodb/3.13/aql/functions/bit.md similarity index 100% rename from site/content/3.13/aql/functions/bit.md rename to site/content/arangodb/3.13/aql/functions/bit.md diff --git a/site/content/3.13/aql/functions/date.md b/site/content/arangodb/3.13/aql/functions/date.md similarity index 100% rename from site/content/3.13/aql/functions/date.md rename to site/content/arangodb/3.13/aql/functions/date.md diff --git a/site/content/3.13/aql/functions/document-object.md b/site/content/arangodb/3.13/aql/functions/document-object.md similarity index 100% rename from site/content/3.13/aql/functions/document-object.md rename to site/content/arangodb/3.13/aql/functions/document-object.md diff --git a/site/content/3.13/aql/functions/fulltext.md b/site/content/arangodb/3.13/aql/functions/fulltext.md similarity index 100% rename from site/content/3.13/aql/functions/fulltext.md rename to site/content/arangodb/3.13/aql/functions/fulltext.md diff --git a/site/content/3.11/aql/functions/geo.md b/site/content/arangodb/3.13/aql/functions/geo.md similarity index 99% rename from site/content/3.11/aql/functions/geo.md rename to site/content/arangodb/3.13/aql/functions/geo.md index bc4558ee74..cf5b3f8a2d 100644 --- a/site/content/3.11/aql/functions/geo.md +++ b/site/content/arangodb/3.13/aql/functions/geo.md @@ -322,7 +322,7 @@ Consider the following polygon (remember that GeoJSON has ]] } ``` -![GeoJSON Polygon Geodesic](../../../images/geojson-polygon-geodesic.webp) +![GeoJSON Polygon Geodesic](../../../../images/geojson-polygon-geodesic.webp) It does not contain the point `[10, 47]` since the shortest path (geodesic) from `[4, 47]` to `[16, 47]` lies North relative to the parallel of latitude at @@ -359,7 +359,7 @@ Pole. ]] } ``` -![GeoJSON Polygon Counter-clockwise](../../../images/geojson-polygon-ccw.webp) +![GeoJSON Polygon Counter-clockwise](../../../../images/geojson-polygon-ccw.webp) On the other hand, the following polygon travels **clockwise** around the point `[10, 50]`, and thus its "interior" does not contain `[10, 50]`, but does @@ -371,7 +371,7 @@ contain the North Pole and the South Pole: ]] } ``` -![GeoJSON Polygon Clockwise](../../../images/geojson-polygon-cw.webp) +![GeoJSON Polygon Clockwise](../../../../images/geojson-polygon-cw.webp) Remember that the "interior" is to the left of the given linear ring, so this second polygon is basically the complement on Earth diff --git a/site/content/3.13/aql/functions/miscellaneous.md b/site/content/arangodb/3.13/aql/functions/miscellaneous.md similarity index 100% rename from site/content/3.13/aql/functions/miscellaneous.md rename to site/content/arangodb/3.13/aql/functions/miscellaneous.md diff --git a/site/content/3.13/aql/functions/numeric.md b/site/content/arangodb/3.13/aql/functions/numeric.md similarity index 100% rename from site/content/3.13/aql/functions/numeric.md rename to site/content/arangodb/3.13/aql/functions/numeric.md diff --git a/site/content/3.13/aql/functions/string.md b/site/content/arangodb/3.13/aql/functions/string.md similarity index 100% rename from site/content/3.13/aql/functions/string.md rename to site/content/arangodb/3.13/aql/functions/string.md diff --git a/site/content/3.13/aql/functions/type-check-and-cast.md b/site/content/arangodb/3.13/aql/functions/type-check-and-cast.md similarity index 100% rename from site/content/3.13/aql/functions/type-check-and-cast.md rename to site/content/arangodb/3.13/aql/functions/type-check-and-cast.md diff --git a/site/content/3.12/aql/functions/vector.md b/site/content/arangodb/3.13/aql/functions/vector.md similarity index 99% rename from site/content/3.12/aql/functions/vector.md rename to site/content/arangodb/3.13/aql/functions/vector.md index 987de8e45e..a20c562137 100644 --- a/site/content/3.12/aql/functions/vector.md +++ b/site/content/arangodb/3.13/aql/functions/vector.md @@ -12,7 +12,7 @@ To use vector search, you need to have vector embeddings stored in documents and the attribute that stores them needs to be indexed by a [vector index](../../index-and-search/indexing/working-with-indexes/vector-indexes.md). -You can calculate vector embeddings using [ArangoDB's GraphML](../../../platform/data-science/graphml/_index.md) +You can calculate vector embeddings using [ArangoDB's GraphML](../../../../gen-ai/graphml/_index.md) capabilities (available in ArangoGraph) or using external tools. {{< warning >}} diff --git a/site/content/3.13/aql/fundamentals/_index.md b/site/content/arangodb/3.13/aql/fundamentals/_index.md similarity index 100% rename from site/content/3.13/aql/fundamentals/_index.md rename to site/content/arangodb/3.13/aql/fundamentals/_index.md diff --git a/site/content/3.13/aql/fundamentals/accessing-data-from-collections.md b/site/content/arangodb/3.13/aql/fundamentals/accessing-data-from-collections.md similarity index 100% rename from site/content/3.13/aql/fundamentals/accessing-data-from-collections.md rename to site/content/arangodb/3.13/aql/fundamentals/accessing-data-from-collections.md diff --git a/site/content/3.13/aql/fundamentals/bind-parameters.md b/site/content/arangodb/3.13/aql/fundamentals/bind-parameters.md similarity index 100% rename from site/content/3.13/aql/fundamentals/bind-parameters.md rename to site/content/arangodb/3.13/aql/fundamentals/bind-parameters.md diff --git a/site/content/3.13/aql/fundamentals/data-types.md b/site/content/arangodb/3.13/aql/fundamentals/data-types.md similarity index 100% rename from site/content/3.13/aql/fundamentals/data-types.md rename to site/content/arangodb/3.13/aql/fundamentals/data-types.md diff --git a/site/content/3.13/aql/fundamentals/limitations.md b/site/content/arangodb/3.13/aql/fundamentals/limitations.md similarity index 100% rename from site/content/3.13/aql/fundamentals/limitations.md rename to site/content/arangodb/3.13/aql/fundamentals/limitations.md diff --git a/site/content/3.13/aql/fundamentals/query-errors.md b/site/content/arangodb/3.13/aql/fundamentals/query-errors.md similarity index 100% rename from site/content/3.13/aql/fundamentals/query-errors.md rename to site/content/arangodb/3.13/aql/fundamentals/query-errors.md diff --git a/site/content/3.13/aql/fundamentals/query-results.md b/site/content/arangodb/3.13/aql/fundamentals/query-results.md similarity index 100% rename from site/content/3.13/aql/fundamentals/query-results.md rename to site/content/arangodb/3.13/aql/fundamentals/query-results.md diff --git a/site/content/3.13/aql/fundamentals/subqueries.md b/site/content/arangodb/3.13/aql/fundamentals/subqueries.md similarity index 100% rename from site/content/3.13/aql/fundamentals/subqueries.md rename to site/content/arangodb/3.13/aql/fundamentals/subqueries.md diff --git a/site/content/3.13/aql/fundamentals/syntax.md b/site/content/arangodb/3.13/aql/fundamentals/syntax.md similarity index 100% rename from site/content/3.13/aql/fundamentals/syntax.md rename to site/content/arangodb/3.13/aql/fundamentals/syntax.md diff --git a/site/content/3.13/aql/fundamentals/type-and-value-order.md b/site/content/arangodb/3.13/aql/fundamentals/type-and-value-order.md similarity index 100% rename from site/content/3.13/aql/fundamentals/type-and-value-order.md rename to site/content/arangodb/3.13/aql/fundamentals/type-and-value-order.md diff --git a/site/content/3.13/aql/graphs/_index.md b/site/content/arangodb/3.13/aql/graphs/_index.md similarity index 100% rename from site/content/3.13/aql/graphs/_index.md rename to site/content/arangodb/3.13/aql/graphs/_index.md diff --git a/site/content/3.13/aql/graphs/all-shortest-paths.md b/site/content/arangodb/3.13/aql/graphs/all-shortest-paths.md similarity index 98% rename from site/content/3.13/aql/graphs/all-shortest-paths.md rename to site/content/arangodb/3.13/aql/graphs/all-shortest-paths.md index 69c770af05..bef591606d 100644 --- a/site/content/3.13/aql/graphs/all-shortest-paths.md +++ b/site/content/arangodb/3.13/aql/graphs/all-shortest-paths.md @@ -19,7 +19,7 @@ Every returned path is a JSON object with two attributes: A visual representation of the example graph: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) Each ellipse stands for a train station with the name of the city written inside of it. They are the nodes of the graph. Arrows represent train connections @@ -122,7 +122,7 @@ direction for each collection in your path search. Load an example graph to get a named graph that reflects some possible train connections in Europe and North America: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) ```js --- diff --git a/site/content/3.13/aql/graphs/k-paths.md b/site/content/arangodb/3.13/aql/graphs/k-paths.md similarity index 98% rename from site/content/3.13/aql/graphs/k-paths.md rename to site/content/arangodb/3.13/aql/graphs/k-paths.md index 89b63f6f41..0c490ce041 100644 --- a/site/content/3.13/aql/graphs/k-paths.md +++ b/site/content/arangodb/3.13/aql/graphs/k-paths.md @@ -20,7 +20,7 @@ Every such path is returned as a JSON object with two components: Here is an example graph to explain how the k Paths algorithm works: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) Each ellipse stands for a train station with the name of the city written inside of it. They are the nodes of the graph. Arrows represent train connections @@ -193,7 +193,7 @@ direction for each collection in your path search. You can load the `kShortestPathsGraph` example graph to get a named graph that reflects some possible train connections in Europe and North America. -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) ```js --- diff --git a/site/content/3.12/aql/graphs/k-shortest-paths.md b/site/content/arangodb/3.13/aql/graphs/k-shortest-paths.md similarity index 98% rename from site/content/3.12/aql/graphs/k-shortest-paths.md rename to site/content/arangodb/3.13/aql/graphs/k-shortest-paths.md index cad5ee1771..9c638740d7 100644 --- a/site/content/3.12/aql/graphs/k-shortest-paths.md +++ b/site/content/arangodb/3.13/aql/graphs/k-shortest-paths.md @@ -25,7 +25,7 @@ If no `weightAttribute` is specified, the weight of the path is just its length. Here is an example graph to explain how the k Shortest Paths algorithm works: -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) Each ellipse stands for a train station with the name of the city written inside of it. They are the nodes of the graph. Arrows represent train connections @@ -191,7 +191,7 @@ direction for each collection in your path search. You can load the `kShortestPathsGraph` example graph to get a named graph that reflects some possible train connections in Europe and North America. -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) ```js --- diff --git a/site/content/3.12/aql/graphs/shortest-path.md b/site/content/arangodb/3.13/aql/graphs/shortest-path.md similarity index 98% rename from site/content/3.12/aql/graphs/shortest-path.md rename to site/content/arangodb/3.13/aql/graphs/shortest-path.md index 7f0b6421fa..e3cab31823 100644 --- a/site/content/3.12/aql/graphs/shortest-path.md +++ b/site/content/arangodb/3.13/aql/graphs/shortest-path.md @@ -23,7 +23,7 @@ the path: Let's take a look at a simple example to explain how it works. This is the graph that you are going to find a shortest path on: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) You can use the following parameters for the query: @@ -160,7 +160,7 @@ collections you expect to be involved. Creating a simple symmetric traversal demonstration graph: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) ```js --- diff --git a/site/content/3.12/aql/graphs/traversals-explained.md b/site/content/arangodb/3.13/aql/graphs/traversals-explained.md similarity index 83% rename from site/content/3.12/aql/graphs/traversals-explained.md rename to site/content/arangodb/3.13/aql/graphs/traversals-explained.md index e090af2a1e..6d4300e161 100644 --- a/site/content/3.12/aql/graphs/traversals-explained.md +++ b/site/content/arangodb/3.13/aql/graphs/traversals-explained.md @@ -31,7 +31,7 @@ set with three items: Let's take a look at a simple example to explain how it works. This is the graph that we are going to traverse: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) We use the following parameters for our query: @@ -40,39 +40,39 @@ We use the following parameters for our query: 3. We use a *max* depth of 2. 4. We follow only in `OUTBOUND` direction of edges -![traversal graph step 1](../../../images/traversal_graph1.png) +![traversal graph step 1](../../../../images/traversal_graph1.png) Now it walks to one of the direct neighbors of **A**, say **B** (note: ordering is not guaranteed!): -![traversal graph step 2](../../../images/traversal_graph2.png) +![traversal graph step 2](../../../../images/traversal_graph2.png) The query will remember the state (red circle) and will emit the first result **A** → **B** (black box). This will also prevent the traverser to be trapped in cycles. Now again it will visit one of the direct neighbors of **B**, say **E**: -![traversal graph step 3](../../../images/traversal_graph3.png) +![traversal graph step 3](../../../../images/traversal_graph3.png) We have limited the query with a *max* depth of *2*, so it will not pick any neighbor of **E**, as the path from **A** to **E** already requires *2* steps. Instead, we will go back one level to **B** and continue with any other direct neighbor there: -![traversal graph step 4](../../../images/traversal_graph4.png) +![traversal graph step 4](../../../../images/traversal_graph4.png) Again after we produced this result we will step back to **B**. But there is no neighbor of **B** left that we have not yet visited. Hence we go another step back to **A** and continue with any other neighbor there. -![traversal graph step 5](../../../images/traversal_graph5.png) +![traversal graph step 5](../../../../images/traversal_graph5.png) And identical to the iterations before we will visit **H**: -![traversal graph step 6](../../../images/traversal_graph6.png) +![traversal graph step 6](../../../../images/traversal_graph6.png) And **J**: -![traversal graph step 7](../../../images/traversal_graph7.png) +![traversal graph step 7](../../../../images/traversal_graph7.png) After these steps there is no further result left. So all together this query has returned the following paths: diff --git a/site/content/3.13/aql/graphs/traversals.md b/site/content/arangodb/3.13/aql/graphs/traversals.md similarity index 99% rename from site/content/3.13/aql/graphs/traversals.md rename to site/content/arangodb/3.13/aql/graphs/traversals.md index d6ae7e2eeb..ef4870dfef 100644 --- a/site/content/3.13/aql/graphs/traversals.md +++ b/site/content/arangodb/3.13/aql/graphs/traversals.md @@ -378,7 +378,7 @@ FOR v, e, p IN 0..10 OUTBOUND "places/Toronto" GRAPH "kShortestPathsGraph" The above example shows a graph traversal using a [train station and connections dataset](../../graphs/example-graphs.md#k-shortest-paths-graph): -![Train Connection Map](../../../images/train_map.png) +![Train Connection Map](../../../../images/train_map.png) The traversal starts at **Toronto** (bottom left), the traversal depth is limited to 10, and every station is only visited once. The traversal could @@ -726,7 +726,7 @@ you may be interested in documents further down the path. Create a simple symmetric traversal demonstration graph: -![traversal graph](../../../images/traversal_graph.png) +![traversal graph](../../../../images/traversal_graph.png) ```js --- diff --git a/site/content/3.13/aql/high-level-operations/_index.md b/site/content/arangodb/3.13/aql/high-level-operations/_index.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/_index.md rename to site/content/arangodb/3.13/aql/high-level-operations/_index.md diff --git a/site/content/3.13/aql/high-level-operations/collect.md b/site/content/arangodb/3.13/aql/high-level-operations/collect.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/collect.md rename to site/content/arangodb/3.13/aql/high-level-operations/collect.md diff --git a/site/content/3.13/aql/high-level-operations/filter.md b/site/content/arangodb/3.13/aql/high-level-operations/filter.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/filter.md rename to site/content/arangodb/3.13/aql/high-level-operations/filter.md diff --git a/site/content/3.13/aql/high-level-operations/for.md b/site/content/arangodb/3.13/aql/high-level-operations/for.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/for.md rename to site/content/arangodb/3.13/aql/high-level-operations/for.md diff --git a/site/content/3.13/aql/high-level-operations/insert.md b/site/content/arangodb/3.13/aql/high-level-operations/insert.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/insert.md rename to site/content/arangodb/3.13/aql/high-level-operations/insert.md diff --git a/site/content/3.13/aql/high-level-operations/let.md b/site/content/arangodb/3.13/aql/high-level-operations/let.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/let.md rename to site/content/arangodb/3.13/aql/high-level-operations/let.md diff --git a/site/content/3.13/aql/high-level-operations/limit.md b/site/content/arangodb/3.13/aql/high-level-operations/limit.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/limit.md rename to site/content/arangodb/3.13/aql/high-level-operations/limit.md diff --git a/site/content/3.13/aql/high-level-operations/remove.md b/site/content/arangodb/3.13/aql/high-level-operations/remove.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/remove.md rename to site/content/arangodb/3.13/aql/high-level-operations/remove.md diff --git a/site/content/3.13/aql/high-level-operations/replace.md b/site/content/arangodb/3.13/aql/high-level-operations/replace.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/replace.md rename to site/content/arangodb/3.13/aql/high-level-operations/replace.md diff --git a/site/content/3.13/aql/high-level-operations/return.md b/site/content/arangodb/3.13/aql/high-level-operations/return.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/return.md rename to site/content/arangodb/3.13/aql/high-level-operations/return.md diff --git a/site/content/3.13/aql/high-level-operations/search.md b/site/content/arangodb/3.13/aql/high-level-operations/search.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/search.md rename to site/content/arangodb/3.13/aql/high-level-operations/search.md diff --git a/site/content/3.13/aql/high-level-operations/sort.md b/site/content/arangodb/3.13/aql/high-level-operations/sort.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/sort.md rename to site/content/arangodb/3.13/aql/high-level-operations/sort.md diff --git a/site/content/3.13/aql/high-level-operations/update.md b/site/content/arangodb/3.13/aql/high-level-operations/update.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/update.md rename to site/content/arangodb/3.13/aql/high-level-operations/update.md diff --git a/site/content/3.13/aql/high-level-operations/upsert.md b/site/content/arangodb/3.13/aql/high-level-operations/upsert.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/upsert.md rename to site/content/arangodb/3.13/aql/high-level-operations/upsert.md diff --git a/site/content/3.13/aql/high-level-operations/window.md b/site/content/arangodb/3.13/aql/high-level-operations/window.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/window.md rename to site/content/arangodb/3.13/aql/high-level-operations/window.md diff --git a/site/content/3.13/aql/high-level-operations/with.md b/site/content/arangodb/3.13/aql/high-level-operations/with.md similarity index 100% rename from site/content/3.13/aql/high-level-operations/with.md rename to site/content/arangodb/3.13/aql/high-level-operations/with.md diff --git a/site/content/3.13/aql/how-to-invoke-aql/_index.md b/site/content/arangodb/3.13/aql/how-to-invoke-aql/_index.md similarity index 100% rename from site/content/3.13/aql/how-to-invoke-aql/_index.md rename to site/content/arangodb/3.13/aql/how-to-invoke-aql/_index.md diff --git a/site/content/3.13/aql/how-to-invoke-aql/with-arangosh.md b/site/content/arangodb/3.13/aql/how-to-invoke-aql/with-arangosh.md similarity index 100% rename from site/content/3.13/aql/how-to-invoke-aql/with-arangosh.md rename to site/content/arangodb/3.13/aql/how-to-invoke-aql/with-arangosh.md diff --git a/site/content/3.13/aql/how-to-invoke-aql/with-the-web-interface.md b/site/content/arangodb/3.13/aql/how-to-invoke-aql/with-the-web-interface.md similarity index 100% rename from site/content/3.13/aql/how-to-invoke-aql/with-the-web-interface.md rename to site/content/arangodb/3.13/aql/how-to-invoke-aql/with-the-web-interface.md diff --git a/site/content/3.13/aql/operators.md b/site/content/arangodb/3.13/aql/operators.md similarity index 100% rename from site/content/3.13/aql/operators.md rename to site/content/arangodb/3.13/aql/operators.md diff --git a/site/content/3.13/aql/user-defined-functions.md b/site/content/arangodb/3.13/aql/user-defined-functions.md similarity index 100% rename from site/content/3.13/aql/user-defined-functions.md rename to site/content/arangodb/3.13/aql/user-defined-functions.md diff --git a/site/content/3.13/components/_index.md b/site/content/arangodb/3.13/components/_index.md similarity index 100% rename from site/content/3.13/components/_index.md rename to site/content/arangodb/3.13/components/_index.md diff --git a/site/content/3.13/components/arangodb-server/_index.md b/site/content/arangodb/3.13/components/arangodb-server/_index.md similarity index 100% rename from site/content/3.13/components/arangodb-server/_index.md rename to site/content/arangodb/3.13/components/arangodb-server/_index.md diff --git a/site/content/3.13/components/arangodb-server/environment-variables.md b/site/content/arangodb/3.13/components/arangodb-server/environment-variables.md similarity index 100% rename from site/content/3.13/components/arangodb-server/environment-variables.md rename to site/content/arangodb/3.13/components/arangodb-server/environment-variables.md diff --git a/site/content/3.13/components/arangodb-server/options.md b/site/content/arangodb/3.13/components/arangodb-server/options.md similarity index 100% rename from site/content/3.13/components/arangodb-server/options.md rename to site/content/arangodb/3.13/components/arangodb-server/options.md diff --git a/site/content/3.13/components/arangodb-server/storage-engine.md b/site/content/arangodb/3.13/components/arangodb-server/storage-engine.md similarity index 100% rename from site/content/3.13/components/arangodb-server/storage-engine.md rename to site/content/arangodb/3.13/components/arangodb-server/storage-engine.md diff --git a/site/content/3.13/components/platform.md b/site/content/arangodb/3.13/components/platform.md similarity index 98% rename from site/content/3.13/components/platform.md rename to site/content/arangodb/3.13/components/platform.md index eee8a62dcc..6e9764fd15 100644 --- a/site/content/3.13/components/platform.md +++ b/site/content/arangodb/3.13/components/platform.md @@ -48,7 +48,7 @@ of the platform features. - **GraphRAG Retriever**: Perform semantic similarity searches or aggregate insights from graph communities with global and local queries. - **Public and private LLM support**: Use public LLMs such as OpenAI - or private LLMs with [Triton Inference Server](../data-science/graphrag/services/triton-inference-server.md). + or private LLMs with [Triton Inference Server](../../../gen-ai/services/triton-inference-server.md). - **MLflow integration**: Use the popular MLflow as a model registry for private LLMs or to run machine learning experiments as part of the ArangoDB Platform. - **Jupyter notebooks**: Run a Jupyter kernel in the platform for hosting @@ -65,7 +65,7 @@ of the platform features. ### Use the ArangoDB Platform as a managed service The ArangoDB Platform is not available as a managed service yet, but it will -become available for the [ArangoGraph Insights Platform](../arangograph/_index.md) +become available for the [Arango Managed Platform (AMP)](../../../amp/_index.md) in the future. Until then, you can request early access to the self-hosted ArangoDB Platform for testing. diff --git a/site/content/3.13/components/tools/_index.md b/site/content/arangodb/3.13/components/tools/_index.md similarity index 94% rename from site/content/3.13/components/tools/_index.md rename to site/content/arangodb/3.13/components/tools/_index.md index 72bf4118a4..9909dbe302 100644 --- a/site/content/3.13/components/tools/_index.md +++ b/site/content/arangodb/3.13/components/tools/_index.md @@ -31,5 +31,5 @@ Additional tools which are available separately: |-----------------|-------------------| | [Foxx CLI](foxx-cli/_index.md) | Command line tool for managing and developing Foxx services | [kube-arangodb](../../deploy/kubernetes.md) | Operators to manage Kubernetes deployments -| [Oasisctl](../../arangograph/oasisctl/_index.md) | Command-line tool for managing the ArangoGraph Insights Platform +| [Oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) | [ArangoDB Datasets](arango-datasets.md) | A Python package for loading sample datasets into ArangoDB diff --git a/site/content/3.13/components/tools/arango-datasets.md b/site/content/arangodb/3.13/components/tools/arango-datasets.md similarity index 100% rename from site/content/3.13/components/tools/arango-datasets.md rename to site/content/arangodb/3.13/components/tools/arango-datasets.md diff --git a/site/content/3.12/components/tools/arangobackup/_index.md b/site/content/arangodb/3.13/components/tools/arangobackup/_index.md similarity index 92% rename from site/content/3.12/components/tools/arangobackup/_index.md rename to site/content/arangodb/3.13/components/tools/arangobackup/_index.md index 342c24c29a..fc71fd4547 100644 --- a/site/content/3.12/components/tools/arangobackup/_index.md +++ b/site/content/arangodb/3.13/components/tools/arangobackup/_index.md @@ -7,8 +7,8 @@ description: >- ArangoDB deployments --- {{< tip >}} -In the ArangoGraph Insights Platform, use managed -[Backups](../../../arangograph/backups.md) instead. +In the Arango Managed Platform (AMP), use managed +[Backups](../../../../../amp/backups.md) instead. {{< /tip >}} _arangobackup_ creates instantaneous and consistent diff --git a/site/content/3.13/components/tools/arangobackup/examples.md b/site/content/arangodb/3.13/components/tools/arangobackup/examples.md similarity index 100% rename from site/content/3.13/components/tools/arangobackup/examples.md rename to site/content/arangodb/3.13/components/tools/arangobackup/examples.md diff --git a/site/content/3.13/components/tools/arangobackup/options.md b/site/content/arangodb/3.13/components/tools/arangobackup/options.md similarity index 100% rename from site/content/3.13/components/tools/arangobackup/options.md rename to site/content/arangodb/3.13/components/tools/arangobackup/options.md diff --git a/site/content/3.13/components/tools/arangobench/_index.md b/site/content/arangodb/3.13/components/tools/arangobench/_index.md similarity index 100% rename from site/content/3.13/components/tools/arangobench/_index.md rename to site/content/arangodb/3.13/components/tools/arangobench/_index.md diff --git a/site/content/3.13/components/tools/arangobench/options.md b/site/content/arangodb/3.13/components/tools/arangobench/options.md similarity index 100% rename from site/content/3.13/components/tools/arangobench/options.md rename to site/content/arangodb/3.13/components/tools/arangobench/options.md diff --git a/site/content/3.13/components/tools/arangodb-shell/_index.md b/site/content/arangodb/3.13/components/tools/arangodb-shell/_index.md similarity index 100% rename from site/content/3.13/components/tools/arangodb-shell/_index.md rename to site/content/arangodb/3.13/components/tools/arangodb-shell/_index.md diff --git a/site/content/3.13/components/tools/arangodb-shell/details.md b/site/content/arangodb/3.13/components/tools/arangodb-shell/details.md similarity index 100% rename from site/content/3.13/components/tools/arangodb-shell/details.md rename to site/content/arangodb/3.13/components/tools/arangodb-shell/details.md diff --git a/site/content/3.13/components/tools/arangodb-shell/examples.md b/site/content/arangodb/3.13/components/tools/arangodb-shell/examples.md similarity index 100% rename from site/content/3.13/components/tools/arangodb-shell/examples.md rename to site/content/arangodb/3.13/components/tools/arangodb-shell/examples.md diff --git a/site/content/3.13/components/tools/arangodb-shell/options.md b/site/content/arangodb/3.13/components/tools/arangodb-shell/options.md similarity index 100% rename from site/content/3.13/components/tools/arangodb-shell/options.md rename to site/content/arangodb/3.13/components/tools/arangodb-shell/options.md diff --git a/site/content/3.13/components/tools/arangodb-starter/_index.md b/site/content/arangodb/3.13/components/tools/arangodb-starter/_index.md similarity index 100% rename from site/content/3.13/components/tools/arangodb-starter/_index.md rename to site/content/arangodb/3.13/components/tools/arangodb-starter/_index.md diff --git a/site/content/3.13/components/tools/arangodb-starter/architecture.md b/site/content/arangodb/3.13/components/tools/arangodb-starter/architecture.md similarity index 100% rename from site/content/3.13/components/tools/arangodb-starter/architecture.md rename to site/content/arangodb/3.13/components/tools/arangodb-starter/architecture.md diff --git a/site/content/3.13/components/tools/arangodb-starter/options.md b/site/content/arangodb/3.13/components/tools/arangodb-starter/options.md similarity index 100% rename from site/content/3.13/components/tools/arangodb-starter/options.md rename to site/content/arangodb/3.13/components/tools/arangodb-starter/options.md diff --git a/site/content/3.13/components/tools/arangodb-starter/security.md b/site/content/arangodb/3.13/components/tools/arangodb-starter/security.md similarity index 100% rename from site/content/3.13/components/tools/arangodb-starter/security.md rename to site/content/arangodb/3.13/components/tools/arangodb-starter/security.md diff --git a/site/content/3.13/components/tools/arangodump/_index.md b/site/content/arangodb/3.13/components/tools/arangodump/_index.md similarity index 100% rename from site/content/3.13/components/tools/arangodump/_index.md rename to site/content/arangodb/3.13/components/tools/arangodump/_index.md diff --git a/site/content/3.13/components/tools/arangodump/examples.md b/site/content/arangodb/3.13/components/tools/arangodump/examples.md similarity index 100% rename from site/content/3.13/components/tools/arangodump/examples.md rename to site/content/arangodb/3.13/components/tools/arangodump/examples.md diff --git a/site/content/3.13/components/tools/arangodump/limitations.md b/site/content/arangodb/3.13/components/tools/arangodump/limitations.md similarity index 100% rename from site/content/3.13/components/tools/arangodump/limitations.md rename to site/content/arangodb/3.13/components/tools/arangodump/limitations.md diff --git a/site/content/3.13/components/tools/arangodump/maskings.md b/site/content/arangodb/3.13/components/tools/arangodump/maskings.md similarity index 100% rename from site/content/3.13/components/tools/arangodump/maskings.md rename to site/content/arangodb/3.13/components/tools/arangodump/maskings.md diff --git a/site/content/3.13/components/tools/arangodump/options.md b/site/content/arangodb/3.13/components/tools/arangodump/options.md similarity index 100% rename from site/content/3.13/components/tools/arangodump/options.md rename to site/content/arangodb/3.13/components/tools/arangodump/options.md diff --git a/site/content/3.13/components/tools/arangoexport/_index.md b/site/content/arangodb/3.13/components/tools/arangoexport/_index.md similarity index 100% rename from site/content/3.13/components/tools/arangoexport/_index.md rename to site/content/arangodb/3.13/components/tools/arangoexport/_index.md diff --git a/site/content/3.13/components/tools/arangoexport/examples.md b/site/content/arangodb/3.13/components/tools/arangoexport/examples.md similarity index 100% rename from site/content/3.13/components/tools/arangoexport/examples.md rename to site/content/arangodb/3.13/components/tools/arangoexport/examples.md diff --git a/site/content/3.13/components/tools/arangoexport/options.md b/site/content/arangodb/3.13/components/tools/arangoexport/options.md similarity index 100% rename from site/content/3.13/components/tools/arangoexport/options.md rename to site/content/arangodb/3.13/components/tools/arangoexport/options.md diff --git a/site/content/3.13/components/tools/arangoimport/_index.md b/site/content/arangodb/3.13/components/tools/arangoimport/_index.md similarity index 100% rename from site/content/3.13/components/tools/arangoimport/_index.md rename to site/content/arangodb/3.13/components/tools/arangoimport/_index.md diff --git a/site/content/3.13/components/tools/arangoimport/details.md b/site/content/arangodb/3.13/components/tools/arangoimport/details.md similarity index 100% rename from site/content/3.13/components/tools/arangoimport/details.md rename to site/content/arangodb/3.13/components/tools/arangoimport/details.md diff --git a/site/content/3.13/components/tools/arangoimport/examples-csv.md b/site/content/arangodb/3.13/components/tools/arangoimport/examples-csv.md similarity index 100% rename from site/content/3.13/components/tools/arangoimport/examples-csv.md rename to site/content/arangodb/3.13/components/tools/arangoimport/examples-csv.md diff --git a/site/content/3.13/components/tools/arangoimport/examples-json.md b/site/content/arangodb/3.13/components/tools/arangoimport/examples-json.md similarity index 100% rename from site/content/3.13/components/tools/arangoimport/examples-json.md rename to site/content/arangodb/3.13/components/tools/arangoimport/examples-json.md diff --git a/site/content/3.13/components/tools/arangoimport/options.md b/site/content/arangodb/3.13/components/tools/arangoimport/options.md similarity index 100% rename from site/content/3.13/components/tools/arangoimport/options.md rename to site/content/arangodb/3.13/components/tools/arangoimport/options.md diff --git a/site/content/3.13/components/tools/arangoinspect/_index.md b/site/content/arangodb/3.13/components/tools/arangoinspect/_index.md similarity index 100% rename from site/content/3.13/components/tools/arangoinspect/_index.md rename to site/content/arangodb/3.13/components/tools/arangoinspect/_index.md diff --git a/site/content/3.13/components/tools/arangoinspect/examples.md b/site/content/arangodb/3.13/components/tools/arangoinspect/examples.md similarity index 100% rename from site/content/3.13/components/tools/arangoinspect/examples.md rename to site/content/arangodb/3.13/components/tools/arangoinspect/examples.md diff --git a/site/content/3.13/components/tools/arangoinspect/options.md b/site/content/arangodb/3.13/components/tools/arangoinspect/options.md similarity index 100% rename from site/content/3.13/components/tools/arangoinspect/options.md rename to site/content/arangodb/3.13/components/tools/arangoinspect/options.md diff --git a/site/content/3.13/components/tools/arangorestore/_index.md b/site/content/arangodb/3.13/components/tools/arangorestore/_index.md similarity index 100% rename from site/content/3.13/components/tools/arangorestore/_index.md rename to site/content/arangodb/3.13/components/tools/arangorestore/_index.md diff --git a/site/content/3.13/components/tools/arangorestore/examples.md b/site/content/arangodb/3.13/components/tools/arangorestore/examples.md similarity index 100% rename from site/content/3.13/components/tools/arangorestore/examples.md rename to site/content/arangodb/3.13/components/tools/arangorestore/examples.md diff --git a/site/content/3.13/components/tools/arangorestore/options.md b/site/content/arangodb/3.13/components/tools/arangorestore/options.md similarity index 100% rename from site/content/3.13/components/tools/arangorestore/options.md rename to site/content/arangodb/3.13/components/tools/arangorestore/options.md diff --git a/site/content/3.13/components/tools/arangovpack/_index.md b/site/content/arangodb/3.13/components/tools/arangovpack/_index.md similarity index 100% rename from site/content/3.13/components/tools/arangovpack/_index.md rename to site/content/arangodb/3.13/components/tools/arangovpack/_index.md diff --git a/site/content/3.13/components/tools/arangovpack/options.md b/site/content/arangodb/3.13/components/tools/arangovpack/options.md similarity index 100% rename from site/content/3.13/components/tools/arangovpack/options.md rename to site/content/arangodb/3.13/components/tools/arangovpack/options.md diff --git a/site/content/3.13/components/tools/foxx-cli/_index.md b/site/content/arangodb/3.13/components/tools/foxx-cli/_index.md similarity index 100% rename from site/content/3.13/components/tools/foxx-cli/_index.md rename to site/content/arangodb/3.13/components/tools/foxx-cli/_index.md diff --git a/site/content/3.13/components/tools/foxx-cli/details.md b/site/content/arangodb/3.13/components/tools/foxx-cli/details.md similarity index 100% rename from site/content/3.13/components/tools/foxx-cli/details.md rename to site/content/arangodb/3.13/components/tools/foxx-cli/details.md diff --git a/site/content/3.13/components/web-interface/_index.md b/site/content/arangodb/3.13/components/web-interface/_index.md similarity index 89% rename from site/content/3.13/components/web-interface/_index.md rename to site/content/arangodb/3.13/components/web-interface/_index.md index 42934ab4f6..5d3412cdac 100644 --- a/site/content/3.13/components/web-interface/_index.md +++ b/site/content/arangodb/3.13/components/web-interface/_index.md @@ -13,4 +13,4 @@ convenient way. Statistics and server status are provided as well. The web interface (also referred to as Web UI, frontend or *Aardvark*) can be accessed with a browser under the URL `http://localhost:8529` with default server settings. -![Single-server Web Interface](../../../images/ui-dashboard312.webp) +![Single-server Web Interface](../../../../images/ui-dashboard312.webp) diff --git a/site/content/3.13/components/web-interface/cluster.md b/site/content/arangodb/3.13/components/web-interface/cluster.md similarity index 97% rename from site/content/3.13/components/web-interface/cluster.md rename to site/content/arangodb/3.13/components/web-interface/cluster.md index 9662f6c93c..75807b2a42 100644 --- a/site/content/3.13/components/web-interface/cluster.md +++ b/site/content/arangodb/3.13/components/web-interface/cluster.md @@ -16,7 +16,7 @@ You can access the logs of individual Coordinators and DB-Servers via the The **Cluster** section displays statistics about the general cluster performance. -![Web Interface Cluster Dashboard](../../../images/ui-cluster-dashboard312.webp) +![Web Interface Cluster Dashboard](../../../../images/ui-cluster-dashboard312.webp) Statistics: diff --git a/site/content/3.13/components/web-interface/collections.md b/site/content/arangodb/3.13/components/web-interface/collections.md similarity index 100% rename from site/content/3.13/components/web-interface/collections.md rename to site/content/arangodb/3.13/components/web-interface/collections.md diff --git a/site/content/3.13/components/web-interface/dashboard.md b/site/content/arangodb/3.13/components/web-interface/dashboard.md similarity index 90% rename from site/content/3.13/components/web-interface/dashboard.md rename to site/content/arangodb/3.13/components/web-interface/dashboard.md index 9a6bcf5feb..b1018e2f80 100644 --- a/site/content/3.13/components/web-interface/dashboard.md +++ b/site/content/arangodb/3.13/components/web-interface/dashboard.md @@ -7,7 +7,7 @@ description: '' The **Dashboard** section provides statistics which are polled regularly from the ArangoDB server. -![Web Interface Dashboard](../../../images/ui-dashboard312.webp) +![Web Interface Dashboard](../../../../images/ui-dashboard312.webp) There is a different interface for [Cluster](cluster.md) deployments. diff --git a/site/content/3.13/components/web-interface/document.md b/site/content/arangodb/3.13/components/web-interface/document.md similarity index 100% rename from site/content/3.13/components/web-interface/document.md rename to site/content/arangodb/3.13/components/web-interface/document.md diff --git a/site/content/3.12/components/web-interface/graphs.md b/site/content/arangodb/3.13/components/web-interface/graphs.md similarity index 98% rename from site/content/3.12/components/web-interface/graphs.md rename to site/content/arangodb/3.13/components/web-interface/graphs.md index 9b298a16ec..d601939a70 100644 --- a/site/content/3.12/components/web-interface/graphs.md +++ b/site/content/arangodb/3.13/components/web-interface/graphs.md @@ -57,7 +57,7 @@ their direct neighbors are selected. You can select one or more start nodes and change the depth and the limit in the settings panel. You can also load the entire graph via the toolbar, but only use this with small graphs. -![The graph viewer with the settings panel open](../../../images/graphViewer312.png) +![The graph viewer with the settings panel open](../../../../images/graphViewer312.png) ### Viewport diff --git a/site/content/3.13/components/web-interface/logs.md b/site/content/arangodb/3.13/components/web-interface/logs.md similarity index 100% rename from site/content/3.13/components/web-interface/logs.md rename to site/content/arangodb/3.13/components/web-interface/logs.md diff --git a/site/content/3.13/components/web-interface/queries.md b/site/content/arangodb/3.13/components/web-interface/queries.md similarity index 98% rename from site/content/3.13/components/web-interface/queries.md rename to site/content/arangodb/3.13/components/web-interface/queries.md index 7c65ffc809..4da1b6f706 100644 --- a/site/content/3.13/components/web-interface/queries.md +++ b/site/content/arangodb/3.13/components/web-interface/queries.md @@ -14,7 +14,7 @@ The query view offers you three different subviews: The web interface offers a AQL Query Editor: -![Editor Input](../../../images/queryEditorInput312.png) +![Editor Input](../../../../images/queryEditorInput312.png) The editor is split into two parts, the query editor pane and the pane for bind variables and query options. diff --git a/site/content/3.13/components/web-interface/services.md b/site/content/arangodb/3.13/components/web-interface/services.md similarity index 100% rename from site/content/3.13/components/web-interface/services.md rename to site/content/arangodb/3.13/components/web-interface/services.md diff --git a/site/content/3.13/components/web-interface/users.md b/site/content/arangodb/3.13/components/web-interface/users.md similarity index 100% rename from site/content/3.13/components/web-interface/users.md rename to site/content/arangodb/3.13/components/web-interface/users.md diff --git a/site/content/3.13/concepts/_index.md b/site/content/arangodb/3.13/concepts/_index.md similarity index 100% rename from site/content/3.13/concepts/_index.md rename to site/content/arangodb/3.13/concepts/_index.md diff --git a/site/content/3.13/concepts/data-models.md b/site/content/arangodb/3.13/concepts/data-models.md similarity index 100% rename from site/content/3.13/concepts/data-models.md rename to site/content/arangodb/3.13/concepts/data-models.md diff --git a/site/content/3.13/concepts/data-retrieval.md b/site/content/arangodb/3.13/concepts/data-retrieval.md similarity index 100% rename from site/content/3.13/concepts/data-retrieval.md rename to site/content/arangodb/3.13/concepts/data-retrieval.md diff --git a/site/content/3.13/concepts/data-structure/_index.md b/site/content/arangodb/3.13/concepts/data-structure/_index.md similarity index 100% rename from site/content/3.13/concepts/data-structure/_index.md rename to site/content/arangodb/3.13/concepts/data-structure/_index.md diff --git a/site/content/3.13/concepts/data-structure/collections.md b/site/content/arangodb/3.13/concepts/data-structure/collections.md similarity index 100% rename from site/content/3.13/concepts/data-structure/collections.md rename to site/content/arangodb/3.13/concepts/data-structure/collections.md diff --git a/site/content/3.13/concepts/data-structure/databases.md b/site/content/arangodb/3.13/concepts/data-structure/databases.md similarity index 100% rename from site/content/3.13/concepts/data-structure/databases.md rename to site/content/arangodb/3.13/concepts/data-structure/databases.md diff --git a/site/content/3.13/concepts/data-structure/documents/_index.md b/site/content/arangodb/3.13/concepts/data-structure/documents/_index.md similarity index 100% rename from site/content/3.13/concepts/data-structure/documents/_index.md rename to site/content/arangodb/3.13/concepts/data-structure/documents/_index.md diff --git a/site/content/3.13/concepts/data-structure/documents/computed-values.md b/site/content/arangodb/3.13/concepts/data-structure/documents/computed-values.md similarity index 100% rename from site/content/3.13/concepts/data-structure/documents/computed-values.md rename to site/content/arangodb/3.13/concepts/data-structure/documents/computed-values.md diff --git a/site/content/3.13/concepts/data-structure/documents/schema-validation.md b/site/content/arangodb/3.13/concepts/data-structure/documents/schema-validation.md similarity index 100% rename from site/content/3.13/concepts/data-structure/documents/schema-validation.md rename to site/content/arangodb/3.13/concepts/data-structure/documents/schema-validation.md diff --git a/site/content/3.13/concepts/data-structure/views.md b/site/content/arangodb/3.13/concepts/data-structure/views.md similarity index 100% rename from site/content/3.13/concepts/data-structure/views.md rename to site/content/arangodb/3.13/concepts/data-structure/views.md diff --git a/site/content/3.13/deploy/_index.md b/site/content/arangodb/3.13/deploy/_index.md similarity index 96% rename from site/content/3.13/deploy/_index.md rename to site/content/arangodb/3.13/deploy/_index.md index e0d36ebcd0..2d9787b64c 100644 --- a/site/content/3.13/deploy/_index.md +++ b/site/content/arangodb/3.13/deploy/_index.md @@ -48,7 +48,7 @@ for multi-tenant use cases. The ArangoDB Platform is the umbrella for deploying and operating the entire ArangoDB product offering with a unified interface in a Kubernetes cluster. It is offered for self-hosting on-prem or in the cloud and as a managed service, -superseding the ArangoGraph Insights Platform. +superseding the Arango Managed Platform (AMP). See [The ArangoDB Platform](../components/platform.md) for details. @@ -68,7 +68,7 @@ There are different ways to set up and operate ArangoDB. ArangoDB Kubernetes Operator (`kube-arangodb`). The fastest way to get ArangoDB up and running is to run it in the cloud - the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) offers a fully managed cloud service, available on AWS and GCP. ### Manual Deployment @@ -115,7 +115,7 @@ If you want a specific version, download the precompiled executable via the ### Run in the cloud - [AWS and Azure](in-the-cloud.md) -- [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), +- [Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), fully managed, available on AWS and GCP ### Run in Kubernetes diff --git a/site/content/3.13/deploy/architecture/_index.md b/site/content/arangodb/3.13/deploy/architecture/_index.md similarity index 100% rename from site/content/3.13/deploy/architecture/_index.md rename to site/content/arangodb/3.13/deploy/architecture/_index.md diff --git a/site/content/3.13/deploy/architecture/data-sharding.md b/site/content/arangodb/3.13/deploy/architecture/data-sharding.md similarity index 98% rename from site/content/3.13/deploy/architecture/data-sharding.md rename to site/content/arangodb/3.13/deploy/architecture/data-sharding.md index a677edbfd6..61e67cb5d9 100644 --- a/site/content/3.13/deploy/architecture/data-sharding.md +++ b/site/content/arangodb/3.13/deploy/architecture/data-sharding.md @@ -44,7 +44,7 @@ cost-effective than pre-provisioning a single large machine. Increased complexity in infrastructure can be managed using modern containerization and cluster orchestrations tools like [Kubernetes](../kubernetes.md). -![Cluster Sharding](../../../images/cluster_sharding.jpg) +![Cluster Sharding](../../../../images/cluster_sharding.jpg) To achieve this ArangoDB splits your dataset into so called _shards_. The number of shards is something you may choose according to your needs. Proper sharding @@ -84,7 +84,7 @@ a given document is to be stored. Choosing the right shard key can have significant impact on your performance can reduce network traffic and increase performance. -![Hash Sharding](../../../images/cluster_sharding_hash.jpg) +![Hash Sharding](../../../../images/cluster_sharding_hash.jpg) ArangoDB uses consistent hashing to compute the target shard from the given values (as specified via by the `shardKeys` collection property). The ideal set diff --git a/site/content/3.13/deploy/architecture/replication.md b/site/content/arangodb/3.13/deploy/architecture/replication.md similarity index 100% rename from site/content/3.13/deploy/architecture/replication.md rename to site/content/arangodb/3.13/deploy/architecture/replication.md diff --git a/site/content/3.13/deploy/architecture/scalability.md b/site/content/arangodb/3.13/deploy/architecture/scalability.md similarity index 100% rename from site/content/3.13/deploy/architecture/scalability.md rename to site/content/arangodb/3.13/deploy/architecture/scalability.md diff --git a/site/content/3.13/deploy/cluster/_index.md b/site/content/arangodb/3.13/deploy/cluster/_index.md similarity index 98% rename from site/content/3.13/deploy/cluster/_index.md rename to site/content/arangodb/3.13/deploy/cluster/_index.md index 7a285ae5cd..fe840ace5d 100644 --- a/site/content/3.13/deploy/cluster/_index.md +++ b/site/content/arangodb/3.13/deploy/cluster/_index.md @@ -39,7 +39,7 @@ roles: - _Coordinators_ - _DB-Servers_. -![ArangoDB Cluster](../../../images/cluster-topology.png) +![ArangoDB Cluster](../../../../images/cluster-topology.png) ### Agents @@ -137,7 +137,7 @@ automatically to the different servers. In many situations one can also reap a benefit in data throughput, again because the load can be distributed to multiple machines. -![Cluster Sharding](../../../images/cluster_sharding.jpg) +![Cluster Sharding](../../../../images/cluster_sharding.jpg) From the outside this process is fully transparent: An application may talk to any _Coordinator_ and @@ -380,7 +380,7 @@ See the [Cluster Deployment](deployment/_index.md) chapter for instructions. ArangoDB is also available as a cloud service, the -[**ArangoGraph Insights Platform**](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). +[**Arango Managed Platform (AMP)**](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). ## Cluster ID diff --git a/site/content/3.13/deploy/cluster/administration.md b/site/content/arangodb/3.13/deploy/cluster/administration.md similarity index 100% rename from site/content/3.13/deploy/cluster/administration.md rename to site/content/arangodb/3.13/deploy/cluster/administration.md diff --git a/site/content/3.13/deploy/cluster/deployment/_index.md b/site/content/arangodb/3.13/deploy/cluster/deployment/_index.md similarity index 97% rename from site/content/3.13/deploy/cluster/deployment/_index.md rename to site/content/arangodb/3.13/deploy/cluster/deployment/_index.md index 102d40bed3..5d6d6232f2 100644 --- a/site/content/3.13/deploy/cluster/deployment/_index.md +++ b/site/content/arangodb/3.13/deploy/cluster/deployment/_index.md @@ -9,7 +9,7 @@ You can deploy an ArangoDB cluster in different ways: - [Using the ArangoDB Starter](using-the-arangodb-starter.md) - [Manual Start](manual-start.md) - [Kubernetes](../../kubernetes.md) -- [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), +- [Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), fully managed, available on AWS and GCP ## Preliminary Information For Debian/Ubuntu Systems diff --git a/site/content/3.13/deploy/cluster/deployment/manual-start.md b/site/content/arangodb/3.13/deploy/cluster/deployment/manual-start.md similarity index 100% rename from site/content/3.13/deploy/cluster/deployment/manual-start.md rename to site/content/arangodb/3.13/deploy/cluster/deployment/manual-start.md diff --git a/site/content/3.13/deploy/cluster/deployment/using-the-arangodb-starter.md b/site/content/arangodb/3.13/deploy/cluster/deployment/using-the-arangodb-starter.md similarity index 100% rename from site/content/3.13/deploy/cluster/deployment/using-the-arangodb-starter.md rename to site/content/arangodb/3.13/deploy/cluster/deployment/using-the-arangodb-starter.md diff --git a/site/content/3.13/deploy/cluster/limitations.md b/site/content/arangodb/3.13/deploy/cluster/limitations.md similarity index 100% rename from site/content/3.13/deploy/cluster/limitations.md rename to site/content/arangodb/3.13/deploy/cluster/limitations.md diff --git a/site/content/3.13/deploy/in-the-cloud.md b/site/content/arangodb/3.13/deploy/in-the-cloud.md similarity index 100% rename from site/content/3.13/deploy/in-the-cloud.md rename to site/content/arangodb/3.13/deploy/in-the-cloud.md diff --git a/site/content/3.13/deploy/kubernetes.md b/site/content/arangodb/3.13/deploy/kubernetes.md similarity index 100% rename from site/content/3.13/deploy/kubernetes.md rename to site/content/arangodb/3.13/deploy/kubernetes.md diff --git a/site/content/3.13/deploy/oneshard.md b/site/content/arangodb/3.13/deploy/oneshard.md similarity index 99% rename from site/content/3.13/deploy/oneshard.md rename to site/content/arangodb/3.13/deploy/oneshard.md index cb7ed57fe7..eeaffdd7ad 100644 --- a/site/content/3.13/deploy/oneshard.md +++ b/site/content/arangodb/3.13/deploy/oneshard.md @@ -48,7 +48,7 @@ because they need to send and receive data on several connections, build up results for collection accesses from the received parts followed by further processing. -![OneShard vs. Sharded Cluster Setup](../../images/cluster-sharded-oneshard.png) +![OneShard vs. Sharded Cluster Setup](../../../images/cluster-sharded-oneshard.png) If the database involved in a query is a OneShard database, then the OneShard optimization can be applied to run the query on the diff --git a/site/content/3.13/deploy/production-checklist.md b/site/content/arangodb/3.13/deploy/production-checklist.md similarity index 100% rename from site/content/3.13/deploy/production-checklist.md rename to site/content/arangodb/3.13/deploy/production-checklist.md diff --git a/site/content/3.13/deploy/single-instance-vs-cluster.md b/site/content/arangodb/3.13/deploy/single-instance-vs-cluster.md similarity index 100% rename from site/content/3.13/deploy/single-instance-vs-cluster.md rename to site/content/arangodb/3.13/deploy/single-instance-vs-cluster.md diff --git a/site/content/3.13/deploy/single-instance/_index.md b/site/content/arangodb/3.13/deploy/single-instance/_index.md similarity index 100% rename from site/content/3.13/deploy/single-instance/_index.md rename to site/content/arangodb/3.13/deploy/single-instance/_index.md diff --git a/site/content/3.13/deploy/single-instance/manual-start.md b/site/content/arangodb/3.13/deploy/single-instance/manual-start.md similarity index 100% rename from site/content/3.13/deploy/single-instance/manual-start.md rename to site/content/arangodb/3.13/deploy/single-instance/manual-start.md diff --git a/site/content/3.13/deploy/single-instance/using-the-arangodb-starter.md b/site/content/arangodb/3.13/deploy/single-instance/using-the-arangodb-starter.md similarity index 100% rename from site/content/3.13/deploy/single-instance/using-the-arangodb-starter.md rename to site/content/arangodb/3.13/deploy/single-instance/using-the-arangodb-starter.md diff --git a/site/content/3.13/develop/_index.md b/site/content/arangodb/3.13/develop/_index.md similarity index 100% rename from site/content/3.13/develop/_index.md rename to site/content/arangodb/3.13/develop/_index.md diff --git a/site/content/3.13/develop/drivers/_index.md b/site/content/arangodb/3.13/develop/drivers/_index.md similarity index 100% rename from site/content/3.13/develop/drivers/_index.md rename to site/content/arangodb/3.13/develop/drivers/_index.md diff --git a/site/content/3.13/develop/drivers/go.md b/site/content/arangodb/3.13/develop/drivers/go.md similarity index 100% rename from site/content/3.13/develop/drivers/go.md rename to site/content/arangodb/3.13/develop/drivers/go.md diff --git a/site/content/3.13/develop/drivers/java/_index.md b/site/content/arangodb/3.13/develop/drivers/java/_index.md similarity index 100% rename from site/content/3.13/develop/drivers/java/_index.md rename to site/content/arangodb/3.13/develop/drivers/java/_index.md diff --git a/site/content/3.13/develop/drivers/java/reference-version-7/_index.md b/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/_index.md similarity index 100% rename from site/content/3.13/develop/drivers/java/reference-version-7/_index.md rename to site/content/arangodb/3.13/develop/drivers/java/reference-version-7/_index.md diff --git a/site/content/3.13/develop/drivers/java/reference-version-7/changes-in-version-7.md b/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/changes-in-version-7.md similarity index 100% rename from site/content/3.13/develop/drivers/java/reference-version-7/changes-in-version-7.md rename to site/content/arangodb/3.13/develop/drivers/java/reference-version-7/changes-in-version-7.md diff --git a/site/content/3.13/develop/drivers/java/reference-version-7/driver-setup.md b/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/driver-setup.md similarity index 100% rename from site/content/3.13/develop/drivers/java/reference-version-7/driver-setup.md rename to site/content/arangodb/3.13/develop/drivers/java/reference-version-7/driver-setup.md diff --git a/site/content/3.13/develop/drivers/java/reference-version-7/serialization.md b/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/serialization.md similarity index 100% rename from site/content/3.13/develop/drivers/java/reference-version-7/serialization.md rename to site/content/arangodb/3.13/develop/drivers/java/reference-version-7/serialization.md diff --git a/site/content/3.13/develop/drivers/javascript.md b/site/content/arangodb/3.13/develop/drivers/javascript.md similarity index 100% rename from site/content/3.13/develop/drivers/javascript.md rename to site/content/arangodb/3.13/develop/drivers/javascript.md diff --git a/site/content/3.13/develop/drivers/python.md b/site/content/arangodb/3.13/develop/drivers/python.md similarity index 100% rename from site/content/3.13/develop/drivers/python.md rename to site/content/arangodb/3.13/develop/drivers/python.md diff --git a/site/content/3.13/develop/error-codes.md b/site/content/arangodb/3.13/develop/error-codes.md similarity index 100% rename from site/content/3.13/develop/error-codes.md rename to site/content/arangodb/3.13/develop/error-codes.md diff --git a/site/content/3.13/develop/exit-codes.md b/site/content/arangodb/3.13/develop/exit-codes.md similarity index 100% rename from site/content/3.13/develop/exit-codes.md rename to site/content/arangodb/3.13/develop/exit-codes.md diff --git a/site/content/3.13/develop/foxx-microservices/_index.md b/site/content/arangodb/3.13/develop/foxx-microservices/_index.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/_index.md rename to site/content/arangodb/3.13/develop/foxx-microservices/_index.md diff --git a/site/content/3.13/develop/foxx-microservices/deployment.md b/site/content/arangodb/3.13/develop/foxx-microservices/deployment.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/deployment.md rename to site/content/arangodb/3.13/develop/foxx-microservices/deployment.md diff --git a/site/content/3.13/develop/foxx-microservices/getting-started.md b/site/content/arangodb/3.13/develop/foxx-microservices/getting-started.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/getting-started.md rename to site/content/arangodb/3.13/develop/foxx-microservices/getting-started.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/_index.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/_index.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/_index.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/_index.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/access-from-the-browser.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/access-from-the-browser.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/access-from-the-browser.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/access-from-the-browser.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/authentication-and-sessions.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/authentication-and-sessions.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/authentication-and-sessions.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/authentication-and-sessions.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/development-mode.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/development-mode.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/development-mode.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/development-mode.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/foxx-in-a-cluster.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/foxx-in-a-cluster.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/foxx-in-a-cluster.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/foxx-in-a-cluster.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/linking-services-together.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/linking-services-together.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/linking-services-together.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/linking-services-together.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/making-requests.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/making-requests.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/making-requests.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/making-requests.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/scripts-and-scheduling.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/scripts-and-scheduling.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/scripts-and-scheduling.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/scripts-and-scheduling.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/testing-foxx-services.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/testing-foxx-services.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/testing-foxx-services.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/testing-foxx-services.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/using-node-modules.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/using-node-modules.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/using-node-modules.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/using-node-modules.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/using-webpack-with-foxx.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/using-webpack-with-foxx.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/using-webpack-with-foxx.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/using-webpack-with-foxx.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/working-with-collections.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/working-with-collections.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/working-with-collections.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/working-with-collections.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/working-with-files.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/working-with-files.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/working-with-files.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/working-with-files.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/working-with-routers.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/working-with-routers.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/working-with-routers.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/working-with-routers.md diff --git a/site/content/3.13/develop/foxx-microservices/guides/writing-queries.md b/site/content/arangodb/3.13/develop/foxx-microservices/guides/writing-queries.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/guides/writing-queries.md rename to site/content/arangodb/3.13/develop/foxx-microservices/guides/writing-queries.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/_index.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/_index.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/_index.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/_index.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/configuration.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/configuration.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/configuration.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/configuration.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/related-modules/_index.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/_index.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/related-modules/_index.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/_index.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/related-modules/authentication.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/authentication.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/related-modules/authentication.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/authentication.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/related-modules/graphql.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/graphql.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/related-modules/graphql.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/graphql.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/related-modules/oauth-2-0.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/oauth-2-0.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/related-modules/oauth-2-0.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/oauth-2-0.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/related-modules/queues.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/queues.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/related-modules/queues.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/queues.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/routers/_index.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/_index.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/routers/_index.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/_index.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/routers/endpoints.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/endpoints.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/routers/endpoints.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/endpoints.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/routers/middleware.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/middleware.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/routers/middleware.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/middleware.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/routers/request.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/request.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/routers/request.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/request.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/routers/response.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/response.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/routers/response.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/response.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/service-context.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/service-context.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/service-context.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/service-context.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/service-manifest.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/service-manifest.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/service-manifest.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/service-manifest.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/_index.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/_index.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/_index.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/_index.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md diff --git a/site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md b/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md similarity index 100% rename from site/content/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md rename to site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md diff --git a/site/content/3.13/develop/http-api/_index.md b/site/content/arangodb/3.13/develop/http-api/_index.md similarity index 98% rename from site/content/3.13/develop/http-api/_index.md rename to site/content/arangodb/3.13/develop/http-api/_index.md index 2a6b57b51e..e42c7b49f3 100644 --- a/site/content/3.13/develop/http-api/_index.md +++ b/site/content/arangodb/3.13/develop/http-api/_index.md @@ -105,7 +105,7 @@ You can explore the API with the interactive **Swagger UI** using the 2. Click the **Rest API** tab. 3. Click a section and endpoint to view the description and parameters. -![The web interface with the navigation on the left and the tabs at the top](../../../images/swagger_serverapi_overview312.png) +![The web interface with the navigation on the left and the tabs at the top](../../../../images/swagger_serverapi_overview312.png) Also see this blog post: [Using the ArangoDB Swagger.io Interactive API Documentation](https://www.arangodb.com/2018/03/using-arangodb-swaggerio-interactive-api-documentation/). diff --git a/site/content/3.13/develop/http-api/administration.md b/site/content/arangodb/3.13/develop/http-api/administration.md similarity index 100% rename from site/content/3.13/develop/http-api/administration.md rename to site/content/arangodb/3.13/develop/http-api/administration.md diff --git a/site/content/3.13/develop/http-api/analyzers.md b/site/content/arangodb/3.13/develop/http-api/analyzers.md similarity index 100% rename from site/content/3.13/develop/http-api/analyzers.md rename to site/content/arangodb/3.13/develop/http-api/analyzers.md diff --git a/site/content/3.13/develop/http-api/authentication.md b/site/content/arangodb/3.13/develop/http-api/authentication.md similarity index 99% rename from site/content/3.13/develop/http-api/authentication.md rename to site/content/arangodb/3.13/develop/http-api/authentication.md index dcae69cdcb..7c004950b4 100644 --- a/site/content/3.13/develop/http-api/authentication.md +++ b/site/content/arangodb/3.13/develop/http-api/authentication.md @@ -938,7 +938,7 @@ assert(response.tokens?.length === 0); ## Hot-reload JWT secrets {{< tip >}} -In the ArangoGraph Insights Platform, authentication secrets are managed and +In the Arango Managed Platform (AMP), authentication secrets are managed and therefore this feature isn't available. {{< /tip >}} diff --git a/site/content/3.13/develop/http-api/cluster.md b/site/content/arangodb/3.13/develop/http-api/cluster.md similarity index 100% rename from site/content/3.13/develop/http-api/cluster.md rename to site/content/arangodb/3.13/develop/http-api/cluster.md diff --git a/site/content/3.13/develop/http-api/collections.md b/site/content/arangodb/3.13/develop/http-api/collections.md similarity index 100% rename from site/content/3.13/develop/http-api/collections.md rename to site/content/arangodb/3.13/develop/http-api/collections.md diff --git a/site/content/3.13/develop/http-api/databases.md b/site/content/arangodb/3.13/develop/http-api/databases.md similarity index 100% rename from site/content/3.13/develop/http-api/databases.md rename to site/content/arangodb/3.13/develop/http-api/databases.md diff --git a/site/content/3.13/develop/http-api/documents.md b/site/content/arangodb/3.13/develop/http-api/documents.md similarity index 100% rename from site/content/3.13/develop/http-api/documents.md rename to site/content/arangodb/3.13/develop/http-api/documents.md diff --git a/site/content/3.13/develop/http-api/foxx.md b/site/content/arangodb/3.13/develop/http-api/foxx.md similarity index 100% rename from site/content/3.13/develop/http-api/foxx.md rename to site/content/arangodb/3.13/develop/http-api/foxx.md diff --git a/site/content/3.13/develop/http-api/general-request-handling.md b/site/content/arangodb/3.13/develop/http-api/general-request-handling.md similarity index 100% rename from site/content/3.13/develop/http-api/general-request-handling.md rename to site/content/arangodb/3.13/develop/http-api/general-request-handling.md diff --git a/site/content/3.13/develop/http-api/graphs/_index.md b/site/content/arangodb/3.13/develop/http-api/graphs/_index.md similarity index 100% rename from site/content/3.13/develop/http-api/graphs/_index.md rename to site/content/arangodb/3.13/develop/http-api/graphs/_index.md diff --git a/site/content/3.13/develop/http-api/graphs/edges.md b/site/content/arangodb/3.13/develop/http-api/graphs/edges.md similarity index 100% rename from site/content/3.13/develop/http-api/graphs/edges.md rename to site/content/arangodb/3.13/develop/http-api/graphs/edges.md diff --git a/site/content/3.13/develop/http-api/graphs/named-graphs.md b/site/content/arangodb/3.13/develop/http-api/graphs/named-graphs.md similarity index 99% rename from site/content/3.13/develop/http-api/graphs/named-graphs.md rename to site/content/arangodb/3.13/develop/http-api/graphs/named-graphs.md index 5f5123ad4b..88602a529a 100644 --- a/site/content/3.13/develop/http-api/graphs/named-graphs.md +++ b/site/content/arangodb/3.13/develop/http-api/graphs/named-graphs.md @@ -18,11 +18,11 @@ The examples use the following example graphs: [_Social Graph_](../../../graphs/example-graphs.md#social-graph): -![Social Example Graph](../../../../images/social_graph.png) +![Social Example Graph](../../../../../images/social_graph.png) [_Knows Graph_](../../../graphs/example-graphs.md#knows-graph): -![Social Example Graph](../../../../images/knows_graph.png) +![Social Example Graph](../../../../../images/knows_graph.png) ## Management diff --git a/site/content/3.13/develop/http-api/hot-backups.md b/site/content/arangodb/3.13/develop/http-api/hot-backups.md similarity index 99% rename from site/content/3.13/develop/http-api/hot-backups.md rename to site/content/arangodb/3.13/develop/http-api/hot-backups.md index a585b2244c..d1962db6f9 100644 --- a/site/content/3.13/develop/http-api/hot-backups.md +++ b/site/content/arangodb/3.13/develop/http-api/hot-backups.md @@ -7,8 +7,8 @@ description: >- backups --- {{< tip >}} -In the ArangoGraph Insights Platform, use managed -[Backups](../../arangograph/backups.md) instead. +In the Arango Managed Platform (AMP), use managed +[Backups](../../../../amp/backups.md) instead. {{< /tip >}} Hot Backups are near instantaneous consistent snapshots of an diff --git a/site/content/3.13/develop/http-api/import.md b/site/content/arangodb/3.13/develop/http-api/import.md similarity index 100% rename from site/content/3.13/develop/http-api/import.md rename to site/content/arangodb/3.13/develop/http-api/import.md diff --git a/site/content/3.13/develop/http-api/indexes/_index.md b/site/content/arangodb/3.13/develop/http-api/indexes/_index.md similarity index 100% rename from site/content/3.13/develop/http-api/indexes/_index.md rename to site/content/arangodb/3.13/develop/http-api/indexes/_index.md diff --git a/site/content/3.13/develop/http-api/indexes/fulltext.md b/site/content/arangodb/3.13/develop/http-api/indexes/fulltext.md similarity index 100% rename from site/content/3.13/develop/http-api/indexes/fulltext.md rename to site/content/arangodb/3.13/develop/http-api/indexes/fulltext.md diff --git a/site/content/3.13/develop/http-api/indexes/geo-spatial.md b/site/content/arangodb/3.13/develop/http-api/indexes/geo-spatial.md similarity index 100% rename from site/content/3.13/develop/http-api/indexes/geo-spatial.md rename to site/content/arangodb/3.13/develop/http-api/indexes/geo-spatial.md diff --git a/site/content/3.13/develop/http-api/indexes/inverted.md b/site/content/arangodb/3.13/develop/http-api/indexes/inverted.md similarity index 100% rename from site/content/3.13/develop/http-api/indexes/inverted.md rename to site/content/arangodb/3.13/develop/http-api/indexes/inverted.md diff --git a/site/content/3.13/develop/http-api/indexes/multi-dimensional.md b/site/content/arangodb/3.13/develop/http-api/indexes/multi-dimensional.md similarity index 100% rename from site/content/3.13/develop/http-api/indexes/multi-dimensional.md rename to site/content/arangodb/3.13/develop/http-api/indexes/multi-dimensional.md diff --git a/site/content/3.13/develop/http-api/indexes/persistent.md b/site/content/arangodb/3.13/develop/http-api/indexes/persistent.md similarity index 100% rename from site/content/3.13/develop/http-api/indexes/persistent.md rename to site/content/arangodb/3.13/develop/http-api/indexes/persistent.md diff --git a/site/content/3.13/develop/http-api/indexes/ttl.md b/site/content/arangodb/3.13/develop/http-api/indexes/ttl.md similarity index 100% rename from site/content/3.13/develop/http-api/indexes/ttl.md rename to site/content/arangodb/3.13/develop/http-api/indexes/ttl.md diff --git a/site/content/3.13/develop/http-api/indexes/vector.md b/site/content/arangodb/3.13/develop/http-api/indexes/vector.md similarity index 100% rename from site/content/3.13/develop/http-api/indexes/vector.md rename to site/content/arangodb/3.13/develop/http-api/indexes/vector.md diff --git a/site/content/3.13/develop/http-api/jobs.md b/site/content/arangodb/3.13/develop/http-api/jobs.md similarity index 100% rename from site/content/3.13/develop/http-api/jobs.md rename to site/content/arangodb/3.13/develop/http-api/jobs.md diff --git a/site/content/3.13/develop/http-api/monitoring/_index.md b/site/content/arangodb/3.13/develop/http-api/monitoring/_index.md similarity index 100% rename from site/content/3.13/develop/http-api/monitoring/_index.md rename to site/content/arangodb/3.13/develop/http-api/monitoring/_index.md diff --git a/site/content/3.13/develop/http-api/monitoring/logs.md b/site/content/arangodb/3.13/develop/http-api/monitoring/logs.md similarity index 100% rename from site/content/3.13/develop/http-api/monitoring/logs.md rename to site/content/arangodb/3.13/develop/http-api/monitoring/logs.md diff --git a/site/content/3.13/develop/http-api/monitoring/metrics.md b/site/content/arangodb/3.13/develop/http-api/monitoring/metrics.md similarity index 100% rename from site/content/3.13/develop/http-api/monitoring/metrics.md rename to site/content/arangodb/3.13/develop/http-api/monitoring/metrics.md diff --git a/site/content/3.13/develop/http-api/monitoring/statistics.md b/site/content/arangodb/3.13/develop/http-api/monitoring/statistics.md similarity index 100% rename from site/content/3.13/develop/http-api/monitoring/statistics.md rename to site/content/arangodb/3.13/develop/http-api/monitoring/statistics.md diff --git a/site/content/3.13/develop/http-api/queries/_index.md b/site/content/arangodb/3.13/develop/http-api/queries/_index.md similarity index 100% rename from site/content/3.13/develop/http-api/queries/_index.md rename to site/content/arangodb/3.13/develop/http-api/queries/_index.md diff --git a/site/content/3.13/develop/http-api/queries/aql-queries.md b/site/content/arangodb/3.13/develop/http-api/queries/aql-queries.md similarity index 100% rename from site/content/3.13/develop/http-api/queries/aql-queries.md rename to site/content/arangodb/3.13/develop/http-api/queries/aql-queries.md diff --git a/site/content/3.13/develop/http-api/queries/aql-query-plan-cache.md b/site/content/arangodb/3.13/develop/http-api/queries/aql-query-plan-cache.md similarity index 100% rename from site/content/3.13/develop/http-api/queries/aql-query-plan-cache.md rename to site/content/arangodb/3.13/develop/http-api/queries/aql-query-plan-cache.md diff --git a/site/content/3.13/develop/http-api/queries/aql-query-results-cache.md b/site/content/arangodb/3.13/develop/http-api/queries/aql-query-results-cache.md similarity index 100% rename from site/content/3.13/develop/http-api/queries/aql-query-results-cache.md rename to site/content/arangodb/3.13/develop/http-api/queries/aql-query-results-cache.md diff --git a/site/content/3.13/develop/http-api/queries/user-defined-aql-functions.md b/site/content/arangodb/3.13/develop/http-api/queries/user-defined-aql-functions.md similarity index 100% rename from site/content/3.13/develop/http-api/queries/user-defined-aql-functions.md rename to site/content/arangodb/3.13/develop/http-api/queries/user-defined-aql-functions.md diff --git a/site/content/3.13/develop/http-api/replication/_index.md b/site/content/arangodb/3.13/develop/http-api/replication/_index.md similarity index 100% rename from site/content/3.13/develop/http-api/replication/_index.md rename to site/content/arangodb/3.13/develop/http-api/replication/_index.md diff --git a/site/content/3.13/develop/http-api/replication/other-replication-commands.md b/site/content/arangodb/3.13/develop/http-api/replication/other-replication-commands.md similarity index 100% rename from site/content/3.13/develop/http-api/replication/other-replication-commands.md rename to site/content/arangodb/3.13/develop/http-api/replication/other-replication-commands.md diff --git a/site/content/3.13/develop/http-api/replication/replication-applier.md b/site/content/arangodb/3.13/develop/http-api/replication/replication-applier.md similarity index 100% rename from site/content/3.13/develop/http-api/replication/replication-applier.md rename to site/content/arangodb/3.13/develop/http-api/replication/replication-applier.md diff --git a/site/content/3.13/develop/http-api/replication/replication-dump.md b/site/content/arangodb/3.13/develop/http-api/replication/replication-dump.md similarity index 100% rename from site/content/3.13/develop/http-api/replication/replication-dump.md rename to site/content/arangodb/3.13/develop/http-api/replication/replication-dump.md diff --git a/site/content/3.13/develop/http-api/replication/replication-logger.md b/site/content/arangodb/3.13/develop/http-api/replication/replication-logger.md similarity index 100% rename from site/content/3.13/develop/http-api/replication/replication-logger.md rename to site/content/arangodb/3.13/develop/http-api/replication/replication-logger.md diff --git a/site/content/3.13/develop/http-api/replication/write-ahead-log.md b/site/content/arangodb/3.13/develop/http-api/replication/write-ahead-log.md similarity index 100% rename from site/content/3.13/develop/http-api/replication/write-ahead-log.md rename to site/content/arangodb/3.13/develop/http-api/replication/write-ahead-log.md diff --git a/site/content/3.13/develop/http-api/security.md b/site/content/arangodb/3.13/develop/http-api/security.md similarity index 100% rename from site/content/3.13/develop/http-api/security.md rename to site/content/arangodb/3.13/develop/http-api/security.md diff --git a/site/content/3.13/develop/http-api/tasks.md b/site/content/arangodb/3.13/develop/http-api/tasks.md similarity index 100% rename from site/content/3.13/develop/http-api/tasks.md rename to site/content/arangodb/3.13/develop/http-api/tasks.md diff --git a/site/content/3.13/develop/http-api/transactions/_index.md b/site/content/arangodb/3.13/develop/http-api/transactions/_index.md similarity index 100% rename from site/content/3.13/develop/http-api/transactions/_index.md rename to site/content/arangodb/3.13/develop/http-api/transactions/_index.md diff --git a/site/content/3.13/develop/http-api/transactions/javascript-transactions.md b/site/content/arangodb/3.13/develop/http-api/transactions/javascript-transactions.md similarity index 100% rename from site/content/3.13/develop/http-api/transactions/javascript-transactions.md rename to site/content/arangodb/3.13/develop/http-api/transactions/javascript-transactions.md diff --git a/site/content/3.13/develop/http-api/transactions/stream-transactions.md b/site/content/arangodb/3.13/develop/http-api/transactions/stream-transactions.md similarity index 100% rename from site/content/3.13/develop/http-api/transactions/stream-transactions.md rename to site/content/arangodb/3.13/develop/http-api/transactions/stream-transactions.md diff --git a/site/content/3.13/develop/http-api/users.md b/site/content/arangodb/3.13/develop/http-api/users.md similarity index 100% rename from site/content/3.13/develop/http-api/users.md rename to site/content/arangodb/3.13/develop/http-api/users.md diff --git a/site/content/3.13/develop/http-api/views/_index.md b/site/content/arangodb/3.13/develop/http-api/views/_index.md similarity index 100% rename from site/content/3.13/develop/http-api/views/_index.md rename to site/content/arangodb/3.13/develop/http-api/views/_index.md diff --git a/site/content/3.13/develop/http-api/views/arangosearch-views.md b/site/content/arangodb/3.13/develop/http-api/views/arangosearch-views.md similarity index 100% rename from site/content/3.13/develop/http-api/views/arangosearch-views.md rename to site/content/arangodb/3.13/develop/http-api/views/arangosearch-views.md diff --git a/site/content/3.13/develop/http-api/views/search-alias-views.md b/site/content/arangodb/3.13/develop/http-api/views/search-alias-views.md similarity index 100% rename from site/content/3.13/develop/http-api/views/search-alias-views.md rename to site/content/arangodb/3.13/develop/http-api/views/search-alias-views.md diff --git a/site/content/3.13/develop/integrations/_index.md b/site/content/arangodb/3.13/develop/integrations/_index.md similarity index 100% rename from site/content/3.13/develop/integrations/_index.md rename to site/content/arangodb/3.13/develop/integrations/_index.md diff --git a/site/content/3.13/develop/integrations/arangodb-datasource-for-apache-spark.md b/site/content/arangodb/3.13/develop/integrations/arangodb-datasource-for-apache-spark.md similarity index 99% rename from site/content/3.13/develop/integrations/arangodb-datasource-for-apache-spark.md rename to site/content/arangodb/3.13/develop/integrations/arangodb-datasource-for-apache-spark.md index b05d1acfb1..1124193864 100644 --- a/site/content/3.13/develop/integrations/arangodb-datasource-for-apache-spark.md +++ b/site/content/arangodb/3.13/develop/integrations/arangodb-datasource-for-apache-spark.md @@ -374,7 +374,7 @@ The following Spark SQL data types (subtypes of `org.apache.spark.sql.types.Filt - `MapType` (only with key type `StringType`) - `StructType` -## Connect to the ArangoGraph Insights Platform +## Connect to the Arango Managed Platform (AMP) To connect to SSL secured deployments using X.509 Base64 encoded CA certificate (ArangoGraph): diff --git a/site/content/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md b/site/content/arangodb/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md similarity index 100% rename from site/content/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md rename to site/content/arangodb/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md diff --git a/site/content/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md b/site/content/arangodb/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md similarity index 100% rename from site/content/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md rename to site/content/arangodb/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md diff --git a/site/content/3.13/develop/integrations/spring-boot-arangodb.md b/site/content/arangodb/3.13/develop/integrations/spring-boot-arangodb.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-boot-arangodb.md rename to site/content/arangodb/3.13/develop/integrations/spring-boot-arangodb.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/_index.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/_index.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/_index.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/_index.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/migration.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/migration.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/migration.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/migration.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/_index.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/_index.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/_index.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/_index.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md diff --git a/site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/template.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/template.md similarity index 100% rename from site/content/3.13/develop/integrations/spring-data-arangodb/reference-version-4/template.md rename to site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/template.md diff --git a/site/content/3.13/develop/javascript-api/@arangodb/_index.md b/site/content/arangodb/3.13/develop/javascript-api/@arangodb/_index.md similarity index 100% rename from site/content/3.13/develop/javascript-api/@arangodb/_index.md rename to site/content/arangodb/3.13/develop/javascript-api/@arangodb/_index.md diff --git a/site/content/3.13/develop/javascript-api/@arangodb/collection-object.md b/site/content/arangodb/3.13/develop/javascript-api/@arangodb/collection-object.md similarity index 100% rename from site/content/3.13/develop/javascript-api/@arangodb/collection-object.md rename to site/content/arangodb/3.13/develop/javascript-api/@arangodb/collection-object.md diff --git a/site/content/3.13/develop/javascript-api/@arangodb/cursor-object.md b/site/content/arangodb/3.13/develop/javascript-api/@arangodb/cursor-object.md similarity index 100% rename from site/content/3.13/develop/javascript-api/@arangodb/cursor-object.md rename to site/content/arangodb/3.13/develop/javascript-api/@arangodb/cursor-object.md diff --git a/site/content/3.13/develop/javascript-api/@arangodb/db-object.md b/site/content/arangodb/3.13/develop/javascript-api/@arangodb/db-object.md similarity index 100% rename from site/content/3.13/develop/javascript-api/@arangodb/db-object.md rename to site/content/arangodb/3.13/develop/javascript-api/@arangodb/db-object.md diff --git a/site/content/3.13/develop/javascript-api/@arangodb/view-object.md b/site/content/arangodb/3.13/develop/javascript-api/@arangodb/view-object.md similarity index 100% rename from site/content/3.13/develop/javascript-api/@arangodb/view-object.md rename to site/content/arangodb/3.13/develop/javascript-api/@arangodb/view-object.md diff --git a/site/content/3.13/develop/javascript-api/_index.md b/site/content/arangodb/3.13/develop/javascript-api/_index.md similarity index 100% rename from site/content/3.13/develop/javascript-api/_index.md rename to site/content/arangodb/3.13/develop/javascript-api/_index.md diff --git a/site/content/3.13/develop/javascript-api/actions.md b/site/content/arangodb/3.13/develop/javascript-api/actions.md similarity index 100% rename from site/content/3.13/develop/javascript-api/actions.md rename to site/content/arangodb/3.13/develop/javascript-api/actions.md diff --git a/site/content/3.13/develop/javascript-api/analyzers.md b/site/content/arangodb/3.13/develop/javascript-api/analyzers.md similarity index 100% rename from site/content/3.13/develop/javascript-api/analyzers.md rename to site/content/arangodb/3.13/develop/javascript-api/analyzers.md diff --git a/site/content/3.13/develop/javascript-api/aql-queries.md b/site/content/arangodb/3.13/develop/javascript-api/aql-queries.md similarity index 100% rename from site/content/3.13/develop/javascript-api/aql-queries.md rename to site/content/arangodb/3.13/develop/javascript-api/aql-queries.md diff --git a/site/content/3.13/develop/javascript-api/console.md b/site/content/arangodb/3.13/develop/javascript-api/console.md similarity index 100% rename from site/content/3.13/develop/javascript-api/console.md rename to site/content/arangodb/3.13/develop/javascript-api/console.md diff --git a/site/content/3.13/develop/javascript-api/crypto.md b/site/content/arangodb/3.13/develop/javascript-api/crypto.md similarity index 100% rename from site/content/3.13/develop/javascript-api/crypto.md rename to site/content/arangodb/3.13/develop/javascript-api/crypto.md diff --git a/site/content/3.13/develop/javascript-api/fs.md b/site/content/arangodb/3.13/develop/javascript-api/fs.md similarity index 100% rename from site/content/3.13/develop/javascript-api/fs.md rename to site/content/arangodb/3.13/develop/javascript-api/fs.md diff --git a/site/content/3.13/develop/javascript-api/request.md b/site/content/arangodb/3.13/develop/javascript-api/request.md similarity index 100% rename from site/content/3.13/develop/javascript-api/request.md rename to site/content/arangodb/3.13/develop/javascript-api/request.md diff --git a/site/content/3.13/develop/javascript-api/tasks.md b/site/content/arangodb/3.13/develop/javascript-api/tasks.md similarity index 100% rename from site/content/3.13/develop/javascript-api/tasks.md rename to site/content/arangodb/3.13/develop/javascript-api/tasks.md diff --git a/site/content/3.13/develop/operational-factors.md b/site/content/arangodb/3.13/develop/operational-factors.md similarity index 100% rename from site/content/3.13/develop/operational-factors.md rename to site/content/arangodb/3.13/develop/operational-factors.md diff --git a/site/content/3.13/develop/satellitecollections.md b/site/content/arangodb/3.13/develop/satellitecollections.md similarity index 100% rename from site/content/3.13/develop/satellitecollections.md rename to site/content/arangodb/3.13/develop/satellitecollections.md diff --git a/site/content/3.13/develop/smartjoins.md b/site/content/arangodb/3.13/develop/smartjoins.md similarity index 100% rename from site/content/3.13/develop/smartjoins.md rename to site/content/arangodb/3.13/develop/smartjoins.md diff --git a/site/content/3.13/develop/transactions/_index.md b/site/content/arangodb/3.13/develop/transactions/_index.md similarity index 100% rename from site/content/3.13/develop/transactions/_index.md rename to site/content/arangodb/3.13/develop/transactions/_index.md diff --git a/site/content/3.13/develop/transactions/durability.md b/site/content/arangodb/3.13/develop/transactions/durability.md similarity index 100% rename from site/content/3.13/develop/transactions/durability.md rename to site/content/arangodb/3.13/develop/transactions/durability.md diff --git a/site/content/3.13/develop/transactions/javascript-transactions.md b/site/content/arangodb/3.13/develop/transactions/javascript-transactions.md similarity index 100% rename from site/content/3.13/develop/transactions/javascript-transactions.md rename to site/content/arangodb/3.13/develop/transactions/javascript-transactions.md diff --git a/site/content/3.13/develop/transactions/limitations.md b/site/content/arangodb/3.13/develop/transactions/limitations.md similarity index 100% rename from site/content/3.13/develop/transactions/limitations.md rename to site/content/arangodb/3.13/develop/transactions/limitations.md diff --git a/site/content/3.13/develop/transactions/locking-and-isolation.md b/site/content/arangodb/3.13/develop/transactions/locking-and-isolation.md similarity index 100% rename from site/content/3.13/develop/transactions/locking-and-isolation.md rename to site/content/arangodb/3.13/develop/transactions/locking-and-isolation.md diff --git a/site/content/3.13/develop/transactions/stream-transactions.md b/site/content/arangodb/3.13/develop/transactions/stream-transactions.md similarity index 100% rename from site/content/3.13/develop/transactions/stream-transactions.md rename to site/content/arangodb/3.13/develop/transactions/stream-transactions.md diff --git a/site/content/3.13/get-started/_index.md b/site/content/arangodb/3.13/get-started/_index.md similarity index 100% rename from site/content/3.13/get-started/_index.md rename to site/content/arangodb/3.13/get-started/_index.md diff --git a/site/content/3.13/get-started/how-to-interact-with-arangodb.md b/site/content/arangodb/3.13/get-started/how-to-interact-with-arangodb.md similarity index 100% rename from site/content/3.13/get-started/how-to-interact-with-arangodb.md rename to site/content/arangodb/3.13/get-started/how-to-interact-with-arangodb.md diff --git a/site/content/3.13/get-started/on-premises-installation.md b/site/content/arangodb/3.13/get-started/on-premises-installation.md similarity index 93% rename from site/content/3.13/get-started/on-premises-installation.md rename to site/content/arangodb/3.13/get-started/on-premises-installation.md index 1e4aea9cbf..a2e549904f 100644 --- a/site/content/3.13/get-started/on-premises-installation.md +++ b/site/content/arangodb/3.13/get-started/on-premises-installation.md @@ -28,16 +28,16 @@ Depending on the installation method used, the installation process either prompted for the root password or the default root password is empty (see [Securing the installation](.#securing-the-installation)). -![Web Interface Login Form](../../images/loginView.png) +![Web Interface Login Form](../../../../images/loginView.png) Next you will be asked which database to use. Every server instance comes with a `_system` database. Select this database to continue. -![select database](../../images/selectDBView.png) +![select database](../../../../images/selectDBView.png) You should then be presented the dashboard with server statistics like this: -![Web Interface Dashboard Request Statistics](../../images/ui-dashboard.webp) +![Web Interface Dashboard Request Statistics](../../../../images/ui-dashboard.webp) For a more detailed description of the interface, see [Web Interface](../components/web-interface/_index.md). --> diff --git a/site/content/3.13/get-started/set-up-a-cloud-instance.md b/site/content/arangodb/3.13/get-started/set-up-a-cloud-instance.md similarity index 71% rename from site/content/3.13/get-started/set-up-a-cloud-instance.md rename to site/content/arangodb/3.13/get-started/set-up-a-cloud-instance.md index 2383f20980..7fd3bfa149 100644 --- a/site/content/3.13/get-started/set-up-a-cloud-instance.md +++ b/site/content/arangodb/3.13/get-started/set-up-a-cloud-instance.md @@ -6,10 +6,10 @@ description: >- This quick start guide covers the basics from creating an ArangoGraph account to setting up and accessing your first ArangoGraph deployment --- -For general information about the ArangoGraph Insights Platform, see +For general information about the Arango Managed Platform (AMP), see [dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -For guides and reference documentation, see the [ArangoGraph](../arangograph/_index.md) documentation. +For guides and reference documentation, see the [ArangoGraph](../../../amp/_index.md) documentation. ## Prerequisites @@ -33,7 +33,7 @@ used for multiple accounts. 2. Click the __Start Free__ button or click the __Sign Up__ link in the top right corner. - ![ArangoGraph Homepage](../../images/arangograph-homepage.png) + ![ArangoGraph Homepage](../../../images/arangograph-homepage.png) 3. Review the terms & conditions and privacy policy and click __I accept__. 4. Select the type of sign up you would like to use (GitHub, Google, or @@ -42,11 +42,11 @@ used for multiple accounts. - For the email address option, type your desired email address in the email field and type a strong password in the password field. - {{< image src="../../images/arangograph-create-account.png" alt="ArangoGraph Sign up" style="max-height: 50vh">}} + {{< image src="../../../images/arangograph-create-account.png" alt="ArangoGraph Sign up" style="max-height: 50vh">}} Click the __Sign up__ button. You will receive a verification email. In that mail, click the __Verify my email address__ link or button. - It opens a page in the ArangoGraph Insights Platform that says __Welcome back!__ + It opens a page in the Arango Managed Platform (AMP) that says __Welcome back!__ 5. Click the __Log in__ button to continue and login. 6. If you signed up with an email address of a public email service provider (e.g. Hotmail), a form appears asking for your mobile phone number. Enter the country code @@ -67,25 +67,25 @@ used for multiple accounts. provider and region. Pick one and click __Create deployment__. You can also select your intended use-case. - ![ArangoGraph Dashboard](../../images/arangograph-dashboard-free-tier.png) + ![ArangoGraph Dashboard](../../../images/arangograph-dashboard-free-tier.png) - You can also [create a deployment](../arangograph/deployments/_index.md#how-to-create-a-new-deployment) + You can also [create a deployment](../../../amp/deployments/_index.md#how-to-create-a-new-deployment) manually, if you want fine-grained configuration options. 2. The new deployment is displayed in the list of deployments for the respective project (here: _Avocado_). - ![ArangoGraph Deployments Bootstrapping](../../images/arangograph-deployments-bootstrapping.png) + ![ArangoGraph Deployments Bootstrapping](../../../images/arangograph-deployments-bootstrapping.png) It takes a couple of minutes before the deployment can be used. The status is changed from __Bootstrapping__ to __OK__ eventually and you also receive an email when it is ready. - {{< image src="../../images/arangograph-deployment-ready-email.png" alt="ArangoGraph Deployment Ready Email" style="max-height: 50vh">}} + {{< image src="../../../images/arangograph-deployment-ready-email.png" alt="ArangoGraph Deployment Ready Email" style="max-height: 50vh">}} 3. Click the name of the deployment (or the __Open deployment details__ link in the email) to view the deployment details. - ![ArangoGraph Deployment Ready](../../images/arangograph-deployment-ready.png) + ![ArangoGraph Deployment Ready](../../../images/arangograph-deployment-ready.png) 4. Click the __Open database UI__ button to open the ArangoDB web interface. @@ -96,23 +96,23 @@ used for multiple accounts. Click __Guide__ for instructions on how to access and run queries against this data. - ![ArangoGraph Deployment Examples](../../images/arangograph-deployment-examples.png) + ![ArangoGraph Deployment Examples](../../../images/arangograph-deployment-examples.png) - ![ArangoGraph Deployment Examples IMDB Guide](../../images/arangograph-deployment-examples-imdb-guide.png) + ![ArangoGraph Deployment Examples IMDB Guide](../../../images/arangograph-deployment-examples-imdb-guide.png) ## General Hierarchy -The ArangoGraph Insights Platform supports multi-tenant setups via organizations. +The Arango Managed Platform (AMP) supports multi-tenant setups via organizations. You can create your own organization(s) and invite collaborators or join existing ones via invites. Your organization contains projects. Your projects hold your deployments. -- [**Organizations**](../arangograph/organizations/_index.md) +- [**Organizations**](../../../amp/organizations/_index.md) represent (commercial) entities such as companies. You can be part of multiple organizations with a single user account. - - [**Projects**](../arangograph/projects.md) + - [**Projects**](../../../amp/projects.md) represent organizational units such as teams or applications. - - [**Deployments**](../arangograph/deployments/_index.md) + - [**Deployments**](../../../amp/deployments/_index.md) are the actual instances of ArangoDB clusters. When you sign up for ArangoGraph, an organization and a default project are @@ -125,31 +125,31 @@ question mark to bring up the help menu and choose __Start tour__. This guided tour walks you through the creation of a deployment and shows you how to load example datasets and manage projects and deployments. -![Start tour in menu](../../images/arangograph-tour-start.png) +![Start tour in menu](../../../images/arangograph-tour-start.png) Alternatively, follow the steps of the linked guides: -- [Create a new project](../arangograph/projects.md#how-to-create-a-new-project) (optional) -- [Create a new deployment](../arangograph/deployments/_index.md#how-to-create-a-new-deployment) -- [Install a new certificate](../arangograph/security-and-access-control/x-509-certificates.md) (optional) -- [Access your deployment](../arangograph/deployments/_index.md#how-to-access-your-deployment) -- [Delete your deployment](../arangograph/deployments/_index.md#how-to-delete-a-deployment) +- [Create a new project](../../../amp/projects.md#how-to-create-a-new-project) (optional) +- [Create a new deployment](../../../amp/deployments/_index.md#how-to-create-a-new-deployment) +- [Install a new certificate](../../../amp/security-and-access-control/x-509-certificates.md) (optional) +- [Access your deployment](../../../amp/deployments/_index.md#how-to-access-your-deployment) +- [Delete your deployment](../../../amp/deployments/_index.md#how-to-delete-a-deployment) ## Free-to-Try vs. Paid -The ArangoGraph Insights Platform comes with a free-to-try tier that lets you test +The Arango Managed Platform (AMP) comes with a free-to-try tier that lets you test the ArangoDB Cloud for free for 14 days. It includes one project and one small deployment of 4GB, local backups, and one notebook for learning and data science. After the trial period, your deployment is automatically deleted. You can unlock all features in ArangoGraph at any time by adding your billing details and at least one payment method. See: -- [ArangoGraph Packages](../arangograph/organizations/_index.md#arangograph-packages) -- [How to add billing details to organizations](../arangograph/organizations/billing.md#how-to-add-billing-details) -- [How to add a payment method to an organization](../arangograph/organizations/billing.md#how-to-add-a-payment-method) +- [ArangoGraph Packages](../../../amp/organizations/_index.md#arangograph-packages) +- [How to add billing details to organizations](../../../amp/organizations/billing.md#how-to-add-billing-details) +- [How to add a payment method to an organization](../../../amp/organizations/billing.md#how-to-add-a-payment-method) ## Managed Cloud Service vs. On-premises Comparison: Key Differences -The ArangoGraph Insights Platform aims to make all features of ArangoDB +The Arango Managed Platform (AMP) aims to make all features of ArangoDB available to you, but there are a few key differences: - Encryption (both at rest & network traffic) is always on and cannot be diff --git a/site/content/3.13/get-started/start-using-aql/_index.md b/site/content/arangodb/3.13/get-started/start-using-aql/_index.md similarity index 100% rename from site/content/3.13/get-started/start-using-aql/_index.md rename to site/content/arangodb/3.13/get-started/start-using-aql/_index.md diff --git a/site/content/3.13/get-started/start-using-aql/crud.md b/site/content/arangodb/3.13/get-started/start-using-aql/crud.md similarity index 100% rename from site/content/3.13/get-started/start-using-aql/crud.md rename to site/content/arangodb/3.13/get-started/start-using-aql/crud.md diff --git a/site/content/3.13/get-started/start-using-aql/dataset.md b/site/content/arangodb/3.13/get-started/start-using-aql/dataset.md similarity index 100% rename from site/content/3.13/get-started/start-using-aql/dataset.md rename to site/content/arangodb/3.13/get-started/start-using-aql/dataset.md diff --git a/site/content/3.13/get-started/start-using-aql/filter.md b/site/content/arangodb/3.13/get-started/start-using-aql/filter.md similarity index 100% rename from site/content/3.13/get-started/start-using-aql/filter.md rename to site/content/arangodb/3.13/get-started/start-using-aql/filter.md diff --git a/site/content/3.13/get-started/start-using-aql/geo.md b/site/content/arangodb/3.13/get-started/start-using-aql/geo.md similarity index 100% rename from site/content/3.13/get-started/start-using-aql/geo.md rename to site/content/arangodb/3.13/get-started/start-using-aql/geo.md diff --git a/site/content/3.13/get-started/start-using-aql/graphs.md b/site/content/arangodb/3.13/get-started/start-using-aql/graphs.md similarity index 98% rename from site/content/3.13/get-started/start-using-aql/graphs.md rename to site/content/arangodb/3.13/get-started/start-using-aql/graphs.md index d5c9502ae3..044f1cc4a3 100644 --- a/site/content/3.13/get-started/start-using-aql/graphs.md +++ b/site/content/arangodb/3.13/get-started/start-using-aql/graphs.md @@ -36,7 +36,7 @@ Our characters have the following relations between parents and children Visualized as a graph: -![ChildOf graph visualization](../../../images/ChildOf_Graph.png) +![ChildOf graph visualization](../../../../images/ChildOf_Graph.png) ## Creating the edges @@ -252,7 +252,7 @@ It might be a bit unexpected, that Joffrey is returned twice. However, if you look at the graph visualization, you can see that multiple paths lead from Joffrey (bottom right) to Tywin: -![ChildOf graph visualization](../../../images/ChildOf_Graph.png) +![ChildOf graph visualization](../../../../images/ChildOf_Graph.png) ``` Tywin <- Jaime <- Joffrey diff --git a/site/content/3.13/get-started/start-using-aql/joins.md b/site/content/arangodb/3.13/get-started/start-using-aql/joins.md similarity index 100% rename from site/content/3.13/get-started/start-using-aql/joins.md rename to site/content/arangodb/3.13/get-started/start-using-aql/joins.md diff --git a/site/content/3.13/get-started/start-using-aql/sort-limit.md b/site/content/arangodb/3.13/get-started/start-using-aql/sort-limit.md similarity index 100% rename from site/content/3.13/get-started/start-using-aql/sort-limit.md rename to site/content/arangodb/3.13/get-started/start-using-aql/sort-limit.md diff --git a/site/content/3.13/graphs/_index.md b/site/content/arangodb/3.13/graphs/_index.md similarity index 97% rename from site/content/3.13/graphs/_index.md rename to site/content/arangodb/3.13/graphs/_index.md index 56f3e5e89b..76d5771e20 100644 --- a/site/content/3.13/graphs/_index.md +++ b/site/content/arangodb/3.13/graphs/_index.md @@ -17,12 +17,12 @@ causal relationships, flows of information, energy, and material, interactions a transactions, dependency and hierarchy, as well as similarity and relatedness of any kind. -![An arrow labeled as "Edge" pointing from one circle to another, both labeled "Node"](../../images/data-model-graph-relation-abstract-edge.png) +![An arrow labeled as "Edge" pointing from one circle to another, both labeled "Node"](../../../images/data-model-graph-relation-abstract-edge.png) For example, you can represent people by nodes and their friendships by edges. This lets you form a graph that is a social network in this case. -![Two circles labeled "Mary" and "John", with an arrow labeled "isFriendOf" pointing from "Mary" to "John"](../../images/data-model-graph-relation-concrete.png) +![Two circles labeled "Mary" and "John", with an arrow labeled "isFriendOf" pointing from "Mary" to "John"](../../../images/data-model-graph-relation-concrete.png) The specific terms to refer to nodes and edges in a graph vary depending on the field or context, but they are conceptually the same. In computer science @@ -42,7 +42,7 @@ relate to one another is a very expressive data model. It lets you represent a wide variety of information in a compact and intuitive way. It lets you model complex relationships and interactions of basically everything. -![Three circles labeled "Mary", "Book", and "John", with an arrow labeled "bought" from "Mary" to "Book" and an arrow labeled "isFriendOf" from "Mary" to "John"](../../images/data-model-graph-relations.png) +![Three circles labeled "Mary", "Book", and "John", with an arrow labeled "bought" from "Mary" to "Book" and an arrow labeled "isFriendOf" from "Mary" to "John"](../../../images/data-model-graph-relations.png) Graphs are commonly directed (_digraphs_), which means that each edge goes from one node to another node in a specific direction. This lets you model @@ -215,7 +215,7 @@ suboptimal query performance due to random data distribution. General graphs are the easiest way to get started, no special configuration required. {{< /tip >}} -![General Graph Random Distribution](../../images/general-graph-distribution.png) +![General Graph Random Distribution](../../../images/general-graph-distribution.png) #### When to use SmartGraphs @@ -230,7 +230,7 @@ scenarios, use SmartGraphs. Organize your data efficiently using the `smartGraphAttribute`. {{< /tip >}} -![SmartGraph Distribution](../../images/smartgraph-distribution.png) +![SmartGraph Distribution](../../../images/smartgraph-distribution.png) #### When to use EnterpriseGraphs @@ -244,7 +244,7 @@ If you need improved query execution without manual data distribution, consider using EnterpriseGraphs. {{< /tip >}} -![EnterpriseGraph Distribution](../../images/enterprisegraph-distribution.png) +![EnterpriseGraph Distribution](../../../images/enterprisegraph-distribution.png) #### When to use SatelliteGraphs @@ -331,7 +331,7 @@ with `_from` pointing to `Users/John` and `_to` pointing to attributes to qualify the relation further, like the permissions of **John** in this group, the date when John joined the group, and so on. -![User in group example](../../images/graph_user_in_group.png) +![User in group example](../../../images/graph_user_in_group.png) As a rule of thumb, if you use documents and their attributes in a sentence, nouns would typically be nodes, and the verbs the edges. diff --git a/site/content/3.13/graphs/enterprisegraphs/_index.md b/site/content/arangodb/3.13/graphs/enterprisegraphs/_index.md similarity index 100% rename from site/content/3.13/graphs/enterprisegraphs/_index.md rename to site/content/arangodb/3.13/graphs/enterprisegraphs/_index.md diff --git a/site/content/3.13/graphs/enterprisegraphs/getting-started.md b/site/content/arangodb/3.13/graphs/enterprisegraphs/getting-started.md similarity index 99% rename from site/content/3.13/graphs/enterprisegraphs/getting-started.md rename to site/content/arangodb/3.13/graphs/enterprisegraphs/getting-started.md index 35f92abd86..95e376f612 100644 --- a/site/content/3.13/graphs/enterprisegraphs/getting-started.md +++ b/site/content/arangodb/3.13/graphs/enterprisegraphs/getting-started.md @@ -211,7 +211,7 @@ EnterpriseGraphs. To get started, follow the steps outlined below. 6. Click the name or row of the newly created graph to open the Graph Viewer if you want to visually interact with the graph and manage the graph data. -![Create EnterpriseGraph](../../../images/graphs-create-enterprise-graph-dialog312.png) +![Create EnterpriseGraph](../../../../images/graphs-create-enterprise-graph-dialog312.png) ## Create an EnterpriseGraph using *arangosh* diff --git a/site/content/3.13/graphs/enterprisegraphs/management.md b/site/content/arangodb/3.13/graphs/enterprisegraphs/management.md similarity index 100% rename from site/content/3.13/graphs/enterprisegraphs/management.md rename to site/content/arangodb/3.13/graphs/enterprisegraphs/management.md diff --git a/site/content/3.12/graphs/example-graphs.md b/site/content/arangodb/3.13/graphs/example-graphs.md similarity index 94% rename from site/content/3.12/graphs/example-graphs.md rename to site/content/arangodb/3.13/graphs/example-graphs.md index 03434a4bfd..cfc699abad 100644 --- a/site/content/3.12/graphs/example-graphs.md +++ b/site/content/arangodb/3.13/graphs/example-graphs.md @@ -26,7 +26,7 @@ for reference about how to manage graphs programmatically. The `knows` graph is a set of persons knowing each other: -![Persons relation Example Graph](../../images/knows_graph.png) +![Persons relation Example Graph](../../../images/knows_graph.png) The graph consists of a `persons` node collection connected via a `knows` edge collection. @@ -63,7 +63,7 @@ The `traversalGraph` has been designed to demonstrate filters in traversals. It has some labels to filter on it. The graph's nodes are in a collection called `circles`, and it has an edge collection `edges` to connect them. -![Traversal Graph](../../images/traversal_graph.png) +![Traversal Graph](../../../images/traversal_graph.png) Circles have unique numeric labels. Edges have two boolean attributes (`theFalse` always being `false`, `theTruth` always being `true`) and a label @@ -93,7 +93,7 @@ The nodes in the `kShortestPathsGraph` graph are train stations of cities in Europe and North America. The edges represent train connections between them, with the travel time for both directions as edge weight. -![Train Connection Map](../../images/train_map.png) +![Train Connection Map](../../../images/train_map.png) See the [k Shortest Paths page](../aql/graphs/k-shortest-paths.md) for query examples. @@ -118,7 +118,7 @@ The example graph consists of nodes in the `mps_verts` collection and edges in the `mps_edges` collection. It is a simple traversal graph with start node *A* and end node *C*. -![Mps Graph](../../images/mps_graph.png) +![Mps Graph](../../../images/mps_graph.png) With the [Shortest Path](../aql/graphs/shortest-path.md) algorithm, you either get the shortest path *A* - *B* - *C* or *A* - *D* - *C*. With the @@ -146,7 +146,7 @@ The `worldCountry` graph has as node structure as follows: world → continent → country → capital -![World Graph](../../images/world_graph.png) +![World Graph](../../../images/world_graph.png) In some cases, edge directions aren't forward. Therefore, it may get displayed disjunct in the graph viewer. @@ -175,7 +175,7 @@ The `social` graph is a set of persons and their relations. The graph has `female` and `male` persons as nodes in two node collections. The edges are their connections and stored in the `relation` edge collection. -![Social Example Graph](../../images/social_graph.png) +![Social Example Graph](../../../images/social_graph.png) Example of how to create the graph, inspect its nodes and edges, and delete it again: @@ -201,7 +201,7 @@ multiple node collections (`germanCity` and `frenchCity`). The edges are their interconnections in several edge collections (`frenchHighway`, `germanHighway`, `internationalHighway`). -![Cities Example Graph](../../images/cities_graph.png) +![Cities Example Graph](../../../images/cities_graph.png) Example of how to create the graph, inspect its edges and nodes, and delete it again: @@ -227,7 +227,7 @@ A small example graph comprised of `components` (nodes) and `connections` (edges). Good for trying out graph algorithms such as Weakly Connected Components (WCC). -![Three disjoint subgraphs with 36 nodes and edges in total](../../images/connected_components.png) +![Three disjoint subgraphs with 36 nodes and edges in total](../../../images/connected_components.png) ```js --- diff --git a/site/content/3.13/graphs/general-graphs/_index.md b/site/content/arangodb/3.13/graphs/general-graphs/_index.md similarity index 98% rename from site/content/3.13/graphs/general-graphs/_index.md rename to site/content/arangodb/3.13/graphs/general-graphs/_index.md index db1c8ffaf8..26e4c9a7e3 100644 --- a/site/content/3.13/graphs/general-graphs/_index.md +++ b/site/content/arangodb/3.13/graphs/general-graphs/_index.md @@ -57,7 +57,7 @@ General Graphs. To get started, follow the steps outlined below. 8. Click the name or row of the newly created graph to open the Graph Viewer if you want to visually interact with the graph and manage the graph data. -![Create General Graph](../../../images/Create-GeneralGraph312.png) +![Create General Graph](../../../../images/Create-GeneralGraph312.png) ### Create a General Graph using *arangosh* diff --git a/site/content/3.12/graphs/general-graphs/functions.md b/site/content/arangodb/3.13/graphs/general-graphs/functions.md similarity index 99% rename from site/content/3.12/graphs/general-graphs/functions.md rename to site/content/arangodb/3.13/graphs/general-graphs/functions.md index 447a98a765..b7407a5cbc 100644 --- a/site/content/3.12/graphs/general-graphs/functions.md +++ b/site/content/arangodb/3.13/graphs/general-graphs/functions.md @@ -10,7 +10,7 @@ A lot of these accept a node (or edge) example as parameter as defined in the ne Examples explain the API using the [City Graph](../example-graphs.md#city-graph): -![Social Example Graph](../../../images/cities_graph.png) +![Social Example Graph](../../../../images/cities_graph.png) ## Definition of examples diff --git a/site/content/3.13/graphs/general-graphs/management.md b/site/content/arangodb/3.13/graphs/general-graphs/management.md similarity index 100% rename from site/content/3.13/graphs/general-graphs/management.md rename to site/content/arangodb/3.13/graphs/general-graphs/management.md diff --git a/site/content/3.13/graphs/satellitegraphs/_index.md b/site/content/arangodb/3.13/graphs/satellitegraphs/_index.md similarity index 98% rename from site/content/3.13/graphs/satellitegraphs/_index.md rename to site/content/arangodb/3.13/graphs/satellitegraphs/_index.md index bda0c8326e..9c716f43ed 100644 --- a/site/content/3.13/graphs/satellitegraphs/_index.md +++ b/site/content/arangodb/3.13/graphs/satellitegraphs/_index.md @@ -17,7 +17,7 @@ the performance of such queries. They are the natural extension of the [SatelliteCollections](../../develop/satellitecollections.md) concept to graphs. The same benefits and caveats apply. -![ArangoDB SatelliteGraphs](../../../images/SatelliteGraphs.webp) +![ArangoDB SatelliteGraphs](../../../../images/SatelliteGraphs.webp) ## Why use a SatelliteGraph? diff --git a/site/content/3.13/graphs/satellitegraphs/details.md b/site/content/arangodb/3.13/graphs/satellitegraphs/details.md similarity index 100% rename from site/content/3.13/graphs/satellitegraphs/details.md rename to site/content/arangodb/3.13/graphs/satellitegraphs/details.md diff --git a/site/content/3.13/graphs/satellitegraphs/management.md b/site/content/arangodb/3.13/graphs/satellitegraphs/management.md similarity index 100% rename from site/content/3.13/graphs/satellitegraphs/management.md rename to site/content/arangodb/3.13/graphs/satellitegraphs/management.md diff --git a/site/content/3.12/graphs/smartgraphs/_index.md b/site/content/arangodb/3.13/graphs/smartgraphs/_index.md similarity index 94% rename from site/content/3.12/graphs/smartgraphs/_index.md rename to site/content/arangodb/3.13/graphs/smartgraphs/_index.md index 3da62055e6..9122893c10 100644 --- a/site/content/3.12/graphs/smartgraphs/_index.md +++ b/site/content/arangodb/3.13/graphs/smartgraphs/_index.md @@ -59,7 +59,7 @@ cluster for both scenarios. Let's take a closer look at it. The natural distribution of data for graphs that handle large datasets involves a series of highly interconnected nodes with many edges running between them. -![Random data distribution](../../../images/SmartGraphs_random_distribution.png) +![Random data distribution](../../../../images/SmartGraphs_random_distribution.png) _The orange line indicates an example graph traversal. Notice how it touches nodes on every server._ @@ -85,7 +85,7 @@ connecting nodes with identical `smartGraphAttribute` values are stored on this machine as well. Sharding with this attribute means that the relevant data is now co-located on servers, whenever possible. -![SmartGraphs data distribution](../../../images/SmartGraphs_distribution.png) +![SmartGraphs data distribution](../../../../images/SmartGraphs_distribution.png) _The outcome of moving the data like this is that you retain the scalability as well as the performance of graph traversals in ArangoDB._ @@ -102,7 +102,7 @@ and path search queries can partially be executed locally on each DB-Server. This means a larger part of the query can be executed fully local whenever data from the SatelliteCollections is required. -![SmartGraphs with SatelliteCollections](../../../images/SmartGraphs-using-SatelliteCollections.png) +![SmartGraphs with SatelliteCollections](../../../../images/SmartGraphs-using-SatelliteCollections.png) ## Disjoint SmartGraphs @@ -111,7 +111,7 @@ large forest of graphs, when you have clearly separated subgraphs in your graph dataset. Disjoint SmartGraphs enable the automatic sharding of these subgraphs and prohibit edges connecting them. -![Disjoint SmartGraphs](../../../images/SmartGraphs-Disjoint.png) +![Disjoint SmartGraphs](../../../../images/SmartGraphs-Disjoint.png) _This ensures that graph traversals, shortest path, and k-shortest-paths queries can be executed locally on a DB-Server, achieving improved performance for diff --git a/site/content/3.12/graphs/smartgraphs/getting-started.md b/site/content/arangodb/3.13/graphs/smartgraphs/getting-started.md similarity index 99% rename from site/content/3.12/graphs/smartgraphs/getting-started.md rename to site/content/arangodb/3.13/graphs/smartgraphs/getting-started.md index 6a52edf103..ecf3605146 100644 --- a/site/content/3.12/graphs/smartgraphs/getting-started.md +++ b/site/content/arangodb/3.13/graphs/smartgraphs/getting-started.md @@ -63,7 +63,7 @@ SmartGraphs. To get started, follow the steps outlined below. 7. Click the name or row of the newly created graph to open the Graph Viewer if you want to visually interact with the graph and manage the graph data. -![Create SmartGraph](../../../images/Create-SmartGraph312.png) +![Create SmartGraph](../../../../images/Create-SmartGraph312.png) ## Create a SmartGraph using *arangosh* diff --git a/site/content/3.13/graphs/smartgraphs/management.md b/site/content/arangodb/3.13/graphs/smartgraphs/management.md similarity index 100% rename from site/content/3.13/graphs/smartgraphs/management.md rename to site/content/arangodb/3.13/graphs/smartgraphs/management.md diff --git a/site/content/3.13/graphs/smartgraphs/testing-graphs-on-single-server.md b/site/content/arangodb/3.13/graphs/smartgraphs/testing-graphs-on-single-server.md similarity index 100% rename from site/content/3.13/graphs/smartgraphs/testing-graphs-on-single-server.md rename to site/content/arangodb/3.13/graphs/smartgraphs/testing-graphs-on-single-server.md diff --git a/site/content/3.13/graphs/working-with-edges.md b/site/content/arangodb/3.13/graphs/working-with-edges.md similarity index 100% rename from site/content/3.13/graphs/working-with-edges.md rename to site/content/arangodb/3.13/graphs/working-with-edges.md diff --git a/site/content/3.13/index-and-search/_index.md b/site/content/arangodb/3.13/index-and-search/_index.md similarity index 100% rename from site/content/3.13/index-and-search/_index.md rename to site/content/arangodb/3.13/index-and-search/_index.md diff --git a/site/content/3.13/index-and-search/analyzers.md b/site/content/arangodb/3.13/index-and-search/analyzers.md similarity index 100% rename from site/content/3.13/index-and-search/analyzers.md rename to site/content/arangodb/3.13/index-and-search/analyzers.md diff --git a/site/content/3.13/index-and-search/arangosearch/_index.md b/site/content/arangodb/3.13/index-and-search/arangosearch/_index.md similarity index 99% rename from site/content/3.13/index-and-search/arangosearch/_index.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/_index.md index 1ed9427ec8..cafe475c19 100644 --- a/site/content/3.13/index-and-search/arangosearch/_index.md +++ b/site/content/arangodb/3.13/index-and-search/arangosearch/_index.md @@ -65,7 +65,7 @@ Search results can be sorted by their similarity ranking to return the best matches first using popular scoring algorithms (Okapi BM25, TF-IDF), user-defined relevance boosting and dynamic score calculation. -![Conceptual model of ArangoSearch interacting with Collections and Analyzers](../../../images/arangosearch.png) +![Conceptual model of ArangoSearch interacting with Collections and Analyzers](../../../../images/arangosearch.png) Views can be managed in the web interface, via an [HTTP API](../../develop/http-api/views/_index.md) and through a [JavaScript API](../../develop/javascript-api/@arangodb/db-object.md#views). diff --git a/site/content/3.12/index-and-search/arangosearch/arangosearch-views-reference.md b/site/content/arangodb/3.13/index-and-search/arangosearch/arangosearch-views-reference.md similarity index 99% rename from site/content/3.12/index-and-search/arangosearch/arangosearch-views-reference.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/arangosearch-views-reference.md index cf7c21cdba..758d758003 100644 --- a/site/content/3.12/index-and-search/arangosearch/arangosearch-views-reference.md +++ b/site/content/arangodb/3.13/index-and-search/arangosearch/arangosearch-views-reference.md @@ -58,7 +58,7 @@ To get started, follow the steps outlined below. turn off this limit for any writer. 8. Click **Create**. -![Create new arangosearch View](../../../images/arangosearch-create-new-view.png) +![Create new arangosearch View](../../../../images/arangosearch-create-new-view.png) ## Create `arangosearch` Views using the JavaScript API diff --git a/site/content/3.13/index-and-search/arangosearch/case-sensitivity-and-diacritics.md b/site/content/arangodb/3.13/index-and-search/arangosearch/case-sensitivity-and-diacritics.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/case-sensitivity-and-diacritics.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/case-sensitivity-and-diacritics.md diff --git a/site/content/3.13/index-and-search/arangosearch/exact-value-matching.md b/site/content/arangodb/3.13/index-and-search/arangosearch/exact-value-matching.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/exact-value-matching.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/exact-value-matching.md diff --git a/site/content/3.13/index-and-search/arangosearch/example-datasets.md b/site/content/arangodb/3.13/index-and-search/arangosearch/example-datasets.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/example-datasets.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/example-datasets.md diff --git a/site/content/3.13/index-and-search/arangosearch/faceted-search.md b/site/content/arangodb/3.13/index-and-search/arangosearch/faceted-search.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/faceted-search.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/faceted-search.md diff --git a/site/content/3.13/index-and-search/arangosearch/full-text-token-search.md b/site/content/arangodb/3.13/index-and-search/arangosearch/full-text-token-search.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/full-text-token-search.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/full-text-token-search.md diff --git a/site/content/3.13/index-and-search/arangosearch/fuzzy-search.md b/site/content/arangodb/3.13/index-and-search/arangosearch/fuzzy-search.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/fuzzy-search.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/fuzzy-search.md diff --git a/site/content/3.12/index-and-search/arangosearch/geospatial-search.md b/site/content/arangodb/3.13/index-and-search/arangosearch/geospatial-search.md similarity index 99% rename from site/content/3.12/index-and-search/arangosearch/geospatial-search.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/geospatial-search.md index 37bfad4fc3..7f33e7c73c 100644 --- a/site/content/3.12/index-and-search/arangosearch/geospatial-search.md +++ b/site/content/arangodb/3.13/index-and-search/arangosearch/geospatial-search.md @@ -297,7 +297,7 @@ FOR result IN PUSH( {{< /tabs >}} -![ArangoSearch geospatial query for points in a polygon](../../../images/arangosearch-geo-points-in-polygon.png) +![ArangoSearch geospatial query for points in a polygon](../../../../images/arangosearch-geo-points-in-polygon.png) You do not have to look up the polygon, you can also provide one inline. It is also not necessary to return the polygon, you can return the matches only: @@ -559,7 +559,7 @@ FOR result IN PUSH( {{< /tabs >}} -![ArangoSearch geosptial query for polygons in a polygon](../../../images/arangosearch-geo-polygons-in-polygon.png) +![ArangoSearch geosptial query for polygons in a polygon](../../../../images/arangosearch-geo-polygons-in-polygon.png) Searching for geo features in a rectangle is something you can use together with an interactive map that the user can select the area of interest with. @@ -629,4 +629,4 @@ FOR result IN PUSH( {{< /tabs >}} -![ArangoSearch geospatial query for polygons intersecting a polygon](../../../images/arangosearch-geo-polygons-intersecting-polygon.png) +![ArangoSearch geospatial query for polygons intersecting a polygon](../../../../images/arangosearch-geo-polygons-intersecting-polygon.png) diff --git a/site/content/3.13/index-and-search/arangosearch/nested-search.md b/site/content/arangodb/3.13/index-and-search/arangosearch/nested-search.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/nested-search.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/nested-search.md diff --git a/site/content/3.13/index-and-search/arangosearch/performance.md b/site/content/arangodb/3.13/index-and-search/arangosearch/performance.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/performance.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/performance.md diff --git a/site/content/3.13/index-and-search/arangosearch/phrase-and-proximity-search.md b/site/content/arangodb/3.13/index-and-search/arangosearch/phrase-and-proximity-search.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/phrase-and-proximity-search.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/phrase-and-proximity-search.md diff --git a/site/content/3.13/index-and-search/arangosearch/prefix-matching.md b/site/content/arangodb/3.13/index-and-search/arangosearch/prefix-matching.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/prefix-matching.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/prefix-matching.md diff --git a/site/content/3.13/index-and-search/arangosearch/range-queries.md b/site/content/arangodb/3.13/index-and-search/arangosearch/range-queries.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/range-queries.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/range-queries.md diff --git a/site/content/3.13/index-and-search/arangosearch/ranking.md b/site/content/arangodb/3.13/index-and-search/arangosearch/ranking.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/ranking.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/ranking.md diff --git a/site/content/3.13/index-and-search/arangosearch/search-alias-views-reference.md b/site/content/arangodb/3.13/index-and-search/arangosearch/search-alias-views-reference.md similarity index 97% rename from site/content/3.13/index-and-search/arangosearch/search-alias-views-reference.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/search-alias-views-reference.md index 3b95bd0c65..96a7a7ac19 100644 --- a/site/content/3.13/index-and-search/arangosearch/search-alias-views-reference.md +++ b/site/content/arangodb/3.13/index-and-search/arangosearch/search-alias-views-reference.md @@ -61,7 +61,7 @@ To get started, follow the steps outlined below. 6. To define multiple indexes, click the **Add index** button. 7. Click **Create**. -![Create new search-alias View](../../../images/arangosearch-create-search-alias-view.png) +![Create new search-alias View](../../../../images/arangosearch-create-search-alias-view.png) ## Create `search-alias` Views using the JavaScript API diff --git a/site/content/3.13/index-and-search/arangosearch/search-highlighting.md b/site/content/arangodb/3.13/index-and-search/arangosearch/search-highlighting.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/search-highlighting.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/search-highlighting.md diff --git a/site/content/3.13/index-and-search/arangosearch/wildcard-search.md b/site/content/arangodb/3.13/index-and-search/arangosearch/wildcard-search.md similarity index 100% rename from site/content/3.13/index-and-search/arangosearch/wildcard-search.md rename to site/content/arangodb/3.13/index-and-search/arangosearch/wildcard-search.md diff --git a/site/content/3.13/index-and-search/indexing/_index.md b/site/content/arangodb/3.13/index-and-search/indexing/_index.md similarity index 100% rename from site/content/3.13/index-and-search/indexing/_index.md rename to site/content/arangodb/3.13/index-and-search/indexing/_index.md diff --git a/site/content/3.13/index-and-search/indexing/basics.md b/site/content/arangodb/3.13/index-and-search/indexing/basics.md similarity index 100% rename from site/content/3.13/index-and-search/indexing/basics.md rename to site/content/arangodb/3.13/index-and-search/indexing/basics.md diff --git a/site/content/3.13/index-and-search/indexing/index-utilization.md b/site/content/arangodb/3.13/index-and-search/indexing/index-utilization.md similarity index 100% rename from site/content/3.13/index-and-search/indexing/index-utilization.md rename to site/content/arangodb/3.13/index-and-search/indexing/index-utilization.md diff --git a/site/content/3.13/index-and-search/indexing/which-index-to-use-when.md b/site/content/arangodb/3.13/index-and-search/indexing/which-index-to-use-when.md similarity index 100% rename from site/content/3.13/index-and-search/indexing/which-index-to-use-when.md rename to site/content/arangodb/3.13/index-and-search/indexing/which-index-to-use-when.md diff --git a/site/content/3.13/index-and-search/indexing/working-with-indexes/_index.md b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/_index.md similarity index 100% rename from site/content/3.13/index-and-search/indexing/working-with-indexes/_index.md rename to site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/_index.md diff --git a/site/content/3.13/index-and-search/indexing/working-with-indexes/fulltext-indexes.md b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/fulltext-indexes.md similarity index 100% rename from site/content/3.13/index-and-search/indexing/working-with-indexes/fulltext-indexes.md rename to site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/fulltext-indexes.md diff --git a/site/content/3.13/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md similarity index 100% rename from site/content/3.13/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md rename to site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md diff --git a/site/content/3.13/index-and-search/indexing/working-with-indexes/inverted-indexes.md b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/inverted-indexes.md similarity index 100% rename from site/content/3.13/index-and-search/indexing/working-with-indexes/inverted-indexes.md rename to site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/inverted-indexes.md diff --git a/site/content/3.13/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md similarity index 100% rename from site/content/3.13/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md rename to site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md diff --git a/site/content/3.13/index-and-search/indexing/working-with-indexes/persistent-indexes.md b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/persistent-indexes.md similarity index 100% rename from site/content/3.13/index-and-search/indexing/working-with-indexes/persistent-indexes.md rename to site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/persistent-indexes.md diff --git a/site/content/3.13/index-and-search/indexing/working-with-indexes/ttl-indexes.md b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/ttl-indexes.md similarity index 100% rename from site/content/3.13/index-and-search/indexing/working-with-indexes/ttl-indexes.md rename to site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/ttl-indexes.md diff --git a/site/content/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md similarity index 99% rename from site/content/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md rename to site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md index 94aa2cdc95..3ebbb3f8c9 100644 --- a/site/content/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md +++ b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md @@ -33,7 +33,7 @@ startup option needs to be enabled on the deployment you want to restore to. {{< /warning >}} 1. Enable the experimental vector index feature. -2. Calculate vector embeddings using [ArangoDB's GraphML](../../../data-science/graphml/_index.md) +2. Calculate vector embeddings using [ArangoDB's GraphML](../../../../../gen-ai/graphml/_index.md) capabilities (available in ArangoGraph) or using external tools. Store each vector as an attribute in the respective document. 3. Create a vector index over this attribute. You need to choose which diff --git a/site/content/3.13/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md similarity index 100% rename from site/content/3.13/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md rename to site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md diff --git a/site/content/3.13/operations/_index.md b/site/content/arangodb/3.13/operations/_index.md similarity index 100% rename from site/content/3.13/operations/_index.md rename to site/content/arangodb/3.13/operations/_index.md diff --git a/site/content/3.13/operations/administration/_index.md b/site/content/arangodb/3.13/operations/administration/_index.md similarity index 100% rename from site/content/3.13/operations/administration/_index.md rename to site/content/arangodb/3.13/operations/administration/_index.md diff --git a/site/content/3.13/operations/administration/arangodb-starter/_index.md b/site/content/arangodb/3.13/operations/administration/arangodb-starter/_index.md similarity index 100% rename from site/content/3.13/operations/administration/arangodb-starter/_index.md rename to site/content/arangodb/3.13/operations/administration/arangodb-starter/_index.md diff --git a/site/content/3.13/operations/administration/arangodb-starter/recovery-procedure.md b/site/content/arangodb/3.13/operations/administration/arangodb-starter/recovery-procedure.md similarity index 100% rename from site/content/3.13/operations/administration/arangodb-starter/recovery-procedure.md rename to site/content/arangodb/3.13/operations/administration/arangodb-starter/recovery-procedure.md diff --git a/site/content/3.13/operations/administration/arangodb-starter/removal-procedure.md b/site/content/arangodb/3.13/operations/administration/arangodb-starter/removal-procedure.md similarity index 100% rename from site/content/3.13/operations/administration/arangodb-starter/removal-procedure.md rename to site/content/arangodb/3.13/operations/administration/arangodb-starter/removal-procedure.md diff --git a/site/content/3.13/operations/administration/configuration.md b/site/content/arangodb/3.13/operations/administration/configuration.md similarity index 100% rename from site/content/3.13/operations/administration/configuration.md rename to site/content/arangodb/3.13/operations/administration/configuration.md diff --git a/site/content/3.13/operations/administration/import-and-export.md b/site/content/arangodb/3.13/operations/administration/import-and-export.md similarity index 100% rename from site/content/3.13/operations/administration/import-and-export.md rename to site/content/arangodb/3.13/operations/administration/import-and-export.md diff --git a/site/content/3.13/operations/administration/license-management.md b/site/content/arangodb/3.13/operations/administration/license-management.md similarity index 99% rename from site/content/3.13/operations/administration/license-management.md rename to site/content/arangodb/3.13/operations/administration/license-management.md index 365f990b5c..f51a1aeedf 100644 --- a/site/content/3.13/operations/administration/license-management.md +++ b/site/content/arangodb/3.13/operations/administration/license-management.md @@ -9,7 +9,7 @@ aliases: --- The Enterprise Edition of ArangoDB requires a license so that you can use ArangoDB for commercial purposes and have a dataset size over 100 GiB. See -[ArangoDB Editions](../../about-arangodb/features/_index.md#arangodb-editions) +[ArangoDB Editions](../../about/features/_index.md#arangodb-editions) for details. How to set a license key and to retrieve information about the current license diff --git a/site/content/3.13/operations/administration/log-levels.md b/site/content/arangodb/3.13/operations/administration/log-levels.md similarity index 100% rename from site/content/3.13/operations/administration/log-levels.md rename to site/content/arangodb/3.13/operations/administration/log-levels.md diff --git a/site/content/3.12/operations/administration/reduce-memory-footprint.md b/site/content/arangodb/3.13/operations/administration/reduce-memory-footprint.md similarity index 99% rename from site/content/3.12/operations/administration/reduce-memory-footprint.md rename to site/content/arangodb/3.13/operations/administration/reduce-memory-footprint.md index 4bd19f5572..d0d29b77a7 100644 --- a/site/content/3.12/operations/administration/reduce-memory-footprint.md +++ b/site/content/arangodb/3.13/operations/administration/reduce-memory-footprint.md @@ -701,7 +701,7 @@ otherwise. ## Testing the Effects of Reduced I/O Buffers -![Performance Graph](../../../images/performance_graph.png) +![Performance Graph](../../../../images/performance_graph.png) - 15:50 – Start bigger import - 16:00 – Start writing documents of ~60 KB size one at a time diff --git a/site/content/3.13/operations/administration/telemetrics.md b/site/content/arangodb/3.13/operations/administration/telemetrics.md similarity index 100% rename from site/content/3.13/operations/administration/telemetrics.md rename to site/content/arangodb/3.13/operations/administration/telemetrics.md diff --git a/site/content/3.13/operations/administration/user-management/_index.md b/site/content/arangodb/3.13/operations/administration/user-management/_index.md similarity index 100% rename from site/content/3.13/operations/administration/user-management/_index.md rename to site/content/arangodb/3.13/operations/administration/user-management/_index.md diff --git a/site/content/3.13/operations/administration/user-management/in-arangosh.md b/site/content/arangodb/3.13/operations/administration/user-management/in-arangosh.md similarity index 100% rename from site/content/3.13/operations/administration/user-management/in-arangosh.md rename to site/content/arangodb/3.13/operations/administration/user-management/in-arangosh.md diff --git a/site/content/3.13/operations/backup-and-restore.md b/site/content/arangodb/3.13/operations/backup-and-restore.md similarity index 100% rename from site/content/3.13/operations/backup-and-restore.md rename to site/content/arangodb/3.13/operations/backup-and-restore.md diff --git a/site/content/3.13/operations/installation/_index.md b/site/content/arangodb/3.13/operations/installation/_index.md similarity index 97% rename from site/content/3.13/operations/installation/_index.md rename to site/content/arangodb/3.13/operations/installation/_index.md index 3d225b8ada..eeaf51934f 100644 --- a/site/content/3.13/operations/installation/_index.md +++ b/site/content/arangodb/3.13/operations/installation/_index.md @@ -56,7 +56,7 @@ The official Linux release executables of ArangoDB require the operating system to use a page size of **4096 bytes** or less. {{< tip >}} -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) is a fully-managed service and requires no installation. It's the easiest way to run ArangoDB in the cloud. {{< /tip >}} diff --git a/site/content/3.13/operations/installation/docker.md b/site/content/arangodb/3.13/operations/installation/docker.md similarity index 100% rename from site/content/3.13/operations/installation/docker.md rename to site/content/arangodb/3.13/operations/installation/docker.md diff --git a/site/content/3.13/operations/installation/linux/_index.md b/site/content/arangodb/3.13/operations/installation/linux/_index.md similarity index 100% rename from site/content/3.13/operations/installation/linux/_index.md rename to site/content/arangodb/3.13/operations/installation/linux/_index.md diff --git a/site/content/3.13/operations/installation/linux/linux-os-tuning-script-examples.md b/site/content/arangodb/3.13/operations/installation/linux/linux-os-tuning-script-examples.md similarity index 100% rename from site/content/3.13/operations/installation/linux/linux-os-tuning-script-examples.md rename to site/content/arangodb/3.13/operations/installation/linux/linux-os-tuning-script-examples.md diff --git a/site/content/3.13/operations/installation/linux/operating-system-configuration.md b/site/content/arangodb/3.13/operations/installation/linux/operating-system-configuration.md similarity index 100% rename from site/content/3.13/operations/installation/linux/operating-system-configuration.md rename to site/content/arangodb/3.13/operations/installation/linux/operating-system-configuration.md diff --git a/site/content/3.13/operations/installation/uninstallation.md b/site/content/arangodb/3.13/operations/installation/uninstallation.md similarity index 100% rename from site/content/3.13/operations/installation/uninstallation.md rename to site/content/arangodb/3.13/operations/installation/uninstallation.md diff --git a/site/content/3.13/operations/security/_index.md b/site/content/arangodb/3.13/operations/security/_index.md similarity index 100% rename from site/content/3.13/operations/security/_index.md rename to site/content/arangodb/3.13/operations/security/_index.md diff --git a/site/content/3.13/operations/security/audit-logging.md b/site/content/arangodb/3.13/operations/security/audit-logging.md similarity index 98% rename from site/content/3.13/operations/security/audit-logging.md rename to site/content/arangodb/3.13/operations/security/audit-logging.md index cf18c9abf3..99732fa739 100644 --- a/site/content/3.13/operations/security/audit-logging.md +++ b/site/content/arangodb/3.13/operations/security/audit-logging.md @@ -11,7 +11,7 @@ pageToc: --- {{< tip >}} A similar feature is also available in the -[ArangoGraph Insights Platform](../../arangograph/security-and-access-control/_index.md#using-an-audit-log). +[Arango Managed Platform (AMP)](../../../../amp/security-and-access-control/_index.md#using-an-audit-log). {{< /tip >}} ## Configuration diff --git a/site/content/3.13/operations/security/change-root-password.md b/site/content/arangodb/3.13/operations/security/change-root-password.md similarity index 100% rename from site/content/3.13/operations/security/change-root-password.md rename to site/content/arangodb/3.13/operations/security/change-root-password.md diff --git a/site/content/3.12/operations/security/encryption-at-rest.md b/site/content/arangodb/3.13/operations/security/encryption-at-rest.md similarity index 97% rename from site/content/3.12/operations/security/encryption-at-rest.md rename to site/content/arangodb/3.13/operations/security/encryption-at-rest.md index d292695e48..e7af703377 100644 --- a/site/content/3.12/operations/security/encryption-at-rest.md +++ b/site/content/arangodb/3.13/operations/security/encryption-at-rest.md @@ -28,9 +28,9 @@ performance and resistance to side-channel attacks. The encryption feature is supported by all ArangoDB deployment modes. {{< info >}} -The ArangoGraph Insights Platform has encryption at rest as well as in transit +The Arango Managed Platform (AMP) has encryption at rest as well as in transit set on by default and cannot be disabled. For more information, see the -[ArangoGraph documentation](../../arangograph/_index.md). +[ArangoGraph documentation](../../../../amp/_index.md). {{< /info >}} ## Limitations diff --git a/site/content/3.13/operations/security/securing-starter-deployments.md b/site/content/arangodb/3.13/operations/security/securing-starter-deployments.md similarity index 100% rename from site/content/3.13/operations/security/securing-starter-deployments.md rename to site/content/arangodb/3.13/operations/security/securing-starter-deployments.md diff --git a/site/content/3.13/operations/security/security-options.md b/site/content/arangodb/3.13/operations/security/security-options.md similarity index 100% rename from site/content/3.13/operations/security/security-options.md rename to site/content/arangodb/3.13/operations/security/security-options.md diff --git a/site/content/3.13/operations/troubleshooting/_index.md b/site/content/arangodb/3.13/operations/troubleshooting/_index.md similarity index 100% rename from site/content/3.13/operations/troubleshooting/_index.md rename to site/content/arangodb/3.13/operations/troubleshooting/_index.md diff --git a/site/content/3.13/operations/troubleshooting/arangod.md b/site/content/arangodb/3.13/operations/troubleshooting/arangod.md similarity index 100% rename from site/content/3.13/operations/troubleshooting/arangod.md rename to site/content/arangodb/3.13/operations/troubleshooting/arangod.md diff --git a/site/content/3.13/operations/troubleshooting/cluster/_index.md b/site/content/arangodb/3.13/operations/troubleshooting/cluster/_index.md similarity index 100% rename from site/content/3.13/operations/troubleshooting/cluster/_index.md rename to site/content/arangodb/3.13/operations/troubleshooting/cluster/_index.md diff --git a/site/content/3.13/operations/troubleshooting/cluster/agency-dump.md b/site/content/arangodb/3.13/operations/troubleshooting/cluster/agency-dump.md similarity index 100% rename from site/content/3.13/operations/troubleshooting/cluster/agency-dump.md rename to site/content/arangodb/3.13/operations/troubleshooting/cluster/agency-dump.md diff --git a/site/content/3.13/operations/troubleshooting/emergency-console.md b/site/content/arangodb/3.13/operations/troubleshooting/emergency-console.md similarity index 100% rename from site/content/3.13/operations/troubleshooting/emergency-console.md rename to site/content/arangodb/3.13/operations/troubleshooting/emergency-console.md diff --git a/site/content/3.13/operations/troubleshooting/query-debug-packages.md b/site/content/arangodb/3.13/operations/troubleshooting/query-debug-packages.md similarity index 100% rename from site/content/3.13/operations/troubleshooting/query-debug-packages.md rename to site/content/arangodb/3.13/operations/troubleshooting/query-debug-packages.md diff --git a/site/content/3.13/operations/upgrading/_index.md b/site/content/arangodb/3.13/operations/upgrading/_index.md similarity index 100% rename from site/content/3.13/operations/upgrading/_index.md rename to site/content/arangodb/3.13/operations/upgrading/_index.md diff --git a/site/content/3.13/operations/upgrading/downgrading.md b/site/content/arangodb/3.13/operations/upgrading/downgrading.md similarity index 100% rename from site/content/3.13/operations/upgrading/downgrading.md rename to site/content/arangodb/3.13/operations/upgrading/downgrading.md diff --git a/site/content/3.13/operations/upgrading/manual-deployments/_index.md b/site/content/arangodb/3.13/operations/upgrading/manual-deployments/_index.md similarity index 100% rename from site/content/3.13/operations/upgrading/manual-deployments/_index.md rename to site/content/arangodb/3.13/operations/upgrading/manual-deployments/_index.md diff --git a/site/content/3.13/operations/upgrading/manual-deployments/cluster.md b/site/content/arangodb/3.13/operations/upgrading/manual-deployments/cluster.md similarity index 100% rename from site/content/3.13/operations/upgrading/manual-deployments/cluster.md rename to site/content/arangodb/3.13/operations/upgrading/manual-deployments/cluster.md diff --git a/site/content/3.13/operations/upgrading/manual-deployments/single-server.md b/site/content/arangodb/3.13/operations/upgrading/manual-deployments/single-server.md similarity index 100% rename from site/content/3.13/operations/upgrading/manual-deployments/single-server.md rename to site/content/arangodb/3.13/operations/upgrading/manual-deployments/single-server.md diff --git a/site/content/3.13/operations/upgrading/starter-deployments.md b/site/content/arangodb/3.13/operations/upgrading/starter-deployments.md similarity index 100% rename from site/content/3.13/operations/upgrading/starter-deployments.md rename to site/content/arangodb/3.13/operations/upgrading/starter-deployments.md diff --git a/site/content/3.13/release-notes/_index.md b/site/content/arangodb/3.13/release-notes/_index.md similarity index 100% rename from site/content/3.13/release-notes/_index.md rename to site/content/arangodb/3.13/release-notes/_index.md diff --git a/site/content/3.13/release-notes/deprecated-and-removed-features.md b/site/content/arangodb/3.13/release-notes/deprecated-and-removed-features.md similarity index 100% rename from site/content/3.13/release-notes/deprecated-and-removed-features.md rename to site/content/arangodb/3.13/release-notes/deprecated-and-removed-features.md diff --git a/site/content/3.13/release-notes/platform.md b/site/content/arangodb/3.13/release-notes/platform.md similarity index 94% rename from site/content/3.13/release-notes/platform.md rename to site/content/arangodb/3.13/release-notes/platform.md index 84ecec3536..850dc4df8b 100644 --- a/site/content/3.13/release-notes/platform.md +++ b/site/content/arangodb/3.13/release-notes/platform.md @@ -35,5 +35,5 @@ user-friendly interface seamlessly integrated into the ArangoDB Platform web int - MLflow integration - Graph Visualizer -To learn more, see the [GenAI Suite](../data-science/_index.md#genai-suite) +To learn more, see the [GenAI Suite](../../../gen-ai/_index.md) documentation. diff --git a/site/content/3.13/release-notes/version-3.0/_index.md b/site/content/arangodb/3.13/release-notes/version-3.0/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.0/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.0/_index.md diff --git a/site/content/3.13/release-notes/version-3.0/incompatible-changes-in-3-0.md b/site/content/arangodb/3.13/release-notes/version-3.0/incompatible-changes-in-3-0.md similarity index 100% rename from site/content/3.13/release-notes/version-3.0/incompatible-changes-in-3-0.md rename to site/content/arangodb/3.13/release-notes/version-3.0/incompatible-changes-in-3-0.md diff --git a/site/content/3.13/release-notes/version-3.0/whats-new-in-3-0.md b/site/content/arangodb/3.13/release-notes/version-3.0/whats-new-in-3-0.md similarity index 100% rename from site/content/3.13/release-notes/version-3.0/whats-new-in-3-0.md rename to site/content/arangodb/3.13/release-notes/version-3.0/whats-new-in-3-0.md diff --git a/site/content/3.13/release-notes/version-3.1/_index.md b/site/content/arangodb/3.13/release-notes/version-3.1/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.1/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.1/_index.md diff --git a/site/content/3.13/release-notes/version-3.1/incompatible-changes-in-3-1.md b/site/content/arangodb/3.13/release-notes/version-3.1/incompatible-changes-in-3-1.md similarity index 100% rename from site/content/3.13/release-notes/version-3.1/incompatible-changes-in-3-1.md rename to site/content/arangodb/3.13/release-notes/version-3.1/incompatible-changes-in-3-1.md diff --git a/site/content/3.13/release-notes/version-3.1/whats-new-in-3-1.md b/site/content/arangodb/3.13/release-notes/version-3.1/whats-new-in-3-1.md similarity index 100% rename from site/content/3.13/release-notes/version-3.1/whats-new-in-3-1.md rename to site/content/arangodb/3.13/release-notes/version-3.1/whats-new-in-3-1.md diff --git a/site/content/3.13/release-notes/version-3.10/_index.md b/site/content/arangodb/3.13/release-notes/version-3.10/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.10/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.10/_index.md diff --git a/site/content/3.13/release-notes/version-3.10/api-changes-in-3-10.md b/site/content/arangodb/3.13/release-notes/version-3.10/api-changes-in-3-10.md similarity index 100% rename from site/content/3.13/release-notes/version-3.10/api-changes-in-3-10.md rename to site/content/arangodb/3.13/release-notes/version-3.10/api-changes-in-3-10.md diff --git a/site/content/3.13/release-notes/version-3.10/incompatible-changes-in-3-10.md b/site/content/arangodb/3.13/release-notes/version-3.10/incompatible-changes-in-3-10.md similarity index 100% rename from site/content/3.13/release-notes/version-3.10/incompatible-changes-in-3-10.md rename to site/content/arangodb/3.13/release-notes/version-3.10/incompatible-changes-in-3-10.md diff --git a/site/content/3.13/release-notes/version-3.10/known-issues-in-3-10.md b/site/content/arangodb/3.13/release-notes/version-3.10/known-issues-in-3-10.md similarity index 100% rename from site/content/3.13/release-notes/version-3.10/known-issues-in-3-10.md rename to site/content/arangodb/3.13/release-notes/version-3.10/known-issues-in-3-10.md diff --git a/site/content/3.13/release-notes/version-3.10/whats-new-in-3-10.md b/site/content/arangodb/3.13/release-notes/version-3.10/whats-new-in-3-10.md similarity index 100% rename from site/content/3.13/release-notes/version-3.10/whats-new-in-3-10.md rename to site/content/arangodb/3.13/release-notes/version-3.10/whats-new-in-3-10.md diff --git a/site/content/3.13/release-notes/version-3.11/_index.md b/site/content/arangodb/3.13/release-notes/version-3.11/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.11/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.11/_index.md diff --git a/site/content/3.13/release-notes/version-3.11/api-changes-in-3-11.md b/site/content/arangodb/3.13/release-notes/version-3.11/api-changes-in-3-11.md similarity index 100% rename from site/content/3.13/release-notes/version-3.11/api-changes-in-3-11.md rename to site/content/arangodb/3.13/release-notes/version-3.11/api-changes-in-3-11.md diff --git a/site/content/3.13/release-notes/version-3.11/incompatible-changes-in-3-11.md b/site/content/arangodb/3.13/release-notes/version-3.11/incompatible-changes-in-3-11.md similarity index 100% rename from site/content/3.13/release-notes/version-3.11/incompatible-changes-in-3-11.md rename to site/content/arangodb/3.13/release-notes/version-3.11/incompatible-changes-in-3-11.md diff --git a/site/content/3.13/release-notes/version-3.11/known-issues-in-3-11.md b/site/content/arangodb/3.13/release-notes/version-3.11/known-issues-in-3-11.md similarity index 100% rename from site/content/3.13/release-notes/version-3.11/known-issues-in-3-11.md rename to site/content/arangodb/3.13/release-notes/version-3.11/known-issues-in-3-11.md diff --git a/site/content/3.13/release-notes/version-3.11/whats-new-in-3-11.md b/site/content/arangodb/3.13/release-notes/version-3.11/whats-new-in-3-11.md similarity index 99% rename from site/content/3.13/release-notes/version-3.11/whats-new-in-3-11.md rename to site/content/arangodb/3.13/release-notes/version-3.11/whats-new-in-3-11.md index 44ee2b0339..e58d83ff2e 100644 --- a/site/content/3.13/release-notes/version-3.11/whats-new-in-3-11.md +++ b/site/content/arangodb/3.13/release-notes/version-3.11/whats-new-in-3-11.md @@ -127,7 +127,7 @@ vertex. Another quality-of-life improvement is the **Start node** setting listin the graph's vertex collections and the available document keys, that you can also search by. -![New graph viewer](../../../images/graphViewer.png) +![New graph viewer](../../../../images/graphViewer.png) You can still switch to the old graph viewer if desired. diff --git a/site/content/3.13/release-notes/version-3.12/_index.md b/site/content/arangodb/3.13/release-notes/version-3.12/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.12/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.12/_index.md diff --git a/site/content/3.13/release-notes/version-3.12/api-changes-in-3-12.md b/site/content/arangodb/3.13/release-notes/version-3.12/api-changes-in-3-12.md similarity index 100% rename from site/content/3.13/release-notes/version-3.12/api-changes-in-3-12.md rename to site/content/arangodb/3.13/release-notes/version-3.12/api-changes-in-3-12.md diff --git a/site/content/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md b/site/content/arangodb/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md similarity index 100% rename from site/content/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md rename to site/content/arangodb/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md diff --git a/site/content/3.13/release-notes/version-3.12/known-issues-in-3-12.md b/site/content/arangodb/3.13/release-notes/version-3.12/known-issues-in-3-12.md similarity index 100% rename from site/content/3.13/release-notes/version-3.12/known-issues-in-3-12.md rename to site/content/arangodb/3.13/release-notes/version-3.12/known-issues-in-3-12.md diff --git a/site/content/3.13/release-notes/version-3.12/whats-new-in-3-12.md b/site/content/arangodb/3.13/release-notes/version-3.12/whats-new-in-3-12.md similarity index 100% rename from site/content/3.13/release-notes/version-3.12/whats-new-in-3-12.md rename to site/content/arangodb/3.13/release-notes/version-3.12/whats-new-in-3-12.md diff --git a/site/content/3.13/release-notes/version-3.13/_index.md b/site/content/arangodb/3.13/release-notes/version-3.13/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.13/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.13/_index.md diff --git a/site/content/3.13/release-notes/version-3.13/api-changes-in-3-13.md b/site/content/arangodb/3.13/release-notes/version-3.13/api-changes-in-3-13.md similarity index 100% rename from site/content/3.13/release-notes/version-3.13/api-changes-in-3-13.md rename to site/content/arangodb/3.13/release-notes/version-3.13/api-changes-in-3-13.md diff --git a/site/content/3.13/release-notes/version-3.13/incompatible-changes-in-3-13.md b/site/content/arangodb/3.13/release-notes/version-3.13/incompatible-changes-in-3-13.md similarity index 100% rename from site/content/3.13/release-notes/version-3.13/incompatible-changes-in-3-13.md rename to site/content/arangodb/3.13/release-notes/version-3.13/incompatible-changes-in-3-13.md diff --git a/site/content/3.13/release-notes/version-3.13/known-issues-in-3-13.md b/site/content/arangodb/3.13/release-notes/version-3.13/known-issues-in-3-13.md similarity index 100% rename from site/content/3.13/release-notes/version-3.13/known-issues-in-3-13.md rename to site/content/arangodb/3.13/release-notes/version-3.13/known-issues-in-3-13.md diff --git a/site/content/3.13/release-notes/version-3.13/whats-new-in-3-13.md b/site/content/arangodb/3.13/release-notes/version-3.13/whats-new-in-3-13.md similarity index 100% rename from site/content/3.13/release-notes/version-3.13/whats-new-in-3-13.md rename to site/content/arangodb/3.13/release-notes/version-3.13/whats-new-in-3-13.md diff --git a/site/content/3.13/release-notes/version-3.2/_index.md b/site/content/arangodb/3.13/release-notes/version-3.2/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.2/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.2/_index.md diff --git a/site/content/3.13/release-notes/version-3.2/incompatible-changes-in-3-2.md b/site/content/arangodb/3.13/release-notes/version-3.2/incompatible-changes-in-3-2.md similarity index 100% rename from site/content/3.13/release-notes/version-3.2/incompatible-changes-in-3-2.md rename to site/content/arangodb/3.13/release-notes/version-3.2/incompatible-changes-in-3-2.md diff --git a/site/content/3.13/release-notes/version-3.2/known-issues-in-3-2.md b/site/content/arangodb/3.13/release-notes/version-3.2/known-issues-in-3-2.md similarity index 100% rename from site/content/3.13/release-notes/version-3.2/known-issues-in-3-2.md rename to site/content/arangodb/3.13/release-notes/version-3.2/known-issues-in-3-2.md diff --git a/site/content/3.13/release-notes/version-3.2/whats-new-in-3-2.md b/site/content/arangodb/3.13/release-notes/version-3.2/whats-new-in-3-2.md similarity index 100% rename from site/content/3.13/release-notes/version-3.2/whats-new-in-3-2.md rename to site/content/arangodb/3.13/release-notes/version-3.2/whats-new-in-3-2.md diff --git a/site/content/3.13/release-notes/version-3.3/_index.md b/site/content/arangodb/3.13/release-notes/version-3.3/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.3/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.3/_index.md diff --git a/site/content/3.13/release-notes/version-3.3/incompatible-changes-in-3-3.md b/site/content/arangodb/3.13/release-notes/version-3.3/incompatible-changes-in-3-3.md similarity index 100% rename from site/content/3.13/release-notes/version-3.3/incompatible-changes-in-3-3.md rename to site/content/arangodb/3.13/release-notes/version-3.3/incompatible-changes-in-3-3.md diff --git a/site/content/3.13/release-notes/version-3.3/known-issues-in-3-3.md b/site/content/arangodb/3.13/release-notes/version-3.3/known-issues-in-3-3.md similarity index 100% rename from site/content/3.13/release-notes/version-3.3/known-issues-in-3-3.md rename to site/content/arangodb/3.13/release-notes/version-3.3/known-issues-in-3-3.md diff --git a/site/content/3.13/release-notes/version-3.3/whats-new-in-3-3.md b/site/content/arangodb/3.13/release-notes/version-3.3/whats-new-in-3-3.md similarity index 100% rename from site/content/3.13/release-notes/version-3.3/whats-new-in-3-3.md rename to site/content/arangodb/3.13/release-notes/version-3.3/whats-new-in-3-3.md diff --git a/site/content/3.13/release-notes/version-3.4/_index.md b/site/content/arangodb/3.13/release-notes/version-3.4/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.4/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.4/_index.md diff --git a/site/content/3.13/release-notes/version-3.4/incompatible-changes-in-3-4.md b/site/content/arangodb/3.13/release-notes/version-3.4/incompatible-changes-in-3-4.md similarity index 100% rename from site/content/3.13/release-notes/version-3.4/incompatible-changes-in-3-4.md rename to site/content/arangodb/3.13/release-notes/version-3.4/incompatible-changes-in-3-4.md diff --git a/site/content/3.13/release-notes/version-3.4/known-issues-in-3-4.md b/site/content/arangodb/3.13/release-notes/version-3.4/known-issues-in-3-4.md similarity index 100% rename from site/content/3.13/release-notes/version-3.4/known-issues-in-3-4.md rename to site/content/arangodb/3.13/release-notes/version-3.4/known-issues-in-3-4.md diff --git a/site/content/3.13/release-notes/version-3.4/whats-new-in-3-4.md b/site/content/arangodb/3.13/release-notes/version-3.4/whats-new-in-3-4.md similarity index 100% rename from site/content/3.13/release-notes/version-3.4/whats-new-in-3-4.md rename to site/content/arangodb/3.13/release-notes/version-3.4/whats-new-in-3-4.md diff --git a/site/content/3.13/release-notes/version-3.5/_index.md b/site/content/arangodb/3.13/release-notes/version-3.5/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.5/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.5/_index.md diff --git a/site/content/3.13/release-notes/version-3.5/incompatible-changes-in-3-5.md b/site/content/arangodb/3.13/release-notes/version-3.5/incompatible-changes-in-3-5.md similarity index 100% rename from site/content/3.13/release-notes/version-3.5/incompatible-changes-in-3-5.md rename to site/content/arangodb/3.13/release-notes/version-3.5/incompatible-changes-in-3-5.md diff --git a/site/content/3.13/release-notes/version-3.5/known-issues-in-3-5.md b/site/content/arangodb/3.13/release-notes/version-3.5/known-issues-in-3-5.md similarity index 100% rename from site/content/3.13/release-notes/version-3.5/known-issues-in-3-5.md rename to site/content/arangodb/3.13/release-notes/version-3.5/known-issues-in-3-5.md diff --git a/site/content/3.13/release-notes/version-3.5/whats-new-in-3-5.md b/site/content/arangodb/3.13/release-notes/version-3.5/whats-new-in-3-5.md similarity index 100% rename from site/content/3.13/release-notes/version-3.5/whats-new-in-3-5.md rename to site/content/arangodb/3.13/release-notes/version-3.5/whats-new-in-3-5.md diff --git a/site/content/3.13/release-notes/version-3.6/_index.md b/site/content/arangodb/3.13/release-notes/version-3.6/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.6/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.6/_index.md diff --git a/site/content/3.13/release-notes/version-3.6/incompatible-changes-in-3-6.md b/site/content/arangodb/3.13/release-notes/version-3.6/incompatible-changes-in-3-6.md similarity index 100% rename from site/content/3.13/release-notes/version-3.6/incompatible-changes-in-3-6.md rename to site/content/arangodb/3.13/release-notes/version-3.6/incompatible-changes-in-3-6.md diff --git a/site/content/3.13/release-notes/version-3.6/known-issues-in-3-6.md b/site/content/arangodb/3.13/release-notes/version-3.6/known-issues-in-3-6.md similarity index 100% rename from site/content/3.13/release-notes/version-3.6/known-issues-in-3-6.md rename to site/content/arangodb/3.13/release-notes/version-3.6/known-issues-in-3-6.md diff --git a/site/content/3.13/release-notes/version-3.6/whats-new-in-3-6.md b/site/content/arangodb/3.13/release-notes/version-3.6/whats-new-in-3-6.md similarity index 100% rename from site/content/3.13/release-notes/version-3.6/whats-new-in-3-6.md rename to site/content/arangodb/3.13/release-notes/version-3.6/whats-new-in-3-6.md diff --git a/site/content/3.13/release-notes/version-3.7/_index.md b/site/content/arangodb/3.13/release-notes/version-3.7/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.7/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.7/_index.md diff --git a/site/content/3.13/release-notes/version-3.7/api-changes-in-3-7.md b/site/content/arangodb/3.13/release-notes/version-3.7/api-changes-in-3-7.md similarity index 100% rename from site/content/3.13/release-notes/version-3.7/api-changes-in-3-7.md rename to site/content/arangodb/3.13/release-notes/version-3.7/api-changes-in-3-7.md diff --git a/site/content/3.13/release-notes/version-3.7/incompatible-changes-in-3-7.md b/site/content/arangodb/3.13/release-notes/version-3.7/incompatible-changes-in-3-7.md similarity index 100% rename from site/content/3.13/release-notes/version-3.7/incompatible-changes-in-3-7.md rename to site/content/arangodb/3.13/release-notes/version-3.7/incompatible-changes-in-3-7.md diff --git a/site/content/3.13/release-notes/version-3.7/known-issues-in-3-7.md b/site/content/arangodb/3.13/release-notes/version-3.7/known-issues-in-3-7.md similarity index 100% rename from site/content/3.13/release-notes/version-3.7/known-issues-in-3-7.md rename to site/content/arangodb/3.13/release-notes/version-3.7/known-issues-in-3-7.md diff --git a/site/content/3.13/release-notes/version-3.7/whats-new-in-3-7.md b/site/content/arangodb/3.13/release-notes/version-3.7/whats-new-in-3-7.md similarity index 100% rename from site/content/3.13/release-notes/version-3.7/whats-new-in-3-7.md rename to site/content/arangodb/3.13/release-notes/version-3.7/whats-new-in-3-7.md diff --git a/site/content/3.13/release-notes/version-3.8/_index.md b/site/content/arangodb/3.13/release-notes/version-3.8/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.8/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.8/_index.md diff --git a/site/content/3.13/release-notes/version-3.8/api-changes-in-3-8.md b/site/content/arangodb/3.13/release-notes/version-3.8/api-changes-in-3-8.md similarity index 100% rename from site/content/3.13/release-notes/version-3.8/api-changes-in-3-8.md rename to site/content/arangodb/3.13/release-notes/version-3.8/api-changes-in-3-8.md diff --git a/site/content/3.13/release-notes/version-3.8/incompatible-changes-in-3-8.md b/site/content/arangodb/3.13/release-notes/version-3.8/incompatible-changes-in-3-8.md similarity index 100% rename from site/content/3.13/release-notes/version-3.8/incompatible-changes-in-3-8.md rename to site/content/arangodb/3.13/release-notes/version-3.8/incompatible-changes-in-3-8.md diff --git a/site/content/3.13/release-notes/version-3.8/known-issues-in-3-8.md b/site/content/arangodb/3.13/release-notes/version-3.8/known-issues-in-3-8.md similarity index 100% rename from site/content/3.13/release-notes/version-3.8/known-issues-in-3-8.md rename to site/content/arangodb/3.13/release-notes/version-3.8/known-issues-in-3-8.md diff --git a/site/content/3.13/release-notes/version-3.8/whats-new-in-3-8.md b/site/content/arangodb/3.13/release-notes/version-3.8/whats-new-in-3-8.md similarity index 100% rename from site/content/3.13/release-notes/version-3.8/whats-new-in-3-8.md rename to site/content/arangodb/3.13/release-notes/version-3.8/whats-new-in-3-8.md diff --git a/site/content/3.13/release-notes/version-3.9/_index.md b/site/content/arangodb/3.13/release-notes/version-3.9/_index.md similarity index 100% rename from site/content/3.13/release-notes/version-3.9/_index.md rename to site/content/arangodb/3.13/release-notes/version-3.9/_index.md diff --git a/site/content/3.13/release-notes/version-3.9/api-changes-in-3-9.md b/site/content/arangodb/3.13/release-notes/version-3.9/api-changes-in-3-9.md similarity index 100% rename from site/content/3.13/release-notes/version-3.9/api-changes-in-3-9.md rename to site/content/arangodb/3.13/release-notes/version-3.9/api-changes-in-3-9.md diff --git a/site/content/3.13/release-notes/version-3.9/incompatible-changes-in-3-9.md b/site/content/arangodb/3.13/release-notes/version-3.9/incompatible-changes-in-3-9.md similarity index 100% rename from site/content/3.13/release-notes/version-3.9/incompatible-changes-in-3-9.md rename to site/content/arangodb/3.13/release-notes/version-3.9/incompatible-changes-in-3-9.md diff --git a/site/content/3.13/release-notes/version-3.9/known-issues-in-3-9.md b/site/content/arangodb/3.13/release-notes/version-3.9/known-issues-in-3-9.md similarity index 100% rename from site/content/3.13/release-notes/version-3.9/known-issues-in-3-9.md rename to site/content/arangodb/3.13/release-notes/version-3.9/known-issues-in-3-9.md diff --git a/site/content/3.13/release-notes/version-3.9/whats-new-in-3-9.md b/site/content/arangodb/3.13/release-notes/version-3.9/whats-new-in-3-9.md similarity index 100% rename from site/content/3.13/release-notes/version-3.9/whats-new-in-3-9.md rename to site/content/arangodb/3.13/release-notes/version-3.9/whats-new-in-3-9.md diff --git a/site/content/arangodb/_index.md b/site/content/arangodb/_index.md new file mode 100644 index 0000000000..a2f621e4e3 --- /dev/null +++ b/site/content/arangodb/_index.md @@ -0,0 +1,7 @@ +--- +title: Recommended Resources +menuTitle: ArangoDB +weight: 3 +layout: default +# Remove this file because this isn't an actual page? +--- \ No newline at end of file diff --git a/site/content/data-platform/_index.md b/site/content/data-platform/_index.md new file mode 100644 index 0000000000..84f9764a1f --- /dev/null +++ b/site/content/data-platform/_index.md @@ -0,0 +1,20 @@ +--- +title: Recommended Resources +menuTitle: Data Platform +weight: 1 +layout: default +--- +{{< cloudbanner >}} + +{{< cards >}} + +{{% card title="What is the ArangoDB Platform?" link="about/" %}} +The ArangoDB Platform is the umbrella for hosting the entire ArangoDB offering +of products, including GraphML and GraphRAG. +{{% /card %}} + +{{% card title="Graph Visualizer" link="graph-visualizer/" %}} +Explore your graph data with an intuitive web interface. +{{% /card %}} + +{{< /cards >}} diff --git a/site/content/platform/about-the-platform/_index.md b/site/content/data-platform/about/_index.md similarity index 97% rename from site/content/platform/about-the-platform/_index.md rename to site/content/data-platform/about/_index.md index e99e148176..a7e7925af8 100644 --- a/site/content/platform/about-the-platform/_index.md +++ b/site/content/data-platform/about/_index.md @@ -48,7 +48,7 @@ of the platform features. - **GraphRAG Retriever**: Perform semantic similarity searches or aggregate insights from graph communities with global and local queries. - **Public and private LLM support**: Use public LLMs such as OpenAI - or private LLMs with [Triton Inference Server](../data-science/graphrag/services/triton-inference-server.md). + or private LLMs with [Triton Inference Server](../../gen-ai/services/triton-inference-server.md). - **MLflow integration**: Use the popular MLflow as a model registry for private LLMs or to run machine learning experiments as part of the ArangoDB Platform. - **Jupyter notebooks**: Run a Jupyter kernel in the platform for hosting @@ -65,7 +65,7 @@ of the platform features. ### Use the ArangoDB Platform as a managed service The ArangoDB Platform is not available as a managed service yet, but it will -become available for the [ArangoGraph Insights Platform](../../3.12/arangograph/_index.md) +become available for the [Arango Managed Platform (AMP)](../../amp/_index.md) in the future. Until then, you can request early access to the self-hosted ArangoDB Platform for testing. diff --git a/site/content/3.13/about-arangodb/features/platform.md b/site/content/data-platform/about/features.md similarity index 78% rename from site/content/3.13/about-arangodb/features/platform.md rename to site/content/data-platform/about/features.md index 2b833379d4..65f61afc50 100644 --- a/site/content/3.13/about-arangodb/features/platform.md +++ b/site/content/data-platform/about/features.md @@ -7,9 +7,6 @@ description: >- of ArangoDB including graph-powered machine learning and GenAI as a single solution with a unified interface --- -For in-depth information about the ArangoDB Platform as a whole and how to -deploy and use it, see [The ArangoDB Platform](../../components/platform.md). - ## Architecture - **Core Database**: The ArangoDB database system forms the solid core @@ -31,27 +28,27 @@ deploy and use it, see [The ArangoDB Platform](../../components/platform.md). ## Features -- [**ArangoDB Core**](core.md): The ArangoDB database system with support for +- [**ArangoDB Core**](../../arangodb/3.12/_index.md): The ArangoDB database system with support for graphs, documents, key-value, full-text search, and vector search. -- [**Graph Visualizer**](../../graphs/graph-visualizer.md): +- [**Graph Visualizer**](../graph-visualizer.md): A web-based tool for exploring your graph data with an intuitive interface and sophisticated querying capabilities. -- [**Graph Analytics**](../../graphs/graph-analytics.md): +- [**Graph Analytics**](../../gen-ai/graph-analytics.md): A service that can efficiently load graph data from the core database system and run graph algorithms such as PageRank and many more. -- [**GenAI Suite**](../../data-science/_index.md): +- [**GenAI Suite**](../../gen-ai/_index.md): ArangoDB's graph-powered machine learning (GraphML) as well as GraphRAG for automatically building knowledge graphs from text and taking advantage of both excerpts and higher-level summaries as context for turbocharging GenAI applications. -- [**Notebook servers**](../../data-science/notebook-servers.md): +- [**Notebook servers**](../../gen-ai/notebook-servers.md): Run Jupyter kernels in the Platform for hosting interactive, Python-based notebooks to experiment and develop applications. -- [**MLflow integration**](../../data-science/graphrag/services/mlflow.md): +- [**MLflow integration**](../../gen-ai/services/mlflow.md): Use the popular MLflow for machine learning practitioners as part of the ArangoDB Platform. diff --git a/site/content/platform/graph-intelligence/graph-visualizer.md b/site/content/data-platform/graph-visualizer.md similarity index 95% rename from site/content/platform/graph-intelligence/graph-visualizer.md rename to site/content/data-platform/graph-visualizer.md index d7d5201e61..e3ae2c0a2d 100644 --- a/site/content/platform/graph-intelligence/graph-visualizer.md +++ b/site/content/data-platform/graph-visualizer.md @@ -19,12 +19,12 @@ to visually understand the structure as well as to inspect and edit the attribut of individual nodes and edges. It also offers query capabilities and you can create new nodes (vertices) and edges (relations). -![A screenshot of the Graph Visualizer user interface showing some persons and movies as circles with arrows indicting who acted in or directed a movie](../../images/graph-visualizer.png) +![A screenshot of the Graph Visualizer user interface showing some persons and movies as circles with arrows indicting who acted in or directed a movie](../images/graph-visualizer.png) {{< info >}} Graph creation is **not** performed within the Graph Visualizer. Graphs must be created in the **Management** section under **Graphs** of the second-level -navigation in the [web interface](../../3.12/components/web-interface/graphs.md). Once +navigation in the [web interface](../arangodb/3.12/components/web-interface/graphs.md). Once created, you can select a graph from the list for exploration and visualization. {{< /info >}} @@ -101,7 +101,7 @@ displayed. 7. To see the neighbor nodes and the edges that connect them, right-click a node, click **Expand (_n_)** and then **All (_n_)**. -![A screenshot of the dialog for adding nodes with two persons selected](../../images/graph-visualizer-add-nodes.png) +![A screenshot of the dialog for adding nodes with two persons selected](../images/graph-visualizer-add-nodes.png) ### Add nodes and edges using a query @@ -140,7 +140,7 @@ You can save queries for future use: - **Delete** a no longer needed query. {{< /tip >}} -![A screenshot of the dialog with a query expanded and a bind variable filled in](../../images/graph-visualizer-queries.png) +![A screenshot of the dialog with a query expanded and a bind variable filled in](../images/graph-visualizer-queries.png) ### Add nodes and edges using a query based on a selection @@ -168,7 +168,7 @@ The query has access to the current selection via special bind variables. ``` 7. Enter a name and optionally a description for the action and click **Save**. -![A screenshot of the context menu for a node showing the available Canvas Actions](../../images/graph-visualizer-menu-canvas-action.png) +![A screenshot of the context menu for a node showing the available Canvas Actions](../images/graph-visualizer-menu-canvas-action.png) ### Remove nodes from the canvas @@ -194,7 +194,7 @@ You can inspect the document attributes of node or edge as follows: - Right-click a node to open the context menu and click **View Node** to open the dialog with the properties. -![A screenshot of the properties dialog with the keys and values of a node](../../images/graph-visualizer-node-properties.png) +![A screenshot of the properties dialog with the keys and values of a node](../images/graph-visualizer-node-properties.png) ### Layouts and navigation tools @@ -251,7 +251,7 @@ dialog, the `_from` and `_to` fields are automatically pre-filled. You may need to swap the IDs as the order is not based on your selection sequence. {{< /info >}} -![A screenshot of the dialog for creating an edge with the From and To fields filled in](../../images/graph-visualizer-create-edge.png) +![A screenshot of the dialog for creating an edge with the From and To fields filled in](../images/graph-visualizer-create-edge.png) ### Edit node and edge properties @@ -296,4 +296,4 @@ labels. All styling changes are visual-only and do not affect the underlying dat - Clear the styling modifications. - See the number of nodes respectively edges on the canvas (by collection). -![A screenshot of the Customization panel with a popover dialog for edge styling open](../../images/graph-visualizer-customization.png) +![A screenshot of the Customization panel with a popover dialog for edge styling open](../images/graph-visualizer-customization.png) diff --git a/site/content/platform/release-notes.md b/site/content/data-platform/release-notes.md similarity index 85% rename from site/content/platform/release-notes.md rename to site/content/data-platform/release-notes.md index 22e37bf1ee..d5d4db5fa9 100644 --- a/site/content/platform/release-notes.md +++ b/site/content/data-platform/release-notes.md @@ -20,7 +20,7 @@ of the core ArangoDB database system along with graph-powered machine learning and GenAI capabilities as a single solution with a unified interface. Deploy the Platform on-premise or in the cloud on top of Kubernetes. -To get started, see [Self-host the ArangoDB Platform](about-the-platform/_index.md#self-host-the-arangodb-platform). +To get started, see [Self-host the ArangoDB Platform](about/_index.md#self-host-the-arangodb-platform). ### GenAI Suite @@ -35,5 +35,5 @@ user-friendly interface seamlessly integrated into the ArangoDB Platform web int - MLflow integration - Graph Visualizer -To learn more, see the [GenAI Suite](data-science/_index.md#genai-suite) +To learn more, see the [GenAI Suite](../gen-ai/_index.md) documentation. diff --git a/site/content/ecosystem/_index.md b/site/content/ecosystem/_index.md new file mode 100644 index 0000000000..578a53e1c4 --- /dev/null +++ b/site/content/ecosystem/_index.md @@ -0,0 +1,6 @@ +--- +title: Recommended Resources +menuTitle: Ecosystem +weight: 5 +layout: default +--- \ No newline at end of file diff --git a/site/content/3.13/data-science/integrations/_index.md b/site/content/ecosystem/adapters/_index.md similarity index 100% rename from site/content/3.13/data-science/integrations/_index.md rename to site/content/ecosystem/adapters/_index.md diff --git a/site/content/3.13/data-science/integrations/arangodb-cugraph-adapter.md b/site/content/ecosystem/adapters/arangodb-cugraph-adapter.md similarity index 100% rename from site/content/3.13/data-science/integrations/arangodb-cugraph-adapter.md rename to site/content/ecosystem/adapters/arangodb-cugraph-adapter.md diff --git a/site/content/3.13/data-science/integrations/arangodb-dgl-adapter.md b/site/content/ecosystem/adapters/arangodb-dgl-adapter.md similarity index 100% rename from site/content/3.13/data-science/integrations/arangodb-dgl-adapter.md rename to site/content/ecosystem/adapters/arangodb-dgl-adapter.md diff --git a/site/content/3.13/data-science/integrations/arangodb-networkx-adapter.md b/site/content/ecosystem/adapters/arangodb-networkx-adapter.md similarity index 100% rename from site/content/3.13/data-science/integrations/arangodb-networkx-adapter.md rename to site/content/ecosystem/adapters/arangodb-networkx-adapter.md diff --git a/site/content/3.13/data-science/integrations/arangodb-pyg-adapter.md b/site/content/ecosystem/adapters/arangodb-pyg-adapter.md similarity index 100% rename from site/content/3.13/data-science/integrations/arangodb-pyg-adapter.md rename to site/content/ecosystem/adapters/arangodb-pyg-adapter.md diff --git a/site/content/3.13/data-science/integrations/arangodb-rdf-adapter.md b/site/content/ecosystem/adapters/arangodb-rdf-adapter.md similarity index 100% rename from site/content/3.13/data-science/integrations/arangodb-rdf-adapter.md rename to site/content/ecosystem/adapters/arangodb-rdf-adapter.md diff --git a/site/content/3.13/data-science/integrations/langchain.md b/site/content/ecosystem/adapters/langchain.md similarity index 100% rename from site/content/3.13/data-science/integrations/langchain.md rename to site/content/ecosystem/adapters/langchain.md diff --git a/site/content/gen-ai/_index.md b/site/content/gen-ai/_index.md new file mode 100644 index 0000000000..caa176ae72 --- /dev/null +++ b/site/content/gen-ai/_index.md @@ -0,0 +1,24 @@ +--- +title: Recommended Resources +menuTitle: 'GenAI Data Platform' +weight: 2 +layout: default +--- +{{< cloudbanner >}} + +{{< cards >}} + +{{% card title="GraphRAG" link="graphrag/" %}} +Arango's GenAI solution for generating knowledge graphs from documents +and chatting with your data. +{{% /card %}} + +{{% card title="GraphML" link="graphml/" %}} +Discover Arango's graph-powered machine learning features. +{{% /card %}} + +{{% card title="Graph Analytics" link="graph-analytics/" %}} +Run algorithms such as PageRank on your graph data. +{{% /card %}} + +{{< /cards >}} diff --git a/site/content/3.13/graphs/graph-analytics.md b/site/content/gen-ai/graph-analytics.md similarity index 96% rename from site/content/3.13/graphs/graph-analytics.md rename to site/content/gen-ai/graph-analytics.md index a3aa6b5f6d..3edcca4dd5 100644 --- a/site/content/3.13/graphs/graph-analytics.md +++ b/site/content/gen-ai/graph-analytics.md @@ -1,7 +1,7 @@ --- title: Graph Analytics menuTitle: Graph Analytics -weight: 115 +weight: 15 description: | ArangoGraph offers Graph Analytics Engines to run graph algorithms on your data separately from your ArangoDB deployments @@ -18,8 +18,8 @@ and network flow analysis. ArangoDB offers a feature for running algorithms on your graph data, called Graph Analytics Engines (GAEs). It is available on request for the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) -and included in the [ArangoDB Platform](../components/platform.md). +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) +and included in the [ArangoDB Platform](../data-platform/about/_index.md). Key features: @@ -59,7 +59,7 @@ How to perform the steps is detailed in the subsequent sections. 6. [Stop the engine service](#stop-a-graphanalytics-service) once you are done. {{< /tab >}} -{{< tab "ArangoGraph Insights Platform" >}} +{{< tab "Arango Managed Platform (AMP)" >}} {{< info >}} Before you can use Graph Analytics Engines, you need to request the feature via __Request help__ in the ArangoGraph dashboard for a deployment. @@ -103,25 +103,25 @@ well as to authenticate requests to the [Engine API](#engine-api). --> {{< /tab >}} -{{< tab "ArangoGraph Insights Platform" >}} +{{< tab "Arango Managed Platform (AMP)" >}} The [Management API](#management-api) for deploying and deleting engines requires an ArangoGraph **API key**. See -[Generating an API Key](../arangograph/api/get-started.md#generating-an-api-key) +[Generating an API Key](../amp/api/get-started.md#generating-an-api-key) on how to create one. You then need to generate an **access token** using the API key. See -[Authenticating with Oasisctl](../arangograph/api/get-started.md#authenticating-with-oasisctl) +[Authenticating with Oasisctl](../amp/api/get-started.md#authenticating-with-oasisctl) on how to do so using `oasisctl login`. The [Engine API](#engine-api) uses one of two authentication methods, depending -on the [__auto login to database UI__](../arangograph/deployments/_index.md#auto-login-to-database-ui) +on the [__auto login to database UI__](../amp/deployments/_index.md#auto-login-to-database-ui) setting in ArangoGraph: - **Enabled**: You can use an ArangoGraph access token created with an API key (see above), allowing you to use one token for both the Management API and the Engine API. - **Disabled**: You need use a JWT user token created from ArangoDB credentials. These session tokens need to be renewed every hour by default. See - [HTTP API Authentication](../develop/http-api/authentication.md#jwt-user-tokens) + [HTTP API Authentication](../arangodb/3.12/develop/http-api/authentication.md#jwt-user-tokens) for details. {{< /tab >}} @@ -138,7 +138,7 @@ The interface for managing the engines depends on the environment you use: {{< tag "ArangoDB Platform" >}} -GAEs are deployed and deleted via the [GenAI service](../data-science/graphrag/services/gen-ai.md) +GAEs are deployed and deleted via the [GenAI service](services/gen-ai.md) in the ArangoDB Platform. If you use cURL, you need to use the `-k` / `--insecure` option for requests @@ -188,7 +188,7 @@ curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X DELETE https://127.0.0.1:8529 {{< tag "ArangoGraph" >}} GAEs are deployed and deleted with the Management API for graph analytics on the -ArangoGraph Insights Platform. You can also list the available engine sizes and +Arango Managed Platform (AMP). You can also list the available engine sizes and get information about deployed engines. To determine the base URL of the management API, use the ArangoGraph dashboard @@ -350,7 +350,7 @@ curl -H "Authorization: bearer $ADB_TOKEN" "$ENGINE_URL/v1/jobs" ``` {{< /tab >}} -{{< tab "ArangoGraph Insights Platform" >}} +{{< tab "Arango Managed Platform (AMP)" >}} To determine the base URL of the engine API, use the ArangoGraph dashboard and copy the __APPLICATION ENDPOINT__ of the deployment that holds the graph data you want to analyze. Replace the port with `8829` and append @@ -405,7 +405,7 @@ Request and response payloads are JSON-encoded in the engine API. Import graph data from a database of the ArangoDB deployment. You can import named graphs as well as sets of node and edge collections (see -[Managed and unmanaged graphs](../graphs/_index.md#managed-and-unmanaged-graphs)). +[Managed and unmanaged graphs](../arangodb/3.12/graphs/_index.md#managed-and-unmanaged-graphs)). ```bash curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d '{"database":"_system","graph_name":"connectedComponentsGraph"}' "$ENGINE_URL/v1/loaddata" @@ -543,7 +543,7 @@ It is probably impossible to discover an efficient algorithm which computes them in a distributed way. Fortunately there are scalable substitutions available, which should be equally usable for most use cases. -![Illustration of an execution of different centrality measures (Freeman 1977)](../../images/centrality_visual.png) +![Illustration of an execution of different centrality measures (Freeman 1977)](../images/centrality_visual.png) ##### Betweenness Centrality @@ -577,7 +577,7 @@ A common definitions of centrality is the **closeness centrality** length of the shortest path between the node and all other nodes. For nodes *x*, *y* and shortest distance `d(y, x)` it is defined as: -![Vertex Closeness Formula](../../images/closeness.png) +![Vertex Closeness Formula](../images/closeness.png) Effective Closeness approximates the closeness measure. The algorithm works by iteratively estimating the number of shortest paths passing through each node. @@ -613,7 +613,7 @@ Another common measure is the [*betweenness* centrality](https://en.wikipedia.or It measures the number of times a node is part of shortest paths between any pairs of nodes. For a node *v* betweenness is defined as: -![Vertex Betweenness Formula](../../images/betweenness.png) +![Vertex Betweenness Formula](../images/betweenness.png) Where the σ represents the number of shortest paths between *x* and *y*, and σ(v) represents the number of paths also passing through a node *v*. diff --git a/site/content/3.13/data-science/_index.md b/site/content/gen-ai/graph-to-ai.md similarity index 86% rename from site/content/3.13/data-science/_index.md rename to site/content/gen-ai/graph-to-ai.md index 94ba664523..b262997bb2 100644 --- a/site/content/3.13/data-science/_index.md +++ b/site/content/gen-ai/graph-to-ai.md @@ -1,13 +1,15 @@ --- title: Generative Artificial Intelligence (GenAI) and Data Science menuTitle: GenAI & Data Science -weight: 115 +weight: 25 description: >- ArangoDB's set of tools and technologies enables analytics, machine learning, and GenAI applications powered by graph data aliases: - data-science/overview --- +- [Link to 3.12](../arangodb/3.12/aql/_index.md) + {{< tag "ArangoDB Platform" >}} {{< tip >}} @@ -48,16 +50,16 @@ ArangoDB Platform web interface, guiding you through the process. Alongside these components, you also get the following additional features: -- [**Graph Visualizer**](../graphs/graph-visualizer.md): A web-based tool for exploring your graph data with an +- [**Graph Visualizer**](../data-platform/graph-visualizer.md): A web-based tool for exploring your graph data with an intuitive interface and sophisticated querying capabilities. - [**Jupyter notebooks**](notebook-servers.md): Run a Jupyter kernel in the platform for hosting interactive notebooks for experimentation and development of applications that use ArangoDB as their backend. - **Public and private LLM support**: Use public LLMs such as OpenAI - or private LLMs with [Triton Inference Server](../data-science/graphrag/services/triton-inference-server.md). -- [**MLflow integration**](graphrag/services/mlflow.md): Use the popular MLflow as a model registry for private LLMs + or private LLMs with [Triton Inference Server](services/triton-inference-server.md). +- [**MLflow integration**](services/mlflow.md): Use the popular MLflow as a model registry for private LLMs or to run machine learning experiments as part of the ArangoDB Platform. -- [**Integrations**](integrations/_index.md): Use ArangoDB together with cuGraph, NetworkX, +- [**Adapters**](../ecosystem/adapters/_index.md): Use ArangoDB together with cuGraph, NetworkX, and other data science tools. - **Application Programming Interfaces**: Use the underlying APIs of the GenAI Suite services and build your own integrations. See the @@ -69,7 +71,7 @@ Alongside these components, you also get the following additional features: The ArangoDB Platform includes the following features independent of the GenAI Suite: -- [**Graph Analytics**](../graphs/graph-analytics.md): Run graph algorithms such as PageRank +- [**Graph Analytics**](graph-analytics.md): Run graph algorithms such as PageRank on dedicated compute resources. ## From graph to AI @@ -90,9 +92,9 @@ Graph queries can also determine the shortest paths between nodes. Graph queries can answer questions like _**Who can introduce me to person X**_? -![Graph Query](../../images/graph-query.png) +![Graph Query](../images/graph-query.png) -See [Graphs in AQL](../aql/graphs/_index.md) for the supported graph queries. +See [Graphs in AQL](../arangodb/3.12/aql/graphs/_index.md) for the supported graph queries. ### Graph Analytics @@ -101,12 +103,12 @@ know aggregate information about your graph, while analyzing the entire graph. Graph analytics can answer questions like _**Who are the most connected persons**_? -![Graph Analytics](../../images/graph-analytics.png) +![Graph Analytics](../images/graph-analytics.png) ArangoDB offers _Graph Analytics Engines_ to run algorithms such as connected components, label propagation, and PageRank on your data. This feature -is available for the ArangoGraph Insights Platform. See -[Graph Analytics](../graphs/graph-analytics.md) for details. +is available for the Arango Managed Platform (AMP). See +[Graph Analytics](graph-analytics.md) for details. ### GraphML @@ -118,7 +120,7 @@ GraphML can answer questions like: - _**Will a customer churn?**_ - _**Is this particular transaction Anomalous?**_ -![Graph ML](../../images/graph-ml.png) +![Graph ML](../images/graph-ml.png) For ArangoDB's enterprise-ready, graph-powered machine learning offering, see [ArangoGraphML](graphml/_index.md). @@ -168,5 +170,5 @@ the following tasks: ## Sample datasets If you want to try out ArangoDB's data science features, you may use the -[`arango-datasets` Python package](../components/tools/arango-datasets.md) +[`arango-datasets` Python package](../arangodb/3.12/components/tools/arango-datasets.md) to load sample datasets into a deployment. diff --git a/site/content/3.13/data-science/graphml/_index.md b/site/content/gen-ai/graphml/_index.md similarity index 98% rename from site/content/3.13/data-science/graphml/_index.md rename to site/content/gen-ai/graphml/_index.md index 553f7d81cf..241db624b9 100644 --- a/site/content/3.13/data-science/graphml/_index.md +++ b/site/content/gen-ai/graphml/_index.md @@ -1,7 +1,7 @@ --- title: ArangoDB GraphML menuTitle: GraphML -weight: 15 +weight: 10 description: >- Boost your machine learning models with graph data using ArangoDB's advanced GraphML capabilities aliases: @@ -60,9 +60,9 @@ ArangoDB streamlines these steps, providing an intuitive and scalable framework to integrate GraphML into various applications, from fraud detection to recommendation systems. -![GraphML Embeddings](../../../images/GraphML-Embeddings.webp) +![GraphML Embeddings](../../images/GraphML-Embeddings.webp) -![GraphML Workflow](../../../images/GraphML-How-it-works.webp) +![GraphML Workflow](../../images/GraphML-How-it-works.webp) You no longer need to understand the complexities of graph machine learning to benefit from it. Solutions with ArangoDB's GraphML only require input from a user about diff --git a/site/content/3.13/data-science/graphml/notebooks-api.md b/site/content/gen-ai/graphml/notebooks-api.md similarity index 99% rename from site/content/3.13/data-science/graphml/notebooks-api.md rename to site/content/gen-ai/graphml/notebooks-api.md index 8c97e2448b..008d079d97 100644 --- a/site/content/3.13/data-science/graphml/notebooks-api.md +++ b/site/content/gen-ai/graphml/notebooks-api.md @@ -75,14 +75,14 @@ Knowledge Graph constructed from the [GDELT Project](https://www.gdeltproject.or The events used range from peaceful protests to significant battles in Angola. The image below depicts the connections around an example event: -![Example Event](../../../images/ArangoML_open_intelligence_sample.png) +![Example Event](../../images/ArangoML_open_intelligence_sample.png) You can also see a larger portion of this graph, showing how the events, actors, news sources, and locations are interconnected into a large graph. -![Example Event](../../../images/ArangoML_open_intelligence_visualization.png) +![Example Event](../../images/ArangoML_open_intelligence_visualization.png) -The [`arango-datasets`](../../components/tools/arango-datasets.md) Python package +The [`arango-datasets`](../../arangodb/3.12/components/tools/arango-datasets.md) Python package allows you to load pre-defined datasets into ArangoDB Platform. It comes pre-installed in the GraphML notebook environment. diff --git a/site/content/3.13/data-science/graphml/quickstart.md b/site/content/gen-ai/graphml/quickstart.md similarity index 88% rename from site/content/3.13/data-science/graphml/quickstart.md rename to site/content/gen-ai/graphml/quickstart.md index 6b06acf25a..4473aafe0f 100644 --- a/site/content/3.13/data-science/graphml/quickstart.md +++ b/site/content/gen-ai/graphml/quickstart.md @@ -29,7 +29,7 @@ run a full machine learning workflow for GraphML. To get started, see the {{< tab "Notebooks" >}} The ArangoDB Notebooks service runs on the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). +[Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). It offers a pre-configured environment where everything, including necessary components and configurations, comes preloaded. You don't need to set up or configure the infrastructure, and can immediately start using the @@ -37,7 +37,7 @@ GraphML functionalities in a scriptable manner. To get started, see the [GraphML Notebooks & API](notebooks-api.md) reference documentation. {{< tip >}} -To get access to GraphML services and packages in ArangoGraph Insights Platform, +To get access to GraphML services and packages in Arango Managed Platform (AMP), [get in touch](https://www.arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -52,7 +52,7 @@ with the ArangoDB team. - Metadata capture - Model management -![ArangoGraphML Pipeline](../../../images/ArangoGraphML_Pipeline.png) +![ArangoGraphML Pipeline](../../images/ArangoGraphML_Pipeline.png) {{< /tab >}} {{< /tabs >}} \ No newline at end of file diff --git a/site/content/3.13/data-science/graphml/ui.md b/site/content/gen-ai/graphml/ui.md similarity index 96% rename from site/content/3.13/data-science/graphml/ui.md rename to site/content/gen-ai/graphml/ui.md index f83ccffee1..83e736120c 100644 --- a/site/content/3.13/data-science/graphml/ui.md +++ b/site/content/gen-ai/graphml/ui.md @@ -25,7 +25,7 @@ To create a new GraphML project using the ArangoDB Platform web interface, follo 1. From the left-hand sidebar, select the database where you want to create the project. 2. In the left-hand sidebar, click **GenAI Suite** to open the GraphML project management interface, then click **Run GraphML**. - ![Create GraphML Project](../../../images/create-graphml-project-ui.png) + ![Create GraphML Project](../../images/create-graphml-project-ui.png) 3. In the **GraphML projects** view, click **Add new project**. 4. The **Create ML project** modal opens. Enter a **Name** for your machine learning project. 5. Click the **Create project** button to finalize the creation. @@ -88,7 +88,7 @@ Once you’ve set your strategies, click **Begin featurization** to start the no embedding-compatible featurization job. When the job status updates to **Ready for training**, proceed to the **Training** step. -![Navigate to Featurization](../../../images/graph-ml-ui-featurization.png) +![Navigate to Featurization](../../images/graph-ml-ui-featurization.png) ## Training phase @@ -117,7 +117,7 @@ features and structural connections within the graph. After setting these values, click the **Begin training** button to start the job. -![Node Classification](../../../images/ml-nodeclassification.png) +![Node Classification](../../images/ml-nodeclassification.png) #### Node embeddings @@ -137,7 +137,7 @@ The target collection is where the model's predictions are stored when running a Once the configuration is complete, click **Begin training** to start the embedding job. -![Node Embeddings](../../../images/ml-node-embedding.png) +![Node Embeddings](../../images/ml-node-embedding.png) ## Model selection phase @@ -149,12 +149,12 @@ A list of trained models is displayed, along with performance metrics (**Accuracy**, **Precision**, **Recall**, **F1 score**, **Loss**). Review the results of different model runs and configurations. -![GraphML Model Selection](../../../images/graph-ml-model.png) +![GraphML Model Selection](../../images/graph-ml-model.png) Select the best performing model suitable for your prediction task. You can also open the **Confusion Matrix** to compare predicted values versus actual values. -![GraphML Confusion Matrix](../../../images/graphml-ui-confusion-matrix.png) +![GraphML Confusion Matrix](../../images/graphml-ui-confusion-matrix.png) ## Prediction phase @@ -189,7 +189,7 @@ predictions relevant without repeating the entire ML workflow. the prediction workload (e.g. `10`). - **Prediction field**: The field in the documents where the predicted values are stored. -![GraphML prediction phase](../../../images/graph-prediction.png) +![GraphML prediction phase](../../images/graph-prediction.png) ### Configuration options diff --git a/site/content/platform/data-science/graphrag/_index.md b/site/content/gen-ai/graphrag/_index.md similarity index 97% rename from site/content/platform/data-science/graphrag/_index.md rename to site/content/gen-ai/graphrag/_index.md index a58b76c7e3..9bde91a90d 100644 --- a/site/content/platform/data-science/graphrag/_index.md +++ b/site/content/gen-ai/graphrag/_index.md @@ -1,7 +1,7 @@ --- title: GraphRAG menuTitle: GraphRAG -weight: 10 +weight: 5 description: >- ArangoDB's GraphRAG solution combines graph-based retrieval-augmented generation with Large Language Models (LLMs) for turbocharged GenAI solutions @@ -78,7 +78,7 @@ information in a structured graph format, allowing efficient querying and retrie 3. Store the generated Knowledge Graph in the database for retrieval and reasoning. For detailed information about the service, see the -[Importer](services/importer.md) service documentation. +[Importer](../services/importer.md) service documentation. ### Extract information from the Knowledge Graph @@ -89,7 +89,7 @@ You can extract information from Knowledge Graphs using two distinct methods: - Local retrieval For detailed information about the service, see the -[Retriever](services/retriever.md) service documentation. +[Retriever](../services/retriever.md) service documentation. #### Global retrieval @@ -136,7 +136,7 @@ collection, and then it expands that subgraph over related entities, relations If you're working in an air-gapped environment or need to keep your data private, you can use the private LLM mode with -[Triton Inference Server](services/triton-inference-server.md). +[Triton Inference Server](../services/triton-inference-server.md). This option allows you to run the service completely within your own infrastructure. The Triton Inference Server is a crucial component when diff --git a/site/content/3.13/data-science/graphrag/tutorial-notebook.md b/site/content/gen-ai/graphrag/tutorial-notebook.md similarity index 99% rename from site/content/3.13/data-science/graphrag/tutorial-notebook.md rename to site/content/gen-ai/graphrag/tutorial-notebook.md index ee3b6183e0..45a743d761 100644 --- a/site/content/3.13/data-science/graphrag/tutorial-notebook.md +++ b/site/content/gen-ai/graphrag/tutorial-notebook.md @@ -200,7 +200,7 @@ pprint(importerResponse) ### Visualize and interact with the Knowledge Graph Once the importer service has processed the document, you can visualize and -interact with the generated Knowledge Graph using the [Graph Visualizer](../../graphs/graph-visualizer.md) +interact with the generated Knowledge Graph using the [Graph Visualizer](../../data-platform/graph-visualizer.md) directly from the ArangoDB Platform web interface. 1. In the ArangoDB Platform web interface, select the database you have previously used. diff --git a/site/content/3.13/data-science/graphrag/web-interface.md b/site/content/gen-ai/graphrag/web-interface.md similarity index 80% rename from site/content/3.13/data-science/graphrag/web-interface.md rename to site/content/gen-ai/graphrag/web-interface.md index 195659839a..b7559e0149 100644 --- a/site/content/3.13/data-science/graphrag/web-interface.md +++ b/site/content/gen-ai/graphrag/web-interface.md @@ -52,7 +52,7 @@ configure and start a new importer service job. Follow the steps below. 3. Enter your **OpenAI API Key**. 4. Click the **Start importer service** button. -![Configure Importer service using OpenAI](../../../images/graphrag-ui-configure-importer-openai.png) +![Configure Importer service using OpenAI](../../images/graphrag-ui-configure-importer-openai.png) {{< /tab >}} {{< tab "OpenRouter" >}} @@ -68,7 +68,7 @@ When using the OpenRouter option, the LLM responses are served via OpenRouter while OpenAI is used for the embedding model. {{< /info >}} -![Configure Importer service using OpenRouter](../../../images/graphrag-ui-configure-importer-openrouter.png) +![Configure Importer service using OpenRouter](../../images/graphrag-ui-configure-importer-openrouter.png) {{< /tab >}} {{< tab "Triton LLM Host" >}} @@ -77,16 +77,16 @@ while OpenAI is used for the embedding model. 3. Click the **Start importer service** button. {{< info >}} -Note that you must first register your model in MLflow. The [Triton LLM Host](services/triton-inference-server.md) +Note that you must first register your model in MLflow. The [Triton LLM Host](../services/triton-inference-server.md) service automatically downloads and loads models from the MLflow registry. {{< /info >}} -![Configure Importer service using Triton](../../../images/graphrag-ui-configure-importer-triton.png) +![Configure Importer service using Triton](../../images/graphrag-ui-configure-importer-triton.png) {{< /tab >}} {{< /tabs >}} -See also the [GraphRAG Importer](services/importer.md) service documentation. +See also the [GraphRAG Importer](../services/importer.md) service documentation. ## Upload your file @@ -100,14 +100,14 @@ See also the [GraphRAG Importer](services/importer.md) service documentation. You can only import a single file, either in `.md` or `.txt` format. {{< /info >}} -![Upload file in GraphRAG web interface](../../../images/graphrag-ui-upload-file.png) +![Upload file in GraphRAG web interface](../../images/graphrag-ui-upload-file.png) ## Explore the Knowledge Graph You can open and explore the Knowledge Graph that has been generated by clicking on the **Explore in visualizer** button. -For more information, see the [Graph Visualizer](../../graphs/graph-visualizer.md) documentation. +For more information, see the [Graph Visualizer](../../data-platform/graph-visualizer.md) documentation. ## Configure the Retriever service @@ -123,7 +123,7 @@ the generated Knowledge Graph. Follow the steps below to configure the service. 3. Enter your **OpenAI API Key**. 4. Click the **Start retriever service** button. -![Configure Retriever Service using OpenAI](../../../images/graphrag-ui-configure-retriever-openai.png) +![Configure Retriever Service using OpenAI](../../images/graphrag-ui-configure-retriever-openai.png) {{< /tab >}} {{< tab "OpenRouter" >}} @@ -138,7 +138,7 @@ When using the OpenRouter option, the LLM responses are served via OpenRouter while OpenAI is used for the embedding model. {{< /info >}} -![Configure Retriever Service using OpenRouter](../../../images/graphrag-ui-configure-retriever-openrouter.png) +![Configure Retriever Service using OpenRouter](../../images/graphrag-ui-configure-retriever-openrouter.png) {{< /tab >}} {{< tab "Triton LLM Host" >}} @@ -147,26 +147,26 @@ while OpenAI is used for the embedding model. 3. Click the **Start retriever service** button. {{< info >}} -Note that you must first register your model in MLflow. The [Triton LLM Host](services/triton-inference-server.md) +Note that you must first register your model in MLflow. The [Triton LLM Host](../services/triton-inference-server.md) service automatically downloads and loads models from the MLflow registry. {{< /info >}} -![Configure Retriever Service using Triton](../../../images/graphrag-ui-configure-retriever-triton.png) +![Configure Retriever Service using Triton](../../images/graphrag-ui-configure-retriever-triton.png) {{< /tab >}} {{< /tabs >}} -See also the [GraphRAG Retriever](services/retriever.md) documentation. +See also the [GraphRAG Retriever](../services/retriever.md) documentation. ## Chat with your Knowledge Graph The Retriever service provides two search methods: -- [Local search](services/retriever.md#local-search): Local queries let you +- [Local search](../services/retriever.md#local-search): Local queries let you explore specific nodes and their direct connections. -- [Global search](services/retriever.md#global-search): Global queries uncover +- [Global search](../services/retriever.md#global-search): Global queries uncover broader patters and relationships across the entire Knowledge Graph. -![Chat with your Knowledge Graph](../../../images/graphrag-ui-chat.png) +![Chat with your Knowledge Graph](../../images/graphrag-ui-chat.png) In addition to querying the Knowledge Graph, the chat service allows you to do the following: - Switch the search method from **Local Query** to **Global Query** and vice-versa diff --git a/site/content/3.13/data-science/notebook-servers.md b/site/content/gen-ai/notebook-servers.md similarity index 93% rename from site/content/3.13/data-science/notebook-servers.md rename to site/content/gen-ai/notebook-servers.md index e84a9ebbb7..bddbee6cb7 100644 --- a/site/content/3.13/data-science/notebook-servers.md +++ b/site/content/gen-ai/notebook-servers.md @@ -1,7 +1,7 @@ --- title: Notebook Servers menuTitle: Notebook Servers -weight: 130 +weight: 20 description: >- Colocated Jupyter Notebooks within the ArangoDB Platform aliases: @@ -30,12 +30,12 @@ The notebooks are primarily focused on the following solutions: natural language interface. - [GraphML](graphml/_index.md): Apply machine learning to graphs for link prediction, classification, and similar tasks. -- [Integrations](integrations/_index.md): Use ArangoDB together with cuGraph, +- [Adapters](../ecosystem/adapters/_index.md): Use ArangoDB together with cuGraph, NetworkX, and other data science tools. The ArangoDB Notebooks include the following: - Automatically connect to ArangoDB databases and GenAI platform services -- [Magic commands](../arangograph/notebooks.md#arangograph-magic-commands) +- [Magic commands](../amp/notebooks.md#arangograph-magic-commands) that simplify database interactions - Example notebooks for learning diff --git a/site/content/3.13/data-science/graphrag/services/_index.md b/site/content/gen-ai/services/_index.md similarity index 64% rename from site/content/3.13/data-science/graphrag/services/_index.md rename to site/content/gen-ai/services/_index.md index 38393bc8aa..8df04c2c84 100644 --- a/site/content/3.13/data-science/graphrag/services/_index.md +++ b/site/content/gen-ai/services/_index.md @@ -1,5 +1,5 @@ --- -title: GraphRAG services +title: GenAI services menuTitle: Services description: '' --- diff --git a/site/content/3.13/data-science/graphrag/services/gen-ai.md b/site/content/gen-ai/services/gen-ai.md similarity index 98% rename from site/content/3.13/data-science/graphrag/services/gen-ai.md rename to site/content/gen-ai/services/gen-ai.md index 280dfd2511..03504ec499 100644 --- a/site/content/3.13/data-science/graphrag/services/gen-ai.md +++ b/site/content/gen-ai/services/gen-ai.md @@ -98,7 +98,7 @@ curl -X POST https://<ExternalEndpoint>:8529/_open/auth \ This returns a JWT token that you can use as your Bearer token. For more details about ArangoDB authentication and JWT tokens, see -the [ArangoDB Authentication](../../../develop/http-api/authentication/#jwt-user-tokens) +the [ArangoDB Authentication](../../arangodb/3.12/develop/http-api/authentication.md#jwt-user-tokens) documentation. ## Complete Service lifecycle example diff --git a/site/content/3.13/data-science/graphrag/services/importer.md b/site/content/gen-ai/services/importer.md similarity index 99% rename from site/content/3.13/data-science/graphrag/services/importer.md rename to site/content/gen-ai/services/importer.md index 6a9558767e..afb60fe036 100644 --- a/site/content/3.13/data-science/graphrag/services/importer.md +++ b/site/content/gen-ai/services/importer.md @@ -27,7 +27,7 @@ ArangoDB database, where you can query and analyze the relationships between different concepts in your document with the Retriever service. {{< tip >}} -You can also use the GraphRAG Importer service via the ArangoDB [web interface](../web-interface.md). +You can also use the GraphRAG Importer service via the [Data Platform web interface](../graphrag/web-interface.md). {{< /tip >}} ## Creating a new project diff --git a/site/content/3.13/data-science/graphrag/services/mlflow.md b/site/content/gen-ai/services/mlflow.md similarity index 98% rename from site/content/3.13/data-science/graphrag/services/mlflow.md rename to site/content/gen-ai/services/mlflow.md index 827c5170c2..e3efccc32a 100644 --- a/site/content/3.13/data-science/graphrag/services/mlflow.md +++ b/site/content/gen-ai/services/mlflow.md @@ -93,7 +93,7 @@ curl -X POST https://<ExternalEndpoint>:8529/_open/auth \ This returns a JWT token that you can use as your Bearer token. For more details about ArangoDB authentication and JWT tokens, see the -[ArangoDB Authentication](../../../develop/http-api/authentication.md#jwt-user-tokens) +[ArangoDB Authentication](../../arangodb/3.12/develop/http-api/authentication.md#jwt-user-tokens) documentation. ## Installation diff --git a/site/content/3.13/data-science/graphrag/services/natural-language-to-aql.md b/site/content/gen-ai/services/natural-language-to-aql.md similarity index 100% rename from site/content/3.13/data-science/graphrag/services/natural-language-to-aql.md rename to site/content/gen-ai/services/natural-language-to-aql.md diff --git a/site/content/3.13/data-science/graphrag/services/retriever.md b/site/content/gen-ai/services/retriever.md similarity index 99% rename from site/content/3.13/data-science/graphrag/services/retriever.md rename to site/content/gen-ai/services/retriever.md index 0683d5beaa..447def28df 100644 --- a/site/content/3.13/data-science/graphrag/services/retriever.md +++ b/site/content/gen-ai/services/retriever.md @@ -36,7 +36,7 @@ graph and get contextually relevant responses. - Configurable community hierarchy levels {{< tip >}} -You can also use the GraphRAG Retriever service via the ArangoDB [web interface](../web-interface.md). +You can also use the GraphRAG Retriever service via the ArangoDB [web interface](../graphrag/web-interface.md). {{< /tip >}} ## Search methods diff --git a/site/content/3.13/data-science/graphrag/services/triton-inference-server.md b/site/content/gen-ai/services/triton-inference-server.md similarity index 100% rename from site/content/3.13/data-science/graphrag/services/triton-inference-server.md rename to site/content/gen-ai/services/triton-inference-server.md diff --git a/site/content/platform/_index.md b/site/content/platform/_index.md deleted file mode 100644 index a70a2b36e7..0000000000 --- a/site/content/platform/_index.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Recommended Resources -menuTitle: 'Platform' -weight: 0 -layout: default ---- -{{< cloudbanner >}} - -{{< cards >}} - -{{% card title="What is the ArangoDB Platform?" link="about-the-platform/" %}} -The ArangoDB Platform is the umbrella for hosting the entire ArangoDB offering -of products, including GraphML and GraphRAG. -{{% /card %}} - -{{% card title="Graph Intelligence" link="graph-intelligence/" %}} -Analyze and visualize your data with the Graph Analytics and Graph Visualizer features. -{{% /card %}} - -{{% card title="GenAI & Data Science" link="data-science/" %}} -Discover the graph-powered machine learning and GraphRAG features of ArangoDB. -{{% /card %}} - -{{< /cards >}} diff --git a/site/content/platform/data-science/_index.md b/site/content/platform/data-science/_index.md deleted file mode 100644 index 485687e4d7..0000000000 --- a/site/content/platform/data-science/_index.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Generative Artificial Intelligence (GenAI) and Data Science -menuTitle: GenAI & Data Science -weight: 15 -description: >- - ArangoDB's set of tools and technologies enables analytics, machine learning, - and GenAI applications powered by graph data -aliases: - - data-science/overview ---- -- [Link to 3.12](../../3.12/aql/_index.md) - -{{< tag "ArangoDB Platform" >}} - -{{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. -{{< /tip >}} - -ArangoDB provides a wide range of functionality that can be utilized for -data science applications. The core database system includes multi-model storage -of information with scalable graph and information retrieval capabilities that -you can directly use for your research and product development. - -ArangoDB also offers a dedicated GenAI Suite, using the database core -as the foundation for higher-level features. Whether you want to turbocharge -generative AI applications with a GraphRAG solution or apply analytics and -machine learning to graph data at scale, ArangoDB covers these needs. - -<!-- -ArangoDB's Graph Analytics and GraphML capabilities provide various solutions -in data science and data analytics. Multiple data science personas within the -engineering space can make use of ArangoDB's set of tools and technologies that -enable analytics and machine learning on graph data. ---> - -## GenAI Suite - -The GenAI Suite is comprised of two major components: - -- [**GraphRAG**](#graphrag): A complete solution for extracting entities - from text files to create a knowledge graph that you can then query with a - natural language interface. -- [**GraphML**](#graphml): Apply machine learning to graphs for link prediction, - classification, and similar tasks. - -Each component has an intuitive graphical user interface integrated into the -ArangoDB Platform web interface, guiding you through the process. - -Alongside these components, you also get the following additional features: - -- [**Graph Visualizer**](../graph-intelligence/graph-visualizer.md): A web-based tool for exploring your graph data with an - intuitive interface and sophisticated querying capabilities. -- [**Jupyter notebooks**](notebook-servers.md): Run a Jupyter kernel in the platform for hosting - interactive notebooks for experimentation and development of applications - that use ArangoDB as their backend. -- **Public and private LLM support**: Use public LLMs such as OpenAI - or private LLMs with [Triton Inference Server](graphrag/services/triton-inference-server.md). -- [**MLflow integration**](graphrag/services/mlflow.md): Use the popular MLflow as a model registry for private LLMs - or to run machine learning experiments as part of the ArangoDB Platform. -- [**Integrations**](integrations/_index.md): Use ArangoDB together with cuGraph, NetworkX, - and other data science tools. -- **Application Programming Interfaces**: Use the underlying APIs of the - GenAI Suite services and build your own integrations. See the - [API reference](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html) documentation - for more details. - -## Other tools and features - -The ArangoDB Platform includes the following features independent of the -GenAI Suite: - -- [**Graph Analytics**](../graph-intelligence/graph-analytics.md): Run graph algorithms such as PageRank - on dedicated compute resources. - -## From graph to AI - -This section classifies the complexity of the queries you can answer with -ArangoDB and gives you an overview of the respective feature. - -It starts with running a simple query that shows what is the path that goes from -one node to another, continues with more complex tasks like graph classification, -link prediction, and node classification, and ends with generative AI solutions -powered by graph relationships and vector embeddings. - -### Graph Queries - -When you run an AQL query on a graph, a traversal query can go from a node to -multiple edges, and then the edges indicate what the next connected nodes are. -Graph queries can also determine the shortest paths between nodes. - -Graph queries can answer questions like _**Who can introduce me to person X**_? - -![Graph Query](../../images/graph-query.png) - -See [Graphs in AQL](../../3.12/aql/graphs/_index.md) for the supported graph queries. - -### Graph Analytics - -Graph analytics or graph algorithms is what you run on a graph if you want to -know aggregate information about your graph, while analyzing the entire graph. - -Graph analytics can answer questions like _**Who are the most connected persons**_? - -![Graph Analytics](../../images/graph-analytics.png) - -ArangoDB offers _Graph Analytics Engines_ to run algorithms such as -connected components, label propagation, and PageRank on your data. This feature -is available for the ArangoGraph Insights Platform. See -[Graph Analytics](../graph-intelligence/graph-analytics.md) for details. - -### GraphML - -When applying machine learning on a graph, you can predict connections, get -better product recommendations, and also classify nodes, edges, and graphs. - -GraphML can answer questions like: -- _**Is there a connection between person X and person Y?**_ -- _**Will a customer churn?**_ -- _**Is this particular transaction Anomalous?**_ - -![Graph ML](../../images/graph-ml.png) - -For ArangoDB's enterprise-ready, graph-powered machine learning offering, -see [ArangoGraphML](graphml/_index.md). - -### GraphRAG - -GraphRAG is ArangoDB's turn-key solution to transform your organization's data into -a knowledge graph and let everyone utilize the knowledge by asking questions in -natural language. - -The overall process of GraphRAG involves the following: -- **Creating a Knowledge Graph** from raw text data. -- **Identifying and extract entities and relationships** within the data. -- **Storing the structured information** in ArangoDB. -- **Clustering each closely connected set of entities into semantic contexts** - via topology-based algorithms and summarization. -- **Using such semantically augmented structured representation** as the - foundation for efficient and accurate information retrieval via lexical and - semantic search. -- **Integrating retrieval methods with LLMs (privately or publicly hosted)** - to augment responses using both structured and unstructured data, providing - accurate responses with the desired format and degree of detail for each query. - -To learn more, see the [GraphRAG](graphrag/_index.md) documentation. - -## Knowledge Graphs - -A knowledge graph can be thought of as a dynamic and interconnected network of -real-world entities and the intricate relationships that exist between them. - -Key aspects of knowledge graphs: -- **Domain-specific knowledge**: You can tailor knowledge graphs to specific - domains and industries. -- **Structured information**: Makes it easy to query, analyze, and extract - meaningful insights from your data. -- **Accessibility**: You can build a Semantic Web knowledge graph or using - custom data. - -LLMs can help distill knowledge graphs from natural language by performing -the following tasks: -- Entity discovery -- Relation extraction -- Coreference resolution -- End-to-end knowledge graph construction -- (Text) Embeddings - -## Sample datasets - -If you want to try out ArangoDB's data science features, you may use the -[`arango-datasets` Python package](../../3.12/components/tools/arango-datasets.md) -to load sample datasets into a deployment. diff --git a/site/content/platform/data-science/graphml/_index.md b/site/content/platform/data-science/graphml/_index.md deleted file mode 100644 index 553f7d81cf..0000000000 --- a/site/content/platform/data-science/graphml/_index.md +++ /dev/null @@ -1,207 +0,0 @@ ---- -title: ArangoDB GraphML -menuTitle: GraphML -weight: 15 -description: >- - Boost your machine learning models with graph data using ArangoDB's advanced GraphML capabilities -aliases: - - arangographml ---- -{{< tag "ArangoDB Platform" >}} - -{{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. -{{< /tip >}} - -Traditional Machine Learning (ML) overlooks the connections and relationships -between data points, which is where graph machine learning excels. However, -accessibility to GraphML has been limited to sizable enterprises equipped with -specialized teams of data scientists. ArangoDB simplifies the utilization of Graph Machine Learning, -enabling a broader range of personas to extract profound insights from their data. - -With ArangoDB, you can solve high-computational graph problems using Graph Machine -Learning. Apply it on a selected graph to predict connections, get better product -recommendations, classify nodes, and perform node embeddings. You can configure and run -the whole machine learning flow entirely through the web interface or programmatically. - -## How GraphML works - -Graph machine learning leverages the inherent structure of graph data, where -entities (nodes) and their relationships (edges) form a network. Unlike -traditional ML, which primarily operates on tabular data, GraphML applies -specialized algorithms like Graph Neural Networks (GNNs), node embeddings, and -link prediction to uncover complex patterns and insights. - -The underlying framework for ArangoDB's GraphML is **[GraphSAGE](https://snap.stanford.edu/graphsage/)**. -GraphSAGE (Graph Sample and AggreGatE) is a powerful Graph Neural Network (GNN) -**framework** designed for inductive representation learning on large graphs. -It is used to generate low-dimensional vector representations for nodes and is -especially useful for graphs that have rich node attribute information. -The overall process involves the following steps: - -1. **Graph Construction**: - - Raw data is transformed into a graph structure, defining nodes and edges based - on real-world relationships. -2. **Featurization**: Your raw graph data is transformed into numerical representations that the model can understand. - - The system iterates over your selected nodes and converts their attributes: booleans become `0` or `1`, numbers are normalized, and text attributes are converted into numerical vectors using sentence transformers. - - All of these numerical features are then combined (concatenated). - - Finally, **Incremental PCA** (Incremental Principal Component Analysis a dimensionality reduction technique) is used to reduce the size of the combined features, which helps remove noise and keep only the most important information. -3. **Training**: The model learns from the graph's structure by sampling and aggregating information from each node's local neighborhood. - - For each node, GraphSAGE looks at connections up to **2 hops away**. - - Specifically, it uniformly samples up to **25 direct neighbors** (depth 1) and for each of those, it samples up to **10 of their neighbors** (depth 2). - - By aggregating feature information from this sampled neighborhood, the model creates a rich "embedding" for each node that captures both its own features and its role in the graph. -4. **Inference & Insights**: - - The trained model is used to classify nodes, detect anomalies, recommend items, - or predict future connections. - -ArangoDB streamlines these steps, providing an intuitive and scalable -framework to integrate GraphML into various applications, from fraud detection -to recommendation systems. - -![GraphML Embeddings](../../../images/GraphML-Embeddings.webp) - -![GraphML Workflow](../../../images/GraphML-How-it-works.webp) - -You no longer need to understand the complexities of graph machine learning to -benefit from it. Solutions with ArangoDB's GraphML only require input from a user about -their data, and the GraphML managed service handles the rest. - -The platform comes preloaded with all the tools needed to prepare your graph -for machine learning, high-accuracy training, and persisting predictions back -to the database for application use. - -## What you can do with GraphML - -GraphML directly supports two primary machine learning tasks: -**Node Classification** and **Node Embeddings**. - -### Node Classification - -Node classification is a **supervised learning** task where the goal is to -predict the label of a node based on both its own features and its relationships -within the graph. It requires a set of labeled nodes to train a model, which then -classifies unlabeled nodes based on learned patterns. - -**How it works in ArangoDB** - -- A portion of the nodes in a graph is labeled for training. -- The model learns patterns from both **node features** and - **structural relationships** (neighboring nodes and connections). -- It predicts labels for unlabeled nodes based on these learned patterns. - -**Example Use Cases** - -- **Fraud Detection in Financial Networks** - - **Problem:** Fraudsters often create multiple accounts or interact within - suspicious clusters to evade detection. - - **Solution:** A transaction graph is built where nodes represent users and - edges represent transactions. The model learns patterns from labeled - fraudulent and legitimate users, detecting hidden fraud rings based on - **both user attributes and transaction relationships**. - -- **Customer Segmentation in E-Commerce & Social Media** - - **Problem:** Businesses need to categorize customers based on purchasing - behavior and engagement. - - **Solution:** A graph is built where nodes represent customers and edges - represent interactions (purchases, reviews, social connections). The model - predicts the category of each user based on how similar they are to other users - **not just by their personal data, but also by how they are connected to others**. - -- **Disease Classification in Biomedical Networks** - - **Problem:** Identifying proteins or genes associated with a disease. - - **Solution:** A protein interaction graph is built where nodes are proteins - and edges represent biochemical interactions. The model classifies unknown - proteins based on their interactions with known disease-related proteins, - rather than just their individual properties. - -### Node Embedding Generation - -Node embedding is an **unsupervised learning** technique that converts nodes -into numerical vector representations, preserving their **structural relationships** -within the graph. Unlike simple feature aggregation, node embeddings -**capture the influence of neighboring nodes and graph topology**, making -them powerful for downstream tasks like clustering, anomaly detection, -and link prediction. This combination provides valuable insights. -Consider using [ArangoDB's Vector Search](https://arangodb.com/2024/11/vector-search-in-arangodb-practical-insights-and-hands-on-examples/) -capabilities to find similar nodes based on their embeddings. - -**Feature Embeddings versus Node Embeddings** - -**Feature Embeddings** are vector representations derived from the attributes or -features associated with nodes. These embeddings aim to capture the inherent -characteristics of the data. For example, in a social network, a -feature embedding might encode user attributes like age, location, and -interests. Techniques like **Word2Vec**, **TF-IDF**, or **autoencoders** are -commonly used to generate such embeddings. - -In the context of graphs, **Node Embeddings** are a -**combination of a node's feature embedding and the structural information from its connected edges**. -Essentially, they aggregate both the node's attributes and the connectivity patterns -within the graph. This fusion helps capture not only the individual properties of -a node but also its position and role within the network. - -**How it works in ArangoDB** - -- The model learns an embedding (a vector representation) for each node based on its - **position within the graph and its connections**. -- It **does not rely on labeled data** – instead, it captures structural patterns - through graph traversal and aggregation of neighbor information. -- These embeddings can be used for similarity searches, clustering, and predictive tasks. - -**Example Use Cases** - -- **Recommendation Systems (E-commerce & Streaming Platforms)** - - **Problem:** Platforms like Amazon, Netflix, and Spotify need to recommend products, - movies, or songs. - - **Solution:** A user-item interaction graph is built where nodes are users - and products, and edges represent interactions (purchases, ratings, listens). - **Embeddings encode relationships**, allowing the system to recommend similar - items based on user behavior and network influence rather than just individual - preferences. - -- **Anomaly Detection in Cybersecurity & Finance** - - **Problem:** Detecting unusual activity (e.g., cyber attacks, money laundering) - in complex networks. - - **Solution:** A network of IP addresses, users, and transactions is represented as - a graph. Nodes with embeddings that significantly deviate from normal patterns - are flagged as potential threats. The key advantage here is that anomalies are - detected based on **network structure, not just individual activity logs**. - -- **Link Prediction (Social & Knowledge Graphs)** - - **Problem:** Predicting new relationships, such as suggesting friends on - social media or forecasting research paper citations. - - **Solution:** A social network graph is created where nodes are users, and - edges represent friendships. **Embeddings capture the likelihood of - connections forming based on shared neighborhoods and structural - similarities, even if users have never interacted before**. - -### Key Differences - -| Feature | Node Classification | Node Embedding Generation | -|-----------------------|---------------------|----------------------------| -| **Learning Type** | Supervised | Unsupervised | -| **Input Data** | Labeled nodes | Graph structure & features | -| **Output** | Predicted labels | Node embeddings (vectors) | -| **Key Advantage** | Learns labels based on node connections and attributes | Learns structural patterns and node relationships | -| **Use Cases** | Fraud detection, customer segmentation, disease classification | Recommendations, anomaly detection, link prediction | - -GraphML provides the infrastructure to efficiently train and apply these -models, helping users extract meaningful insights from complex graph data. - -## Metrics and Compliance - -GraphML supports tracking your ML pipeline by storing all relevant metadata -and metrics in a Graph called ArangoPipe. This is only available to you and is never -viewable by ArangoDB. This metadata graph links all experiments -to the source data, feature generation activities, training runs, and prediction -jobs, allowing you to track the entire ML pipeline without having to leave ArangoDB. - -## Security - -Each deployment that uses GraphML has an `arangopipe` database created, -which houses all ML Metadata information. Since this data lives within the deployment, -it benefits from the ArangoGraph security features and SOC 2 compliance. -All GraphML services live alongside the ArangoGraph deployment and are only -accessible within that organization. diff --git a/site/content/platform/data-science/graphml/notebooks-api.md b/site/content/platform/data-science/graphml/notebooks-api.md deleted file mode 100644 index 426dafb893..0000000000 --- a/site/content/platform/data-science/graphml/notebooks-api.md +++ /dev/null @@ -1,860 +0,0 @@ ---- -title: How to use GraphML in a scriptable manner -menuTitle: Notebooks & API -weight: 15 -description: >- - Control all resources inside GraphML via Jupyter Notebooks or Python API -aliases: - - getting-started-with-arangographml - - ../arangographml/getting-started - - ../arangographml-getting-started-with-arangographml ---- - -{{< tag "ArangoDB Platform" >}} - -The ArangoDB Platform provides an easy-to-use & scalable interface to run -Graph Machine Learning on ArangoDB data. Since all the orchestration and Machine Learning logic is -managed by ArangoDB, all that is typically required are JSON specifications outlining -individual processes to solve a Machine Learning task. - -The `arangoml` Python package allows you to manage all the necessary -GraphML components, including: -- **Project Management**: Projects are a metadata-tracking entity that sit at - the top level of ArangoDB GraphML. All activities must link to a project. -- **Featurization**: The step of converting human-understandable data to - machine-understandable data (e.g. features), such that it can be used to - train Graph Neural Networks (GNNs). -- **Training**: Train a set of models based on the name of the generated/existing - features, and a definition of the ML task you want to solve (e.g. Node Classification, Embedding Generation). -- **Model Selection**: Select the best model based on the metrics generated during training. -- **Predictions**: Generate predictions based on the selected model, and persist - the results to the source graph (either in the source document, or in a new collection). - -GraphML's suite of services and packages is driven by **"specifications"**. -These specifications are standard Python dictionaries that describe the task -being performed, and the data being used. The GraphML services work closely -together, with the previous task being used as the input for the next. - -Let's take a look at using the `arangoml` package to: - -1. Manage projects -2. Featurize data -3. Submit Training Jobs -4. Evaluate Model Metrics -5. Generate Predictions - -## Initialize ArangoML - -**API Documentation: [arangoml.ArangoMLMagics.enable_arangoml](https://arangoml.github.io/arangoml/magics.html#arangoml.magic.ArangoMLMagics.enable_arangoml)** - -The `arangoml` package comes pre-loaded with every GraphML notebook environment. -To start using it, simply import it, and enable it via a Jupyter Magic Command. - -```py -arangoml = %enable_arangoml -``` - -{{< tip >}} -GraphML comes with other ArangoDB Magic Commands! See the full list [here](https://arangoml.github.io/arangoml/magics.html). -{{< /tip >}} - -## Load the database - -This example is using GraphML to predict the **class** of `Events` in a -Knowledge Graph constructed from the [GDELT Project](https://www.gdeltproject.org/). - -> GDELT monitors the world's news media from nearly every corner of every - country in print, broadcast, and web formats, in over 100 languages, every - moment of every day. [...] Put simply, the GDELT Project is a realtime open - data global graph over human society as seen through the eyes of the world's - news media, reaching deeply into local events, reaction, discourse, and - emotions of the most remote corners of the world in near-realtime and making - all of this available as an open data firehose to enable research over human - society. - -The events used range from peaceful protests to significant battles in Angola. -The image below depicts the connections around an example event: - -![Example Event](../../../images/ArangoML_open_intelligence_sample.png) - -You can also see a larger portion of this graph, showing how the events, actors, -news sources, and locations are interconnected into a large graph. - -![Example Event](../../../images/ArangoML_open_intelligence_visualization.png) - -The [`arango-datasets`](../../../3.12/components/tools/arango-datasets.md) Python package -allows you to load pre-defined datasets into ArangoDB Platform. It comes pre-installed in the -GraphML notebook environment. - -```py -DATASET_NAME = "OPEN_INTELLIGENCE_ANGOLA" - -%delete_database {DATASET_NAME} -%create_database {DATASET_NAME} -%use_database {DATASET_NAME} -%load_dataset {DATASET_NAME} -``` - -## Projects - -**API Documentation: [ArangoML.projects](https://arangoml.github.io/arangoml/api.html#projects)** - -Projects are an important reference used throughout the entire GraphML -lifecycle. All activities link back to a project. The creation of the project -is very simple. - -### Get/Create a project -```py -project = arangoml.get_or_create_project(DATASET_NAME) -``` - -### List projects - -```py -arangoml.projects.list_projects() -``` - -## Featurization - -**API Documentation: [ArangoML.jobs.featurize](https://arangoml.github.io/arangoml/api.html#agml_api.jobs.v1.api.jobs_api.JobsApi.featurize)** - -The Featurization Service depends on a **Featurization Specification**: - -{{< tip >}} -The descriptions of the specifications on this page indicate the Python data types, -but you can substitute them as follows for a schema description in terms of JSON: - -| Python | JSON | -|:--------|:-------| -| `dict` | object | -| `list` | array | -| `int` | number | -| `float` | number | -| `str` | string | -{{< /tip >}} - -- `databaseName` (str): The database name the source data is in. - -- `featurizationName` (str): A name for the featurization task. - -- `projectName` (str): The associated project name. You can use `project.name` here - if it was created or retrieved as described above. - -- `graphName` (str): The associated graph name that exists within the database. - -- `featureSetID` (str, _optional_): The ID of an existing Feature Set to re-use. If provided, the `metagraph` dictionary can be omitted. Defaults to `None`. - -- `featurizationConfiguration` (dict, _optional_): The optional default configuration to be applied - across all features. Individual collection feature settings override this option. - - - `featurePrefix` (str): The prefix to be applied to all individual features generated. Default is `feat_`. - - - `outputName` (str): Adjust the default feature name. This can be any valid ArangoDB attribute name. Defaults to `x`. - - - `dimensionalityReduction` (dict): Object configuring dimensionality reduction. - - `disabled` (bool): Whether to disable dimensionality reduction. Default is `false`, - therefore dimensionality reduction is applied after Featurization by default. - - `size` (int): The number of dimensions to reduce the feature length to. Default is `512`. - - - `defaultsPerFeatureType` (dict): A dictionary mapping each feature type to how missing or mismatched values should be handled. The keys of this dictionary are the feature types, and the values are sub-dictionaries: - - `text` / `numeric` / `category` / `label`: - - `missing` (dict): A sub-dictionary detailing how missing values should be handled. - - `strategy` (str): The strategy to use for missing values. Options include `REPLACE` or `RAISE`. - - `replacement` (int/float for `numeric`, otherwise str): The value to replace missing values with. Only needed if `strategy` is `REPLACE`. - - `mismatch` (dict): A sub-dictionary detailing how mismatched values should be handled. - - `strategy` (str): The strategy to use for mismatched values. Options include `REPLACE`, `RAISE`, `COERCE_REPLACE`, or `COERCE_RAISE`. - - `replacement` (int/float for `numeric`, otherwise str): The value to replace mismatched values with. Only needed if `strategy` is `REPLACE`, or `COERCE_REPLACE`. - -- `jobConfiguration` (dict, _optional): A set of configurations that are applied to the job. - - `batchSize` (int): The number of documents to process in a single batch. Default is `32`. - - `runAnalysisChecks` (bool): Whether to run analysis checks, used to perform a high-level analysis of the data quality before proceeding. Default is `true`. - - `skipLabels` (bool): Skips the featurization process for attributes marked as `label`. Default is `false`. - - `useFeatureStore` (bool): Enables the use of the Feature Store database, which allows you to store features separately from your Source Database. Default is `false`, therefore features are written to the source graph. - - `overwriteFSGraph` (bool): Whether to overwrite the Feature Store Graph if features were previously generated. Default is `false`, therefore features are written to an existing Feature Store Graph. - - `writeToSourceGraph` (bool): Whether to store the generated features on the Source Graph. Default is `true`. - -- `metagraph` (dict): Metadata to represent the node & edge collections of the graph. - - `vertexCollections` (dict): A dictionary mapping the node collection names to a configuration dictionary: - - _collection name_ (dict): - - `features` (dict): A dictionary mapping document properties to the following values: - - `featureType` (str): The type of feature. Options include `text`, `category`, `numeric`, or `label`. - - `config` (dict): Collection-level configuration settings. - - `featurePrefix` (str): Identical to global `featurePrefix` but for this collection. - - `dimensionalityReduction` (dict): Identical to global `dimensionalityReduction` but for this collection. - - `outputName` (str): Identical to global `outputName`, but specifically for this collection. - - `defaultsPerFeatureType` (dict): Identical to global `defaultsPerFeatureType`, but specifically for this collection. - - `edgeCollections` (dict): A dictionary mapping the edge collection names to an empty dictionary, as edge attributes are not currently supported. - - _collection name_ (dict): An empty dictionary. - -The Featurization Specification example is used for the GDELT dataset: -- It featurizes the `name` attribute of the `Actor`, `Class`, `Country`, - `Source`, `Location`, and `Region` collections as a `text` features. -- It featurizes the `description` attribute of the `Event` collection as a - `text` feature. -- It featurizes the `label` attribute of the `Event` collection as a `label` - feature (this is the attribute you want to predict). -- It featurizes the `sourceScale` attribute of the `Source` collection as a - `category` feature. -- It featurizes the `name` attribute of the `Region` collection as a - `category` feature. - -```py -# 1. Define the Featurization Specification - -featurization_spec = { - "databaseName": dataset_db.name, - "projectName": project.name, - "graphName": graph.name, - "featurizationName": f"{DATASET_NAME}_Featurization", - "featurizationConfiguration": { - "featurePrefix": "feat_", - "dimensionalityReduction": { "size": 256 }, - "outputName": "x" - }, - "jobConfiguration": { - "batchSize": 512, - "useFeatureStore": False, - "runAnalysisChecks": False, - }, - "metagraph": { - "vertexCollections": { - "Actor": { - "features": { - "name": { - "featureType": "text", - }, - } - }, - "Country": { - "features": { - "name": { - "featureType": "text", - } - } - }, - "Event": { - "features": { - "description": { - "featureType": "text", - }, - "label": { - "featureType": "label", - }, - } - }, - "Source": { - "features": { - "name": { - "featureType": "text", - }, - "sourceScale": { - "featureType": "category", - }, - } - }, - "Location": { - "features": { - "name": { - "featureType": "text", - } - } - }, - "Region": { - "features": { - "name": { - "featureType": "category", - }, - } - } - }, - "edgeCollections": { - "eventActor": {}, - "hasSource": {}, - "hasLocation": {}, - "inCountry": {}, - "inRegion": {}, - } - } -} -``` - -Once the specification has been defined, a Featurization Job can be triggered using the `arangoml.jobs.featurize` method: - -```py -# 2. Submit a Featurization Job - -featurization_job = arangoml.jobs.featurize(featurization_spec) -``` - -Once a Featurization Job has been submitted, you can wait for it to complete using the `arangoml.wait_for_featurization` method: - -```py -# 3. Wait for the Featurization Job to complete - -featurization_job_result = arangoml.wait_for_featurization(featurization_job.job_id) -``` - -**Example Output:** -```py -{ - "job_id": "16349541", - "output_db_name": "OPEN_INTELLIGENCE_ANGOLA", - "graph": "OPEN_INTELLIGENCE_ANGOLA", - "feature_set_id": "16349537", - "feature_set_ids": [ - "16349537" - ], - "vertexCollections": { - "Actor": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Class": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Country": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Event": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x", - "y": "OPEN_INTELLIGENCE_ANGOLA_y" - }, - "Source": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Location": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Region": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - } - }, - "edgeCollections": { - "eventActor": {}, - "hasSource": {}, - "hasLocation": {}, - "inCountry": {}, - "inRegion": {}, - "subClass": {}, - "type": {} - }, - "label_field": "OPEN_INTELLIGENCE_ANGOLA_y", - "input_field": "OPEN_INTELLIGENCE_ANGOLA_x", - "feature_set_id_to_results": { - "16349537": { - "feature_set_id": "16349537", - "output_db_name": "OPEN_INTELLIGENCE_ANGOLA", - "graph": "OPEN_INTELLIGENCE_ANGOLA", - "vertexCollections": { - "Actor": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Class": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Country": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Event": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x", - "y": "OPEN_INTELLIGENCE_ANGOLA_y" - }, - "Source": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Location": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Region": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - } - }, - "edgeCollections": { - "eventActor": {}, - "hasSource": {}, - "hasLocation": {}, - "inCountry": {}, - "inRegion": {}, - "subClass": {}, - "type": {} - }, - "label_field": "OPEN_INTELLIGENCE_ANGOLA_y", - "input_field": "OPEN_INTELLIGENCE_ANGOLA_x", - "is_feature_store": false, - "target_collection": "Event" - } - }, - "is_feature_store": false, - "target_collection": "Event" -} -``` - -You can also cancel a Featurization Job using the `arangoml.jobs.cancel_job` method: - -```py -arangoml.jobs.cancel_job(prediction_job.job_id) -``` - -## Training - -**API Documentation: [ArangoML.jobs.train](https://arangoml.github.io/arangoml/api.html#agml_api.jobs.v1.api.jobs_api.JobsApi.train)** - -Training Graph Machine Learning Models with GraphML requires two steps: -1. Describe which data points should be included in the Training Job. -2. Pass the Training Specification to the Training Service. - -The Training Service depends on a **Training Specification**: - -- `featureSetID` (str): The feature set ID that was generated during the Featurization Job (if any). It replaces the need to provide the `metagraph`, `databaseName`, and `projectName` fields. - -- `databaseName` (str): The database name the source data is in. Can be omitted if `featureSetID` is provided. - -- `projectName` (str): The top-level project to which all the experiments will link back. Can be omitted if `featureSetID` is provided. - -- `useFeatureStore` (bool): Boolean for enabling or disabling the use of the feature store. Default is `false`. - -- `mlSpec` (dict): Describes the desired machine learning task, input features, and - the attribute label to be predicted. - - `classification` (dict): Dictionary to describe the Node Classification Task Specification. - - `targetCollection` (str): The ArangoDB collection name that contains the prediction label. - - `inputFeatures` (str): The name of the feature to be used as input. - - `labelField` (str): The name of the attribute to be predicted. - - `batchSize` (int): The number of documents to process in a single training batch. Default is `64`. - - `graphEmbeddings` (dict): Dictionary to describe the Graph Embedding Task Specification. - - `targetCollection` (str): The ArangoDB collection used to generate the embeddings. - - `embeddingSize` (int): The size of the embedding vector. Default is `128`. - - `batchSize` (int): The number of documents to process in a single training batch. Default is `64`. - - `generateEmbeddings` (bool): Whether to generate embeddings on the training dataset. Default is `false`. - -- `metagraph` (dict): Metadata to represent the node & edge collections of the graph. If `featureSetID` is provided, this can be omitted. - - `graph` (str): The ArangoDB graph name. - - `vertexCollections` (dict): A dictionary mapping the collection names to a configuration dictionary: - - _collection name_ (dict): - - `x` (str): The name of the feature to be used as input. - - `y` (str): The name of the attribute to be predicted. Can only be specified for one collection. - - `edgeCollections` (dict): A dictionary mapping the edge collection names to an empty dictionary, as edge features are not currently supported. - - _collection name_ (dict): An empty dictionary. - -A Training Specification allows for concisely defining your training task in a -single object and then passing that object to the training service using the -Python API client, as shown below. - -The GraphML Training Service is responsible for training a series of -Graph Machine Learning Models using the data provided in the Training -Specification. It assumes that the data has been featurized and is ready to be -used for training. - -Given that we have run a Featurization Job, we can create the Training Specification -using the `featurization_job_result` object returned from the Featurization Job: - -```py -# 1. Define the Training Specification - -# Node Classification example - -training_spec = { - "featureSetID": featurization_job_result.result.feature_set_id, - "mlSpec": { - "classification": { - "targetCollection": "Event", - "inputFeatures": "OPEN_INTELLIGENCE_ANGOLA_x", - "labelField": "OPEN_INTELLIGENCE_ANGOLA_y", - } - }, -} - -# Node Embedding example -# NOTE: Full Graph Embeddings support is coming soon - -training_spec = { - "featureSetID": featurization_job_result.result.feature_set_id, - "mlSpec": { - "graphEmbeddings": { - "targetCollection": "Event", - "embeddingSize": 128, - "generateEmbeddings": True, - } - }, -} -``` - -Once the specification has been defined, a Training Job can be triggered using the `arangoml.jobs.train` method: - -```py -# 2. Submit a Training Job - -training_job = arangoml.jobs.train(training_spec) -``` - -Once a Training Job has been submitted, you can wait for it to complete using the `arangoml.wait_for_training` method: - -```py -# 3. Wait for the Training Job to complete - -training_job_result = arangoml.wait_for_training(training_job.job_id) -``` - -**Example Output (Node Classification):** -```py -{ - "job_id": "691ceb2f-1931-492a-b4eb-0536925a4697", - "job_status": "COMPLETED", - "project_name": "OPEN_INTELLIGENCE_ANGOLA_GraphML_Node_Classification", - "project_id": "16832427", - "database_name": "OPEN_INTELLIGENCE_ANGOLA", - "metagraph": { - "mlSpec": { - "classification": { - "targetCollection": "Event", - "inputFeatures": "OPEN_INTELLIGENCE_ANGOLA_x", - "labelField": "OPEN_INTELLIGENCE_ANGOLA_y", - "metrics": None - } - }, - "graph": "OPEN_INTELLIGENCE_ANGOLA", - "vertexCollections": { - "Actor": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Class": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Country": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Event": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x", - "y": "OPEN_INTELLIGENCE_ANGOLA_y" - }, - "Source": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Location": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Region": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - } - }, - "edgeCollections": { - "eventActor": {}, - "hasSource": {}, - "hasLocation": {}, - "inCountry": {}, - "inRegion": {}, - "subClass": {}, - "type": {} - }, - "batch_size": 64 - }, - "time_submitted": "2024-01-12T02:19:19.686286", - "time_started": "2024-01-12T02:19:29.403742", - "time_ended": "2024-01-12T02:30:59.313038", - "job_state": None, - "job_conditions": None -} -``` - -**Example Output (Node Embeddings):** -```py -{ - "job_id": "6047e53a-f1dd-4725-83e8-74ac44629c11", - "job_status": "COMPLETED", - "project_name": "OPEN_INTELLIGENCE_ANGOLA_GraphML_Node_Embeddings", - "project_id": "647025872", - "database_name": "OPEN_INTELLIGENCE_ANGOLA", - "ml_spec": { - "graphEmbeddings": { - "targetCollection": "Event", - "embeddingLevel": "NODE_EMBEDDINGS", - "embeddingSize": 128, - "embeddingTrainingType": "UNSUPERVISED", - "batchSize": 64, - "generateEmbeddings": true, - "bestModelSelection": "BEST_LOSS", - "persistModels": "ALL_MODELS", - "modelConfigurations": {} - } - }, - "metagraph": { - "graph": "OPEN_INTELLIGENCE_ANGOLA", - "vertexCollections": { - "Actor": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Country": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Event": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x", - "y": "OPEN_INTELLIGENCE_ANGOLA_y" - }, - "Source": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Location": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Region": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - } - }, - "edgeCollections": { - "eventActor": {}, - "hasSource": {}, - "hasLocation": {}, - "inCountry": {}, - "inRegion": {} - } - }, - "time_submitted": "2025-03-27T02:55:15.099680", - "time_started": "2025-03-27T02:57:25.143948", - "time_ended": "2025-03-27T03:01:24.619737", - "training_type": "Training" -} -``` - -You can also cancel a Training Job using the `arangoml.jobs.cancel_job` method: - -```py -arangoml.jobs.cancel_job(training_job.job_id) -``` - -## Model Selection - -Model Statistics can be observed upon completion of a Training Job. -To select a Model, the GraphML Projects Service can be used to gather -all relevant models and choose the preferred model for a Prediction Job. - -First, let's list all the trained models using -[ArangoML.list_models](https://arangoml.github.io/arangoml/client.html#arangoml.main.ArangoML.list_models): - -```py -# 1. List all trained Models - -models = arangoml.list_models( - project_name=project.name, - training_job_id=training_job.job_id -) - -print(len(models)) -``` - -The cell below selects the model with the highest **test accuracy** using -[ArangoML.get_best_model](https://arangoml.github.io/arangoml/client.html#arangoml.main.ArangoML.get_best_model), -but there may be other factors that motivate you to choose another model. See -the `model_statistics` in the output field below for more information on the -full list of available metrics. - -```py - -# 2. Select the best Model - -# Get best Node Classification Model -# Sort by highest test accuracy - -best_model = arangoml.get_best_model( - project.name, - training_job.job_id, - sort_parent_key="test", - sort_child_key="accuracy", -) - -# Get best Graph Embedding Model -# Sort by lowest loss - -best_model = arangoml.get_best_model( - project.name, - training_job.job_id, - sort_parent_key="loss", - sort_child_key=None, - reverse=False -) - -print(best_model) -``` - -**Example Output (Node Classification):** -```py -{ - "job_id": "691ceb2f-1931-492a-b4eb-0536925a4697", - "model_id": "02297435-3394-4e7e-aaac-82e1d224f85c", - "model_statistics": { - "_id": "devperf/123", - "_key": "123", - "_rev": "_gkUc8By--_", - "run_id": "123", - "test": { - "accuracy": 0.8891242216547955, - "confusion_matrix": [[13271, 2092], [1276, 5684]], - "f1": 0.9, - "loss": 0.1, - "precision": 0.9, - "recall": 0.8, - "roc_auc": 0.8, - }, - "validation": { - "accuracy": 0.9, - "confusion_matrix": [[13271, 2092], [1276, 5684]], - "f1": 0.85, - "loss": 0.1, - "precision": 0.86, - "recall": 0.85, - "roc_auc": 0.85, - }, - }, - "target_collection": "Event", - "target_field": "label", -} -``` - -**Example Output (Node Embeddings):** -```py -{ - "job_id": "6047e53a-f1dd-4725-83e8-74ac44629c11", - "model_id": "55ae93c2-3497-4405-9c63-0fa0e4a5b5bd", - "model_display_name": "graphsageencdec Model", - "model_name": "graphsageencdec Model 55ae93c2-3497-4405-9c63-0fa0e4a5b5bd", - "model_statistics": { - "loss": 0.13700408464796796, - "val_acc": 0.5795393939393939, - "test_acc": 0.5809545454545455 - }, - "model_tasks": [ "GRAPH_EMBEDDINGS" ] -} -``` - -## Prediction - -**API Documentation: [ArangoML.jobs.predict](https://arangoml.github.io/arangoml/api.html#agml_api.jobs.v1.api.jobs_api.JobsApi.predict)** - -After selecting a model, a Prediction Job can be created. The Prediction Job -will generate predictions and persist them to the source graph in a new -collection, or within the source documents. - -The Prediction Service depends on a **Prediction Specification**: - -- `projectName` (str): The top-level project to which all the experiments will link back. -- `databaseName` (str): The database name the source data is in. -- `modelID` (str): The model ID to use for generating predictions. -- `featurizeNewDocuments` (bool): Boolean for enabling or disabling the featurization of new documents. Useful if you don't want to re-train the model upon new data. Default is `false`. -- `featurizeOutdatedDocuments` (bool): Boolean for enabling or disabling the featurization of outdated documents. Outdated documents are those whose features have changed since the last featurization. Default is `false`. -- `schedule` (str): A cron expression to schedule the prediction job. The cron syntax is a set of - five fields in a line, indicating when the job should be executed. The format must follow - the following order: `minute` `hour` `day-of-month` `month` `day-of-week` - (e.g. `0 0 * * *` for daily predictions at 00:00). Default is `None`. -- `embeddingsField` (str): The name of the field to store the generated embeddings. This is only used for Graph Embedding tasks. Default is `None`. - -```py -# 1. Define the Prediction Specification - -# Node Classification Example -prediction_spec = { - "projectName": project.name, - "databaseName": dataset_db.name, - "modelID": best_model.model_id, -} - -# Node Embedding Example -prediction_spec = { - "projectName": project.name, - "databaseName": dataset_db.name, - "modelID": best_model.model_id, - "embeddingsField": "embeddings" -} -``` - -This job updates all documents with the predictions derived from the trained model. -Once the specification has been defined, a Prediction Job can be triggered using the `arangoml.jobs.predict` method: - -```py -# 2. Submit a Prediction Job - -# For Node Classification -prediction_job = arangoml.jobs.predict(prediction_spec) - -# For Graph Embeddings -prediction_job = arangoml.jobs.generate(prediction_spec) -``` - -Similar to the Training Service, we can wait for a Prediction Job to complete with the `arangoml.wait_for_prediction` method: - -```py -# 3. Wait for the Prediction Job to complete - -prediction_job_result = arangoml.wait_for_prediction(prediction_job.job_id) -``` - -**Example Output (Node Classification):** -```py -{ - "job_id": "b2a422bb-5650-4fbc-ba6b-0578af0049d9", - "job_status": "COMPLETED", - "project_name": "OPEN_INTELLIGENCE_ANGOLA_GraphML_Node_Classification", - "project_id": "16832427", - "database_name": "OPEN_INTELLIGENCE_ANGOLA", - "model_id": "1a365657-f5ed-4da9-948b-1ff60bc6e7de", - "job_state_information": { - "outputGraphName": "OPEN_INTELLIGENCE_ANGOLA", - "outputCollectionName": "Event", - "outputAttribute": "OPEN_INTELLIGENCE_ANGOLA_y_predicted", - "numberOfPredictedDocuments": 3302, - "outputEdgeCollectionName": None - }, - "time_submitted": "2024-01-12T02:31:18.382625", - "time_started": "2024-01-12T02:31:23.550469", - "time_ended": "2024-01-12T02:31:40.021035" -} -``` - -**Example Output (Node Embeddings):** -```py -{ - "job_id": "25260362-9764-47d0-abb4-247cbdce6c7b", - "job_status": "COMPLETED", - "project_name": "OPEN_INTELLIGENCE_ANGOLA_GraphML_Node_Embeddings", - "project_id": "647025872", - "database_name": "OPEN_INTELLIGENCE_ANGOLA", - "model_id": "55ae93c2-3497-4405-9c63-0fa0e4a5b5bd", - "job_state_information": { - "outputGraphName": "OPEN_INTELLIGENCE_ANGOLA", - "outputCollectionName": "Event", - "outputAttribute": "embeddings", - "numberOfPredictedDocuments": 0, # 0 All documents already have up-to-date embeddings - }, - "time_submitted": "2025-03-27T14:02:33.094191", - "time_started": "2025-03-27T14:09:34.206659", - "time_ended": "2025-03-27T14:09:35.791630", - "prediction_type": "Prediction" -} -``` - -You can also cancel a Prediction Job using the `arangoml.jobs.cancel_job` method: - -```py -arangoml.jobs.cancel_job(prediction_job.job_id) -``` - -### Viewing Inference Results - -We can now access our results via AQL: - -```py -import json - -collection_name = prediction_job_result.job_state_information['outputCollectionName'] - -query = f""" - FOR doc IN `{collection_name}` - SORT RAND() - LIMIT 3 - RETURN doc -""" - -docs = list(dataset_db.aql.execute(query)) - -print(json.dumps(docs, indent=2)) -``` - -## What's next - -With the generated Feature (and optionally Node) Embeddings, you can now use them for downstream tasks like clustering, anomaly detection, and link prediction. Consider using [ArangoDB's Vector Search](https://arangodb.com/2024/11/vector-search-in-arangodb-practical-insights-and-hands-on-examples/) capabilities to find similar nodes based on their embeddings. diff --git a/site/content/platform/data-science/graphml/quickstart.md b/site/content/platform/data-science/graphml/quickstart.md deleted file mode 100644 index 6b06acf25a..0000000000 --- a/site/content/platform/data-science/graphml/quickstart.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: How to get started with GraphML -menuTitle: Quickstart -weight: 5 -description: >- - You can use GraphML straight within the ArangoDB Platform, via the web interface - or via Notebooks -aliases: - - ../arangographml/deploy ---- -{{< tag "ArangoDB Platform" >}} - -## Web interface versus Jupyter Notebooks - -The ArangoDB Platform provides enterprise-ready Graph Machine Learning in two options, -tailored to suit diverse requirements and preferences: -- Using the web interface -- In a scriptable manner, using the integrated Jupyter Notebooks and the HTTP API for GraphML - -## Setup - -{{< tabs "graphml-setup" >}} - -{{< tab "Web Interface" >}} -The web interface of the ArangoDB Platform allows you to create, configure, and -run a full machine learning workflow for GraphML. To get started, see the -[Web interface for GraphML](ui.md) page. -{{< /tab >}} - -{{< tab "Notebooks" >}} -The ArangoDB Notebooks service runs on the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -It offers a pre-configured environment where everything, -including necessary components and configurations, comes preloaded. You don't -need to set up or configure the infrastructure, and can immediately start using the -GraphML functionalities in a scriptable manner. To get started, see the -[GraphML Notebooks & API](notebooks-api.md) reference documentation. - -{{< tip >}} -To get access to GraphML services and packages in ArangoGraph Insights Platform, -[get in touch](https://www.arangodb.com/contact/) -with the ArangoDB team. -{{< /tip >}} - -- **Accessible at all levels** - - Low code UI - - Notebooks - - APIs -- **Full usability** - - MLOps lifecycle - - Metrics - - Metadata capture - - Model management - -![ArangoGraphML Pipeline](../../../images/ArangoGraphML_Pipeline.png) -{{< /tab >}} - -{{< /tabs >}} \ No newline at end of file diff --git a/site/content/platform/data-science/graphml/ui.md b/site/content/platform/data-science/graphml/ui.md deleted file mode 100644 index f83ccffee1..0000000000 --- a/site/content/platform/data-science/graphml/ui.md +++ /dev/null @@ -1,236 +0,0 @@ ---- -title: How to use GraphML in the ArangoDB Platform web interface -menuTitle: Web Interface -weight: 10 -description: >- - Learn how to create, configure, and run a full machine learning workflow for - GraphML in four steps using the features in the ArangoDB web interface ---- -{{< tag "ArangoDB Platform" >}} - -## The GraphML workflow in the web interface - -The entire process is organized into sequential steps within a **Project**, -giving you a clear path from data to prediction: - -1. **Featurization**: Select your data and convert it into numerical representations. -2. **Training**: Train a GraphSAGE model on the features and graph structure. -3. **Model Selection**: Evaluate the trained models and choose the best one. -4. **Prediction**: Use the selected model to generate predictions on your data. - You can also automate the prediction process to run at regular intervals. - -## Create a GraphML project - -To create a new GraphML project using the ArangoDB Platform web interface, follow these steps: - -1. From the left-hand sidebar, select the database where you want to create the project. -2. In the left-hand sidebar, click **GenAI Suite** to open the GraphML project management interface, then click **Run GraphML**. - ![Create GraphML Project](../../../images/create-graphml-project-ui.png) -3. In the **GraphML projects** view, click **Add new project**. -4. The **Create ML project** modal opens. Enter a **Name** for your machine learning project. -5. Click the **Create project** button to finalize the creation. -6. After creation, the new project appears in the list under **GraphML projects**. - Click the project name to begin with a Featurization job. - -## Featurization phase - -After clicking on a project name, you are taken to a screen where you can -configure and start a new Featurization job. Follow these steps: -1. **Select a Graph**: In the **Features** section, choose your target graph from the **Select a graph** dropdown menu. -2. **Select Vertex Collection(s)**: Pick the node collection(s) that you want to include for feature extraction. -3. **Select Attributes**: Choose the attributes from your node collection to - convert into machine-understandable features. Attributes cannot be used if their values are lists or arrays. - -{{< info >}} -A metagraph is basically just the configured subset of a graph (the node and -edge collections and the specified attributes). This is what you see represented -in the metagraph object in the JSON specification on the right. -{{< /info >}} - -### Configuration options - -The featurization process has several configurable options, grouped into -**Configuration** and **Advanced** settings. These are also shown in a JSON -format on the right side of the screen for transparency. - -In the **Configuration** tab, you can control the overall featurization job and -how features are stored. -- **Batch size**: The number of documents to process in a single batch. -- **Run analysis checks**: Whether to run analysis checks to perform a high-level - analysis of the data quality before proceeding. The default value is `true`. -- **Skip labels**: Skip the featurization process for attributes marked as labels. - The default value is `false`. -- **Overwrite FS graph**: Whether to overwrite the Feature Store graph if features - were previously generated. The default value is `false`, therefore features are - written to an existing Feature Store graph. -- **Write to source graph**: Whether to store the generated features on the Source - Graph. The default value is `true`. -- **Use feature store**: Enable the use of the Feature Store database, which - allows you to store features separately from your Source Database. The default - value is `false`, therefore features are written to the source graph. - -### Handling imperfect data - -Real-world datasets often contain missing values or mismatched data types. Use -the strategies below to control how each feature type (**Text**, **Numeric**, -**Category**, **Label**) handles these issues during featurization. - -| **Strategy type** | **Option** | **Description** | **When to use** | -|-------------------|-----------------------|-----------------------------------------------------------------------------------------------------|---------------------------------------------------------------| -| Missing | **Raise** | Stops the job and reports an error when a value is missing. | When missing data indicates a critical issue. | -| | **Replace** | Substitutes missing values with a default you provide (e.g., `0` for numbers, `"unknown"` for text). | When missing values are expected. | -| Mismatch | **Raise** | The strictest option. Stops the job on any data type mismatch. | When any data type mismatch indicates a critical error. | -| | **Replace** | Replaces mismatched values with a default you provide, without trying to convert it first. | When mismatched values are unreliable, and you prefer to substitute it directly. | -| | **Coerce and Raise** | Attempts to convert (coerce) the value to the correct type (e.g. string "123" to number `123`). If the conversion is successful, it uses the new value. If it fails, the job stops. | A balanced approach, often the best default strategy. | -| | **Coerce and Replace**| The most forgiving option. The system first tries to convert the value. If it fails, it replaces the value with the specified default and continues the job. | For very dirty datasets where completing the job is the highest priority. | - -Once you’ve set your strategies, click **Begin featurization** to start the node -embedding-compatible featurization job. When the job status updates to -**Ready for training**, proceed to the **Training** step. - -![Navigate to Featurization](../../../images/graph-ml-ui-featurization.png) - -## Training phase - -The training is the second step in the ML workflow after featurization. -In the training phase, you configure and launch a machine learning training -job on your graph data. - -From the **Select a type of training job** dropdown menu, choose the type of -model you want to train (**Node Classification** or **Node Embeddings**). - -#### Node classification - -Node Classification is used to categorize the nodes in your graph based on their -features and structural connections within the graph. - -**Use cases include:** -- Entity categorization (e.g. movies into genres, users into segments) -- Fraud detection in transaction networks - -**Configuration parameters:** -- **Type of Training Job**: Node classification -- **Target Vertex Collection**: Choose the collection to classify (e.g. `movie`) -- **Batch Size**: The number of documents processed in a single training iteration. (e.g. `256`) -- **Data Load Batch Size**: The number of documents loaded from ArangoDB into memory in a single batch during the data loading phase (e.g. `50000`). -- **Data Load Parallelism**: The number of parallel processes used when loading data from ArangoDB into memory for training (e.g. `10`). - -After setting these values, click the **Begin training** button to start the job. - -![Node Classification](../../../images/ml-nodeclassification.png) - -#### Node embeddings - -Node Embeddings are used to generate vector embeddings (dense numerical representations) -of graph nodes that capture structural and feature-based information. - -**Use cases include:** -- Similarity search (e.g. finding similar products, users, or documents) -- Link prediction (e.g. suggesting new connections) - -**Configuration parameters:** -- **Type of Training Job:** Node embeddings -- **Target Vertex Collection:** Select the collection to generate embeddings for (e.g. `movie` or `person`) -- No label is required for training in this mode - -The target collection is where the model's predictions are stored when running a prediction job. - -Once the configuration is complete, click **Begin training** to start the embedding job. - -![Node Embeddings](../../../images/ml-node-embedding.png) - -## Model selection phase - -Once the training is finished, the job status updates to **READY FOR MODEL SELECTION**. -This means the model has been trained using the provided node and edge data -and is now ready for evaluation. - -A list of trained models is displayed, along with performance metrics -(**Accuracy**, **Precision**, **Recall**, **F1 score**, **Loss**). Review the results of different -model runs and configurations. - -![GraphML Model Selection](../../../images/graph-ml-model.png) - -Select the best performing model suitable for your prediction task. You can also -open the **Confusion Matrix** to compare predicted values versus actual values. - -![GraphML Confusion Matrix](../../../images/graphml-ui-confusion-matrix.png) - -## Prediction phase - -After selecting a model, you can create a Prediction Job. The Prediction Job -generates predictions and persists them to the source graph, either in a new -collection or within the source documents. - -The Prediction interface allows inference to be run using the selected model. -It enables configuration of how predictions are executed, which collections are -involved, and whether new or outdated documents should be automatically featurized -before prediction. - -You have two important options: - -- **Featurize new documents:** Enable this option to generate features for - documents that have been added since the model was trained. This is useful - for getting predictions on new data without having to retrain the model. -- **Featurize outdated documents:** Enable this option to re-generate features - for documents that have been modified. Outdated documents are those whose - attributes (used during featurization) have changed since the last feature - computation. This ensures your predictions reflect the latest changes to your data. - -In addition to these settings, you can also define the target data, where to store -results, and whether to run the job on a recurring schedule. - -These options provide flexibility in handling dynamic graph data and keeping -predictions relevant without repeating the entire ML workflow. - -- **Data load batch size**: Specifies the number of documents to load in a - single batch (e.g. `500000`). -- **Data load parallelism**: The number of parallel threads used to process - the prediction workload (e.g. `10`). -- **Prediction field**: The field in the documents where the predicted values are stored. - -![GraphML prediction phase](../../../images/graph-prediction.png) - -### Configuration options - -The Prediction screen displays the following configuration options: -- **Select Model**: Displays the model selected during the Model Selection phase. This model will be used to perform inference. -- **Target Vertex Collection**: This is the node collection on which predictions are applied. -- **Prediction Type**: Depending on the training job (for example, classification or embedding), the prediction outputs class labels or updated embeddings. - -### Enable scheduling - -You can configure automatic predictions using the **Enable scheduling** checkbox. -When scheduling is enabled, predictions run automatically based on a set CRON -expression. This helps keep prediction results up-to-date as new data is added to the system. - -You can define a cron expression that sets when the prediction job should run. -The cron syntax is a set of five fields in a line, indicating when the job should -be executed. The format must follow the following order: `minute` `hour` `day-of-month` `month` `day-of-week` -(e.g. `0 0 * * *` for daily predictions at 00:00, or `0 0 1 1 *` to execute the prediction -on January 1st at 00:00). - -When a field is set to an asterisk `*`, it means that any value is allowed for that field, -whenever the other field conditions are met. - -Below the CRON field, a user-friendly scheduling interface helps translate it: -- **Period**: Options include **Hourly**, **Daily**, **Weekly**, **Monthly**, or **Yearly**. -- **Month**: Indicates the month. For example, `1` for January. -- **Day of Month**: Indicates the day of the month. For example, `1` for - the first day of the month. -- **Day of Week** (optional): Indicates the day of the week. For example, - Monday is `1` and Tuesday is `2`. -- **Hours and Minutes**: Set the exact time for execution. For example, - if the hour is set to `8` and the minute to `0`, then the job runs at 8:00 AM. - -### Execute prediction - -After reviewing the configuration, click the **Run Prediction** button. -Once prediction is complete, you can analyze the results directly in -the Web Interface or export them for downstream use. - -## Limitations - -- **Edge Attributes**: The current version of GraphML does not support the use of edge attributes as features. -- **Dangling Edges**: Edges that point to non-existent nodes ("dangling edges") are not caught during the featurization analysis. They may cause errors later, during the Training phase. -- **Memory Usage**: Both featurization and training can be memory-intensive. Out-of-memory errors can occur on large graphs with insufficient system resources. diff --git a/site/content/platform/data-science/graphrag/services/_index.md b/site/content/platform/data-science/graphrag/services/_index.md deleted file mode 100644 index 38393bc8aa..0000000000 --- a/site/content/platform/data-science/graphrag/services/_index.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: GraphRAG services -menuTitle: Services -description: '' ---- - diff --git a/site/content/platform/data-science/graphrag/services/gen-ai.md b/site/content/platform/data-science/graphrag/services/gen-ai.md deleted file mode 100644 index a87c3c44df..0000000000 --- a/site/content/platform/data-science/graphrag/services/gen-ai.md +++ /dev/null @@ -1,216 +0,0 @@ ---- -title: GenAI Orchestration Service -menuTitle: GenAI -description: >- - The GenAI orchestrator service installs, manages, and runs AI-based services - for GraphRAG in your Kubernetes cluster -weight: 5 ---- -{{< tag "ArangoDB Platform" >}} - -{{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. -{{< /tip >}} - -## Overview - -The basic operations that the GenAI orchestration service carries out are the following: -- Install a service -- Uninstall a service -- Get the status of a service -- List all installed and deployed services - -Each unique service has its own API endpoint for the deployment. - -**Endpoint LLM Host:** -`https://<ExternalEndpoint>:8529/gen-ai/v1/llmhost` - -While services have their own unique endpoint, they share the same creation -request body and the same response body structure. The `env` field is used -to define the service specific parameters, like the model name to use for a -`llmhost` service, and the labels can be used to filter and identify the services -in the platform. All services support the `profiles` field, which you can use -to define the profile to use for the service. For example, you can define a -GPU profile that enables the service to run an LLM on GPU resources. - -## LLM Host Service Creation Request Body - -```json -{ - "env": { - "model_name": "<registered_model_name>" - } -} -``` - -## Using Labels in Creation Request Body - -```json -{ - "env": { - "model_name": "<registered_model_name>" - }, - "labels": { - "key1": "value1", - "key2": "value2" - } -} -``` - -{{< info >}} -Labels are optional. Labels can be used to filter and identify services in -the Platform. If you want to use labels, define them as a key-value pair in `labels` -within the `env` field. -{{< /info >}} - -## Using Profiles in Creation Request Body - -```json -{ - "env": { - "model_name": "<registered_model_name>", - "profiles": "gpu,internal" - } -} -``` - -{{< info >}} -The `profiles` field is optional. If it is not set, the service is created with -the default profile. Profiles must be present and created in the Platform before -they can be used. If you want to use profiles, define them as a comma-separated -string in `profiles` within the `env` field. -{{< /info >}} - -The parameters required for the deployment of each service are defined in the -corresponding service documentation. - -## Obtaining a Bearer Token - -Before you can authenticate with the GenAI service, you need to obtain a -Bearer token. You can generate this token using the ArangoDB authentication API: - -```bash -curl -X POST https://<ExternalEndpoint>:8529/_open/auth \ - -d '{"username": "your-username", "password": "your-password"}' -``` - -This returns a JWT token that you can use as your Bearer token. For more -details about ArangoDB authentication and JWT tokens, see -the [ArangoDB Authentication](../../../../3.12/develop/http-api/authentication/#jwt-user-tokens) -documentation. - -## Complete Service lifecycle example - -The example below shows how to install, monitor, and uninstall the Importer service. - -### Step 1: Installing the service - -```bash -curl -X POST https://<ExternalEndpoint>:8529/gen-ai/v1/graphragimporter \ - -H "Authorization: Bearer <your-bearer-token>" \ - -H "Content-Type: application/json" \ - -d '{ - "env": { - "username": "<your-username>", - "db_name": "<your-database-name>", - "api_provider": "<your-api-provider>", - "triton_url": "<your-arangodb-llm-host-url>", - "triton_model": "<your-triton-model>" - } - }' -``` - -**Response:** - -```json -{ - "serviceInfo": { - "serviceId": "arangodb-graphrag-importer-of1ml", - "description": "Install complete", - "status": "DEPLOYED", - "namespace": "arangodb-platform-dev" - } -} -``` - -### Step 2: Checking the service status - -```bash -curl -X GET https://<ExternalEndpoint>:8529/gen-ai/v1/service/arangodb-graphrag-importer-of1ml \ - -H "Authorization: Bearer <your-bearer-token>" -``` - -**Response:** -```json -{ - "serviceInfo": { - "serviceId": "arangodb-graphrag-importer-of1ml", - "description": "Install complete", - "status": "DEPLOYED", - "namespace": "arangodb-platform-dev" - } -} -``` - -### Step 3: Uninstalling the service - -```bash -curl -X DELETE https://<ExternalEndpoint>:8529/gen-ai/v1/service/arangodb-graphrag-importer-of1ml \ - -H "Authorization: Bearer <your-bearer-token>" -``` - -**Response:** -```json -{ - "serviceInfo": { - "serviceId": "arangodb-graphrag-importer-of1ml", - "description": "Uninstall complete", - "status": "UNINSTALLED", - "namespace": "arangodb-platform-dev" - } -} -``` - -{{< info >}} -- **Service ID**: The `serviceId` from Step 1's response (`arangodb-graphrag-importer-of1ml`) is used in Steps 2 and 3 -- **Authentication**: All requests use the same Bearer token in the `Authorization` header -{{< /info >}} - -### Customizing the example - -Replace the following values with your actual configuration: -- `<your-username>` - Your database username. -- `<your-database-name>` - Target database name. -- `<your-api-provider>` - Your API provider (e.g., `triton`) -- `<your-arangodb-llm-host-url>` - Your LLM host service URL. -- `<your-triton-model>` - Your Triton model name (e.g., `mistral-nemo-instruct`). -- `<your-bearer-token>` - Your authentication token. - -## Service configuration - -The GenAI orchestrator service is **started by default**. - -It will be available at the following URL: -`https://<ExternalEndpoint>:8529/gen-ai/v1/service` - -## Health check - -To test whether the service is running, you can use the following snippet: - -```bash -curl -X GET https://<ExternalEndpoint>:8529/gen-ai/v1/health -``` - -Expected output on success: `{"status":"OK"}` - -{{< info >}} -Keep in mind that this request requires a valid Bearer token. Without a valid -Bearer token, the request fails. -{{< /info >}} - -## API Reference - -For detailed API documentation, see the -[GenAI-Service API Reference](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html). diff --git a/site/content/platform/data-science/graphrag/services/importer.md b/site/content/platform/data-science/graphrag/services/importer.md deleted file mode 100644 index 6a9558767e..0000000000 --- a/site/content/platform/data-science/graphrag/services/importer.md +++ /dev/null @@ -1,350 +0,0 @@ ---- -title: Importer Service -menuTitle: Importer -description: >- - The Importer service helps you transform your text document into a knowledge graph, - making it easier to analyze and understand complex information -weight: 10 ---- -{{< tag "ArangoDB Platform" >}} - -{{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. -{{< /tip >}} - -## Overview - -The Importer service lets you turn text files into a knowledge graph. -It supports the following text formats with UTF-8 encoding: -- `.txt` (Plain text) -- `.md` (Markdown) - -The Importer takes your text, analyzes it using the configured language model, and -creates a structured knowledge graph. This graph is then imported into your -ArangoDB database, where you can query and analyze the relationships between -different concepts in your document with the Retriever service. - -{{< tip >}} -You can also use the GraphRAG Importer service via the ArangoDB [web interface](../web-interface.md). -{{< /tip >}} - -## Creating a new project - -To create a new GraphRAG project, use the `CreateProject` method by sending a -`POST` request to the `genai/v1/project` endpoint. You must provide a unique -`project_name` and a `project_type` in the request body. Optionally, you can -provide a `project_description`. - -```curl -curl -X POST "https://<ExternalEndpoint>:8529/gen-ai/v1/project" \ --H "Content-Type: application/json" \ --d '{ - "project_name": "docs", - "project_type": "graphrag", - "project_description": "A documentation project for GraphRAG." -}' -``` -All the relevant ArangoDB collections (such as documents, chunks, entities, -relationships, and communities) created during the import process will -have the project name as a prefix. For example, the Documents collection will -become `<project_name>_Documents`. The Knowledge Graph will also use the project -name as a prefix. If no project name is specified, then all collections -are prefixed with `default_project`, e.g., `default_project_Documents`. - -### Project metadata - -Additional project metadata is accessible via the following endpoint, replacing -`<your_project>` with the actual name of your project: - -``` -GET /gen-ai/v1/project_by_name/<your_project> -``` - -The endpoint provides comprehensive metadata about your project's components, -including its importer and retriever services and their status. - -## Deployment options - -You can choose between two deployment options based on your needs. - -### Private LLM - -If you're working in an air-gapped environment or need to keep your data -private, you can use the private LLM mode with Triton Inference Server. -This option allows you to run the service completely within your own -infrastructure. The Triton Inference Server is a crucial component when -running in private LLM mode. It serves as the backbone for running your -language (LLM) and embedding models on your own machines, ensuring your -data never leaves your infrastructure. The server handles all the complex -model operations, from processing text to generating embeddings, and provides -both HTTP and gRPC interfaces for communication. - -### Public LLM - -Alternatively, if you prefer a simpler setup and don't have specific privacy -requirements, you can use the public LLM mode. This option connects to cloud-based -services like OpenAI's models via the OpenAI API or a large array of models -(Gemini, Anthropic, publicly hosted open-source models, etc.) via the OpenRouter option. - - -## Installation and configuration - -The Importer service can be configured to use either: -- Triton Inference Server (for private LLM deployments) -- OpenAI (for public LLM deployments) -- OpenRouter (for public LLM deployments) - -To start the service, use the GenAI service endpoint `/v1/graphragimporter`. -Please refer to the documentation of [GenAI service](gen-ai.md) for more -information on how to use it. - -### Using Triton Inference Server (Private LLM) - -The first step is to install the LLM Host service with the LLM and -embedding models of your choice. The setup will the use the -Triton Inference Server and MLflow at the backend. -For more details, please refer to the [Triton Inference Server](triton-inference-server.md) -and [Mlflow](mlflow.md) documentation. - -Once the `llmhost` service is up-and-running, then you can start the Importer -service using the below configuration: - -```json -{ - "env": { - "username": "your_username", - "db_name": "your_database_name", - "api_provider": "triton", - "triton_url": "your-arangodb-llm-host-url", - "triton_model": "mistral-nemo-instruct" - }, -} -``` - -Where: -- `username`: ArangoDB database user with permissions to create and modify collections. -- `db_name`: Name of the ArangoDB database where the knowledge graph will be stored. -- `api_provider`: Specifies which LLM provider to use. -- `triton_url`: URL of your Triton Inference Server instance. This should be the URL where your `llmhost` service is running. -- `triton_model`: Name of the LLM model to use for text processing. - -### Using OpenAI (Public LLM) - -```json -{ - "env": { - "openai_api_key": "your_openai_api_key", - "username": "your_username", - "db_name": "your_database_name", - "api_provider": "openai" - }, -} -``` - -Where: -- `username`: ArangoDB database user with permissions to create and modify collections -- `db_name`: Name of the ArangoDB database where the knowledge graph will be stored -- `api_provider`: Specifies which LLM provider to use -- `openai_api_key`: Your OpenAI API key - -{{< info >}} -By default, for OpenAI API, the service is using -`gpt-4o-mini` and `text-embedding-3-small` models as LLM and -embedding model respectively. -{{< /info >}} - -### Using OpenRouter (Gemini, Anthropic, etc.) - -OpenRouter makes it possible to connect to a huge array of LLM API -providers, including non-OpenAI LLMs like Gemini Flash, Anthropic Claude -and publicly hosted open-source models. - -When using the OpenRouter option, the LLM responses are served via OpenRouter -while OpenAI is used for the embedding model. - -```json - { - "env": { - "db_name": "your_database_name", - "username": "your_username", - "api_provider": "openrouter", - "openai_api_key": "your_openai_api_key", - "openrouter_api_key": "your_openrouter_api_key", - "openrouter_model": "mistralai/mistral-nemo" // Specify a model here - }, - } -``` - -Where: -- `username`: ArangoDB database user with permissions to access collections -- `db_name`: Name of the ArangoDB database where the knowledge graph is stored -- `api_provider`: Specifies which LLM provider to use -- `openai_api_key`: Your OpenAI API key (for the embedding model) -- `openrouter_api_key`: Your OpenRouter API key (for the LLM) -- `openrouter_model`: Desired LLM (optional; default is `mistral-nemo`) - -{{< info >}} -When using OpenRouter, the service defaults to `mistral-nemo` for generation -(via OpenRouter) and `text-embedding-3-small` for embeddings (via OpenAI). -{{< /info >}} - -## Building Knowledge Graphs - -Once the service is installed successfully, you can follow these steps -to send an input file to the Importer service: - -1. Prepare your text document for processing (text format with UTF-8 encoding or markdown files). -2. Send the document to the Importer service using HTTP: - ```bash - # Base64 encode your document - base64_content=$(base64 -i your_document.txt) - - # Send to the Loader service - curl -X POST /v1/import \ - -H "Content-Type: application/json" \ - -d '{ - "file_content": "'$base64_content'", - "file_name": "your_document.txt" - }' - ``` - - Replace the following placeholders: - - `<your-arangodb-platform-url>`: Your ArangoDB Platform URL. - - `<url-postfix>`: The URL postfix configured in your deployment. - - - The service will: - - Process the document using the configured LLM model. - - Generate embeddings using the embedding model. - - Build a knowledge graph. - - Import the graph into your ArangoDB database. - -## Verifying the import - -You can verify the state of the import process via the following endpoint: - -``` -GET /gen-ai/v1/project_by_name/<your_project> -``` - -For example, the `status` object found within `importerServices` may contain the following -properties: - -```json -"status": { - "status": "service_completed", - "progress": 100, - "message": "" -} -``` - -Alternatively, you can also see if the import was successful by checking your ArangoDB database: - -1. Connect to your ArangoDB instance. -2. Navigate to the specified database. -3. Verify that the following collections exist: - - `knowledge_graph_vertices`: Contains the nodes of the knowledge graph i.e. documents, chunks, communities, and entities. - - `knowledge_graph_edges`: Contains the relationships between nodes i.e. relations. - - -## What ArangoDB Collections look like after import - -The Importer creates several collections in ArangoDB to store different -aspects of your knowledge graph. See below a detailed explanation of each -collection. All collections are using the name of your project as a prefix. - -### Documents collection - -- **Purpose**: Stores the original text document that were processed. -- **Key Fields**: - - `_key`: Unique identifier for the document. - - `content`: The full text content of the document. -- **Usage**: Acts as the root level container for all document-related data. - -### Chunks Collection - -- **Purpose**: Stores text chunks extracted from documents for better processing and analysis. -- **Key Fields**: - - `_key`: Unique identifier for the chunk. - - `content`: The text content of the chunk. - - `tokens`: Number of tokens in the chunk. - - `chunk_order_index`: Position of the chunk in the original document. -- **Usage**: Enables granular analysis of document content and maintains document structure. - -### Entities Collection - -- **Purpose**: Stores entities extracted from the text, such as persons, organizations, concepts, etc. -- **Key Fields**: - - `_key`: Unique identifier for the entity. - - `entity_name`: Name of the entity. - - `entity_type`: Type of entity (e.g., person, organization). - - `description`: Description of the entity. - - `embedding`: Vector representation of the entity for similarity search. - - `clusters`: Community clusters the entity belongs to. -- **Usage**: Enables entity-based querying and semantic search. - -### Communities Collection - -- **Purpose**: Stores thematic clusters of related entities that form meaningful - communities within your documents. Each community represents a cohesive group - of concepts, characters, or themes that are closely related and interact with - each other. These communities help identify and analyze the main narrative - threads, character relationships, and thematic elements in your documents. -- **Key Fields**: - - `_key`: Unique identifier for the community. - - `title`: Cluster ID to which this community belongs to. - - `report_string`: A detailed markdown-formatted analysis that explains the - community's theme, key relationships, and significance. This includes - sections on main characters, their roles, relationships, and the impact of key events or locations. - - `report_json`: Structured data containing: - - `title`: The main theme or focus of the community. - - `summary`: A concise overview of the community's central narrative. - - `rating`: A numerical score indicating the community's significance (the higher, the better). - - `rating_explanation`: Justification for the rating. - - `findings`: An array of detailed analyses, each containing a summary and explanation of key aspects. - - `level`: The hierarchical level of the community (e.g., `1` for top-level communities). - - `occurrence`: A normalized score (ranging from `0` to `1`) showing the relative frequency with which this community is mentioned or identified throughout your documents. A value close to 1 means this community is very common in your data and a value near `0` means it is rare. - - `sub_communities`: References to more specific sub-communities that are part of this larger community. -- **Usage**: Enables you to: - - Identify and analyze major narrative threads and themes. - - Understand complex relationships between characters and concepts. - - Track the significance and impact of different story elements. - - Navigate through hierarchical relationships between themes. - - Discover patterns and recurring elements in your documents. - -### Relations Collection - -- **Purpose**: Stores relationships between different nodes in the graph. -- **Key Fields**: - - `_from`: Source node reference. - - `_to`: Target node reference. - - `type`: Type of relationship (e.g., **PART_OF**, **MENTIONED_IN**, **RELATED_TO**, **IN_COMMUNITY**). - - Additional metadata depending on relationship type (Entity to Entity): - - `weight`: Relationship strength (the higher, the better). - - `description`: Description of the relationship. - - `source_id`: Source of the relationship. - - `order`: Order of the relationship. -- **Usage**: Enables traversal and analysis of relationships between different elements. - -### Relationship Types - -The system creates several types of relationships between nodes: - -1. **PART_OF**: Links chunks to their parent documents. -2. **MENTIONED_IN**: Connects entities to the chunks where they are mentioned. -3. **RELATED_TO**: Shows relationships between different entities. -4. **IN_COMMUNITY**: Associates entities with their community groups. - -### Vector Search Capabilities - -The system automatically creates vector indexes on the `embedding` field in the Entities collection, enabling: -- Semantic similarity search -- Nearest neighbor queries -- Efficient vector-based retrieval - -## API Reference - -For detailed API documentation, see the -[GraphRAG Importer API Reference](https://arangoml.github.io/platform-dss-api/graphrag_importer/proto/index.html). diff --git a/site/content/platform/data-science/graphrag/services/mlflow.md b/site/content/platform/data-science/graphrag/services/mlflow.md deleted file mode 100644 index 8c13b18421..0000000000 --- a/site/content/platform/data-science/graphrag/services/mlflow.md +++ /dev/null @@ -1,162 +0,0 @@ ---- -title: ArangoDB MLflow Service -menuTitle: MLflow -description: >- - The ArangoDB MLflow Service integrates the MLflow platform for managing the - full machine learning lifecycle into the ArangoDB Platform -weight: 25 ---- -{{< tag "ArangoDB Platform" >}} - -{{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. -{{< /tip >}} - -## Overview - -The ArangoDB MLflow service is a service that hosts the official MLflow -application in your Kubernetes cluster and connects automatically to the -ArangoDB environment, e.g. for registering the LLM to be self-hosted and -used by services requiring LLMs (such as the Importer and Retriever services). - -MLflow is an open-source platform, purpose-built to assist machine learning -practitioners and teams in handling the complexities of the machine learning -process. It focuses on the full lifecycle for machine learning projects, ensuring -that each phase is manageable, traceable, and reproducible. - -The main purpose of the ArangoDB's MLflow integration is to provide a seamless -experience to manage your machine learning models and experiments within the -ArangoDB environment. For example, any spawned LLM host service is automatically -linked to the MLflow service and is able to fetch any registered model from the -MLflow model registry. - -{{< tip >}} -ArangoDB's MLflow integration is only required when working with private LLMs. -For more information, see the [Triton LLM host](triton-inference-server.md) -documentation. -{{< /tip >}} - -{{< info >}} -You can find detailed instructions about how to organize the format of a model for a -dedicated LLM host service in the official [MLflow](https://mlflow.org/docs/latest/index.html) -documentation. -{{< /info >}} - -## Core components - -MLflow consists of the following core components: - -- **Model Registry**: A centralized model store, set of APIs, and UI to - collaboratively manage the full lifecycle of an MLflow Model, including - model lineage, versioning, stage transitions, and annotations. -- **Experiment Tracking**: Provides an API and UI for logging parameters, - code versions, metrics, and artifacts during the ML process, allowing - for comparison of multiple runs across different users. -- **Model Packaging**: Offers a standard format for packaging models from any framework. -- **Serving**: Facilitates the deployment of models to various platforms. - Within the ArangoDB environment, this enables the integration with services that utilize self-hosted LLMs. -- **Evaluation**: Provides tools for in-depth model analysis, facilitating objective model comparison. -- **Observability**: Ensures that the ML lifecycle is traceable and reproducible through various metrics and logs. - -## Quickstart - -The ArangoDB MLflow service is **started by default**. - -It is automatically spawned and available at the following URL: - -``` -https://<ExternalEndpoint>:8529/mlflow/ -``` - -You can interact with the ArangoDB MLflow service in two ways: -- **Programmatically**: Using the official MLflow client -- **Web Interface**: Directly through your browser at the URL above - -To use the programmatic API, please use the **official MLflow client**. - -{{< info >}} -The ArangoDB MLflow service requires authentication. You need a valid -Bearer token to access the service. -{{< /info >}} - -### Obtaining a Bearer Token - -Before you can authenticate with the MLflow service, you need to obtain a -Bearer token. You can generate this token using the ArangoDB authentication API: - -```bash -curl -X POST https://<ExternalEndpoint>:8529/_open/auth \ - -d '{"username": "your-username", "password": "your-password"}' -``` - -This returns a JWT token that you can use as your Bearer token. -For more details about ArangoDB authentication and JWT tokens, see the -[ArangoDB Authentication](../../../../3.12/develop/http-api/authentication.md/#jwt-user-tokens) -documentation. - -## Installation - -First, install the MLflow client: - -```bash -pip install mlflow=2.22.1 -``` -{{< warning >}} -MLflow version 3 introduces a breaking change that affects this workflow, so it is -important to use MLflow version 2. -{{< /warning >}} - -There are two approaches for programmatic access to your ArangoDB MLflow service: -- Configuration in Python -- Using environment variables - -### Configuration in Python - -```python -import mlflow -import os - -# Set authentication and tracking URI -os.environ['MLFLOW_TRACKING_TOKEN'] = 'your-bearer-token-here' -mlflow.set_tracking_uri("https://<ExternalEndpoint>:8529/mlflow/") - -# Start logging your experiments -with mlflow.start_run(): - mlflow.log_artifact("local_file.txt") -``` - -### Using environment variables - -Set the environment variables in your shell: - -```bash -export MLFLOW_TRACKING_URI="https://<ExternalEndpoint>:8529/mlflow/" -export MLFLOW_TRACKING_TOKEN="your-bearer-token-here" -``` - -Then use MLflow normally in your Python code: - -```python -import mlflow - -# MLflow automatically uses the environment variables -with mlflow.start_run(): - mlflow.log_artifact("local_file.txt") -``` - -## Health check - -To test whether the service is running, you can use the following snippet: - -```bash -curl -H "Authorization: Bearer your-bearer-token-here" https://<ExternalEndpoint>:8529/mlflow/health -``` - -Expected output on success: HTTP `200` status with response body `OK`. - -## API Reference - -For detailed API documentation, refer to the official -[MLflow REST API Reference](https://mlflow.org/docs/latest/api_reference/rest-api.html). diff --git a/site/content/platform/data-science/graphrag/services/natural-language-to-aql.md b/site/content/platform/data-science/graphrag/services/natural-language-to-aql.md deleted file mode 100644 index 6d2610dfe0..0000000000 --- a/site/content/platform/data-science/graphrag/services/natural-language-to-aql.md +++ /dev/null @@ -1,241 +0,0 @@ ---- -title: Natural Language to AQL Translation Service (txt2aql) -menuTitle: txt2aql -description: >- - The Natural Language to AQL Translation Service is a powerful tool that allows - you to interact with your ArangoDB database using natural language queries -weight: 20 -draft: true # Not available in pre-release ---- -## Overview - -This service translates your questions and commands into AQL (ArangoDB Query Language), -executes the queries, and provides responses in natural language. - -## Features - -- Natural language to AQL query translation -- Support for multiple LLM providers (via OpenAI API or a self-hosted Triton Inference Server) -- RESTful and gRPC interfaces -- Health monitoring endpoints -- Flexible output formats (Natural Language, AQL, JSON) - -## Getting Started - -### Prerequisites - -- ArangoDB instance -- OpenAI API key (if using OpenAI as provider) -- Triton URL and model name (if using Triton as provider) - - -### Configuration - -The following environment variables are set at installation time and used at runtime: - -```bash -# Required Database Configuration -ARANGODB_NAME=<your_database_name> -ARANGODB_USER=<your_username> - -# LLM Provider Configuration -API_PROVIDER=<provider> # "openai" or "triton" - -# If using OpenAI -OPENAI_API_KEY=<your_api_key> -OPENAI_MODEL=<model_name> # Optional, defaults to GPT-4 -OPENAI_TEMPERATURE=<temperature> # Optional -OPENAI_MAX_RETRIES=<retries> # Optional - -# If using Triton -TRITON_URL=<triton_server_url> -TRITON_MODEL=<model_name> -TRITON_TIMEOUT=<timeout_seconds> # Optional -``` - -### Starting the Service - -To start the service, use GenAI service endpoint `CreateGraphRag`. Please refer to the documentation of GenAI service for more information on how to use it. - -### Required Parameters - -These parameters must be provided in the install request sent to GenAI service. - -- `username`: Database username for authentication -- `db_name`: Name of the ArangoDB database -- `api_provider`: LLM provider selection (`openai`, `triton`) - -### Provider-Specific Required Parameters - -#### OpenAI Provider - -- `openai_api_key`: API key for OpenAI authentication -- `openai_model`: Model name (defaults to "gpt-3.5-turbo" if not specified) - -#### Triton Provider - -- `triton_url`: URL of the Triton inference server -- `triton_model`: Model name to use with Triton - -## API Reference - -### REST Endpoints - -1. **Process Text** - Ask general questions to the LLM and get a natural language response. This endpoint does not query the database. - ```bash - POST /v1/process_text - Content-Type: application/json - - { - "input_text": "What are the advantages of graph databases?" - } - ``` - -2. **Translate Query** - Convert natural language to AQL and query the database - ```bash - POST /v1/translate_query - Content-Type: application/json - - { - "input_text": "Find all users who are friends with John", - "options": { - "output_formats": ["NL", "AQL", "JSON"] - } - } - ``` - -3. **Health Check** - Monitor service health - ```bash - GET /v1/health - ``` - -### gRPC Endpoints - -The service also provides gRPC endpoints for more efficient communication: - -1. **Process Text** - ```bash - grpcurl -plaintext -d '{"input_text": "Hello world"}' \ - localhost:9090 txt2aql.Txt2AqlService/ProcessText - ``` - -2. **Translate Query** - ```bash - grpcurl -plaintext -d '{ - "input_text": "Find all characters from House Stark", - "options": { - "output_formats": ["NL","AQL","JSON"] - } - }' localhost:9090 txt2aql.Txt2AqlService/TranslateQuery - ``` - -3. **Health Check** - ```bash - grpcurl -plaintext localhost:9090 txt2aql.Txt2AqlService/HealthCheck - ``` - -## Output Formats - -The `translate_query` endpoint of the txt2aql service supports multiple output formats that can be specified in the `output_formats` field of your request. Each format serves a different purpose and can be used individually or in combination: - -### Natural Language (NL) - -- **Format identifier**: `"NL"` -- **Returns**: A human-readable explanation of the query results -- **Helpful for**: Understanding what the query found in plain English -- **Example**: - - **Input**: `Find all users who are friends with John` - - **Output**: `I found 3 users who are friends with John, including Alice, Bob, and Carol` - -### AQL Query (AQL) - -- **Format identifier**: `"AQL"` -- **Returns**: The generated ArangoDB Query Language (AQL) query -- **Useful for**: - - Debugging query translation - - Learning AQL syntax - - Modifying queries for reuse -- **Shows**: Exactly how your natural language was translated into database operations -- **Example**: - - **Input**: `Find all users who are friends with John` - - **Output**: `FOR u IN users FILTER u.friends ANY == 'John' RETURN u` - -### JSON Results (JSON) - -- **Format identifier**: `"JSON"` -- **Returns**: The raw query results in JSON format -- **Provides**: Direct access to the complete dataset -- **Ideal for**: - - Programmatic processing - - Data integration - - Custom formatting needs -- **Example**: - - **Input**: `Find all users who are friends with John` - - **Output**: `[{"name":"Alice","age":30},{"name":"Bob","age":25},{"name":"Carol","age":35}]` - -### Example Response - -```json -{ - "original_query": "Find all users who are friends with John", - "nl_response": "I found 3 users who are friends with John: Alice, Bob, and Carol", - "aql_query": "FOR u IN users FILTER u.friends ANY == 'John' RETURN u", - "aql_result": "[{\"name\":\"Alice\",\"age\":30},{\"name\":\"Bob\",\"age\":25},{\"name\":\"Carol\",\"age\":35}]" -} -``` - -### Usage Tips - -1. Request only the formats you need to minimize response size and processing time -2. Use `NL` for user interfaces, human consumption or when wrapped as an LLM-callable function (e.g. in LLM agent frameworks) -3. Use `AQL` for debugging and learning purposes -4. Use `JSON` for programmatic data processing such as API calls. - -### Default Behavior - -- If no output formats are specified, the service defaults to `NL` format only -- Multiple formats can be requested simultaneously -- Formats are processed efficiently, with results cached where possible - -## Error Handling - -The service provides clear error messages for common issues: - -- Invalid or missing environment variables -- Database connection failures -- Authentication errors -- Invalid query formats -- LLM provider errors - -Error responses include appropriate HTTP status codes and descriptive messages. - -## Best Practices - -1. Be specific in your queries to get more accurate translations -2. Use appropriate output formats based on your needs -3. Monitor the health endpoint for service status -4. Implement proper error handling in your client applications -5. Use connection pooling for better performance -6. Consider rate limiting for production deployments - -## Troubleshooting - -Common issues and solutions: - -1. **Connection Issues** - - Verify ARANGODB_ENDPOINT is accessible - - Check network/firewall settings - - Ensure proper authentication credentials - -2. **Query Translation Issues** - - Make queries more specific - - Check LLM provider configuration - - Verify database schema matches query context - - The quality of the generated AQL may vary depending on the LLM model used. - Therefore we recommend using an AQL-capable coding model (e.g. a frontier AQL-capable - LLM or a fine-tuned AQL-capable coding model) for better results. - -## API Reference - -For detailed API documentation, see the -[Natural Language Service API Reference](https://arangoml.github.io/platform-dss-api/natural-language-service/proto/index.html). diff --git a/site/content/platform/data-science/graphrag/services/retriever.md b/site/content/platform/data-science/graphrag/services/retriever.md deleted file mode 100644 index 0683d5beaa..0000000000 --- a/site/content/platform/data-science/graphrag/services/retriever.md +++ /dev/null @@ -1,269 +0,0 @@ ---- -title: Retriever Service -menuTitle: Retriever -description: >- - The Retriever is a powerful service that enables intelligent search and - retrieval from knowledge graphs created by the Importer service -weight: 15 ---- - -{{< tag "ArangoDB Platform" >}} - -{{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. -{{< /tip >}} - -## Overview - -The Retriever service offers two distinct search methods: -- **Global search**: Analyzes entire document to identify themes and patterns, - perfect for high-level insights and comprehensive summaries. -- **Local search**: Focuses on specific entities and their relationships, ideal - for detailed queries about particular concepts. - -The service supports both private (Triton Inference Server) and public (OpenAI) -LLM deployments, making it flexible for various security and infrastructure -requirements. With simple HTTP endpoints, you can easily query your knowledge -graph and get contextually relevant responses. - -**Key features:** -- Dual search methods for different query types -- Support for both private and public LLM deployments -- Simple REST API interface -- Integration with ArangoDB knowledge graphs -- Configurable community hierarchy levels - -{{< tip >}} -You can also use the GraphRAG Retriever service via the ArangoDB [web interface](../web-interface.md). -{{< /tip >}} - -## Search methods - -The Retriever service enables intelligent search and retrieval of information -from your knowledge graph. It provides two powerful search methods, global Search -and local Search, that leverage the structured knowledge graph created by the Importer -to deliver accurate and contextually relevant responses to your natural language queries. - -### Global search - -Global search is designed for queries that require understanding and aggregation -of information across your entire document. It's particularly effective for questions -about overall themes, patterns, or high-level insights in your data. - -- **Community-Based Analysis**: Uses pre-generated community reports from your - knowledge graph to understand the overall structure and themes of your data, -- **Map-Reduce Processing**: - - **Map Stage**: Processes community reports in parallel, generating intermediate responses with rated points. - - **Reduce Stage**: Aggregates the most important points to create a comprehensive final response. - -**Best use cases**: -- "What are the main themes in the dataset?" -- "Summarize the key findings across all documents" -- "What are the most important concepts discussed?" - -### Local search - -Local search focuses on specific entities and their relationships within your -knowledge graph. It is ideal for detailed queries about particular concepts, -entities, or relationships. - -- **Entity Identification**: Identifies relevant entities from the knowledge graph based on the query. -- **Context Gathering**: Collects: - - Related text chunks from original documents. - - Connected entities and their strongest relationships. - - Entity descriptions and attributes. - - Context from the community each entity belongs to. -- **Prioritized Response**: Generates a response using the most relevant gathered information. - -**Best use cases**: -- "What are the properties of [specific entity]?" -- "How is [entity A] related to [entity B]?" -- "What are the key details about [specific concept]?" - -## Installation - -The Retriever service can be configured to use either the Triton Inference Server -(for private LLM deployments) or OpenAI/OpenRouter (for public LLM deployments). - -To start the service, use the GenAI service endpoint `/v1/graphragretriever`. -Please refer to the documentation of [GenAI service](gen-ai.md) for more -information on how to use it. - -### Using Triton Inference Server (Private LLM) - -The first step is to install the LLM Host service with the LLM and -embedding models of your choice. The setup will the use the -Triton Inference Server and MLflow at the backend. -For more details, please refer to the [Triton Inference Server](triton-inference-server.md) -and [Mlflow](mlflow.md) documentation. - -Once the `llmhost` service is up-and-running, then you can start the Importer -service using the below configuration: - -```json -{ - "env": { - "username": "your_username", - "db_name": "your_database_name", - "api_provider": "triton", - "triton_url": "your-arangodb-llm-host-url", - "triton_model": "mistral-nemo-instruct" - }, -} -``` - -Where: -- `username`: ArangoDB database user with permissions to access collections. -- `db_name`: Name of the ArangoDB database where the knowledge graph is stored. -- `api_provider`: Specifies which LLM provider to use. -- `triton_url`: URL of your Triton Inference Server instance. This should be the URL where your `llmhost` service is running. -- `triton_model`: Name of the LLM model to use for text processing. - -### Using OpenAI (Public LLM) - -```json -{ - "env": { - "openai_api_key": "your_openai_api_key", - "username": "your_username", - "db_name": "your_database_name", - "api_provider": "openai" - }, -} -``` - -Where: -- `username`: ArangoDB database user with permissions to access collections. -- `db_name`: Name of the ArangoDB database where the knowledge graph is stored. -- `api_provider`: Specifies which LLM provider to use. -- `openai_api_key`: Your OpenAI API key. - -{{< info >}} -By default, for OpenAI API, the service is using -`gpt-4o-mini` and `text-embedding-3-small` models as LLM and -embedding model respectively. -{{< /info >}} - -### Using OpenRouter (Gemini, Anthropic, etc.) - -OpenRouter makes it possible to connect to a huge array of LLM API providers, -including non-OpenAI LLMs like Gemini Flash, Anthropic Claude and publicly hosted -open-source models. - -When using the OpenRouter option, the LLM responses are served via OpenRouter while -OpenAI is used for the embedding model. - -```json - { - "env": { - "db_name": "your_database_name", - "username": "your_username", - "api_provider": "openrouter", - "openai_api_key": "your_openai_api_key", - "openrouter_api_key": "your_openrouter_api_key", - "openrouter_model": "mistralai/mistral-nemo" // Specify a model here - }, - } -``` - -Where: -- `username`: ArangoDB database user with permissions to access collections. -- `db_name`: Name of the ArangoDB database where the knowledge graph is stored. -- `api_provider`: Specifies which LLM provider to use. -- `openai_api_key`: Your OpenAI API key (for the embedding model). -- `openrouter_api_key`: Your OpenRouter API key (for the LLM). -- `openrouter_model`: Desired LLM (optional; default is `mistral-nemo`). - -{{< info >}} -When using OpenRouter, the service defaults to `mistral-nemo` for generation -(via OpenRouter) and `text-embedding-3-small` for embeddings (via OpenAI). -{{< /info >}} - -## Executing queries - -After the Retriever service is installed successfully, you can interact with -it using the following HTTP endpoints, based on the selected search method. - -{{< tabs "executing-queries" >}} - -{{< tab "Local search" >}} -```bash -curl -X POST /v1/graphrag-query \ - -H "Content-Type: application/json" \ - -d '{ - "query": "What is the AR3 Drone?", - "query_type": 2, - "provider": 0 - }' -``` -{{< /tab >}} - -{{< tab "Global search" >}} - -```bash -curl -X POST /v1/graphrag-query \ - -H "Content-Type: application/json" \ - -d '{ - "query": "What is the AR3 Drone?", - "level": 1, - "query_type": 1, - "provider": 0 - }' -``` -{{< /tab >}} - -{{< /tabs >}} - -The request parameters are the following: -- `query`: Your search query text. -- `level`: The community hierarchy level to use for the search (`1` for top-level communities). -- `query_type`: The type of search to perform. - - `1`: Global search. - - `2`: Local search. -- `provider`: The LLM provider to use - - `0`: OpenAI (or OpenRouter) - - `1`: Triton - -## Health check - -You can also monitor the service health: - -```bash -GET /v1/health -``` - -## Verify status - -You can verify the state of the retriever process via the following endpoint: - -``` -GET /gen-ai/v1/project_by_name/<your_project> -``` - -For example, the `status` object found within `retrieverServices` may contain the following -properties: - -```json -"status": { - "status": "service_started", - "progress": 100, -} -``` - -## Best Practices - -- **Choose the right search method**: - - Use global search for broad, thematic queries. - - Use local search for specific entity or relationship queries. - - -- **Performance considerations**: - - Global search may take longer due to its map-reduce process. - - Local search is typically faster for concrete queries. - -## API Reference - -For detailed API documentation, see the -[GraphRAG Retrievers API Reference](https://arangoml.github.io/platform-dss-api/graphrag_retrievers/proto/index.html). diff --git a/site/content/platform/data-science/graphrag/services/triton-inference-server.md b/site/content/platform/data-science/graphrag/services/triton-inference-server.md deleted file mode 100644 index 23f1c2894c..0000000000 --- a/site/content/platform/data-science/graphrag/services/triton-inference-server.md +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Triton LLM Host -menuTitle: Triton LLM Host -description: >- - Enable your GraphRAG pipeline to use private LLMs via Triton Inference Server -weight: 30 ---- -{{< tag "ArangoDB Platform" >}} - -{{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. -{{< /tip >}} - -## Overview - -The **Triton LLM Host** service provides scalable deployment of Large Language -Models (LLMs) using the NVIDIA Triton Inference Server. It efficiently serves -machine learning models with support for HTTP and gRPC APIs, customizable routing, -and seamless Kubernetes integration. - -## Workflow - -The Triton LLM Host enables your GraphRAG pipeline to use privately hosted -LLMs directly from the ArangoDB Platform environment. The process involves the -following steps: - -1. Install the Triton LLM Host service. -2. Register your LLM model to MLflow by uploading the required files. -3. Configure the [Importer](importer.md#using-triton-inference-server-private-llm) service to use your LLM model. -4. Configure the [Retriever](retriever.md#using-triton-inference-server-private-llm) service to use your LLM model. - -{{< tip >}} -Check out the dedicated [ArangoDB MLflow](mlflow.md) documentation page to learn -more about the service and how to interact with it. -{{< /tip >}} - -## Deployment - -The Triton LLM Host service is deployed as a **Kubernetes application** using Helm charts in -the ArangoDB Platform ecosystem. It integrates with the: -- MLFlow model registry for model management. -- Storage sidecar for artifact storage. - -## Installation via GenAI Service API - -To install the Triton LLM Host service, send an API request to the -**GenAI service** using the following parameters: - -### Required parameters - -```json -{ - "models": "model_name", -} -``` -You can also specify multiple models: -- Without versions: `"model_name_1, model_name_2"` -- With versions: `"model_name_1@version1, model_name_2@version2"` -- Mixed: `"model_name_1, model_name_2@version4"` - -### Optional parameters - -```json -{ - "log_level": "INFO", - "profiles": "profile1,profile2" - "resources_requests_memory": "", // Minimum memory required for the container - "resources_requests_cpu": "", // Minimum CPU required for the container - "resources_limits_memory": "", // Maximum memory the container can use - "resources_limits_cpu": "", // Maximum CPU the container can use - "resources_requests_ephemeral_storage": "", // Minimum ephemeral storage required for the container - "resources_limits_ephemeral_storage": "" // Maximum ephemeral storage the container can use -} -``` - -### Parameter descriptions - -| Parameter | Required | Description | Example | -|-----------|----------|-------------|---------| -| `models` | ✅ | Comma-separated list of model_name@version pairs | `"mistral@1,t5@3"` | -| `resources_requests_memory` | ❌ | Minimum memory required | `"8Gi"` | -| `resources_requests_cpu` | ❌ | Minimum CPU cores required | `"2"` | -| `resources_limits_memory` | ❌ | Maximum memory allowed | `"16Gi"` | -| `resources_limits_cpu` | ❌ | Maximum CPU cores allowed | `"4"` | -| `log_level` | ❌ | Logging level | `"INFO"` (default) | -| `profiles` | ❌ | Platform profiles to apply | `"gpu,performance"` | - -## Model requirements - -### Python Backend - -All models **must use the Python backend** to ensure compatibility with the -Triton service. Each model requires the following two files: - -1. **`model.py`** - Implements the Python backend model. Triton uses this file to load and - execute your model for inference. - ```python - class TritonPythonModel: - def initialize(self, args): - # Load your model here - pass - - def execute(self, requests): - # Process inference requests - pass - - def finalize(self): - # Cleanup resources - pass - ``` - -2. **`config.pbtxt`** - This is the Triton model configuration file that defines essential parameters - such as the model name, backend, and input/output tensors. - ``` - name: "your_model_name" - backend: "python" - max_batch_size: 1 - input: [...] - output: [...] - ``` - -## Model management with MLflow - -{{< info >}} -To prepare your Python backend model for the Triton LLM Host, you must first -register it in MLflow. The Triton LLM Host service automatically downloads -and load models from the MLflow registry. -{{< /info >}} - -### How to register a model in MLflow - -Registering a Python backend model in MLflow involves packaging your -`model.py` and `config.pbtxt` files and passing them as an artifact. The Triton -service will look for a directory named after your model (e.g., `my-private-llm-model`) -within the MLflow registry store and expects to find the `model.py` and `config.pbtxt` -files inside it. - -```py -try: - mlflow.set_tracking_uri(MLFLOW_SERVICE_URI) - with mlflow.start_run() as run: - run_id = run.info.run_id - model_uri = f"runs:/{run_id}/model" - mlflow.register_model(model_uri=model_uri, name=model_name) - # Log the entire model directory as an artifact, preserving the Triton structure - mlflow.log_artifact(local_path=str(local_model_dir)) -``` - -## Service endpoints - -Once deployed, the service exposes two endpoints: - -| Port | Protocol | Purpose | -|------|----------|---------| -| 8000 | HTTP/REST | Model inference, management, status | -| 8001 | gRPC | High-performance binary communication | - - -{{< info >}} -The Triton Inference Server is not intended to be used in a standalone mode. -Instead, other services consume these endpoints to send inference -requests for example. Refer to the specific service with which you are using -Triton Inference Server for more details. -{{< /info >}} - -- **Internal access (within ArangoDB Platform)**: - `https://{SERVICE_ID}.{KUBERNETES_NAMESPACE}.svc:8000` - - `KUBERNETES_NAMESPACE` is available as an environment variable. - - `SERVICE_ID` is returned by the GenAI service API. - - **Example**: - To check server health: - `GET https://{SERVICE_ID}.{KUBERNETES_NAMESPACE}.svc:8000/v2/health/ready` - -- **External access (outside ArangoDB Platform)**: - `https://{BASE_URL}:8529/llm/{SERVICE_POSTFIX}/` - - `BASE_URL`: Your ArangoDB Platform base URL. - - `SERVICE_POSTFIX`: Last 5 characters of the service ID. - - **Example**: - To check server health: - `GET https://{BASE_URL}:8529/llm/{SERVICE_POSTFIX}/v2/health/ready` - -{{< info >}} -Only HTTP protocol is supported for external access (outside the ArangoDB -Platform). For gRPC, use internal endpoints. This limitation applies to model -inference, model management, model status, and health check endpoints. -{{< /info >}} - -## Triton Inference Server API - -For complete documentation on available endpoints and their usage, -refer to the [Triton Inference Server HTTP API](https://docs.nvidia.com/deeplearning/triton-inference-server/archives/triton_inference_server_1120/triton-inference-server-guide/docs/http_grpc_api.htm) documentation. \ No newline at end of file diff --git a/site/content/platform/data-science/graphrag/tutorial-notebook.md b/site/content/platform/data-science/graphrag/tutorial-notebook.md deleted file mode 100644 index db6b278b9f..0000000000 --- a/site/content/platform/data-science/graphrag/tutorial-notebook.md +++ /dev/null @@ -1,412 +0,0 @@ ---- -title: GraphRAG Notebook Tutorial -menuTitle: Notebook Tutorial -description: >- - Building a GraphRAG pipeline using ArangoDB's integrated notebook servers -weight: 10 ---- -{{< tag "ArangoDB Platform" >}} - -{{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. -{{< /tip >}} - -## Tutorial overview - -This tutorial guides you through the process of building a -Graph-based Retrieval Augmented Generation (GraphRAG) pipeline using -ArangoDB's integrated Notebook servers. GraphRAG is an advanced framework that -combines the power of knowledge graphs (KGs) and large language models (LLMs) -to provide precise and contextually relevant responses from unstructured text data. - -You will learn how to: -- Prepare your raw text data (PDFs in this case) into a structured format - suitable for Knowledge Graph extraction using Docling. -- Utilize the ArangoDB Importer service to automatically extract - entities and relationships from your prepared text and store them as a - Knowledge Graph in ArangoDB. -- Query your newly created Knowledge Graph using the ArangoDB Retriever - service for both broad (global) and targeted (local) information retrieval. -- Set up a simple Gradio interface to interact with your GraphRAG pipeline. - -## Prerequisites - -Before you begin, ensure you have the following: -- **ArangoDB deployment:** Access to an ArangoDB deployment where you can - create and manage databases. You need the endpoint, your username, and - write access to your chosen database. -- **Python environment:** A Python 3.x environment with `pip` installed. -- **Jupyter Notebook:** This tutorial is designed to be run in ArangoDB's integrated - Notebook servers. -- **OpenAI API key (optional):** If you plan to use OpenAI's models for LLM - processing, you need an OpenAI API key. - -## Environment setup - -This section covers installing necessary libraries, importing Python modules, -and setting up the network functions for interacting with ArangoDB services. - -### Install required libraries - -First, install all the Python libraries necessary for PDF parsing, Markdown -conversion, and interacting with the ArangoDB GraphRAG services. - -```py -! pip install fitz -! pip install PyMuPDF -! pip install PyPDF2 -! pip install markdownify -! pip install docling==2.26.0 -! pip install gradio -``` - -### Import required Python libraries - -Next, import the specific modules and functions used throughout the tutorial. - -```py -import fitz -import requests -import base64 -import os -import re -from PyPDF2 import PdfReader -from docling.document_converter import DocumentConverter -from markdownify import markdownify as md -from typing import Dict, Optional -from pprint import pprint -import time -``` - -## Step 1: Prepare your document - -{{< warning >}} -GraphRAG currently supports `.txt` and `.md` formats only. If your document is -in `.pdf` format, you must convert it into a structured Markdown format using Docling. - -You can only import one file using the pre-release version of ArangoDB GraphRAG. -Importing another file overwrites the knowledge graph. -{{< /warning >}} - -[Docling](https://docling-project.github.io/docling/) from IBM is an AI-based PDF -parsing tool designed to convert complex PDFs into Markdown. This conversion is -crucial for efficient extraction of entities and relationships in the next stage. - -The following process creates a Markdown file for you (e.g., `AliceInWonderland_docling.md`) -from your PDF. The file is automatically added in the file browser of the Jupyter -notebook interface. - -```py -# --- Configuration for your document and database --- -DB_NAME = "documentation" # Set the name of the ArangoDB database you will use for your knowledge graph. Ensure this database already exists in your ArangoDB Deployment. -FILE_NAME = "AliceInWonderland" # Specify the base name of your input file (e.g., 'AliceInWonderland' for 'AliceInWonderland.pdf'). -PDF_NAME=f"./{FILE_NAME}.pdf" # Update the file path and extension if your input document is not a PDF or has a different name. -# ---------------------------------------------------- - -%%time - -def pdf_to_markdown_docling(pdf_file): - """Converts a PDF file to Markdown using Docling.""" - converter = DocumentConverter() - result = converter.convert(pdf_file) - output_md_file = pdf_file.replace(".pdf", "_docling.md") - with open(output_md_file, "w", encoding="utf-8") as md_file: - md_file.write(result.document.export_to_markdown()) - print(f"Successfully converted {pdf_file} to {output_md_file}") - -try: - pdf_to_markdown_docling(PDF_NAME) -except Exception as e: - print(f"An error occurred during PDF to Markdown conversion: {e}") -``` - -The next step is to encode the content of the Markdown file into Base64, -which is required for the Importer service. - -```py -%%time - -def encode_file_content(file_path: str) -> Optional[str]: - """Encodes the file content to Base64.""" - try: - with open(file_path, "rb") as file: - encoded_content = base64.b64encode(file.read()).decode("utf-8") - print(f"Successfully encoded file: {file_path}") - return encoded_content - except FileNotFoundError: - print(f"File not found: {file_path}") - except Exception as e: - print(f"Error reading file {file_path}: {e}") - return None - -file_content = encode_file_content(f"./{FILE_NAME}_docling.md") -``` - -## Step 2: Import your document to generate the Knowledge Graph - -Once your document is prepared, you can start the Importer service. This -service takes your processed Markdown content, extracts entities and relationships, -and then stores this structured information as a Knowledge Graph within -your specified ArangoDB database. - -### Start the Importer service - -Start the Importer service providing the necessary configuration -parameters. - -```py -%%time - -# Start the GraphRAG Importer service -importer_config = { - "db_name": DB_NAME, - "username": os.environ["USERNAME"], - "api_provider": "openai", # Switch the provider if needed - "openai_api_key": os.environ["OPENAI_API_KEY"], # Required if api_provider is 'openai' -} - -response = start_service("arangodb-graphrag-importer", importer_config) -pprint(response) - -# Extract the service ID for future reference -importer_service_id = response["serviceInfo"]["serviceId"].split("-")[-1] -print(f"Importer Service ID: {importer_service_id}") -``` - -### Submit your document - -With the importer service running, submit your Base64 encoded Markdown file. -The service will process it in the background to build the Knowledge Graph. - -{{< info >}} -This process can take some time depending on the document's size and complexity. -{{< /info >}} - -```py -%%time - -# Submit the prepared file to generate the Knowledge Graph -importer_payload = { - "file_name": FILE_NAME, - "file_content": file_content, -} - -importerResponse = send_request(f"/graphrag/importer/{importer_service_id}/v1/import", importer_payload, "POST") -pprint(importerResponse) -``` - -### Visualize and interact with the Knowledge Graph - -Once the importer service has processed the document, you can visualize and -interact with the generated Knowledge Graph using the [Graph Visualizer](../../graph-intelligence/graph-visualizer.md) -directly from the ArangoDB Platform web interface. - -1. In the ArangoDB Platform web interface, select the database you have previously used. -2. Click **Graphs** in the main navigation. -3. Select the graph named **Knowledge Graph** from the list. -4. The viewport of the Graph Visualizer opens for exploring the graph. -5. In the AQL editor, use the following query to explore communities and - entities: - ```aql - FOR c IN Communities - FILTER c._key == "0" - FOR v,e,p IN 1 INBOUND c GRAPH "KnowledgeGraph" - RETURN p - ``` - -You can also configure the display options: -- Set all **Nodes** collections (e.g., Communities, Entities) to a different color. -- Set the **Communities** label to `title`. -- Set the **Entities** label to `entity_name`. -- For **Edges** (relations), set the label to `type`. - -## Step 3: Query the Knowledge Graph with the Retriever service - -To retrieve information from the Knowledge Graph, you need to deploy the -Retriever service. This service interacts with your Knowledge Graph -and uses an LLM to formulate answers to your queries. - -### Startup parameters - -- `api_provider`: Defines to which LLM provider you want to connect (e.g., `openai`). -- `openai_api_key`: An API key for usage with ChatGPT. This is only required when - `openai` is selected as the provider. -- `db_name`: The name of the database where your Knowledge Graph was created. -- `username`: The ArangoDB username. This user needs to have write access to the specified database. - -### Start the Retriever service - -```py -%%time - -# Start the GraphRAG Retriever service -retriever_config = { - "db_name": DB_NAME, - "username": os.environ["USERNAME"], - "api_provider": "openai", # Change this provider if needed - "openai_api_key": os.environ["OPENAI_API_KEY"], -} - -response = start_service("arangodb-graphrag-retriever", retriever_config) -pprint(response) - -# Extract the service ID for future reference -retriever_service_id = response["serviceInfo"]["serviceId"].split("-")[-1] -print(f"Retriever Service ID: {retriever_service_id}") -``` - -The Retriever service is available at the following endpoint, which allows you -to send queries to the Knowledge Graph: -``` -/graphrag/retriever/{service_id}/v1/graphrag-query -``` - -### Query parameters - -The `POST /v1/graphrag-query` API expects the following parameters: - -- `query`: The question you want to ask. -- `query_type`: Can be `1` for a global search (information from the entire KG) - or `2` for a local search (focused on specific subgraphs). -- `level`: Recommended value is `1`. This parameter is relevant for global searches - and defines the hierarchy level of community grouping to start from. -- `provider`: Must be `0` for public LLMs like OpenAI. Use `1` for private LLMs. - -### Example: Global search - -Global retrieval focuses on extracting information from the entire Knowledge Graph. -It is designed to provide a comprehensive overview and answer queries that span -across multiple entities and relationships in the graph. - -For example, you can ask a broad question about the main themes of the document: - -```py -%%time - -# Example for a Global Query -global_query_body = { - "query": "What are the main themes or topics covered in the document?", - "query_type": 1, # 1 = Global search - "level": 1, - "provider": 0, # 0 = OPENAI (based on our setup) - "response_type": "use_query_decomp=True use_llm_planner=True Detailed summary" -} - -print("Executing Global Query...") -retrieverResponse = send_request( - f"/graphrag/retriever/{retriever_service_id}/v1/graphrag-query", - global_query_body, - "POST" -) - -pprint(retrieverResponse["result"]) -``` - -### Example: Local search - -Local retrieval is a focused approach where the query is constrained to -specific subgraphs within the Knowledge Graphs. It is designed for targeted -and precise information extraction. - -For example, you can ask a detailed question about entities within the -Knowledge Graph: - -```py -%%time - -# Example for a Local Query -local_query_body = { - "query": "Who are Alice's relatives?", - "query_type": 2, # 2 = Local search - "level": 1, - "provider": 0, # 0 = OPENAI (based on our setup) - "response_type": "use_query_decomp=True use_llm_planner=True Concise list" -} - -print("Executing Local Query...") -retrieverResponse = send_request( - f"/graphrag/retriever/{retriever_service_id}/v1/graphrag-query", - local_query_body, - "POST" -) - -pprint(retrieverResponse["result"]) -``` - -## Step 4: Create a chat interface via Gradio - -To make querying your Knowledge Graph more interactive, you can use Gradio to -create a simple chat interface. This allows you to submit queries and see real-time -responses from the Retriever. - -First, define the functions that handle the queries through the Gradio interface: - -```py -import time - -def global_query(query, messages): - yield from query_graph(query, 1) - -def local_query(query, messages): - yield from query_graph(query, 2) - -def query_graph(query, query_type): - body = { - "query": query, - "query_type": query_type, - "level": 1, - "provider": 0 - } - - retrieverResponse = send_request(f"/graphrag/retriever/{retriever_service_id}/v1/graphrag-query", body, "POST") - result = retrieverResponse["result"] - - response = "" - i = 0 - - while i < len(result): - current_char = result[i] - - # Handle escaped characters - if current_char == '\\': - if i + 1 < len(result): - next_char = result[i + 1] - if next_char == 'n': - response += '\n' - i += 2 - continue - - response += current_char - i += 1 - - yield response - - time.sleep(0.005) -``` -Then, you can launch the global retriever and the local retriever interfaces: - -```py -import gradio as gr - -gr.ChatInterface( - title="ArangoDB GraphRAG Global Retriever", - fn=global_query, - chatbot=gr.Chatbot(height=1000, type="messages"), - type="messages", - theme='JohnSmith9982/small_and_pretty' -).launch(share=True) -``` - -```py -import gradio as gr - -gr.ChatInterface( - title="ArangoDB GraphRAG Local Retriever", - fn=local_query, - chatbot=gr.Chatbot(height=1000, type="messages"), - type="messages", - theme='JohnSmith9982/small_and_pretty' -).launch(share=True) -``` \ No newline at end of file diff --git a/site/content/platform/data-science/graphrag/web-interface.md b/site/content/platform/data-science/graphrag/web-interface.md deleted file mode 100644 index f0146eb1f9..0000000000 --- a/site/content/platform/data-science/graphrag/web-interface.md +++ /dev/null @@ -1,176 +0,0 @@ ---- -title: How to use GraphRAG in the ArangoDB Platform web interface -menuTitle: Web Interface -weight: 5 -description: >- - Learn how to create, configure, and run a full GraphRAG workflow in four steps - using the Platform web interface ---- -{{< tag "ArangoDB Platform" >}} - -{{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. -{{< /tip >}} - -## The GraphRAG workflow in the web interface - -The entire process is organized into sequential steps within a **Project**: - -1. Creating the importer service -2. Uploading your file and exploring the generated Knowledge Graph -3. Creating the retriever service -4. Chatting with your Knowledge Graph - -## Create a GraphRAG project - -To create a new GraphRAG project using the ArangoDB Platform web interface, follow these steps: - -1. From the left-hand sidebar, select the database where you want to create the project. -2. In the left-hand sidebar, click **GenAI Suite** to open the GraphRAG project management - interface, then click **Run GraphRAG**. -3. In the **GraphRAG projects** view, click **Add new project**. -4. The **Create GraphRAG project** modal opens. Enter a **Name** and optionally - a description for your project. -5. Click the **Create project** button to finalize the creation. - -## Configure the Importer service - -Configure a service to import, parse, and retrieve all the needed data from a -file. This service uses the LLM API provider and model of your choice. - -After clicking on a project name, you are taken to a screen where you can -configure and start a new importer service job. Follow the steps below. - -{{< tabs "importer-service" >}} - -{{< tab "OpenAI" >}} -1. Select **OpenAI** from the **LLM API Provider** dropdown menu. -2. Select the model you want to use from the **Model** dropdown menu. By default, - the service is using **O4 Mini**. -3. Enter your **OpenAI API Key**. -4. Click the **Start importer service** button. - -![Configure Importer service using OpenAI](../../../images/graphrag-ui-configure-importer-openai.png) -{{< /tab >}} - -{{< tab "OpenRouter" >}} -1. Select **OpenRouter** from the **LLM API Provider** dropdown menu. -2. Select the model you want to use from the **Model** dropdown menu. By default, - the service is using **Mistral AI - Mistral Nemo**. -1. Enter your **OpenAI API Key**. -2. Enter your **OpenRouter API Key**. -3. Click the **Start importer service** button. - -{{< info >}} -When using the OpenRouter option, the LLM responses are served via OpenRouter -while OpenAI is used for the embedding model. -{{< /info >}} - -![Configure Importer service using OpenRouter](../../../images/graphrag-ui-configure-importer-openrouter.png) -{{< /tab >}} - -{{< tab "Triton LLM Host" >}} -1. Select **Triton** from the **LLM API Provider** dropdown menu. -2. Select the Triton model you want to use from the **Model** dropdown menu. -3. Click the **Start importer service** button. - -{{< info >}} -Note that you must first register your model in MLflow. The [Triton LLM Host](services/triton-inference-server.md) -service automatically downloads and loads models from the MLflow registry. -{{< /info >}} - -![Configure Importer service using Triton](../../../images/graphrag-ui-configure-importer-triton.png) -{{< /tab >}} - -{{< /tabs >}} - -See also the [GraphRAG Importer](services/importer.md) service documentation. - -## Upload your file - -1. Upload a file by dragging and dropping it in the designated upload area. - The importer service you previously launched parses and creates the - Knowledge Graph automatically. -2. Enter a file name. -3. Click the **Start import** button. - -{{< info >}} -You can only import a single file, either in `.md` or `.txt` format. -{{< /info >}} - -![Upload file in GraphRAG web interface](../../../images/graphrag-ui-upload-file.png) - -## Explore the Knowledge Graph - -You can open and explore the Knowledge Graph that has been generated by clicking -on the **Explore in visualizer** button. - -For more information, see the [Graph Visualizer](../../graph-intelligence/graph-visualizer.md) documentation. - -## Configure the Retriever service - -Creating the retriever service allows you to extract information from -the generated Knowledge Graph. Follow the steps below to configure the service. - -{{< tabs "retriever-service" >}} - -{{< tab "OpenAI" >}} -1. Select **OpenAI** from the **LLM API Provider** dropdown menu. -2. Select the model you want to use from the **Model** dropdown menu. By default, - the service uses **O4 Mini**. -3. Enter your **OpenAI API Key**. -4. Click the **Start retriever service** button. - -![Configure Retriever Service using OpenAI](../../../images/graphrag-ui-configure-retriever-openai.png) -{{< /tab >}} - -{{< tab "OpenRouter" >}} -1. Select **OpenRouter** from the **LLM API Provider** dropdown menu. -2. Select the model you want to use from the **Model** dropdown menu. By default, - the service uses **Mistral AI - Mistral Nemo**. -3. Enter your **OpenRouter API Key**. -4. Click the **Start retriever service** button. - -{{< info >}} -When using the OpenRouter option, the LLM responses are served via OpenRouter -while OpenAI is used for the embedding model. -{{< /info >}} - -![Configure Retriever Service using OpenRouter](../../../images/graphrag-ui-configure-retriever-openrouter.png) -{{< /tab >}} - -{{< tab "Triton LLM Host" >}} -1. Select **Triton** from the **LLM API Provider** dropdown menu. -2. Select the Triton model you want to use from the **Model** dropdown menu. -3. Click the **Start retriever service** button. - -{{< info >}} -Note that you must first register your model in MLflow. The [Triton LLM Host](services/triton-inference-server.md) -service automatically downloads and loads models from the MLflow registry. -{{< /info >}} - -![Configure Retriever Service using Triton](../../../images/graphrag-ui-configure-retriever-triton.png) -{{< /tab >}} - -{{< /tabs >}} - -See also the [GraphRAG Retriever](services/retriever.md) documentation. - -## Chat with your Knowledge Graph - -The Retriever service provides two search methods: -- [Local search](services/retriever.md#local-search): Local queries let you - explore specific nodes and their direct connections. -- [Global search](services/retriever.md#global-search): Global queries uncover - broader patters and relationships across the entire Knowledge Graph. - -![Chat with your Knowledge Graph](../../../images/graphrag-ui-chat.png) - -In addition to querying the Knowledge Graph, the chat service allows you to do the following: -- Switch the search method from **Local Query** to **Global Query** and vice-versa - directly in the chat -- Change the retriever service -- Clear the chat -- Integrate the Knowledge Graph chat service into your own applications diff --git a/site/content/platform/data-science/integrations/_index.md b/site/content/platform/data-science/integrations/_index.md deleted file mode 100644 index 267bcebac3..0000000000 --- a/site/content/platform/data-science/integrations/_index.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: ArangoDB integrations for data science -menuTitle: Integrations -weight: 50 -description: >- - ArangoDB offers multiple adapters that enable seamless integration with - data science tools -aliases: - - adapters ---- -ArangoDB Adapters provide a convenient way to integrate ArangoDB with popular -data science tools. By enabling you to use your preferred programming -languages and libraries, these adapters simplify the data analysis -process and make it easier to leverage the power of ArangoDB in data science. - -Read more about the adapters available in ArangoDB: - -- [NetworkX](arangodb-networkx-adapter.md) -- [cuGraph](arangodb-cugraph-adapter.md) -- [PyTorch Geometric (PyG)](arangodb-pyg-adapter.md) -- [Deep Graph Library (DGL)](arangodb-dgl-adapter.md) -- [Resource Description Framework (RDF)](arangodb-rdf-adapter.md) diff --git a/site/content/platform/data-science/integrations/arangodb-cugraph-adapter.md b/site/content/platform/data-science/integrations/arangodb-cugraph-adapter.md deleted file mode 100644 index e65cb501b6..0000000000 --- a/site/content/platform/data-science/integrations/arangodb-cugraph-adapter.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: cuGraph Adapter -menuTitle: cuGraph -weight: 10 -description: >- - The cuGraph Adapter exports graphs from ArangoDB into RAPIDS cuGraph, a library of collective GPU-accelerated graph algorithms, and vice-versa -aliases: - - ../adapters/arangodb-cugraph-adapter ---- -{{< tip >}} -ArangoDB now has a closer integration with NetworkX allowing -NetworkX users to persist their graphs in ArangoDB & leverage -GPU-accelerated graph analytics via cuGraph. [Learn more here](https://arangodb.com/introducing-the-arangodb-networkx-persistence-layer/). -{{< /tip >}} - -While offering a similar API and set of graph algorithms to NetworkX, -[RAPIDS cuGraph](https://docs.rapids.ai/api/cugraph/stable/) -library is GPU-based. Especially for large graphs, this -results in a significant performance improvement of cuGraph compared to NetworkX. -Please note that storing node attributes is currently not supported by cuGraph. -In order to run cuGraph, an Nvidia-CUDA-enabled GPU is required. - -## Resources - -The [cuGraph Adapter repository](https://github.com/arangoml/cugraph-adapter) -is available on Github. Check it out! - -## Installation - -To install the latest release of the cuGraph Adapter, -run the following command: - -```bash -pip install --extra-index-url=https://pypi.nvidia.com cudf-cu11 cugraph-cu11 -pip install adbcug-adapter -``` - -## Quickstart - -The following examples show how to get started with the cuGraph Adapter. -Check also the -[interactive tutorial](https://colab.research.google.com/github/arangoml/cugraph-adapter/blob/master/examples/ArangoDB_cuGraph_Adapter.ipynb). - -```py -import cudf -import cugraph - -from arango import ArangoClient -from adbcug_adapter import ADBCUG_Adapter, ADBCUG_Controller - -# Connect to ArangoDB -db = ArangoClient().db() - -# Instantiate the adapter -adbcug_adapter = ADBCUG_Adapter(db) -``` - -### ArangoDB to cuGraph -```py -####################### -# 1.1: via Graph name # -####################### - -cug_g = adbcug_adapter.arangodb_graph_to_cugraph("fraud-detection") - -############################# -# 1.2: via Collection names # -############################# - -cug_g = adbcug_adapter.arangodb_collections_to_cugraph( - "fraud-detection", - {"account", "bank", "branch", "Class", "customer"}, # Node collections - {"accountHolder", "Relationship", "transaction"}, # Edge collections -) -``` - -### cuGraph to ArangoDB -```py -################################# -# 2.1: with a Homogeneous Graph # -################################# - -edges = [("Person/A", "Person/B", 1), ("Person/B", "Person/C", -1)] -cug_g = cugraph.MultiGraph(directed=True) -cug_g.from_cudf_edgelist(cudf.DataFrame(edges, columns=["src", "dst", "weight"]), source="src", destination="dst", edge_attr="weight") - -edge_definitions = [ - { - "edge_collection": "knows", - "from_vertex_collections": ["Person"], - "to_vertex_collections": ["Person"], - } -] - -adb_g = adbcug_adapter.cugraph_to_arangodb("Knows", cug_g, edge_definitions, edge_attr="weight") - -############################################################## -# 2.2: with a Homogeneous Graph & a custom ADBCUG Controller # -############################################################## - -class Custom_ADBCUG_Controller(ADBCUG_Controller): - """ArangoDB-cuGraph controller. - - Responsible for controlling how nodes & edges are handled when - transitioning from ArangoDB to cuGraph & vice-versa. - """ - - def _prepare_cugraph_node(self, cug_node: dict, col: str) -> None: - """Prepare a cuGraph node before it gets inserted into the ArangoDB - collection **col**. - - :param cug_node: The cuGraph node object to (optionally) modify. - :param col: The ArangoDB collection the node belongs to. - """ - cug_node["foo"] = "bar" - - def _prepare_cugraph_edge(self, cug_edge: dict, col: str) -> None: - """Prepare a cuGraph edge before it gets inserted into the ArangoDB - collection **col**. - - :param cug_edge: The cuGraph edge object to (optionally) modify. - :param col: The ArangoDB collection the edge belongs to. - """ - cug_edge["bar"] = "foo" - -adb_g = ADBCUG_Adapter(db, Custom_ADBCUG_Controller()).cugraph_to_arangodb("Knows", cug_g, edge_definitions) - -################################### -# 2.3: with a Heterogeneous Graph # -################################### - -edges = [ - ('student:101', 'lecture:101'), - ('student:102', 'lecture:102'), - ('student:103', 'lecture:103'), - ('student:103', 'student:101'), - ('student:103', 'student:102'), - ('teacher:101', 'lecture:101'), - ('teacher:102', 'lecture:102'), - ('teacher:103', 'lecture:103'), - ('teacher:101', 'teacher:102'), - ('teacher:102', 'teacher:103') -] -cug_g = cugraph.MultiGraph(directed=True) -cug_g.from_cudf_edgelist(cudf.DataFrame(edges, columns=["src", "dst"]), source='src', destination='dst') - -# ... - -# Learn how this example is handled in Colab: -# https://colab.research.google.com/github/arangoml/cugraph-adapter/blob/master/examples/ArangoDB_cuGraph_Adapter.ipynb#scrollTo=nuVoCZQv6oyi -``` diff --git a/site/content/platform/data-science/integrations/arangodb-dgl-adapter.md b/site/content/platform/data-science/integrations/arangodb-dgl-adapter.md deleted file mode 100644 index efb246db4f..0000000000 --- a/site/content/platform/data-science/integrations/arangodb-dgl-adapter.md +++ /dev/null @@ -1,253 +0,0 @@ ---- -title: DGL Adapter -menuTitle: DGL -weight: 20 -description: >- - The DGL Adapter exports graphs from ArangoDB into Deep Graph Library (DGL), a Python package for graph neural networks, and vice-versa -aliases: - - ../adapters/arangodb-dgl-adapter ---- -The [Deep Graph Library (DGL)](https://www.dgl.ai/) is an -easy-to-use, high performance and scalable -Python package for deep learning on graphs. DGL is framework agnostic, meaning -that, if a deep graph model is a component of an end-to-end application, the -rest of the logics can be implemented in any major frameworks, such as PyTorch, -Apache MXNet or TensorFlow. - -## Resources - -Watch this -[lunch & learn session](https://www.arangodb.com/resources/lunch-sessions/graph-beyond-lunch-break-2-8-dgl-adapter/) -to get an introduction and see how to use the DGL adapter. - -The [DGL Adapter repository](https://github.com/arangoml/dgl-adapter) -is available on Github. Check it out! - -## Installation - -To install the latest release of the DGL Adapter, -run the following command: - -```bash -pip install adbdgl-adapter -``` - -## Quickstart - -The following examples show how to get started with the DGL Adapter. -Check also the -[interactive tutorial](https://colab.research.google.com/github/arangoml/dgl-adapter/blob/master/examples/ArangoDB_DGL_Adapter.ipynb). - -```py -import dgl -import torch -import pandas - -from arango import ArangoClient -from adbdgl_adapter import ADBDGL_Adapter, ADBDGL_Controller -from adbdgl_adapter.encoders import IdentityEncoder, CategoricalEncoder - -# Connect to ArangoDB -db = ArangoClient().db() - -# Instantiate the adapter -adbdgl_adapter = ADBDGL_Adapter(db) - -# Create a DGL Heterogeneous Graph -fake_hetero = dgl.heterograph({ - ("user", "follows", "user"): (torch.tensor([0, 1]), torch.tensor([1, 2])), - ("user", "follows", "topic"): (torch.tensor([1, 1]), torch.tensor([1, 2])), - ("user", "plays", "game"): (torch.tensor([0, 3]), torch.tensor([3, 4])), -}) -fake_hetero.nodes["user"].data["features"] = torch.tensor([21, 44, 16, 25]) -fake_hetero.nodes["user"].data["label"] = torch.tensor([1, 2, 0, 1]) -fake_hetero.nodes["game"].data["features"] = torch.tensor([[0, 0], [0, 1], [1, 0], [1, 1], [1, 1]]) -fake_hetero.edges[("user", "plays", "game")].data["features"] = torch.tensor([[6, 1], [1000, 0]]) -``` - -### DGL to ArangoDB -```py -############################ -# 1.1: without a Metagraph # -############################ - -adb_g = adbdgl_adapter.dgl_to_arangodb("FakeHetero", fake_hetero) - -######################### -# 1.2: with a Metagraph # -######################### - -# Specifying a Metagraph provides customized adapter behavior -metagraph = { - "nodeTypes": { - "user": { - "features": "user_age", # 1) you can specify a string value for attribute renaming - "label": label_tensor_to_2_column_dataframe, # 2) you can specify a function for user-defined handling, as long as the function returns a Pandas DataFrame - }, - # 3) You can specify set of strings if you want to preserve the same DGL attribute names for the node/edge type - "game": {"features"} # this is equivalent to {"features": "features"} - }, - "edgeTypes": { - ("user", "plays", "game"): { - # 4) you can specify a list of strings for tensor dissasembly (if you know the number of node/edge features in advance) - "features": ["hours_played", "is_satisfied_with_game"] - }, - }, -} - -def label_tensor_to_2_column_dataframe(dgl_tensor: torch.Tensor, adb_df: pandas.DataFrame) -> pandas.DataFrame: - """A user-defined function to create two - ArangoDB attributes out of the 'user' label tensor - - :param dgl_tensor: The DGL Tensor containing the data - :type dgl_tensor: torch.Tensor - :param adb_df: The ArangoDB DataFrame to populate, whose - size is preset to the length of **dgl_tensor**. - :type adb_df: pandas.DataFrame - :return: The populated ArangoDB DataFrame - :rtype: pandas.DataFrame - """ - label_map = {0: "Class A", 1: "Class B", 2: "Class C"} - - adb_df["label_num"] = dgl_tensor.tolist() - adb_df["label_str"] = adb_df["label_num"].map(label_map) - - return adb_df - - -adb_g = adbdgl_adapter.dgl_to_arangodb("FakeHetero", fake_hetero, metagraph, explicit_metagraph=False) - -####################################################### -# 1.3: with a Metagraph and `explicit_metagraph=True` # -####################################################### - -# With `explicit_metagraph=True`, the node & edge types omitted from the metagraph will NOT be converted to ArangoDB. -adb_g = adbdgl_adapter.dgl_to_arangodb("FakeHetero", fake_hetero, metagraph, explicit_metagraph=True) - -######################################## -# 1.4: with a custom ADBDGL Controller # -######################################## - -class Custom_ADBDGL_Controller(ADBDGL_Controller): - def _prepare_dgl_node(self, dgl_node: dict, node_type: str) -> dict: - """Optionally modify a DGL node object before it gets inserted into its designated ArangoDB collection. - - :param dgl_node: The DGL node object to (optionally) modify. - :param node_type: The DGL Node Type of the node. - :return: The DGL Node object - """ - dgl_node["foo"] = "bar" - return dgl_node - - def _prepare_dgl_edge(self, dgl_edge: dict, edge_type: tuple) -> dict: - """Optionally modify a DGL edge object before it gets inserted into its designated ArangoDB collection. - - :param dgl_edge: The DGL edge object to (optionally) modify. - :param edge_type: The Edge Type of the DGL edge. Formatted - as (from_collection, edge_collection, to_collection) - :return: The DGL Edge object - """ - dgl_edge["bar"] = "foo" - return dgl_edge - - -adb_g = ADBDGL_Adapter(db, Custom_ADBDGL_Controller()).dgl_to_arangodb("FakeHetero", fake_hetero) -``` - -### ArangoDB to DGL -```py -# Start from scratch! -db.delete_graph("FakeHetero", drop_collections=True, ignore_missing=True) -adbdgl_adapter.dgl_to_arangodb("FakeHetero", fake_hetero) - -####################### -# 2.1: via Graph name # -####################### - -# Due to risk of ambiguity, this method does not transfer attributes -dgl_g = adbdgl_adapter.arangodb_graph_to_dgl("FakeHetero") - -############################# -# 2.2: via Collection names # -############################# - -# Due to risk of ambiguity, this method does not transfer attributes -dgl_g = adbdgl_adapter.arangodb_collections_to_dgl("FakeHetero", v_cols={"user", "game"}, e_cols={"plays"}) - -###################### -# 2.3: via Metagraph # -###################### - -# Transfers attributes "as is", meaning they are already formatted to DGL data standards. -# Learn more about the DGL Data Standards here: https://docs.dgl.ai/guide/graph.html#guide-graph -metagraph_v1 = { - "vertexCollections": { - # Move the "features" & "label" ArangoDB attributes to DGL as "features" & "label" Tensors - "user": {"features", "label"}, # equivalent to {"features": "features", "label": "label"} - "game": {"dgl_game_features": "features"}, - "topic": {}, - }, - "edgeCollections": { - "plays": {"dgl_plays_features": "features"}, - "follows": {} - }, -} - -dgl_g = adbdgl_adapter.arangodb_to_dgl("FakeHetero", metagraph_v1) - -################################################# -# 2.4: via Metagraph with user-defined encoders # -################################################# - -# Transforms attributes via user-defined encoders -metagraph_v2 = { - "vertexCollections": { - "Movies": { - "features": { # Build a feature matrix from the "Action" & "Drama" document attributes - "Action": IdentityEncoder(dtype=torch.long), - "Drama": IdentityEncoder(dtype=torch.long), - }, - "label": "Comedy", - }, - "Users": { - "features": { - "Gender": CategoricalEncoder(), # CategoricalEncoder(mapping={"M": 0, "F": 1}), - "Age": IdentityEncoder(dtype=torch.long), - } - }, - }, - "edgeCollections": {"Ratings": {"weight": "Rating"}}, -} - -dgl_g = adbdgl_adapter.arangodb_to_dgl("imdb", metagraph_v2) - -################################################## -# 2.5: via Metagraph with user-defined functions # -################################################## - -# Transforms attributes via user-defined functions -metagraph_v3 = { - "vertexCollections": { - "user": { - "features": udf_user_features, # supports named functions - "label": lambda df: torch.tensor(df["label"].to_list()), # also supports lambda functions - }, - "game": {"features": udf_game_features}, - }, - "edgeCollections": { - "plays": {"features": (lambda df: torch.tensor(df["features"].to_list()))}, - }, -} - -def udf_user_features(user_df: pandas.DataFrame) -> torch.Tensor: - # user_df["features"] = ... - return torch.tensor(user_df["features"].to_list()) - - -def udf_game_features(game_df: pandas.DataFrame) -> torch.Tensor: - # game_df["features"] = ... - return torch.tensor(game_df["features"].to_list()) - - -dgl_g = adbdgl_adapter.arangodb_to_dgl("FakeHetero", metagraph_v3) -``` \ No newline at end of file diff --git a/site/content/platform/data-science/integrations/arangodb-networkx-adapter.md b/site/content/platform/data-science/integrations/arangodb-networkx-adapter.md deleted file mode 100644 index 3b347a9151..0000000000 --- a/site/content/platform/data-science/integrations/arangodb-networkx-adapter.md +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: NetworkX Adapter -menuTitle: NetworkX -weight: 5 -description: >- - The NetworkX Adapter allows you to export graphs from ArangoDB into NetworkX for graph analysis with Python and vice-versa -aliases: - - ../adapters/arangodb-networkx-adapter ---- -{{< tip >}} -ArangoDB now has a closer integration with NetworkX allowing -NetworkX users to persist their graphs in ArangoDB & leverage -GPU-accelerated graph analytics via cuGraph. [Learn more here](https://arangodb.com/introducing-the-arangodb-networkx-persistence-layer/). -{{< /tip >}} - -[NetworkX](https://networkx.org/) is a commonly used tool for -analysis of network-data. If your -analytics use cases require the use of all your graph data, for example, -to summarize graph structure, or answer global path traversal queries, -then using the ArangoDB Pregel API is recommended. If your analysis pertains -to a subgraph, then you may be interested in getting the NetworkX -representation of the subgraph for one of the following reasons: - -- An algorithm for your use case is available in NetworkX -- A library that you want to use for your use case works with NetworkX Graphs as input - -## Resources - -Watch this -[lunch & learn session](https://www.arangodb.com/resources/lunch-sessions/graph-beyond-lunch-break-2-9-introducing-the-arangodb-networkx-adapter/) -to see how using this adapter gives you the best of both -graph worlds - the speed and flexibility of ArangoDB combined with the -ubiquity of NetworkX. - -The [NetworkX Adapter repository](https://github.com/arangoml/networkx-adapter) -is available on Github. Check it out! - -## Installation - -To install the latest release of the NetworkX Adapter, -run the following command: - -```bash -pip install adbnx-adapter -``` - -## Quickstart - -The following examples show how to get started with the NetworkX Adapter. -Check also the -[interactive tutorial](https://colab.research.google.com/github/arangoml/networkx-adapter/blob/master/examples/ArangoDB_NetworkX_Adapter.ipynb). - -```py -import networkx as nx - -from arango import ArangoClient -from adbnx_adapter import ADBNX_Adapter, ADBNX_Controller - -# Connect to ArangoDB -db = ArangoClient().db() - -# Instantiate the adapter -adbnx_adapter = ADBNX_Adapter(db) -``` - -### ArangoDB to NetworkX -```py -####################### -# 1.1: via Graph name # -####################### - -nx_g = adbnx_adapter.arangodb_graph_to_networkx("fraud-detection") - -############################# -# 1.2: via Collection names # -############################# - -nx_g = adbnx_adapter.arangodb_collections_to_networkx( - "fraud-detection", - {"account", "bank", "branch", "Class", "customer"}, # Node collections - {"accountHolder", "Relationship", "transaction"} # Edge collections -) - -###################### -# 1.3: via Metagraph # -###################### - -metagraph = { - "vertexCollections": { - "account": {"Balance", "account_type", "customer_id", "rank"}, - "customer": {"Name", "rank"}, - }, - "edgeCollections": { - "transaction": {"transaction_amt", "sender_bank_id", "receiver_bank_id"}, - "accountHolder": {}, - }, -} - -nx_g = adbnx_adapter.arangodb_to_networkx("fraud-detection", metagraph) - -####################################### -# 1.4: with a custom ADBNX Controller # -####################################### - -class Custom_ADBNX_Controller(ADBNX_Controller): - """ArangoDB-NetworkX controller. - - Responsible for controlling how nodes & edges are handled when - transitioning from ArangoDB to NetworkX, and vice-versa. - """ - - def _prepare_arangodb_vertex(self, adb_vertex: dict, col: str) -> None: - """Prepare an ArangoDB node before it gets inserted into the NetworkX - graph. - - :param adb_vertex: The ArangoDB node object to (optionally) modify. - :param col: The ArangoDB collection the node belongs to. - """ - adb_vertex["foo"] = "bar" - - def _prepare_arangodb_edge(self, adb_edge: dict, col: str) -> None: - """Prepare an ArangoDB edge before it gets inserted into the NetworkX - graph. - - :param adb_edge: The ArangoDB edge object to (optionally) modify. - :param col: The ArangoDB collection the edge belongs to. - """ - adb_edge["bar"] = "foo" - -nx_g = ADBNX_Adapter(db, Custom_ADBNX_Controller()).arangodb_graph_to_networkx("fraud-detection") -``` - -### NetworkX to ArangoDB -```py -################################# -# 2.1: with a Homogeneous Graph # -################################# - -nx_g = nx.grid_2d_graph(5, 5) -edge_definitions = [ - { - "edge_collection": "to", - "from_vertex_collections": ["Grid_Node"], - "to_vertex_collections": ["Grid_Node"], - } -] - -adb_g = adbnx_adapter.networkx_to_arangodb("Grid", nx_g, edge_definitions) - -############################################################# -# 2.2: with a Homogeneous Graph & a custom ADBNX Controller # -############################################################# - -class Custom_ADBNX_Controller(ADBNX_Controller): - """ArangoDB-NetworkX controller. - - Responsible for controlling how nodes & edges are handled when - transitioning from ArangoDB to NetworkX, and vice-versa. - """ - - def _prepare_networkx_node(self, nx_node: dict, col: str) -> None: - """Prepare a NetworkX node before it gets inserted into the ArangoDB - collection **col**. - - :param nx_node: The NetworkX node object to (optionally) modify. - :param col: The ArangoDB collection the node belongs to. - """ - nx_node["foo"] = "bar" - - def _prepare_networkx_edge(self, nx_edge: dict, col: str) -> None: - """Prepare a NetworkX edge before it gets inserted into the ArangoDB - collection **col**. - - :param nx_edge: The NetworkX edge object to (optionally) modify. - :param col: The ArangoDB collection the edge belongs to. - """ - nx_edge["bar"] = "foo" - -adb_g = ADBNX_Adapter(db, Custom_ADBNX_Controller()).networkx_to_arangodb("Grid", nx_g, edge_definitions) - -################################### -# 2.3: with a Heterogeneous Graph # -################################### - -edges = [ - ('student:101', 'lecture:101'), - ('student:102', 'lecture:102'), - ('student:103', 'lecture:103'), - ('student:103', 'student:101'), - ('student:103', 'student:102'), - ('teacher:101', 'lecture:101'), - ('teacher:102', 'lecture:102'), - ('teacher:103', 'lecture:103'), - ('teacher:101', 'teacher:102'), - ('teacher:102', 'teacher:103') -] -nx_g = nx.MultiDiGraph() -nx_g.add_edges_from(edges) - -# ... - -# Learn how this example is handled in Colab: -# https://colab.research.google.com/github/arangoml/networkx-adapter/blob/master/examples/ArangoDB_NetworkX_Adapter.ipynb#scrollTo=OuU0J7p1E9OM -``` diff --git a/site/content/platform/data-science/integrations/arangodb-pyg-adapter.md b/site/content/platform/data-science/integrations/arangodb-pyg-adapter.md deleted file mode 100644 index f24a681c3d..0000000000 --- a/site/content/platform/data-science/integrations/arangodb-pyg-adapter.md +++ /dev/null @@ -1,261 +0,0 @@ ---- -title: PyTorch Geometric (PyG) Adapter -menuTitle: PyG -weight: 15 -description: >- - The PyG Adapter exports Graphs from ArangoDB into PyTorch Geometric (PyG), a PyTorch-based Graph Neural Network library, and vice-versa -aliases: - - ../adapters/arangodb-pyg-adapter ---- -PyTorch Geometric (PyG) is a library built upon [PyTorch](https://pytorch.org/) -to easily write and train Graph Neural Networks (GNNs) for a wide range of -applications related to structured data. - -It consists of various methods for deep learning on graphs and other irregular structures, -also known as [geometric deep learning](https://geometricdeeplearning.com/), -from a variety of published papers. In addition, it consists of easy-to-use -mini-batch loaders for operating on many small and single giant graphs, -[multi GPU-support](https://github.com/pyg-team/pytorch_geometric/tree/master/examples/multi_gpu), -[`DataPipe` support](https://github.com/pyg-team/pytorch_geometric/blob/master/examples/datapipe.py), -distributed graph learning via [Quiver](https://github.com/pyg-team/pytorch_geometric/tree/master/examples/quiver), -a large number of common benchmark datasets (based on simple interfaces to create your own), -the [GraphGym](https://pytorch-geometric.readthedocs.io/en/latest/notes/graphgym.html) -experiment manager, and helpful transforms, both for learning on arbitrary -graphs as well as on 3D meshes or point clouds. - -## Resources - -The [PyG Adapter repository](https://github.com/arangoml/pyg-adapter) -is available on Github. Check it out! - -## Installation - -To install the latest release of the PyG Adapter, -run the following command: - -```bash -pip install torch -pip install adbpyg-adapter -``` - -## Quickstart - -The following examples show how to get started with the PyG Adapter. -Check also the -[interactive tutorial](https://colab.research.google.com/github/arangoml/pyg-adapter/blob/master/examples/ArangoDB_PyG_Adapter.ipynb). - - -```py -import torch -import pandas -from torch_geometric.datasets import FakeHeteroDataset - -from arango import ArangoClient -from adbpyg_adapter import ADBPyG_Adapter, ADBPyG_Controller -from adbpyg_adapter.encoders import IdentityEncoder, CategoricalEncoder - -# Connect to ArangoDB -db = ArangoClient().db() - -# Instantiate the adapter -adbpyg_adapter = ADBPyG_Adapter(db) - -# Create a PyG Heterogeneous Graph -data = FakeHeteroDataset( - num_node_types=2, - num_edge_types=3, - avg_num_nodes=20, - avg_num_channels=3, # avg number of features per node - edge_dim=2, # number of features per edge - num_classes=3, # number of unique label values -)[0] -``` - -### PyG to ArangoDB - -Note: If the PyG graph contains `_key`, `_v_key`, or `_e_key` properties for any node / edge types, the adapter will assume to persist those values as [ArangoDB document keys](https://www.arangodb.com/docs/stable/data-modeling-naming-conventions-document-keys.html). See the `Full Cycle (ArangoDB -> PyG -> ArangoDB)` section below for an example. - -```py -############################# -# 1.1: without a Metagraph # -############################# - -adb_g = adbpyg_adapter.pyg_to_arangodb("FakeData", data) - -######################### -# 1.2: with a Metagraph # -######################### - -# Specifying a Metagraph provides customized adapter behavior -metagraph = { - "nodeTypes": { - "v0": { - "x": "features", # 1) You can specify a string value if you want to rename your PyG data when stored in ArangoDB - "y": y_tensor_to_2_column_dataframe, # 2) you can specify a function for user-defined handling, as long as the function returns a Pandas DataFrame - }, - # 3) You can specify set of strings if you want to preserve the same PyG attribute names for the node/edge type - "v1": {"x"} # this is equivalent to {"x": "x"} - }, - "edgeTypes": { - ("v0", "e0", "v0"): { - # 4) You can specify a list of strings for tensor dissasembly (if you know the number of node/edge features in advance) - "edge_attr": [ "a", "b"] - }, - }, -} - -def y_tensor_to_2_column_dataframe(pyg_tensor: torch.Tensor, adb_df: pandas.DataFrame) -> pandas.DataFrame: - """A user-defined function to create two - ArangoDB attributes out of the 'user' label tensor - - :param pyg_tensor: The PyG Tensor containing the data - :type pyg_tensor: torch.Tensor - :param adb_df: The ArangoDB DataFrame to populate, whose - size is preset to the length of **pyg_tensor**. - :type adb_df: pandas.DataFrame - :return: The populated ArangoDB DataFrame - :rtype: pandas.DataFrame - """ - label_map = {0: "Kiwi", 1: "Blueberry", 2: "Avocado"} - - adb_df["label_num"] = pyg_tensor.tolist() - adb_df["label_str"] = adb_df["label_num"].map(label_map) - - return adb_df - - -adb_g = adbpyg_adapter.pyg_to_arangodb("FakeData", data, metagraph, explicit_metagraph=False) - -####################################################### -# 1.3: with a Metagraph and `explicit_metagraph=True` # -####################################################### - -# With `explicit_metagraph=True`, the node & edge types omitted from the metagraph will NOT be converted to ArangoDB. -adb_g = adbpyg_adapter.pyg_to_arangodb("FakeData", data, metagraph, explicit_metagraph=True) - -######################################## -# 1.4: with a custom ADBPyG Controller # -######################################## - -class Custom_ADBPyG_Controller(ADBPyG_Controller): - def _prepare_pyg_node(self, pyg_node: dict, node_type: str) -> dict: - """Optionally modify a PyG node object before it gets inserted into its designated ArangoDB collection. - - :param pyg_node: The PyG node object to (optionally) modify. - :param node_type: The PyG Node Type of the node. - :return: The PyG Node object - """ - pyg_node["foo"] = "bar" - return pyg_node - - def _prepare_pyg_edge(self, pyg_edge: dict, edge_type: tuple) -> dict: - """Optionally modify a PyG edge object before it gets inserted into its designated ArangoDB collection. - - :param pyg_edge: The PyG edge object to (optionally) modify. - :param edge_type: The Edge Type of the PyG edge. Formatted - as (from_collection, edge_collection, to_collection) - :return: The PyG Edge object - """ - pyg_edge["bar"] = "foo" - return pyg_edge - - -adb_g = ADBPyG_Adapter(db, Custom_ADBPyG_Controller()).pyg_to_arangodb("FakeData", data) -``` - -### ArangoDB to PyG -```py -# Start from scratch! -db.delete_graph("FakeData", drop_collections=True, ignore_missing=True) -adbpyg_adapter.pyg_to_arangodb("FakeData", data) - -####################### -# 2.1: via Graph name # -####################### - -# Due to risk of ambiguity, this method does not transfer attributes -pyg_g = adbpyg_adapter.arangodb_graph_to_pyg("FakeData") - -############################# -# 2.2: via Collection names # -############################# - -# Due to risk of ambiguity, this method does not transfer attributes -pyg_g = adbpyg_adapter.arangodb_collections_to_pyg("FakeData", v_cols={"v0", "v1"}, e_cols={"e0"}) - -###################### -# 2.3: via Metagraph # -###################### - -# Transfers attributes "as is", meaning they are already formatted to PyG data standards. -metagraph_v1 = { - "vertexCollections": { - # Move the "x" & "y" ArangoDB attributes to PyG as "x" & "y" Tensors - "v0": {"x", "y"}, # equivalent to {"x": "x", "y": "y"} - "v1": {"v1_x": "x"}, # store the 'x' feature matrix as 'v1_x' in PyG - }, - "edgeCollections": { - "e0": {"edge_attr"}, - }, -} - -pyg_g = adbpyg_adapter.arangodb_to_pyg("FakeData", metagraph_v1) - -################################################# -# 2.4: via Metagraph with user-defined encoders # -################################################# - -# Transforms attributes via user-defined encoders -# For more info on user-defined encoders in PyG, see https://pytorch-geometric.readthedocs.io/en/latest/notes/load_csv.html -metagraph_v2 = { - "vertexCollections": { - "Movies": { - "x": { # Build a feature matrix from the "Action" & "Drama" document attributes - "Action": IdentityEncoder(dtype=torch.long), - "Drama": IdentityEncoder(dtype=torch.long), - }, - "y": "Comedy", - }, - "Users": { - "x": { - "Gender": CategoricalEncoder(mapping={"M": 0, "F": 1}), - "Age": IdentityEncoder(dtype=torch.long), - } - }, - }, - "edgeCollections": { - "Ratings": { "edge_weight": "Rating" } # Use the 'Rating' attribute for the PyG 'edge_weight' property - }, -} - -pyg_g = adbpyg_adapter.arangodb_to_pyg("imdb", metagraph_v2) - -################################################## -# 2.5: via Metagraph with user-defined functions # -################################################## - -# Transforms attributes via user-defined functions -metagraph_v3 = { - "vertexCollections": { - "v0": { - "x": udf_v0_x, # supports named functions - "y": lambda df: torch.tensor(df["y"].to_list()), # also supports lambda functions - }, - "v1": {"x": udf_v1_x}, - }, - "edgeCollections": { - "e0": {"edge_attr": (lambda df: torch.tensor(df["edge_attr"].to_list()))}, - }, -} - -def udf_v0_x(v0_df: pandas.DataFrame) -> torch.Tensor: - # v0_df["x"] = ... - return torch.tensor(v0_df["x"].to_list()) - - -def udf_v1_x(v1_df: pandas.DataFrame) -> torch.Tensor: - # v1_df["x"] = ... - return torch.tensor(v1_df["x"].to_list()) - -pyg_g = adbpyg_adapter.arangodb_to_pyg("FakeData", metagraph_v3) -``` \ No newline at end of file diff --git a/site/content/platform/data-science/integrations/arangodb-rdf-adapter.md b/site/content/platform/data-science/integrations/arangodb-rdf-adapter.md deleted file mode 100644 index 902968fbcb..0000000000 --- a/site/content/platform/data-science/integrations/arangodb-rdf-adapter.md +++ /dev/null @@ -1,171 +0,0 @@ ---- -title: RDF Adapter -menuTitle: RDF -weight: 25 -description: >- - ArangoRDF allows you to export graphs from ArangoDB into RDF and vice-versa -aliases: - - ../adapters/arangodb-rdf-adapter ---- -RDF is a standard model for data interchange on the Web. RDF has features that -facilitate data merging even if the underlying schemas differ, and it -specifically supports the evolution of schemas over time without requiring all -the data consumers to be changed. - -RDF extends the linking structure of the Web to use URIs to name the relationship -between things as well as the two ends of the link (this is usually referred to -as a "triple"). Using this simple model, it allows structured and semi-structured -data to be mixed, exposed, and shared across different applications. - -This linking structure forms a directed, labeled graph, where the edges represent -the named link between two resources, represented by the graph nodes. This graph -view is the easiest possible mental model for RDF and is often used in -easy-to-understand visual explanations. - -## Resources - -- [ArangoRDF repository](https://github.com/ArangoDB-Community/ArangoRDF), - available on GitHub -- [ArangoRDF documentation](https://arangordf.readthedocs.io/en/latest/), - available on Read the Docs -- [RDF Primer](https://www.w3.org/TR/rdf11-concepts/) -- [RDFLib (Python)](https://pypi.org/project/rdflib/) - - -## Installation - -To install the latest release of ArangoRDF, -run the following command: - -```bash -pip install arango-rdf -``` - -## Quickstart - -The following examples show how to get started with ArangoRDF. -Check also the -[interactive tutorial](https://colab.research.google.com/github/ArangoDB-Community/ArangoRDF/blob/main/examples/ArangoRDF.ipynb). - -```py -from rdflib import Graph -from arango import ArangoClient -from arango_rdf import ArangoRDF - -db = ArangoClient().db() - -adbrdf = ArangoRDF(db) - -def beatles(): - g = Graph() - g.parse("https://raw.githubusercontent.com/ArangoDB-Community/ArangoRDF/main/tests/data/rdf/beatles.ttl", format="ttl") - return g -``` - -### RDF to ArangoDB - -**Note**: RDF-to-ArangoDB functionality has been implemented using concepts described in the paper -*[Transforming RDF-star to Property Graphs: A Preliminary Analysis of Transformation Approaches](https://arxiv.org/abs/2210.05781)*. So we offer two transformation approaches: - -1. [RDF-Topology Preserving Transformation (RPT)](https://arangordf.readthedocs.io/en/latest/rdf_to_arangodb_rpt.html) -2. [Property Graph Transformation (PGT)](https://arangordf.readthedocs.io/en/latest/rdf_to_arangodb_pgt.html) - -```py -# 1. RDF-Topology Preserving Transformation (RPT) -adbrdf.rdf_to_arangodb_by_rpt(name="BeatlesRPT", rdf_graph=beatles(), overwrite_graph=True) - -# 2. Property Graph Transformation (PGT) -adbrdf.rdf_to_arangodb_by_pgt(name="BeatlesPGT", rdf_graph=beatles(), overwrite_graph=True) -``` - -### ArangoDB to RDF - -```py -# pip install arango-datasets -from arango_datasets import Datasets - -name = "OPEN_INTELLIGENCE_ANGOLA" -Datasets(db).load(name) - -# 1. Graph to RDF -rdf_graph = adbrdf.arangodb_graph_to_rdf(name, rdf_graph=Graph()) - -# 2. Collections to RDF -rdf_graph_2 = adbrdf.arangodb_collections_to_rdf( - name, - rdf_graph=Graph(), - v_cols={"Event", "Actor", "Source"}, - e_cols={"eventActor", "hasSource"}, -) - -# 3. Metagraph to RDF -rdf_graph_3 = adbrdf.arangodb_to_rdf( - name=name, - rdf_graph=Graph(), - metagraph={ - "vertexCollections": { - "Event": {"date", "description", "fatalities"}, - "Actor": {"name"} - }, - "edgeCollections": { - "eventActor": {} - }, - }, -) -``` - -## Terminology - -### Literals - -In RDF, even literal values are referenced by edges. Literals cannot have -outgoing edges (i.e., cannot be the subject of a statement). RDF uses the XSD -type system for literals, so the string "Fred" is represented as `"Fred"^^xsd:String` -or fully expanded as `"Fred" ^^http://…"`. Literals can also contain language -and locale tags, for example, `"cat@en" ^^xsd:String` and `"chat@fr"^^xsd:String`. -These language tags can be useful and would ideally be preserved. - -Literals could be added as a property instead of creating a separate node; this -takes better advantage of using a property graph. If you are coming from a triple -store or downloading your data using a [SPARQL](https://www.w3.org/TR/rdf-sparql-query/) query you could handle these properties when -exporting. - -### Uniform Resource Identifiers (URIs) - -#### Prefixes - -In RDF, it is common to use [namespace prefixes](https://www.w3.org/TR/rdf-concepts/#section-URIspaces) with references for ease of parsing. This -can be easily handled with a property graph in a few ways. The easiest approach -is to add the statement prefixes to the document. This keeps the prefixes close -to the data but results in a lot of duplicated fields. Another approach would be -to append the prefix and form the full URI as a property. - -#### Identifiers - -URIs (e.g `http://dbpedia.org/resource/`) are used as universal identifiers in -RDF but contain special characters, namely `:` and `/`, which make them not -suitable for use as an ArangoDB `_key` attribute. Consequently, a hashing algorithm -is used within ArangoRDF to store the URI as an ArangoDB graph node. - -### Blank Nodes - -Blank nodes are identifiers that have local scope and cannot (must not) be -referenced externally. Blank nodes are usually used in structures like lists and -other situations where it is inconvenient to create URIs. They will cause problems -when reconciling differences between graphs. Hashing these values as well is a way -to work around them but as they are considered temporary identifiers in the RDF -world they could pose consistency issues in your RDF graph. - -### Serializations - -There are numerous RDF serializations, including XML and JSON based -serializations and gzipped serializations. Third party libraries will likely handle -all of the serializations but it is a step that may effect how data is imported. - -### Ontology, Taxonomy, Class Inheritance, and RDFS - -The final consideration is something that for many is the core of RDF and -semantic data: [Ontologies](https://www.w3.org/standards/semanticweb/ontology). -Not just ontologies but also class inheritance, and schema validation. One method -would be to add the ontology in a similar way to what has been suggested for the -RDF graphs as ontologies are usually structured in the same way (or can be). \ No newline at end of file diff --git a/site/content/platform/data-science/integrations/langchain.md b/site/content/platform/data-science/integrations/langchain.md deleted file mode 100644 index 48da4bd49b..0000000000 --- a/site/content/platform/data-science/integrations/langchain.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: ArangoDB integration with LangChain -menuTitle: LangChain -weight: 30 -description: >- - A LangChain integration for using LLMs to provide a natural language interface - for the data stored in ArangoDB ---- -[LangChain](https://www.langchain.com/) is a framework for developing applications -powered by language models. - -LangChain enables applications that are: -- Data-aware (connect a language model to other sources of data) -- Agentic (allow a language model to interact with its environment) - -The ArangoDB integration with LangChain provides you the ability to analyze -data seamlessly via natural language, eliminating the need for query language -design. By using LLM chat models such as OpenAI's ChatGPT, you can "speak" to -your data instead of querying it. - -## Get started with ArangoDB QA chain - -The [ArangoDB QA chain notebook](https://langchain-langchain.vercel.app/docs/integrations/graphs/arangodb/) -shows how to use LLMs to provide a natural language interface to an ArangoDB -instance. - -Run the notebook directly in [Google Colab](https://colab.research.google.com/github/arangodb/interactive_tutorials/blob/master/notebooks/Langchain.ipynb). - -See also other [machine learning interactive tutorials](https://github.com/arangodb/interactive_tutorials#machine-learning). diff --git a/site/content/platform/data-science/notebook-servers.md b/site/content/platform/data-science/notebook-servers.md deleted file mode 100644 index c9b8f67a05..0000000000 --- a/site/content/platform/data-science/notebook-servers.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Notebook Servers -menuTitle: Notebook Servers -weight: 130 -description: >- - Colocated Jupyter Notebooks within the ArangoDB Platform -aliases: - - arangograph-notebooks ---- -{{< tag "ArangoDB Platform" >}} - -{{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. -{{< /tip >}} - -ArangoDB Notebooks provide a Python-based, Jupyter-compatible interface for building -and experimenting with graph-powered data, GenAI, and graph machine learning -workflows directly connected to ArangoDB databases. The notebook servers are -embedded in the ArangoDB Platform ecosystem and offer a -pre-configured environment where everything, including all the necessary services -and configurations, comes preloaded. You don't need to set up or configure the -infrastructure, and can immediately start using the GraphML and GenAI -functionalities. - -The notebooks are primarily focused on the following solutions: -- [GraphRAG](graphrag/_index.md): A complete solution for extracting entities - from text files to create a knowledge graph that you can then query with a - natural language interface. -- [GraphML](graphml/_index.md): Apply machine learning to graphs for link prediction, - classification, and similar tasks. -- [Integrations](integrations/_index.md): Use ArangoDB together with cuGraph, - NetworkX, and other data science tools. - -The ArangoDB Notebooks include the following: -- Automatically connect to ArangoDB databases and GenAI platform services -- [Magic commands](../../3.12/arangograph/notebooks.md#arangograph-magic-commands) - that simplify database interactions -- Example notebooks for learning - -## Quickstart - -1. In the ArangoDB Platform web interface, expand **GenAI Tools** in the - main navigation and click **Notebook servers**. -2. The page displays an overview of the notebook services. - Click **New notebook server** to create a new one. -3. After your notebook service has been deployed, you can click the ID to start - interacting with the Jupyter interface. - -## Examples - -- To get a better understanding of how to interact with ArangoDB using notebooks, - open the `GettingStarted.ipynb` notebook from the file browser to learn the basics. -- To get started with GraphRAG using ArangoDB's integrated notebook servers, see - the [GraphRAG Notebook Tutorial](graphrag/tutorial-notebook.md). -- To get started with GraphML using ArangoDB's integrated notebook servers, see - the [GraphML Notebooks and API](graphml/notebooks-api.md) documentation. diff --git a/site/content/platform/graph-intelligence/_index.md b/site/content/platform/graph-intelligence/_index.md deleted file mode 100644 index 9d5ac11917..0000000000 --- a/site/content/platform/graph-intelligence/_index.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Graph intelligence -menuTitle: Graph intelligence -weight: 10 ---- diff --git a/site/content/platform/graph-intelligence/graph-analytics.md b/site/content/platform/graph-intelligence/graph-analytics.md deleted file mode 100644 index 7aa269b360..0000000000 --- a/site/content/platform/graph-intelligence/graph-analytics.md +++ /dev/null @@ -1,877 +0,0 @@ ---- -title: Graph Analytics -menuTitle: Graph Analytics -weight: 5 -description: | - ArangoGraph offers Graph Analytics Engines to run graph algorithms on your - data separately from your ArangoDB deployments -aliases: - - ../data-science/graph-analytics ---- -{{< tag "ArangoDB Platform" "ArangoGraph" >}} - -Graph analytics is a branch of data science that deals with analyzing information -networks known as graphs, and extracting information from the data relationships. -It ranges from basic measures that characterize graphs, over PageRank, to complex -algorithms. Common use cases include fraud detection, recommender systems, -and network flow analysis. - -ArangoDB offers a feature for running algorithms on your graph data, -called Graph Analytics Engines (GAEs). It is available on request for the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) -and included in the [ArangoDB Platform](../about-the-platform/_index.md). - -Key features: - -- **Separation of storage and compute**: GAEs are a solution that lets you run - graph analytics independent of your ArangoDB Core, including on dedicated machines - optimized for compute tasks. This separation of OLAP and OLTP workloads avoids - affecting the performance of the transaction-oriented database systems. - -- **Fast data loading**: You can easily and efficiently import graph data from - ArangoDB and export results back to ArangoDB. - -- **In-memory processing**: All imported data is held and processed in the - main memory of the compute machines for very fast execution of graph algorithms - such as connected components, label propagation, and PageRank. - -## Workflow - -The following lists outlines how you can use Graph Analytics Engines (GAEs). -How to perform the steps is detailed in the subsequent sections. - -{{< tabs "platforms" >}} - -{{< tab "ArangoDB Platform" >}} -1. Determine the approximate size of the data that you will load into the GAE - and ensure the machine to run the engine on has sufficient memory. The data as well as the - temporarily needed space for computations and results needs to fit in memory. -2. [Start a `graphanalytics` service](#start-a-graphanalytics-service) via the GenAI service - that manages various Platform components for graph intelligence and machine learning. - It only takes a few seconds until the engine service can be used. The engine - runs adjacent to the pods of the ArangoDB Core. -3. [Load graph data](#load-data) from the ArangoDB Core into the engine. You can load - named graphs or sets of node and edge collections. This loads the edge - information and a configurable subset of the node attributes. -4. [Run graph algorithms](#run-algorithms) on the data. You only need to load the data once per - engine and can then run various algorithms with different settings. -5. [Write the computation results back](#store-job-results) to the ArangoDB Core. -6. [Stop the engine service](#stop-a-graphanalytics-service) once you are done. -{{< /tab >}} - -{{< tab "ArangoGraph Insights Platform" >}} -{{< info >}} -Before you can use Graph Analytics Engines, you need to request the feature -via __Request help__ in the ArangoGraph dashboard for a deployment. - -The deployment needs to use **AWS** as the cloud provider. - -Single server deployments using ArangoDB version 3.11 are not supported. -{{< /info >}} - -1. Determine the approximate size of the data that you will load into the GAE - to select an engine size with sufficient memory. The data as well as the - temporarily needed space for computations and results needs to fit in memory. -2. Deploy an engine of the desired size and of type `gral`. It only takes a few - seconds until the engine can be used. The engine runs adjacent to a particular - ArangoGraph deployment. -3. Load graph data from ArangoDB into the engine. You can load named graphs or - sets of node and edge collections. This loads the edge information and a - configurable subset of the node attributes. -4. Run graph algorithms on the data. You only need to load the data once per - engine and can then run various algorithms with different settings. -5. Write the computation results back to ArangoDB. -6. Delete the engine once you are done. -{{< /tab >}} - -{{< /tabs >}} - -## Authentication - -{{< tabs "platforms" >}} - -{{< tab "ArangoDB Platform" >}} -You can use any of the available authentication methods the ArangoDB Platform -supports to start and stop `graphanalytics` services via the GenAI service as -well as to authenticate requests to the [Engine API](#engine-api). - -- HTTP Basic Authentication -- Access tokens -- JWT session tokens -<!-- TODO -- Single Sign-On (SSO) ---> -{{< /tab >}} - -{{< tab "ArangoGraph Insights Platform" >}} -The [Management API](#management-api) for deploying and deleting engines requires -an ArangoGraph **API key**. See -[Generating an API Key](../../3.12/arangograph/api/get-started.md#generating-an-api-key) -on how to create one. - -You then need to generate an **access token** using the API key. See -[Authenticating with Oasisctl](../../3.12/arangograph/api/get-started.md#authenticating-with-oasisctl) -on how to do so using `oasisctl login`. - -The [Engine API](#engine-api) uses one of two authentication methods, depending -on the [__auto login to database UI__](../../3.12/arangograph/deployments/_index.md#auto-login-to-database-ui) -setting in ArangoGraph: -- **Enabled**: You can use an ArangoGraph access token created with an API key - (see above), allowing you to use one token for both the Management API and - the Engine API. -- **Disabled**: You need use a JWT user token created from ArangoDB credentials. - These session tokens need to be renewed every hour by default. See - [HTTP API Authentication](../../3.12/develop/http-api/authentication.md#jwt-user-tokens) - for details. -{{< /tab >}} - -{{< /tabs >}} - -## Start and stop Graph Analytics Engines - -The interface for managing the engines depends on the environment you use: - -- **ArangoDB Platform**: [GenAI service](#genai-service) -- **ArangoGraph**: [Management API](#management-api) - -### GenAI service - -{{< tag "ArangoDB Platform" >}} - -GAEs are deployed and deleted via the [GenAI service](../data-science/graphrag/services/gen-ai.md) -in the ArangoDB Platform. - -If you use cURL, you need to use the `-k` / `--insecure` option for requests -if the Platform deployment uses a self-signed certificate (default). - -#### Start a `graphanalytics` service - -`POST <ENGINE_URL>/gen-ai/v1/graphanalytics` - -Start a GAE via the GenAI service with an empty request body: - -```sh -# Example with a JWT session token -ADB_TOKEN=$(curl -sSk -d '{"username":"root", "password": ""}' -X POST https://127.0.0.1:8529/_open/auth | jq -r .jwt) - -Service=$(curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X POST https://127.0.0.1:8529/gen-ai/v1/graphanalytics) -ServiceID=$(echo "$Service" | jq -r ".serviceInfo.serviceId") -if [[ "$ServiceID" == "null" ]]; then - echo "Error starting gral engine" -else - echo "Engine started successfully" -fi -echo "$Service" | jq -``` - -#### List the services - -`POST <ENGINE_URL>/gen-ai/v1/list_services` - -You can list all running services managed by the GenAI service, including the -`graphanalytics` services: - -```sh -curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X POST https://127.0.0.1:8529/gen-ai/v1/list_services | jq -``` - -#### Stop a `graphanalytics` service - -Delete the desired engine via the GenAI service using the service ID: - -```sh -curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X DELETE https://127.0.0.1:8529/gen-ai/v1/service/$ServiceID | jq -``` - -### Management API - -{{< tag "ArangoGraph" >}} - -GAEs are deployed and deleted with the Management API for graph analytics on the -ArangoGraph Insights Platform. You can also list the available engine sizes and -get information about deployed engines. - -To determine the base URL of the management API, use the ArangoGraph dashboard -and copy the __APPLICATION ENDPOINT__ of the deployment that holds the graph data -you want to analyze. Replace the port with `8829` and append -`/graph-analytics/api/graphanalytics/v1`, e.g. -`https://123456abcdef.arangodb.cloud:8829/graph-analytics/api/graphanalytics/v1`. - -Store the base URL in a variable called `BASE_URL`: - -```bash -BASE_URL='https://...' -``` - -To authenticate requests, you need to use the following HTTP header: - -``` -Authorization: bearer <ARANGO_GRAPH_TOKEN> -``` - -You can create an ArangoGraph access token with `oasisctl login`. Save it in a -variable to ease scripting. Note that this should be the token string only and -not include quote marks. The following examples assume Bash as the shell and -that the `curl` and `jq` commands are available. - -```bash -ARANGO_GRAPH_TOKEN="$(oasisctl login --key-id "<AG_KEY_ID>" --key-secret "<AG_KEY_SECRET>")" -``` - -Example with cURL that uses the token variable: - -```bash -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" "$BASE_URL/api-version" -``` - -Request and response payloads are JSON-encoded in the management API. - -#### Get the API version - -`GET <BASE_URL>/api-version` - -Retrieve the version information of the management API. - -```bash -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" "$BASE_URL/api-version" -``` - -#### List engine sizes - -`GET <BASE_URL>/enginesizes` - -List the available engine sizes, which is a combination of the number of cores -and the size of the RAM, starting at 1 CPU and 4 GiB of memory (`e4`). - -```bash -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" "$BASE_URL/enginesizes" -``` - -#### List engine types - -`GET <BASE_URL>/enginetypes` - -List the available engine types. The only type supported for GAE workloads is -called `gral`. - -```bash -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" "$BASE_URL/enginetypes" -``` - -#### Deploy an engine - -`POST <BASE_URL>/engines` - -Set up a GAE adjacent to the ArangoGraph deployment, for example, using an -engine size of `e4`. - -The engine ID is returned in the `id` attribute. - -```bash -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" -X POST -d '{"type_id":"gral","size_id":"e4"}' "$BASE_URL/engines" -``` - -#### List all engines - -`GET <BASE_URL>/engines` - -List all deployed GAEs of a ArangoGraph deployment. - -The engine IDs are in the `id` attributes. - -```bash -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" "$BASE_URL/engines" -``` - -#### Get an engine - -`GET <BASE_URL>/engines/<ENGINE_ID>` - -List the detailed information about a specific GAE. - -```bash -ENGINE_ID="zYxWvU9876" -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" "$BASE_URL/engines/$ENGINE_ID" -``` - -#### Delete an engine - -`DELETE <BASE_URL>/engines/<ENGINE_ID>` - -Delete a no longer needed GAE, freeing any data it holds in memory. - -```bash -ENGINE_ID="zYxWvU9876" -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" -X DELETE "$BASE_URL/engines/$ENGINE_ID" -``` - -## Engine API - -### Determine the engine URL - -{{< tabs "platforms" >}} - -{{< tab "ArangoDB Platform" >}} -To determine the base URL of the engine API, use the base URL of the Platform -deployment and append `/gral/<SERVICE_ID>`, e.g. -`https://127.0.0.1:8529/gral/arangodb-gral-tqcge`. - -The service ID is returned by the call to the GenAI service for -[starting the `graphanalytics` service](#start-a-graphanalytics-service). -You can also list the service IDs like so: - -```sh -kubectl -n arangodb get svc arangodb-gral -o jsonpath="{.spec.selector.release}" -``` - -Store the base URL in a variable called `ENGINE_URL`: - -```bash -ENGINE_URL='https://...' -``` - -To authenticate requests, you need to use a bearer token in HTTP header: -``` -Authorization: bearer <TOKEN> -``` - -You can save the token in a variable to ease scripting. Note that this should be -the token string only and not include quote marks. The following examples assume -Bash as the shell and that the `curl` and `jq` commands are available. - -An example of authenticating a request using cURL and a session token: - -```bash -PLATFORM_BASEURL="https://127.0.0.1:8529" - -ADB_TOKEN=$(curl -X POST -d "{\"username\":\"<ADB_USER>\",\"password\":\"<ADB_PASS>\"}" "$PLATFORM_BASEURL/_open/auth" | jq -r '.jwt') - -curl -H "Authorization: bearer $ADB_TOKEN" "$ENGINE_URL/v1/jobs" -``` -{{< /tab >}} - -{{< tab "ArangoGraph Insights Platform" >}} -To determine the base URL of the engine API, use the ArangoGraph dashboard -and copy the __APPLICATION ENDPOINT__ of the deployment that holds the graph data -you want to analyze. Replace the port with `8829` and append -`/graph-analytics/engines/<ENGINE_ID>`, e.g. -`https://<123456abcdef>.arangodb.cloud:8829/graph-analytics/engines/zYxWvU9876`. -If you can't remember the engine ID, you can [List all engines](#list-all-engines). - -Store the base URL in a variable called `ENGINE_URL`: - -```bash -ENGINE_URL='https://...' -``` - -To authenticate requests, you need to use a bearer token in HTTP header: -``` -Authorization: bearer <TOKEN> -``` - -- If __Auto login to database UI__ is enabled for the ArangoGraph deployment, - this can be the same access token as used for the management API. -- If it is disabled, use an ArangoDB session token (JWT user token) instead. - -You can save the token in a variable to ease scripting. Note that this should be -the token string only and not include quote marks. The following examples assume -Bash as the shell and that the `curl` and `jq` commands are available. - -An example of authenticating a request using cURL and a session token: - -```bash -APPLICATION_ENDPOINT="https://123456abcdef.arangodb.cloud:8529" - -ADB_TOKEN=$(curl -X POST -d "{\"username\":\"<ADB_USER>\",\"password\":\"<ADB_PASS>\"}" "$APPLICATION_ENDPOINT/_open/auth" | jq -r '.jwt') - -curl -H "Authorization: bearer $ADB_TOKEN" "$ENGINE_URL/v1/jobs" -``` -{{< /tab >}} - -{{< /tabs >}} - -All requests to the engine API start jobs, each representing an operation. -You can check the progress of operations and check if errors occurred. -You can submit jobs concurrently and they also run concurrently. - -You can find the API reference documentation with detailed descriptions of the -request and response data structures at <https://arangodb.github.io/graph-analytics>. - -Request and response payloads are JSON-encoded in the engine API. - -### Load data - -`POST <ENGINE_URL>/v1/loaddata` - -Import graph data from a database of the ArangoDB deployment. You can import -named graphs as well as sets of node and edge collections (see -[Managed and unmanaged graphs](../../3.12/graphs/_index.md#managed-and-unmanaged-graphs)). - -```bash -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d '{"database":"_system","graph_name":"connectedComponentsGraph"}' "$ENGINE_URL/v1/loaddata" -``` - -### Run algorithms - -#### PageRank - -`POST <ENGINE_URL>/v1/pagerank` - -PageRank is a well known algorithm to rank nodes in a graph: the more -important a node, the higher rank it gets. It goes back to L. Page and S. Brin's -[paper](http://infolab.stanford.edu/pub/papers/google.pdf) and -is used to rank pages in search engines (hence the name). The algorithm runs -until the execution converges. To run for a fixed number of iterations, use the -`maximum_supersteps` parameter. - -The rank of a node is a positive real number. The algorithm starts with every -node having the same rank (one divided by the number of nodes) and sends its -rank to its out-neighbors. The computation proceeds in iterations. In each iteration, -the new rank is computed according to the formula -`( (1 - damping_factor) / total number of nodes) + (damping_factor * the sum of all incoming ranks)`. -The value sent to each of the out-neighbors is the new rank divided by the number -of those neighbors, thus every out-neighbor gets the same part of the new rank. - -The algorithm stops when at least one of the two conditions is satisfied: -- The maximum number of iterations is reached. This is the same `maximum_supersteps` - parameter as for the other algorithms. -- Every node changes its rank in the last iteration by less than a certain - threshold. The threshold is hardcoded to `0.0000001`. - -It is possible to specify an initial distribution for the node documents in -your graph. To define these seed ranks / centralities, you can specify a -`seeding_attribute` in the properties for this algorithm. If the specified field is -set on a document _and_ the value is numeric, then it is used instead of -the default initial rank of `1 / numNodes`. - -Parameters: -- `graph_id` -- `damping_factor` -- `maximum_supersteps` -- `seeding_attribute` (optional, for seeded PageRank) - -Result: the rank of each node - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"damping_factor\":0.85,\"maximum_supersteps\":500,\"seeding_attribute\":\"seed_attr\"}" "$ENGINE_URL/v1/pagerank" -``` - -{{< comment >}} Not merged yet -#### Single-Source Shortest Path (SSSP) - -`POST <ENGINE_URL>/v1/single_source_shortest_path` - -The algorithm computes the shortest path from a given source node to all other -nodes and returns the length of this path (distance). The algorithm returns a -distance of `-1` for a node that cannot be reached from the source, and `0` -for the source node itself. - -Parameters: -- `graph_id` -- `source_vertex`: The document ID of the source node. -- `undirected`: Determines whether the algorithm respects the direction of edges. - -Result: the distance of each node to the `source_vertex` - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"source_vertex\":\"node/345\",\"undirected\":false}" "$ENGINE_URL/v1/single_source_shortest_path" -``` -{{< /comment >}} - -#### Weakly Connected Components (WCC) - -`POST <ENGINE_URL>/v1/wcc` - -The weakly connected component algorithm partitions a graph into maximal groups -of nodes, so that within a group, all nodes are reachable from each node -by following the edges, ignoring their direction. - -In other words, each weakly connected component is a maximal subgraph such that -there is a path between each pair of nodes where one can also follow edges -against their direction in a directed graph. - -Parameters: -- `graph_id` - -Result: a component ID for each node. All nodes from the same component -obtain the same component ID, every two nodes from different components -obtain different IDs. - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID}" "$ENGINE_URL/v1/wcc" -``` - -#### Strongly Connected Components (SCC) - -`POST <ENGINE_URL>/v1/scc` - -The strongly connected components algorithm partitions a graph into maximal -groups of nodes, so that within a group, all nodes are reachable from each -node by following the edges in their direction. - -In other words, a strongly connected component is a maximal subgraph, where for -every two nodes, there is a path from one of them to the other, forming a -cycle. In contrast to a weakly connected component, one cannot follow edges -against their direction. - -Parameters: - -- `graph_id` - -Result: a component ID for each node. All nodes from the same component -obtain the same component ID, every two nodes from different components -obtain different IDs. - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID}" "$ENGINE_URL/v1/scc" -``` - -#### Vertex Centrality - -Centrality measures help identify the most important nodes in a graph. -They can be used in a wide range of applications: -to identify influencers in social networks, or middlemen in terrorist -networks. - -There are various definitions for centrality, the simplest one being the -node degree. These definitions were not designed with scalability in mind. -It is probably impossible to discover an efficient algorithm which computes -them in a distributed way. Fortunately there are scalable substitutions -available, which should be equally usable for most use cases. - -![Illustration of an execution of different centrality measures (Freeman 1977)](../../images/centrality_visual.png) - -##### Betweenness Centrality - -`POST <ENGINE_URL>/v1/betweennesscentrality` - -A relatively expensive algorithm with complexity `O(V*E)` where `V` is the -number of nodes and `E` is the number of edges in the graph. - -Betweenness-centrality can be approximated by cheaper algorithms like -Line Rank but this algorithm strives to compute accurate centrality measures. - -Parameters: -- `graph_id` -- `k` (number of start nodes, 0 = all) -- `undirected` -- `normalized` -- `parallelism` - -Result: a centrality measure for each node - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"k\":0,\"undirected\":false,\"normalized\":true}" "$ENGINE_URL/v1/betweennesscentrality" -``` - -{{< comment >}} Not merged yet -##### Effective Closeness - -A common definitions of centrality is the **closeness centrality** -(or closeness). The closeness of a node in a graph is the inverse average -length of the shortest path between the node and all other nodes. -For nodes *x*, *y* and shortest distance `d(y, x)` it is defined as: - -![Vertex Closeness Formula](../../images/closeness.png) - -Effective Closeness approximates the closeness measure. The algorithm works by -iteratively estimating the number of shortest paths passing through each node. -The score approximates the real closeness score, since it is not possible -to actually count all shortest paths due to the horrendous `O(n^2 * d)` memory -requirements. The algorithm is from the paper -*Centralities in Large Networks: Algorithms and Observations (U Kang et.al. 2011)*. - -ArangoDBs implementation approximates the number of shortest paths in each -iteration by using a HyperLogLog counter with 64 buckets. This should work well -on large graphs and on smaller ones as well. The memory requirements should be -**O(n * d)** where *n* is the number of nodes and *d* the diameter of your -graph. Each node stores a counter for each iteration of the algorithm. - -Parameters: -- `graph_id` -- `undirected`: Whether to ignore the direction of edges -- `maximum_supersteps` - -Result: a closeness measure for each node - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"undirected\":false,\"maximum_supersteps\":500}" "$ENGINE_URL/v1/effectivecloseness" -``` -{{< /comment >}} - -##### LineRank - -`POST <ENGINE_URL>/v1/linerank` - -Another common measure is the [*betweenness* centrality](https://en.wikipedia.org/wiki/Betweenness_centrality): -It measures the number of times a node is part of shortest paths between any -pairs of nodes. For a node *v* betweenness is defined as: - -![Vertex Betweenness Formula](../../images/betweenness.png) - -Where the σ represents the number of shortest paths between *x* and *y*, -and σ(v) represents the number of paths also passing through a node *v*. -By intuition a node with higher betweenness centrality has more -information passing through it. - -**LineRank** approximates the random walk betweenness of every node in a -graph. This is the probability that someone, starting on an arbitrary node, -visits this node when they randomly choose edges to visit. - -The algorithm essentially builds a line graph out of your graph -(switches the nodes and edges), and then computes a score similar to PageRank. -This can be considered a scalable equivalent to vertex betweenness, which can -be executed distributedly in ArangoDB. The algorithm is from the paper -*Centralities in Large Networks: Algorithms and Observations (U Kang et.al. 2011)*. - -Parameters: -- `graph_id` -- `damping_factor` -- `maximum_supersteps` - -Result: the line rank of each node - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"damping_factor\":0.0000001,\"maximum_supersteps\":500}" "$ENGINE_URL/v1/linerank" -``` - -#### Community Detection - -Graphs based on real world networks often have a community structure. -This means it is possible to find groups of nodes such that each node -group is internally more densely connected than outside the group. -This has many applications when you want to analyze your networks, for example -Social networks include community groups (the origin of the term, in fact) -based on common location, interests, occupation, etc. - -##### Label Propagation - -`POST <ENGINE_URL>/v1/labelpropagation` - -[*Label Propagation*](https://arxiv.org/pdf/0709.2938) can be used to implement -community detection on large graphs. - -The algorithm assigns an initial community identifier to every node in the -graph using a user-defined attribute. The idea is that each node should be in -the community that most of its neighbors are in at the end of the computation. - -In each iteration of the computation, a node sends its current community ID to -all its neighbor nodes, inbound and outbound (ignoring edge directions). -After that, each node adopts the community ID it received most frequently in -the last step. - -It can happen that a node receives multiple most frequent community IDs. -In this case, one is chosen either randomly or using a deterministic choice -depending on a setting for the algorithm. The rules for a deterministic tiebreak -are as follows: -- If a node obtains only one community ID and the ID of the node from the - previous step, its old ID, is less than the obtained ID, the old ID is kept. -- If a node obtains more than one ID, its new ID is the lowest ID among the - most frequently obtained IDs. For example, if the initial IDs are numbers and - the obtained IDs are 1, 2, 2, 3, 3, then 2 is the new ID. -- If, however, no ID arrives more than once, the new ID is the minimum of the - lowest obtained IDs and the old ID. For example, if the old ID is 5 and the - obtained IDs are 3, 4, 6, then the new ID is 3. If the old ID is 2, it is kept. - -The algorithm runs until it converges or reaches the maximum iteration bound. -It may not converge on large graphs if the synchronous variant is used. -- **Synchronous**: The new community ID of a node is based on the - community IDs of its neighbors from the previous iteration. With (nearly) - [bipartite](https://en.wikipedia.org/wiki/Bipartite_graph) subgraphs, this may - lead to the community IDs changing back and forth in each iteration within the - two halves of the subgraph. -- **Asynchronous**: A node determines the new community ID using the most - up-to-date community IDs of its neighbors, whether those updates occurred in - the current iteration or the previous one. The order in which nodes are - updated in each iteration is chosen randomly. This leads to more stable - community IDs. - -Parameters: -- `graph_id` -- `start_label_attribute` -- `synchronous` -- `random_tiebreak` -- `maximum_supersteps` - -Result: a community ID for each node - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"start_label_attribute\":\"start_attr\",\"synchronous\":false,\"random_tiebreak\":false,\"maximum_supersteps\":500}" "$ENGINE_URL/v1/labelpropagation" -``` - -##### Attribute Propagation - -`POST <ENGINE_URL>/v1/attributepropagation` - -The attribute propagation algorithm can be used to implement community detection. -It works similar to the label propagation algorithm, but every node additionally -accumulates a memory of observed labels instead of forgetting all but one label. - -The algorithm assigns an initial value to every node in the graph using a -user-defined attribute. The attribute value can be a list of strings to -initialize the set of labels with multiple labels. - -In each iteration of the computation, the following steps are executed: - -1. Each node propagates its set of labels along the edges to all direct - neighbor nodes. Whether inbound or outbound edges are followed depends on - an algorithm setting. -2. Each node adds the labels it receives to its own set of labels. - - After a specified maximal number of iterations or if no label set changes any - more, the algorithm stops. - - {{< warning >}} - If there are many labels and the graph is well-connected, the result set can - be very large. - {{< /warning >}} - -Parameters: -- `graph_id` -- `start_label_attribute`: The attribute to initialize labels with. - Use `"@id"` to use the document IDs of the nodes. -- `synchronous`: Whether synchronous or asynchronous label propagation is used. -- `backwards`: Whether labels are propagated in edge direction (`false`) or the - opposite direction (`true`). -- `maximum_supersteps`: Maximum number of iterations. - -Result: The set of accumulated labels of each node. - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"start_label_attribute\":\"start_attr\",\"synchronous\":false,\"backwards\":false,\"maximum_supersteps\":500}" "$ENGINE_URL/v1/attributepropagation" -``` - -{{< comment >}} Work in progress -#### Custom Python code - -`POST <ENGINE_URL>/v1/python` - -You can run Python code to implement custom graph analytics algorithms as well -as execute any of the graph algorithms available in the supported Python -libraries. - -The NetworkX library is available by default using the variable `nx`: - -```py -def worker(graph): - return nx.pagerank(graph, 0.85) -``` - -Parameters: -- `graph_id` -- `function`: A string with Python code. It must define a function `def worker(graph):` - that returns a dataframe or dictionary with the results. The key inside that - dict must represent the node ID. The value can be of any type. -- `use_cugraph`: Use cugraph (or regular pandas/pyarrow). - -Result: Depends on the algorithm. If multiple values are returned for a single -node, a JSON object with multiple keys is stored. <!-- TODO: verify --> - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"function\":\"def worker(graph):\n return nx.pagerank(graph, 0.85)\",\"use_cugraph\":false}" "$ENGINE_URL/v1/python" -``` -{{< /comment >}} - -### Store job results - -`POST <ENGINE_URL>/v1/storeresults` - -You need to specify to which ArangoDB `database` and `target_collection` to save -the results to. They need to exist already. - -You also need to specify a list of `job_ids` with one or more jobs that have run -graph algorithms. - -Each algorithm outputs one value for each node, and you can define the target -attribute to store the information in with `attribute_names`. It has to be a -list with one attribute name for every job in the `job_ids` list. - -You can optionally set the degree of `parallelism` and the `batch_size` for -saving the data. - -Parameters: -- `database` -- `target_collection` -- `job_ids` -- `attribute_names` -- `parallelism` -- `batch_size` - -```bash -JOB_ID="123" -curl -H "Authorization: bearer $ADB_TOKEN" -X POST -d "{\"database\":\"_system\",\"target_collection\":\"coll\",\"job_ids\":[$JOB_ID],\"attribute_names\":[\"attr\"]}" "$ENGINE_URL/v1/storeresults" -``` - -### List all jobs - -`GET <ENGINE_URL>/v1/jobs` - -List all active and finished jobs. - -```bash -curl -H "Authorization: bearer $ADB_TOKEN" "$ENGINE_URL/v1/jobs" -``` - -### Get a job - -`GET <ENGINE_URL>/v1/jobs/<JOB_ID>` - -Get detailed information about a specific job. - -```bash -JOB_ID="123" -curl -H "Authorization: bearer $ADB_TOKEN" "$ENGINE_URL/v1/jobs/$JOB_ID" -``` - -### Delete a job - -`DELETE <ENGINE_URL>/v1/jobs/<JOB_ID>` - -Delete a specific job. - -```bash -JOB_ID="123" -curl -H "Authorization: bearer $ADB_TOKEN" -X DELETE "$ENGINE_URL/v1/jobs/$JOB_ID" -``` - -### List all graphs - -`GET <ENGINE_URL>/v1/graphs` - -List all loaded sets of graph data that reside in the memory of the engine node. - -```bash -curl -H "Authorization: bearer $ADB_TOKEN" "$ENGINE_URL/v1/graphs" -``` - -### Get a graph - -`GET <ENGINE_URL>/v1/graphs/<GRAPH_ID>` - -Get detailed information about a specific set of graph data. - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" "$ENGINE_URL/v1/graphs/$GRAPH_ID" -``` - -### Delete a graph - -`DELETE <ENGINE_URL>/v1/graphs/<GRAPH_ID>` - -Delete a specific set of graph data, removing it from the memory of the engine node. - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -X DELETE "$ENGINE_URL/v1/graphs/$GRAPH_ID" -``` diff --git a/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html b/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html index 520c9ff8bd..9aa55544af 100644 --- a/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html +++ b/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html @@ -1,7 +1,8 @@ {{ $tooltips := dict - "ArangoGraph" "This feature is available in the ArangoGraph Insights Platform" - "ArangoDB Platform" "This feature is available in the unified ArangoDB Platform" - "arangosh" "This feature is available in the ArangoDB Shell" + "AMP" "This feature is available in the Arango Managed Platform (AMP)" + "Data Platform" "This feature is available in the Arango Data Platform and GenAI Data Platform" + "GenAI Data Platform" "This feature is available in the Arango GenAI Data Platform but not the Data Platform" + "arangosh" "This feature is available in the ArangoDB Shell" -}} <p class="labels"> {{ range $.Params }} From a228b4d0609b19c4236fe2a925bead88b8bd59a1 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Mon, 13 Oct 2025 14:41:55 +0200 Subject: [PATCH 11/69] Make core root folder not show cards for now --- site/content/arangodb/_index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/site/content/arangodb/_index.md b/site/content/arangodb/_index.md index a2f621e4e3..d411197bc9 100644 --- a/site/content/arangodb/_index.md +++ b/site/content/arangodb/_index.md @@ -4,4 +4,6 @@ menuTitle: ArangoDB weight: 3 layout: default # Remove this file because this isn't an actual page? ---- \ No newline at end of file +# With no content below, it shows cards for the version folders... +--- +## ArangoDB database system \ No newline at end of file From 2e21560fd6f4aceeae45d198d67c27071e504bc4 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Mon, 13 Oct 2025 14:43:16 +0200 Subject: [PATCH 12/69] CircleCI: Increase time between config fetching attempts --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e8886cd9b5..23bd8011e4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -87,7 +87,7 @@ jobs: command: | mkdir -p .circleci && cd .circleci fetched=false - for i in $(seq 1 6); do + for i in $(seq 1 5); do echo "" res=$(curl -fsS https://api.github.com/repos/arangodb/docs-hugo/contents/.circleci?ref=$CIRCLE_SHA1) || curlStatus=$? if [[ -z "${curlStatus:-}" ]]; then @@ -103,7 +103,7 @@ jobs: fi unset curlStatus unset jqStatus - sleep 10 + sleep 60 done if [[ "$fetched" = false ]]; then echo "Failed to fetch download URLs" From ccb00501e2d526090ae036daa1d7dd9b2832728e Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Mon, 13 Oct 2025 14:44:19 +0200 Subject: [PATCH 13/69] WIP: New navigation scheme with inline version selector --- .../arangodb-docs-theme/layouts/404.html | 2 +- .../layouts/_default/baseof.html | 2 +- .../layouts/_default/home.navigation.html | 18 +++-- .../layouts/partials/header.html | 2 +- .../layouts/partials/version-selector.html | 2 +- .../arangodb-docs-theme/static/css/theme.css | 18 +++-- .../arangodb-docs-theme/static/js/theme.js | 78 +++++++++++++------ 7 files changed, 83 insertions(+), 39 deletions(-) diff --git a/site/themes/arangodb-docs-theme/layouts/404.html b/site/themes/arangodb-docs-theme/layouts/404.html index ebf498aa8a..6963741534 100644 --- a/site/themes/arangodb-docs-theme/layouts/404.html +++ b/site/themes/arangodb-docs-theme/layouts/404.html @@ -11,7 +11,7 @@ <body> <noscript>You need to enable JavaScript to use the ArangoDB documentation.</noscript> - <div class="page-wrapper page_content_splash" style="height: auto;opacity: 0;"> + <div class="page-wrapper page_content_splash" style="height: auto;opacity: 1;"> <section class="page-main"> <section class="page-container"> {{ partialCached "header.html" . }} diff --git a/site/themes/arangodb-docs-theme/layouts/_default/baseof.html b/site/themes/arangodb-docs-theme/layouts/_default/baseof.html index 8063318922..150c1d0578 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/baseof.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/baseof.html @@ -7,7 +7,7 @@ <body> {{ if $isProduction }}{{ partialCached "tracking/body-start.html" . }}{{ end -}} <noscript>You need to enable JavaScript to use the ArangoDB documentation.</noscript> - <div class="page-wrapper page_content_splash" style="height: auto; opacity: 0;"> + <div class="page-wrapper page_content_splash" style="height: auto; opacity: 1;"> <section class="page-main"> <section class="page-container"> {{ partialCached "header.html" . -}} diff --git a/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html b/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html index 55ad423ade..954366a9d3 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html @@ -3,11 +3,7 @@ <div class="sidenav-navigation"> <div class="content-wrapper highlightable"> <ul class="topics{{ if .Site.Params.collapsibleMenu }} collapsible-menu{{ end }}"> - {{- range .Site.Sections.ByWeight }} - <ul class="version-menu version-{{ replace .Type "." "_" }}">{{/* TODO: hide non-stable versions by default? */}} - {{- template "section-tree-nav" . }} - </ul> - {{- end }} + {{- template "section-tree-nav" dict "Pages" .Site.Sections }} </ul> <div class="footermargin footerLangSwitch footerVariantSwitch footerVisitedLinks footerFooter"></div> </div> @@ -26,9 +22,21 @@ <a href="{{ .RelPermalink }}" class="toggle sect menu-link"> <div class="menu-title">{{ .Params.menuTitle | markdownify }}</div> </a> + {{ $isVersioned := eq $page.Path "/arangodb" }} + {{ if $isVersioned }} + {{ partial "version-selector.html" . }} + {{ range $versionPage := $page.Pages }} + <div class="version-menu version-{{ replace (index (split $versionPage.Path "/") 2) "." "_" }}"> + <ul class="submenu"> + {{- template "section-tree-nav" $versionPage }} + </ul> + </div> + {{ end }} + {{ else }} <ul class="submenu"> {{- template "section-tree-nav" $page }} </ul> + {{ end }} </li> {{- else }} {{- /* page (or section without children) */}} diff --git a/site/themes/arangodb-docs-theme/layouts/partials/header.html b/site/themes/arangodb-docs-theme/layouts/partials/header.html index 6d73d06742..ac6fbd90af 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/header.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/header.html @@ -27,7 +27,7 @@ <div class="docsearch"> </div> {{ partialCached "inkeep-widget.html" . -}} - {{ partialCached "version-selector.html" . }} + {{/* partialCached "version-selector.html" . */}} </div> </header> \ No newline at end of file diff --git a/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html b/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html index 059dc6eec9..68c1b53c0c 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html @@ -6,7 +6,7 @@ {{ if ne $version.name $version.alias }} <option value="{{ $version.alias }}">{{ $version.alias }}</option> {{ end }} - <option value="{{ $version.name }}">{{ $version.name }}</option> + <option value="{{ $version.name }}"{{ if eq $version.name "3.12" }} selected{{ end }}>{{ $version.name }}</option> {{ end }} </select> </div> \ No newline at end of file diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index 09be3245c1..cbdefd6aed 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -774,25 +774,29 @@ header .logo { .version-selector { border: none; margin-left: 1rem; - color: var(--gray-950); } +.arangodb-version { + border: none; + padding: 0 .75rem; + color: var(--gray-50); + background: black; +} + +/* @media screen and (max-width: 768px) { .version-selector { border: none; } } -.arangodb-version { - border: none; - background: none; -} - @media screen and (max-width: 768px) { .arangodb-version { width: 4rem; } } +*/ + /* end Header */ /* Menu */ @@ -928,7 +932,7 @@ header .logo { .sidebar ul.topics > li a { - font-size: 13px; + /*font-size: 13px;*/ line-height: 1.3rem; } diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index 5efc2c16a2..d22f26cc61 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -10,6 +10,11 @@ function toggleMenuItem(event) { listItem.querySelector("label").classList.toggle("open"); slideToggle(listItem.querySelector(".submenu")); + + const versionSelector = listItem.querySelector(".version-selector") + if (versionSelector) { + versionSelector.style.display = listItem.classList.contains("open") ? "block" : "none"; + } } // Vanilla JS slideToggle implementation @@ -28,23 +33,31 @@ function menuToggleClick(event) { } function renderVersion() { - var version = getVersionFromURL(); + var urlVersion = getVersionFromURL(); + /* var versionSelector = document.querySelector(".arangodb-version"); if (!version || version === "platform") { versionSelector.style.display = "none"; } else { versionSelector.style.display = "block"; } + */ - version = "version-" + version.replace('.', '_'); - var menuEntry = document.getElementsByClassName('version-menu'); - for ( let entry of menuEntry ) { - if (entry.classList.contains(version)) { - entry.style.display = 'block'; - } else { - entry.style.display = 'none'; - } + if (urlVersion) { + var versionSelector = document.querySelector(".version-selector"); + if (versionSelector) { + versionSelector.style.display = "block"; + } + var version = "version-" + urlVersion.replace('.', '_'); + var menuEntry = document.querySelectorAll('.version-menu .submenu'); + for ( let entry of menuEntry ) { + if (entry.classList.contains(version)) { + entry.style.display = 'block'; + } else { + entry.style.display = 'none'; + } + } } } @@ -52,18 +65,25 @@ function closeAllEntries() { document.querySelectorAll(".dd-item.active").forEach(el => el.classList.remove("active")); document.querySelectorAll(".dd-item > label.open").forEach(el => el.classList.remove("open")); document.querySelectorAll(".submenu").forEach(el => el.style.display = "none"); + document.querySelectorAll(".version-selector").forEach(el => el.style.display = "none"); document.querySelectorAll(".dd-item.parent").forEach(el => el.classList.remove("parent")); } function loadMenu(url) { closeAllEntries(); var version = getVersionFromURL() + if (version) { - document.querySelectorAll('.version-menu.version-' + version.replace('.', '_') + ' a').forEach(function(link) { - const oldHref = link.getAttribute('href'); - const newHref = oldHref.replace(oldHref.split("/")[1], version); - link.setAttribute('href', newHref); - }); + document.querySelector(".version-selector").style.display = "block"; + + /* + document.querySelectorAll('.version-menu.version-' + version.replace('.', '_') + ' a').forEach(function(link) { + const oldHref = link.getAttribute('href'); + const newHref = oldHref.replace(oldHref.split("/")[1], version); + link.setAttribute('href', newHref); + }); + */ + } // Try to find the menu item - first try exact match, then try without hash console.log('loadMenu: Looking for URL:', url); @@ -99,6 +119,10 @@ function loadMenu(url) { label.classList.add("open"); console.log('loadMenu: Added open class to label'); } + const versionSelector = current.querySelector(".version-selector"); + if (versionSelector) { + versionSelector.style.display = "block"; + } const submenu = current.querySelector(".submenu"); if (submenu) { submenu.style.display = "block"; @@ -196,17 +220,22 @@ function loadNotFoundPage() { function loadPage(target) { var href = target; + /* var versionUrl = getVersionFromURL(); if (versionUrl !== "platform" && getVersionInfo(versionUrl) == undefined) { loadNotFoundPage(); return; } - + */ + /* getCurrentVersion(href); renderVersion(); loadMenu(new URL(href).pathname); var version = getVersionInfo(getVersionFromURL()).name; - href = href.replace(getVersionFromURL(), version); + href = href.replace(getVersionFromURL(), version);*/ + var menuPathName = new URL(href).pathname; + console.log(menuPathName); + loadMenu(menuPathName); fetch(href) .then(response => { if (response.url && href.replace(/#.*/, "") !== response.url) { @@ -414,7 +443,9 @@ function getVersionInfo(version) { } function getVersionFromURL() { - return window.location.pathname.split("/")[1] + // TODO: Make this data-driven + var splitUrl = window.location.pathname.split("/"); + if (splitUrl[1] == "arangodb") return splitUrl[2]; } function isUsingAlias() { @@ -452,11 +483,12 @@ function setVersionSelector(version) { } function getCurrentVersion(href) { + if (!stableVersion) return; // Only defined for /arangodb var newVersion = stableVersion.name if (window.location.pathname.split("/").length > 0) { newVersion = getVersionFromURL(); - if (newVersion === "platform") { + if (newVersion !== "arangodb") { return; } if ((href === "" || href === "/") && getVersionInfo(newVersion) == undefined) { @@ -485,7 +517,7 @@ function changeVersion() { var currentVersion = getVersionFromURL(); //var newVersionAlias = getVersionInfo(newVersion).alias; - if (currentVersion == "platform" || newVersion == "platform") { + if (!currentVersion) { var newUrl = window.location.pathname = "/" + newVersion + "/"; } else { var newUrl = window.location.pathname.replace(currentVersion, newVersion) + window.location.hash; @@ -555,7 +587,7 @@ const goToTop = (event) => { function goToHomepage(event){ event.preventDefault(); - var homepage = "/" + getVersionFromURL() + "/"; + var homepage = "/"; // + getVersionFromURL() + "/"; updateHistory(homepage); } @@ -585,7 +617,7 @@ function toggleExpandShortcode(event) { function linkToVersionedContent() { const currentVersion = getVersionFromURL(); - if (currentVersion !== "platform") return; + if (!currentVersion) return; document.querySelectorAll("a.link:not([target])").forEach(el => { const matches = el.getAttribute("href").match(/^\/(\d\.\d{1,2})(\/.*)/); const previousVersion = localStorage.getItem('docs-version') || "stable"; @@ -736,6 +768,6 @@ window.onload = () => { document.querySelectorAll('.sidebar.mobile').forEach(el => el.classList.remove("active")); } - const pageWrapper = document.querySelector('.page-wrapper'); - if (pageWrapper) pageWrapper.style.opacity = "1"; + //const pageWrapper = document.querySelector('.page-wrapper'); + //if (pageWrapper) pageWrapper.style.opacity = "1"; } \ No newline at end of file From 8241b8e648cd31fa6afafb8a4667e3b61c47799e Mon Sep 17 00:00:00 2001 From: Palash Karia <2976363+palashkaria@users.noreply.github.com> Date: Thu, 2 Oct 2025 16:02:43 +0530 Subject: [PATCH 14/69] chore: update logo, tweak colors --- .../images/ArangoAMP_logo.svg | 23 ++++++++++++++++++ .../images/ArangoDB_Logo_White_small.png | Bin 2200 -> 0 bytes .../images/ArangoGraph_Logo.svg | 19 --------------- .../arangodb-docs-theme/images/favicon.png | Bin 1208 -> 2530 bytes .../arangodb-docs-theme/images/logo_main.png | Bin 29935 -> 9660 bytes .../arangodb-docs-theme/images/logo_small.png | Bin 0 -> 4205 bytes .../layouts/partials/header.html | 2 +- .../layouts/shortcodes/cloudbanner.html | 2 +- .../arangodb-docs-theme/static/css/theme.css | 8 +++--- toolchain/arangoproxy/cmd/configs/local.yaml | 2 +- 10 files changed, 30 insertions(+), 26 deletions(-) create mode 100644 site/themes/arangodb-docs-theme/images/ArangoAMP_logo.svg delete mode 100644 site/themes/arangodb-docs-theme/images/ArangoDB_Logo_White_small.png delete mode 100644 site/themes/arangodb-docs-theme/images/ArangoGraph_Logo.svg create mode 100644 site/themes/arangodb-docs-theme/images/logo_small.png diff --git a/site/themes/arangodb-docs-theme/images/ArangoAMP_logo.svg b/site/themes/arangodb-docs-theme/images/ArangoAMP_logo.svg new file mode 100644 index 0000000000..7df15e9aa5 --- /dev/null +++ b/site/themes/arangodb-docs-theme/images/ArangoAMP_logo.svg @@ -0,0 +1,23 @@ +<svg width="353" height="79" viewBox="0 0 353 79" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_53_91)"> +<mask id="mask0_53_91" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="353" height="74"> +<path d="M0.5 0.5H352.5V73.5H0.5V0.5Z" fill="white"/> +</mask> +<g mask="url(#mask0_53_91)"> +<path d="M148.301 37.1599H146.763L146.691 37.1399C145.642 36.8603 144.117 36.6905 142.813 36.6905C138.279 36.6905 134.646 37.9606 132.15 40.3734C129.656 42.7818 128.221 46.4021 128.221 51.2613V60.9753H119.056V28.9666H127.989V34.9396C130.983 30.7984 136.202 28.0279 143.224 28.0279C144.843 28.0279 146.703 28.2648 147.866 28.5754L148.301 28.6919V37.1626V37.1599ZM222.725 28.032C227.782 28.032 231.678 29.3448 234.303 32.0011C236.929 34.6576 238.195 38.5599 238.195 43.5398V60.9797H229.088V44.3581C229.088 41.5161 228.409 39.546 227.112 38.2735C225.813 36.9969 223.783 36.3125 220.852 36.2813C217.15 36.2542 213.967 37.3857 211.712 39.5416C209.461 41.6951 208.077 44.9241 208.077 49.2108V60.973H198.97L199.024 28.9622H207.898V34.2753C210.903 30.6662 216.119 28.0276 222.725 28.0276V28.032ZM262.72 28.032C268.893 28.032 273.729 30.0913 276.437 32.6787V28.9669H285.486V56.0625C285.486 61.5655 283.838 65.9708 280.141 68.9809C276.466 71.9706 270.865 73.5001 263.131 73.5001C256.638 73.5001 250.184 72.1428 245.415 69.75L245.674 69.229H245.091V61.5611H246.703L246.837 61.635C251.407 64.1573 257.031 65.5393 263.073 65.5393C268 65.5393 271.329 64.7657 273.421 63.2115C275.47 61.6909 276.437 59.3408 276.437 55.8856V55.5907C273.606 58.7055 268.75 60.5706 262.606 60.5706C256.63 60.5706 251.798 58.8398 248.454 55.9351C245.105 53.0257 243.283 48.9715 243.283 44.4187C243.283 39.8657 245.149 35.7491 248.532 32.7838C251.91 29.8208 256.768 28.0299 262.72 28.0299V28.032ZM264.357 36.0488C260.644 36.0488 257.728 36.9074 255.757 38.3562C253.803 39.7921 252.743 41.8269 252.743 44.3001C252.743 46.7733 253.781 48.8149 255.689 50.2484C257.616 51.6928 260.472 52.5515 264.124 52.5515C267.768 52.5515 270.871 51.6237 273.044 50.123C275.212 48.6271 276.437 46.5831 276.437 44.3001C276.437 42.0171 275.285 39.9596 273.196 38.4728C271.099 36.9789 268.058 36.0508 264.354 36.0508L264.357 36.0488ZM310.465 28.032C323.07 28.032 332.357 35.1878 332.357 44.9442C332.357 54.6961 323.14 61.9749 310.465 61.9749C297.793 61.9749 288.636 54.7565 288.636 44.9442C288.636 35.1318 297.858 28.032 310.465 28.032ZM310.465 35.9905C306.441 35.9905 303.337 36.9789 301.258 38.5755C299.187 40.1633 298.092 42.3771 298.092 44.9442C298.092 47.5112 299.216 49.7519 301.304 51.3708C303.402 52.9989 306.505 54.0118 310.465 54.0118C314.431 54.0118 317.549 53.0233 319.661 51.4111C321.765 49.8078 322.9 47.5648 322.9 44.9442C322.9 42.3232 321.791 40.1653 319.708 38.5779C317.611 36.9789 314.493 35.9928 310.465 35.9905ZM192.04 29.0808H182.991V32.1041C180.053 29.8164 175.469 28.1459 169.859 28.1459C163.791 28.1459 158.788 29.975 155.285 33.0455C151.777 36.1223 149.837 40.3934 149.837 45.1208C149.837 49.8481 151.728 54.0589 155.211 57.0798C158.683 60.0943 163.657 61.8563 169.745 61.8563C175.362 61.8563 180.006 60.3224 183.049 57.6323L183.244 61.1587L184.411 61.0939H193.21V29.0808H192.04ZM171.261 53.8372C163.786 53.8372 159.294 50.3264 159.294 44.9998C159.294 39.6731 163.905 36.1624 171.493 36.1624C179.082 36.1624 184.161 39.966 184.161 44.9998C184.161 50.0333 178.736 53.8372 171.263 53.8372H171.261Z" fill="white"/> +<path d="M352.5 56.0803C352.495 56.0618 352.483 56.0458 352.467 56.0352C352.451 56.0245 352.431 56.02 352.412 56.0223C347.502 56.5098 342.841 54.2624 340.154 50.3916C339.415 49.3318 338.837 48.1674 338.441 46.9368C338.435 46.9182 338.423 46.9022 338.407 46.8915C338.391 46.8808 338.372 46.8762 338.353 46.8785C338.309 46.8829 338.288 46.9256 338.294 46.9636C338.423 48.274 338.35 49.5709 338.097 50.8164C337.168 55.4342 333.782 59.3585 329.089 60.8568C329.07 60.8626 329.053 60.8749 329.042 60.8916C329.031 60.9084 329.026 60.9285 329.027 60.9486C329.033 60.991 329.074 61.0111 329.121 61.0066C334.029 60.5192 338.69 62.7666 341.377 66.6373C342.115 67.6978 342.692 68.862 343.09 70.0922C343.102 70.1302 343.137 70.1549 343.178 70.1505C343.216 70.1393 343.242 70.1034 343.24 70.0654C343.108 68.7549 343.184 67.458 343.433 66.2126C344.363 61.5948 347.748 57.6725 352.441 56.1722C352.48 56.161 352.506 56.1251 352.503 56.0803H352.5Z" fill="#58DF20"/> +<path d="M89.1504 18.5908C92.7561 18.6488 96.2256 20.8359 98.083 24.8724C99.8535 28.7228 103.885 37.4887 107.473 45.2953C109.266 49.1973 110.949 52.8602 112.184 55.5459C112.8 56.8876 113.307 57.9876 113.658 58.7502C113.834 59.1326 113.97 59.4299 114.064 59.6312C114.111 59.7319 114.147 59.8102 114.171 59.8617C114.182 59.8885 114.193 59.9065 114.198 59.9197C114.2 59.9265 114.203 59.9309 114.205 59.9353V59.94L114.258 60.0584V61.5834H105.218L105.064 61.237L100.834 51.7152H76.7817L72.4973 61.2414L72.3409 61.5858H63.5735V60.0675L63.6228 59.9556V59.9512C63.6228 59.9489 63.6272 59.9444 63.6292 59.9377C63.6339 59.9241 63.6427 59.9065 63.6539 59.8794C63.6762 59.8302 63.7096 59.7566 63.7521 59.658C63.8369 59.4635 63.9622 59.1773 64.125 58.8106C64.4488 58.075 64.9175 57.0171 65.4913 55.7181C66.9671 52.3848 68.4525 49.0558 69.9476 45.7312C73.3949 38.0745 77.4179 29.293 79.7062 24.8585C81.8989 20.608 85.5356 18.5349 89.1437 18.5929L89.1504 18.5908ZM88.9718 26.5717C88.8377 26.5628 88.5922 26.6276 88.2015 27.0544C87.8198 27.4753 87.3798 28.1571 86.873 29.1567C86.029 31.0285 84.2588 34.9684 82.6959 38.4412C81.9121 40.1832 81.182 41.8113 80.6464 43.0008C80.4498 43.437 80.2803 43.8147 80.1418 44.119H97.4825C97.3485 43.8126 97.1789 43.4303 96.9845 42.9896C96.46 41.7957 95.741 40.1676 94.9707 38.4233C93.4281 34.9328 91.6798 30.9837 90.8403 29.1431C90.4273 28.233 90.0545 27.5689 89.7107 27.1327C89.3581 26.6856 89.1123 26.5805 88.9694 26.5717H88.9718Z" fill="white"/> +<path d="M51.2874 7.10134C50.4323 5.2834 49.2311 3.76041 47.8091 2.69838C47.2063 2.25331 46.5812 1.86859 45.9382 1.55775C45.3016 1.26046 44.632 1.01909 43.8884 0.822162C42.1762 0.379452 40.2381 0.395053 38.2845 0.869258C35.6659 1.50418 33.1518 2.91502 31.3883 4.74002C28.8609 7.34065 26.0164 9.77143 23.2659 12.1239C22.1609 13.0676 21.0198 14.0446 19.9148 15.0174C15.7709 18.6692 11.4868 22.444 7.93685 26.8961C0.261194 36.538 -1.63257 48.6295 3.00034 58.4551C3.63323 59.7923 4.39285 61.0654 5.26869 62.2567C7.56402 65.3762 10.8928 67.3752 13.8443 68.9206C16.8583 70.4992 20.3501 71.3802 23.5384 71.3802C23.7795 71.3802 24.0183 71.3758 24.257 71.3646C25.7642 71.2954 27.2399 71.0873 28.6377 70.7453C39.1845 68.1938 47.4004 59.1306 50.0795 47.0909L50.2314 46.4113H50.2179C51.312 41.1538 51.5576 35.722 51.7943 30.4605L51.8007 30.3018C51.8679 28.808 51.9125 27.2829 51.955 25.807C52.0597 22.2112 52.1671 18.4923 52.6045 14.9079C52.9128 12.3609 52.4326 9.51417 51.2851 7.10134H51.2874ZM41.7385 49.1929C39.8407 57.8066 33.9444 65.4678 24.9962 67.5765C23.8761 67.8429 22.7328 67.9995 21.5824 68.044C17.5638 68.1982 13.6566 66.5545 10.3947 64.361C9.00399 63.4217 7.74706 62.279 6.74445 60.9282C6.06362 60.0025 5.45847 59.0076 4.96509 57.97C0.995701 49.6624 3.24821 40.2616 8.76082 33.3743C11.5358 29.9059 14.9003 26.9609 18.2449 24.0291C21.3032 21.3481 24.565 18.7855 27.4074 15.8831C28.7626 14.4967 30.6825 13.4323 32.6986 12.9513C34.123 12.6181 35.5988 12.5758 36.9607 12.9313C37.4969 13.0758 38.0203 13.2642 38.5256 13.4947C39.023 13.7421 39.4975 14.0333 39.9436 14.3648C41.0688 15.2079 41.9662 16.3841 42.6003 17.7078C43.4912 19.5817 43.8661 21.7531 43.6361 23.6762C43.1562 27.7147 43.2119 31.8651 43.0444 35.9393C42.8638 40.3826 42.6763 44.8594 41.723 49.1976H41.7362L41.7385 49.1932V49.1929Z" fill="#007339"/> +<path d="M43.6361 23.6714C43.8661 21.7504 43.4912 19.5769 42.6004 17.703C41.9685 16.379 41.0709 15.2028 39.9436 14.3598C39.4975 14.0284 39.023 13.7373 38.5257 13.4899C38.0204 13.2591 37.497 13.0706 36.9607 12.9266C35.5988 12.571 34.123 12.6134 32.6986 12.9466C30.6825 13.4272 28.7627 14.4919 27.4074 15.8783C24.563 18.783 21.3032 21.3457 18.2449 24.0246C14.9003 26.9564 11.5358 29.9014 8.76054 33.3695C3.24852 40.2571 0.995718 49.6579 4.9651 57.9652C5.45849 59.0028 6.06364 59.998 6.74446 60.9238C7.74473 62.2746 9.00401 63.4172 10.395 64.3562C13.6545 66.5501 17.5641 68.1937 21.5827 68.0392C22.7331 67.9961 23.8764 67.8396 24.9963 67.5721C33.9444 65.4609 39.8386 57.8021 41.7385 49.1884H41.725C42.6784 44.8502 42.8661 40.3734 43.0468 35.9301C43.2143 31.8556 43.1586 27.7055 43.6385 23.667L43.6361 23.6714Z" fill="#B9FF38"/> +<path d="M29.5507 34.0136C27.1081 32.4306 23.824 32.3411 20.3031 33.7611C17.0101 35.0892 14.0363 37.5356 12.1408 40.4718C8.28493 46.4492 9.33887 54.023 14.4895 57.3571C15.7123 58.148 17.0948 58.6567 18.5372 58.8466C20.0262 59.0456 21.5938 58.9158 23.1631 58.453C26.2372 57.5449 28.9567 55.4541 30.8188 52.5695C33.1763 48.9224 34.1408 43.9534 33.2746 39.9128C32.7076 37.263 31.4169 35.2258 29.5484 34.016L29.5507 34.0136Z" fill="black"/> +</g> +</g> +<path d="M324.351 78.5V67.7H331.416C334.948 67.7 336.75 68.99 336.75 71.315C336.75 73.685 334.948 74.93 331.416 74.93H327.912V78.5H324.351ZM327.912 72.35H331.387C332.488 72.35 333.032 72.005 333.032 71.36C333.032 70.67 332.488 70.355 331.387 70.355H327.912V72.35Z" fill="#58DF20"/> +<path d="M305.595 78.5V67.7H310.429L313.732 72.695H314.333L317.565 67.7H322.356V78.5H318.881L318.967 71.66H318.666L315.377 76.4H312.503L309.142 71.66H308.813L308.899 78.5H305.595Z" fill="#58DF20"/> +<path d="M289.72 78.5V78.2L294.253 67.7H299.974L304.621 78.2V78.5H300.775L299.916 76.325H294.125L293.252 78.5H289.72ZM295.183 73.73H298.887L297.571 70.415H296.513L295.183 73.73Z" fill="#58DF20"/> +<defs> +<clipPath id="clip0_53_91"> +<rect width="352" height="73" fill="white" transform="translate(0.5 0.5)"/> +</clipPath> +</defs> +</svg> diff --git a/site/themes/arangodb-docs-theme/images/ArangoDB_Logo_White_small.png b/site/themes/arangodb-docs-theme/images/ArangoDB_Logo_White_small.png deleted file mode 100644 index 18fd04a10c1d4a1e36796064f40f27799155af08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2200 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 a?wcb=Nq2EyJJWi#Oj)fr4*ow34*&o@w=x0% diff --git a/site/themes/arangodb-docs-theme/images/ArangoGraph_Logo.svg b/site/themes/arangodb-docs-theme/images/ArangoGraph_Logo.svg deleted file mode 100644 index 7854ba284b..0000000000 --- a/site/themes/arangodb-docs-theme/images/ArangoGraph_Logo.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg id="artwork" - xmlns="http://www.w3.org/2000/svg" viewBox="0 0 740 215"> - <defs - xmlns="http://www.w3.org/2000/svg"> - <style> - .cls-1{fill:#fff;} - path{fill:#fff;} - </style> - </defs> - <path d="M191,113.99h7.53v9.02c-1.01,1.45-2.43,2.66-4.25,3.64-1.82,.94-3.84,1.41-6.06,1.41s-3.79-.52-5-1.57c-1.18-1.04-1.77-2.49-1.77-4.34,0-2.05,.81-4.49,2.43-5.94,1.62-1.48,3.99-2.22,7.13-2.22m121.35-20.26c2.19,0,4.06,.45,5.61,1.36,1.58,.91,2.85,2.19,3.79,3.84v23.73c-.94,1.58-2.21,2.79-3.79,3.64-1.55,.81-3.45,1.21-5.71,1.21-3.64,0-6.27-1.36-7.88-4.09-1.62-2.76-2.43-6.53-2.43-11.31v-1.06c0-5.15,.83-9.33,2.48-12.52,1.68-3.2,4.33-4.8,7.93-4.8m58.45-.1c3.84,0,6.65,1.53,8.44,4.59,1.79,3.06,2.68,7.02,2.68,11.87v1.06c0,4.95-.89,8.94-2.68,11.97-1.75,3.03-4.53,4.54-8.34,4.54s-6.74-1.5-8.49-4.49c-1.75-3.03-2.63-7.04-2.63-12.02v-1.06c0-4.85,.88-8.81,2.63-11.87,1.75-3.06,4.55-4.59,8.39-4.59m0-11.36c-8.05,0-14.37,2.61-18.95,7.83-4.55,5.18-6.82,11.85-6.82,19.99v1.06c0,8.21,2.27,14.91,6.82,20.1,4.58,5.15,10.93,7.72,19.05,7.72s14.3-2.58,18.85-7.72c4.58-5.18,6.87-11.88,6.87-20.1v-1.06c0-8.18-2.29-14.86-6.87-20.04-4.55-5.18-10.87-7.78-18.95-7.78m-111.47,0c-3.3,0-6.29,.78-8.94,2.32-2.66,1.55-4.9,3.72-6.72,6.51l-.66-7.83h-21.58v8.89l7.83,1.52v33.88l-7.07,1.52v8.84h27.79v-8.84l-5.96-1.52v-29.29c1.04-1.45,2.34-2.56,3.89-3.33,1.55-.81,3.3-1.21,5.26-1.21,3,0,5.24,.77,6.72,2.32,1.48,1.51,2.22,4.11,2.22,7.78v23.73l-6.32,1.52v8.84h28.2v-8.84l-7.07-1.52v-23.78c0-7.4-1.55-12.84-4.65-16.31-3.1-3.47-7.41-5.2-12.94-5.2m-68.83,0c-3.57,0-6.91,.5-10.02,1.44-1.48,.39-3.03,.89-4.54,1.56-5.8,2.57-7.84,4.72-7.84,4.72l6.99,9.23s2.23-2.4,8.55-5.1c1.85-.78,4.14-1.1,5.89-1.1,2.97,0,5.21,.72,6.72,2.17,1.52,1.45,2.27,3.48,2.27,6.11v4.66h-7.53c-7.95,0-13.98,2.09-18.09,4.88-4.11,2.79-6.17,6.75-6.17,11.86s1.57,8.99,4.7,11.91c3.17,2.9,7.43,4.34,12.79,4.34,3.23,0,6.1-.62,8.59-1.87,2.53-1.25,4.66-2.88,6.42-4.9,.17,.98,.41,1.95,.71,2.93,.3,.94,.66,1.87,1.06,2.78h17.03v-8.84l-4.5-.61c-.1-.67-.17-1.38-.2-2.12v-24.94c0-6.13-2.12-10.84-6.37-14.14-4.21-3.33-9.7-5-16.47-5m-30.36,0c-2.66,0-5,.79-7.02,2.37-2.02,1.58-3.67,3.79-4.95,6.61l-.66-7.98h-21.58v8.89l7.83,1.52v33.88l-7.07,1.52v8.84h28.91v-8.84l-7.07-1.52v-26.56c.74-1.55,1.82-2.75,3.23-3.59,1.41-.84,3.2-1.26,5.36-1.26l6.06,.15,1.57-13.43c-.57-.17-1.3-.3-2.17-.4-.84-.13-1.65-.2-2.43-.2m163.73-.18l-1.23,8.06c-1.65-2.52-3.64-4.46-5.96-5.81-2.32-1.38-5.02-2.07-8.08-2.07-6.77,0-12.04,2.64-15.82,7.93-3.74,5.29-5.61,12.24-5.61,20.85v1.06c0,8.05,1.87,14.54,5.61,19.49,3.77,4.92,9.01,7.37,15.72,7.37,2.83,0,5.34-.54,7.53-1.62,2.19-1.08,4.09-2.64,5.71-4.7v3.58c0,3.91-.89,6.95-2.68,9.14-1.79,2.19-4.48,3.28-8.09,3.28-2.63,0-5.12-.3-7.48-.91-2.36-.57-4.72-1.36-7.07-2.37l-2.73,10.35c2.63,1.31,5.49,2.34,8.59,3.08,3.1,.77,6.03,1.16,8.79,1.16,7.92,0,14.14-2.15,18.65-6.46,4.55-4.27,6.82-10.01,6.82-17.22v-9.4s.01-34.4,.01-34.4l7.84-1.52v-8.89h-20.52Zm-234.77-.78h.3l6.74,21.08h-13.8l6.75-21.08h0Zm-7.33-16.91l-22.39,63.91-5.26,.76v8.84h25.07v-8.84l-5.1-.91,4.78-14.92h20.67l4.88,14.92-5.1,.91v8.84h25.07v-8.84l-5.26-.76-22.24-63.91h-15.11Z"/> - <g> - <path d="M437.23,138.94c-7.31,0-13.54-1.52-18.7-4.55-5.15-3.03-9.1-7.24-11.85-12.63s-4.12-11.64-4.12-18.75v-2.53c0-7.34,1.37-13.81,4.09-19.41,2.73-5.59,6.6-9.96,11.6-13.11s10.92-4.73,17.76-4.73c5.29,0,10.26,.72,14.91,2.17,4.65,1.45,8.69,3.62,12.13,6.52v16.32h-10.92l-2.07-9.85c-1.31-1.14-3.08-2.06-5.31-2.75s-4.77-1.04-7.63-1.04c-4.11,0-7.66,1.09-10.64,3.26-2.98,2.17-5.26,5.19-6.85,9.05-1.58,3.86-2.38,8.35-2.38,13.47v2.63c0,4.99,.78,9.32,2.35,13.01s3.87,6.54,6.9,8.57,6.75,3.03,11.17,3.03c2.59,0,4.98-.24,7.15-.73,2.17-.49,3.97-1.09,5.38-1.79v-12.48l-10.51-.81v-10.36h25.32v29.77c-3.27,2.32-7.2,4.19-11.8,5.61s-9.93,2.12-16,2.12Z"/> - <path d="M564.08,158.9v-8.89l7.13-1.52v-54.88l-7.88-1.52v-8.89h21.43l.71,6.37c1.62-2.36,3.57-4.18,5.86-5.46s5.02-1.92,8.19-1.92c4.41,0,8.19,1.21,11.32,3.61,3.13,2.41,5.53,5.77,7.2,10.08,1.67,4.31,2.5,9.35,2.5,15.11v1.06c0,5.39-.83,10.1-2.5,14.12-1.67,4.03-4.08,7.16-7.23,9.4-3.15,2.24-6.95,3.36-11.4,3.36-2.93,0-5.52-.53-7.76-1.59-2.24-1.06-4.15-2.62-5.74-4.67v15.82l7.13,1.52v8.89h-28.96Zm30.93-31.28c3.77,0,6.51-1.4,8.21-4.2,1.7-2.8,2.55-6.59,2.55-11.37v-1.06c0-3.47-.39-6.49-1.16-9.07-.78-2.58-1.96-4.6-3.56-6.06-1.6-1.47-3.65-2.2-6.14-2.2-2.02,0-3.8,.45-5.33,1.36-1.53,.91-2.75,2.21-3.66,3.89v23.95c.91,1.55,2.13,2.73,3.66,3.54s3.34,1.21,5.43,1.21Z"/> - <path d="M624.02,137.87v-8.84l7.13-1.52v-58.07l-7.88-1.52v-8.89h22.59v31.13c1.72-2.53,3.85-4.49,6.39-5.89,2.54-1.4,5.43-2.1,8.67-2.1,5.49,0,9.85,1.83,13.06,5.48,3.22,3.66,4.83,9.31,4.83,16.96v22.89l7.08,1.52v8.84h-28.2v-8.84l6.37-1.52v-22.99c0-3.94-.74-6.74-2.22-8.39-1.48-1.65-3.66-2.48-6.52-2.48-1.99,0-3.8,.41-5.43,1.24-1.63,.83-2.97,2.03-4.02,3.61v29.01l6.37,1.52v8.84h-28.2Z"/> - </g> - <path d="M558.18,128.46c-.1-.67-.17-1.38-.2-2.12v-24.94c0-6.13-2.12-10.84-6.37-14.14-4.21-3.33-9.7-5-16.47-5h0c-3.57,0-6.91,.51-10.02,1.45-1.48,.39-3.03,.89-4.54,1.56-5.8,2.57-7.84,4.72-7.84,4.72l6.99,9.23s2.23-2.4,8.55-5.1c1.85-.78,4.14-1.1,5.89-1.1,2.97,0,5.21,.72,6.72,2.17,1.52,1.45,2.27,3.48,2.27,6.11v4.66h-7.53c-7.95,0-13.98,2.09-18.09,4.88-4.11,2.79-6.17,6.75-6.17,11.86s1.57,8.99,4.7,11.91c3.17,2.9,7.43,4.34,12.79,4.34,3.23,0,6.1-.62,8.59-1.87,2.53-1.25,4.66-2.88,6.42-4.9,.17,.98,.41,1.95,.71,2.93,.3,.94,.66,1.87,1.06,2.78h17.03v-8.84l-4.5-.61Zm-15.01-5.45c-1.01,1.45-2.43,2.66-4.25,3.64-1.82,.94-3.84,1.41-6.06,1.41s-3.79-.52-5-1.57c-1.18-1.04-1.77-2.49-1.77-4.34,0-2.05,.81-4.49,2.43-5.94,1.62-1.48,3.99-2.22,7.13-2.22h0s7.53,0,7.53,0v9.02Z"/> - <path d="M504.77,82.25c-2.66,0-5,.79-7.02,2.37-2.02,1.58-3.67,3.79-4.95,6.61l-.66-7.98h-21.58v8.89l7.83,1.52v33.88l-7.07,1.52v8.84h28.91v-8.84l-7.07-1.52v-26.56c.74-1.55,1.82-2.75,3.23-3.59,1.41-.84,3.2-1.26,5.36-1.26l6.06,.15,1.57-13.43c-.57-.17-1.3-.3-2.17-.4-.84-.13-1.65-.2-2.43-.2"/> -</svg> \ No newline at end of file diff --git a/site/themes/arangodb-docs-theme/images/favicon.png b/site/themes/arangodb-docs-theme/images/favicon.png index 4f9ff89cc9863478652febb7d9f87296f33559d7..41ad92213c12476a131f98a979f85bb27ce23a93 100644 GIT binary patch literal 2530 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 literal 1208 zcmV;p1V{T)Nk&Gn1ONb6MM6+kP&iDa1ONapC%_31RY~gqf6<guoZS87kbu+r%>Qwo zb$54ncXxMp-_7!$=g+gZJ<b<9k%R>F*$zaQMB9M^dfyr(+cc!126u8yWjfG=0Oa9H ziOoO;w>}$Vau7y)QGjF=faFM$BB^GUnR!o4Pv1{rM`Up|^9Z_aZHcnE|KBu>t%%*- z!TTbPUw2-LR6zg;(6MdXw$Waijby8P`vBWsb~2NrZQHsD5SLZ$nMJAO+NS!);T&<e znwLJUc}`z4d$kK8xQycwPV(@-9c9JaO!(UoKQrR4=ZvzyPlziFh~-P72KI0n-f)(s zIM+~|QjMk5)d>A9*Vl3%n<^<gmU!#QKc2YV{(F~TJ{54DPWFG3yj5Q*!#%e!5sMQc zI6o4dweUd2(|v=)YICXNGTlMeic-#S$AEQgVA4Ysp?{<KhZ6H>B~<CT|5=#wCI$xV zHxhgUN4%}cpAyZ&0Z%0Rn!%0(Fgr5Cy)w`neVz2bu2i~P;U55Ogt{I(hGX_B2{MB| zi(O87B{f>bWnE5kQe#6>XiAMvcB;xsRdK!{(zPW8t2h~zg*G)%0MJnj9%hC}SaLD; z=31na(<EOv+v{8{U)ro4*zD~Y_Lma2+9qZW0OluZJtI_nlPd~iZX^IGRfVDD;h&nm zkA?WVEEls~9`5=#Q$kJZP;>4!v*q(2eemU7%6=E<@qvl=jx4v<5&%q(R7$Woz@76d z3pJsYyHpRe-V`4izkX~~Z&vJj`?6`$^<s@eek#d|C2~p9rUwcDR@}`TfuAJgD2D+t zuJx|AP$mZkgG$@?`eBnXXSaz;k2M*gOqP3Ffl>-m5y{|^fX-r5inqU8D@g&2S6iE` z#~+^om>L;>Gn5zeWcee7{!Va|^?#jz$fm+w|6on2DZrcEuV0w9zW-2wmRh?YTe2*V zbd12;Fxy3dQ>aAWc)bpwbD6WrY;g~O$({<dL!M?zmTOA|!a1peW7tfk1ov~KX8=sC zxD$_0SWZ7Y7*+~qMk+m6cJLB{Q<57El`=b0CThwQ2RKe8dUs<50N%tM_8ohACA9nP zi}%^W^oqmeK>g)$=5E#$Fg8~T0o<hm+<5Ox3Yed%(rwG{Y|iO&<B{*#T>fsu%*;UP zZiG<Vv&O^gX;WbRp(4DdR3?s34OJ@wriXhjCsr7_VGAG?6%LpybAyM!LV3$Ww4R6e zS+S(Q<rtKqo-0a4Hzi5(G&7GCmhqn1;D{?IkpLF(JPWZs<wef5)jLmbtqyctQ>`V2 z1{b{~Ns`28c*c(K%+1VYr;5%-dS>Ejd2SeG`^)|xN(3y`SGXO+b!p8gTh{~3P_XR_ zv;()FaPTCW0~|Q5lHmC7UBoLp;{Df&p{~AC9xjXo@T{j5@?(L6UjJ7!&KHGw8#8Pf zZb<9|xH0Ri87zvTy-GsVf)hC4<+X6vkrt~8Qo;8)-{7UE2>c5oI7T$Bj#)gP;dUG1 zKL%UiHzHw{Xi{TuB|PI?o?$N`UgUwNIO0aNgb{y4W-YP`K7%zJ;IV)$;WG!^rO~lS WTylG6d0K}47et4_Iuje7i_5OM6GRRG diff --git a/site/themes/arangodb-docs-theme/images/logo_main.png b/site/themes/arangodb-docs-theme/images/logo_main.png index 1d5cf2a8aa54d44a3c558f0d509b9a6216ca7335..6b5bfc4032ea328f2dce69dcf9b75f0a1c01bf3a 100644 GIT binary patch literal 9660 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 Y+$^iVL#NO0i><IURJB!Vm29H_1N7Sv`~Uy| literal 29935 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 SOw>QJpixae>j5ne9WF^RH9a|8_!r~AU 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 QJ9SiCSVpKyKri6`0p0-$djJ3c diff --git a/site/themes/arangodb-docs-theme/images/logo_small.png b/site/themes/arangodb-docs-theme/images/logo_small.png new file mode 100644 index 0000000000000000000000000000000000000000..da5ab37a9661a5f9bce49fa21419ce0a6275210a GIT binary patch literal 4205 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 WS21y<Pit`~v1;{F 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 D{=CdG literal 0 HcmV?d00001 diff --git a/site/themes/arangodb-docs-theme/layouts/partials/header.html b/site/themes/arangodb-docs-theme/layouts/partials/header.html index 6d73d06742..ac4f189fd6 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/header.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/header.html @@ -14,7 +14,7 @@ <!-- END LOGO--> <div class="arangodb-logo-small"> <a href="https://arangodb.com/"> - <img alt="ArangoDB Logo" src="/images/ArangoDB_Logo_White_small.png"> + <img alt="ArangoDB Logo" src="/images/logo_small.png"> </a> </div> diff --git a/site/themes/arangodb-docs-theme/layouts/shortcodes/cloudbanner.html b/site/themes/arangodb-docs-theme/layouts/shortcodes/cloudbanner.html index 3f85cda1a0..0030027cdd 100644 --- a/site/themes/arangodb-docs-theme/layouts/shortcodes/cloudbanner.html +++ b/site/themes/arangodb-docs-theme/layouts/shortcodes/cloudbanner.html @@ -1,5 +1,5 @@ <div class="ag-banner"> - <img src="/images/ArangoGraph_Logo.svg" alt="ArangoGraph" class="logo" /> + <img src="/images/ArangoAMP_logo.svg" alt="ArangoGraph" class="logo" /> <div> <div class="ag-info"> Experience the shortest time to value for a hosted graph DB.</div> diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index a90a85fe9a..1a229b5ba2 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -209,7 +209,7 @@ ul ul, ul ol, ol ul, ol ol { .link { text-decoration: none; - border-bottom: 2px solid var(--green-600); + border-bottom: 2px solid var(--green-400); } .link:hover{ @@ -699,7 +699,7 @@ body .page-container { position: relative; height: 64px; align-items: center; - padding: 6px 10px 0 10px; + padding-left: 10px; } header .logo { @@ -1008,7 +1008,7 @@ header .logo { .sidebar ul.topics li.active > a > .menu-title, .sidebar ul.topics li.alwaysopen > a > .menu-title { font-weight: 400; - color: var(--green-500); + color: var(--green-300); } .sidebar ul li li { @@ -2130,6 +2130,6 @@ nav.pagination .next { color: white; } .ag-banner .logo { - height: 50px !important; + height: 36px !important; width: 200px !important; } diff --git a/toolchain/arangoproxy/cmd/configs/local.yaml b/toolchain/arangoproxy/cmd/configs/local.yaml index d4b28fe6aa..eed35bb7a7 100644 --- a/toolchain/arangoproxy/cmd/configs/local.yaml +++ b/toolchain/arangoproxy/cmd/configs/local.yaml @@ -1,4 +1,4 @@ datasetsFile: '../internal/utils/datasets.json' cache: '/home/site/data/' debug: false -repositories: [] \ No newline at end of file +repositories: [] From 48f41a55671d1b8b4341f5ae4366acb782e2e0e8 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 2 Oct 2025 10:17:21 +0200 Subject: [PATCH 15/69] Theme: Add Urbanist font --- .../arangodb-docs-theme/static/css/fonts.css | 9 +++++++++ .../static/fonts/Urbanist[ital,wght].woff2 | Bin 0 -> 58204 bytes 2 files changed, 9 insertions(+) create mode 100644 site/themes/arangodb-docs-theme/static/fonts/Urbanist[ital,wght].woff2 diff --git a/site/themes/arangodb-docs-theme/static/css/fonts.css b/site/themes/arangodb-docs-theme/static/css/fonts.css index a17db019f0..aec2e520e7 100644 --- a/site/themes/arangodb-docs-theme/static/css/fonts.css +++ b/site/themes/arangodb-docs-theme/static/css/fonts.css @@ -34,3 +34,12 @@ src: url("../fonts/inter-v12-latin-600.woff2") format("woff2"); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ } + +/* Urbanist variable font */ +@font-face { + font-display: swap; + font-family: "Urbanist"; + font-style: normal; + font-weight: 100 900; + src: url("../fonts/Urbanist[ital,wght].woff2") format("woff2"); +} diff --git a/site/themes/arangodb-docs-theme/static/fonts/Urbanist[ital,wght].woff2 b/site/themes/arangodb-docs-theme/static/fonts/Urbanist[ital,wght].woff2 new file mode 100644 index 0000000000000000000000000000000000000000..684be8714f6f2346724069c8cf9e8ec51c56f699 GIT binary patch literal 58204 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 literal 0 HcmV?d00001 From edd5d81700a0d4d55f8fe291944c3990978660af Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Mon, 13 Oct 2025 15:12:29 +0200 Subject: [PATCH 16/69] Re-enable all core versions --- site/config/_default/config.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/site/config/_default/config.yaml b/site/config/_default/config.yaml index 0a7d2c1541..25e4930333 100644 --- a/site/config/_default/config.yaml +++ b/site/config/_default/config.yaml @@ -19,21 +19,21 @@ module: - source: "static" target: "static" -# - source: content/arangodb/3.12 -# target: content/arangodb/stable - -# - source: content/arangodb/3.13 -# target: content/arangodb/devel - # Version folders can be ignored temporarily for faster local builds # of a single version (here: 3.12) - source: content target: content excludeFiles: - - arangodb/3.10/* - - arangodb/3.11/* +# - arangodb/3.10/* +# - arangodb/3.11/* # - arangodb/3.13/* + - source: content/arangodb/3.12 + target: content/arangodb/stable + + - source: content/arangodb/3.13 + target: content/arangodb/devel + markup: highlight: noClasses: false From 538a871e8caa5b883c6ad8aa676fc64446f5578e Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Mon, 13 Oct 2025 15:12:49 +0200 Subject: [PATCH 17/69] Try Urbanist as font for headlines --- site/themes/arangodb-docs-theme/static/css/theme.css | 1 + 1 file changed, 1 insertion(+) diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index ec79d63573..a37a9a1eaf 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -1332,6 +1332,7 @@ article.notfound { hgroup > h1, article > h2, article > h3, article > h4, article > h5, article > h6 { color: var(--HEADERS-COLOR); + font-family: "Urbanist"; font-weight: var(--TYPOGRAPHY-BOLD-TEXT); overflow-wrap: break-word; } From 62ea1037c7a4f41fea87133322bf215364635dcd Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Mon, 13 Oct 2025 15:33:31 +0200 Subject: [PATCH 18/69] CircleCI: Account for versions.yaml change when loading versions --- .circleci/generate_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/generate_config.py b/.circleci/generate_config.py index 4d12e8194d..8548703ae6 100644 --- a/.circleci/generate_config.py +++ b/.circleci/generate_config.py @@ -18,7 +18,7 @@ ## Load versions versions = yaml.safe_load(open("versions.yaml", "r")) -versions = sorted(versions, key=lambda d: d['name']) +versions = sorted(versions["/arangodb/"], key=lambda d: d['name']) print(f"Loaded versions {versions}") From 440b218b172a380777447535c4804c1b46991d4f Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Mon, 13 Oct 2025 15:33:56 +0200 Subject: [PATCH 19/69] Add optgroup to version selector with label "Version" --- .../layouts/partials/version-selector.html | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html b/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html index 68c1b53c0c..88ec7b6540 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html @@ -1,12 +1,14 @@ <div class="version-selector"> - <select class="arangodb-version" onchange="changeVersion();"> - {{ $versions := index site.Data.versions "/arangodb/" }} - {{ range $i, $version := $versions }} + <select class="arangodb-version" onchange="changeVersion();"> + <optgroup label="Version"> + {{ $versions := index site.Data.versions "/arangodb/" }} + {{ range $i, $version := $versions }} {{/* if eq $version.name "platform" }}{{ continue }}{{ end */}} {{ if ne $version.name $version.alias }} - <option value="{{ $version.alias }}">{{ $version.alias }}</option> + <option value="{{ $version.alias }}">{{ $version.alias }}</option> {{ end }} <option value="{{ $version.name }}"{{ if eq $version.name "3.12" }} selected{{ end }}>{{ $version.name }}</option> - {{ end }} - </select> + {{ end }} + </optgroup> + </select> </div> \ No newline at end of file From 7ad86718906e177e883fffc82d0f9335883e2c4a Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Mon, 13 Oct 2025 15:43:18 +0200 Subject: [PATCH 20/69] Set sans-serif as fallback font for headlines Less jarring change while the Urbanist font loads --- site/themes/arangodb-docs-theme/static/css/theme.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index a37a9a1eaf..58f5604d3a 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -1332,7 +1332,7 @@ article.notfound { hgroup > h1, article > h2, article > h3, article > h4, article > h5, article > h6 { color: var(--HEADERS-COLOR); - font-family: "Urbanist"; + font-family: "Urbanist", sans-serif; font-weight: var(--TYPOGRAPHY-BOLD-TEXT); overflow-wrap: break-word; } From 46b461709f88e98e8d57bd7c01d39f0bd24e6b3b Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Tue, 14 Oct 2025 13:51:13 +0200 Subject: [PATCH 21/69] Change tags due to renaming --- README.md | 2 +- site/content/arangodb/3.10/aql/functions/arangosearch.md | 2 +- site/content/arangodb/3.10/aql/graphs/traversals.md | 4 ++-- .../arangodb/3.10/aql/how-to-invoke-aql/with-arangosh.md | 6 +++--- .../arangodb/3.10/components/arangodb-server/ldap.md | 2 +- .../arangodb/3.10/components/tools/arangodump/examples.md | 2 +- .../arangodb/3.10/components/tools/arangodump/maskings.md | 2 +- site/content/arangodb/3.10/deploy/_index.md | 2 +- site/content/arangodb/3.10/deploy/oneshard.md | 2 +- site/content/arangodb/3.10/develop/http-api/documents.md | 2 +- .../content/arangodb/3.10/develop/satellitecollections.md | 2 +- site/content/arangodb/3.10/develop/smartjoins.md | 2 +- .../arangodb/3.10/graphs/enterprisegraphs/_index.md | 2 +- .../arangodb/3.10/graphs/satellitegraphs/_index.md | 2 +- site/content/arangodb/3.10/graphs/smartgraphs/_index.md | 2 +- .../graphs/smartgraphs/testing-graphs-on-single-server.md | 2 +- site/content/arangodb/3.10/index-and-search/analyzers.md | 8 ++++---- .../arangosearch/arangosearch-views-reference.md | 6 +++--- .../3.10/index-and-search/arangosearch/nested-search.md | 2 +- .../3.10/index-and-search/arangosearch/performance.md | 2 +- .../index-and-search/arangosearch/search-highlighting.md | 2 +- .../operations/administration/user-management/_index.md | 2 +- .../arangodb/3.10/operations/backup-and-restore.md | 2 +- .../3.10/operations/security/encryption-at-rest.md | 2 +- .../3.10/release-notes/version-3.6/whats-new-in-3-6.md | 2 +- site/content/arangodb/3.11/aql/functions/arangosearch.md | 2 +- site/content/arangodb/3.11/aql/graphs/traversals.md | 4 ++-- .../arangodb/3.11/aql/how-to-invoke-aql/with-arangosh.md | 6 +++--- .../arangodb/3.11/components/arangodb-server/ldap.md | 2 +- .../arangodb/3.11/components/tools/arangodump/examples.md | 2 +- .../arangodb/3.11/components/tools/arangodump/maskings.md | 2 +- site/content/arangodb/3.11/deploy/_index.md | 2 +- site/content/arangodb/3.11/deploy/oneshard.md | 2 +- site/content/arangodb/3.11/develop/http-api/documents.md | 2 +- .../content/arangodb/3.11/develop/satellitecollections.md | 2 +- site/content/arangodb/3.11/develop/smartjoins.md | 2 +- .../arangodb/3.11/graphs/enterprisegraphs/_index.md | 2 +- .../arangodb/3.11/graphs/satellitegraphs/_index.md | 2 +- site/content/arangodb/3.11/graphs/smartgraphs/_index.md | 2 +- .../graphs/smartgraphs/testing-graphs-on-single-server.md | 2 +- site/content/arangodb/3.11/index-and-search/analyzers.md | 8 ++++---- .../arangosearch/arangosearch-views-reference.md | 6 +++--- .../3.11/index-and-search/arangosearch/nested-search.md | 2 +- .../3.11/index-and-search/arangosearch/performance.md | 4 ++-- .../index-and-search/arangosearch/search-highlighting.md | 2 +- .../operations/administration/user-management/_index.md | 2 +- .../arangodb/3.11/operations/backup-and-restore.md | 2 +- .../3.11/operations/security/encryption-at-rest.md | 2 +- .../3.11/release-notes/version-3.6/whats-new-in-3-6.md | 2 +- .../3.12/release-notes/version-3.6/whats-new-in-3-6.md | 2 +- .../3.13/release-notes/version-3.6/whats-new-in-3-6.md | 2 +- site/content/data-platform/graph-visualizer.md | 2 +- site/content/gen-ai/graph-analytics.md | 6 +++--- site/content/gen-ai/graph-to-ai.md | 2 +- site/content/gen-ai/graphml/_index.md | 2 +- site/content/gen-ai/graphml/notebooks-api.md | 2 +- site/content/gen-ai/graphml/quickstart.md | 2 +- site/content/gen-ai/graphml/ui.md | 2 +- site/content/gen-ai/graphrag/_index.md | 2 +- site/content/gen-ai/graphrag/tutorial-notebook.md | 2 +- site/content/gen-ai/graphrag/web-interface.md | 2 +- site/content/gen-ai/notebook-servers.md | 2 +- site/content/gen-ai/services/gen-ai.md | 2 +- site/content/gen-ai/services/importer.md | 2 +- site/content/gen-ai/services/mlflow.md | 2 +- site/content/gen-ai/services/retriever.md | 2 +- site/content/gen-ai/services/triton-inference-server.md | 2 +- 67 files changed, 86 insertions(+), 86 deletions(-) diff --git a/README.md b/README.md index 56f14f3459..e1e35f9adf 100644 --- a/README.md +++ b/README.md @@ -720,7 +720,7 @@ Enterprise Edition features should indicate that the Enterprise Edition is required using a tag. Use the following include in the general case: ```markdown -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ``` ### Add lead paragraphs diff --git a/site/content/arangodb/3.10/aql/functions/arangosearch.md b/site/content/arangodb/3.10/aql/functions/arangosearch.md index 0b0107c595..4bfe55e35c 100644 --- a/site/content/arangodb/3.10/aql/functions/arangosearch.md +++ b/site/content/arangodb/3.10/aql/functions/arangosearch.md @@ -1281,7 +1281,7 @@ FOR doc IN viewName ## Search Highlighting Functions -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ### OFFSET_INFO() diff --git a/site/content/arangodb/3.10/aql/graphs/traversals.md b/site/content/arangodb/3.10/aql/graphs/traversals.md index 08d18ddfa6..c3d3bb2442 100644 --- a/site/content/arangodb/3.10/aql/graphs/traversals.md +++ b/site/content/arangodb/3.10/aql/graphs/traversals.md @@ -126,7 +126,7 @@ FOR vertex[, edge[, path]] of the collections specified by a restriction. - **parallelism** (number, *optional*): - {{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} + {{< tag "ArangoDB Enterprise Edition" "AMP" >}} Optionally parallelize traversal execution. If omitted or set to a value of `1`, traversal execution is not parallelized. If set to a value greater than `1`, @@ -141,7 +141,7 @@ FOR vertex[, edge[, path]] execution. - **maxProjections** (number, *optional*): - {{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} + {{< tag "ArangoDB Enterprise Edition" "AMP" >}} Specifies the number of document attributes per `FOR` loop to be used as projections. The default value is `5`. diff --git a/site/content/arangodb/3.10/aql/how-to-invoke-aql/with-arangosh.md b/site/content/arangodb/3.10/aql/how-to-invoke-aql/with-arangosh.md index a2a7a53b53..0700890dd7 100644 --- a/site/content/arangodb/3.10/aql/how-to-invoke-aql/with-arangosh.md +++ b/site/content/arangodb/3.10/aql/how-to-invoke-aql/with-arangosh.md @@ -422,7 +422,7 @@ the entire query result in RAM, use a streaming query (see the #### `allowDirtyReads` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.10.0</small> @@ -433,7 +433,7 @@ for details. #### `skipInaccessibleCollections` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} Let AQL queries (especially graph traversals) treat collection to which a user has **no access** rights for as if these collections are empty. @@ -444,7 +444,7 @@ accessible results by changing the access rights of users on collections. #### `satelliteSyncWait` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} Configure how long a DB-Server has time to bring the SatelliteCollections involved in the query into sync. The default value is `60.0` seconds. diff --git a/site/content/arangodb/3.10/components/arangodb-server/ldap.md b/site/content/arangodb/3.10/components/arangodb-server/ldap.md index b773edf61e..2fde26e69f 100644 --- a/site/content/arangodb/3.10/components/arangodb-server/ldap.md +++ b/site/content/arangodb/3.10/components/arangodb-server/ldap.md @@ -5,7 +5,7 @@ weight: 10 description: >- LDAP authentication options in the ArangoDB server --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ## Basics Concepts diff --git a/site/content/arangodb/3.10/components/tools/arangodump/examples.md b/site/content/arangodb/3.10/components/tools/arangodump/examples.md index 1c3b95c6f4..54000c4e5e 100644 --- a/site/content/arangodb/3.10/components/tools/arangodump/examples.md +++ b/site/content/arangodb/3.10/components/tools/arangodump/examples.md @@ -156,7 +156,7 @@ INFO [66c0e] {dump} Processed 2 collection(s) from 1 database(s) in 0.132990 s t ## Encryption -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} You can encrypt dumps using an encryption keyfile, which must contain exactly 32 bytes of data (required by the AES block cipher). diff --git a/site/content/arangodb/3.10/components/tools/arangodump/maskings.md b/site/content/arangodb/3.10/components/tools/arangodump/maskings.md index 032ea149b4..5760a360ee 100644 --- a/site/content/arangodb/3.10/components/tools/arangodump/maskings.md +++ b/site/content/arangodb/3.10/components/tools/arangodump/maskings.md @@ -470,7 +470,7 @@ processed by a single masking function, ignoring any other rules below it. ## Masking Functions -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} - [Xify Front](#xify-front) - [Zip](#zip) diff --git a/site/content/arangodb/3.10/deploy/_index.md b/site/content/arangodb/3.10/deploy/_index.md index e073069b53..80a2c14e05 100644 --- a/site/content/arangodb/3.10/deploy/_index.md +++ b/site/content/arangodb/3.10/deploy/_index.md @@ -44,7 +44,7 @@ You can deploy systems that dynamically scale up and down according to demand. ### OneShard -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} [OneShard deployments](oneshard.md) are cluster deployments but with the data of each database restricted to a single shard. This allows queries to run locally diff --git a/site/content/arangodb/3.10/deploy/oneshard.md b/site/content/arangodb/3.10/deploy/oneshard.md index 048508fdfd..743836841b 100644 --- a/site/content/arangodb/3.10/deploy/oneshard.md +++ b/site/content/arangodb/3.10/deploy/oneshard.md @@ -6,7 +6,7 @@ description: >- The OneShard feature offers a practicable solution that enables significantly improved performance and transactional guarantees for cluster deployments --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} The OneShard option for ArangoDB clusters restricts all collections of a database to a single shard so that every collection has `numberOfShards` set to `1`, diff --git a/site/content/arangodb/3.10/develop/http-api/documents.md b/site/content/arangodb/3.10/develop/http-api/documents.md index ec68f4fb1e..95921d836f 100644 --- a/site/content/arangodb/3.10/develop/http-api/documents.md +++ b/site/content/arangodb/3.10/develop/http-api/documents.md @@ -2537,7 +2537,7 @@ db._drop(cn); ### Read from followers -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.10.0</small> diff --git a/site/content/arangodb/3.10/develop/satellitecollections.md b/site/content/arangodb/3.10/develop/satellitecollections.md index d470d6bb2b..2e95897664 100644 --- a/site/content/arangodb/3.10/develop/satellitecollections.md +++ b/site/content/arangodb/3.10/develop/satellitecollections.md @@ -5,7 +5,7 @@ weight: 250 description: >- Collections synchronously replicated to all servers, available in the Enterprise Edition --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} When doing joins in an ArangoDB cluster data has to be exchanged between different servers. diff --git a/site/content/arangodb/3.10/develop/smartjoins.md b/site/content/arangodb/3.10/develop/smartjoins.md index fd44d18d56..498f62f6ff 100644 --- a/site/content/arangodb/3.10/develop/smartjoins.md +++ b/site/content/arangodb/3.10/develop/smartjoins.md @@ -6,7 +6,7 @@ description: >- SmartJoins allow to execute co-located join operations among identically sharded collections --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ## Cluster joins without being smart diff --git a/site/content/arangodb/3.10/graphs/enterprisegraphs/_index.md b/site/content/arangodb/3.10/graphs/enterprisegraphs/_index.md index 27db0dfcee..f0614e1e83 100644 --- a/site/content/arangodb/3.10/graphs/enterprisegraphs/_index.md +++ b/site/content/arangodb/3.10/graphs/enterprisegraphs/_index.md @@ -6,7 +6,7 @@ description: >- EnterpriseGraphs enable you to manage graphs at scale with automated sharding key selection --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} This chapter describes the `enterprise-graph` module, a specialized version of [SmartGraphs](../smartgraphs/_index.md). diff --git a/site/content/arangodb/3.10/graphs/satellitegraphs/_index.md b/site/content/arangodb/3.10/graphs/satellitegraphs/_index.md index 9f22526ee7..ad984dae22 100644 --- a/site/content/arangodb/3.10/graphs/satellitegraphs/_index.md +++ b/site/content/arangodb/3.10/graphs/satellitegraphs/_index.md @@ -7,7 +7,7 @@ description: >- --- <small>Introduced in: v3.7.0</small> -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ## What is a SatelliteGraph? diff --git a/site/content/arangodb/3.10/graphs/smartgraphs/_index.md b/site/content/arangodb/3.10/graphs/smartgraphs/_index.md index a9a166b0fe..e3faa431ba 100644 --- a/site/content/arangodb/3.10/graphs/smartgraphs/_index.md +++ b/site/content/arangodb/3.10/graphs/smartgraphs/_index.md @@ -5,7 +5,7 @@ weight: 95 description: >- SmartGraphs enable you to manage graphs at scale using value-based sharding --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} SmartGraphs are specifically targeted at graphs that need scalability and high performance. The way SmartGraphs use the ArangoDB cluster sharding makes it diff --git a/site/content/arangodb/3.10/graphs/smartgraphs/testing-graphs-on-single-server.md b/site/content/arangodb/3.10/graphs/smartgraphs/testing-graphs-on-single-server.md index 5a952b26a6..cb838d8f4e 100644 --- a/site/content/arangodb/3.10/graphs/smartgraphs/testing-graphs-on-single-server.md +++ b/site/content/arangodb/3.10/graphs/smartgraphs/testing-graphs-on-single-server.md @@ -6,7 +6,7 @@ description: >- Simulate SmartGraphs and SatelliteGraphs on a single server to make it easier to port them to an ArangoDB cluster later --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ## General idea diff --git a/site/content/arangodb/3.10/index-and-search/analyzers.md b/site/content/arangodb/3.10/index-and-search/analyzers.md index 8d2e041062..d010f0f77b 100644 --- a/site/content/arangodb/3.10/index-and-search/analyzers.md +++ b/site/content/arangodb/3.10/index-and-search/analyzers.md @@ -1049,7 +1049,7 @@ db._query(`LET str = 'Test\twith An_EMAIL-address+123@example.org\n蝴蝶。\u20 ### `minhash` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.10.0</small> @@ -1092,7 +1092,7 @@ db._query(` ### `classification` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.10.0</small> @@ -1152,7 +1152,7 @@ db._query(`LET str = "Which baking dish is best to bake a banana bread ?" ### `nearest_neighbors` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.10.0</small> @@ -1332,7 +1332,7 @@ db._query(`LET point = GEO_POINT(6.93, 50.94) ### `geo_s2` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.10.5</small> diff --git a/site/content/arangodb/3.10/index-and-search/arangosearch/arangosearch-views-reference.md b/site/content/arangodb/3.10/index-and-search/arangosearch/arangosearch-views-reference.md index 83b80d0f85..82dad0ee4e 100644 --- a/site/content/arangodb/3.10/index-and-search/arangosearch/arangosearch-views-reference.md +++ b/site/content/arangodb/3.10/index-and-search/arangosearch/arangosearch-views-reference.md @@ -177,7 +177,7 @@ During view modification the following directives apply: - **cache** (_optional_; type: `boolean`; default: `false`) - {{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} + {{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.9.5, v3.10.2</small> @@ -229,7 +229,7 @@ cache-related options and thus recreate inverted indexes and Views. See - **primarySortCache** (_optional_; type: `boolean`; default: `false`; _immutable_) - {{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} + {{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.9.6, v3.10.2</small> @@ -248,7 +248,7 @@ cache-related options and thus recreate inverted indexes and Views. See - **primaryKeyCache** (_optional_; type: `boolean`; default: `false`; _immutable_) - {{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} + {{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.9.6, v3.10.2</small> diff --git a/site/content/arangodb/3.10/index-and-search/arangosearch/nested-search.md b/site/content/arangodb/3.10/index-and-search/arangosearch/nested-search.md index f126935cf6..563adf1d58 100644 --- a/site/content/arangodb/3.10/index-and-search/arangosearch/nested-search.md +++ b/site/content/arangodb/3.10/index-and-search/arangosearch/nested-search.md @@ -7,7 +7,7 @@ description: >- each, and define how often these conditions should be fulfilled for the entire array --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} By default, `arangosearch` Views index arrays as if the parent attribute had multiple values at once. This is also supported for `search-alias` Views by enabling diff --git a/site/content/arangodb/3.10/index-and-search/arangosearch/performance.md b/site/content/arangodb/3.10/index-and-search/arangosearch/performance.md index b7296c94ba..81279d55e3 100644 --- a/site/content/arangodb/3.10/index-and-search/arangosearch/performance.md +++ b/site/content/arangodb/3.10/index-and-search/arangosearch/performance.md @@ -536,7 +536,7 @@ Also see [Faceted Search with ArangoSearch](faceted-search.md). ## Field normalization value caching and caching of Geo Analyzer auxiliary data -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.9.5, v3.10.2</small> diff --git a/site/content/arangodb/3.10/index-and-search/arangosearch/search-highlighting.md b/site/content/arangodb/3.10/index-and-search/arangosearch/search-highlighting.md index 63e8ea7176..aaa11fb3c4 100644 --- a/site/content/arangodb/3.10/index-and-search/arangosearch/search-highlighting.md +++ b/site/content/arangodb/3.10/index-and-search/arangosearch/search-highlighting.md @@ -6,7 +6,7 @@ description: >- You can retrieve the positions of matches within strings when querying Views with ArangoSearch, to highlight what was found in search results --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ArangoSearch lets you search for terms and phrases in full-text, and more. It only returns matching documents, however. With search highlighting, you can diff --git a/site/content/arangodb/3.10/operations/administration/user-management/_index.md b/site/content/arangodb/3.10/operations/administration/user-management/_index.md index 481b95ec5a..32dd9ffd61 100644 --- a/site/content/arangodb/3.10/operations/administration/user-management/_index.md +++ b/site/content/arangodb/3.10/operations/administration/user-management/_index.md @@ -408,7 +408,7 @@ or the web interface. ### LDAP Users -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ArangoDB supports LDAP as an external authentication system. For detailed information please have look into the diff --git a/site/content/arangodb/3.10/operations/backup-and-restore.md b/site/content/arangodb/3.10/operations/backup-and-restore.md index 942a1fbdbe..a6acb7f7bb 100644 --- a/site/content/arangodb/3.10/operations/backup-and-restore.md +++ b/site/content/arangodb/3.10/operations/backup-and-restore.md @@ -69,7 +69,7 @@ procedure is recommended. ## Hot Backups -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} Hot backup and restore associated operations can be performed with the [_arangobackup_](../components/tools/arangobackup/_index.md) client tool and the diff --git a/site/content/arangodb/3.10/operations/security/encryption-at-rest.md b/site/content/arangodb/3.10/operations/security/encryption-at-rest.md index 8a958d9be1..34a2b37ab2 100644 --- a/site/content/arangodb/3.10/operations/security/encryption-at-rest.md +++ b/site/content/arangodb/3.10/operations/security/encryption-at-rest.md @@ -6,7 +6,7 @@ description: >- You can secure the physical storage media of an ArangoDB deployment by letting it encrypt the database directories --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} When you store sensitive data in your ArangoDB database, you want to protect that data under all circumstances. At runtime you will protect it with SSL diff --git a/site/content/arangodb/3.10/release-notes/version-3.6/whats-new-in-3-6.md b/site/content/arangodb/3.10/release-notes/version-3.6/whats-new-in-3-6.md index 02b89c84bb..b25cb21b69 100644 --- a/site/content/arangodb/3.10/release-notes/version-3.6/whats-new-in-3-6.md +++ b/site/content/arangodb/3.10/release-notes/version-3.6/whats-new-in-3-6.md @@ -562,7 +562,7 @@ operand can be a collection or another View. ## OneShard -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} Not all use cases require horizontal scalability. In such cases, a OneShard deployment offers a practicable solution that enables significant performance diff --git a/site/content/arangodb/3.11/aql/functions/arangosearch.md b/site/content/arangodb/3.11/aql/functions/arangosearch.md index 303eb0419f..2672ed25dd 100644 --- a/site/content/arangodb/3.11/aql/functions/arangosearch.md +++ b/site/content/arangodb/3.11/aql/functions/arangosearch.md @@ -1271,7 +1271,7 @@ FOR doc IN viewName ## Search Highlighting Functions -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ### OFFSET_INFO() diff --git a/site/content/arangodb/3.11/aql/graphs/traversals.md b/site/content/arangodb/3.11/aql/graphs/traversals.md index f9268387a1..657fbf0917 100644 --- a/site/content/arangodb/3.11/aql/graphs/traversals.md +++ b/site/content/arangodb/3.11/aql/graphs/traversals.md @@ -189,7 +189,7 @@ If omitted or an empty array is specified, then there are no restrictions. #### `parallelism` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} Parallelize traversal execution (number). @@ -206,7 +206,7 @@ execution. #### `maxProjections` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} Specifies the number of document attributes per `FOR` loop to be used as projections (number). The default value is `5`. diff --git a/site/content/arangodb/3.11/aql/how-to-invoke-aql/with-arangosh.md b/site/content/arangodb/3.11/aql/how-to-invoke-aql/with-arangosh.md index 20c0a0b70f..c430c0efce 100644 --- a/site/content/arangodb/3.11/aql/how-to-invoke-aql/with-arangosh.md +++ b/site/content/arangodb/3.11/aql/how-to-invoke-aql/with-arangosh.md @@ -482,7 +482,7 @@ the entire query result in RAM, use a streaming query (see the #### `allowDirtyReads` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.10.0</small> @@ -493,7 +493,7 @@ for details. #### `skipInaccessibleCollections` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} Let AQL queries (especially graph traversals) treat collection to which a user has **no access** rights for as if these collections are empty. @@ -504,7 +504,7 @@ accessible results by changing the access rights of users on collections. #### `satelliteSyncWait` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} Configure how long a DB-Server has time to bring the SatelliteCollections involved in the query into sync. The default value is `60.0` seconds. diff --git a/site/content/arangodb/3.11/components/arangodb-server/ldap.md b/site/content/arangodb/3.11/components/arangodb-server/ldap.md index b773edf61e..2fde26e69f 100644 --- a/site/content/arangodb/3.11/components/arangodb-server/ldap.md +++ b/site/content/arangodb/3.11/components/arangodb-server/ldap.md @@ -5,7 +5,7 @@ weight: 10 description: >- LDAP authentication options in the ArangoDB server --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ## Basics Concepts diff --git a/site/content/arangodb/3.11/components/tools/arangodump/examples.md b/site/content/arangodb/3.11/components/tools/arangodump/examples.md index 473f550e1c..bde4958905 100644 --- a/site/content/arangodb/3.11/components/tools/arangodump/examples.md +++ b/site/content/arangodb/3.11/components/tools/arangodump/examples.md @@ -156,7 +156,7 @@ INFO [66c0e] {dump} Processed 2 collection(s) from 1 database(s) in 0.132990 s t ## Encryption -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} You can encrypt dumps using an encryption keyfile, which must contain exactly 32 bytes of data (required by the AES block cipher). diff --git a/site/content/arangodb/3.11/components/tools/arangodump/maskings.md b/site/content/arangodb/3.11/components/tools/arangodump/maskings.md index 415262ccd5..0bec342887 100644 --- a/site/content/arangodb/3.11/components/tools/arangodump/maskings.md +++ b/site/content/arangodb/3.11/components/tools/arangodump/maskings.md @@ -470,7 +470,7 @@ processed by a single masking function, ignoring any other rules below it. ## Masking Functions -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} - [Xify Front](#xify-front) - [Zip](#zip) diff --git a/site/content/arangodb/3.11/deploy/_index.md b/site/content/arangodb/3.11/deploy/_index.md index d23d40ddf1..98e7932147 100644 --- a/site/content/arangodb/3.11/deploy/_index.md +++ b/site/content/arangodb/3.11/deploy/_index.md @@ -44,7 +44,7 @@ You can deploy systems that dynamically scale up and down according to demand. ### OneShard -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} [OneShard deployments](oneshard.md) are cluster deployments but with the data of each database restricted to a single shard. This allows queries to run locally diff --git a/site/content/arangodb/3.11/deploy/oneshard.md b/site/content/arangodb/3.11/deploy/oneshard.md index 8a35123968..1852df41d7 100644 --- a/site/content/arangodb/3.11/deploy/oneshard.md +++ b/site/content/arangodb/3.11/deploy/oneshard.md @@ -6,7 +6,7 @@ description: >- The OneShard feature offers a practicable solution that enables significantly improved performance and transactional guarantees for cluster deployments --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} The OneShard option for ArangoDB clusters restricts all collections of a database to a single shard so that every collection has `numberOfShards` set to `1`, diff --git a/site/content/arangodb/3.11/develop/http-api/documents.md b/site/content/arangodb/3.11/develop/http-api/documents.md index 6487f83c29..a101e250d1 100644 --- a/site/content/arangodb/3.11/develop/http-api/documents.md +++ b/site/content/arangodb/3.11/develop/http-api/documents.md @@ -2989,7 +2989,7 @@ db._drop(cn); ## Read from followers -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.10.0</small> diff --git a/site/content/arangodb/3.11/develop/satellitecollections.md b/site/content/arangodb/3.11/develop/satellitecollections.md index fee6ab3321..9348ebf3f5 100644 --- a/site/content/arangodb/3.11/develop/satellitecollections.md +++ b/site/content/arangodb/3.11/develop/satellitecollections.md @@ -5,7 +5,7 @@ weight: 250 description: >- Collections synchronously replicated to all servers to enable local joins --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} When doing joins in an ArangoDB cluster data has to be exchanged between different servers. diff --git a/site/content/arangodb/3.11/develop/smartjoins.md b/site/content/arangodb/3.11/develop/smartjoins.md index fd44d18d56..498f62f6ff 100644 --- a/site/content/arangodb/3.11/develop/smartjoins.md +++ b/site/content/arangodb/3.11/develop/smartjoins.md @@ -6,7 +6,7 @@ description: >- SmartJoins allow to execute co-located join operations among identically sharded collections --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ## Cluster joins without being smart diff --git a/site/content/arangodb/3.11/graphs/enterprisegraphs/_index.md b/site/content/arangodb/3.11/graphs/enterprisegraphs/_index.md index 27db0dfcee..f0614e1e83 100644 --- a/site/content/arangodb/3.11/graphs/enterprisegraphs/_index.md +++ b/site/content/arangodb/3.11/graphs/enterprisegraphs/_index.md @@ -6,7 +6,7 @@ description: >- EnterpriseGraphs enable you to manage graphs at scale with automated sharding key selection --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} This chapter describes the `enterprise-graph` module, a specialized version of [SmartGraphs](../smartgraphs/_index.md). diff --git a/site/content/arangodb/3.11/graphs/satellitegraphs/_index.md b/site/content/arangodb/3.11/graphs/satellitegraphs/_index.md index 05019c8b3a..c4b5f0f647 100644 --- a/site/content/arangodb/3.11/graphs/satellitegraphs/_index.md +++ b/site/content/arangodb/3.11/graphs/satellitegraphs/_index.md @@ -5,7 +5,7 @@ weight: 90 description: >- Graphs synchronously replicated to all servers, available in the Enterprise Edition --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ## What is a SatelliteGraph? diff --git a/site/content/arangodb/3.11/graphs/smartgraphs/_index.md b/site/content/arangodb/3.11/graphs/smartgraphs/_index.md index a9a166b0fe..e3faa431ba 100644 --- a/site/content/arangodb/3.11/graphs/smartgraphs/_index.md +++ b/site/content/arangodb/3.11/graphs/smartgraphs/_index.md @@ -5,7 +5,7 @@ weight: 95 description: >- SmartGraphs enable you to manage graphs at scale using value-based sharding --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} SmartGraphs are specifically targeted at graphs that need scalability and high performance. The way SmartGraphs use the ArangoDB cluster sharding makes it diff --git a/site/content/arangodb/3.11/graphs/smartgraphs/testing-graphs-on-single-server.md b/site/content/arangodb/3.11/graphs/smartgraphs/testing-graphs-on-single-server.md index 5a952b26a6..cb838d8f4e 100644 --- a/site/content/arangodb/3.11/graphs/smartgraphs/testing-graphs-on-single-server.md +++ b/site/content/arangodb/3.11/graphs/smartgraphs/testing-graphs-on-single-server.md @@ -6,7 +6,7 @@ description: >- Simulate SmartGraphs and SatelliteGraphs on a single server to make it easier to port them to an ArangoDB cluster later --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ## General idea diff --git a/site/content/arangodb/3.11/index-and-search/analyzers.md b/site/content/arangodb/3.11/index-and-search/analyzers.md index 480260c4ed..28191e7016 100644 --- a/site/content/arangodb/3.11/index-and-search/analyzers.md +++ b/site/content/arangodb/3.11/index-and-search/analyzers.md @@ -1074,7 +1074,7 @@ db._query(`LET str = 'Test\twith An_EMAIL-address+123@example.org\n蝴蝶。\u20 ### `minhash` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.10.0</small> @@ -1117,7 +1117,7 @@ db._query(` ### `classification` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.10.0</small> @@ -1177,7 +1177,7 @@ db._query(`LET str = "Which baking dish is best to bake a banana bread ?" ### `nearest_neighbors` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.10.0</small> @@ -1357,7 +1357,7 @@ db._query(`LET point = GEO_POINT(6.93, 50.94) ### `geo_s2` -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.10.5</small> diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/arangosearch-views-reference.md b/site/content/arangodb/3.11/index-and-search/arangosearch/arangosearch-views-reference.md index ca4e877a28..588bb9e4df 100644 --- a/site/content/arangodb/3.11/index-and-search/arangosearch/arangosearch-views-reference.md +++ b/site/content/arangodb/3.11/index-and-search/arangosearch/arangosearch-views-reference.md @@ -214,7 +214,7 @@ During view modification the following directives apply: - **cache** (_optional_; type: `boolean`; default: `false`) - {{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} + {{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.9.5, v3.10.2</small> @@ -257,7 +257,7 @@ During view modification the following directives apply: - **primarySortCache** (_optional_; type: `boolean`; default: `false`; _immutable_) - {{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} + {{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.9.6, v3.10.2</small> @@ -276,7 +276,7 @@ During view modification the following directives apply: - **primaryKeyCache** (_optional_; type: `boolean`; default: `false`; _immutable_) - {{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} + {{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.9.6, v3.10.2</small> diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/nested-search.md b/site/content/arangodb/3.11/index-and-search/arangosearch/nested-search.md index f126935cf6..563adf1d58 100644 --- a/site/content/arangodb/3.11/index-and-search/arangosearch/nested-search.md +++ b/site/content/arangodb/3.11/index-and-search/arangosearch/nested-search.md @@ -7,7 +7,7 @@ description: >- each, and define how often these conditions should be fulfilled for the entire array --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} By default, `arangosearch` Views index arrays as if the parent attribute had multiple values at once. This is also supported for `search-alias` Views by enabling diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/performance.md b/site/content/arangodb/3.11/index-and-search/arangosearch/performance.md index 8c22182149..f40d4834c7 100644 --- a/site/content/arangodb/3.11/index-and-search/arangosearch/performance.md +++ b/site/content/arangodb/3.11/index-and-search/arangosearch/performance.md @@ -536,7 +536,7 @@ Also see [Faceted Search with ArangoSearch](faceted-search.md). ## Field normalization value caching and caching of Geo Analyzer auxiliary data -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.9.5, v3.10.2</small> @@ -622,7 +622,7 @@ use normalization for a good scoring behavior. ## Primary key caching -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} <small>Introduced in: v3.9.6, v3.10.2</small> diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/search-highlighting.md b/site/content/arangodb/3.11/index-and-search/arangosearch/search-highlighting.md index 63e8ea7176..aaa11fb3c4 100644 --- a/site/content/arangodb/3.11/index-and-search/arangosearch/search-highlighting.md +++ b/site/content/arangodb/3.11/index-and-search/arangosearch/search-highlighting.md @@ -6,7 +6,7 @@ description: >- You can retrieve the positions of matches within strings when querying Views with ArangoSearch, to highlight what was found in search results --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ArangoSearch lets you search for terms and phrases in full-text, and more. It only returns matching documents, however. With search highlighting, you can diff --git a/site/content/arangodb/3.11/operations/administration/user-management/_index.md b/site/content/arangodb/3.11/operations/administration/user-management/_index.md index 7e9cb977a4..a07198e053 100644 --- a/site/content/arangodb/3.11/operations/administration/user-management/_index.md +++ b/site/content/arangodb/3.11/operations/administration/user-management/_index.md @@ -408,7 +408,7 @@ or the web interface. ### LDAP Users -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} ArangoDB supports LDAP as an external authentication system. For detailed information please have look into the diff --git a/site/content/arangodb/3.11/operations/backup-and-restore.md b/site/content/arangodb/3.11/operations/backup-and-restore.md index 30bcb6c940..483260b65e 100644 --- a/site/content/arangodb/3.11/operations/backup-and-restore.md +++ b/site/content/arangodb/3.11/operations/backup-and-restore.md @@ -63,7 +63,7 @@ Logical backups can be created and restored with the tools ## Hot Backups -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} Hot backup and restore associated operations can be performed with the [_arangobackup_](../components/tools/arangobackup/_index.md) client tool and the diff --git a/site/content/arangodb/3.11/operations/security/encryption-at-rest.md b/site/content/arangodb/3.11/operations/security/encryption-at-rest.md index 8a958d9be1..34a2b37ab2 100644 --- a/site/content/arangodb/3.11/operations/security/encryption-at-rest.md +++ b/site/content/arangodb/3.11/operations/security/encryption-at-rest.md @@ -6,7 +6,7 @@ description: >- You can secure the physical storage media of an ArangoDB deployment by letting it encrypt the database directories --- -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} When you store sensitive data in your ArangoDB database, you want to protect that data under all circumstances. At runtime you will protect it with SSL diff --git a/site/content/arangodb/3.11/release-notes/version-3.6/whats-new-in-3-6.md b/site/content/arangodb/3.11/release-notes/version-3.6/whats-new-in-3-6.md index 02b89c84bb..b25cb21b69 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.6/whats-new-in-3-6.md +++ b/site/content/arangodb/3.11/release-notes/version-3.6/whats-new-in-3-6.md @@ -562,7 +562,7 @@ operand can be a collection or another View. ## OneShard -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} Not all use cases require horizontal scalability. In such cases, a OneShard deployment offers a practicable solution that enables significant performance diff --git a/site/content/arangodb/3.12/release-notes/version-3.6/whats-new-in-3-6.md b/site/content/arangodb/3.12/release-notes/version-3.6/whats-new-in-3-6.md index b099ff228c..0723591910 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.6/whats-new-in-3-6.md +++ b/site/content/arangodb/3.12/release-notes/version-3.6/whats-new-in-3-6.md @@ -562,7 +562,7 @@ operand can be a collection or another View. ## OneShard -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} Not all use cases require horizontal scalability. In such cases, a OneShard deployment offers a practicable solution that enables significant performance diff --git a/site/content/arangodb/3.13/release-notes/version-3.6/whats-new-in-3-6.md b/site/content/arangodb/3.13/release-notes/version-3.6/whats-new-in-3-6.md index b099ff228c..0723591910 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.6/whats-new-in-3-6.md +++ b/site/content/arangodb/3.13/release-notes/version-3.6/whats-new-in-3-6.md @@ -562,7 +562,7 @@ operand can be a collection or another View. ## OneShard -{{< tag "ArangoDB Enterprise Edition" "ArangoGraph" >}} +{{< tag "ArangoDB Enterprise Edition" "AMP" >}} Not all use cases require horizontal scalability. In such cases, a OneShard deployment offers a practicable solution that enables significant performance diff --git a/site/content/data-platform/graph-visualizer.md b/site/content/data-platform/graph-visualizer.md index e3ae2c0a2d..c20aad4fa6 100644 --- a/site/content/data-platform/graph-visualizer.md +++ b/site/content/data-platform/graph-visualizer.md @@ -5,7 +5,7 @@ weight: 10 description: >- Visually explore and interact with your ArangoDB graphs through an intuitive interface --- -{{< tag "ArangoDB Platform" >}} +{{< tag "Data Platform" >}} {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get diff --git a/site/content/gen-ai/graph-analytics.md b/site/content/gen-ai/graph-analytics.md index 3edcca4dd5..6692559834 100644 --- a/site/content/gen-ai/graph-analytics.md +++ b/site/content/gen-ai/graph-analytics.md @@ -8,7 +8,7 @@ description: | aliases: - ../data-science/graph-analytics --- -{{< tag "ArangoDB Platform" "ArangoGraph" >}} +{{< tag "GenAI Data Platform" "AMP" >}} Graph analytics is a branch of data science that deals with analyzing information networks known as graphs, and extracting information from the data relationships. @@ -136,7 +136,7 @@ The interface for managing the engines depends on the environment you use: ### GenAI service -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} GAEs are deployed and deleted via the [GenAI service](services/gen-ai.md) in the ArangoDB Platform. @@ -185,7 +185,7 @@ curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X DELETE https://127.0.0.1:8529 ### Management API -{{< tag "ArangoGraph" >}} +{{< tag "AMP" >}} GAEs are deployed and deleted with the Management API for graph analytics on the Arango Managed Platform (AMP). You can also list the available engine sizes and diff --git a/site/content/gen-ai/graph-to-ai.md b/site/content/gen-ai/graph-to-ai.md index b262997bb2..70ada16d46 100644 --- a/site/content/gen-ai/graph-to-ai.md +++ b/site/content/gen-ai/graph-to-ai.md @@ -10,7 +10,7 @@ aliases: --- - [Link to 3.12](../arangodb/3.12/aql/_index.md) -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get diff --git a/site/content/gen-ai/graphml/_index.md b/site/content/gen-ai/graphml/_index.md index 241db624b9..4182ba71ba 100644 --- a/site/content/gen-ai/graphml/_index.md +++ b/site/content/gen-ai/graphml/_index.md @@ -7,7 +7,7 @@ description: >- aliases: - arangographml --- -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get diff --git a/site/content/gen-ai/graphml/notebooks-api.md b/site/content/gen-ai/graphml/notebooks-api.md index 008d079d97..ad0f9ad2ea 100644 --- a/site/content/gen-ai/graphml/notebooks-api.md +++ b/site/content/gen-ai/graphml/notebooks-api.md @@ -10,7 +10,7 @@ aliases: - ../arangographml-getting-started-with-arangographml --- -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} The ArangoDB Platform provides an easy-to-use & scalable interface to run Graph Machine Learning on ArangoDB data. Since all the orchestration and Machine Learning logic is diff --git a/site/content/gen-ai/graphml/quickstart.md b/site/content/gen-ai/graphml/quickstart.md index 4473aafe0f..32df857ecf 100644 --- a/site/content/gen-ai/graphml/quickstart.md +++ b/site/content/gen-ai/graphml/quickstart.md @@ -8,7 +8,7 @@ description: >- aliases: - ../arangographml/deploy --- -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} ## Web interface versus Jupyter Notebooks diff --git a/site/content/gen-ai/graphml/ui.md b/site/content/gen-ai/graphml/ui.md index 83e736120c..7712acf7e7 100644 --- a/site/content/gen-ai/graphml/ui.md +++ b/site/content/gen-ai/graphml/ui.md @@ -6,7 +6,7 @@ description: >- Learn how to create, configure, and run a full machine learning workflow for GraphML in four steps using the features in the ArangoDB web interface --- -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} ## The GraphML workflow in the web interface diff --git a/site/content/gen-ai/graphrag/_index.md b/site/content/gen-ai/graphrag/_index.md index 9bde91a90d..f41f853153 100644 --- a/site/content/gen-ai/graphrag/_index.md +++ b/site/content/gen-ai/graphrag/_index.md @@ -8,7 +8,7 @@ description: >- aliases: llm-knowledge-graphs --- -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get diff --git a/site/content/gen-ai/graphrag/tutorial-notebook.md b/site/content/gen-ai/graphrag/tutorial-notebook.md index 45a743d761..b8c8e5fbcb 100644 --- a/site/content/gen-ai/graphrag/tutorial-notebook.md +++ b/site/content/gen-ai/graphrag/tutorial-notebook.md @@ -5,7 +5,7 @@ description: >- Building a GraphRAG pipeline using ArangoDB's integrated notebook servers weight: 10 --- -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get diff --git a/site/content/gen-ai/graphrag/web-interface.md b/site/content/gen-ai/graphrag/web-interface.md index b7559e0149..9a19485f1d 100644 --- a/site/content/gen-ai/graphrag/web-interface.md +++ b/site/content/gen-ai/graphrag/web-interface.md @@ -6,7 +6,7 @@ description: >- Learn how to create, configure, and run a full GraphRAG workflow in four steps using the Platform web interface --- -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get diff --git a/site/content/gen-ai/notebook-servers.md b/site/content/gen-ai/notebook-servers.md index bddbee6cb7..1efb5543e5 100644 --- a/site/content/gen-ai/notebook-servers.md +++ b/site/content/gen-ai/notebook-servers.md @@ -7,7 +7,7 @@ description: >- aliases: - arangograph-notebooks --- -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get diff --git a/site/content/gen-ai/services/gen-ai.md b/site/content/gen-ai/services/gen-ai.md index 03504ec499..85892df2a4 100644 --- a/site/content/gen-ai/services/gen-ai.md +++ b/site/content/gen-ai/services/gen-ai.md @@ -6,7 +6,7 @@ description: >- for GraphRAG in your Kubernetes cluster weight: 5 --- -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get diff --git a/site/content/gen-ai/services/importer.md b/site/content/gen-ai/services/importer.md index afb60fe036..8e7130d1c7 100644 --- a/site/content/gen-ai/services/importer.md +++ b/site/content/gen-ai/services/importer.md @@ -6,7 +6,7 @@ description: >- making it easier to analyze and understand complex information weight: 10 --- -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get diff --git a/site/content/gen-ai/services/mlflow.md b/site/content/gen-ai/services/mlflow.md index e3efccc32a..a675358d5e 100644 --- a/site/content/gen-ai/services/mlflow.md +++ b/site/content/gen-ai/services/mlflow.md @@ -6,7 +6,7 @@ description: >- full machine learning lifecycle into the ArangoDB Platform weight: 25 --- -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get diff --git a/site/content/gen-ai/services/retriever.md b/site/content/gen-ai/services/retriever.md index 447def28df..319ff792bb 100644 --- a/site/content/gen-ai/services/retriever.md +++ b/site/content/gen-ai/services/retriever.md @@ -7,7 +7,7 @@ description: >- weight: 15 --- -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get diff --git a/site/content/gen-ai/services/triton-inference-server.md b/site/content/gen-ai/services/triton-inference-server.md index 23f1c2894c..53947edd68 100644 --- a/site/content/gen-ai/services/triton-inference-server.md +++ b/site/content/gen-ai/services/triton-inference-server.md @@ -5,7 +5,7 @@ description: >- Enable your GraphRAG pipeline to use private LLMs via Triton Inference Server weight: 30 --- -{{< tag "ArangoDB Platform" >}} +{{< tag "GenAI Data Platform" >}} {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get From f43d57354817ee5c0052b91d8ff3f0cf5353a9b8 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Tue, 14 Oct 2025 13:52:16 +0200 Subject: [PATCH 22/69] Add EE tag tooltip for legacy content --- site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html | 1 + 1 file changed, 1 insertion(+) diff --git a/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html b/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html index 9aa55544af..9244cbf9dc 100644 --- a/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html +++ b/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html @@ -3,6 +3,7 @@ "Data Platform" "This feature is available in the Arango Data Platform and GenAI Data Platform" "GenAI Data Platform" "This feature is available in the Arango GenAI Data Platform but not the Data Platform" "arangosh" "This feature is available in the ArangoDB Shell" + "ArangoDB Enterprise Edition" "This feature is available in the Enterprise Edition but not the Community Edition of ArangoDB" -}} <p class="labels"> {{ range $.Params }} From 8c1ed3429e5dbb75c2307aab933e401df2991d43 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Tue, 14 Oct 2025 14:05:24 +0200 Subject: [PATCH 23/69] Remove unnecessary tags --- README.md | 14 ++++++-------- site/content/data-platform/graph-visualizer.md | 2 -- site/content/gen-ai/graph-analytics.md | 2 -- site/content/gen-ai/graph-to-ai.md | 2 -- site/content/gen-ai/graphml/_index.md | 2 -- site/content/gen-ai/graphml/notebooks-api.md | 3 --- site/content/gen-ai/graphml/quickstart.md | 2 -- site/content/gen-ai/graphml/ui.md | 2 -- site/content/gen-ai/graphrag/_index.md | 2 -- site/content/gen-ai/graphrag/tutorial-notebook.md | 2 -- site/content/gen-ai/graphrag/web-interface.md | 2 -- site/content/gen-ai/notebook-servers.md | 2 -- site/content/gen-ai/services/gen-ai.md | 2 -- site/content/gen-ai/services/importer.md | 2 -- site/content/gen-ai/services/mlflow.md | 2 -- site/content/gen-ai/services/retriever.md | 3 --- .../gen-ai/services/triton-inference-server.md | 2 -- 17 files changed, 6 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index e1e35f9adf..530c4c1c7e 100644 --- a/README.md +++ b/README.md @@ -674,15 +674,13 @@ deprecated features in the same manner with `Deprecated in: ...`. ### Environment remarks Pages and sections about features that are only available in certain environments -such as the GenAI Suite, the Data Platform, the Arango Managed Platform (AMP), or the -ArangoDB Shell should indicate where they are available using the `tag` shortcode. +such as in ArangoDB Shell should indicate where they are available using the +`tag` shortcode. -In the Data Platform (and therefore also in the GenAI Data Suite) and -Arango Managed Platform but not in ArangoDB: - -```markdown -{{< tag "Data Platform" "AMP" >}} -``` +Features exclusive to the Data Platform, GenAI Data Platform, +Arango Managed Platform (AMP), and ArangoDB generally don't need to be tagged +because they are in dedicated parts of the documentation. However, if there are +subsections with different procedures, each can be tagged accordingly. In the GenAI Data Platform only: diff --git a/site/content/data-platform/graph-visualizer.md b/site/content/data-platform/graph-visualizer.md index c20aad4fa6..e429e687fc 100644 --- a/site/content/data-platform/graph-visualizer.md +++ b/site/content/data-platform/graph-visualizer.md @@ -5,8 +5,6 @@ weight: 10 description: >- Visually explore and interact with your ArangoDB graphs through an intuitive interface --- -{{< tag "Data Platform" >}} - {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with diff --git a/site/content/gen-ai/graph-analytics.md b/site/content/gen-ai/graph-analytics.md index 6692559834..3108fb1fbc 100644 --- a/site/content/gen-ai/graph-analytics.md +++ b/site/content/gen-ai/graph-analytics.md @@ -8,8 +8,6 @@ description: | aliases: - ../data-science/graph-analytics --- -{{< tag "GenAI Data Platform" "AMP" >}} - Graph analytics is a branch of data science that deals with analyzing information networks known as graphs, and extracting information from the data relationships. It ranges from basic measures that characterize graphs, over PageRank, to complex diff --git a/site/content/gen-ai/graph-to-ai.md b/site/content/gen-ai/graph-to-ai.md index 70ada16d46..b8bee3415d 100644 --- a/site/content/gen-ai/graph-to-ai.md +++ b/site/content/gen-ai/graph-to-ai.md @@ -10,8 +10,6 @@ aliases: --- - [Link to 3.12](../arangodb/3.12/aql/_index.md) -{{< tag "GenAI Data Platform" >}} - {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with diff --git a/site/content/gen-ai/graphml/_index.md b/site/content/gen-ai/graphml/_index.md index 4182ba71ba..c1262bbdcc 100644 --- a/site/content/gen-ai/graphml/_index.md +++ b/site/content/gen-ai/graphml/_index.md @@ -7,8 +7,6 @@ description: >- aliases: - arangographml --- -{{< tag "GenAI Data Platform" >}} - {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with diff --git a/site/content/gen-ai/graphml/notebooks-api.md b/site/content/gen-ai/graphml/notebooks-api.md index ad0f9ad2ea..f34d9121b6 100644 --- a/site/content/gen-ai/graphml/notebooks-api.md +++ b/site/content/gen-ai/graphml/notebooks-api.md @@ -9,9 +9,6 @@ aliases: - ../arangographml/getting-started - ../arangographml-getting-started-with-arangographml --- - -{{< tag "GenAI Data Platform" >}} - The ArangoDB Platform provides an easy-to-use & scalable interface to run Graph Machine Learning on ArangoDB data. Since all the orchestration and Machine Learning logic is managed by ArangoDB, all that is typically required are JSON specifications outlining diff --git a/site/content/gen-ai/graphml/quickstart.md b/site/content/gen-ai/graphml/quickstart.md index 32df857ecf..db81915e98 100644 --- a/site/content/gen-ai/graphml/quickstart.md +++ b/site/content/gen-ai/graphml/quickstart.md @@ -8,8 +8,6 @@ description: >- aliases: - ../arangographml/deploy --- -{{< tag "GenAI Data Platform" >}} - ## Web interface versus Jupyter Notebooks The ArangoDB Platform provides enterprise-ready Graph Machine Learning in two options, diff --git a/site/content/gen-ai/graphml/ui.md b/site/content/gen-ai/graphml/ui.md index 7712acf7e7..8c4e43024e 100644 --- a/site/content/gen-ai/graphml/ui.md +++ b/site/content/gen-ai/graphml/ui.md @@ -6,8 +6,6 @@ description: >- Learn how to create, configure, and run a full machine learning workflow for GraphML in four steps using the features in the ArangoDB web interface --- -{{< tag "GenAI Data Platform" >}} - ## The GraphML workflow in the web interface The entire process is organized into sequential steps within a **Project**, diff --git a/site/content/gen-ai/graphrag/_index.md b/site/content/gen-ai/graphrag/_index.md index f41f853153..8588300420 100644 --- a/site/content/gen-ai/graphrag/_index.md +++ b/site/content/gen-ai/graphrag/_index.md @@ -8,8 +8,6 @@ description: >- aliases: llm-knowledge-graphs --- -{{< tag "GenAI Data Platform" >}} - {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with diff --git a/site/content/gen-ai/graphrag/tutorial-notebook.md b/site/content/gen-ai/graphrag/tutorial-notebook.md index b8c8e5fbcb..1bbcfebf8d 100644 --- a/site/content/gen-ai/graphrag/tutorial-notebook.md +++ b/site/content/gen-ai/graphrag/tutorial-notebook.md @@ -5,8 +5,6 @@ description: >- Building a GraphRAG pipeline using ArangoDB's integrated notebook servers weight: 10 --- -{{< tag "GenAI Data Platform" >}} - {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with diff --git a/site/content/gen-ai/graphrag/web-interface.md b/site/content/gen-ai/graphrag/web-interface.md index 9a19485f1d..47e76c67b4 100644 --- a/site/content/gen-ai/graphrag/web-interface.md +++ b/site/content/gen-ai/graphrag/web-interface.md @@ -6,8 +6,6 @@ description: >- Learn how to create, configure, and run a full GraphRAG workflow in four steps using the Platform web interface --- -{{< tag "GenAI Data Platform" >}} - {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with diff --git a/site/content/gen-ai/notebook-servers.md b/site/content/gen-ai/notebook-servers.md index 1efb5543e5..27a7896fba 100644 --- a/site/content/gen-ai/notebook-servers.md +++ b/site/content/gen-ai/notebook-servers.md @@ -7,8 +7,6 @@ description: >- aliases: - arangograph-notebooks --- -{{< tag "GenAI Data Platform" >}} - {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with diff --git a/site/content/gen-ai/services/gen-ai.md b/site/content/gen-ai/services/gen-ai.md index 85892df2a4..e6bd266480 100644 --- a/site/content/gen-ai/services/gen-ai.md +++ b/site/content/gen-ai/services/gen-ai.md @@ -6,8 +6,6 @@ description: >- for GraphRAG in your Kubernetes cluster weight: 5 --- -{{< tag "GenAI Data Platform" >}} - {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with diff --git a/site/content/gen-ai/services/importer.md b/site/content/gen-ai/services/importer.md index 8e7130d1c7..955f1a68d2 100644 --- a/site/content/gen-ai/services/importer.md +++ b/site/content/gen-ai/services/importer.md @@ -6,8 +6,6 @@ description: >- making it easier to analyze and understand complex information weight: 10 --- -{{< tag "GenAI Data Platform" >}} - {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with diff --git a/site/content/gen-ai/services/mlflow.md b/site/content/gen-ai/services/mlflow.md index a675358d5e..84d43a6e70 100644 --- a/site/content/gen-ai/services/mlflow.md +++ b/site/content/gen-ai/services/mlflow.md @@ -6,8 +6,6 @@ description: >- full machine learning lifecycle into the ArangoDB Platform weight: 25 --- -{{< tag "GenAI Data Platform" >}} - {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with diff --git a/site/content/gen-ai/services/retriever.md b/site/content/gen-ai/services/retriever.md index 319ff792bb..9c1f03c0cd 100644 --- a/site/content/gen-ai/services/retriever.md +++ b/site/content/gen-ai/services/retriever.md @@ -6,9 +6,6 @@ description: >- retrieval from knowledge graphs created by the Importer service weight: 15 --- - -{{< tag "GenAI Data Platform" >}} - {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with diff --git a/site/content/gen-ai/services/triton-inference-server.md b/site/content/gen-ai/services/triton-inference-server.md index 53947edd68..e1a7ca4112 100644 --- a/site/content/gen-ai/services/triton-inference-server.md +++ b/site/content/gen-ai/services/triton-inference-server.md @@ -5,8 +5,6 @@ description: >- Enable your GraphRAG pipeline to use private LLMs via Triton Inference Server weight: 30 --- -{{< tag "GenAI Data Platform" >}} - {{< tip >}} The ArangoDB Platform & GenAI Suite is available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with From 24b8aa76abb6614a3e90fa811009e904f0bceaee Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Tue, 14 Oct 2025 16:05:43 +0200 Subject: [PATCH 24/69] Move About ArangoDB out of versioned folder to ArangoDB top-level and move Features and Use cases under it --- site/content/arangodb/3.10/_index.md | 2 +- site/content/arangodb/3.11/_index.md | 2 +- site/content/arangodb/3.12/_index.md | 2 +- site/content/arangodb/3.12/about/_index.md | 70 ------ .../3.12/{about => }/features/_index.md | 18 +- .../features/highlights-by-version.md | 234 +++++++++--------- .../3.12/{about => }/features/list.md | 156 ++++++------ .../administration/license-management.md | 2 +- .../community-to-enterprise-upgrade.md | 2 +- .../arangodb/3.12/{about => }/use-cases.md | 28 +-- site/content/arangodb/3.13/_index.md | 2 +- site/content/arangodb/3.13/about/_index.md | 70 ------ .../3.13/{about => }/features/_index.md | 18 +- .../features/highlights-by-version.md | 234 +++++++++--------- .../3.13/{about => }/features/list.md | 156 ++++++------ .../administration/license-management.md | 2 +- .../arangodb/3.13/{about => }/use-cases.md | 28 +-- site/content/arangodb/_index.md | 73 +++++- 18 files changed, 510 insertions(+), 589 deletions(-) delete mode 100644 site/content/arangodb/3.12/about/_index.md rename site/content/arangodb/3.12/{about => }/features/_index.md (89%) rename site/content/arangodb/{3.13/about => 3.12}/features/highlights-by-version.md (55%) rename site/content/arangodb/3.12/{about => }/features/list.md (65%) rename site/content/arangodb/3.12/{about => }/use-cases.md (76%) delete mode 100644 site/content/arangodb/3.13/about/_index.md rename site/content/arangodb/3.13/{about => }/features/_index.md (89%) rename site/content/arangodb/{3.12/about => 3.13}/features/highlights-by-version.md (55%) rename site/content/arangodb/3.13/{about => }/features/list.md (65%) rename site/content/arangodb/3.13/{about => }/use-cases.md (76%) diff --git a/site/content/arangodb/3.10/_index.md b/site/content/arangodb/3.10/_index.md index 5322d252a7..0f0adc5234 100644 --- a/site/content/arangodb/3.10/_index.md +++ b/site/content/arangodb/3.10/_index.md @@ -1,7 +1,7 @@ --- title: Recommended Resources menuTitle: '3.10' -weight: 1 +weight: 99 layout: default --- {{< cloudbanner >}} diff --git a/site/content/arangodb/3.11/_index.md b/site/content/arangodb/3.11/_index.md index 26db7a1f0d..aacc1445b3 100644 --- a/site/content/arangodb/3.11/_index.md +++ b/site/content/arangodb/3.11/_index.md @@ -1,7 +1,7 @@ --- title: Recommended Resources menuTitle: '3.11' -weight: 1 +weight: 98 layout: default --- {{< cloudbanner >}} diff --git a/site/content/arangodb/3.12/_index.md b/site/content/arangodb/3.12/_index.md index 9fe6125694..2eab52e422 100644 --- a/site/content/arangodb/3.12/_index.md +++ b/site/content/arangodb/3.12/_index.md @@ -1,7 +1,7 @@ --- title: Recommended Resources menuTitle: '3.12' -weight: 1 +weight: 97 layout: default --- {{< cloudbanner >}} diff --git a/site/content/arangodb/3.12/about/_index.md b/site/content/arangodb/3.12/about/_index.md deleted file mode 100644 index b998bac24e..0000000000 --- a/site/content/arangodb/3.12/about/_index.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: What is ArangoDB? -menuTitle: About ArangoDB -weight: 5 -description: >- - ArangoDB is a scalable graph database system to drive value from connected - data, faster -aliases: - - introduction - - introduction/about-arangodb ---- -![ArangoDB Overview Diagram](../../../images/arangodb-overview-diagram.png) - -ArangoDB combines the analytical power of native graphs with an integrated -search engine, JSON support, and a variety of data access patterns via a single, -composable query language. - -ArangoDB is available in a community and a commercial [edition](features/_index.md). -You can use it for on-premises deployments, as well as a fully managed -cloud service, the [Arango Managed Platform (AMP)](../../../amp/_index.md). - -## What are Graphs? - -Graphs are information networks composed of nodes and edges. - -![An arrow labeled as "Edge" pointing from one circle to another, both labeled "Node"](../../../images/data-model-graph-relation-abstract-edge.png) - -A social network is a common example of a graph. People are represented by nodes -and their friendships by relations. - -![Two circles labeled "Mary" and "John", with an arrow labeled "isFriendOf" pointing from "Mary" to "John"](../../../images/data-model-graph-relation-concrete.png) - -Nodes are also called vertices (singular: vertex), and edges are relations that -connect nodes. -A node typically represents a specific entity (a person, a book, a sensor -reading, etc.) and an edge defines how one entity relates to another. - -![Three circles labeled "Mary", "Book", and "John", with an arrow labeled "bought" from "Mary" to "Book" and an arrow labeled "isFriendOf" from "Mary" to "John"](../../../images/data-model-graph-relations.png) - -This paradigm of storing data feels natural because it closely matches the -cognitive model of humans. It is an expressive data model that allows you to -represent many problem domains and solve them with semantic queries and graph -analytics. - -## Beyond Graphs - -Not everything is a graph use case. ArangoDB lets you equally work with -structured, semi-structured, and unstructured data in the form of schema-free -JSON objects, without having to connect these objects to form a graph. - -![Person Mary, Book ArangoDB](../../../images/data-model-document.png) - -Depending on your needs, you may mix graphs and unconnected data. -ArangoDB is designed from the ground up to support multiple data models with a -single, composable query language. - -```aql -FOR book IN Books - FILTER book.title == "Arango" - FOR person IN 2..2 INBOUND book transferred, OUTBOUND knows - RETURN person.name -``` - -ArangoDB also comes with an integrated search engine for information retrieval, -such as full-text search with relevance ranking. - -ArangoDB is written in C++ for high performance and built to work at scale, in -the cloud or on-premises. - -<!-- deployment options, move from features page, on-prem vs cloud? --> diff --git a/site/content/arangodb/3.12/about/features/_index.md b/site/content/arangodb/3.12/features/_index.md similarity index 89% rename from site/content/arangodb/3.12/about/features/_index.md rename to site/content/arangodb/3.12/features/_index.md index 674e603252..85b1f4bdde 100644 --- a/site/content/arangodb/3.12/about/features/_index.md +++ b/site/content/arangodb/3.12/features/_index.md @@ -1,7 +1,7 @@ --- title: Features and Capabilities menuTitle: Features -weight: 20 +weight: 10 description: >- ArangoDB is a graph database with a powerful set of features for data management and analytics, supported by a rich ecosystem of integrations and drivers @@ -23,7 +23,7 @@ See the full [Feature list of the ArangoDB database system](list.md). For a scalable architecture based on Kubernetes that supports the full offering of ArangoDB including graph-powered machine learning and GenAI features, see -the [Feature list of the ArangoDB Platform](../../../../data-platform/about/features.md). +the [Feature list of the ArangoDB Platform](../../../data-platform/about/features.md). ## On-premises versus Cloud @@ -43,7 +43,7 @@ variety of support plans to meet your needs. - Highly secure with encryption at transit and at rest - Includes elastic scalability for all deployment models (OneShard and Sharded clusters) -To learn more, go to the [ArangoGraph documentation](../../../../amp/_index.md). +To learn more, go to the [ArangoGraph documentation](../../../amp/_index.md). ### Self-managed in the cloud @@ -51,10 +51,10 @@ ArangoDB can be self-deployed on AWS or other cloud platforms, too. However, whe using a self-managed deployment, you take full control of managing the resources needed to run it in the cloud. This involves tasks such as configuring, provisioning, and monitoring the system. For more details, see -[self-deploying ArangoDB in the cloud](../../deploy/in-the-cloud.md). +[self-deploying ArangoDB in the cloud](../deploy/in-the-cloud.md). ArangoDB supports Kubernetes through its official -[Kubernetes Operator](../../deploy/kubernetes.md) that allows you to easily +[Kubernetes Operator](../deploy/kubernetes.md) that allows you to easily deploy and manage clusters within a Kubernetes environment. ### On-premises @@ -66,16 +66,16 @@ services. You can install ArangoDB locally by downloading and running the [official packages](https://arangodb.com/download/) or run it using -[Docker images](../../operations/installation/docker.md). +[Docker images](../operations/installation/docker.md). You can deploy it on-premises as a -[single server](../../deploy/single-instance/_index.md) -or as a [cluster](../../deploy/cluster/_index.md) +[single server](../deploy/single-instance/_index.md) +or as a [cluster](../deploy/cluster/_index.md) comprised of multiple nodes with synchronous replication and automatic failover for high availability and resilience. ArangoDB also integrates with Kubernetes, offering a -[Kubernetes Operator](../../deploy/kubernetes.md) that lets you deploy in your +[Kubernetes Operator](../deploy/kubernetes.md) that lets you deploy in your Kubernetes cluster. ## ArangoDB Editions diff --git a/site/content/arangodb/3.13/about/features/highlights-by-version.md b/site/content/arangodb/3.12/features/highlights-by-version.md similarity index 55% rename from site/content/arangodb/3.13/about/features/highlights-by-version.md rename to site/content/arangodb/3.12/features/highlights-by-version.md index c69f40df1e..bb3db66447 100644 --- a/site/content/arangodb/3.13/about/features/highlights-by-version.md +++ b/site/content/arangodb/3.12/features/highlights-by-version.md @@ -5,14 +5,8 @@ weight: 15 description: >- The most notable features of the ArangoDB core database system, grouped by version aliases: - - ../../introduction/features/highlights-by-version + - ../introduction/features/highlights-by-version --- -## Version 3.13 - -- - -Also see [What's New in 3.13](../../release-notes/version-3.13/whats-new-in-3-13.md). - ## Version 3.12 {{< info >}} @@ -23,240 +17,240 @@ See [ArangoDB Editions](_index.md#arangodb-editions) for details. **All Editions** -- [**Improved memory accounting**](../../release-notes/version-3.12/whats-new-in-3-12.md#improved-memory-accounting-and-usage): +- [**Improved memory accounting**](../release-notes/version-3.12/whats-new-in-3-12.md#improved-memory-accounting-and-usage): Better tracking and observability of memory consumption for ArangoDB deployments and reduced memory usage. -- [**`wildcard` Analyzer**](../../index-and-search/analyzers.md#wildcard): +- [**`wildcard` Analyzer**](../index-and-search/analyzers.md#wildcard): Accelerate `LIKE` searches with `_` and `%` wildcards against Views and inverted indexes with _n_-grams to quickly find candidate matches. -- [**Multi-dimensional indexes**](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): +- [**Multi-dimensional indexes**](../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): An index type to efficiently intersect multiple range queries, like finding all appointments that intersect a time range. Optionally with prefix fields, with support for using it as vertex-centric index in graph traversals. -- [**External versioning**](../../release-notes/version-3.12/whats-new-in-3-12.md#external-versioning-support): +- [**External versioning**](../release-notes/version-3.12/whats-new-in-3-12.md#external-versioning-support): Specify any top-level attribute to compare whether the version number is higher than the currently stored one when updating or replacing documents. -- [**Improved dump performance**](../../release-notes/version-3.12/whats-new-in-3-12.md#improved-dump-performance-and-size) +- [**Improved dump performance**](../release-notes/version-3.12/whats-new-in-3-12.md#improved-dump-performance-and-size) Create logical backups faster with arangodump thanks to parallel dumping at the shard level, as well as transfer compression and file splitting. -- [**Request and response compression**](../../release-notes/version-3.12/whats-new-in-3-12.md#transparent-compression-of-requests-and-responses-between-arangodb-servers-and-client-tools) +- [**Request and response compression**](../release-notes/version-3.12/whats-new-in-3-12.md#transparent-compression-of-requests-and-responses-between-arangodb-servers-and-client-tools) Speed up data transfers and reduce traffic with transparent compression of requests and responses between ArangoDB servers and client tools. {{% comment %}} Experimental feature in v3.12.4 -- [**Query plan caching**](../../aql/execution-and-performance/caching-query-plans.md) +- [**Query plan caching**](../aql/execution-and-performance/caching-query-plans.md) Reduce the total time for processing queries by avoiding to parse, plan, and optimize the same queries over and over again with an AQL execution plan cache. {{% /comment %}} **Enterprise Edition** -- [**ArangoSearch WAND optimization**](../../index-and-search/arangosearch/performance.md#wand-optimization): +- [**ArangoSearch WAND optimization**](../index-and-search/arangosearch/performance.md#wand-optimization): Retrieve search results for the highest-ranking matches from Views faster by defining a list of sort expressions to optimize. -Also see [What's New in 3.12](../../release-notes/version-3.12/whats-new-in-3-12.md). +Also see [What's New in 3.12](../release-notes/version-3.12/whats-new-in-3-12.md). ## Version 3.11 **All Editions** -- [**Parallel gather**](../../release-notes/version-3.11/whats-new-in-3-11.md#parallel-gather): +- [**Parallel gather**](../release-notes/version-3.11/whats-new-in-3-11.md#parallel-gather): Faster, more memory-efficient processing of cluster queries by combining results on Coordinators in parallel. -- [**Index cache refilling**](../../release-notes/version-3.11/whats-new-in-3-11.md#index-cache-refilling): +- [**Index cache refilling**](../release-notes/version-3.11/whats-new-in-3-11.md#index-cache-refilling): Automatically repopulate in-memory index caches after writes that affect an edge index or cache-enabled persistent indexes to maximize cache hits and thus query performance. **Enterprise Edition** -- [**ArangoSearch column cache**](../../release-notes/version-3.10/whats-new-in-3-10.md#arangosearch-column-cache-enterprise-edition): +- [**ArangoSearch column cache**](../release-notes/version-3.10/whats-new-in-3-10.md#arangosearch-column-cache-enterprise-edition): Always cache field normalization values, Geo Analyzer auxiliary data, stored values, primary sort columns, and primary key columns in memory to improve the performance of Views and inverted indexes. -- [**`geo_s2` Analyzer**](../../index-and-search/analyzers.md#geo_s2): +- [**`geo_s2` Analyzer**](../index-and-search/analyzers.md#geo_s2): Efficiently index geo-spatial data using different binary formats, tuning the size on disk, the precision, and query performance. -Also see [What's New in 3.11](../../release-notes/version-3.11/whats-new-in-3-11.md). +Also see [What's New in 3.11](../release-notes/version-3.11/whats-new-in-3-11.md). ## Version 3.10 **All Editions** -- [**Native ARM Support**](../../release-notes/version-3.10/whats-new-in-3-10.md#native-arm-support): +- [**Native ARM Support**](../release-notes/version-3.10/whats-new-in-3-10.md#native-arm-support): Packages for the ARM architecture are now available, including native support for Apple silicon. -- [**Computed Values**](../../concepts/data-structure/documents/computed-values.md): +- [**Computed Values**](../concepts/data-structure/documents/computed-values.md): Persistent document attributes that are generated when documents are created or modified, using an AQL expression. -- [**Inverted indexes**](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md): +- [**Inverted indexes**](../index-and-search/indexing/working-with-indexes/inverted-indexes.md): A new, eventually consistent index type that can accelerate a broad range of queries, providing similar search capabilities as `arangosearch` Views, but defined per collection and simpler to use. -- [**`search-alias` Views**](../../release-notes/version-3.10/whats-new-in-3-10.md#search-alias-views): +- [**`search-alias` Views**](../release-notes/version-3.10/whats-new-in-3-10.md#search-alias-views): Add inverted indexes to `search-alias` Views for searching multiple collections at once, with ranking and search highlighting capabilities, as a lightweight alternative to `arangosearch` Views. - **Persistent indexes**: - An optional [**In-memory Cache**](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values) - for faster lookups and [**Stored Values**](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes) + An optional [**In-memory Cache**](../index-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values) + for faster lookups and [**Stored Values**](../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes) to let persistent indexes cover additional attributes of projections. - **AQL Graph Traversals**: - [All Shortest Paths](../../aql/graphs/all-shortest-paths.md) allows you to query + [All Shortest Paths](../aql/graphs/all-shortest-paths.md) allows you to query for all paths of shortest length between two documents. **Enterprise Edition** -- [**EnterpriseGraphs**](../../graphs/enterprisegraphs/_index.md): A new specialized version of +- [**EnterpriseGraphs**](../graphs/enterprisegraphs/_index.md): A new specialized version of SmartGraphs, with an automatic sharding key selection. -- [**Search highlighting**](../../index-and-search/arangosearch/search-highlighting.md): +- [**Search highlighting**](../index-and-search/arangosearch/search-highlighting.md): Get the substring positions of matched terms, phrases, or _n_-grams. -- [**Nested search**](../../index-and-search/arangosearch/nested-search.md): +- [**Nested search**](../index-and-search/arangosearch/nested-search.md): Match arrays of objects with all the conditions met by a single sub-object, and define for how many of the elements this must be true. - **ArangoSearch**: - New [`minhash` Analyzer](../../index-and-search/analyzers.md#minhash) for locality-sensitive hashing + New [`minhash` Analyzer](../index-and-search/analyzers.md#minhash) for locality-sensitive hashing to approximate the Jaccard similarity, with inverted index and `arangosearch` View support that allows you to implement entity resolution. -- [**Parallelism for sharded graphs**](../../release-notes/version-3.10/whats-new-in-3-10.md#parallelism-for-sharded-graphs-enterprise-edition): +- [**Parallelism for sharded graphs**](../release-notes/version-3.10/whats-new-in-3-10.md#parallelism-for-sharded-graphs-enterprise-edition): Parallel execution of AQL traversal queries with many start nodes for all types of sharded graphs, leading to faster results. -- [**Traversal Projections**](../../release-notes/version-3.10/whats-new-in-3-10.md#traversal-projections-enterprise-edition): +- [**Traversal Projections**](../release-notes/version-3.10/whats-new-in-3-10.md#traversal-projections-enterprise-edition): Optimized data loading for AQL traversal queries if only a few document attributes are accessed. -- [**Read from followers in clusters**](../../develop/http-api/documents.md#read-from-followers): +- [**Read from followers in clusters**](../develop/http-api/documents.md#read-from-followers): Allow dirty reads so that Coordinators can read from any shard replica and not only from the leader, for scaling reads. -Also see [What's New in 3.10](../../release-notes/version-3.10/whats-new-in-3-10.md). +Also see [What's New in 3.10](../release-notes/version-3.10/whats-new-in-3-10.md). ## Version 3.9 **All Editions** - **ArangoSearch**: - New [**Segmentation Analyzer**](../../index-and-search/analyzers.md#segmentation) + New [**Segmentation Analyzer**](../index-and-search/analyzers.md#segmentation) for language-agnostic tokenization of text. - A [**Collation Analyzer**](../../index-and-search/analyzers.md#collation) + A [**Collation Analyzer**](../index-and-search/analyzers.md#collation) to honor the alphabetical order of the specified language in range queries. **Enterprise Edition** -- [**(Disjoint) SmartGraphs using SatelliteCollections**](../../graphs/smartgraphs/_index.md): +- [**(Disjoint) SmartGraphs using SatelliteCollections**](../graphs/smartgraphs/_index.md): SatelliteCollections can be used in (Disjoint) SmartGraphs to enable more local execution of graph queries. -Also see [What's New in 3.9](../../release-notes/version-3.9/whats-new-in-3-9.md). +Also see [What's New in 3.9](../release-notes/version-3.9/whats-new-in-3-9.md). ## Version 3.8 **All Editions** -- [**Weighted traversals**](../../release-notes/version-3.8/whats-new-in-3-8.md#weighted-traversals) - and [**k Paths**](../../release-notes/version-3.8/whats-new-in-3-8.md#k-paths): +- [**Weighted traversals**](../release-notes/version-3.8/whats-new-in-3-8.md#weighted-traversals) + and [**k Paths**](../release-notes/version-3.8/whats-new-in-3-8.md#k-paths): Two new AQL graph traversal methods to emit paths in order of increasing weights and to enumerate all paths between a start and a end node that match a given length. - **ArangoSearch**: - New [**Pipeline Analyzer**](../../index-and-search/analyzers.md#pipeline) + New [**Pipeline Analyzer**](../index-and-search/analyzers.md#pipeline) that allows you to combine multiple Analyzers, enabling case-insensitive _n_-gram-based fuzzy search and more. New - [**AQL Analyzer**](../../index-and-search/analyzers.md#aql) + [**AQL Analyzer**](../index-and-search/analyzers.md#aql) so that you can use an AQL query to pre-process and filter your data for indexing. Support for **geo-spatial queries** through new - [Geo](../../index-and-search/analyzers.md#geojson) - [Analyzers](../../index-and-search/analyzers.md#geopoint) and - [ArangoSearch Geo functions](../../aql/functions/arangosearch.md#geo-functions). - A new [**Stop words Analyzer**](../../index-and-search/analyzers.md#stopwords) that + [Geo](../index-and-search/analyzers.md#geojson) + [Analyzers](../index-and-search/analyzers.md#geopoint) and + [ArangoSearch Geo functions](../aql/functions/arangosearch.md#geo-functions). + A new [**Stop words Analyzer**](../index-and-search/analyzers.md#stopwords) that can be used standalone or in an Analyzer pipeline. -- A [**`WINDOW` operation**](../../aql/high-level-operations/window.md) for aggregations over +- A [**`WINDOW` operation**](../aql/high-level-operations/window.md) for aggregations over adjacent rows, value ranges or time windows. **Enterprise Edition** - **Encryption at Rest** utilizes - [hardware acceleration](../../release-notes/version-3.8/whats-new-in-3-8.md#encryption-at-rest) + [hardware acceleration](../release-notes/version-3.8/whats-new-in-3-8.md#encryption-at-rest) capabilities of modern CPUs. -Also see [What's New in 3.8](../../release-notes/version-3.8/whats-new-in-3-8.md). +Also see [What's New in 3.8](../release-notes/version-3.8/whats-new-in-3-8.md). ## Version 3.7 **All Editions** - **ArangoSearch**: - [Wildcard](../../aql/functions/arangosearch.md#like) and fuzzy search - ([Levenshtein distance](../../aql/functions/arangosearch.md#levenshtein_match) and - [_n_-gram based](../../aql/functions/arangosearch.md#ngram_match)), - enhanced [phrase and proximity search](../../aql/functions/arangosearch.md#phrase), + [Wildcard](../aql/functions/arangosearch.md#like) and fuzzy search + ([Levenshtein distance](../aql/functions/arangosearch.md#levenshtein_match) and + [_n_-gram based](../aql/functions/arangosearch.md#ngram_match)), + enhanced [phrase and proximity search](../aql/functions/arangosearch.md#phrase), improved late document materialization and - [Views covering queries](../../release-notes/version-3.7/whats-new-in-3-7.md#covering-indexes) + [Views covering queries](../release-notes/version-3.7/whats-new-in-3-7.md#covering-indexes) using their indexes without touching the storage engine, as well as a new SIMD-based index format for faster processing and - [stemming support](../../release-notes/version-3.7/whats-new-in-3-7.md#stemming-support-for-more-languages) + [stemming support](../release-notes/version-3.7/whats-new-in-3-7.md#stemming-support-for-more-languages) for 15 additional languages. -- [**Schema Validation**](../../concepts/data-structure/documents/schema-validation.md): +- [**Schema Validation**](../concepts/data-structure/documents/schema-validation.md): Enforce a JSON Schema for documents on collection level. Invalid documents can be rejected automatically by the database system, making it easy to maintain data quality. -- [**Insert-Update** and **Insert-Ignore**](../../release-notes/version-3.7/whats-new-in-3-7.md#insert-update-and-insert-ignore): +- [**Insert-Update** and **Insert-Ignore**](../release-notes/version-3.7/whats-new-in-3-7.md#insert-update-and-insert-ignore): New document API operations to upsert documents and to efficiently insert documents while skipping the creation if the document exists already. - **AQL**: - Improved [subquery](../../release-notes/version-3.7/whats-new-in-3-7.md#subquery-optimizations) and - [graph traversal performance](../../release-notes/version-3.7/whats-new-in-3-7.md#traversal-optimizations), + Improved [subquery](../release-notes/version-3.7/whats-new-in-3-7.md#subquery-optimizations) and + [graph traversal performance](../release-notes/version-3.7/whats-new-in-3-7.md#traversal-optimizations), among many optimizations and enhancements. -- [**HTTP/2 support**](../../release-notes/version-3.7/whats-new-in-3-7.md#http2-support): +- [**HTTP/2 support**](../release-notes/version-3.7/whats-new-in-3-7.md#http2-support): Better load-balancer and Kubernetes compatibility, improved request throughput. **Enterprise Edition** -- [**SatelliteGraphs**](../../release-notes/version-3.7/whats-new-in-3-7.md#satellitegraphs): +- [**SatelliteGraphs**](../release-notes/version-3.7/whats-new-in-3-7.md#satellitegraphs): Synchronously replicated graphs with local traversal execution. -- [**Disjoint SmartGraphs**](../../release-notes/version-3.7/whats-new-in-3-7.md#disjoint-smartgraphs): +- [**Disjoint SmartGraphs**](../release-notes/version-3.7/whats-new-in-3-7.md#disjoint-smartgraphs): Improve traversal execution times for SmartGraphs without edges between nodes with different SmartGraph attribute values. -- [**Traversal parallelization**](../../release-notes/version-3.7/whats-new-in-3-7.md#traversal-parallelization-enterprise-edition): +- [**Traversal parallelization**](../release-notes/version-3.7/whats-new-in-3-7.md#traversal-parallelization-enterprise-edition): Optional parallel execution of nested traversals for single servers and OneShard clusters. - **Security**: Added support for multiple - [JWT Secrets](../../release-notes/version-3.7/whats-new-in-3-7.md#jwt-secret-rotation-enterprise-edition) + [JWT Secrets](../release-notes/version-3.7/whats-new-in-3-7.md#jwt-secret-rotation-enterprise-edition) and the ability to hot-reload them from disk, - [TLS key and certificate rotation](../../release-notes/version-3.7/whats-new-in-3-7.md#tls-key-and-certificate-rotation), - [Encryption at rest key rotation](../../release-notes/version-3.7/whats-new-in-3-7.md#encryption-at-rest-key-rotation-enterprise-edition) - and [Server Name Indication (SNI)](../../release-notes/version-3.7/whats-new-in-3-7.md#server-name-indication-enterprise-edition). + [TLS key and certificate rotation](../release-notes/version-3.7/whats-new-in-3-7.md#tls-key-and-certificate-rotation), + [Encryption at rest key rotation](../release-notes/version-3.7/whats-new-in-3-7.md#encryption-at-rest-key-rotation-enterprise-edition) + and [Server Name Indication (SNI)](../release-notes/version-3.7/whats-new-in-3-7.md#server-name-indication-enterprise-edition). -Also see [What's New in 3.7](../../release-notes/version-3.7/whats-new-in-3-7.md). +Also see [What's New in 3.7](../release-notes/version-3.7/whats-new-in-3-7.md). ## Version 3.6 @@ -264,32 +258,32 @@ Also see [What's New in 3.7](../../release-notes/version-3.7/whats-new-in-3-7.md - **AQL**: Improved query performance thanks to - [early pruning](../../release-notes/version-3.6/whats-new-in-3-6.md#early-pruning-of-non-matching-documents), - [subquery splicing](../../release-notes/version-3.6/whats-new-in-3-6.md#subquery-splicing-optimization), - [late document materialization](../../release-notes/version-3.6/whats-new-in-3-6.md#late-document-materialization-rocksdb), - [parallelization](../../release-notes/version-3.6/whats-new-in-3-6.md#parallelization-of-cluster-aql-queries) for certain cluster queries - and more. New server-side [`maxRuntime`](../../aql/how-to-invoke-aql/with-arangosh.md#maxruntime) + [early pruning](../release-notes/version-3.6/whats-new-in-3-6.md#early-pruning-of-non-matching-documents), + [subquery splicing](../release-notes/version-3.6/whats-new-in-3-6.md#subquery-splicing-optimization), + [late document materialization](../release-notes/version-3.6/whats-new-in-3-6.md#late-document-materialization-rocksdb), + [parallelization](../release-notes/version-3.6/whats-new-in-3-6.md#parallelization-of-cluster-aql-queries) for certain cluster queries + and more. New server-side [`maxRuntime`](../aql/how-to-invoke-aql/with-arangosh.md#maxruntime) option for queries. - **ArangoSearch**: - New [Analyzer options](../../release-notes/version-3.6/whats-new-in-3-6.md#analyzers) for + New [Analyzer options](../release-notes/version-3.6/whats-new-in-3-6.md#analyzers) for edge _n_-grams (`text` Analyzer), UTF-8 encoded _n_-gram input and optional start/end markers (`ngram` Analyzer). Support for - [dynamic expressions](../../release-notes/version-3.6/whats-new-in-3-6.md#dynamic-search-expressions-with-arrays) + [dynamic expressions](../release-notes/version-3.6/whats-new-in-3-6.md#dynamic-search-expressions-with-arrays) using arrays (array comparison operators in `SEARCH` queries and the `TOKENS()` / `PHRASE()` functions accept arrays). Views can benefit from the SmartJoins optimization. **Enterprise Edition** -- [**OneShard**](../../deploy/oneshard.md) +- [**OneShard**](../deploy/oneshard.md) deployments offer a practicable solution that enables significant performance improvements by massively reducing cluster-internal communication. A database created with OneShard enabled is limited to a single DB-Server node but still replicated synchronously to ensure resilience. This configuration allows running transactions with ACID guarantees on shard leaders. -Also see [What's New in 3.6](../../release-notes/version-3.6/whats-new-in-3-6.md). +Also see [What's New in 3.6](../release-notes/version-3.6/whats-new-in-3-6.md). ## Version 3.5 @@ -297,62 +291,62 @@ Also see [What's New in 3.6](../../release-notes/version-3.6/whats-new-in-3-6.md - **ArangoSearch**: The search and ranking engine received an upgrade and now features - [Configurable Analyzers](../../index-and-search/analyzers.md), - [Sorted Views](../../index-and-search/arangosearch/performance.md#primary-sort-order) + [Configurable Analyzers](../index-and-search/analyzers.md), + [Sorted Views](../index-and-search/arangosearch/performance.md#primary-sort-order) and several improvements to the - [AQL integration](../../release-notes/version-3.5/whats-new-in-3-5.md#arangosearch). + [AQL integration](../release-notes/version-3.5/whats-new-in-3-5.md#arangosearch). - **AQL Graph Traversals**: - [k Shortest Paths](../../aql/graphs/k-shortest-paths.md) allows you to query not + [k Shortest Paths](../aql/graphs/k-shortest-paths.md) allows you to query not just for one shortest path between two documents but multiple, sorted by - length or weight. With [PRUNE](../../aql/graphs/traversals.md#pruning) you can + length or weight. With [PRUNE](../aql/graphs/traversals.md#pruning) you can stop walking down certain paths early in a graph traversal to improve its efficiency. -- [**Stream Transaction API**](../../develop/http-api/transactions/stream-transactions.md): +- [**Stream Transaction API**](../develop/http-api/transactions/stream-transactions.md): Perform multi-document transactions with individual begin and commit / abort commands using the new HTTP endpoints or via a supported driver. -- [**Time-to-Live**](../../index-and-search/indexing/basics.md#ttl-time-to-live-index) - [**Indexes**](../../index-and-search/indexing/working-with-indexes/ttl-indexes.md): +- [**Time-to-Live**](../index-and-search/indexing/basics.md#ttl-time-to-live-index) + [**Indexes**](../index-and-search/indexing/working-with-indexes/ttl-indexes.md): TTL indexes can be used to automatically remove documents in collections for use cases like expiring sessions or automatic purging of statistics or logs. -- [**Index Hints**](../../aql/high-level-operations/for.md#indexhint) & +- [**Index Hints**](../aql/high-level-operations/for.md#indexhint) & [**Named Indexes**](https://www.arangodb.com/learn/development/index-hints-named-indices/): Indexes can be given names and an optional AQL inline query option `indexHint` was added to override the internal optimizer decision on which index to utilize. -- [**Data Masking**](../../components/tools/arangodump/maskings.md): +- [**Data Masking**](../components/tools/arangodump/maskings.md): arangodump provides a convenient way to extract production data but mask critical information that should not be visible. **Enterprise Edition** -- [**Hot Backups**](../../operations/backup-and-restore.md#hot-backups): +- [**Hot Backups**](../operations/backup-and-restore.md#hot-backups): Create automatic, consistent backups of your cluster without noticeable impact on your production systems. In contrast to _arangodump_, hot backups are taken on the level of the underlying storage engine and hence both backup and restore are considerably faster. -- [**SmartJoins**](../../develop/smartjoins.md): +- [**SmartJoins**](../develop/smartjoins.md): Run joins between identically sharded collections with performance close to that of a local join operation. - **Advanced Data Masking**: There are additional - [data masking functions](../../components/tools/arangodump/maskings.md#masking-functions) + [data masking functions](../components/tools/arangodump/maskings.md#masking-functions) available in the Enterprise Edition, such as for substituting email addresses and phone numbers with similar looking pseudo-data. -Also see [What's New in 3.5](../../release-notes/version-3.5/whats-new-in-3-5.md). +Also see [What's New in 3.5](../release-notes/version-3.5/whats-new-in-3-5.md). ## Version 3.4 **All Editions** -- [**ArangoSearch**](../../index-and-search/arangosearch/_index.md): +- [**ArangoSearch**](../index-and-search/arangosearch/_index.md): Search and similarity ranking engine integrated natively into ArangoDB and AQL. ArangoSearch combines Boolean retrieval capabilities with generalized ranking algorithms (BM25, TFDIF). Support of e.g. relevance-based searching, @@ -361,32 +355,32 @@ Also see [What's New in 3.5](../../release-notes/version-3.5/whats-new-in-3-5.md query. Many specialized language Analyzers are already included for e.g. English, German, French, Chinese, Spanish and many other language. -- [**GeoJSON Support**](../../aql/functions/geo.md) and - [**S2 Geo Index**](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ArangoDB now supports all geo primitives. +- [**GeoJSON Support**](../aql/functions/geo.md) and + [**S2 Geo Index**](../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ArangoDB now supports all geo primitives. (Multi-)Point, (Multi-)LineStrings, (Multi-)Polygons or intersections can be defined and queried for. The Google S2 geo index is optimized for RocksDB and enables efficient querying. Geo query results are automatically visualized with an OpenStreetMap integration within the Query Editor of the web interface. -- [**Query Profiler**](../../aql/execution-and-performance/query-profiling.md): +- [**Query Profiler**](../aql/execution-and-performance/query-profiling.md): Enables the analysis of queries and adds additional information for the user to identify optimization potentials more easily. The profiler can be accessed via _arangosh_ with `db._profileQuery(...)` or via the *Profile* button in the Query Editor of the web interface. -- [**Streaming Cursors**](../../aql/how-to-invoke-aql/with-arangosh.md#stream): +- [**Streaming Cursors**](../aql/how-to-invoke-aql/with-arangosh.md#stream): Cursors requested with the stream option on make queries calculate results on the fly and make them available for the client in a streaming fashion, as soon as possible. - **RocksDB as Default Storage Engine**: With ArangoDB 3.4 the default - [storage engine](../../components/arangodb-server/storage-engine.md) for fresh installations will + [storage engine](../components/arangodb-server/storage-engine.md) for fresh installations will switch from MMFiles to RocksDB. Many optimizations have been made to RocksDB since the first release in 3.2. For 3.4 we optimized the binary storage format for improved insertion, implemented "optional caching", reduced the replication catch-up time and much more. -Also see [What's New in 3.4](../../release-notes/version-3.4/whats-new-in-3-4.md). +Also see [What's New in 3.4](../release-notes/version-3.4/whats-new-in-3-4.md). ## Version 3.3 @@ -398,30 +392,30 @@ Also see [What's New in 3.4](../../release-notes/version-3.4/whats-new-in-3-4.md Multi-datacenter support means you can fallback to a replica of your cluster in case of a disaster in one datacenter. -- [**Encrypted Backups**](../../components/tools/arangodump/examples.md#encryption): +- [**Encrypted Backups**](../components/tools/arangodump/examples.md#encryption): _arangodump_ can create backups encrypted with a secret key using AES256 block cipher. **All Editions** -- [**Server-level Replication**](../../release-notes/version-3.3/whats-new-in-3-3.md#server-level-replication): +- [**Server-level Replication**](../release-notes/version-3.3/whats-new-in-3-3.md#server-level-replication): In addition to per-database replication, there is now an additional `globalApplier`. Start the global replication on the Follower once and all current and future databases will be replicated from the Leader to the Follower automatically. -- [**Asynchronous Failover**](../../release-notes/version-3.3/whats-new-in-3-3.md#asynchronous-failover): +- [**Asynchronous Failover**](../release-notes/version-3.3/whats-new-in-3-3.md#asynchronous-failover): Make a single server instance resilient with a second server instance, one as Leader and the other as asynchronously replicating Follower, with automatic failover to the Follower if the Leader goes down. -Also see [What's New in 3.3](../../release-notes/version-3.3/whats-new-in-3-3.md). +Also see [What's New in 3.3](../release-notes/version-3.3/whats-new-in-3-3.md). ## Version 3.2 **All Editions** -- [**RocksDB Storage Engine**](../../components/arangodb-server/storage-engine.md): You can now use +- [**RocksDB Storage Engine**](../components/arangodb-server/storage-engine.md): You can now use as much data in ArangoDB as you can fit on your disk. Plus, you can enjoy performance boosts on writes by having only document-level locks. @@ -430,7 +424,7 @@ Also see [What's New in 3.3](../../release-notes/version-3.3/whats-new-in-3-3.md patterns, identify communities and perform in-depth analytics of large graph data sets. -- [**Fault-Tolerant Foxx**](../../develop/http-api/foxx.md): The Foxx management +- [**Fault-Tolerant Foxx**](../develop/http-api/foxx.md): The Foxx management internals have been rewritten from the ground up to make sure multi-coordinator cluster setups always keep their services in sync and new Coordinators are fully initialized even when all existing Coordinators @@ -442,22 +436,22 @@ Also see [What's New in 3.3](../../release-notes/version-3.3/whats-new-in-3-3.md can be managed from outside ArangoDB with an LDAP server in different authentication configurations. -- [**Encryption at Rest**](../../operations/security/encryption-at-rest.md): Let the server +- [**Encryption at Rest**](../operations/security/encryption-at-rest.md): Let the server persist your sensitive data strongly encrypted to protect it even if the physical storage medium gets stolen. -- [**SatelliteCollections**](../../develop/satellitecollections.md): Faster join operations when +- [**SatelliteCollections**](../develop/satellitecollections.md): Faster join operations when working with sharded datasets by synchronously replicating selected collections to all DB-Servers in a cluster, so that joins can be executed locally. -Also see [What's New in 3.2](../../release-notes/version-3.2/whats-new-in-3-2.md). +Also see [What's New in 3.2](../release-notes/version-3.2/whats-new-in-3-2.md). ## Version 3.1 **All Editions** -- [**Vertex-centric indexes**](../../index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md): +- [**Vertex-centric indexes**](../index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md): AQL traversal queries can utilize secondary edge collection indexes for better performance against graphs with supernodes. @@ -467,35 +461,35 @@ Also see [What's New in 3.2](../../release-notes/version-3.2/whats-new-in-3-2.md **Enterprise Edition** -- [**SmartGraphs**](../../graphs/smartgraphs/_index.md): Scale with graphs to a +- [**SmartGraphs**](../graphs/smartgraphs/_index.md): Scale with graphs to a cluster and stay performant. With SmartGraphs you can use the "smartness" of your application layer to shard your graph efficiently to your machines and let traversals run locally. -- **Encryption Control**: Choose your level of [SSL encryption](../../components/arangodb-server/options.md#ssl) +- **Encryption Control**: Choose your level of [SSL encryption](../components/arangodb-server/options.md#ssl) -- [**Auditing**](../../operations/security/audit-logging.md): Keep a detailed log +- [**Auditing**](../operations/security/audit-logging.md): Keep a detailed log of all the important things that happened in ArangoDB. -Also see [What's New in 3.1](../../release-notes/version-3.1/whats-new-in-3-1.md). +Also see [What's New in 3.1](../release-notes/version-3.1/whats-new-in-3-1.md). ## Version 3.0 -- [**self-organizing cluster**](../../deploy/cluster/_index.md) with +- [**self-organizing cluster**](../deploy/cluster/_index.md) with synchronous replication, master/master setup, shared nothing architecture, cluster management Agency. -- Deeply integrated, native [**AQL graph traversal**](../../aql/graphs/_index.md) +- Deeply integrated, native [**AQL graph traversal**](../aql/graphs/_index.md) - [**VelocyPack**](https://github.com/arangodb/velocypack) as new internal binary storage format as well as for intermediate AQL values. -- [**Persistent indexes**](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md) via RocksDB suitable +- [**Persistent indexes**](../index-and-search/indexing/working-with-indexes/persistent-indexes.md) via RocksDB suitable for sorting and range queries. -- [**Foxx 3.0**](../../develop/foxx-microservices/_index.md): overhauled JS framework for data-centric +- [**Foxx 3.0**](../develop/foxx-microservices/_index.md): overhauled JS framework for data-centric microservices -- Significantly improved [**Web Interface**](../../components/web-interface/_index.md) +- Significantly improved [**Web Interface**](../components/web-interface/_index.md) -Also see [What's New in 3.0](../../release-notes/version-3.0/whats-new-in-3-0.md). +Also see [What's New in 3.0](../release-notes/version-3.0/whats-new-in-3-0.md). diff --git a/site/content/arangodb/3.12/about/features/list.md b/site/content/arangodb/3.12/features/list.md similarity index 65% rename from site/content/arangodb/3.12/about/features/list.md rename to site/content/arangodb/3.12/features/list.md index f40468f1cc..3641e428b8 100644 --- a/site/content/arangodb/3.12/about/features/list.md +++ b/site/content/arangodb/3.12/features/list.md @@ -6,8 +6,8 @@ description: >- All features of the ArangoDB database system, available in both the Community Edition and Enterprise Edition aliases: - - ../../introduction/features/community-edition - - ../../introduction/features/enterprise-edition + - ../introduction/features/community-edition + - ../introduction/features/enterprise-edition - community-edition - enterprise-edition --- @@ -18,13 +18,13 @@ available from v3.12.5 onward. ## General -- [**Graph Database**](../../concepts/data-models.md#graph-model): +- [**Graph Database**](../concepts/data-models.md#graph-model): Native support for storing and querying graphs comprised of nodes and edges. You can model complex domains because both nodes and edges are fully-fledged documents, without restrictions in complexity. Edges can connect node documents to express m:n relations with any depth. -- [**Document Database**](../../concepts/data-models.md#document-model): +- [**Document Database**](../concepts/data-models.md#document-model): A modern document database system that allows you to model data intuitively and evolve the data model easily. Documents can be organized in collections, and collections in databases for multi-tenancy. @@ -37,7 +37,7 @@ available from v3.12.5 onward. top and mix it with graph traversals, geo queries, aggregations, or any other supported access pattern. -- [**Data Format**](../../concepts/data-structure/_index.md#documents): +- [**Data Format**](../concepts/data-structure/_index.md#documents): JSON, internally stored in a binary format invented by ArangoDB called VelocyPack. @@ -47,12 +47,12 @@ available from v3.12.5 onward. documents, or graphs - perfect for social relations. Optional document validation using JSON Schema (draft-4, without remote schema support). -- [**Data Storage**](../../components/arangodb-server/storage-engine.md): +- [**Data Storage**](../components/arangodb-server/storage-engine.md): RocksDB storage engine to persist data and indexes on disk, with a hot set in memory. It uses journaling (write-ahead logging) and can take advantage of modern storage hardware, like SSDs and large caches. -- [**Computed Values**](../../concepts/data-structure/documents/computed-values.md): +- [**Computed Values**](../concepts/data-structure/documents/computed-values.md): Persistent document attributes that are generated when documents are created or modified, using an AQL expression. @@ -60,7 +60,7 @@ available from v3.12.5 onward. Use ArangoDB as a [fully managed service](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), self-managed in the cloud, or on-premises. -- [**Multiple Environments**](../../operations/installation/_index.md#supported-platforms-and-architectures): +- [**Multiple Environments**](../operations/installation/_index.md#supported-platforms-and-architectures): Run ArangoDB on Linux using the production-ready packages for the x86-64 architecture, on bare metal or in containers. Develop and test with ArangoDB on Windows, macOS, and Linux using the official @@ -68,17 +68,17 @@ available from v3.12.5 onward. ## Scalability & High Availability -- [**Hash-based sharding**](../../deploy/architecture/data-sharding.md): +- [**Hash-based sharding**](../deploy/architecture/data-sharding.md): Spread bigger datasets across multiple servers using consistent hashing on the default or custom shard keys. -- [**Synchronous Replication**](../../deploy/cluster/_index.md#synchronous-replication): +- [**Synchronous Replication**](../deploy/cluster/_index.md#synchronous-replication): Data changes are propagated to other cluster nodes immediately as part of an operation, and are only considered successful when the configured number of writes is reached. Synchronous replication works on a per-shard basis. For each collection, you can configure how many copies of each shard are kept in the cluster. -- [**Automatic Failover Cluster**](../../deploy/cluster/_index.md#automatic-failover): +- [**Automatic Failover Cluster**](../deploy/cluster/_index.md#automatic-failover): If a cluster node goes down, another node takes over to avoid downtime. - **Load-Balancer Support**: @@ -89,7 +89,7 @@ available from v3.12.5 onward. ## Querying -- [**Declarative Query Language for All Data Models**](../../aql/_index.md): +- [**Declarative Query Language for All Data Models**](../aql/_index.md): Powerful query language (AQL) to retrieve and modify data. Graph traversals, full-text searches, geo-spatial queries, and aggregations can be composed in a single query. @@ -97,40 +97,40 @@ available from v3.12.5 onward. ranges and time intervals. Cluster-distributed aggregation queries. -- [**Query Optimizer**](../../aql/execution-and-performance/query-optimization.md): +- [**Query Optimizer**](../aql/execution-and-performance/query-optimization.md): Cost-based query optimizer that takes index selectivity estimates into account. <!-- TODO: Explain, batching?, lazy evaluation (stream)? --> -- [**Query Profiling**](../../aql/execution-and-performance/query-profiling.md): +- [**Query Profiling**](../aql/execution-and-performance/query-profiling.md): Show detailed runtime information for AQL queries. -- [**Query Logging**](../../aql/execution-and-performance/query-logging.md): +- [**Query Logging**](../aql/execution-and-performance/query-logging.md): Store query metadata and analyze it directly in the database system to debug issues and understand usage patterns. -- [**Upsert Operations**](../../aql/examples-and-query-patterns/upsert-repsert-guide.md): +- [**Upsert Operations**](../aql/examples-and-query-patterns/upsert-repsert-guide.md): Support for insert-or-update (upsert), insert-or-replace (repsert), and insert-or-ignore requests, that result in one or the other operation depending on whether the target document exists already. -- [**Relational Joins**](../../aql/examples-and-query-patterns/joins.md): +- [**Relational Joins**](../aql/examples-and-query-patterns/joins.md): Joins similar to those in relational database systems can be leveraged to match up documents from different collections, allowing normalized data models. - **Advanced Path-Finding with Multiple Algorithms**: - Graphs can be [traversed](../../aql/graphs/traversals-explained.md) with AQL + Graphs can be [traversed](../aql/graphs/traversals-explained.md) with AQL in outbound, inbound, or both directions to retrieve direct and indirect neighbor nodes using a fixed or variable depth. - The [traversal order](../../aql/graphs/traversals.md) can be + The [traversal order](../aql/graphs/traversals.md) can be depth-first, breadth-first, or in order of increasing edge weights ("Weighted Traversals"). Stop conditions for pruning paths are supported. - Traversal algorithms to get a [shortest path](../../aql/graphs/shortest-path.md), - [all shortest paths](../../aql/graphs/all-shortest-paths.md), paths in order of - increasing length ("[k Shortest Paths](../../aql/graphs/k-shortest-paths.md)"), + Traversal algorithms to get a [shortest path](../aql/graphs/shortest-path.md), + [all shortest paths](../aql/graphs/all-shortest-paths.md), paths in order of + increasing length ("[k Shortest Paths](../aql/graphs/k-shortest-paths.md)"), and to enumerate all paths between two nodes - ("[k Paths](../../aql/graphs/k-paths.md)") are available, too. + ("[k Paths](../aql/graphs/k-paths.md)") are available, too. -- [**ArangoSearch for Text Search and Ranking**](../../index-and-search/arangosearch/_index.md): +- [**ArangoSearch for Text Search and Ranking**](../index-and-search/arangosearch/_index.md): A built-in search engine for full-text, complex data structures, and more. Exact value matching, range queries, prefix matching, case-insensitive and accent-insensitive search. Token, phrase, wildcard, and fuzzy search support @@ -139,51 +139,51 @@ available from v3.12.5 onward. Flexible data field pre-processing with custom queries and the ability to chain built-in and custom Analyzers. Language-agnostic tokenization of text. -- [**GeoJSON Support**](../../aql/functions/geo.md#geojson): +- [**GeoJSON Support**](../aql/functions/geo.md#geojson): Geographic data encoded in the popular GeoJSON format can be stored and used for geo-spatial queries. {{% comment %}} Experimental feature -- [**Query result spillover**](../../aql/how-to-invoke-aql/with-arangosh.md#spilloverthresholdmemoryusage): +- [**Query result spillover**](../aql/how-to-invoke-aql/with-arangosh.md#spilloverthresholdmemoryusage): AQL queries can store intermediate and final results temporarily on disk (also known as external result sets) to decrease memory usage when a specified threshold is reached. {{% /comment %}} {{% comment %}} Experimental feature -- [**Vector search**](../../index-and-search/indexing/working-with-indexes/vector-indexes.md): +- [**Vector search**](../index-and-search/indexing/working-with-indexes/vector-indexes.md): Find items with similar properties by comparing vector embeddings generated by machine learning models. {{% /comment %}} -- [**Search highlighting**](../../index-and-search/arangosearch/search-highlighting.md): +- [**Search highlighting**](../index-and-search/arangosearch/search-highlighting.md): Get the substring positions of matched terms, phrases, or _n_-grams. -- [**Nested search**](../../index-and-search/arangosearch/nested-search.md): +- [**Nested search**](../index-and-search/arangosearch/nested-search.md): Match arrays of objects with all the conditions met by a single sub-object, and define for how many of the elements this must be true. {{% comment %}} Experimental feature -- **[`classification`](../../index-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../../index-and-search/analyzers.md#nearest_neighbors)**: +- **[`classification`](../index-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../index-and-search/analyzers.md#nearest_neighbors)**: Classification of text tokens and finding similar tokens using supervised fastText word embedding models. {{% /comment %}} -- [**Skip inaccessible collections**](../../aql/how-to-invoke-aql/with-arangosh.md#skipinaccessiblecollections): +- [**Skip inaccessible collections**](../aql/how-to-invoke-aql/with-arangosh.md#skipinaccessiblecollections): Let AQL queries like graph traversals pretend that collections are empty if the user has no access to them instead of failing the query. ## Transactions -- [**AQL Queries**](../../aql/data-queries.md#transactional-execution): +- [**AQL Queries**](../aql/data-queries.md#transactional-execution): AQL queries are executed transactionally (with exceptions), either committing or rolling back data modifications automatically. -- [**Stream Transactions**](../../develop/http-api/transactions/stream-transactions.md): +- [**Stream Transactions**](../develop/http-api/transactions/stream-transactions.md): Transactions with individual begin and commit / abort commands that can span multiple AQL queries and API calls of supported APIs. -- [**JavaScript Transactions**](../../develop/http-api/transactions/javascript-transactions.md): +- [**JavaScript Transactions**](../develop/http-api/transactions/javascript-transactions.md): Single-request transactions written in JavaScript that leverage ArangoDB's JavaScript API. @@ -205,148 +205,148 @@ available from v3.12.5 onward. ## Performance -- [**SmartGraphs**](../../graphs/smartgraphs/_index.md): +- [**SmartGraphs**](../graphs/smartgraphs/_index.md): Value-based sharding of large graph datasets for better data locality when traversing graphs. -- [**EnterpriseGraphs**](../../graphs/enterprisegraphs/_index.md): +- [**EnterpriseGraphs**](../graphs/enterprisegraphs/_index.md): A specialized version of SmartGraphs, with an automatic sharding key selection. -- [**SmartGraphs using SatelliteCollections**](../../graphs/smartgraphs/_index.md): +- [**SmartGraphs using SatelliteCollections**](../graphs/smartgraphs/_index.md): Collections replicated on all cluster nodes can be combined with graphs sharded by document attributes to enable more local execution of graph queries. -- [**SatelliteGraphs**](../../graphs/satellitegraphs/_index.md): +- [**SatelliteGraphs**](../graphs/satellitegraphs/_index.md): Graphs replicated on all cluster nodes to execute graph traversals locally. -- [**SatelliteCollections**](../../develop/satellitecollections.md): +- [**SatelliteCollections**](../develop/satellitecollections.md): Collections replicated on all cluster nodes to execute joins with sharded data locally. -- [**SmartJoins**](../../develop/smartjoins.md): +- [**SmartJoins**](../develop/smartjoins.md): Co-located joins in a cluster using identically sharded collections. -- [**OneShard**](../../deploy/oneshard.md): +- [**OneShard**](../deploy/oneshard.md): Option to store all collections of a database on a single cluster node, to combine the performance of a single server and ACID semantics with a fault-tolerant cluster setup. -- [**Traversal**](../../release-notes/version-3.7/whats-new-in-3-7.md#traversal-parallelization-enterprise-edition) - [**Parallelization**](../../release-notes/version-3.10/whats-new-in-3-10.md#parallelism-for-sharded-graphs-enterprise-edition): +- [**Traversal**](../release-notes/version-3.7/whats-new-in-3-7.md#traversal-parallelization-enterprise-edition) + [**Parallelization**](../release-notes/version-3.10/whats-new-in-3-10.md#parallelism-for-sharded-graphs-enterprise-edition): Parallel execution of traversal queries with many start nodes, leading to faster results. -- [**Traversal Projections**](../../release-notes/version-3.10/whats-new-in-3-10.md#traversal-projections-enterprise-edition): +- [**Traversal Projections**](../release-notes/version-3.10/whats-new-in-3-10.md#traversal-projections-enterprise-edition): Optimized data loading for AQL traversal queries if only a few document attributes are accessed. -- [**Parallel index creation**](../../release-notes/version-3.10/whats-new-in-3-10.md#parallel-index-creation-enterprise-edition): +- [**Parallel index creation**](../release-notes/version-3.10/whats-new-in-3-10.md#parallel-index-creation-enterprise-edition): Non-unique indexes can be created with multiple threads in parallel. -- [**`minhash` Analyzer**](../../index-and-search/analyzers.md#minhash): +- [**`minhash` Analyzer**](../index-and-search/analyzers.md#minhash): Jaccard similarity approximation for entity resolution, such as for finding duplicate records, based on how many elements they have in common -- [**`geo_s2` Analyzer**](../../index-and-search/analyzers.md#geo_s2): +- [**`geo_s2` Analyzer**](../index-and-search/analyzers.md#geo_s2): Efficiently index geo-spatial data using different binary formats, tuning the size on disk, the precision, and query performance. -- [**ArangoSearch column cache**](../../release-notes/version-3.10/whats-new-in-3-10.md#arangosearch-column-cache-enterprise-edition): +- [**ArangoSearch column cache**](../release-notes/version-3.10/whats-new-in-3-10.md#arangosearch-column-cache-enterprise-edition): Always cache field normalization values, Geo Analyzer auxiliary data, stored values, primary sort columns, and primary key columns in memory to improve the performance of Views and inverted indexes. -- [**ArangoSearch WAND optimization**](../../index-and-search/arangosearch/performance.md#wand-optimization): +- [**ArangoSearch WAND optimization**](../index-and-search/arangosearch/performance.md#wand-optimization): Retrieve search results for the highest-ranking matches from Views faster by defining a list of sort expressions to optimize. -- [**Read from followers in clusters**](../../develop/http-api/documents.md#read-from-followers): +- [**Read from followers in clusters**](../develop/http-api/documents.md#read-from-followers): Allow dirty reads so that Coordinators can read from any shard replica and not only from the leader, for scaling reads. -- [**Persistent Indexes**](../../index-and-search/indexing/basics.md#persistent-index): +- [**Persistent Indexes**](../index-and-search/indexing/basics.md#persistent-index): Indexes are stored on disk to enable fast server restarts. You can create secondary indexes over one or multiple fields, optionally with a uniqueness constraint. A "sparse" option to only index non-null values is also available. The elements of an array can be indexed individually. -- [**Inverted indexes**](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md): +- [**Inverted indexes**](../index-and-search/indexing/working-with-indexes/inverted-indexes.md): An eventually consistent index type that can accelerate a broad range of queries from simple to complex, including full-text search. -- [**Vertex-centric Indexes**](../../index-and-search/indexing/basics.md#vertex-centric-indexes): +- [**Vertex-centric Indexes**](../index-and-search/indexing/basics.md#vertex-centric-indexes): Secondary indexes for more efficient graph traversals with filter conditions. -- [**Time-to-Live (TTL) Indexes**](../../index-and-search/indexing/basics.md#ttl-time-to-live-index): +- [**Time-to-Live (TTL) Indexes**](../index-and-search/indexing/basics.md#ttl-time-to-live-index): Time-based removal of expired documents. -- [**Geo-spatial Indexes**](../../index-and-search/indexing/basics.md#geo-index): +- [**Geo-spatial Indexes**](../index-and-search/indexing/basics.md#geo-index): Accelerated geo-spatial queries for locations and GeoJSON objects, based on the S2 library. <!-- TODO: list supported queries? Centroid-limitations? --> Support for composable, distance-based geo-queries ("geo cursors"). -- [**Multi-dimensional indexes**](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): +- [**Multi-dimensional indexes**](../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): An index type to efficiently intersect multiple range queries, like finding all appointments that intersect a time range. -- [**Background Indexing**](../../index-and-search/indexing/basics.md#creating-indexes-in-background): +- [**Background Indexing**](../index-and-search/indexing/basics.md#creating-indexes-in-background): Indexes can be created in the background to not block queries in the meantime. -- [**Index cache refilling**](../../release-notes/version-3.11/whats-new-in-3-11.md#index-cache-refilling): +- [**Index cache refilling**](../release-notes/version-3.11/whats-new-in-3-11.md#index-cache-refilling): In-memory index caches are automatically repopulated after writes that affect an edge index or cache-enabled persistent indexes to maximize cache hits and thus query performance. -- [**Extensive Query Optimization**](../../aql/execution-and-performance/query-optimization.md): +- [**Extensive Query Optimization**](../aql/execution-and-performance/query-optimization.md): Late document materialization to only fetch the relevant documents from SORT/LIMIT queries. Early pruning of non-matching documents in full collection scans. Inlining of certain subqueries to improve execution time. <!-- TODO, move to Querying? --> {{% comment %}} Experimental feature in v3.12.4 -- [**Query plan caching**](../../aql/execution-and-performance/caching-query-plans.md) +- [**Query plan caching**](../aql/execution-and-performance/caching-query-plans.md) Reduce the total time for processing queries by avoiding to parse, plan, and optimize the same queries over and over again with an AQL execution plan cache. {{% /comment %}} -- [**Parallel gather**](../../release-notes/version-3.11/whats-new-in-3-11.md#parallel-gather): +- [**Parallel gather**](../release-notes/version-3.11/whats-new-in-3-11.md#parallel-gather): Fast, memory-efficient processing of cluster queries by combining results in parallel. ## Extensibility -- [**Microservice Support with ArangoDB Foxx**](../../develop/foxx-microservices/_index.md): +- [**Microservice Support with ArangoDB Foxx**](../develop/foxx-microservices/_index.md): Use ArangoDB as an application server and fuse your application and database together for maximal throughput. With fault-tolerant cluster support. -- [**Server-Side Functions**](../../aql/user-defined-functions.md): +- [**Server-Side Functions**](../aql/user-defined-functions.md): You can extend AQL with user-defined functions written in JavaScript. ## Security -- [**Auditing**](../../operations/security/audit-logging.md): +- [**Auditing**](../operations/security/audit-logging.md): Audit logs of all server interactions. -- [**Encryption at Rest**](../../operations/security/encryption-at-rest.md): +- [**Encryption at Rest**](../operations/security/encryption-at-rest.md): Hardware-accelerated on-disk encryption for your data. -- [**Encrypted Backups**](../../components/tools/arangodump/examples.md#encryption): +- [**Encrypted Backups**](../components/tools/arangodump/examples.md#encryption): Data dumps can be encrypted using a strong 256-bit AES block cipher. -- [**Hot Backups**](../../operations/backup-and-restore.md#hot-backups): +- [**Hot Backups**](../operations/backup-and-restore.md#hot-backups): Consistent, incremental data backups without downtime for single servers and clusters. -- [**Enhanced Data Masking**](../../components/tools/arangodump/maskings.md#masking-functions): +- [**Enhanced Data Masking**](../components/tools/arangodump/maskings.md#masking-functions): Extended data masking capabilities for attributes containing sensitive data / PII when creating backups. - **Advanced Encryption and Security Configuration**: - Key rotation for [JWT secrets](../../develop/http-api/authentication.md#hot-reload-jwt-secrets) - and [on-disk encryption](../../develop/http-api/security.md#encryption-at-rest), - as well as [Server Name Indication (SNI)](../../components/arangodb-server/options.md#--sslserver-name-indication). + Key rotation for [JWT secrets](../develop/http-api/authentication.md#hot-reload-jwt-secrets) + and [on-disk encryption](../develop/http-api/security.md#encryption-at-rest), + as well as [Server Name Indication (SNI)](../components/arangodb-server/options.md#--sslserver-name-indication). -- [**Authentication**](../../operations/administration/user-management/_index.md): +- [**Authentication**](../operations/administration/user-management/_index.md): Built-in user management with password- and token-based authentication. - **Role-based Access Control**: @@ -354,15 +354,15 @@ available from v3.12.5 onward. microservice framework users can achieve very high security standards fitting individual needs. -- [**TLS Encryption**](../../components/arangodb-server/options.md#ssl): +- [**TLS Encryption**](../components/arangodb-server/options.md#ssl): Internal and external communication over encrypted network connections with TLS (formerly SSL). - [TLS key and certificate rotation](../../release-notes/version-3.7/whats-new-in-3-7.md#tls-key-and-certificate-rotation) + [TLS key and certificate rotation](../release-notes/version-3.7/whats-new-in-3-7.md#tls-key-and-certificate-rotation) is supported. ## Administration -- [**Web-based User Interface**](../../components/web-interface/_index.md): +- [**Web-based User Interface**](../components/web-interface/_index.md): Graphical UI for your browser to work with ArangoDB. It allows you to view, create, and modify databases, collections, documents, graphs, etc. You can also run, explain, and profile AQL queries. Includes a graph viewer @@ -372,16 +372,16 @@ available from v3.12.5 onward. View the status of your cluster and its individual nodes, and move and rebalance shards via the web interface. -- **[Backup](../../components/tools/arangodump/_index.md) and [Restore](../../components/tools/arangorestore/_index.md) Tools**: +- **[Backup](../components/tools/arangodump/_index.md) and [Restore](../components/tools/arangorestore/_index.md) Tools**: Multi-threaded dumping and restoring of collection settings and data in JSON format. Data masking capabilities for attributes containing sensitive data / PII when creating backups. -- **[Import](../../components/tools/arangoimport/_index.md) and [Export](../../components/tools/arangoexport/_index.md) Tools**: +- **[Import](../components/tools/arangoimport/_index.md) and [Export](../components/tools/arangoexport/_index.md) Tools**: CLI utilities to load and export data in multiple text-based formats. You can import from JSON, JSONL, CSV, and TSV files, and export to JSON, JSONL, CSV, TSV, XML, and XGMML files. -- [**Metrics**](../../develop/http-api/monitoring/metrics.md): +- [**Metrics**](../develop/http-api/monitoring/metrics.md): Monitor the healthiness and performance of ArangoDB servers using the metrics exported in the Prometheus format. diff --git a/site/content/arangodb/3.12/operations/administration/license-management.md b/site/content/arangodb/3.12/operations/administration/license-management.md index 30fc66adf2..72e42435a1 100644 --- a/site/content/arangodb/3.12/operations/administration/license-management.md +++ b/site/content/arangodb/3.12/operations/administration/license-management.md @@ -7,7 +7,7 @@ description: >- --- The Enterprise Edition of ArangoDB requires a license so that you can use ArangoDB for commercial purposes and have a dataset size over 100 GiB. See -[ArangoDB Editions](../../about/features/_index.md#arangodb-editions) +[ArangoDB Editions](../../features/_index.md#arangodb-editions) for details. How to set a license key and to retrieve information about the current license diff --git a/site/content/arangodb/3.12/operations/upgrading/community-to-enterprise-upgrade.md b/site/content/arangodb/3.12/operations/upgrading/community-to-enterprise-upgrade.md index bce4a011da..b02985e85f 100644 --- a/site/content/arangodb/3.12/operations/upgrading/community-to-enterprise-upgrade.md +++ b/site/content/arangodb/3.12/operations/upgrading/community-to-enterprise-upgrade.md @@ -7,7 +7,7 @@ description: '' {{< info >}} From version 3.12.5 onward, the prepackaged binaries and official Docker images of the Community Edition include all features of the Enterprise Edition. -See [ArangoDB Editions](../../about/features/_index.md#arangodb-editions) +See [ArangoDB Editions](../../features/_index.md#arangodb-editions) for details. To upgrade a deployment created with v3.12.5 or later from the Community Edition diff --git a/site/content/arangodb/3.12/about/use-cases.md b/site/content/arangodb/3.12/use-cases.md similarity index 76% rename from site/content/arangodb/3.12/about/use-cases.md rename to site/content/arangodb/3.12/use-cases.md index 0128025595..4bc8b2517e 100644 --- a/site/content/arangodb/3.12/about/use-cases.md +++ b/site/content/arangodb/3.12/use-cases.md @@ -19,7 +19,7 @@ more. ### Fraud Detection -{{< image src="../../../images/icon-fraud-detection.png" alt="Fraud Detection icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-fraud-detection.png" alt="Fraud Detection icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Uncover illegal activities by discovering difficult-to-detect patterns. ArangoDB lets you look beyond individual data points in disparate data sources, @@ -29,7 +29,7 @@ complex fraudulent behavior such as fraud rings. ### Recommendation Engine -{{< image src="../../../images/icon-recommendation-engine.png" alt="Recommendation Engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-recommendation-engine.png" alt="Recommendation Engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Suggest products, services, and information to users based on data relationships. For example, you can use ArangoDB together with PyTorch Geometric to build a @@ -39,7 +39,7 @@ with a graph neural network (GNN). ### Network Management -{{< image src="../../../images/icon-network-management.png" alt="Network Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-network-management.png" alt="Network Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Reduce downtime by connecting and visualizing network, infrastructure, and code. Network devices and how they interconnect can naturally be modeled as a graph. @@ -49,7 +49,7 @@ bandwidth into account when path-finding. ### Customer 360 -{{< image src="../../../images/icon-customer-360.png" alt="Customer 360 icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-customer-360.png" alt="Customer 360 icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Gain a complete understanding of your customers by integrating multiple data sources and code. ArangoDB can act as the platform to merge and consolidate @@ -58,7 +58,7 @@ track data origins using graph features. ### Identity and Access Management -{{< image src="../../../images/icon-identity-management.png" alt="Identity Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-identity-management.png" alt="Identity Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Increase security and compliance by managing data access based on role and position. You can map out an organization chart as a graph and use ArangoDB to @@ -68,7 +68,7 @@ inheritance. ### Supply Chain -{{< image src="../../../images/icon-supply-chain.png" alt="Supply Chain icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-supply-chain.png" alt="Supply Chain icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Speed shipments by monitoring and optimizing the flow of goods through a supply chain. You can represent your inventory, supplier, and delivery @@ -84,7 +84,7 @@ and scalable data store. ### Content Management -{{< image src="../../../images/icon-content-management.png" alt="Content management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-content-management.png" alt="Content management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Store information of any kind without upfront schema declaration. ArangoDB is schema-free, storing every data record as a self-contained document, allowing @@ -93,7 +93,7 @@ content management system on top of ArangoDB. ### E-Commerce Systems -{{< image src="../../../images/icon-e-commerce.png" alt="E-commerce icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-e-commerce.png" alt="E-commerce icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} ArangoDB combines data modeling freedom with strong consistency and resilience features to power online shops and ordering systems. Handle product catalog data @@ -102,7 +102,7 @@ checkouts with the necessary transactional guarantees. ### Internet of Things -{{< image src="../../../images/icon-internet-of-things.png" alt="Internet of things icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-internet-of-things.png" alt="Internet of things icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Collect sensor readings and other IoT data in ArangoDB for a single view of everything. Store all data points in the same system that also lets you run @@ -110,7 +110,7 @@ aggregation queries using sliding windows for efficient data analysis. ## ArangoDB as a Key-Value Database -{{< image src="../../../images/icon-key-value.png" alt="Key value icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-key-value.png" alt="Key value icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Key-value stores are the simplest kind of database systems. Each record is stored as a block of data under a key that uniquely identifies the record. @@ -130,11 +130,11 @@ binary large objects (BLOBs) and works best with small to medium-sized JSON objects. For more information about how ArangoDB persists data, see -[Storage Engine](../components/arangodb-server/storage-engine.md). +[Storage Engine](components/arangodb-server/storage-engine.md). ## ArangoDB as a Search Engine -{{< image src="../../../images/icon-search-engine.png" alt="Search engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-search-engine.png" alt="Search engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} ArangoDB has a natively integrated search engine for a broad range of information retrieval needs. It is powered by inverted indexes and can index @@ -148,7 +148,7 @@ It also features natural language processing (NLP) capabilities. and can classify or find similar terms using word embedding models. {{% /comment %}} -For more information about the search engine, see [ArangoSearch](../index-and-search/arangosearch/_index.md). +For more information about the search engine, see [ArangoSearch](index-and-search/arangosearch/_index.md). ## ArangoDB for Machine Learning @@ -161,4 +161,4 @@ ArangoDB integrates well into existing data infrastructures and provides connectors for popular machine learning frameworks and data processing ecosystems. -![Machine Learning Architecture of ArangoDB](../../../images/machine-learning-architecture.png) +![Machine Learning Architecture of ArangoDB](../../images/machine-learning-architecture.png) diff --git a/site/content/arangodb/3.13/_index.md b/site/content/arangodb/3.13/_index.md index 43a6197b31..327eb25661 100644 --- a/site/content/arangodb/3.13/_index.md +++ b/site/content/arangodb/3.13/_index.md @@ -1,7 +1,7 @@ --- title: Recommended Resources menuTitle: '3.13' -weight: 0 +weight: 96 layout: default --- {{< cloudbanner >}} diff --git a/site/content/arangodb/3.13/about/_index.md b/site/content/arangodb/3.13/about/_index.md deleted file mode 100644 index b47cbeb22f..0000000000 --- a/site/content/arangodb/3.13/about/_index.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: What is ArangoDB? -menuTitle: About ArangoDB -weight: 5 -description: >- - ArangoDB is a scalable graph database system to drive value from connected - data, faster -aliases: - - introduction - - introduction/about-arangodb ---- -![ArangoDB Overview Diagram](../../../../images/arangodb-overview-diagram.png) - -ArangoDB combines the analytical power of native graphs with an integrated -search engine, JSON support, and a variety of data access patterns via a single, -composable query language. - -ArangoDB is available in a community and a commercial [edition](features/_index.md). -You can use it for on-premises deployments, as well as a fully managed -cloud service, the [Arango Managed Platform (AMP)](../../../amp/_index.md). - -## What are Graphs? - -Graphs are information networks composed of nodes and edges. - -![An arrow labeled as "Edge" pointing from one circle to another, both labeled "Node"](../../../../images/data-model-graph-relation-abstract-edge.png) - -A social network is a common example of a graph. People are represented by nodes -and their friendships by relations. - -![Two circles labeled "Mary" and "John", with an arrow labeled "isFriendOf" pointing from "Mary" to "John"](../../../../images/data-model-graph-relation-concrete.png) - -Nodes are also called vertices (singular: vertex), and edges are relations that -connect nodes. -A node typically represents a specific entity (a person, a book, a sensor -reading, etc.) and an edge defines how one entity relates to another. - -![Three circles labeled "Mary", "Book", and "John", with an arrow labeled "bought" from "Mary" to "Book" and an arrow labeled "isFriendOf" from "Mary" to "John"](../../../../images/data-model-graph-relations.png) - -This paradigm of storing data feels natural because it closely matches the -cognitive model of humans. It is an expressive data model that allows you to -represent many problem domains and solve them with semantic queries and graph -analytics. - -## Beyond Graphs - -Not everything is a graph use case. ArangoDB lets you equally work with -structured, semi-structured, and unstructured data in the form of schema-free -JSON objects, without having to connect these objects to form a graph. - -![Person Mary, Book ArangoDB](../../../../images/data-model-document.png) - -Depending on your needs, you may mix graphs and unconnected data. -ArangoDB is designed from the ground up to support multiple data models with a -single, composable query language. - -```aql -FOR book IN Books - FILTER book.title == "Arango" - FOR person IN 2..2 INBOUND book transferred, OUTBOUND knows - RETURN person.name -``` - -ArangoDB also comes with an integrated search engine for information retrieval, -such as full-text search with relevance ranking. - -ArangoDB is written in C++ for high performance and built to work at scale, in -the cloud or on-premises. - -<!-- deployment options, move from features page, on-prem vs cloud? --> diff --git a/site/content/arangodb/3.13/about/features/_index.md b/site/content/arangodb/3.13/features/_index.md similarity index 89% rename from site/content/arangodb/3.13/about/features/_index.md rename to site/content/arangodb/3.13/features/_index.md index 674e603252..85b1f4bdde 100644 --- a/site/content/arangodb/3.13/about/features/_index.md +++ b/site/content/arangodb/3.13/features/_index.md @@ -1,7 +1,7 @@ --- title: Features and Capabilities menuTitle: Features -weight: 20 +weight: 10 description: >- ArangoDB is a graph database with a powerful set of features for data management and analytics, supported by a rich ecosystem of integrations and drivers @@ -23,7 +23,7 @@ See the full [Feature list of the ArangoDB database system](list.md). For a scalable architecture based on Kubernetes that supports the full offering of ArangoDB including graph-powered machine learning and GenAI features, see -the [Feature list of the ArangoDB Platform](../../../../data-platform/about/features.md). +the [Feature list of the ArangoDB Platform](../../../data-platform/about/features.md). ## On-premises versus Cloud @@ -43,7 +43,7 @@ variety of support plans to meet your needs. - Highly secure with encryption at transit and at rest - Includes elastic scalability for all deployment models (OneShard and Sharded clusters) -To learn more, go to the [ArangoGraph documentation](../../../../amp/_index.md). +To learn more, go to the [ArangoGraph documentation](../../../amp/_index.md). ### Self-managed in the cloud @@ -51,10 +51,10 @@ ArangoDB can be self-deployed on AWS or other cloud platforms, too. However, whe using a self-managed deployment, you take full control of managing the resources needed to run it in the cloud. This involves tasks such as configuring, provisioning, and monitoring the system. For more details, see -[self-deploying ArangoDB in the cloud](../../deploy/in-the-cloud.md). +[self-deploying ArangoDB in the cloud](../deploy/in-the-cloud.md). ArangoDB supports Kubernetes through its official -[Kubernetes Operator](../../deploy/kubernetes.md) that allows you to easily +[Kubernetes Operator](../deploy/kubernetes.md) that allows you to easily deploy and manage clusters within a Kubernetes environment. ### On-premises @@ -66,16 +66,16 @@ services. You can install ArangoDB locally by downloading and running the [official packages](https://arangodb.com/download/) or run it using -[Docker images](../../operations/installation/docker.md). +[Docker images](../operations/installation/docker.md). You can deploy it on-premises as a -[single server](../../deploy/single-instance/_index.md) -or as a [cluster](../../deploy/cluster/_index.md) +[single server](../deploy/single-instance/_index.md) +or as a [cluster](../deploy/cluster/_index.md) comprised of multiple nodes with synchronous replication and automatic failover for high availability and resilience. ArangoDB also integrates with Kubernetes, offering a -[Kubernetes Operator](../../deploy/kubernetes.md) that lets you deploy in your +[Kubernetes Operator](../deploy/kubernetes.md) that lets you deploy in your Kubernetes cluster. ## ArangoDB Editions diff --git a/site/content/arangodb/3.12/about/features/highlights-by-version.md b/site/content/arangodb/3.13/features/highlights-by-version.md similarity index 55% rename from site/content/arangodb/3.12/about/features/highlights-by-version.md rename to site/content/arangodb/3.13/features/highlights-by-version.md index df9c03fbf8..d8c369f251 100644 --- a/site/content/arangodb/3.12/about/features/highlights-by-version.md +++ b/site/content/arangodb/3.13/features/highlights-by-version.md @@ -5,8 +5,14 @@ weight: 15 description: >- The most notable features of the ArangoDB core database system, grouped by version aliases: - - ../../introduction/features/highlights-by-version + - ../introduction/features/highlights-by-version --- +## Version 3.13 + +- + +Also see [What's New in 3.13](../release-notes/version-3.13/whats-new-in-3-13.md). + ## Version 3.12 {{< info >}} @@ -17,240 +23,240 @@ See [ArangoDB Editions](_index.md#arangodb-editions) for details. **All Editions** -- [**Improved memory accounting**](../../release-notes/version-3.12/whats-new-in-3-12.md#improved-memory-accounting-and-usage): +- [**Improved memory accounting**](../release-notes/version-3.12/whats-new-in-3-12.md#improved-memory-accounting-and-usage): Better tracking and observability of memory consumption for ArangoDB deployments and reduced memory usage. -- [**`wildcard` Analyzer**](../../index-and-search/analyzers.md#wildcard): +- [**`wildcard` Analyzer**](../index-and-search/analyzers.md#wildcard): Accelerate `LIKE` searches with `_` and `%` wildcards against Views and inverted indexes with _n_-grams to quickly find candidate matches. -- [**Multi-dimensional indexes**](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): +- [**Multi-dimensional indexes**](../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): An index type to efficiently intersect multiple range queries, like finding all appointments that intersect a time range. Optionally with prefix fields, with support for using it as vertex-centric index in graph traversals. -- [**External versioning**](../../release-notes/version-3.12/whats-new-in-3-12.md#external-versioning-support): +- [**External versioning**](../release-notes/version-3.12/whats-new-in-3-12.md#external-versioning-support): Specify any top-level attribute to compare whether the version number is higher than the currently stored one when updating or replacing documents. -- [**Improved dump performance**](../../release-notes/version-3.12/whats-new-in-3-12.md#improved-dump-performance-and-size) +- [**Improved dump performance**](../release-notes/version-3.12/whats-new-in-3-12.md#improved-dump-performance-and-size) Create logical backups faster with arangodump thanks to parallel dumping at the shard level, as well as transfer compression and file splitting. -- [**Request and response compression**](../../release-notes/version-3.12/whats-new-in-3-12.md#transparent-compression-of-requests-and-responses-between-arangodb-servers-and-client-tools) +- [**Request and response compression**](../release-notes/version-3.12/whats-new-in-3-12.md#transparent-compression-of-requests-and-responses-between-arangodb-servers-and-client-tools) Speed up data transfers and reduce traffic with transparent compression of requests and responses between ArangoDB servers and client tools. {{% comment %}} Experimental feature in v3.12.4 -- [**Query plan caching**](../../aql/execution-and-performance/caching-query-plans.md) +- [**Query plan caching**](../aql/execution-and-performance/caching-query-plans.md) Reduce the total time for processing queries by avoiding to parse, plan, and optimize the same queries over and over again with an AQL execution plan cache. {{% /comment %}} **Enterprise Edition** -- [**ArangoSearch WAND optimization**](../../index-and-search/arangosearch/performance.md#wand-optimization): +- [**ArangoSearch WAND optimization**](../index-and-search/arangosearch/performance.md#wand-optimization): Retrieve search results for the highest-ranking matches from Views faster by defining a list of sort expressions to optimize. -Also see [What's New in 3.12](../../release-notes/version-3.12/whats-new-in-3-12.md). +Also see [What's New in 3.12](../release-notes/version-3.12/whats-new-in-3-12.md). ## Version 3.11 **All Editions** -- [**Parallel gather**](../../release-notes/version-3.11/whats-new-in-3-11.md#parallel-gather): +- [**Parallel gather**](../release-notes/version-3.11/whats-new-in-3-11.md#parallel-gather): Faster, more memory-efficient processing of cluster queries by combining results on Coordinators in parallel. -- [**Index cache refilling**](../../release-notes/version-3.11/whats-new-in-3-11.md#index-cache-refilling): +- [**Index cache refilling**](../release-notes/version-3.11/whats-new-in-3-11.md#index-cache-refilling): Automatically repopulate in-memory index caches after writes that affect an edge index or cache-enabled persistent indexes to maximize cache hits and thus query performance. **Enterprise Edition** -- [**ArangoSearch column cache**](../../release-notes/version-3.10/whats-new-in-3-10.md#arangosearch-column-cache-enterprise-edition): +- [**ArangoSearch column cache**](../release-notes/version-3.10/whats-new-in-3-10.md#arangosearch-column-cache-enterprise-edition): Always cache field normalization values, Geo Analyzer auxiliary data, stored values, primary sort columns, and primary key columns in memory to improve the performance of Views and inverted indexes. -- [**`geo_s2` Analyzer**](../../index-and-search/analyzers.md#geo_s2): +- [**`geo_s2` Analyzer**](../index-and-search/analyzers.md#geo_s2): Efficiently index geo-spatial data using different binary formats, tuning the size on disk, the precision, and query performance. -Also see [What's New in 3.11](../../release-notes/version-3.11/whats-new-in-3-11.md). +Also see [What's New in 3.11](../release-notes/version-3.11/whats-new-in-3-11.md). ## Version 3.10 **All Editions** -- [**Native ARM Support**](../../release-notes/version-3.10/whats-new-in-3-10.md#native-arm-support): +- [**Native ARM Support**](../release-notes/version-3.10/whats-new-in-3-10.md#native-arm-support): Packages for the ARM architecture are now available, including native support for Apple silicon. -- [**Computed Values**](../../concepts/data-structure/documents/computed-values.md): +- [**Computed Values**](../concepts/data-structure/documents/computed-values.md): Persistent document attributes that are generated when documents are created or modified, using an AQL expression. -- [**Inverted indexes**](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md): +- [**Inverted indexes**](../index-and-search/indexing/working-with-indexes/inverted-indexes.md): A new, eventually consistent index type that can accelerate a broad range of queries, providing similar search capabilities as `arangosearch` Views, but defined per collection and simpler to use. -- [**`search-alias` Views**](../../release-notes/version-3.10/whats-new-in-3-10.md#search-alias-views): +- [**`search-alias` Views**](../release-notes/version-3.10/whats-new-in-3-10.md#search-alias-views): Add inverted indexes to `search-alias` Views for searching multiple collections at once, with ranking and search highlighting capabilities, as a lightweight alternative to `arangosearch` Views. - **Persistent indexes**: - An optional [**In-memory Cache**](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values) - for faster lookups and [**Stored Values**](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes) + An optional [**In-memory Cache**](../index-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values) + for faster lookups and [**Stored Values**](../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes) to let persistent indexes cover additional attributes of projections. - **AQL Graph Traversals**: - [All Shortest Paths](../../aql/graphs/all-shortest-paths.md) allows you to query + [All Shortest Paths](../aql/graphs/all-shortest-paths.md) allows you to query for all paths of shortest length between two documents. **Enterprise Edition** -- [**EnterpriseGraphs**](../../graphs/enterprisegraphs/_index.md): A new specialized version of +- [**EnterpriseGraphs**](../graphs/enterprisegraphs/_index.md): A new specialized version of SmartGraphs, with an automatic sharding key selection. -- [**Search highlighting**](../../index-and-search/arangosearch/search-highlighting.md): +- [**Search highlighting**](../index-and-search/arangosearch/search-highlighting.md): Get the substring positions of matched terms, phrases, or _n_-grams. -- [**Nested search**](../../index-and-search/arangosearch/nested-search.md): +- [**Nested search**](../index-and-search/arangosearch/nested-search.md): Match arrays of objects with all the conditions met by a single sub-object, and define for how many of the elements this must be true. - **ArangoSearch**: - New [`minhash` Analyzer](../../index-and-search/analyzers.md#minhash) for locality-sensitive hashing + New [`minhash` Analyzer](../index-and-search/analyzers.md#minhash) for locality-sensitive hashing to approximate the Jaccard similarity, with inverted index and `arangosearch` View support that allows you to implement entity resolution. -- [**Parallelism for sharded graphs**](../../release-notes/version-3.10/whats-new-in-3-10.md#parallelism-for-sharded-graphs-enterprise-edition): +- [**Parallelism for sharded graphs**](../release-notes/version-3.10/whats-new-in-3-10.md#parallelism-for-sharded-graphs-enterprise-edition): Parallel execution of AQL traversal queries with many start nodes for all types of sharded graphs, leading to faster results. -- [**Traversal Projections**](../../release-notes/version-3.10/whats-new-in-3-10.md#traversal-projections-enterprise-edition): +- [**Traversal Projections**](../release-notes/version-3.10/whats-new-in-3-10.md#traversal-projections-enterprise-edition): Optimized data loading for AQL traversal queries if only a few document attributes are accessed. -- [**Read from followers in clusters**](../../develop/http-api/documents.md#read-from-followers): +- [**Read from followers in clusters**](../develop/http-api/documents.md#read-from-followers): Allow dirty reads so that Coordinators can read from any shard replica and not only from the leader, for scaling reads. -Also see [What's New in 3.10](../../release-notes/version-3.10/whats-new-in-3-10.md). +Also see [What's New in 3.10](../release-notes/version-3.10/whats-new-in-3-10.md). ## Version 3.9 **All Editions** - **ArangoSearch**: - New [**Segmentation Analyzer**](../../index-and-search/analyzers.md#segmentation) + New [**Segmentation Analyzer**](../index-and-search/analyzers.md#segmentation) for language-agnostic tokenization of text. - A [**Collation Analyzer**](../../index-and-search/analyzers.md#collation) + A [**Collation Analyzer**](../index-and-search/analyzers.md#collation) to honor the alphabetical order of the specified language in range queries. **Enterprise Edition** -- [**(Disjoint) SmartGraphs using SatelliteCollections**](../../graphs/smartgraphs/_index.md): +- [**(Disjoint) SmartGraphs using SatelliteCollections**](../graphs/smartgraphs/_index.md): SatelliteCollections can be used in (Disjoint) SmartGraphs to enable more local execution of graph queries. -Also see [What's New in 3.9](../../release-notes/version-3.9/whats-new-in-3-9.md). +Also see [What's New in 3.9](../release-notes/version-3.9/whats-new-in-3-9.md). ## Version 3.8 **All Editions** -- [**Weighted traversals**](../../release-notes/version-3.8/whats-new-in-3-8.md#weighted-traversals) - and [**k Paths**](../../release-notes/version-3.8/whats-new-in-3-8.md#k-paths): +- [**Weighted traversals**](../release-notes/version-3.8/whats-new-in-3-8.md#weighted-traversals) + and [**k Paths**](../release-notes/version-3.8/whats-new-in-3-8.md#k-paths): Two new AQL graph traversal methods to emit paths in order of increasing weights and to enumerate all paths between a start and a end node that match a given length. - **ArangoSearch**: - New [**Pipeline Analyzer**](../../index-and-search/analyzers.md#pipeline) + New [**Pipeline Analyzer**](../index-and-search/analyzers.md#pipeline) that allows you to combine multiple Analyzers, enabling case-insensitive _n_-gram-based fuzzy search and more. New - [**AQL Analyzer**](../../index-and-search/analyzers.md#aql) + [**AQL Analyzer**](../index-and-search/analyzers.md#aql) so that you can use an AQL query to pre-process and filter your data for indexing. Support for **geo-spatial queries** through new - [Geo](../../index-and-search/analyzers.md#geojson) - [Analyzers](../../index-and-search/analyzers.md#geopoint) and - [ArangoSearch Geo functions](../../aql/functions/arangosearch.md#geo-functions). - A new [**Stop words Analyzer**](../../index-and-search/analyzers.md#stopwords) that + [Geo](../index-and-search/analyzers.md#geojson) + [Analyzers](../index-and-search/analyzers.md#geopoint) and + [ArangoSearch Geo functions](../aql/functions/arangosearch.md#geo-functions). + A new [**Stop words Analyzer**](../index-and-search/analyzers.md#stopwords) that can be used standalone or in an Analyzer pipeline. -- A [**`WINDOW` operation**](../../aql/high-level-operations/window.md) for aggregations over +- A [**`WINDOW` operation**](../aql/high-level-operations/window.md) for aggregations over adjacent rows, value ranges or time windows. **Enterprise Edition** - **Encryption at Rest** utilizes - [hardware acceleration](../../release-notes/version-3.8/whats-new-in-3-8.md#encryption-at-rest) + [hardware acceleration](../release-notes/version-3.8/whats-new-in-3-8.md#encryption-at-rest) capabilities of modern CPUs. -Also see [What's New in 3.8](../../release-notes/version-3.8/whats-new-in-3-8.md). +Also see [What's New in 3.8](../release-notes/version-3.8/whats-new-in-3-8.md). ## Version 3.7 **All Editions** - **ArangoSearch**: - [Wildcard](../../aql/functions/arangosearch.md#like) and fuzzy search - ([Levenshtein distance](../../aql/functions/arangosearch.md#levenshtein_match) and - [_n_-gram based](../../aql/functions/arangosearch.md#ngram_match)), - enhanced [phrase and proximity search](../../aql/functions/arangosearch.md#phrase), + [Wildcard](../aql/functions/arangosearch.md#like) and fuzzy search + ([Levenshtein distance](../aql/functions/arangosearch.md#levenshtein_match) and + [_n_-gram based](../aql/functions/arangosearch.md#ngram_match)), + enhanced [phrase and proximity search](../aql/functions/arangosearch.md#phrase), improved late document materialization and - [Views covering queries](../../release-notes/version-3.7/whats-new-in-3-7.md#covering-indexes) + [Views covering queries](../release-notes/version-3.7/whats-new-in-3-7.md#covering-indexes) using their indexes without touching the storage engine, as well as a new SIMD-based index format for faster processing and - [stemming support](../../release-notes/version-3.7/whats-new-in-3-7.md#stemming-support-for-more-languages) + [stemming support](../release-notes/version-3.7/whats-new-in-3-7.md#stemming-support-for-more-languages) for 15 additional languages. -- [**Schema Validation**](../../concepts/data-structure/documents/schema-validation.md): +- [**Schema Validation**](../concepts/data-structure/documents/schema-validation.md): Enforce a JSON Schema for documents on collection level. Invalid documents can be rejected automatically by the database system, making it easy to maintain data quality. -- [**Insert-Update** and **Insert-Ignore**](../../release-notes/version-3.7/whats-new-in-3-7.md#insert-update-and-insert-ignore): +- [**Insert-Update** and **Insert-Ignore**](../release-notes/version-3.7/whats-new-in-3-7.md#insert-update-and-insert-ignore): New document API operations to upsert documents and to efficiently insert documents while skipping the creation if the document exists already. - **AQL**: - Improved [subquery](../../release-notes/version-3.7/whats-new-in-3-7.md#subquery-optimizations) and - [graph traversal performance](../../release-notes/version-3.7/whats-new-in-3-7.md#traversal-optimizations), + Improved [subquery](../release-notes/version-3.7/whats-new-in-3-7.md#subquery-optimizations) and + [graph traversal performance](../release-notes/version-3.7/whats-new-in-3-7.md#traversal-optimizations), among many optimizations and enhancements. -- [**HTTP/2 support**](../../release-notes/version-3.7/whats-new-in-3-7.md#http2-support): +- [**HTTP/2 support**](../release-notes/version-3.7/whats-new-in-3-7.md#http2-support): Better load-balancer and Kubernetes compatibility, improved request throughput. **Enterprise Edition** -- [**SatelliteGraphs**](../../release-notes/version-3.7/whats-new-in-3-7.md#satellitegraphs): +- [**SatelliteGraphs**](../release-notes/version-3.7/whats-new-in-3-7.md#satellitegraphs): Synchronously replicated graphs with local traversal execution. -- [**Disjoint SmartGraphs**](../../release-notes/version-3.7/whats-new-in-3-7.md#disjoint-smartgraphs): +- [**Disjoint SmartGraphs**](../release-notes/version-3.7/whats-new-in-3-7.md#disjoint-smartgraphs): Improve traversal execution times for SmartGraphs without edges between nodes with different SmartGraph attribute values. -- [**Traversal parallelization**](../../release-notes/version-3.7/whats-new-in-3-7.md#traversal-parallelization-enterprise-edition): +- [**Traversal parallelization**](../release-notes/version-3.7/whats-new-in-3-7.md#traversal-parallelization-enterprise-edition): Optional parallel execution of nested traversals for single servers and OneShard clusters. - **Security**: Added support for multiple - [JWT Secrets](../../release-notes/version-3.7/whats-new-in-3-7.md#jwt-secret-rotation-enterprise-edition) + [JWT Secrets](../release-notes/version-3.7/whats-new-in-3-7.md#jwt-secret-rotation-enterprise-edition) and the ability to hot-reload them from disk, - [TLS key and certificate rotation](../../release-notes/version-3.7/whats-new-in-3-7.md#tls-key-and-certificate-rotation), - [Encryption at rest key rotation](../../release-notes/version-3.7/whats-new-in-3-7.md#encryption-at-rest-key-rotation-enterprise-edition) - and [Server Name Indication (SNI)](../../release-notes/version-3.7/whats-new-in-3-7.md#server-name-indication-enterprise-edition). + [TLS key and certificate rotation](../release-notes/version-3.7/whats-new-in-3-7.md#tls-key-and-certificate-rotation), + [Encryption at rest key rotation](../release-notes/version-3.7/whats-new-in-3-7.md#encryption-at-rest-key-rotation-enterprise-edition) + and [Server Name Indication (SNI)](../release-notes/version-3.7/whats-new-in-3-7.md#server-name-indication-enterprise-edition). -Also see [What's New in 3.7](../../release-notes/version-3.7/whats-new-in-3-7.md). +Also see [What's New in 3.7](../release-notes/version-3.7/whats-new-in-3-7.md). ## Version 3.6 @@ -258,32 +264,32 @@ Also see [What's New in 3.7](../../release-notes/version-3.7/whats-new-in-3-7.md - **AQL**: Improved query performance thanks to - [early pruning](../../release-notes/version-3.6/whats-new-in-3-6.md#early-pruning-of-non-matching-documents), - [subquery splicing](../../release-notes/version-3.6/whats-new-in-3-6.md#subquery-splicing-optimization), - [late document materialization](../../release-notes/version-3.6/whats-new-in-3-6.md#late-document-materialization-rocksdb), - [parallelization](../../release-notes/version-3.6/whats-new-in-3-6.md#parallelization-of-cluster-aql-queries) for certain cluster queries - and more. New server-side [`maxRuntime`](../../aql/how-to-invoke-aql/with-arangosh.md#maxruntime) + [early pruning](../release-notes/version-3.6/whats-new-in-3-6.md#early-pruning-of-non-matching-documents), + [subquery splicing](../release-notes/version-3.6/whats-new-in-3-6.md#subquery-splicing-optimization), + [late document materialization](../release-notes/version-3.6/whats-new-in-3-6.md#late-document-materialization-rocksdb), + [parallelization](../release-notes/version-3.6/whats-new-in-3-6.md#parallelization-of-cluster-aql-queries) for certain cluster queries + and more. New server-side [`maxRuntime`](../aql/how-to-invoke-aql/with-arangosh.md#maxruntime) option for queries. - **ArangoSearch**: - New [Analyzer options](../../release-notes/version-3.6/whats-new-in-3-6.md#analyzers) for + New [Analyzer options](../release-notes/version-3.6/whats-new-in-3-6.md#analyzers) for edge _n_-grams (`text` Analyzer), UTF-8 encoded _n_-gram input and optional start/end markers (`ngram` Analyzer). Support for - [dynamic expressions](../../release-notes/version-3.6/whats-new-in-3-6.md#dynamic-search-expressions-with-arrays) + [dynamic expressions](../release-notes/version-3.6/whats-new-in-3-6.md#dynamic-search-expressions-with-arrays) using arrays (array comparison operators in `SEARCH` queries and the `TOKENS()` / `PHRASE()` functions accept arrays). Views can benefit from the SmartJoins optimization. **Enterprise Edition** -- [**OneShard**](../../deploy/oneshard.md) +- [**OneShard**](../deploy/oneshard.md) deployments offer a practicable solution that enables significant performance improvements by massively reducing cluster-internal communication. A database created with OneShard enabled is limited to a single DB-Server node but still replicated synchronously to ensure resilience. This configuration allows running transactions with ACID guarantees on shard leaders. -Also see [What's New in 3.6](../../release-notes/version-3.6/whats-new-in-3-6.md). +Also see [What's New in 3.6](../release-notes/version-3.6/whats-new-in-3-6.md). ## Version 3.5 @@ -291,62 +297,62 @@ Also see [What's New in 3.6](../../release-notes/version-3.6/whats-new-in-3-6.md - **ArangoSearch**: The search and ranking engine received an upgrade and now features - [Configurable Analyzers](../../index-and-search/analyzers.md), - [Sorted Views](../../index-and-search/arangosearch/performance.md#primary-sort-order) + [Configurable Analyzers](../index-and-search/analyzers.md), + [Sorted Views](../index-and-search/arangosearch/performance.md#primary-sort-order) and several improvements to the - [AQL integration](../../release-notes/version-3.5/whats-new-in-3-5.md#arangosearch). + [AQL integration](../release-notes/version-3.5/whats-new-in-3-5.md#arangosearch). - **AQL Graph Traversals**: - [k Shortest Paths](../../aql/graphs/k-shortest-paths.md) allows you to query not + [k Shortest Paths](../aql/graphs/k-shortest-paths.md) allows you to query not just for one shortest path between two documents but multiple, sorted by - length or weight. With [PRUNE](../../aql/graphs/traversals.md#pruning) you can + length or weight. With [PRUNE](../aql/graphs/traversals.md#pruning) you can stop walking down certain paths early in a graph traversal to improve its efficiency. -- [**Stream Transaction API**](../../develop/http-api/transactions/stream-transactions.md): +- [**Stream Transaction API**](../develop/http-api/transactions/stream-transactions.md): Perform multi-document transactions with individual begin and commit / abort commands using the new HTTP endpoints or via a supported driver. -- [**Time-to-Live**](../../index-and-search/indexing/basics.md#ttl-time-to-live-index) - [**Indexes**](../../index-and-search/indexing/working-with-indexes/ttl-indexes.md): +- [**Time-to-Live**](../index-and-search/indexing/basics.md#ttl-time-to-live-index) + [**Indexes**](../index-and-search/indexing/working-with-indexes/ttl-indexes.md): TTL indexes can be used to automatically remove documents in collections for use cases like expiring sessions or automatic purging of statistics or logs. -- [**Index Hints**](../../aql/high-level-operations/for.md#indexhint) & +- [**Index Hints**](../aql/high-level-operations/for.md#indexhint) & [**Named Indexes**](https://www.arangodb.com/learn/development/index-hints-named-indices/): Indexes can be given names and an optional AQL inline query option `indexHint` was added to override the internal optimizer decision on which index to utilize. -- [**Data Masking**](../../components/tools/arangodump/maskings.md): +- [**Data Masking**](../components/tools/arangodump/maskings.md): arangodump provides a convenient way to extract production data but mask critical information that should not be visible. **Enterprise Edition** -- [**Hot Backups**](../../operations/backup-and-restore.md#hot-backups): +- [**Hot Backups**](../operations/backup-and-restore.md#hot-backups): Create automatic, consistent backups of your cluster without noticeable impact on your production systems. In contrast to _arangodump_, hot backups are taken on the level of the underlying storage engine and hence both backup and restore are considerably faster. -- [**SmartJoins**](../../develop/smartjoins.md): +- [**SmartJoins**](../develop/smartjoins.md): Run joins between identically sharded collections with performance close to that of a local join operation. - **Advanced Data Masking**: There are additional - [data masking functions](../../components/tools/arangodump/maskings.md#masking-functions) + [data masking functions](../components/tools/arangodump/maskings.md#masking-functions) available in the Enterprise Edition, such as for substituting email addresses and phone numbers with similar looking pseudo-data. -Also see [What's New in 3.5](../../release-notes/version-3.5/whats-new-in-3-5.md). +Also see [What's New in 3.5](../release-notes/version-3.5/whats-new-in-3-5.md). ## Version 3.4 **All Editions** -- [**ArangoSearch**](../../index-and-search/arangosearch/_index.md): +- [**ArangoSearch**](../index-and-search/arangosearch/_index.md): Search and similarity ranking engine integrated natively into ArangoDB and AQL. ArangoSearch combines Boolean retrieval capabilities with generalized ranking algorithms (BM25, TFDIF). Support of e.g. relevance-based searching, @@ -355,32 +361,32 @@ Also see [What's New in 3.5](../../release-notes/version-3.5/whats-new-in-3-5.md query. Many specialized language Analyzers are already included for e.g. English, German, French, Chinese, Spanish and many other language. -- [**GeoJSON Support**](../../aql/functions/geo.md) and - [**S2 Geo Index**](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ArangoDB now supports all geo primitives. +- [**GeoJSON Support**](../aql/functions/geo.md) and + [**S2 Geo Index**](../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ArangoDB now supports all geo primitives. (Multi-)Point, (Multi-)LineStrings, (Multi-)Polygons or intersections can be defined and queried for. The Google S2 geo index is optimized for RocksDB and enables efficient querying. Geo query results are automatically visualized with an OpenStreetMap integration within the Query Editor of the web interface. -- [**Query Profiler**](../../aql/execution-and-performance/query-profiling.md): +- [**Query Profiler**](../aql/execution-and-performance/query-profiling.md): Enables the analysis of queries and adds additional information for the user to identify optimization potentials more easily. The profiler can be accessed via _arangosh_ with `db._profileQuery(...)` or via the *Profile* button in the Query Editor of the web interface. -- [**Streaming Cursors**](../../aql/how-to-invoke-aql/with-arangosh.md#stream): +- [**Streaming Cursors**](../aql/how-to-invoke-aql/with-arangosh.md#stream): Cursors requested with the stream option on make queries calculate results on the fly and make them available for the client in a streaming fashion, as soon as possible. - **RocksDB as Default Storage Engine**: With ArangoDB 3.4 the default - [storage engine](../../components/arangodb-server/storage-engine.md) for fresh installations will + [storage engine](../components/arangodb-server/storage-engine.md) for fresh installations will switch from MMFiles to RocksDB. Many optimizations have been made to RocksDB since the first release in 3.2. For 3.4 we optimized the binary storage format for improved insertion, implemented "optional caching", reduced the replication catch-up time and much more. -Also see [What's New in 3.4](../../release-notes/version-3.4/whats-new-in-3-4.md). +Also see [What's New in 3.4](../release-notes/version-3.4/whats-new-in-3-4.md). ## Version 3.3 @@ -392,30 +398,30 @@ Also see [What's New in 3.4](../../release-notes/version-3.4/whats-new-in-3-4.md Multi-datacenter support means you can fallback to a replica of your cluster in case of a disaster in one datacenter. -- [**Encrypted Backups**](../../components/tools/arangodump/examples.md#encryption): +- [**Encrypted Backups**](../components/tools/arangodump/examples.md#encryption): _arangodump_ can create backups encrypted with a secret key using AES256 block cipher. **All Editions** -- [**Server-level Replication**](../../release-notes/version-3.3/whats-new-in-3-3.md#server-level-replication): +- [**Server-level Replication**](../release-notes/version-3.3/whats-new-in-3-3.md#server-level-replication): In addition to per-database replication, there is now an additional `globalApplier`. Start the global replication on the Follower once and all current and future databases will be replicated from the Leader to the Follower automatically. -- [**Asynchronous Failover**](../../release-notes/version-3.3/whats-new-in-3-3.md#asynchronous-failover): +- [**Asynchronous Failover**](../release-notes/version-3.3/whats-new-in-3-3.md#asynchronous-failover): Make a single server instance resilient with a second server instance, one as Leader and the other as asynchronously replicating Follower, with automatic failover to the Follower if the Leader goes down. -Also see [What's New in 3.3](../../release-notes/version-3.3/whats-new-in-3-3.md). +Also see [What's New in 3.3](../release-notes/version-3.3/whats-new-in-3-3.md). ## Version 3.2 **All Editions** -- [**RocksDB Storage Engine**](../../components/arangodb-server/storage-engine.md): You can now use +- [**RocksDB Storage Engine**](../components/arangodb-server/storage-engine.md): You can now use as much data in ArangoDB as you can fit on your disk. Plus, you can enjoy performance boosts on writes by having only document-level locks. @@ -424,7 +430,7 @@ Also see [What's New in 3.3](../../release-notes/version-3.3/whats-new-in-3-3.md patterns, identify communities and perform in-depth analytics of large graph data sets. -- [**Fault-Tolerant Foxx**](../../develop/http-api/foxx.md): The Foxx management +- [**Fault-Tolerant Foxx**](../develop/http-api/foxx.md): The Foxx management internals have been rewritten from the ground up to make sure multi-coordinator cluster setups always keep their services in sync and new Coordinators are fully initialized even when all existing Coordinators @@ -436,22 +442,22 @@ Also see [What's New in 3.3](../../release-notes/version-3.3/whats-new-in-3-3.md can be managed from outside ArangoDB with an LDAP server in different authentication configurations. -- [**Encryption at Rest**](../../operations/security/encryption-at-rest.md): Let the server +- [**Encryption at Rest**](../operations/security/encryption-at-rest.md): Let the server persist your sensitive data strongly encrypted to protect it even if the physical storage medium gets stolen. -- [**SatelliteCollections**](../../develop/satellitecollections.md): Faster join operations when +- [**SatelliteCollections**](../develop/satellitecollections.md): Faster join operations when working with sharded datasets by synchronously replicating selected collections to all DB-Servers in a cluster, so that joins can be executed locally. -Also see [What's New in 3.2](../../release-notes/version-3.2/whats-new-in-3-2.md). +Also see [What's New in 3.2](../release-notes/version-3.2/whats-new-in-3-2.md). ## Version 3.1 **All Editions** -- [**Vertex-centric indexes**](../../index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md): +- [**Vertex-centric indexes**](../index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md): AQL traversal queries can utilize secondary edge collection indexes for better performance against graphs with supernodes. @@ -461,35 +467,35 @@ Also see [What's New in 3.2](../../release-notes/version-3.2/whats-new-in-3-2.md **Enterprise Edition** -- [**SmartGraphs**](../../graphs/smartgraphs/_index.md): Scale with graphs to a +- [**SmartGraphs**](../graphs/smartgraphs/_index.md): Scale with graphs to a cluster and stay performant. With SmartGraphs you can use the "smartness" of your application layer to shard your graph efficiently to your machines and let traversals run locally. -- **Encryption Control**: Choose your level of [SSL encryption](../../components/arangodb-server/options.md#ssl) +- **Encryption Control**: Choose your level of [SSL encryption](../components/arangodb-server/options.md#ssl) -- [**Auditing**](../../operations/security/audit-logging.md): Keep a detailed log +- [**Auditing**](../operations/security/audit-logging.md): Keep a detailed log of all the important things that happened in ArangoDB. -Also see [What's New in 3.1](../../release-notes/version-3.1/whats-new-in-3-1.md). +Also see [What's New in 3.1](../release-notes/version-3.1/whats-new-in-3-1.md). ## Version 3.0 -- [**self-organizing cluster**](../../deploy/cluster/_index.md) with +- [**self-organizing cluster**](../deploy/cluster/_index.md) with synchronous replication, master/master setup, shared nothing architecture, cluster management Agency. -- Deeply integrated, native [**AQL graph traversal**](../../aql/graphs/_index.md) +- Deeply integrated, native [**AQL graph traversal**](../aql/graphs/_index.md) - [**VelocyPack**](https://github.com/arangodb/velocypack) as new internal binary storage format as well as for intermediate AQL values. -- [**Persistent indexes**](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md) via RocksDB suitable +- [**Persistent indexes**](../index-and-search/indexing/working-with-indexes/persistent-indexes.md) via RocksDB suitable for sorting and range queries. -- [**Foxx 3.0**](../../develop/foxx-microservices/_index.md): overhauled JS framework for data-centric +- [**Foxx 3.0**](../develop/foxx-microservices/_index.md): overhauled JS framework for data-centric microservices -- Significantly improved [**Web Interface**](../../components/web-interface/_index.md) +- Significantly improved [**Web Interface**](../components/web-interface/_index.md) -Also see [What's New in 3.0](../../release-notes/version-3.0/whats-new-in-3-0.md). +Also see [What's New in 3.0](../release-notes/version-3.0/whats-new-in-3-0.md). diff --git a/site/content/arangodb/3.13/about/features/list.md b/site/content/arangodb/3.13/features/list.md similarity index 65% rename from site/content/arangodb/3.13/about/features/list.md rename to site/content/arangodb/3.13/features/list.md index eaadc86a3f..ee4006160b 100644 --- a/site/content/arangodb/3.13/about/features/list.md +++ b/site/content/arangodb/3.13/features/list.md @@ -6,20 +6,20 @@ description: >- All features of the ArangoDB database system, available in both the Community Edition and Enterprise Edition aliases: - - ../../introduction/features/community-edition - - ../../introduction/features/enterprise-edition + - ../introduction/features/community-edition + - ../introduction/features/enterprise-edition - community-edition - enterprise-edition --- ## General -- [**Graph Database**](../../concepts/data-models.md#graph-model): +- [**Graph Database**](../concepts/data-models.md#graph-model): Native support for storing and querying graphs comprised of nodes and edges. You can model complex domains because both nodes and edges are fully-fledged documents, without restrictions in complexity. Edges can connect node documents to express m:n relations with any depth. -- [**Document Database**](../../concepts/data-models.md#document-model): +- [**Document Database**](../concepts/data-models.md#document-model): A modern document database system that allows you to model data intuitively and evolve the data model easily. Documents can be organized in collections, and collections in databases for multi-tenancy. @@ -32,7 +32,7 @@ aliases: top and mix it with graph traversals, geo queries, aggregations, or any other supported access pattern. -- [**Data Format**](../../concepts/data-structure/_index.md#documents): +- [**Data Format**](../concepts/data-structure/_index.md#documents): JSON, internally stored in a binary format invented by ArangoDB called VelocyPack. @@ -42,12 +42,12 @@ aliases: documents, or graphs - perfect for social relations. Optional document validation using JSON Schema (draft-4, without remote schema support). -- [**Data Storage**](../../components/arangodb-server/storage-engine.md): +- [**Data Storage**](../components/arangodb-server/storage-engine.md): RocksDB storage engine to persist data and indexes on disk, with a hot set in memory. It uses journaling (write-ahead logging) and can take advantage of modern storage hardware, like SSDs and large caches. -- [**Computed Values**](../../concepts/data-structure/documents/computed-values.md): +- [**Computed Values**](../concepts/data-structure/documents/computed-values.md): Persistent document attributes that are generated when documents are created or modified, using an AQL expression. @@ -55,7 +55,7 @@ aliases: Use ArangoDB as a [fully managed service](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), self-managed in the cloud, or on-premises. -- [**Multiple Environments**](../../operations/installation/_index.md#supported-platforms-and-architectures): +- [**Multiple Environments**](../operations/installation/_index.md#supported-platforms-and-architectures): Run ArangoDB on Linux using the production-ready packages for the x86-64 architecture, on bare metal or in containers. Develop and test with ArangoDB on Windows, macOS, and Linux using the official @@ -63,17 +63,17 @@ aliases: ## Scalability & High Availability -- [**Hash-based sharding**](../../deploy/architecture/data-sharding.md): +- [**Hash-based sharding**](../deploy/architecture/data-sharding.md): Spread bigger datasets across multiple servers using consistent hashing on the default or custom shard keys. -- [**Synchronous Replication**](../../deploy/cluster/_index.md#synchronous-replication): +- [**Synchronous Replication**](../deploy/cluster/_index.md#synchronous-replication): Data changes are propagated to other cluster nodes immediately as part of an operation, and are only considered successful when the configured number of writes is reached. Synchronous replication works on a per-shard basis. For each collection, you can configure how many copies of each shard are kept in the cluster. -- [**Automatic Failover Cluster**](../../deploy/cluster/_index.md#automatic-failover): +- [**Automatic Failover Cluster**](../deploy/cluster/_index.md#automatic-failover): If a cluster node goes down, another node takes over to avoid downtime. - **Load-Balancer Support**: @@ -84,7 +84,7 @@ aliases: ## Querying -- [**Declarative Query Language for All Data Models**](../../aql/_index.md): +- [**Declarative Query Language for All Data Models**](../aql/_index.md): Powerful query language (AQL) to retrieve and modify data. Graph traversals, full-text searches, geo-spatial queries, and aggregations can be composed in a single query. @@ -92,40 +92,40 @@ aliases: ranges and time intervals. Cluster-distributed aggregation queries. -- [**Query Optimizer**](../../aql/execution-and-performance/query-optimization.md): +- [**Query Optimizer**](../aql/execution-and-performance/query-optimization.md): Cost-based query optimizer that takes index selectivity estimates into account. <!-- TODO: Explain, batching?, lazy evaluation (stream)? --> -- [**Query Profiling**](../../aql/execution-and-performance/query-profiling.md): +- [**Query Profiling**](../aql/execution-and-performance/query-profiling.md): Show detailed runtime information for AQL queries. -- [**Query Logging**](../../aql/execution-and-performance/query-logging.md): +- [**Query Logging**](../aql/execution-and-performance/query-logging.md): Store query metadata and analyze it directly in the database system to debug issues and understand usage patterns. -- [**Upsert Operations**](../../aql/examples-and-query-patterns/upsert-repsert-guide.md): +- [**Upsert Operations**](../aql/examples-and-query-patterns/upsert-repsert-guide.md): Support for insert-or-update (upsert), insert-or-replace (repsert), and insert-or-ignore requests, that result in one or the other operation depending on whether the target document exists already. -- [**Relational Joins**](../../aql/examples-and-query-patterns/joins.md): +- [**Relational Joins**](../aql/examples-and-query-patterns/joins.md): Joins similar to those in relational database systems can be leveraged to match up documents from different collections, allowing normalized data models. - **Advanced Path-Finding with Multiple Algorithms**: - Graphs can be [traversed](../../aql/graphs/traversals-explained.md) with AQL + Graphs can be [traversed](../aql/graphs/traversals-explained.md) with AQL in outbound, inbound, or both directions to retrieve direct and indirect neighbor nodes using a fixed or variable depth. - The [traversal order](../../aql/graphs/traversals.md) can be + The [traversal order](../aql/graphs/traversals.md) can be depth-first, breadth-first, or in order of increasing edge weights ("Weighted Traversals"). Stop conditions for pruning paths are supported. - Traversal algorithms to get a [shortest path](../../aql/graphs/shortest-path.md), - [all shortest paths](../../aql/graphs/all-shortest-paths.md), paths in order of - increasing length ("[k Shortest Paths](../../aql/graphs/k-shortest-paths.md)"), + Traversal algorithms to get a [shortest path](../aql/graphs/shortest-path.md), + [all shortest paths](../aql/graphs/all-shortest-paths.md), paths in order of + increasing length ("[k Shortest Paths](../aql/graphs/k-shortest-paths.md)"), and to enumerate all paths between two nodes - ("[k Paths](../../aql/graphs/k-paths.md)") are available, too. + ("[k Paths](../aql/graphs/k-paths.md)") are available, too. -- [**ArangoSearch for Text Search and Ranking**](../../index-and-search/arangosearch/_index.md): +- [**ArangoSearch for Text Search and Ranking**](../index-and-search/arangosearch/_index.md): A built-in search engine for full-text, complex data structures, and more. Exact value matching, range queries, prefix matching, case-insensitive and accent-insensitive search. Token, phrase, wildcard, and fuzzy search support @@ -134,51 +134,51 @@ aliases: Flexible data field pre-processing with custom queries and the ability to chain built-in and custom Analyzers. Language-agnostic tokenization of text. -- [**GeoJSON Support**](../../aql/functions/geo.md#geojson): +- [**GeoJSON Support**](../aql/functions/geo.md#geojson): Geographic data encoded in the popular GeoJSON format can be stored and used for geo-spatial queries. {{% comment %}} Experimental feature -- [**Query result spillover**](../../aql/how-to-invoke-aql/with-arangosh.md#spilloverthresholdmemoryusage): +- [**Query result spillover**](../aql/how-to-invoke-aql/with-arangosh.md#spilloverthresholdmemoryusage): AQL queries can store intermediate and final results temporarily on disk (also known as external result sets) to decrease memory usage when a specified threshold is reached. {{% /comment %}} {{% comment %}} Experimental feature -- [**Vector search**](../../index-and-search/indexing/working-with-indexes/vector-indexes.md): +- [**Vector search**](../index-and-search/indexing/working-with-indexes/vector-indexes.md): Find items with similar properties by comparing vector embeddings generated by machine learning models. {{% /comment %}} -- [**Search highlighting**](../../index-and-search/arangosearch/search-highlighting.md): +- [**Search highlighting**](../index-and-search/arangosearch/search-highlighting.md): Get the substring positions of matched terms, phrases, or _n_-grams. -- [**Nested search**](../../index-and-search/arangosearch/nested-search.md): +- [**Nested search**](../index-and-search/arangosearch/nested-search.md): Match arrays of objects with all the conditions met by a single sub-object, and define for how many of the elements this must be true. {{% comment %}} Experimental feature -- **[`classification`](../../index-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../../index-and-search/analyzers.md#nearest_neighbors)**: +- **[`classification`](../index-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../index-and-search/analyzers.md#nearest_neighbors)**: Classification of text tokens and finding similar tokens using supervised fastText word embedding models. {{% /comment %}} -- [**Skip inaccessible collections**](../../aql/how-to-invoke-aql/with-arangosh.md#skipinaccessiblecollections): +- [**Skip inaccessible collections**](../aql/how-to-invoke-aql/with-arangosh.md#skipinaccessiblecollections): Let AQL queries like graph traversals pretend that collections are empty if the user has no access to them instead of failing the query. ## Transactions -- [**AQL Queries**](../../aql/data-queries.md#transactional-execution): +- [**AQL Queries**](../aql/data-queries.md#transactional-execution): AQL queries are executed transactionally (with exceptions), either committing or rolling back data modifications automatically. -- [**Stream Transactions**](../../develop/http-api/transactions/stream-transactions.md): +- [**Stream Transactions**](../develop/http-api/transactions/stream-transactions.md): Transactions with individual begin and commit / abort commands that can span multiple AQL queries and API calls of supported APIs. -- [**JavaScript Transactions**](../../develop/http-api/transactions/javascript-transactions.md): +- [**JavaScript Transactions**](../develop/http-api/transactions/javascript-transactions.md): Single-request transactions written in JavaScript that leverage ArangoDB's JavaScript API. @@ -200,148 +200,148 @@ aliases: ## Performance -- [**SmartGraphs**](../../graphs/smartgraphs/_index.md): +- [**SmartGraphs**](../graphs/smartgraphs/_index.md): Value-based sharding of large graph datasets for better data locality when traversing graphs. -- [**EnterpriseGraphs**](../../graphs/enterprisegraphs/_index.md): +- [**EnterpriseGraphs**](../graphs/enterprisegraphs/_index.md): A specialized version of SmartGraphs, with an automatic sharding key selection. -- [**SmartGraphs using SatelliteCollections**](../../graphs/smartgraphs/_index.md): +- [**SmartGraphs using SatelliteCollections**](../graphs/smartgraphs/_index.md): Collections replicated on all cluster nodes can be combined with graphs sharded by document attributes to enable more local execution of graph queries. -- [**SatelliteGraphs**](../../graphs/satellitegraphs/_index.md): +- [**SatelliteGraphs**](../graphs/satellitegraphs/_index.md): Graphs replicated on all cluster nodes to execute graph traversals locally. -- [**SatelliteCollections**](../../develop/satellitecollections.md): +- [**SatelliteCollections**](../develop/satellitecollections.md): Collections replicated on all cluster nodes to execute joins with sharded data locally. -- [**SmartJoins**](../../develop/smartjoins.md): +- [**SmartJoins**](../develop/smartjoins.md): Co-located joins in a cluster using identically sharded collections. -- [**OneShard**](../../deploy/oneshard.md): +- [**OneShard**](../deploy/oneshard.md): Option to store all collections of a database on a single cluster node, to combine the performance of a single server and ACID semantics with a fault-tolerant cluster setup. -- [**Traversal**](../../release-notes/version-3.7/whats-new-in-3-7.md#traversal-parallelization-enterprise-edition) - [**Parallelization**](../../release-notes/version-3.10/whats-new-in-3-10.md#parallelism-for-sharded-graphs-enterprise-edition): +- [**Traversal**](../release-notes/version-3.7/whats-new-in-3-7.md#traversal-parallelization-enterprise-edition) + [**Parallelization**](../release-notes/version-3.10/whats-new-in-3-10.md#parallelism-for-sharded-graphs-enterprise-edition): Parallel execution of traversal queries with many start nodes, leading to faster results. -- [**Traversal Projections**](../../release-notes/version-3.10/whats-new-in-3-10.md#traversal-projections-enterprise-edition): +- [**Traversal Projections**](../release-notes/version-3.10/whats-new-in-3-10.md#traversal-projections-enterprise-edition): Optimized data loading for AQL traversal queries if only a few document attributes are accessed. -- [**Parallel index creation**](../../release-notes/version-3.10/whats-new-in-3-10.md#parallel-index-creation-enterprise-edition): +- [**Parallel index creation**](../release-notes/version-3.10/whats-new-in-3-10.md#parallel-index-creation-enterprise-edition): Non-unique indexes can be created with multiple threads in parallel. -- [**`minhash` Analyzer**](../../index-and-search/analyzers.md#minhash): +- [**`minhash` Analyzer**](../index-and-search/analyzers.md#minhash): Jaccard similarity approximation for entity resolution, such as for finding duplicate records, based on how many elements they have in common -- [**`geo_s2` Analyzer**](../../index-and-search/analyzers.md#geo_s2): +- [**`geo_s2` Analyzer**](../index-and-search/analyzers.md#geo_s2): Efficiently index geo-spatial data using different binary formats, tuning the size on disk, the precision, and query performance. -- [**ArangoSearch column cache**](../../release-notes/version-3.10/whats-new-in-3-10.md#arangosearch-column-cache-enterprise-edition): +- [**ArangoSearch column cache**](../release-notes/version-3.10/whats-new-in-3-10.md#arangosearch-column-cache-enterprise-edition): Always cache field normalization values, Geo Analyzer auxiliary data, stored values, primary sort columns, and primary key columns in memory to improve the performance of Views and inverted indexes. -- [**ArangoSearch WAND optimization**](../../index-and-search/arangosearch/performance.md#wand-optimization): +- [**ArangoSearch WAND optimization**](../index-and-search/arangosearch/performance.md#wand-optimization): Retrieve search results for the highest-ranking matches from Views faster by defining a list of sort expressions to optimize. -- [**Read from followers in clusters**](../../develop/http-api/documents.md#read-from-followers): +- [**Read from followers in clusters**](../develop/http-api/documents.md#read-from-followers): Allow dirty reads so that Coordinators can read from any shard replica and not only from the leader, for scaling reads. -- [**Persistent Indexes**](../../index-and-search/indexing/basics.md#persistent-index): +- [**Persistent Indexes**](../index-and-search/indexing/basics.md#persistent-index): Indexes are stored on disk to enable fast server restarts. You can create secondary indexes over one or multiple fields, optionally with a uniqueness constraint. A "sparse" option to only index non-null values is also available. The elements of an array can be indexed individually. -- [**Inverted indexes**](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md): +- [**Inverted indexes**](../index-and-search/indexing/working-with-indexes/inverted-indexes.md): An eventually consistent index type that can accelerate a broad range of queries from simple to complex, including full-text search. -- [**Vertex-centric Indexes**](../../index-and-search/indexing/basics.md#vertex-centric-indexes): +- [**Vertex-centric Indexes**](../index-and-search/indexing/basics.md#vertex-centric-indexes): Secondary indexes for more efficient graph traversals with filter conditions. -- [**Time-to-Live (TTL) Indexes**](../../index-and-search/indexing/basics.md#ttl-time-to-live-index): +- [**Time-to-Live (TTL) Indexes**](../index-and-search/indexing/basics.md#ttl-time-to-live-index): Time-based removal of expired documents. -- [**Geo-spatial Indexes**](../../index-and-search/indexing/basics.md#geo-index): +- [**Geo-spatial Indexes**](../index-and-search/indexing/basics.md#geo-index): Accelerated geo-spatial queries for locations and GeoJSON objects, based on the S2 library. <!-- TODO: list supported queries? Centroid-limitations? --> Support for composable, distance-based geo-queries ("geo cursors"). -- [**Multi-dimensional indexes**](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): +- [**Multi-dimensional indexes**](../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): An index type to efficiently intersect multiple range queries, like finding all appointments that intersect a time range. -- [**Background Indexing**](../../index-and-search/indexing/basics.md#creating-indexes-in-background): +- [**Background Indexing**](../index-and-search/indexing/basics.md#creating-indexes-in-background): Indexes can be created in the background to not block queries in the meantime. -- [**Index cache refilling**](../../release-notes/version-3.11/whats-new-in-3-11.md#index-cache-refilling): +- [**Index cache refilling**](../release-notes/version-3.11/whats-new-in-3-11.md#index-cache-refilling): In-memory index caches are automatically repopulated after writes that affect an edge index or cache-enabled persistent indexes to maximize cache hits and thus query performance. -- [**Extensive Query Optimization**](../../aql/execution-and-performance/query-optimization.md): +- [**Extensive Query Optimization**](../aql/execution-and-performance/query-optimization.md): Late document materialization to only fetch the relevant documents from SORT/LIMIT queries. Early pruning of non-matching documents in full collection scans. Inlining of certain subqueries to improve execution time. <!-- TODO, move to Querying? --> {{% comment %}} Experimental feature in v3.12.4 -- [**Query plan caching**](../../aql/execution-and-performance/caching-query-plans.md) +- [**Query plan caching**](../aql/execution-and-performance/caching-query-plans.md) Reduce the total time for processing queries by avoiding to parse, plan, and optimize the same queries over and over again with an AQL execution plan cache. {{% /comment %}} -- [**Parallel gather**](../../release-notes/version-3.11/whats-new-in-3-11.md#parallel-gather): +- [**Parallel gather**](../release-notes/version-3.11/whats-new-in-3-11.md#parallel-gather): Fast, memory-efficient processing of cluster queries by combining results in parallel. ## Extensibility -- [**Microservice Support with ArangoDB Foxx**](../../develop/foxx-microservices/_index.md): +- [**Microservice Support with ArangoDB Foxx**](../develop/foxx-microservices/_index.md): Use ArangoDB as an application server and fuse your application and database together for maximal throughput. With fault-tolerant cluster support. -- [**Server-Side Functions**](../../aql/user-defined-functions.md): +- [**Server-Side Functions**](../aql/user-defined-functions.md): You can extend AQL with user-defined functions written in JavaScript. ## Security -- [**Auditing**](../../operations/security/audit-logging.md): +- [**Auditing**](../operations/security/audit-logging.md): Audit logs of all server interactions. -- [**Encryption at Rest**](../../operations/security/encryption-at-rest.md): +- [**Encryption at Rest**](../operations/security/encryption-at-rest.md): Hardware-accelerated on-disk encryption for your data. -- [**Encrypted Backups**](../../components/tools/arangodump/examples.md#encryption): +- [**Encrypted Backups**](../components/tools/arangodump/examples.md#encryption): Data dumps can be encrypted using a strong 256-bit AES block cipher. -- [**Hot Backups**](../../operations/backup-and-restore.md#hot-backups): +- [**Hot Backups**](../operations/backup-and-restore.md#hot-backups): Consistent, incremental data backups without downtime for single servers and clusters. -- [**Enhanced Data Masking**](../../components/tools/arangodump/maskings.md#masking-functions): +- [**Enhanced Data Masking**](../components/tools/arangodump/maskings.md#masking-functions): Extended data masking capabilities for attributes containing sensitive data / PII when creating backups. - **Advanced Encryption and Security Configuration**: - Key rotation for [JWT secrets](../../develop/http-api/authentication.md#hot-reload-jwt-secrets) - and [on-disk encryption](../../develop/http-api/security.md#encryption-at-rest), - as well as [Server Name Indication (SNI)](../../components/arangodb-server/options.md#--sslserver-name-indication). + Key rotation for [JWT secrets](../develop/http-api/authentication.md#hot-reload-jwt-secrets) + and [on-disk encryption](../develop/http-api/security.md#encryption-at-rest), + as well as [Server Name Indication (SNI)](../components/arangodb-server/options.md#--sslserver-name-indication). -- [**Authentication**](../../operations/administration/user-management/_index.md): +- [**Authentication**](../operations/administration/user-management/_index.md): Built-in user management with password- and token-based authentication. - **Role-based Access Control**: @@ -349,15 +349,15 @@ aliases: microservice framework users can achieve very high security standards fitting individual needs. -- [**TLS Encryption**](../../components/arangodb-server/options.md#ssl): +- [**TLS Encryption**](../components/arangodb-server/options.md#ssl): Internal and external communication over encrypted network connections with TLS (formerly SSL). - [TLS key and certificate rotation](../../release-notes/version-3.7/whats-new-in-3-7.md#tls-key-and-certificate-rotation) + [TLS key and certificate rotation](../release-notes/version-3.7/whats-new-in-3-7.md#tls-key-and-certificate-rotation) is supported. ## Administration -- [**Web-based User Interface**](../../components/web-interface/_index.md): +- [**Web-based User Interface**](../components/web-interface/_index.md): Graphical UI for your browser to work with ArangoDB. It allows you to view, create, and modify databases, collections, documents, graphs, etc. You can also run, explain, and profile AQL queries. Includes a graph viewer @@ -367,16 +367,16 @@ aliases: View the status of your cluster and its individual nodes, and move and rebalance shards via the web interface. -- **[Backup](../../components/tools/arangodump/_index.md) and [Restore](../../components/tools/arangorestore/_index.md) Tools**: +- **[Backup](../components/tools/arangodump/_index.md) and [Restore](../components/tools/arangorestore/_index.md) Tools**: Multi-threaded dumping and restoring of collection settings and data in JSON format. Data masking capabilities for attributes containing sensitive data / PII when creating backups. -- **[Import](../../components/tools/arangoimport/_index.md) and [Export](../../components/tools/arangoexport/_index.md) Tools**: +- **[Import](../components/tools/arangoimport/_index.md) and [Export](../components/tools/arangoexport/_index.md) Tools**: CLI utilities to load and export data in multiple text-based formats. You can import from JSON, JSONL, CSV, and TSV files, and export to JSON, JSONL, CSV, TSV, XML, and XGMML files. -- [**Metrics**](../../develop/http-api/monitoring/metrics.md): +- [**Metrics**](../develop/http-api/monitoring/metrics.md): Monitor the healthiness and performance of ArangoDB servers using the metrics exported in the Prometheus format. diff --git a/site/content/arangodb/3.13/operations/administration/license-management.md b/site/content/arangodb/3.13/operations/administration/license-management.md index f51a1aeedf..951c08ce85 100644 --- a/site/content/arangodb/3.13/operations/administration/license-management.md +++ b/site/content/arangodb/3.13/operations/administration/license-management.md @@ -9,7 +9,7 @@ aliases: --- The Enterprise Edition of ArangoDB requires a license so that you can use ArangoDB for commercial purposes and have a dataset size over 100 GiB. See -[ArangoDB Editions](../../about/features/_index.md#arangodb-editions) +[ArangoDB Editions](../../features/_index.md#arangodb-editions) for details. How to set a license key and to retrieve information about the current license diff --git a/site/content/arangodb/3.13/about/use-cases.md b/site/content/arangodb/3.13/use-cases.md similarity index 76% rename from site/content/arangodb/3.13/about/use-cases.md rename to site/content/arangodb/3.13/use-cases.md index 0128025595..4bc8b2517e 100644 --- a/site/content/arangodb/3.13/about/use-cases.md +++ b/site/content/arangodb/3.13/use-cases.md @@ -19,7 +19,7 @@ more. ### Fraud Detection -{{< image src="../../../images/icon-fraud-detection.png" alt="Fraud Detection icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-fraud-detection.png" alt="Fraud Detection icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Uncover illegal activities by discovering difficult-to-detect patterns. ArangoDB lets you look beyond individual data points in disparate data sources, @@ -29,7 +29,7 @@ complex fraudulent behavior such as fraud rings. ### Recommendation Engine -{{< image src="../../../images/icon-recommendation-engine.png" alt="Recommendation Engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-recommendation-engine.png" alt="Recommendation Engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Suggest products, services, and information to users based on data relationships. For example, you can use ArangoDB together with PyTorch Geometric to build a @@ -39,7 +39,7 @@ with a graph neural network (GNN). ### Network Management -{{< image src="../../../images/icon-network-management.png" alt="Network Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-network-management.png" alt="Network Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Reduce downtime by connecting and visualizing network, infrastructure, and code. Network devices and how they interconnect can naturally be modeled as a graph. @@ -49,7 +49,7 @@ bandwidth into account when path-finding. ### Customer 360 -{{< image src="../../../images/icon-customer-360.png" alt="Customer 360 icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-customer-360.png" alt="Customer 360 icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Gain a complete understanding of your customers by integrating multiple data sources and code. ArangoDB can act as the platform to merge and consolidate @@ -58,7 +58,7 @@ track data origins using graph features. ### Identity and Access Management -{{< image src="../../../images/icon-identity-management.png" alt="Identity Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-identity-management.png" alt="Identity Management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Increase security and compliance by managing data access based on role and position. You can map out an organization chart as a graph and use ArangoDB to @@ -68,7 +68,7 @@ inheritance. ### Supply Chain -{{< image src="../../../images/icon-supply-chain.png" alt="Supply Chain icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-supply-chain.png" alt="Supply Chain icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Speed shipments by monitoring and optimizing the flow of goods through a supply chain. You can represent your inventory, supplier, and delivery @@ -84,7 +84,7 @@ and scalable data store. ### Content Management -{{< image src="../../../images/icon-content-management.png" alt="Content management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-content-management.png" alt="Content management icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Store information of any kind without upfront schema declaration. ArangoDB is schema-free, storing every data record as a self-contained document, allowing @@ -93,7 +93,7 @@ content management system on top of ArangoDB. ### E-Commerce Systems -{{< image src="../../../images/icon-e-commerce.png" alt="E-commerce icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-e-commerce.png" alt="E-commerce icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} ArangoDB combines data modeling freedom with strong consistency and resilience features to power online shops and ordering systems. Handle product catalog data @@ -102,7 +102,7 @@ checkouts with the necessary transactional guarantees. ### Internet of Things -{{< image src="../../../images/icon-internet-of-things.png" alt="Internet of things icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-internet-of-things.png" alt="Internet of things icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Collect sensor readings and other IoT data in ArangoDB for a single view of everything. Store all data points in the same system that also lets you run @@ -110,7 +110,7 @@ aggregation queries using sliding windows for efficient data analysis. ## ArangoDB as a Key-Value Database -{{< image src="../../../images/icon-key-value.png" alt="Key value icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-key-value.png" alt="Key value icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} Key-value stores are the simplest kind of database systems. Each record is stored as a block of data under a key that uniquely identifies the record. @@ -130,11 +130,11 @@ binary large objects (BLOBs) and works best with small to medium-sized JSON objects. For more information about how ArangoDB persists data, see -[Storage Engine](../components/arangodb-server/storage-engine.md). +[Storage Engine](components/arangodb-server/storage-engine.md). ## ArangoDB as a Search Engine -{{< image src="../../../images/icon-search-engine.png" alt="Search engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} +{{< image src="../../images/icon-search-engine.png" alt="Search engine icon" style="float: right; padding: 0 20px; margin-bottom: 20px;">}} ArangoDB has a natively integrated search engine for a broad range of information retrieval needs. It is powered by inverted indexes and can index @@ -148,7 +148,7 @@ It also features natural language processing (NLP) capabilities. and can classify or find similar terms using word embedding models. {{% /comment %}} -For more information about the search engine, see [ArangoSearch](../index-and-search/arangosearch/_index.md). +For more information about the search engine, see [ArangoSearch](index-and-search/arangosearch/_index.md). ## ArangoDB for Machine Learning @@ -161,4 +161,4 @@ ArangoDB integrates well into existing data infrastructures and provides connectors for popular machine learning frameworks and data processing ecosystems. -![Machine Learning Architecture of ArangoDB](../../../images/machine-learning-architecture.png) +![Machine Learning Architecture of ArangoDB](../../images/machine-learning-architecture.png) diff --git a/site/content/arangodb/_index.md b/site/content/arangodb/_index.md index d411197bc9..56103ad6a4 100644 --- a/site/content/arangodb/_index.md +++ b/site/content/arangodb/_index.md @@ -1,9 +1,70 @@ --- -title: Recommended Resources +title: About ArangoDB menuTitle: ArangoDB -weight: 3 -layout: default -# Remove this file because this isn't an actual page? -# With no content below, it shows cards for the version folders... +weight: 5 +description: >- + ArangoDB is a scalable graph database system to drive value from connected + data, faster +aliases: + - introduction + - introduction/about-arangodb --- -## ArangoDB database system \ No newline at end of file +![ArangoDB Overview Diagram](../images/arangodb-overview-diagram.png) + +ArangoDB combines the analytical power of native graphs with an integrated +search engine, JSON support, and a variety of data access patterns via a single, +composable query language. + +ArangoDB is available in a community and a commercial [edition](3.12/features/_index.md). +You can use it for on-premises deployments, as well as a fully managed +cloud service, the [Arango Managed Platform (AMP)](../amp/_index.md). + +## What are Graphs? + +Graphs are information networks composed of nodes and edges. + +![An arrow labeled as "Edge" pointing from one circle to another, both labeled "Node"](../images/data-model-graph-relation-abstract-edge.png) + +A social network is a common example of a graph. People are represented by nodes +and their friendships by relations. + +![Two circles labeled "Mary" and "John", with an arrow labeled "isFriendOf" pointing from "Mary" to "John"](../images/data-model-graph-relation-concrete.png) + +Nodes are also called vertices (singular: vertex), and edges are relations that +connect nodes. +A node typically represents a specific entity (a person, a book, a sensor +reading, etc.) and an edge defines how one entity relates to another. + +![Three circles labeled "Mary", "Book", and "John", with an arrow labeled "bought" from "Mary" to "Book" and an arrow labeled "isFriendOf" from "Mary" to "John"](../images/data-model-graph-relations.png) + +This paradigm of storing data feels natural because it closely matches the +cognitive model of humans. It is an expressive data model that allows you to +represent many problem domains and solve them with semantic queries and graph +analytics. + +## Beyond Graphs + +Not everything is a graph use case. ArangoDB lets you equally work with +structured, semi-structured, and unstructured data in the form of schema-free +JSON objects, without having to connect these objects to form a graph. + +![Person Mary, Book ArangoDB](../images/data-model-document.png) + +Depending on your needs, you may mix graphs and unconnected data. +ArangoDB is designed from the ground up to support multiple data models with a +single, composable query language. + +```aql +FOR book IN Books + FILTER book.title == "Arango" + FOR person IN 2..2 INBOUND book transferred, OUTBOUND knows + RETURN person.name +``` + +ArangoDB also comes with an integrated search engine for information retrieval, +such as full-text search with relevance ranking. + +ArangoDB is written in C++ for high performance and built to work at scale, in +the cloud or on-premises. + +<!-- deployment options, move from features page, on-prem vs cloud? --> From f703f6764c5e2388c2d1e4b46d69490e6bc3fa02 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Tue, 14 Oct 2025 16:06:02 +0200 Subject: [PATCH 25/69] Add brand colors as CSS variables --- .../arangodb-docs-theme/static/css/theme.css | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index 58f5604d3a..0f9ee51d9c 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -1,4 +1,45 @@ :root { + + --color-avocado: #044926; + --color-blue-tide: #02245f; + --color-electric-lime: #b9ff38; + --color-night: #151d25; + --color-seaglass: #016f73; + --color-plum: #470878; + --color-leaf-green: #58df20; + --color-meadow: #befe99; + --color-sunbeam: #fffc4e; + --color-mist: #f4f4f4; + --color-slate-blue: #4f6d8b; + --color-evergreen: #007339; + + --neutral-black: #000000; + --neutral-gray-darkest: #323b40; + --neutral-gray-darker: #435057; + --neutral-gray-dark: #576770; + --neutral-gray: #71808a; + --neutral-gray-light: #c2cbd5; + --neutral-gray-lighter: #e9f0f9; + --neutral-gray-lightest: #f7faff; + --neutral-white: #ffffff; + + --state-info: #76e7e7; + --state-info-dark: #006585; + --state-success: #85da66; + --state-success-dark: #3b7044; + --state-warning: #ffec44; + --state-warning-dark: #dc6409; + --state-danger: #dc084b; + --state-danger-dark: #8f001d; + + --font-headlines: "Urbanist", sans-serif; + --font-content: "Inter", sans-serif; + + /* + Rounding? + Icon set? + */ + --green-50: #e3f2e0; --green-100: #dcebd9; --green-200: #98D78C; From d6ee8be68afccbafe9324ced1a0676acf1a01667 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Tue, 14 Oct 2025 16:07:44 +0200 Subject: [PATCH 26/69] Use Urbanist font for lead paragraph and card titles --- .../arangodb-docs-theme/static/css/theme.css | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index 0f9ee51d9c..f734513645 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -491,11 +491,11 @@ a.section-link { } .card-title { + font-family: var(--font-headlines); font-weight: 600; text-overflow: ellipsis; overflow: hidden; - font-size: 20px; - line-height: 28px; + font-size: 1.3rem; color: var(--gray-950); } @@ -1373,7 +1373,7 @@ article.notfound { hgroup > h1, article > h2, article > h3, article > h4, article > h5, article > h6 { color: var(--HEADERS-COLOR); - font-family: "Urbanist", sans-serif; + font-family: var(--font-headlines); font-weight: var(--TYPOGRAPHY-BOLD-TEXT); overflow-wrap: break-word; } @@ -1478,8 +1478,9 @@ article ul li { } .lead { - font-size: 1.3em; - margin-bottom: 24px; + font-size: 1.3rem; + font-family: var(--font-headlines); + margin-bottom: 1.5rem; font-weight: 600; color: var(--gray-800); } @@ -1561,14 +1562,14 @@ li > code { .copy-to-clipboard-button::after{ content: 'Copy'; - font-family: 'Inter', sans-serif; + font-family: var(--font-content); padding: 0 5px; font-weight: bold; color: var(--green-700); } .copy-to-clipboard-button.tooltipped::after{ content: 'Copied'; - font-family: 'Inter', sans-serif; + font-family: var(--font-content) padding: 0 5px; font-weight: bold; color: var(--green-700); @@ -1600,7 +1601,7 @@ pre > code { pre > .code-show-more { font-size: 1rem; background: var(--gray-200); - font-family: "Inter", sans-serif; + font-family: var(--font-content); padding: 5px 5px; font-weight: 500; opacity: 0.7; From f26daae5c9cc13afc288048d997874a1f9814a4b Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Tue, 14 Oct 2025 16:08:30 +0200 Subject: [PATCH 27/69] Try electric lime as color for active nav items --- site/themes/arangodb-docs-theme/static/css/theme.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index f734513645..3650762cd6 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -1053,7 +1053,7 @@ header .logo { .sidebar ul.topics li.active > a > .menu-title, .sidebar ul.topics li.alwaysopen > a > .menu-title { font-weight: 400; - color: var(--green-300); + color: var(--color-electric-lime); } .sidebar ul li li { From 4974ac7418ad3a701f7e6cc9752ba67aa3e96ab6 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Fri, 24 Oct 2025 14:46:55 +0200 Subject: [PATCH 28/69] Squashed commit of the following: commit e043896ef9564a0b8a8cb5cd5c29cc4c662ad851 Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 23 12:53:43 2025 +0200 Move image, add View node option commit 49fbafa9687703267c3d238480746513f4c32b45 Merge: d6f3359c cdd39d59 Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 23 10:13:04 2025 +0200 Merge branch 'main' of https://github.com/arangodb/docs-hugo into DOC-799 commit d6f3359cc5b4e20d3bdf627701a33a2148ec2057 Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 23 10:12:58 2025 +0200 Review feedback, mention that nodes, edges, and theming is remembered commit cdd39d59b88f6db48f9d82b905238b88bb2375c4 Author: Simran Spiller <simran@arangodb.com> Date: Wed Oct 22 15:29:13 2025 +0200 Toolchain: Set go version for arangoproxy to 1.24.0 The trailing .0 unbreaks builds for Vadim commit 976bf21f08dd69ccab4b703e0cae9b66b4b1c8d8 Author: Simran <Simran-B@users.noreply.github.com> Date: Wed Oct 22 15:25:16 2025 +0200 Vector index no longer experimental (#803) * Vector index no longer experimental * Rename startup option * Mention previous startup option name in release notes commit 311dee37a09ccaa5adb49c9a38bc491cfeb167c5 Author: Simran <Simran-B@users.noreply.github.com> Date: Wed Oct 22 15:15:34 2025 +0200 DOC-816 | Deduced vertex collections from named graphs (#799) * Release notes * Fix typo * Remove mention of vertexCollections and add section about graph queries in cluster for path searches * Modify release notes example * Fix/unify examples commit c2609c781cacee599951b1f90a34d79e745c6efb Author: Simran <Simran-B@users.noreply.github.com> Date: Wed Oct 22 15:07:29 2025 +0200 Vector indexes support filtering (#791) commit 4b7ab179c7ad28c7c5529015cf15634f5e97be5c Author: Simran <Simran-B@users.noreply.github.com> Date: Wed Oct 22 15:02:22 2025 +0200 Unexpected Content-Length headers or invalid URLs report errors instead of closing connections (#795) commit 57056a09307d3de8daf6b0feb55f1b618ec00761 Author: Simran <Simran-B@users.noreply.github.com> Date: Wed Oct 22 14:54:05 2025 +0200 DOC-805 | Extended memory accounting: COLLECT and MERGE() (#808) * Release notes for improved memory accounting: MERGE(), RETURN DISTINCT, and certain COLLECT operations * Mention already merged tracking features of internal buffers * Mention execution block tracking commit 7efadc390d97185e36c1770575687f132dec08a0 Author: Simran <Simran-B@users.noreply.github.com> Date: Wed Oct 22 14:22:40 2025 +0200 Release notes for @PID@ and @TEMP_BASE_DIR@ startup option placeholders (#790) commit 3a78aec5d26f58c1058a322d1d5d2c5c723fec9c Author: Simran <Simran-B@users.noreply.github.com> Date: Wed Oct 22 14:21:53 2025 +0200 RocksDB upgrade to 9.5.0 release notes (#710) * WIP: RocksDB upgrade to 9.5.0 release notes * Throttling wasn't changed * Apply to 3.13 * Clarify units * Some RocksDB startup option defaults have been reverted * Fix merge error * Fix merge mistake --------- Co-authored-by: Paula Mihu <97217318+nerpaula@users.noreply.github.com> commit d596f51d616abbd909c7632f960467e150628442 Author: Simran <Simran-B@users.noreply.github.com> Date: Wed Oct 22 14:13:31 2025 +0200 Sparse vector indexes (#770) * Vector index type now supports sparse option * Use same wording for sparse HTTP API docs, replace hash with persistent index, fix statements about estimates --------- Co-authored-by: Paula Mihu <97217318+nerpaula@users.noreply.github.com> commit 3de2dbfa4e3564de24d8868d8b368e0f71b9003f Author: Simran <Simran-B@users.noreply.github.com> Date: Wed Oct 22 14:10:36 2025 +0200 Release notes about deprecation of --rocksdb.transaction-lock-timeout startup option (#762) Co-authored-by: Paula Mihu <97217318+nerpaula@users.noreply.github.com> commit 73428ea3272893839a4112a6cf30d93221efb9c2 Author: Simran <Simran-B@users.noreply.github.com> Date: Wed Oct 22 14:09:39 2025 +0200 DOC-776 | AQL query recording (#735) * AQL query recording API * Fix text about startup option, add more status codes * Rework release notes, adjust attribute names * Fix copy-paste mistake * Per Coordinator recording in clusters * fix merge error --------- Co-authored-by: Paula Mihu <97217318+nerpaula@users.noreply.github.com> Co-authored-by: Paula <paula.mihu@arangodb.com> commit 85de2a392eec3ade8b5c59a36820ab91c2eb19ff Author: Simran <Simran-B@users.noreply.github.com> Date: Wed Oct 22 14:08:47 2025 +0200 DOC-772 | `GEO_POINT()` accepts elevation but z coordinate is ignored in geo functions / validation of points in `GEO_MULTIPOINT()` and `GEO_(MULTI_)LINESTRING` (#733) * GEO_POINT() accepts elevation but z coordinate is ignored in geo functions * Add more details * Add introduced in 3.11 * Add release notes about point validation in AQL GeoJSON functions * Fix order --------- Co-authored-by: Paula Mihu <97217318+nerpaula@users.noreply.github.com> commit 9cc6d8159bde3138987f4635d3d4485e6f37c767 Author: Simran <Simran-B@users.noreply.github.com> Date: Wed Oct 22 14:05:25 2025 +0200 DOC-765 | Cosine similarity fix for vector indexes (#719) * Initial reference docs about the vector index * HTTP API docs and refinements * Version remark, OpenAPI minItems/maxItems and fix a type * inBackground and parallelism are supported * Review feedback, address cosine metric issue, reword inBackground, add parallelism * Remove leftover line * Add internal links to release notes * Cosine similarity value out of range has been fixed * Add innerProduct metric --------- Co-authored-by: Paula Mihu <97217318+nerpaula@users.noreply.github.com> commit 4f7090eb4862c9fc3de1b48be95e4f1d45258926 Author: Simran Spiller <simran@arangodb.com> Date: Wed Oct 22 14:04:12 2025 +0200 Toolchain: Set lower 1.24 Go version as minimum for arangoproxy Go 1.25 is only available in alpine:edge at the moment commit 6594ebc7c129b027e9bb247232e4ebb92f83d649 Author: Simran Spiller <simran@arangodb.com> Date: Wed Oct 22 13:25:11 2025 +0200 Fix path for icon shortcode commit c12be470dbcf952e6a3ba0b07af11e5c5304fd1a Author: Simran Spiller <simran@arangodb.com> Date: Wed Oct 22 13:17:25 2025 +0200 Review feedback commit 14003ceb9b0373feb61a6a173c66ac873bc5ba09 Author: Simran Spiller <simran@arangodb.com> Date: Wed Oct 22 13:14:53 2025 +0200 Change icon shortcode image path commit 1fc696fc00c87daae08ed3488923908407416cec Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 21 23:23:28 2025 +0200 Icons: Move settings icon to the canvas center commit 9b3b338beb176efc81badfe73db89f9d9dfa7879 Author: Michele Rastelli <michele@arangodb.com> Date: Tue Oct 14 16:49:33 2025 +0200 updated ArangoDB Tinkerpop Provider limitations (#806) commit cc2db4dd5912a01901e8a6db6741bc0458a86d82 Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 16:13:52 2025 +0200 Fix edge styling options commit 4492cf61d4da567d594de9c26e5326c3767f83ec Author: Michele Rastelli <michele@arangodb.com> Date: Tue Oct 14 15:53:54 2025 +0200 [DE-1040] ArangoDB Tinkerpop Provider: initial documentation (#750) * ArangoDB Tinkerpop Provider: initial documentation * fixed links * review * updated GraphFeatures * doc: gremlin console (DE-1062) * doc: gremlin server (DE-1061) * updated tinkerpop version to 3.7.4 * doc: fix complex id format * removed collection name prefix restriction * configurable label field name (DE-1070) * query optimizations * review; add content to all versions * keep vertex instead of node to align with tinkerpop concepts and terminology --------- Co-authored-by: Paula Mihu <97217318+nerpaula@users.noreply.github.com> Co-authored-by: Paula <paula.mihu@arangodb.com> commit c38b58e7ac4aabe9151be286d37c43c0f51319c0 Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 15:49:27 2025 +0200 Minor fixes commit f1600ef528a8d038037e8cdcd93c6166f23db9d2 Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 15:36:28 2025 +0200 Update visual customization part commit 144f44d80a89ff6436ee50a598b7b6695d61470d Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 15:36:02 2025 +0200 Extend README for icon shortcode commit 22d82c8ed21b251a07839bd6237ed2f9ed1d6e6f Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 11:37:39 2025 +0200 Rename icon files and mention icon shortcode to README commit 62860ef73a08efc9e97072d5549236485905295e Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 11:00:24 2025 +0200 DOC-813 | Implement icon shortcode and add Graph Visualizer icons commit 0f718a1512c149ccbe5a02709b23308fa3c9db7a Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 10:59:15 2025 +0200 Update descriptions commit 5ee3e0dfd451fb9da480703db571d4b59c2b6aac Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 10:22:55 2025 +0200 Update customization screenshot commit 4d61a71ef25a0d971f4434838e17edef0d000ba1 Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 9 12:39:09 2025 +0200 Icon shortcode prototype commit c595f250cb05fcf2b0070b0700f67e7a2f122d01 Merge: 155a71a0 8a3c37dd Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 9 10:27:01 2025 +0200 Merge branch 'main' of https://github.com/arangodb/docs-hugo into DOC-799 commit 155a71a053be48a63b83271f92304055e9b715ed Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 9 10:26:51 2025 +0200 Update Visualizer screenshots commit 8a3c37dd3e84311bac536d064aca6ac7c66f564e Author: Paula Mihu <97217318+nerpaula@users.noreply.github.com> Date: Tue Oct 7 16:06:14 2025 +0200 OAS-11485 | Add warning regarding single server upgrade to cluster in ArangoGraph (#798) * add warning regarding single server upgrade to cluster * apply to 3.11 as well commit a570281d2c91207580ceae8e6a7b491964ee82ba Author: Paula Mihu <97217318+nerpaula@users.noreply.github.com> Date: Tue Oct 7 16:03:49 2025 +0200 move gae content into genai chapter (#796) commit 1f925ce359ae4fc9596b117e6048363f14b2d47c Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 2 09:55:57 2025 +0200 WIP --- README.md | 19 + site/content/amp/deployments/_index.md | 21 +- .../guides/authentication-and-sessions.md | 4 +- .../indexing/index-utilization.md | 5 +- .../3.11/data-science/graph-analytics.md | 716 --------------- .../guides/authentication-and-sessions.md | 4 +- .../3.11/develop/http-api/indexes/_index.md | 4 +- .../3.11/develop/integrations/_index.md | 9 + .../indexing/index-utilization.md | 5 +- .../arangodb/3.12/aql/functions/geo.md | 213 +++-- .../arangodb/3.12/aql/functions/vector.md | 118 ++- .../3.12/aql/graphs/all-shortest-paths.md | 50 ++ .../arangodb/3.12/aql/graphs/k-paths.md | 51 ++ .../3.12/aql/graphs/k-shortest-paths.md | 51 ++ .../arangodb/3.12/aql/graphs/shortest-path.md | 48 + .../arangodb/3.12/aql/graphs/traversals.md | 47 +- .../3.12/develop/http-api/indexes/_index.md | 4 +- .../http-api/indexes/multi-dimensional.md | 5 +- .../develop/http-api/indexes/persistent.md | 5 +- .../3.12/develop/http-api/indexes/vector.md | 20 +- .../3.12/develop/http-api/monitoring/logs.md | 246 ++++- .../3.12/develop/integrations/_index.md | 9 + .../arangodb-tinkerpop-provider.md | 841 ++++++++++++++++++ site/content/arangodb/3.12/features/list.md | 2 - .../indexing/which-index-to-use-when.md | 26 +- .../working-with-indexes/vector-indexes.md | 41 +- .../version-3.12/api-changes-in-3-12.md | 15 +- .../incompatible-changes-in-3-12.md | 89 ++ .../version-3.12/whats-new-in-3-12.md | 211 ++++- .../arangodb/3.13/aql/functions/geo.md | 213 +++-- .../arangodb/3.13/aql/functions/vector.md | 118 ++- .../3.13/aql/graphs/all-shortest-paths.md | 52 ++ .../arangodb/3.13/aql/graphs/k-paths.md | 53 ++ .../3.13/aql/graphs/k-shortest-paths.md | 53 ++ .../arangodb/3.13/aql/graphs/shortest-path.md | 50 ++ .../arangodb/3.13/aql/graphs/traversals.md | 55 +- .../arangodb/3.13/components/platform.md | 247 ----- site/content/arangodb/3.13/deploy/_index.md | 2 +- .../http-api/indexes/multi-dimensional.md | 5 +- .../develop/http-api/indexes/persistent.md | 5 +- .../3.13/develop/http-api/indexes/vector.md | 20 +- .../3.13/develop/http-api/monitoring/logs.md | 246 ++++- .../arangodb-tinkerpop-provider.md | 841 ++++++++++++++++++ site/content/arangodb/3.13/features/list.md | 2 - .../indexing/which-index-to-use-when.md | 26 +- .../working-with-indexes/vector-indexes.md | 38 +- .../version-3.12/api-changes-in-3-12.md | 15 +- .../incompatible-changes-in-3-12.md | 89 ++ .../version-3.12/whats-new-in-3-12.md | 211 ++++- .../content/data-platform/graph-visualizer.md | 308 +++++-- site/content/gen-ai/graph-analytics.md | 40 +- site/content/gen-ai/graph-to-ai.md | 12 +- .../images/graph-visualizer-add-nodes.png | Bin 26034 -> 28310 bytes .../images/graph-visualizer-create-edge.png | Bin 8632 -> 10029 bytes .../images/graph-visualizer-customization.png | Bin 17314 -> 17394 bytes .../graph-visualizer-menu-canvas-action.png | Bin 11317 -> 15060 bytes .../graph-visualizer-node-properties.png | Bin 19492 -> 20966 bytes .../images/graph-visualizer-queries.png | Bin 17781 -> 16054 bytes site/content/images/graph-visualizer.png | Bin 151576 -> 158120 bytes site/content/images/icons/caret-left.svg | 1 + site/content/images/icons/caret-right.svg | 1 + site/content/images/icons/clear.svg | 1 + site/content/images/icons/delete.svg | 1 + site/content/images/icons/download.svg | 1 + site/content/images/icons/duplicate.svg | 1 + site/content/images/icons/edit-square.svg | 1 + site/content/images/icons/edit.svg | 1 + site/content/images/icons/fit.svg | 1 + site/content/images/icons/rerun.svg | 1 + site/content/images/icons/reset-all.svg | 1 + site/content/images/icons/reset.svg | 1 + site/content/images/icons/run.svg | 1 + site/content/images/icons/save.svg | 1 + site/content/images/icons/select-all.svg | 1 + site/content/images/icons/settings.svg | 3 + site/content/images/icons/sort-by.svg | 1 + site/content/images/icons/swap.svg | 1 + site/content/images/icons/zoom-in.svg | 1 + site/content/images/icons/zoom-out.svg | 1 + .../layouts/shortcodes/icon.html | 10 + .../arangodb-docs-theme/static/css/theme.css | 13 + toolchain/arangoproxy/go.mod | 2 +- 82 files changed, 4200 insertions(+), 1427 deletions(-) delete mode 100644 site/content/arangodb/3.11/data-science/graph-analytics.md create mode 100644 site/content/arangodb/3.12/develop/integrations/arangodb-tinkerpop-provider.md delete mode 100644 site/content/arangodb/3.13/components/platform.md create mode 100644 site/content/arangodb/3.13/develop/integrations/arangodb-tinkerpop-provider.md create mode 100644 site/content/images/icons/caret-left.svg create mode 100644 site/content/images/icons/caret-right.svg create mode 100644 site/content/images/icons/clear.svg create mode 100644 site/content/images/icons/delete.svg create mode 100644 site/content/images/icons/download.svg create mode 100644 site/content/images/icons/duplicate.svg create mode 100644 site/content/images/icons/edit-square.svg create mode 100644 site/content/images/icons/edit.svg create mode 100644 site/content/images/icons/fit.svg create mode 100644 site/content/images/icons/rerun.svg create mode 100644 site/content/images/icons/reset-all.svg create mode 100644 site/content/images/icons/reset.svg create mode 100644 site/content/images/icons/run.svg create mode 100644 site/content/images/icons/save.svg create mode 100644 site/content/images/icons/select-all.svg create mode 100644 site/content/images/icons/settings.svg create mode 100644 site/content/images/icons/sort-by.svg create mode 100644 site/content/images/icons/swap.svg create mode 100644 site/content/images/icons/zoom-in.svg create mode 100644 site/content/images/icons/zoom-out.svg create mode 100644 site/themes/arangodb-docs-theme/layouts/shortcodes/icon.html diff --git a/README.md b/README.md index 530c4c1c7e..1df0c38a87 100644 --- a/README.md +++ b/README.md @@ -429,6 +429,25 @@ Available attributes: - `class`: CSS classes to apply - `style`: CSS inline styles to apply +#### Icons + +If a web interface uses icons, especially as buttons without labels, use +the `icon` shortcode to inline an SVG file for a visual reference as +demonstrated below: + +```markdown +Select all nodes ({{< icon "select-all" >}}), then right-click. +``` + +Icons are supposed to supplement the text, i.e. not be embedded in sentences. +They are hidden from screen readers. + +To add new icons to the toolchain, save them to `site/content/images/icons/`. +They are referenced by file name (without extension) in the shortcode. + +SVG icon files should not define the attributes `width`, `height`, `aria-hidden`, +and `focusable` on the `<svg>` tag. + #### Keyboard shortcuts To document hotkeys and key combinations to press in a terminal or graphical diff --git a/site/content/amp/deployments/_index.md b/site/content/amp/deployments/_index.md index b518164516..3c9f76d3b1 100644 --- a/site/content/amp/deployments/_index.md +++ b/site/content/amp/deployments/_index.md @@ -237,6 +237,11 @@ attached to your role. Read more about [roles and permissions](../security-and-a - Change the deployment name - Change the deployment description 4. In the **Sizing** section, you can do the following: + + {{< tip >}} + Before changing deployment models, especially from **Single Server** to clustered configurations, + consider creating a backup of your data. + {{< /tip >}} - Change **OneShard** deployments into **Sharded** deployments. To do so, select **Sharded** in the **Model** dropdown list. You can select the number of nodes for your deployment. This can also be modified later on. @@ -245,7 +250,12 @@ attached to your role. Read more about [roles and permissions](../security-and-a {{< /warning >}} - Change **Single Server** deployments into **OneShard** or **Sharded** deployments. {{< warning >}} - You cannot switch from **Sharded** or **OneShard** back to **Single Server**. + **Important considerations for Single Server upgrades:** + - You cannot switch from **Sharded** or **OneShard** back to **Single Server**. + - Changing **Single Server** deployments into **OneShard** or **Sharded** deployments + will cause downtime and may take a considerable amount of time to complete. Plan this switch + during a maintenance window when your application can tolerate service interruption. + Your data remains safe throughout the process. {{< /warning >}} - Scale up or down the node size. {{< warning >}} @@ -284,6 +294,15 @@ application has to handle connection failures by retrying operations if needed. ## How to pause a deployment +1. In the __Deployments__ page, click the deployment you wish to pause. +2. Click the __Delete/Lock__ entry in the navigation. +3. Click the __Pause deployment...__ button. +4. To resume the deployment, go to the __Overview__ tab and click __Resume deployment__. The + deployment being paused displays the __Hibernated__ status until it has been + successfully resumed. + +## How to pause a deployment + 1. In the __Deployments__ page, click the deployment you wish to pause. 2. Click the __Delete/Lock__ entry in the navigation. 3. Click the __Pause deployment...__ button. diff --git a/site/content/arangodb/3.10/develop/foxx-microservices/guides/authentication-and-sessions.md b/site/content/arangodb/3.10/develop/foxx-microservices/guides/authentication-and-sessions.md index 2307728d20..9b77d01f3e 100644 --- a/site/content/arangodb/3.10/develop/foxx-microservices/guides/authentication-and-sessions.md +++ b/site/content/arangodb/3.10/develop/foxx-microservices/guides/authentication-and-sessions.md @@ -23,7 +23,7 @@ authentication. In this example we'll use two collections: a `users` collection to store the user objects with names and credentials, and a `sessions` collection to store the session data. We'll also make sure usernames are unique -by adding a hash index: +by adding a `persistent` index: ```js "use strict"; @@ -37,7 +37,7 @@ if (!db._collection(sessions)) { db._createDocumentCollection(sessions); } module.context.collection("users").ensureIndex({ - type: "hash", + type: "persistent", unique: true, fields: ["username"] }); diff --git a/site/content/arangodb/3.10/index-and-search/indexing/index-utilization.md b/site/content/arangodb/3.10/index-and-search/indexing/index-utilization.md index c6d239b7ef..46a4592bb0 100644 --- a/site/content/arangodb/3.10/index-and-search/indexing/index-utilization.md +++ b/site/content/arangodb/3.10/index-and-search/indexing/index-utilization.md @@ -19,8 +19,9 @@ It is often beneficial to create an index on more than just one attribute. By ad to an index, an index can become more selective and thus reduce the number of documents that queries need to process. -ArangoDB's primary indexes, edges indexes and hash indexes will automatically provide selectivity -estimates. Index selectivity estimates are provided in the web interface, the `indexes()` return +ArangoDB's `primary` and `edge` indexes automatically provide selectivity estimates. +The `persistent`, `mdi`, and `mdi-prefixed` indexes do too, by default. +Index selectivity estimates are provided in the web interface, the `indexes()` return value and in the `explain()` output for a given query. The more selective an index is, the more documents it will filter on average. The index selectivity diff --git a/site/content/arangodb/3.11/data-science/graph-analytics.md b/site/content/arangodb/3.11/data-science/graph-analytics.md deleted file mode 100644 index dca26ae758..0000000000 --- a/site/content/arangodb/3.11/data-science/graph-analytics.md +++ /dev/null @@ -1,716 +0,0 @@ ---- -title: Graph Analytics -menuTitle: Graph Analytics -weight: 123 -description: | - ArangoGraph offers Graph Analytics Engines to run graph algorithms on your - data separately from your ArangoDB deployments ---- -Graph analytics is a branch of data science that deals with analyzing information -networks known as graphs, and extracting information from the data relationships. -It ranges from basic measures that characterize graphs, over PageRank, to complex -algorithms. Common use cases include fraud detection, recommender systems, -and network flow analysis. - -ArangoDB offers a feature for running algorithms on your graph data, -called Graph Analytics Engines (GAEs). It is available on request for the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). - -Key features: - -- **Separation of storage and compute**: GAEs are a solution that lets you run - graph analytics independent of your ArangoDB deployments on dedicated machines - optimized for compute tasks. This separation of OLAP and OLTP workloads avoids - affecting the performance of the transaction-oriented database systems. - -- **Fast data loading**: You can easily and efficiently import graph data from - ArangoDB and export results back to ArangoDB. - -- **In-memory processing**: All imported data is held and processed in the - main memory of the compute machines for very fast execution of graph algorithms - such as connected components, label propagation, and PageRank. - -## Workflow - -The following lists outlines how you can use Graph Analytics Engines (GAEs). -How to perform the steps is detailed in the subsequent sections. - -{{< info >}} -Before you can use Graph Analytics Engines, you need to request the feature -via __Request help__ in the ArangoGraph dashboard for a deployment. - -The deployment needs to use **AWS** as the cloud provider. - -Single server deployments using ArangoDB version 3.11 are not supported. -{{< /info >}} - -1. Determine the approximate size of the data that you will load into the GAE - to select an engine size with sufficient memory. The data as well as the - temporarily needed space for computations and results needs to fit in memory. -2. Deploy an engine of the desired size and of type `gral`. It only takes a few - seconds until the engine can be used. The engine runs adjacent to a particular - ArangoGraph deployment. -3. Load graph data from ArangoDB into the engine. You can load named graphs or - sets of vertex and edge collections. This loads the edge information and a - configurable subset of the vertex attributes. -4. Run graph algorithms on the data. You only need to load the data once per - engine and can then run various algorithms with different settings. -5. Write the computation results back to ArangoDB. -6. Delete the engine once you are done. - -## Authentication - -The [Management API](#management-api) for deploying and deleting engines requires -an ArangoGraph **API key**. See -[Generating an API Key](../../../amp/api/get-started.md#generating-an-api-key) -on how to create one. - -You then need to generate an **access token** using the API key. See -[Authenticating with Oasisctl](../../../amp/api/get-started.md#authenticating-with-oasisctl) -on how to do so using `oasisctl login`. - -The [Engine API](#engine-api) uses one of two authentication methods, depending -on the [__auto login to database UI__](../../../amp/deployments/_index.md#auto-login-to-database-ui) -setting in ArangoGraph: -- **Enabled**: You can use an ArangoGraph access token created with an API key - (see above), allowing you to use one token for both the Management API and - the Engine API. -- **Disabled**: You need use a JWT user token created from ArangoDB credentials. - These session tokens need to be renewed every hour by default. See - [HTTP API Authentication](../develop/http-api/authentication.md#jwt-user-tokens) - for details. - -## Management API - -You can save an ArangoGraph access token created with `oasisctl login` in a -variable to ease scripting. Note that this should be the token string only and -not include quote marks. The following examples assume Bash as the shell and -that the `curl` and `jq` commands are available. - -```bash -ARANGO_GRAPH_TOKEN="$(oasisctl login --key-id "<AG_KEY_ID>" --key-secret "<AG_KEY_SECRET>")" -``` - -To determine the base URL of the management API, use the ArangoGraph dashboard -and copy the __APPLICATION ENDPOINT__ of the deployment that holds the graph data -you want to analyze. Replace the port with `8829` and append -`/graph-analytics/api/graphanalytics/v1`, e.g. -`https://123456abcdef.arangodb.cloud:8829/graph-analytics/api/graphanalytics/v1`. - -Store the base URL in a variable called `BASE_URL`: - -```bash -BASE_URL='https://...' -``` - -To authenticate requests, you need to use the following HTTP header: - -``` -Authorization: bearer <ARANGO_GRAPH_TOKEN> -``` - -For example, with cURL and using the token variable: - -```bash -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" "$BASE_URL/api-version" -``` - -Request and response payloads are JSON-encoded in the management API. - -### Get the API version - -`GET <BASE_URL>/api-version` - -Retrieve the version information of the management API. - -```bash -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" "$BASE_URL/api-version" -``` - -### List engine sizes - -`GET <BASE_URL>/enginesizes` - -List the available engine sizes, which is a combination of the number of cores -and the size of the RAM, starting at 1 CPU and 4 GiB of memory (`e4`). - -```bash -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" "$BASE_URL/enginesizes" -``` - -### List engine types - -`GET <BASE_URL>/enginetypes` - -List the available engine types. The only type supported for GAE workloads is -called `gral`. - -```bash -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" "$BASE_URL/enginetypes" -``` - -### Deploy an engine - -`POST <BASE_URL>/engines` - -Set up a GAE adjacent to the ArangoGraph deployment, for example, using an -engine size of `e4`. - -```bash -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" -X POST -d '{"type_id":"gral","size_id":"e4"}' "$BASE_URL/engines" -``` - -### List all engines - -`GET <BASE_URL>/engines` - -List all deployed GAEs of a ArangoGraph deployment. - -```bash -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" "$BASE_URL/engines" -``` - -### Get an engine - -`GET <BASE_URL>/engines/<ENGINE_ID>` - -List the detailed information about a specific GAE. - -```bash -ENGINE_ID="zYxWvU9876" -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" "$BASE_URL/engines/$ENGINE_ID" -``` - -### Delete an engine - -`DELETE <BASE_URL>/engines/<ENGINE_ID>` - -Delete a no longer needed GAE, freeing any data it holds in memory. - -```bash -ENGINE_ID="zYxWvU9876" -curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" -X DELETE "$BASE_URL/engines/$ENGINE_ID" -``` - -## Engine API - -To determine the base URL of the engine API, use the ArangoGraph dashboard -and copy the __APPLICATION ENDPOINT__ of the deployment that holds the graph data -you want to analyze. Replace the port with `8829` and append -`/graph-analytics/engines/<ENGINE_ID>`, e.g. -`https://<123456abcdef>.arangodb.cloud:8829/graph-analytics/engines/zYxWvU9876`. - -Store the base URL in a variable called `ENGINE_URL`: - -```bash -ENGINE_URL='https://...' -``` - -To authenticate requests, you need to use a bearer token in HTTP header: -``` -Authorization: bearer <TOKEN> -``` - -- If __Auto login to database UI__ is enabled for the ArangoGraph deployment, - this can be the same access token as used for the management API. -- If it is disabled, use an ArangoDB session token (JWT user token) instead. - -You can save the token in a variable to ease scripting. Note that this should be -the token string only and not include quote marks. The following examples assume -Bash as the shell and that the `curl` and `jq` commands are available. - -An example of authenticating a request using cURL and a session token: - -```bash -APPLICATION_ENDPOINT="https://123456abcdef.arangodb.cloud:8529" - -ADB_TOKEN=$(curl -X POST -d "{\"username\":\"<ADB_USER>\",\"password\":\"<ADB_PASS>\"}" "$APPLICATION_ENDPOINT/_open/auth" | jq -r '.jwt') - -curl -H "Authorization: bearer $ADB_TOKEN" "$ENGINE_URL/v1/jobs" -``` - -All requests to the engine API start jobs, each representing an operation. -You can check the progress of operations and check if errors occurred. -You can submit jobs concurrently and they also run concurrently. - -You can find the API reference documentation with detailed descriptions of the -request and response data structures at <https://arangodb.github.io/graph-analytics>. - -Request and response payloads are JSON-encoded in the engine API. - -### Load data - -`POST <ENGINE_URL>/v1/loaddata` - -Import graph data from a database of the ArangoDB deployment. You can import -named graphs as well as sets of vertex and edge collections (see -[Managed and unmanaged graphs](../graphs/_index.md#managed-and-unmanaged-graphs)). - -```bash -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d '{"database":"_system","graph_name":"connectedComponentsGraph"}' "$ENGINE_URL/v1/loaddata" -``` - -### Run algorithms - -#### PageRank - -`POST <ENGINE_URL>/v1/pagerank` - -PageRank is a well known algorithm to rank vertices in a graph: the more -important a vertex, the higher rank it gets. It goes back to L. Page and S. Brin's -[paper](http://infolab.stanford.edu/pub/papers/google.pdf) and -is used to rank pages in in search engines (hence the name). The algorithm runs -until the execution converges. To run for a fixed number of iterations, use the -`maximum_supersteps` parameter. - -The rank of a vertex is a positive real number. The algorithm starts with every -vertex having the same rank (one divided by the number of vertices) and sends its -rank to its out-neighbors. The computation proceeds in iterations. In each iteration, -the new rank is computed according to the formula -`( (1 - damping_factor) / total number of vertices) + (damping_factor * the sum of all incoming ranks)`. -The value sent to each of the out-neighbors is the new rank divided by the number -of those neighbors, thus every out-neighbor gets the same part of the new rank. - -The algorithm stops when at least one of the two conditions is satisfied: -- The maximum number of iterations is reached. This is the same `maximum_supersteps` - parameter as for the other algorithms. -- Every vertex changes its rank in the last iteration by less than a certain - threshold. The threshold is hardcoded to `0.0000001`. - -It is possible to specify an initial distribution for the vertex documents in -your graph. To define these seed ranks / centralities, you can specify a -`seeding_attribute` in the properties for this algorithm. If the specified field is -set on a document _and_ the value is numeric, then it is used instead of -the default initial rank of `1 / numVertices`. - -Parameters: -- `graph_id` -- `damping_factor` -- `maximum_supersteps` -- `seeding_attribute` (optional, for seeded PageRank) - -Result: the rank of each vertex - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"damping_factor\":0.85,\"maximum_supersteps\":500,\"seeding_attribute\":\"seed_attr\"}" "$ENGINE_URL/v1/pagerank" -``` - -{{< comment >}} Not merged yet -#### Single-Source Shortest Path (SSSP) - -`POST <ENGINE_URL>/v1/single_source_shortest_path` - -The algorithm computes the shortest path from a given source vertex to all other -vertices and returns the length of this path (distance). The algorithm returns a -distance of `-1` for a vertex that cannot be reached from the source, and `0` -for the source vertex itself. - -Parameters: -- `graph_id` -- `source_vertex`: The document ID of the source vertex. -- `undirected`: Determines whether the algorithm respects the direction of edges. - -Result: the distance of each vertex to the `source_vertex` - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"source_vertex\":\"vertex/345\",\"undirected\":false}" "$ENGINE_URL/v1/single_source_shortest_path" -``` -{{< /comment >}} - -#### Weakly Connected Components (WCC) - -`POST <ENGINE_URL>/v1/wcc` - -The weakly connected component algorithm partitions a graph into maximal groups -of vertices, so that within a group, all vertices are reachable from each vertex -by following the edges, ignoring their direction. - -In other words, each weakly connected component is a maximal subgraph such that -there is a path between each pair of vertices where one can also follow edges -against their direction in a directed graph. - -Parameters: -- `graph_id` - -Result: a component ID for each vertex. All vertices from the same component -obtain the same component ID, every two vertices from different components -obtain different IDs. - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID}" "$ENGINE_URL/v1/wcc" -``` - -#### Strongly Connected Components (SCC) - -`POST <ENGINE_URL>/v1/scc` - -The strongly connected components algorithm partitions a graph into maximal -groups of vertices, so that within a group, all vertices are reachable from each -vertex by following the edges in their direction. - -In other words, a strongly connected component is a maximal subgraph, where for -every two vertices, there is a path from one of them to the other, forming a -cycle. In contrast to a weakly connected component, one cannot follow edges -against their direction. - -Parameters: - -- `graph_id` - -Result: a component ID for each vertex. All vertices from the same component -obtain the same component ID, every two vertices from different components -obtain different IDs. - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID}" "$ENGINE_URL/v1/scc" -``` - -#### Vertex Centrality - -Centrality measures help identify the most important vertices in a graph. -They can be used in a wide range of applications: -to identify influencers in social networks, or middlemen in terrorist -networks. - -There are various definitions for centrality, the simplest one being the -vertex degree. These definitions were not designed with scalability in mind. -It is probably impossible to discover an efficient algorithm which computes -them in a distributed way. Fortunately there are scalable substitutions -available, which should be equally usable for most use cases. - -![Illustration of an execution of different centrality measures (Freeman 1977)](../../../images/centrality_visual.png) - -##### Betweenness Centrality - -`POST <ENGINE_URL>/v1/betweennesscentrality` - -A relatively expensive algorithm with complexity `O(V*E)` where `V` is the -number of vertices and `E` is the number of edges in the graph. - -Betweenness-centrality can be approximated by cheaper algorithms like -Line Rank but this algorithm strives to compute accurate centrality measures. - -Parameters: -- `graph_id` -- `k` (number of start vertices, 0 = all) -- `undirected` -- `normalized` -- `parallelism` - -Result: a centrality measure for each vertex - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"k\":0,\"undirected\":false,\"normalized\":true}" "$ENGINE_URL/v1/betweennesscentrality" -``` - -{{< comment >}} Not merged yet -##### Effective Closeness - -A common definitions of centrality is the **closeness centrality** -(or closeness). The closeness of a vertex in a graph is the inverse average -length of the shortest path between the vertex and all other vertices. -For vertices *x*, *y* and shortest distance `d(y, x)` it is defined as: - -![Vertex Closeness Formula](../../../images/closeness.png) - -Effective Closeness approximates the closeness measure. The algorithm works by -iteratively estimating the number of shortest paths passing through each vertex. -The score approximates the real closeness score, since it is not possible -to actually count all shortest paths due to the horrendous `O(n^2 * d)` memory -requirements. The algorithm is from the paper -*Centralities in Large Networks: Algorithms and Observations (U Kang et.al. 2011)*. - -ArangoDBs implementation approximates the number of shortest paths in each -iteration by using a HyperLogLog counter with 64 buckets. This should work well -on large graphs and on smaller ones as well. The memory requirements should be -**O(n * d)** where *n* is the number of vertices and *d* the diameter of your -graph. Each vertex stores a counter for each iteration of the algorithm. - -Parameters: -- `graph_id` -- `undirected`: Whether to ignore the direction of edges -- `maximum_supersteps` - -Result: a closeness measure for each vertex - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"undirected\":false,\"maximum_supersteps\":500}" "$ENGINE_URL/v1/effectivecloseness" -``` -{{< /comment >}} - -##### LineRank - -`POST <ENGINE_URL>/v1/linerank` - -Another common measure is the [*betweenness* centrality](https://en.wikipedia.org/wiki/Betweenness_centrality): -It measures the number of times a vertex is part of shortest paths between any -pairs of vertices. For a vertex *v* betweenness is defined as: - -![Vertex Betweenness Formula](../../../images/betweenness.png) - -Where the σ represents the number of shortest paths between *x* and *y*, -and σ(v) represents the number of paths also passing through a vertex *v*. -By intuition a vertex with higher betweenness centrality has more -information passing through it. - -**LineRank** approximates the random walk betweenness of every vertex in a -graph. This is the probability that someone, starting on an arbitrary vertex, -visits this node when they randomly choose edges to visit. - -The algorithm essentially builds a line graph out of your graph -(switches the vertices and edges), and then computes a score similar to PageRank. -This can be considered a scalable equivalent to vertex betweenness, which can -be executed distributedly in ArangoDB. The algorithm is from the paper -*Centralities in Large Networks: Algorithms and Observations (U Kang et.al. 2011)*. - -Parameters: -- `graph_id` -- `damping_factor` -- `maximum_supersteps` - -Result: the line rank of each vertex - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"damping_factor\":0.0000001,\"maximum_supersteps\":500}" "$ENGINE_URL/v1/linerank" -``` - -#### Community Detection - -Graphs based on real world networks often have a community structure. -This means it is possible to find groups of vertices such that each vertex -group is internally more densely connected than outside the group. -This has many applications when you want to analyze your networks, for example -Social networks include community groups (the origin of the term, in fact) -based on common location, interests, occupation, etc. - -##### Label Propagation - -`POST <ENGINE_URL>/v1/labelpropagation` - -[*Label Propagation*](https://arxiv.org/pdf/0709.2938) can be used to implement -community detection on large graphs. - -The algorithm assigns an initial community identifier to every vertex in the -graph using a user-defined attribute. The idea is that each vertex should be in -the community that most of its neighbors are in at the end of the computation. - -In each iteration of the computation, a vertex sends its current community ID to -all its neighbor vertices, inbound and outbound (ignoring edge directions). -After that, each vertex adopts the community ID it received most frequently in -the last step. - -It can happen that a vertex receives multiple most frequent community IDs. -In this case, one is chosen either randomly or using a deterministic choice -depending on a setting for the algorithm. The rules for a deterministic tiebreak -are as follows: -- If a vertex obtains only one community ID and the ID of the vertex from the - previous step, its old ID, is less than the obtained ID, the old ID is kept. -- If a vertex obtains more than one ID, its new ID is the lowest ID among the - most frequently obtained IDs. For example, if the initial IDs are numbers and - the obtained IDs are 1, 2, 2, 3, 3, then 2 is the new ID. -- If, however, no ID arrives more than once, the new ID is the minimum of the - lowest obtained IDs and the old ID. For example, if the old ID is 5 and the - obtained IDs are 3, 4, 6, then the new ID is 3. If the old ID is 2, it is kept. - -The algorithm runs until it converges or reaches the maximum iteration bound. -It may not converge on large graphs if the synchronous variant is used. -- **Synchronous**: The new community ID of a vertex is based on the - community IDs of its neighbors from the previous iteration. With (nearly) - [bipartite](https://en.wikipedia.org/wiki/Bipartite_graph) subgraphs, this may - lead to the community IDs changing back and forth in each iteration within the - two halves of the subgraph. -- **Asynchronous**: A vertex determines the new community ID using the most - up-to-date community IDs of its neighbors, whether those updates occurred in - the current iteration or the previous one. The order in which vertices are - updated in each iteration is chosen randomly. This leads to more stable - community IDs. - -Parameters: -- `graph_id` -- `start_label_attribute` -- `synchronous` -- `random_tiebreak` -- `maximum_supersteps` - -Result: a community ID for each vertex - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"start_label_attribute\":\"start_attr\",\"synchronous\":false,\"random_tiebreak\":false,\"maximum_supersteps\":500}" "$ENGINE_URL/v1/labelpropagation" -``` - -##### Attribute Propagation - -`POST <ENGINE_URL>/v1/attributepropagation` - -The attribute propagation algorithm can be used to implement community detection. -It works similar to the label propagation algorithm, but every node additionally -accumulates a memory of observed labels instead of forgetting all but one label. - -The algorithm assigns an initial value to every vertex in the graph using a -user-defined attribute. The attribute value can be a list of strings to -initialize the set of labels with multiple labels. - -In each iteration of the computation, the following steps are executed: - -1. Each vertex propagates its set of labels along the edges to all direct - neighbor vertices. Whether inbound or outbound edges are followed depends on - an algorithm setting. -2. Each vertex adds the labels it receives to its own set of labels. - - After a specified maximal number of iterations or if no label set changes any - more, the algorithm stops. - - {{< warning >}} - If there are many labels and the graph is well-connected, the result set can - be very large. - {{< /warning >}} - -Parameters: -- `graph_id` -- `start_label_attribute`: The attribute to initialize labels with. - Use `"@id"` to use the document IDs of the vertices. -- `synchronous`: Whether synchronous or asynchronous label propagation is used. -- `backwards`: Whether labels are propagated in edge direction (`false`) or the - opposite direction (`true`). -- `maximum_supersteps`: Maximum number of iterations. - -Result: The set of accumulated labels of each vertex. - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"start_label_attribute\":\"start_attr\",\"synchronous\":false,\"backwards\":false,\"maximum_supersteps\":500}" "$ENGINE_URL/v1/attributepropagation" -``` - -{{< comment >}} Work in progress -#### Custom Python code - -`POST <ENGINE_URL>/v1/python` - -You can run Python code to implement custom graph analytics algorithms as well -as execute any of the graph algorithms available in the supported Python -libraries. - -The NetworkX library is available by default using the variable `nx`: - -```py -def worker(graph): - return nx.pagerank(graph, 0.85) -``` - -Parameters: -- `graph_id` -- `function`: A string with Python code. It must define a function `def worker(graph):` - that returns a dataframe or dictionary with the results. The key inside that - dict must represent the vertex ID. The value can be of any type. -- `use_cugraph`: Use cugraph (or regular pandas/pyarrow). - -Result: Depends on the algorithm. If multiple values are returned for a single -vertex, a JSON object with multiple keys is stored. <!-- TODO: verify --> - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d "{\"graph_id\":$GRAPH_ID,\"function\":\"def worker(graph):\n return nx.pagerank(graph, 0.85)\",\"use_cugraph\":false}" "$ENGINE_URL/v1/python" -``` -{{< /comment >}} - -### Store job results - -`POST <ENGINE_URL>/v1/storeresults` - -You need to specify to which ArangoDB `database` and `target_collection` to save -the results to. They need to exist already. - -You also need to specify a list of `job_ids` with one or more jobs that have run -graph algorithms. - -Each algorithm outputs one value for each vertex, and you can define the target -attribute to store the information in with `attribute_names`. It has to be a -list with one attribute name for every job in the `job_ids` list. - -You can optionally set the degree of `parallelism` and the `batch_size` for -saving the data. - -Parameters: -- `database` -- `target_collection` -- `job_ids` -- `attribute_names` -- `parallelism` -- `batch_size` - -```bash -JOB_ID="123" -curl -H "Authorization: bearer $ADB_TOKEN" -X POST -d "{\"database\":\"_system\",\"target_collection\":\"coll\",\"job_ids\":[$JOB_ID],\"attribute_names\":[\"attr\"]}" "$ENGINE_URL/v1/storeresults" -``` - -### List all jobs - -`GET <ENGINE_URL>/v1/jobs` - -List all active and finished jobs. - -```bash -curl -H "Authorization: bearer $ADB_TOKEN" "$ENGINE_URL/v1/jobs" -``` - -### Get a job - -`GET <ENGINE_URL>/v1/jobs/<JOB_ID>` - -Get detailed information about a specific job. - -```bash -JOB_ID="123" -curl -H "Authorization: bearer $ADB_TOKEN" "$ENGINE_URL/v1/jobs/$JOB_ID" -``` - -### Delete a job - -`DELETE <ENGINE_URL>/v1/jobs/<JOB_ID>` - -Delete a specific job. - -```bash -JOB_ID="123" -curl -H "Authorization: bearer $ADB_TOKEN" -X DELETE "$ENGINE_URL/v1/jobs/$JOB_ID" -``` - -### List all graphs - -`GET <ENGINE_URL>/v1/graphs` - -List all loaded sets of graph data that reside in the memory of the engine node. - -```bash -curl -H "Authorization: bearer $ADB_TOKEN" "$ENGINE_URL/v1/graphs" -``` - -### Get a graph - -`GET <ENGINE_URL>/v1/graphs/<GRAPH_ID>` - -Get detailed information about a specific set of graph data. - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" "$ENGINE_URL/v1/graphs/$GRAPH_ID" -``` - -### Delete a graph - -`DELETE <ENGINE_URL>/v1/graphs/<GRAPH_ID>` - -Delete a specific set of graph data, removing it from the memory of the engine node. - -```bash -GRAPH_ID="234" -curl -H "Authorization: bearer $ADB_TOKEN" -X DELETE "$ENGINE_URL/v1/graphs/$GRAPH_ID" -``` diff --git a/site/content/arangodb/3.11/develop/foxx-microservices/guides/authentication-and-sessions.md b/site/content/arangodb/3.11/develop/foxx-microservices/guides/authentication-and-sessions.md index 2307728d20..9b77d01f3e 100644 --- a/site/content/arangodb/3.11/develop/foxx-microservices/guides/authentication-and-sessions.md +++ b/site/content/arangodb/3.11/develop/foxx-microservices/guides/authentication-and-sessions.md @@ -23,7 +23,7 @@ authentication. In this example we'll use two collections: a `users` collection to store the user objects with names and credentials, and a `sessions` collection to store the session data. We'll also make sure usernames are unique -by adding a hash index: +by adding a `persistent` index: ```js "use strict"; @@ -37,7 +37,7 @@ if (!db._collection(sessions)) { db._createDocumentCollection(sessions); } module.context.collection("users").ensureIndex({ - type: "hash", + type: "persistent", unique: true, fields: ["username"] }); diff --git a/site/content/arangodb/3.11/develop/http-api/indexes/_index.md b/site/content/arangodb/3.11/develop/http-api/indexes/_index.md index f759f7e174..a35384f3d0 100644 --- a/site/content/arangodb/3.11/develop/http-api/indexes/_index.md +++ b/site/content/arangodb/3.11/develop/http-api/indexes/_index.md @@ -221,8 +221,8 @@ paths: insert a value into the index that already exists in the index always fails, regardless of the value of this attribute. - The optional **estimates** attribute is supported by persistent indexes. - This attribute controls whether index selectivity estimates are + The optional **estimates** attribute is supported by `persistent`, `mdi`, and + `mdi-prefixed` indexes. This attribute controls whether index selectivity estimates are maintained for the index. Not maintaining index selectivity estimates can have a slightly positive impact on write performance. The downside of turning off index selectivity estimates will be that diff --git a/site/content/arangodb/3.11/develop/integrations/_index.md b/site/content/arangodb/3.11/develop/integrations/_index.md index 635983cc4d..3469808d73 100644 --- a/site/content/arangodb/3.11/develop/integrations/_index.md +++ b/site/content/arangodb/3.11/develop/integrations/_index.md @@ -47,3 +47,12 @@ allows you to export data from Apache Kafka to ArangoDB. - Repository: [github.com/arangodb/kafka-connect-arangodb/](https://github.com/arangodb/kafka-connect-arangodb/) - [Demo](https://github.com/arangodb/kafka-connect-arangodb/tree/main/demo) - [Changelog](https://github.com/arangodb/kafka-connect-arangodb/blob/main/ChangeLog.md) + +## TinkerPop Provider + +The [**ArangoDB TinkerPop Provider**](arangodb-tinkerpop-provider.md) is an implementation of +the [Apache TinkerPop OLTP Provider](https://tinkerpop.apache.org/docs/3.7.3/dev/provider) API +for ArangoDB. + +- Repository: [github.com/arangodb/arangodb-tinkerpop-provider](https://github.com/arangodb/arangodb-tinkerpop-provider) +- [Changelog](https://github.com/arangodb/arangodb-tinkerpop-provider/blob/main/CHANGELOG.md) diff --git a/site/content/arangodb/3.11/index-and-search/indexing/index-utilization.md b/site/content/arangodb/3.11/index-and-search/indexing/index-utilization.md index c6d239b7ef..46a4592bb0 100644 --- a/site/content/arangodb/3.11/index-and-search/indexing/index-utilization.md +++ b/site/content/arangodb/3.11/index-and-search/indexing/index-utilization.md @@ -19,8 +19,9 @@ It is often beneficial to create an index on more than just one attribute. By ad to an index, an index can become more selective and thus reduce the number of documents that queries need to process. -ArangoDB's primary indexes, edges indexes and hash indexes will automatically provide selectivity -estimates. Index selectivity estimates are provided in the web interface, the `indexes()` return +ArangoDB's `primary` and `edge` indexes automatically provide selectivity estimates. +The `persistent`, `mdi`, and `mdi-prefixed` indexes do too, by default. +Index selectivity estimates are provided in the web interface, the `indexes()` return value and in the `explain()` output for a given query. The more selective an index is, the more documents it will filter on average. The index selectivity diff --git a/site/content/arangodb/3.12/aql/functions/geo.md b/site/content/arangodb/3.12/aql/functions/geo.md index cf5b3f8a2d..71820df92a 100644 --- a/site/content/arangodb/3.12/aql/functions/geo.md +++ b/site/content/arangodb/3.12/aql/functions/geo.md @@ -71,9 +71,9 @@ called `location` (with coordinates in `[longitude, latitude]` order): GeoJSON uses a geographic coordinate reference system, World Geodetic System 1984 (WGS 84), and units of decimal degrees. -Internally ArangoDB maps all coordinate pairs onto a unit sphere. Distances are -projected onto a sphere with the Earth's *Volumetric mean radius* of *6371 -km*. ArangoDB implements a useful subset of the GeoJSON format +Internally, ArangoDB maps all coordinate pairs onto a unit sphere. Distances are +projected onto a sphere with the Earth's *Volumetric mean radius* of +*6371 km*. ArangoDB implements a useful subset of the GeoJSON format [(RFC 7946)](https://tools.ietf.org/html/rfc7946). Feature Objects and the GeometryCollection type are not supported. Supported geometry object types are: @@ -98,6 +98,18 @@ a longitude and a latitude: } ``` +GeoJSON Points can optionally have a third coordinate for the elevation, but +ArangoDB doesn't use it in calculations: + +```json +{ + "location": { + "type": "Point", + "coordinates": [ 100.0, 0.0, 43.0 ] + } +} +``` + #### MultiPoint A [GeoJSON MultiPoint](https://tools.ietf.org/html/rfc7946#section-3.1.7) is @@ -425,11 +437,11 @@ fully contains `geoJsonB` (every point in B is also in A). The object `geoJsonA` has to be of type _Polygon_ or _MultiPolygon_. For other types containment is not well-defined because of numerical stability problems. -- **geoJsonA** (object): first GeoJSON object -- **geoJsonB** (object): second GeoJSON object, or a coordinate array in - `[longitude, latitude]` order +- **geoJsonA** (object): First GeoJSON object. +- **geoJsonB** (object): Second GeoJSON object, or a coordinate array in + `[longitude, latitude]` order. - returns **bool** (bool): `true` if every point in B is also contained in A, - otherwise `false` + otherwise `false`. {{< info >}} ArangoDB follows and exposes the same behavior as the underlying @@ -468,14 +480,14 @@ Return the distance between two GeoJSON objects in meters, measured from the **centroid** of each shape. For a list of supported types see the [geo index page](#geojson). -- **geoJsonA** (object): first GeoJSON object, or a coordinate array in - `[longitude, latitude]` order -- **geoJsonB** (object): second GeoJSON object, or a coordinate array in - `[longitude, latitude]` order -- **ellipsoid** (string, *optional*): reference ellipsoid to use. +- **geoJsonA** (object): First GeoJSON object, or a coordinate array in + `[longitude, latitude]` order. +- **geoJsonB** (object): Second GeoJSON object, or a coordinate array in + `[longitude, latitude]` order. +- **ellipsoid** (string, *optional*): Reference ellipsoid to use. Supported are `"sphere"` (default) and `"wgs84"`. -- returns **distance** (number): the distance between the centroid points of - the two objects on the reference ellipsoid in **meters** +- returns **distance** (number): The distance between the centroid points of + the two objects on the reference ellipsoid in **meters**. ```aql LET polygon = { @@ -522,10 +534,10 @@ functions. Return the area for a [Polygon](#polygon) or [MultiPolygon](#multipolygon) on a sphere with the average Earth radius, or an ellipsoid. -- **geoJson** (object): a GeoJSON object -- **ellipsoid** (string, *optional*): reference ellipsoid to use. +- **geoJson** (object): A GeoJSON object. +- **ellipsoid** (string, *optional*): Reference ellipsoid to use. Supported are `"sphere"` (default) and `"wgs84"`. -- returns **area** (number): the area of the polygon in **square meters** +- returns **area** (number): The area of the polygon in **square meters**. ```aql LET polygon = { @@ -541,8 +553,8 @@ RETURN GEO_AREA(polygon, "wgs84") Checks whether two [GeoJSON objects](#geojson) are equal or not. -- **geoJsonA** (object): first GeoJSON object. -- **geoJsonB** (object): second GeoJSON object. +- **geoJsonA** (object): First GeoJSON object. +- **geoJsonB** (object): Second GeoJSON object. - returns **bool** (bool): `true` if they are equal, otherwise `false`. ```aql @@ -572,10 +584,10 @@ RETURN GEO_EQUALS(polygonA, polygonB) // false Checks whether the [GeoJSON object](#geojson) `geoJsonA` intersects with `geoJsonB` (i.e. at least one point in B is also in A or vice-versa). -- **geoJsonA** (object): first GeoJSON object -- **geoJsonB** (object): second GeoJSON object, or a coordinate array in - `[longitude, latitude]` order -- returns **bool** (bool): true if B intersects A, false otherwise +- **geoJsonA** (object): First GeoJSON object. +- **geoJsonB** (object): Second GeoJSON object, or a coordinate array in + `[longitude, latitude]` order. +- returns **bool** (bool): `true` if B intersects A, `false` otherwise. You can optimize queries that contain a `FILTER` expression of the following form with an S2-based [geospatial index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): @@ -604,19 +616,19 @@ Checks whether the distance between two [GeoJSON objects](#geojson) lies within a given interval. The distance is measured from the **centroid** of each shape. -- **geoJsonA** (object\|array): first GeoJSON object, or a coordinate array - in `[longitude, latitude]` order -- **geoJsonB** (object\|array): second GeoJSON object, or a coordinate array - in `[longitude, latitude]` order -- **low** (number): minimum value of the desired range -- **high** (number): maximum value of the desired range -- **includeLow** (bool, optional): whether the minimum value shall be included +- **geoJsonA** (object\|array): First GeoJSON object, or a coordinate array + in `[longitude, latitude]` order. +- **geoJsonB** (object\|array): Second GeoJSON object, or a coordinate array + in `[longitude, latitude]` order. +- **low** (number): Minimum value of the desired range. +- **high** (number): Maximum value of the desired range. +- **includeLow** (bool, optional): Whether the minimum value shall be included in the range (left-closed interval) or not (left-open interval). The default - value is `true` -- **includeHigh** (bool): whether the maximum value shall be included in the + value is `true`. +- **includeHigh** (bool): Whether the maximum value shall be included in the range (right-closed interval) or not (right-open interval). The default value - is `true` -- returns **bool** (bool): whether the evaluated distance lies within the range + is `true`. +- returns **bool** (bool): Whether the evaluated distance lies within the range. ### IS_IN_POLYGON() @@ -630,10 +642,10 @@ favor of the new [`GEO_CONTAINS()` AQL function](#geo_contains), which works wit `IS_IN_POLYGON(polygon, latitude, longitude) → bool` -- **polygon** (array): an array of arrays with 2 elements each, representing the - points of the polygon in the format `[latitude, longitude]` -- **latitude** (number): the latitude of the point to search -- **longitude** (number): the longitude of the point to search +- **polygon** (array): An array of arrays with two elements each, representing the + points of the polygon in the format `[latitude, longitude]`. +- **latitude** (number): The latitude of the point to search for. +- **longitude** (number): The longitude of the point to search for. - returns **bool** (bool): `true` if the point (`[latitude, longitude]`) is inside the `polygon` or `false` if it's not. The result is undefined (can be `true` or `false`) if the specified point is exactly on a boundary of the @@ -648,17 +660,17 @@ IS_IN_POLYGON( [ [ 0, 0 ], [ 0, 10 ], [ 10, 10 ], [ 10, 0 ] ], 4, 7 ) `IS_IN_POLYGON(polygon, coord, useLonLat) → bool` -The 2nd parameter can alternatively be specified as an array with two values. +The second parameter can alternatively be specified as an array with two values. By default, each array element in `polygon` is expected to be in the format -`[latitude, longitude]`. This can be changed by setting the 3rd parameter to `true` to +`[latitude, longitude]`. This can be changed by setting the third parameter to `true` to interpret the points as `[longitude, latitude]`. `coord` is then also interpreted in the same way. -- **polygon** (array): an array of arrays with 2 elements each, representing the - points of the polygon -- **coord** (array): the point to search as a numeric array with two elements -- **useLonLat** (bool, *optional*): if set to `true`, the coordinates in +- **polygon** (array): An array of arrays with 2 elements each, representing the + points of the polygon. +- **coord** (array): The point to search as a numeric array with two elements. +- **useLonLat** (bool, *optional*): If set to `true`, the coordinates in `polygon` and the coordinate pair `coord` are interpreted as `[longitude, latitude]` (like in GeoJSON). The default is `false` and the format `[latitude, longitude]` is expected. @@ -687,8 +699,9 @@ will help you to make all your AQL queries shorter and easier to read. Construct a GeoJSON LineString. Needs at least two longitude/latitude pairs. -- **points** (array): an array of `[longitude, latitude]` pairs -- returns **geoJson** (object): a valid GeoJSON LineString +- **points** (array): An array of `[longitude, latitude]` pairs, or optionally + `[longitude, latitude, elevation]`. +- returns **geoJson** (object): A valid GeoJSON LineString. ```aql --- @@ -707,8 +720,9 @@ RETURN GEO_LINESTRING([ Construct a GeoJSON MultiLineString. Needs at least two elements consisting valid LineStrings coordinate arrays. -- **points** (array): array of LineStrings -- returns **geoJson** (object): a valid GeoJSON MultiLineString +- **points** (array): An array of arrays of `[longitude, latitude]` pairs, + or optionally `[longitude, latitude, elevation]`. +- returns **geoJson** (object): A valid GeoJSON MultiLineString. ```aql --- @@ -727,8 +741,9 @@ RETURN GEO_MULTILINESTRING([ Construct a GeoJSON LineString. Needs at least two longitude/latitude pairs. -- **points** (array): an array of `[longitude, latitude]` pairs -- returns **geoJson** (object): a valid GeoJSON Point +- **points** (array): An array of `[longitude, latitude]` pairs, or optionally + `[longitude, latitude, elevation]`. +- returns **geoJson** (object): A valid GeoJSON Point. ```aql --- @@ -742,13 +757,15 @@ RETURN GEO_MULTIPOINT([ ### GEO_POINT() -`GEO_POINT(longitude, latitude) → geoJson` +`GEO_POINT(longitude, latitude, elevation) → geoJson` Construct a valid GeoJSON Point. -- **longitude** (number): the longitude portion of the point -- **latitude** (number): the latitude portion of the point -- returns **geoJson** (object): a GeoJSON Point +- **longitude** (number): The longitude portion of the point. +- **latitude** (number): The latitude portion of the point. +- **elevation** (number, *optional*): The elevation portion of the point + (introduced in v3.11.14-2 and v3.12.6). +- returns **geoJson** (object): A valid GeoJSON Point. ```aql --- @@ -769,8 +786,9 @@ any subsequent linear ring will be interpreted as holes. For details about the rules, see [GeoJSON polygons](#polygon). -- **points** (array): an array of (arrays of) `[longitude, latitude]` pairs -- returns **geoJson** (object\|null): a valid GeoJSON Polygon +- **points** (array): An array of (arrays of) `[longitude, latitude]` pairs, + or optionally `[longitude, latitude, elevation]`. +- returns **geoJson** (object\|null): A valid GeoJSON Polygon. A validation step is performed using the S2 geometry library. If the validation is not successful, an AQL warning is issued and `null` is @@ -809,8 +827,9 @@ Construct a GeoJSON MultiPolygon. Needs at least two Polygons inside. See [`GEO_POLYGON()`](#geo_polygon) and [GeoJSON MultiPolygon](#multipolygon) for the rules of Polygon and MultiPolygon construction. -- **polygons** (array): an array of arrays of arrays of `[longitude, latitude]` pairs -- returns **geoJson** (object\|null): a valid GeoJSON MultiPolygon +- **polygons** (array): An array of arrays of arrays of `[longitude, latitude]` + pairs, or optionally `[longitude, latitude, elevation]`. +- returns **geoJson** (object\|null): A valid GeoJSON MultiPolygon. A validation step is performed using the S2 geometry library, if the validation is not successful, an AQL warning is issued and `null` is @@ -860,31 +879,31 @@ FOR doc IN coll RETURN doc ``` Assuming there exists a geo-type index on `latitude` and `longitude`, the -optimizer will recognize it and accelerate the query. +optimizer recognizes it and accelerates the query. {{< /warning >}} `NEAR(coll, latitude, longitude, limit, distanceName) → docArray` -Return at most *limit* documents from collection *coll* that are near -*latitude* and *longitude*. The result contains at most *limit* documents, +Return at most `limit` documents from collection `coll` that are near +`latitude` and `longitude`. The result contains at most `limit` documents, returned sorted by distance, with closest distances being returned first. Optionally, the distances in meters between the specified coordinate pair -(*latitude* and *longitude*) and the stored coordinate pairs can be returned as +(`latitude` and `longitude`) and the stored coordinate pairs can be returned as well. To make use of that, the desired attribute name for the distance result -has to be specified in the *distanceName* argument. The result documents will -contain the distance value in an attribute of that name. - -- **coll** (collection): a collection -- **latitude** (number): the latitude of the point to search -- **longitude** (number): the longitude of the point to search -- **limit** (number, *optional*): cap the result to at most this number of - documents. The default is 100. If more documents than *limit* are found, - it is undefined which ones will be returned. -- **distanceName** (string, *optional*): include the distance (in meters) +has to be specified in the `distanceName` argument. The result documents +contains the distance value in an attribute of that name. + +- **coll** (collection): A collection. +- **latitude** (number): The latitude of the point to search for. +- **longitude** (number): The longitude of the point to search for. +- **limit** (number, *optional*): Cap the result to at most this number of + documents. The default is `100`. If more documents than `limit` are found, + it is undefined which ones are returned. +- **distanceName** (string, *optional*): Include the distance (in meters) between the reference point and the stored point in the result, using the - attribute name *distanceName* -- returns **docArray** (array): an array of documents, sorted by distance - (shortest distance first) + attribute name `distanceName`. +- returns **docArray** (array): An array of documents, sorted by distance + (shortest distance first). ### WITHIN() @@ -901,29 +920,29 @@ FOR doc IN coll ``` Assuming there exists a geo-type index on `latitude` and `longitude`, the -optimizer will recognize it and accelerate the query. +optimizer recognizes it and accelerates the query. {{< /warning >}} `WITHIN(coll, latitude, longitude, radius, distanceName) → docArray` -Return all documents from collection *coll* that are within a radius of *radius* -around the specified coordinate pair (*latitude* and *longitude*). The documents +Return all documents from collection `coll` that are within a radius of `radius` +around the specified coordinate pair (`latitude` and `longitude`). The documents returned are sorted by distance to the reference point, with the closest distances being returned first. Optionally, the distance (in meters) between the reference point and the stored point can be returned as well. To make use of that, an attribute name for the distance result has to be specified in -the *distanceName* argument. The result documents will contain the distance +the `distanceName` argument. The result documents contains the distance value in an attribute of that name. -- **coll** (collection): a collection -- **latitude** (number): the latitude of the point to search -- **longitude** (number): the longitude of the point to search -- **radius** (number): radius in meters -- **distanceName** (string, *optional*): include the distance (in meters) +- **coll** (collection): A collection. +- **latitude** (number): The latitude of the point to search for. +- **longitude** (number): The longitude of the point to search for. +- **radius** (number): Radius in meters. +- **distanceName** (string, *optional*): Include the distance (in meters) between the reference point and stored point in the result, using the - attribute name *distanceName* -- returns **docArray** (array): an array of documents, sorted by distance - (shortest distance first) + attribute name `distanceName`. +- returns **docArray** (array): An array of documents, sorted by distance + (shortest distance first). ### WITHIN_RECTANGLE() @@ -947,18 +966,18 @@ FOR doc IN coll ``` Assuming there exists a geo-type index on `latitude` and `longitude`, the -optimizer will recognize it and accelerate the query. +optimizer recognizes it and accelerates the query. {{< /warning >}} `WITHIN_RECTANGLE(coll, latitude1, longitude1, latitude2, longitude2) → docArray` -Return all documents from collection *coll* that are positioned inside the -bounding rectangle with the points (*latitude1*, *longitude1*) and (*latitude2*, -*longitude2*). There is no guaranteed order in which the documents are returned. +Return all documents from collection `coll` that are positioned inside the +bounding rectangle with the points (`latitude1`, `longitude1`) and (`latitude2`, +`longitude2`). There is no guaranteed order in which the documents are returned. -- **coll** (collection): a collection -- **latitude1** (number): the latitude of the bottom-left point to search -- **longitude1** (number): the longitude of the bottom-left point to search -- **latitude2** (number): the latitude of the top-right point to search -- **longitude2** (number): the longitude of the top-right point to search -- returns **docArray** (array): an array of documents, in random order +- **coll** (collection): A collection. +- **latitude1** (number): The latitude of the bottom-left point to search for. +- **longitude1** (number): The longitude of the bottom-left point to search for. +- **latitude2** (number): The latitude of the top-right point to search for. +- **longitude2** (number): The longitude of the top-right point to search for. +- returns **docArray** (array): An array of documents, in random order. diff --git a/site/content/arangodb/3.12/aql/functions/vector.md b/site/content/arangodb/3.12/aql/functions/vector.md index a20c562137..8b6bcb377d 100644 --- a/site/content/arangodb/3.12/aql/functions/vector.md +++ b/site/content/arangodb/3.12/aql/functions/vector.md @@ -16,13 +16,13 @@ You can calculate vector embeddings using [ArangoDB's GraphML](../../../../gen-a capabilities (available in ArangoGraph) or using external tools. {{< warning >}} -The vector index is an experimental feature that you need to enable for the -ArangoDB server with the `--experimental-vector-index` startup option. +You need to enable the vector index feature for the +ArangoDB server with the `--vector-index` startup option. Once enabled for a deployment, it cannot be disabled anymore because it permanently changes how the data is managed by the RocksDB storage engine (it adds an additional column family). -To restore a dump that contains vector indexes, the `--experimental-vector-index` +To restore a dump that contains vector indexes, the `--vector-index` startup option needs to be enabled on the deployment you want to restore to. {{< /warning >}} @@ -56,21 +56,37 @@ be found depends on the data as well as the search effort (see the `nProbe` opti {{< info >}} - If there is more than one suitable vector index over the same attribute, it is undefined which one is selected. -- You cannot have any `FILTER` operation between `FOR` and `LIMIT` for - pre-filtering. + +- In v3.12.4 and v3.12.5, you cannot have any `FILTER` operation between `FOR` + and `LIMIT` for pre-filtering. From v3.12.6 onward, you can add `FILTER` + operations between `FOR` and `SORT` that are then applied during the lookup in + the vector index. Example: + + ```aql + FOR doc IN coll + FILTER doc.val > 3 + SORT APPROX_NEAR_COSINE(doc.vector, @q) DESC + LIMIT 5 + RETURN doc + ``` + + Note that e.g. `LIMIT 5` does not ensure that you get 5 results by searching + as many neighboring Voronoi cells as necessary, but it rather considers only as + many as configured via the `nProbes` parameter. {{< /info >}} ### APPROX_NEAR_COSINE() `APPROX_NEAR_COSINE(vector1, vector2, options) → similarity` -Retrieve the approximate angular similarity using the cosine metric, accelerated -by a matching vector index. -The higher the cosine similarity value is, the more similar the two vectors -are. The closer it is to 0, the more different they are. The value can also -be negative, indicating that the vectors are not similar and point in opposite -directions. You need to sort in descending order so that the most similar +Retrieve the approximate cosine of the angle between two vectors, accelerated +by a matching vector index with the `cosine` metric. + +The closer the similarity value is to 1, the more similar the two vectors +are. The closer it is to 0, the more different they are. The value can also be +negative up to -1, indicating that the vectors are not similar and point in opposite +directions. You need to **sort in descending order** so that the most similar documents come first, which is what a vector index using the `cosine` metric can provide. @@ -83,8 +99,8 @@ can provide. closest Voronoi cells to consider for the search results. The larger the number, the slower the search but the better the search results. If not specified, the `defaultNProbe` value of the vector index is used. -- returns **similarity** (number): The approximate angular similarity between - both vectors. +- returns **similarity** (number): The approximate cosine similarity of + both normalized vectors. The value range is `[-1, 1]`. **Examples** @@ -126,15 +142,83 @@ FOR docOuter IN coll RETURN { key: docOuter._key, neighbors } ``` +### APPROX_NEAR_INNER_PRODUCT() + +<small>Introduced in: v3.12.6</small> + +`APPROX_NEAR_INNER_PRODUCT(vector1, vector2, options) → similarity` + +Retrieve the approximate dot product of two vectors, accelerated by a matching +vector index with the `innerProduct` metric. + +The higher the similarity value is, the more similar the two vectors +are. The closer it is to 0, the more different they are. The value can also +be negative, indicating that the vectors are not similar and point in opposite +directions. You need to **sort in descending order** so that the most similar +documents come first, which is what a vector index using the `innerProduct` +metric can provide. + +- **vector1** (array of numbers): The first vector. Either this parameter or + `vector2` needs to reference a stored attribute holding the vector embedding. +- **vector2** (array of numbers): The second vector. Either this parameter or + `vector1` needs to reference a stored attribute holding the vector embedding. +- **options** (object, _optional_): + - **nProbe** (number, _optional_): How many neighboring centroids respectively + closest Voronoi cells to consider for the search results. The larger the number, + the slower the search but the better the search results. If not specified, the + `defaultNProbe` value of the vector index is used. +- returns **similarity** (number): The approximate dot product + of both vectors without normalization. The value range is unbounded. + +**Examples** + +Return up to `10` similar documents based on their closeness to the vector +`@q` according to the inner product metric: + +```aql +FOR doc IN coll + SORT APPROX_NEAR_INNER_PRODUCT(doc.vector, @q) DESC + LIMIT 10 + RETURN doc +``` + +Return up to `5` similar documents as well as the similarity value, +considering `20` neighboring centroids respectively closest Voronoi cells: + +```aql +FOR doc IN coll + LET similarity = APPROX_NEAR_INNER_PRODUCT(doc.vector, @q, { nProbe: 20 }) + SORT similarity DESC + LIMIT 5 + RETURN MERGE( { similarity }, doc) +``` + +Return the similarity value and the document keys of up to `3` similar documents +for multiple input vectors using a subquery. In this example, the input vectors +are taken from ten random documents of the same collection: + +```aql +FOR docOuter IN coll + LIMIT 10 + LET neighbors = ( + FOR docInner IN coll + LET similarity = APPROX_NEAR_INNER_PRODUCT(docInner.vector, docOuter.vector) + SORT similarity DESC + LIMIT 3 + RETURN { key: docInner._key, similarity } + ) + RETURN { key: docOuter._key, neighbors } +``` + ### APPROX_NEAR_L2() -`APPROX_NEAR_L2(vector1, vector2, options) → similarity` +`APPROX_NEAR_L2(vector1, vector2, options) → distance` Retrieve the approximate distance using the L2 (Euclidean) metric, accelerated -by a matching vector index. +by a matching vector index with the `l2` metric. The closer the distance is to 0, the more similar the two vectors are. The higher -the value, the more different the they are. You need to sort in ascending order +the value, the more different the they are. You need to **sort in ascending order** so that the most similar documents come first, which is what a vector index using the `l2` metric can provide. @@ -147,7 +231,7 @@ the `l2` metric can provide. for the search results. The larger the number, the slower the search but the better the search results. If not specified, the `defaultNProbe` value of the vector index is used. -- returns **similarity** (number): The approximate L2 (Euclidean) distance between +- returns **distance** (number): The approximate L2 (Euclidean) distance between both vectors. **Examples** diff --git a/site/content/arangodb/3.12/aql/graphs/all-shortest-paths.md b/site/content/arangodb/3.12/aql/graphs/all-shortest-paths.md index bef591606d..69ee924ec3 100644 --- a/site/content/arangodb/3.12/aql/graphs/all-shortest-paths.md +++ b/site/content/arangodb/3.12/aql/graphs/all-shortest-paths.md @@ -117,6 +117,56 @@ All collections in the list that do not specify their own direction use the direction defined after `IN` (here: `OUTBOUND`). This allows using a different direction for each collection in your path search. +### Graph path searches in a cluster + +Due to the nature of graphs, edges may reference nodes from arbitrary +collections. Following the paths can thus involve documents from various +collections and it is not possible to predict which are visited in a +traversal. Which collections need to be loaded by the graph engine can only be +determined at run time. + +Use the [`WITH` operation](../high-level-operations/with.md) to specify the +node collections you expect to be involved. This is required for traversals +using collection sets in cluster deployments. Declare the collection of the +start node as well if it's not declared already (like by a `FOR` loop). + +{{< tip >}} +From v3.12.6 onward, node collections are automatically deduced for graph +queries using collection sets / anonymous graphs if there is a named graph with +a matching edge collection in its edge definitions. + +For example, suppose you have two node collections, `person` and `movie`, and +an `acts_in` edge collection that connects them. If you want to run a path search +query that starts (and ends) at a person that you specify with its document ID, +you need to declare both node collections at the beginning of the query: + +```aql +WITH person, movie +FOR p IN ANY ALL_SHORTEST_PATHS "person/1544" TO "person/52560" acts_in + RETURN p.vertices[*].label +``` + +However, if there is a named graph that includes an edge definition for the +`acts_in` edge collection, with `person` as the _from_ collection and `movie` +as the _to_ collection, you can omit `WITH person, movie`. That is, if you +specify `acts_in` as an edge collection in an anonymous graph query, all +named graphs are checked for this edge collection, and if there is a matching +edge definition, its node collections are automatically added as data sources to +the query. + +```aql +FOR p IN ANY ALL_SHORTEST_PATHS "person/1544" TO "person/52560" acts_in + RETURN p.vertices[*].label + +// Chris Rock --> Dogma <-- Ben Affleck --> Surviving Christmas <-- Jennifer Morrison +// Chris Rock --> The Longest Yard <-- Rob Schneider --> Big Stan <-- Jennifer Morrison +// Chris Rock --> Down to Earth <-- John Cho --> Star Trek <-- Jennifer Morrison +``` + +You can still declare collections manually, in which case they are added as +data sources in addition to automatically deduced collections. +{{< /tip >}} + ## Examples Load an example graph to get a named graph that reflects some possible diff --git a/site/content/arangodb/3.12/aql/graphs/k-paths.md b/site/content/arangodb/3.12/aql/graphs/k-paths.md index 0c490ce041..fce8f76a05 100644 --- a/site/content/arangodb/3.12/aql/graphs/k-paths.md +++ b/site/content/arangodb/3.12/aql/graphs/k-paths.md @@ -188,6 +188,57 @@ All collections in the list that do not specify their own direction use the direction defined after `IN` (here: `OUTBOUND`). This allows to use a different direction for each collection in your path search. +### Graph path searches in a cluster + +Due to the nature of graphs, edges may reference nodes from arbitrary +collections. Following the paths can thus involve documents from various +collections and it is not possible to predict which are visited in a +traversal. Which collections need to be loaded by the graph engine can only be +determined at run time. + +Use the [`WITH` operation](../high-level-operations/with.md) to specify the +node collections you expect to be involved. This is required for traversals +using collection sets in cluster deployments. Declare the collection of the +start node as well if it's not declared already (like by a `FOR` loop). + +{{< tip >}} +From v3.12.6 onward, node collections are automatically deduced for graph +queries using collection sets / anonymous graphs if there is a named graph with +a matching edge collection in its edge definitions. + +For example, suppose you have two node collections, `person` and `movie`, and +an `acts_in` edge collection that connects them. If you want to run a path search +query that starts (and ends) at a person that you specify with its document ID, +you need to declare both node collections at the beginning of the query: + +```aql +WITH person, movie +FOR p IN 4 ANY K_PATHS "person/1544" TO "person/52560" acts_in + LIMIT 2 + RETURN p.vertices[*].label +``` + +However, if there is a named graph that includes an edge definition for the +`acts_in` edge collection, with `person` as the _from_ collection and `movie` +as the _to_ collection, you can omit `WITH person, movie`. That is, if you +specify `acts_in` as an edge collection in an anonymous graph query, all +named graphs are checked for this edge collection, and if there is a matching +edge definition, its node collections are automatically added as data sources to +the query. + +```aql +FOR p IN 4 ANY K_PATHS "person/1544" TO "person/52560" acts_in + LIMIT 2 + RETURN p.vertices[*].label + +// Chris Rock --> Dogma <-- Ben Affleck --> Surviving Christmas <-- Jennifer Morrison +// Chris Rock --> The Longest Yard <-- Rob Schneider --> Big Stan <-- Jennifer Morrison +``` + +You can still declare collections manually, in which case they are added as +data sources in addition to automatically deduced collections. +{{< /tip >}} + ## Examples You can load the `kShortestPathsGraph` example graph to get a named graph that diff --git a/site/content/arangodb/3.12/aql/graphs/k-shortest-paths.md b/site/content/arangodb/3.12/aql/graphs/k-shortest-paths.md index 9c638740d7..e4f5d646f8 100644 --- a/site/content/arangodb/3.12/aql/graphs/k-shortest-paths.md +++ b/site/content/arangodb/3.12/aql/graphs/k-shortest-paths.md @@ -186,6 +186,57 @@ All collections in the list that do not specify their own direction use the direction defined after `IN` (here: `OUTBOUND`). This allows to use a different direction for each collection in your path search. +### Graph path searches in a cluster + +Due to the nature of graphs, edges may reference nodes from arbitrary +collections. Following the paths can thus involve documents from various +collections and it is not possible to predict which are visited in a +traversal. Which collections need to be loaded by the graph engine can only be +determined at run time. + +Use the [`WITH` operation](../high-level-operations/with.md) to specify the +node collections you expect to be involved. This is required for traversals +using collection sets in cluster deployments. Declare the collection of the +start node as well if it's not declared already (like by a `FOR` loop). + +{{< tip >}} +From v3.12.6 onward, node collections are automatically deduced for graph +queries using collection sets / anonymous graphs if there is a named graph with +a matching edge collection in its edge definitions. + +For example, suppose you have two node collections, `person` and `movie`, and +an `acts_in` edge collection that connects them. If you want to run a path search +query that starts (and ends) at a person that you specify with its document ID, +you need to declare both node collections at the beginning of the query: + +```aql +WITH person, movie +FOR p IN ANY K_SHORTEST_PATHS "person/1544" TO "person/52560" acts_in + LIMIT 2 + RETURN p.vertices[*].label +``` + +However, if there is a named graph that includes an edge definition for the +`acts_in` edge collection, with `person` as the _from_ collection and `movie` +as the _to_ collection, you can omit `WITH person, movie`. That is, if you +specify `acts_in` as an edge collection in an anonymous graph query, all +named graphs are checked for this edge collection, and if there is a matching +edge definition, its node collections are automatically added as data sources to +the query. + +```aql +FOR p IN ANY K_SHORTEST_PATHS "person/1544" TO "person/52560" acts_in + LIMIT 2 + RETURN p.vertices[*].label + +// Chris Rock --> Dogma <-- Ben Affleck --> Surviving Christmas <-- Jennifer Morrison +// Chris Rock --> The Longest Yard <-- Rob Schneider --> Big Stan <-- Jennifer Morrison +``` + +You can still declare collections manually, in which case they are added as +data sources in addition to automatically deduced collections. +{{< /tip >}} + ## Examples You can load the `kShortestPathsGraph` example graph to get a named graph that diff --git a/site/content/arangodb/3.12/aql/graphs/shortest-path.md b/site/content/arangodb/3.12/aql/graphs/shortest-path.md index e3cab31823..788c10d61b 100644 --- a/site/content/arangodb/3.12/aql/graphs/shortest-path.md +++ b/site/content/arangodb/3.12/aql/graphs/shortest-path.md @@ -145,6 +145,54 @@ All collections in the list that do not specify their own direction use the direction defined after `IN` (here: `OUTBOUND`). This allows you to use a different direction for each collection in your path search. +### Graph path searches in a cluster + +Due to the nature of graphs, edges may reference nodes from arbitrary +collections. Following the paths can thus involve documents from various +collections and it is not possible to predict which are visited in a +traversal. Which collections need to be loaded by the graph engine can only be +determined at run time. + +Use the [`WITH` operation](../high-level-operations/with.md) to specify the +node collections you expect to be involved. This is required for traversals +using collection sets in cluster deployments. Declare the collection of the +start node as well if it's not declared already (like by a `FOR` loop). + +{{< tip >}} +From v3.12.6 onward, node collections are automatically deduced for graph +queries using collection sets / anonymous graphs if there is a named graph with +a matching edge collection in its edge definitions. + +For example, suppose you have two node collections, `person` and `movie`, and +an `acts_in` edge collection that connects them. If you want to run a path search +query that starts (and ends) at a person that you specify with its document ID, +you need to declare both node collections at the beginning of the query: + +```aql +WITH person, movie +FOR v IN ANY SHORTEST_PATH "person/1544" TO "person/52560" acts_in + RETURN v.label +``` + +However, if there is a named graph that includes an edge definition for the +`acts_in` edge collection, with `person` as the _from_ collection and `movie` +as the _to_ collection, you can omit `WITH person, movie`. That is, if you +specify `acts_in` as an edge collection in an anonymous graph query, all +named graphs are checked for this edge collection, and if there is a matching +edge definition, its node collections are automatically added as data sources to +the query. + +```aql +FOR v IN ANY SHORTEST_PATH "person/1544" TO "person/52560" acts_in + RETURN v.label + +// Chris Rock --> Dogma <-- Ben Affleck --> Surviving Christmas <-- Jennifer Morrison +``` + +You can still declare collections manually, in which case they are added as +data sources in addition to automatically deduced collections. +{{< /tip >}} + ## Conditional shortest path The `SHORTEST_PATH` computation only finds an unconditioned shortest path. diff --git a/site/content/arangodb/3.12/aql/graphs/traversals.md b/site/content/arangodb/3.12/aql/graphs/traversals.md index ef4870dfef..ed04514a58 100644 --- a/site/content/arangodb/3.12/aql/graphs/traversals.md +++ b/site/content/arangodb/3.12/aql/graphs/traversals.md @@ -342,9 +342,50 @@ collections and it is not possible to predict which are visited in a traversal. Which collections need to be loaded by the graph engine can only be determined at run time. -Use the [`WITH` statement](../high-level-operations/with.md) to specify the collections you -expect to be involved. This is required for traversals using collection sets -in cluster deployments. +Use the [`WITH` operation](../high-level-operations/with.md) to specify the +node collections you expect to be involved. This is required for traversals +using collection sets in cluster deployments. Declare the collection of the +start node as well if it's not declared already (like by a `FOR` loop). + +{{< tip >}} +From v3.12.6 onward, node collections are automatically deduced for graph +queries using collection sets / anonymous graphs if there is a named graph with +a matching edge collection in its edge definitions. + +For example, suppose you have two node collections, `person` and `movie`, and +an `acts_in` edge collection that connects them. If you want to run a traversal +query that starts at a person that you specify with its document ID, +you need to declare both node collections at the beginning of the query: + +```aql +WITH person, movie +FOR v, IN 0..1 OUTBOUND "person/1544" acts_in + LIMIT 4 + RETURN v.label +``` + +However, if there is a named graph that includes an edge definition for the +`acts_in` edge collection, with `person` as the _from_ collection and `movie` +as the _to_ collection, you can omit `WITH person, movie`. That is, if you +specify `acts_in` as an edge collection in an anonymous graph query, all +named graphs are checked for this edge collection, and if there is a matching +edge definition, its node collections are automatically added as data sources to +the query. + +```aql +FOR v, IN 0..1 OUTBOUND "person/1544" acts_in + LIMIT 4 + RETURN v.label + +// Chris Rock +// A.I. Artificial Intelligence +// Lethal Weapon 4 +// Madagascar +``` + +You can still declare collections manually, in which case they are added as +data sources in addition to automatically deduced collections. +{{< /tip >}} ## Pruning diff --git a/site/content/arangodb/3.12/develop/http-api/indexes/_index.md b/site/content/arangodb/3.12/develop/http-api/indexes/_index.md index f759f7e174..a35384f3d0 100644 --- a/site/content/arangodb/3.12/develop/http-api/indexes/_index.md +++ b/site/content/arangodb/3.12/develop/http-api/indexes/_index.md @@ -221,8 +221,8 @@ paths: insert a value into the index that already exists in the index always fails, regardless of the value of this attribute. - The optional **estimates** attribute is supported by persistent indexes. - This attribute controls whether index selectivity estimates are + The optional **estimates** attribute is supported by `persistent`, `mdi`, and + `mdi-prefixed` indexes. This attribute controls whether index selectivity estimates are maintained for the index. Not maintaining index selectivity estimates can have a slightly positive impact on write performance. The downside of turning off index selectivity estimates will be that diff --git a/site/content/arangodb/3.12/develop/http-api/indexes/multi-dimensional.md b/site/content/arangodb/3.12/develop/http-api/indexes/multi-dimensional.md index e38f031495..5627af291b 100644 --- a/site/content/arangodb/3.12/develop/http-api/indexes/multi-dimensional.md +++ b/site/content/arangodb/3.12/develop/http-api/indexes/multi-dimensional.md @@ -111,7 +111,10 @@ paths: default: false sparse: description: | - If `true`, then create a sparse index. + Whether to create a sparse index that excludes documents with + at least one of the attributes for indexing missing or set to + `null`. These attributes are defined by `fields` and (for + `mdi-prefixed` indexes) by `prefixFields`. type: boolean default: false estimates: diff --git a/site/content/arangodb/3.12/develop/http-api/indexes/persistent.md b/site/content/arangodb/3.12/develop/http-api/indexes/persistent.md index 7017836a3b..cb916d7aed 100644 --- a/site/content/arangodb/3.12/develop/http-api/indexes/persistent.md +++ b/site/content/arangodb/3.12/develop/http-api/indexes/persistent.md @@ -113,8 +113,9 @@ paths: default: false sparse: description: | - Whether create a sparse index that excludes documents with at least - one of the `fields` missing or set to `null`. + Whether to create a sparse index that excludes documents with + at least one of the attributes for indexing missing or set to + `null`. These attributes are defined by `fields`. type: boolean default: false deduplicate: diff --git a/site/content/arangodb/3.12/develop/http-api/indexes/vector.md b/site/content/arangodb/3.12/develop/http-api/indexes/vector.md index 1581ed1e94..0bbd14d4de 100644 --- a/site/content/arangodb/3.12/develop/http-api/indexes/vector.md +++ b/site/content/arangodb/3.12/develop/http-api/indexes/vector.md @@ -57,7 +57,7 @@ paths: A list with exactly one attribute path to specify where the vector embedding is stored in each document. The vector data needs to be populated before creating the index. - + If you want to index another vector embedding attribute, you need to create a separate vector index. type: array @@ -65,6 +65,13 @@ paths: maxItems: 1 items: type: string + sparse: + description: | + Whether to create a sparse index that excludes documents with + the attribute for indexing missing or set to `null`. This + attribute is defined by `fields`. + type: boolean + default: false parallelism: description: | The number of threads to use for indexing. @@ -88,9 +95,14 @@ paths: properties: metric: description: | - Whether to use `cosine` or `l2` (Euclidean) distance calculation. - type: string - enum: ["cosine", "l2"] + The measure for calculating the vector similarity: + - `"cosine"`: Angular similarity. Vectors are automatically + normalized before insertion and search. + - `"innerProduct"` (introduced in v3.12.6): + Similarity in terms of angle and magnitude. + Vectors are not normalized, making it faster than `cosine`. + - `"l2":` Euclidean distance. + enum: ["cosine", "innerProduct", "l2"] dimension: description: | The vector dimension. The attribute to index needs to diff --git a/site/content/arangodb/3.12/develop/http-api/monitoring/logs.md b/site/content/arangodb/3.12/develop/http-api/monitoring/logs.md index d68f1b6eeb..7808927511 100644 --- a/site/content/arangodb/3.12/develop/http-api/monitoring/logs.md +++ b/site/content/arangodb/3.12/develop/http-api/monitoring/logs.md @@ -568,7 +568,7 @@ paths: Logs various information related to ArangoDB's use of the RocksDB storage engine, like the initialization and file operations. - + RocksDB's internal log messages are passed through using the `rocksdb` log topic. type: string @@ -856,12 +856,14 @@ paths: operationId: getRecentApiCalls description: | Get a list of the most recent requests with a timestamp and the endpoint. + In cluster deployments, the list contains only those requests that were + submitted to the Coordinator you call this endpoint on. This feature is for debugging purposes. You can control how much memory is used to record API calls with the `--server.api-recording-memory-limit` startup option. - You can disable this endpoint + You can disable this and the `/_admin/server/aql-queries` endpoint with the `--log.recording-api-enabled` startup option. Whether API calls are recorded is independently controlled by the @@ -875,7 +877,9 @@ paths: description: | The name of a database. Which database you use doesn't matter as long as the user account you authenticate with has at least read access - to this database. + to this database and administrate access to the `_system` database. + If `--log.recording-api-enabled` is set to `jwt`, you need to use + a superuser token to access the endpoint. schema: type: string responses: @@ -1075,3 +1079,239 @@ Content-Length: 257 } ``` {{< /details >}} + +## Get recent AQL queries + +```openapi +paths: + /_db/{database-name}/_admin/server/aql-queries: + get: + operationId: getRecentAqlQueries + description: | + Get a list of the most recent AQL queries with a timestamp and + information about the submitted query. In cluster deployments, the list + contains only those queries that were submitted to the Coordinator you + call this endpoint on. This feature is for debugging purposes. + + You can control how much memory is used to record AQL queries with the + `--server.aql-recording-memory-limit` startup option. + + You can disable this and the `/_admin/server/api-calls` endpoint + with the `--log.recording-api-enabled` startup option. + + Whether AQL queries are recorded is independently controlled by the + `--server.aql-query-recording` startup option. + The endpoint returns an empty list of queries if turned off. + parameters: + - name: database-name + in: path + required: true + example: _system + description: | + The name of a database. Which database you use doesn't matter as long + as the user account you authenticate with has at least read access + to this database and administrate access to the `_system` database. + If `--log.recording-api-enabled` is set to `jwt`, you need to use + a superuser token to access the endpoint. + schema: + type: string + responses: + '200': + description: | + Returns the recorded AQL queries. + content: + application/json: + schema: + type: object + required: + - error + - code + - result + properties: + error: + description: | + A flag indicating that no error occurred. + type: boolean + example: false + code: + description: | + The HTTP response status code. + type: integer + example: 200 + result: + description: | + The request result. + type: object + required: + - queries + properties: + queries: + description: | + A list of the recent AQL queries. + Empty if AQL query recording is disabled. + type: array + items: + type: object + properties: + timeStamp: + description: | + The date and time of the request in ISO 8601 format. + type: string + format: date-time + query: + description: | + The AQL query. + type: string + bindVars: + description: | + Key/value pairs representing the bind variables. + type: object + database: + description: | + The database name. + type: string + '401': + description: | + The user account has insufficient permissions for the selected database. + content: + application/json: + schema: + type: object + required: + - error + - code + - errorNum + - errorMessage + properties: + error: + description: | + A flag indicating that an error occurred. + type: boolean + example: true + code: + description: | + The HTTP response status code. + type: integer + example: 401 + errorNum: + description: | + ArangoDB error number for the error that occurred. + type: integer + errorMessage: + description: | + A descriptive error message. + type: string + '403': + description: | + The recording API has been disabled. + content: + application/json: + schema: + type: object + required: + - error + - code + - errorNum + - errorMessage + properties: + error: + description: | + A flag indicating that an error occurred. + type: boolean + example: true + code: + description: | + The HTTP response status code. + type: integer + example: 403 + errorNum: + description: | + ArangoDB error number for the error that occurred. + type: integer + errorMessage: + description: | + A descriptive error message. + type: string + '501': + description: | + The method has not been called on a Coordinator or single server. + content: + application/json: + schema: + type: object + required: + - error + - code + - errorNum + - errorMessage + properties: + error: + description: | + A flag indicating that an error occurred. + type: boolean + example: true + code: + description: | + The HTTP response status code. + type: integer + example: 501 + errorNum: + description: | + ArangoDB error number for the error that occurred. + type: integer + errorMessage: + description: | + A descriptive error message. + type: string + tags: + - Monitoring +``` + +{{< comment >}} +Example not generated because it changes on every run and there can be many internal queries. +{{< /comment >}} + +```bash +curl --header 'accept: application/json' --dump - http://localhost:8529/_admin/server/aql-queries +``` + +{{< details summary="Show output" >}} +```bash +HTTP/1.1 200 OK +X-Arango-Queue-Time-Seconds: 0.000000 +Strict-Transport-Security: max-age=31536000 ; includeSubDomains +Expires: 0 +Pragma: no-cache +Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0 +Content-Security-Policy: frame-ancestors 'self'; form-action 'self'; +X-Content-Type-Options: nosniff +Server: ArangoDB +Connection: Keep-Alive +Content-Type: application/json; charset=utf-8 +Content-Length: 353 + +{ + "error": false, + "code": 200, + "result": { + "queries": [ + { + "timeStamp": "2025-07-02T16:33:32Z", + "query": "FOR s in @@collection FILTER s.time < @start RETURN s._key", + "database": "_system", + "bindVars": { + "@collection": "_statistics", + "start": 1751470412.3836362 + } + }, + { + "timeStamp": "2025-07-02T16:26:01Z", + "query": "FOR doc IN coll RETURN doc", + "database": "_system", + "bindVars": {} + } + ] + } +} +``` +{{< /details >}} \ No newline at end of file diff --git a/site/content/arangodb/3.12/develop/integrations/_index.md b/site/content/arangodb/3.12/develop/integrations/_index.md index 635983cc4d..3469808d73 100644 --- a/site/content/arangodb/3.12/develop/integrations/_index.md +++ b/site/content/arangodb/3.12/develop/integrations/_index.md @@ -47,3 +47,12 @@ allows you to export data from Apache Kafka to ArangoDB. - Repository: [github.com/arangodb/kafka-connect-arangodb/](https://github.com/arangodb/kafka-connect-arangodb/) - [Demo](https://github.com/arangodb/kafka-connect-arangodb/tree/main/demo) - [Changelog](https://github.com/arangodb/kafka-connect-arangodb/blob/main/ChangeLog.md) + +## TinkerPop Provider + +The [**ArangoDB TinkerPop Provider**](arangodb-tinkerpop-provider.md) is an implementation of +the [Apache TinkerPop OLTP Provider](https://tinkerpop.apache.org/docs/3.7.3/dev/provider) API +for ArangoDB. + +- Repository: [github.com/arangodb/arangodb-tinkerpop-provider](https://github.com/arangodb/arangodb-tinkerpop-provider) +- [Changelog](https://github.com/arangodb/arangodb-tinkerpop-provider/blob/main/CHANGELOG.md) diff --git a/site/content/arangodb/3.12/develop/integrations/arangodb-tinkerpop-provider.md b/site/content/arangodb/3.12/develop/integrations/arangodb-tinkerpop-provider.md new file mode 100644 index 0000000000..04012366f9 --- /dev/null +++ b/site/content/arangodb/3.12/develop/integrations/arangodb-tinkerpop-provider.md @@ -0,0 +1,841 @@ +--- +title: ArangoDB TinkerPop Provider +menuTitle: TinkerPop Provider +weight: 10 +description: >- + Build graph applications using TinkerPop API with ArangoDB's high-performance backend, combining Gremlin traversals and native AQL queries +--- +ArangoDB TinkerPop Provider is an implementation of the [Apache TinkerPop OLTP Provider](https://tinkerpop.apache.org/docs/3.7.4/dev/provider) API for +ArangoDB. + +It allows using the standard TinkerPop API with ArangoDB as the backend storage. It supports creating, +querying, and manipulating graph data using the Gremlin traversal language, while offering the possibility to use native +AQL (ArangoDB Query Language) for complex queries. + +- Repository: <https://github.com/arangodb/arangodb-tinkerpop-provider> +- [Code examples](https://github.com/arangodb/arangodb-tinkerpop-provider/tree/main/src/test/java/example) +- [Demo](https://github.com/arangodb/arangodb-tinkerpop-provider/tree/main/demo) +- [JavaDoc](https://www.javadoc.io/doc/com.arangodb/arangodb-tinkerpop-provider/latest/index.html) (generated reference documentation) +- [ChangeLog](https://github.com/arangodb/arangodb-tinkerpop-provider/blob/main/CHANGELOG.md) + +## Compatibility + +This Provider is compatible with: + +- Apache TinkerPop 3.7 +- ArangoDB 3.12+ +- ArangoDB Java Driver 7.22+ +- Java 8+ + +## Installation + +### Maven + +1. Check the [latest version](https://search.maven.org/artifact/com.arangodb/arangodb-tinkerpop-provider) available. +2. Add the following dependency to your `pom.xml` file: + +```xml +<dependencies> + <dependency> + <groupId>com.arangodb</groupId> + <artifactId>arangodb-tinkerpop-provider</artifactId> + <version>x.y.z</version> + </dependency> +</dependencies> +``` + +### Gradle + +1. Add the following dependency to your `build.gradle`: + +```groovy +implementation 'com.arangodb:arangodb-tinkerpop-provider:x.y.z' +``` + +### Gremlin Console + +1. Install the TinkerPop Provider in the Gremlin Console: + +```text +:install com.arangodb arangodb-tinkerpop-provider x.y.z +``` + +2. Restart the console to load the provider. + +3. Create a configuration for your ArangoDB connection. + +```text +gremlin> conf = [ +......1> "gremlin.graph":"com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph", +......2> "gremlin.arangodb.conf.graph.enableDataDefinition":"true", +......3> "gremlin.arangodb.conf.driver.hosts":"172.28.0.1:8529", +......4> "gremlin.arangodb.conf.driver.password":"test", +......5> ] +==>gremlin.graph=com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph +==>gremlin.arangodb.conf.graph.enableDataDefinition=true +==>gremlin.arangodb.conf.driver.hosts=172.28.0.1:8529 +==>gremlin.arangodb.conf.driver.password=test +``` +4. Open the graph using the configuration. + +```text +gremlin> graph = GraphFactory.open(conf) +==>arangodbgraph[ArangoDBGraphConfig{...}] +``` + +5. Create a traversal source and start using it: + +```text +gremlin> g = graph.traversal() +==>graphtraversalsource[arangodbgraph[...], standard] + +gremlin> g.addV("person").property("name", "marko") +==>v[4586117] + +gremlin> g.V().hasLabel("person").values("name") +==>marko +``` + +### Server Plugin + +Follow the steps below to set up the provider as a Gremlin Server plugin. + +1. Install the provider in the Gremlin Server: + + ```bash + ./bin/gremlin-server.sh install com.arangodb arangodb-tinkerpop-provider x.y.z + ``` + +2. Create a graph configuration file (e.g., `conf/arangodb.yaml`): + + ```yaml + gremlin: + graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" + arangodb: + conf: + graph: + enableDataDefinition: true + driver: + hosts: + - "172.28.0.1:8529" + password: test + ``` + +3. Create a server configuration file to load the plugin and graph configuration (e.g., `conf/gremlin-server-arangodb.yaml`): + +```yaml +host: 0.0.0.0 +port: 8182 +graphs: { + graph: conf/arangodb.yaml} +scriptEngines: { + gremlin-groovy: { + plugins: { org.apache.tinkerpop.gremlin.server.jsr223.GremlinServerGremlinPlugin: {}, + org.apache.tinkerpop.gremlin.tinkergraph.jsr223.TinkerGraphGremlinPlugin: {}, + com.arangodb.tinkerpop.gremlin.jsr223.ArangoDBGremlinPlugin: {}, + org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin: {classImports: [java.lang.Math], methodImports: [java.lang.Math#*]}, + org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: {files: [scripts/empty-sample.groovy]}}}} +serializers: + - { className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV3, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3] }} # application/json + - { className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1 } # application/vnd.graphbinary-v1.0 + - { className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }} # application/vnd.graphbinary-v1.0-stringd +processors: + - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }} + - { className: org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor} +``` + +4. Start the Gremlin Server with your configuration: + + ```bash + ./bin/gremlin-server.sh conf/gremlin-server-arangodb.yaml + ``` + +5. Connect to the server using the Gremlin Console: + + ```text + gremlin> :remote connect tinkerpop.server conf/remote.yaml + + gremlin> :remote console + ==>All scripts will now be sent to Gremlin Server - [localhost/127.0.0.1:8182] - type ':remote console' to return to local mode + ``` + +6. Start using the graph: + + ```text + gremlin> g.addV("person").property("name", "marko") + ==>v[4587713] + + gremlin> g.V().hasLabel("person").values("name") + ==>marko + ``` + +You can find the reference documentation [here](https://tinkerpop.apache.org/docs/3.7.4/reference/#_configuring_2). + + +## Quick Start + +Follow the steps below to get started with creating vertices, edges, and querying the graph. + +### Step 1: Configure and Create the Graph + +[//]: <> (@formatter:off) +```java +// Create a configuration +Configuration conf = new ArangoDBConfigurationBuilder() + .hosts("localhost:8529") + .user("root") + .password("test") + .db("myDatabase") + .name("myGraph") + .enableDataDefinition(true) // Allow creating database and graph if they don't exist + .build(); + +// Create a graph +ArangoDBGraph graph = (ArangoDBGraph) GraphFactory.open(conf); + +// Get a traversal source +GraphTraversalSource g = graph.traversal(); +``` +### Step 2: Add Vertices and Edges + +```java +// Add vertices with properties +Vertex person = g.addV("person") + .property("name", "Alice") + .property("age", 30) + .property("country", "Germany") + .next(); + +Vertex software = g.addV("software") + .property("name", "JArango") + .property("lang", "Java") + .next(); + +// Create relationships between vertices +Edge created = g.addE("created") + .from(person) + .to(software) + .property("year", 2025) + .next(); +``` + +### Step 3: Query the Graph + +```java +// Query the graph +List<String> creators = g.V() + .hasLabel("software") + .has("name", "JArango") + .in("created") + .<String>values("name") + .toList(); + +System.out.println("Creators: " + creators); + +// Query: Find all software created by Alice +List<String> aliceSoftware = g.V() + .hasLabel("person") + .has("name", "Alice") + .out("created") + .<String>values("name") + .toList(); + +System.out.println("aliceSoftware: " + aliceSoftware); + +``` + +### Step 4: Update Data + +```java +// Update a property +g.V() + .hasLabel("person") + .has("name", "Alice") + .property("age", 31) + .iterate(); + +// Remove a property +g.V() + .hasLabel("person") + .has("name", "Alice") + .properties("country") + .drop() + .iterate(); + +// Check the updated vertex +Map<?, ?> alice = g.V() + .hasLabel("person") + .has("name", "Alice") + .valueMap() + .next(); + +System.out.println("alice: " + alice); +``` + +### Step 5: Delete Data and Clean Up + +```java +// Remove an edge +g.E() + .hasLabel("created") + .where(__.outV() + .has("name", "Alice")) + .where(__.inV() + .has("name", "JArango")) + .drop() + .iterate(); + +// Remove a vertex (and its incident edges) +g.V() + .hasLabel("person") + .has("name", "Alice") + .drop() + .iterate(); + +// Close the graph when done +graph.close(); +``` +[//]: <> (@formatter:on) + +## Configuration + +The graph can be created using the methods from `org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(...)` +(see [javadoc](https://tinkerpop.apache.org/javadocs/3.7.4/full/org/apache/tinkerpop/gremlin/structure/util/GraphFactory.html)). +These methods accept a configuration file (e.g., YAML or properties file), a Java Map, or an Apache Commons Configuration object. + +The property `gremlin.graph` must be set to: `com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph`. + +Configuration examples can be found [here](https://github.com/arangodb/arangodb-tinkerpop-provider/tree/main/src/test/java/example). + +### Graph Configuration Properties + +Graph configuration properties are prefixed with `gremlin.arangodb.conf.graph`: + +| Property | Description | Default | +|----------------------------------------------------|---------------------------------------|-------------| +| `gremlin.arangodb.conf.graph.db` | ArangoDB database name | `_system` | +| `gremlin.arangodb.conf.graph.name` | ArangoDB graph name | `tinkerpop` | +| `gremlin.arangodb.conf.graph.enableDataDefinition` | Flag to allow data definition changes | `false` | +| `gremlin.arangodb.conf.graph.type` | Graph type: `SIMPLE` or `COMPLEX` | `SIMPLE` | +| `gremlin.arangodb.conf.graph.labelField` | Label field name | `_label` | +| `gremlin.arangodb.conf.graph.orphanCollections` | List of orphan collections names | - | +| `gremlin.arangodb.conf.graph.edgeDefinitions` | List of edge definitions | - | + +### Driver Configuration Properties + +Driver configuration properties are prefixed with `gremlin.arangodb.conf.driver`. All properties from +`com.arangodb.config.ArangoConfigProperties` are supported. See +the [ArangoDB Java Driver documentation](https://docs.arangodb.com/stable/develop/drivers/java/reference-version-7/driver-setup/#config-file-properties) +for details. + +### YAML Configuration + +```yaml +gremlin: + graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" + arangodb: + conf: + graph: + db: "testDb" + name: "myFirstGraph" + enableDataDefinition: true + type: COMPLEX + orphanCollections: [ "x", "y", "z" ] + edgeDefinitions: + - "e1:[a]->[b]" + - "e2:[a,b]->[c,d]" + driver: + user: "root" + password: "test" + hosts: + - "172.28.0.1:8529" + - "172.28.0.1:8539" + - "172.28.0.1:8549" +``` + +Loading from a YAML file: + +[//]: <> (@formatter:off) +```java +ArangoDBGraph graph = (ArangoDBGraph) GraphFactory.open("<path_to_yaml_file>"); +``` +[//]: <> (@formatter:on) + +### Programmatic Configuration + +1. Build the configuration using the configuration builder: + + [//]: <> (@formatter:off) + ```java + Configuration conf = new ArangoDBConfigurationBuilder() + .hosts("172.28.0.1:8529") + .user("root") + .password("test") + .database("testDb") + .name("myGraph") + .graphType(GraphType.SIMPLE) + .enableDataDefinition(true) + .build(); + ``` + [//]: <> (@formatter:on) + +2. Create the graph using the configuration: + + [//]: <> (@formatter:off) + ```java + ArangoDBGraph graph = (ArangoDBGraph) GraphFactory.open(conf); + ``` + [//]: <> (@formatter:on) + +### SSL Configuration + +To use TLS-secured connections to ArangoDB, follow these steps: + +1. Enable SSL by setting `gremlin.arangodb.conf.driver.useSsl` to `true` in your configuration. + +2. Configure SSL properties as needed (see [ArangoDB Java Driver documentation](https://docs.arangodb.com/stable/develop/drivers/java/reference-version-7/driver-setup/#config-file-properties) for all available options): + + ```yaml + gremlin: + graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" + arangodb: + conf: + driver: + hosts: + - "172.28.0.1:8529" + useSsl: true + verifyHost: false + sslCertValue: "MIIDezCCAmOgAwIBAgIEeDCzXzANBgkqhkiG9w0BAQsFADBuMRAwDgYDVQQGEwdVbmtub3duMRAwDgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAwDgYDVQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMRIwEAYDVQQDEwlsb2NhbGhvc3QwHhcNMjAxMTAxMTg1MTE5WhcNMzAxMDMwMTg1MTE5WjBuMRAwDgYDVQQGEwdVbmtub3duMRAwDgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAwDgYDVQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMRIwEAYDVQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1WiDnd4+uCmMG539ZNZB8NwI0RZF3sUSQGPx3lkqaFTZVEzMZL76HYvdc9Qg7difyKyQ09RLSpMALX9euSseD7bZGnfQH52BnKcT09eQ3wh7aVQ5sN2omygdHLC7X9usntxAfv7NzmvdogNXoJQyY/hSZff7RIqWH8NnAUKkjqOe6Bf5LDbxHKESmrFBxOCOnhcpvZWetwpiRdJVPwUn5P82CAZzfiBfmBZnB7D0l+/6Cv4jMuH26uAIcixnVekBQzl1RgwczuiZf2MGO64vDMMJJWE9ClZF1uQuQrwXF6qwhuP1Hnkii6wNbTtPWlGSkqeutr004+Hzbf8KnRY4PAgMBAAGjITAfMB0GA1UdDgQWBBTBrv9Awynt3C5IbaCNyOW5v4DNkTANBgkqhkiG9w0BAQsFAAOCAQEAIm9rPvDkYpmzpSIhR3VXG9Y71gxRDrqkEeLsMoEyqGnw/zx1bDCNeGg2PncLlW6zTIipEBooixIE9U7KxHgZxBy0Et6EEWvIUmnr6F4F+dbTD050GHlcZ7eOeqYTPYeQC502G1Fo4tdNi4lDP9L9XZpf7Q1QimRH2qaLS03ZFZa2tY7ah/RQqZL8Dkxx8/zc25sgTHVpxoK853glBVBs/ENMiyGJWmAXQayewY3EPt/9wGwV4KmU3dPDleQeXSUGPUISeQxFjy+jCw21pYviWVJTNBA9l5ny3GhEmcnOT/gQHCvVRLyGLMbaMZ4JrPwb+aAtBgrgeiK4xeSMMvrbhw==" + ``` + +3. Alternatively, use system properties for truststore configuration. If no `sslCertValue` is provided, the default SSL context is used. In such cases, you can specify the truststore using system properties: + - `javax.net.ssl.trustStore` + - `javax.net.ssl.trustStorePassword` + +### Data Definition Management + +The provider follows this process when instantiating a graph: + +1. **Validation**: The provider compares existing data definitions in ArangoDB with the structure expected by your configuration. It checks whether: + - The database exists + - The graph exists + - The graph structure has the same edge definitions and orphan collections + +2. **Error handling**: If there's a mismatch, an error is thrown and the graph is not instantiated. + +3. **Automatic creation** (optional): To automatically create missing data definitions, set `gremlin.arangodb.conf.graph.enableDataDefinition` to `true`. This allows: + - Creating a new database if it doesn't exist + - Creating a new graph if it doesn't exist (along with vertex and edge collections) + +{{< info >}} +Existing graphs are never modified automatically for safety reasons. +{{< /info >}} + +## Graph Types + +The ArangoDB TinkerPop Provider supports two graph types, which can be configured with the property +`gremlin.arangodb.conf.graph.type`: `SIMPLE` and `COMPLEX`. + +### SIMPLE Graph Type + +From an application perspective, this is the most flexible graph type that is backed by an ArangoDB graph composed of only one vertex collection and one edge definition. + +The `label` of each element is stored in a database document field. The label field name is configurable by setting the configuration property `graph.labelField`, `_label` by default. + +The `SIMPLE` graph type is the default graph type. + +It has the following advantages: + +- It closely matches the TinkerPop property graph +- It is simpler to get started and run examples +- It imposes no restrictions about element IDs +- It supports arbitrary labels, i.e., labels not known at graph construction time + +It has the following disadvantages: + +- All vertex types will be stored in the same vertex collection +- All edge types will be stored in the same edge collection +- It could not leverage the full potential of ArangoDB graph traversal +- It could require an index on the label field to improve performance + +Example configuration: + +```yaml +gremlin: + graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" + arangodb: + conf: + graph: + db: "db" + name: "myGraph" + type: SIMPLE + edgeDefinitions: + - "e:[v]->[v]" +``` + +If `edgeDefinitions` are not configured, the default names are used: + +- `vertex` will be used for the vertex collection +- `edge` will be used for the edge collection + +Using a `SIMPLE` graph configured as in the example above and creating a new element like: + +[//]: <> (@formatter:off) +```java +graph.addVertex(T.label, "person", T.id, "foo"); +``` +[//]: <> (@formatter:on) + +would result in creating a document in the vertex collection `v` with `_key` equals to `foo` (and `_id` equals +to `v/foo`). + +### COMPLEX Graph Type + +The `COMPLEX` graph type is backed by an ArangoDB graph composed potentially of multiple vertex collections and multiple +edge definitions. + +The `label` of each element is used as name for the related database collection. + +It has the following advantages: + +- It closely matches the ArangoDB graph structure +- It allows multiple vertex collections and multiple edge collections +- It partitions the data in a finer way +- It allows indexing and sharding collections independently +- It is more flexible to match pre-existing database graph structures + +But on the other side has the following constraints: + +- Element IDs must have the format: `<label>/<key>`, where: + - `<label>` is the element label + - `<key>` is the database document key +- Only labels corresponding to graph collections can be used + +Example configuration: + +```yaml +gremlin: + graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" + arangodb: + conf: + graph: + db: "db" + name: "myGraph" + type: COMPLEX + edgeDefinitions: + - "knows:[person]->[person]" + - "created:[person]->[game,software]" +``` + +Using a `COMPLEX` graph configured as in the example above and creating a new element like: + +[//]: <> (@formatter:off) +```java +graph.addVertex(T.label, "person", T.id, "person/foo"); +``` +[//]: <> (@formatter:on) + +would result in creating a document in the vertex collection `person` with `_key` equals to `foo` (and `_id` +equals to `person/foo`). + +## Naming Constraints + +When using the ArangoDB TinkerPop Provider, be aware that Element IDs must be strings. + +## Persistent Structure + +The ArangoDB TinkerPop Provider maps TinkerPop data structures to ArangoDB data as follows: + +### Vertices + +Vertices are stored as documents in vertex collections. In a `SIMPLE` graph, all vertices are stored in a single +collection, by default named `vertex`. In a `COMPLEX` graph, vertices are stored in collections named +`<label>`. + +Each vertex document contains: + +- Standard ArangoDB fields (`_id`, `_key`, `_rev`) +- Vertex properties as document fields +- Meta-properties nested in the nested map `_meta` + +Additionally, in a `SIMPLE` graph: +- The label field (`_label` by default) + +For example, the following Java code: + +[//]: <> (@formatter:off) +```java +graph + .addVertex("person") + .property("name", "Freddie Mercury") + .property("since", 1970); +``` +[//]: <> (@formatter:on) + +creates a document like this: + +```json +{ + "_key": "4856", + "_id": "vertex/4856", + "_rev": "_kFqmbXK---", + "_label": "person", + "name": "Freddie Mercury", + "_meta": { + "name": { + "since": 1970 + } + } +} +``` + +### Edges + +Edges are stored as documents in edge collections. In a `SIMPLE` graph, all edges are stored in a single collection, by +default named `edge`. In a `COMPLEX` graph, edges are stored in collections named `<label>`. + +Each edge document contains: + +- Standard ArangoDB edge fields (`_id`, `_key`, `_rev`, `_from`, `_to`) +- Edge properties as document fields + +Additionally, in a `SIMPLE` graph: +- The label field (`_label` by default) + +For example, the following Java code: + +[//]: <> (@formatter:off) +```java +Vertex v = graph.addVertex("person"); +v.addEdge("knows", v) + .property("since", 1970); +``` +[//]: <> (@formatter:on) + +creates a document like this: + +```json +{ + "_key": "5338", + "_id": "edge/5338", + "_from": "vertex/5335", + "_to": "vertex/5335", + "_rev": "_kFq20-u---", + "_label": "knows", + "since": 1970 +} +``` + +## Element IDs + +Given a Gremlin element, you can get the corresponding ArangoDB document ID (`_id` field) using the +`ArangoDBGraph.elementId(Element)` method: + +[//]: <> (@formatter:off) +```java +Vertex v = graph.addVertex("name", "marko"); +String id = graph.elementId(v); +``` +[//]: <> (@formatter:on) + +This is useful when you need to reference the element directly in AQL queries. + + +## Query Optimization + +ArangoDB TinkerPop Provider includes an optimization strategy that can push certain Gremlin traversal steps down to +the database layer for improved performance. +This is applied by `com.arangodb.tinkerpop.gremlin.process.traversal.strategy.optimization.ArangoStepStrategy`. + +### HasStep Pushdown + +The optimizer analyzes the traversal steps and attempts to convert filter steps of type +`org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep` into AQL queries that execute directly on the +database. This reduces the amount of data transferred and processed in the client application. + +All Gremlin predefined predicate values from `org.apache.tinkerpop.gremlin.process.traversal.P` are supported: +- **comparison predicates**: `eq`, `neq`, `lt`, `gt`, etc. +- **collection predicates**: `within`, `without` +- **text predicates**: `containing`, `startingWith`, `endingWith`, `regex` +- **logical combinations**: `and`, `or`, `not` + +For example, the following traversal is optimized to execute the filtering logic in ArangoDB using AQL and transferring to the client only the matching +vertices, rather than retrieving all vertices and filtering them in the client. + +[//]: <> (@formatter:off) +```groovy +g.V().has("value", "foo") +``` +[//]: <> (@formatter:on) + +### Disabling Optimization + +If you need to disable the optimization strategy: + +1. **Create a traversal source** without the optimization strategy: + + [//]: <> (@formatter:off) + ```java + GraphTraversalSource g = graph.traversal().withoutStrategies(ArangoStepStrategy.class); + ``` + [//]: <> (@formatter:on) + +2. **Use the traversal source** as normal. All traversals will execute without AQL optimization. + +## AQL Queries + +For complex queries or performance-critical operations, you can use ArangoDB's native query language (AQL) directly: + +[//]: <> (@formatter:off) +```java +List<Vertex> alice = graph + .<Vertex>aql("FOR v IN vertex FILTER v.name == @name RETURN v", Map.of("name", "Alice")) + .toList(); + +// Query using document ID +Vertex v = graph.addVertex("name", "marko"); +String id = graph.elementId(v); +List<Vertex> result = graph + .<Vertex>aql("RETURN DOCUMENT(@id)", Map.of("id", id)) + .toList(); +``` +[//]: <> (@formatter:on) + +## Supported Features + +This library supports the following features: + +```text +> GraphFeatures +>-- Computer: false +>-- Persistence: true +>-- ConcurrentAccess: true +>-- Transactions: false +>-- ThreadedTransactions: false +>-- IoRead: true +>-- IoWrite: true +>-- OrderabilitySemantics: false +>-- ServiceCall: false +> VariableFeatures +>-- Variables: true +>-- LongArrayValues: true +>-- StringArrayValues: true +>-- BooleanValues: true +>-- ByteValues: false +>-- DoubleValues: true +>-- FloatValues: false +>-- IntegerValues: true +>-- LongValues: true +>-- MapValues: true +>-- MixedListValues: true +>-- SerializableValues: false +>-- StringValues: true +>-- UniformListValues: true +>-- BooleanArrayValues: true +>-- ByteArrayValues: false +>-- DoubleArrayValues: true +>-- FloatArrayValues: false +>-- IntegerArrayValues: true +> VertexFeatures +>-- DuplicateMultiProperties: false +>-- AddVertices: true +>-- RemoveVertices: true +>-- MultiProperties: false +>-- MetaProperties: true +>-- Upsert: false +>-- NullPropertyValues: true +>-- AddProperty: true +>-- RemoveProperty: true +>-- UserSuppliedIds: true +>-- NumericIds: false +>-- StringIds: true +>-- UuidIds: false +>-- CustomIds: false +>-- AnyIds: false +> VertexPropertyFeatures +>-- NullPropertyValues: true +>-- RemoveProperty: true +>-- UserSuppliedIds: false +>-- NumericIds: true +>-- StringIds: true +>-- UuidIds: true +>-- CustomIds: true +>-- AnyIds: false +>-- Properties: true +>-- LongArrayValues: true +>-- StringArrayValues: true +>-- BooleanValues: true +>-- ByteValues: false +>-- DoubleValues: true +>-- FloatValues: false +>-- IntegerValues: true +>-- LongValues: true +>-- MapValues: true +>-- MixedListValues: true +>-- SerializableValues: false +>-- StringValues: true +>-- UniformListValues: true +>-- BooleanArrayValues: true +>-- ByteArrayValues: false +>-- DoubleArrayValues: true +>-- FloatArrayValues: false +>-- IntegerArrayValues: true +> EdgeFeatures +>-- Upsert: false +>-- AddEdges: true +>-- RemoveEdges: true +>-- NullPropertyValues: true +>-- AddProperty: true +>-- RemoveProperty: true +>-- UserSuppliedIds: true +>-- NumericIds: false +>-- StringIds: true +>-- UuidIds: false +>-- CustomIds: false +>-- AnyIds: false +> EdgePropertyFeatures +>-- Properties: true +>-- LongArrayValues: true +>-- StringArrayValues: true +>-- BooleanValues: true +>-- ByteValues: false +>-- DoubleValues: true +>-- FloatValues: false +>-- IntegerValues: true +>-- LongValues: true +>-- MapValues: true +>-- MixedListValues: true +>-- SerializableValues: false +>-- StringValues: true +>-- UniformListValues: true +>-- BooleanArrayValues: true +>-- ByteArrayValues: false +>-- DoubleArrayValues: true +>-- FloatArrayValues: false +>-- IntegerArrayValues: true +``` + +## Current Limitations + +- This library implements the Online Transactional Processing Graph Systems (OLTP) API only. The Online Analytics Processing Graph Systems (OLAP) API is currently not implemented. +- Some generated queries might not be optimized, since the Process API is only partially implemented (see [Query Optimization](#query-optimization)). For optimal query performance is recommended to use [AQL queries](#aql-queries). + +## Logging + +The library uses the `slf4j` API for logging. To log requests and responses to and from the database, enable the `DEBUG` log level for the logger `com.arangodb.internal.net.Communication`. + +## Examples and Demo + +The [demo](https://github.com/arangodb/arangodb-tinkerpop-provider/tree/main/demo) project contains comprehensive usage examples of this library. + +For additional examples, check +the [Gremlin tutorial](https://tinkerpop.apache.org/docs/3.7.4/tutorials/getting-started/). + +## Acknowledgments + +This repository is based on and extends the original work of +the [arangodb-community/arangodb-tinkerpop-provider](https://github.com/arangodb-community/arangodb-tinkerpop-provider) +project. + +We gratefully acknowledge the efforts of [Horacio Hoyos Rodriguez](https://github.com/arcanefoam) and other contributors +of the community repository, see [AUTHORS.md](https://github.com/arangodb/arangodb-tinkerpop-provider/blob/main/AUTHORS.md). diff --git a/site/content/arangodb/3.12/features/list.md b/site/content/arangodb/3.12/features/list.md index 3641e428b8..ca558677d2 100644 --- a/site/content/arangodb/3.12/features/list.md +++ b/site/content/arangodb/3.12/features/list.md @@ -150,11 +150,9 @@ available from v3.12.5 onward. threshold is reached. {{% /comment %}} -{{% comment %}} Experimental feature - [**Vector search**](../index-and-search/indexing/working-with-indexes/vector-indexes.md): Find items with similar properties by comparing vector embeddings generated by machine learning models. -{{% /comment %}} - [**Search highlighting**](../index-and-search/arangosearch/search-highlighting.md): Get the substring positions of matched terms, phrases, or _n_-grams. diff --git a/site/content/arangodb/3.12/index-and-search/indexing/which-index-to-use-when.md b/site/content/arangodb/3.12/index-and-search/indexing/which-index-to-use-when.md index ec36b3d532..fcedb87747 100644 --- a/site/content/arangodb/3.12/index-and-search/indexing/which-index-to-use-when.md +++ b/site/content/arangodb/3.12/index-and-search/indexing/which-index-to-use-when.md @@ -175,11 +175,11 @@ db.collection.ensureIndex({ type: "persistent", fields: [ "attributeName1", "att When not explicitly set, the `sparse` attribute defaults to `false` for new indexes. Indexes other than persistent do not support the `sparse` option. -As sparse indexes may exclude some documents from the collection, they cannot be used for -all types of queries. Sparse hash indexes cannot be used to find documents for which at -least one of the indexed attributes has a value of `null`. For example, the following AQL -query cannot use a sparse index, even if one was created on attribute `attr`: -<!-- TODO Remove above statement? --> +As sparse indexes may exclude some documents from the collection, they cannot +be used for all types of queries. For example, sparse persistent indexes cannot +be used to find documents for which at least one of the indexed attributes +is missing or has a value of `null`. For example, the following AQL +query cannot use a sparse index over the attribute `attr`: ```aql FOR doc In collection @@ -189,15 +189,25 @@ FOR doc In collection If the lookup value is non-constant, a sparse index may or may not be used, depending on the other types of conditions in the query. If the optimizer can safely determine that -the lookup value cannot be `null`, a sparse index may be used. When uncertain, the optimizer -does not make use of a sparse index in a query in order to produce correct results. +the lookup value cannot be `null`, a sparse index may be used. + +```aql +FOR doc In collection + LET random = RAND() * 5 + FILTER doc.attr < random // Includes numbers < random but also true, false, and null! + FILTER doc.attr != null // Explicitly exclude null to make a sparse index eligible + RETURN doc +``` + +When uncertain, the optimizer does not make use of a sparse index in a query in +order to produce correct results. For example, the following queries cannot use a sparse index on `attr` because the optimizer does not know beforehand whether the values which are compared to `doc.attr` include `null`: ```aql FOR doc In collection - FILTER doc.attr == SOME_FUNCTION(...) + FILTER doc.attr == SOME_FUNCTION(...) RETURN doc ``` diff --git a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md index a3e1fbf1bb..77fc3151ba 100644 --- a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md +++ b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md @@ -14,27 +14,24 @@ data numerically and can be generated with machine learning models. You can then quickly find a given number of semantically similar documents by searching for close neighbors in a high-dimensional vector space. -The vector index implementation uses the [Faiss library](https://github.com/facebookresearch/faiss/) -to support L2 and cosine metrics. The index used is IndexIVFFlat, the quantizer -for L2 is IndexFlatL2, and the cosine uses IndexFlatIP, where vectors are -normalized before insertion and search. +The vector index implementation uses the [Faiss library](https://github.com/facebookresearch/faiss/). ## How to use vector indexes {{< warning >}} -The vector index is an experimental feature that you need to enable for the -ArangoDB server with the `--experimental-vector-index` startup option. +You need to enable the vector index feature for the +ArangoDB server with the `--vector-index` startup option. Once enabled for a deployment, it cannot be disabled anymore because it permanently changes how the data is managed by the RocksDB storage engine (it adds an additional column family). -To restore a dump that contains vector indexes, the `--experimental-vector-index` +To restore a dump that contains vector indexes, the `--vector-index` startup option needs to be enabled on the deployment you want to restore to. {{< /warning >}} -1. Enable the experimental vector index feature. -2. Calculate vector embeddings using [ArangoDB's GraphML](../../../../../gen-ai/graphml/_index.md) - capabilities (available in ArangoGraph) or using external tools. +1. Enable the vector index feature. +2. Calculate vector embeddings using [Arango's GraphML](../../../../../gen-ai/graphml/_index.md) + capabilities (available in the AI Services Data Platform) or using external tools. Store each vector as an attribute in the respective document. 3. Create a vector index over this attribute. You need to choose which similarity metric you want to use later for querying. See @@ -65,17 +62,26 @@ centroids and the quality of vector search thus degrades. - **fields** (array of strings): A list with a single attribute path to specify where the vector embedding is stored in each document. The vector data needs to be populated before creating the index. - + If you want to index another vector embedding attribute, you need to create a separate vector index. +- **sparse** (boolean): Whether to create a sparse index that excludes documents + with the attribute for indexing missing or set to `null`. This attribute is + defined by `fields`. Default: `false`. - **parallelism** (number): - The number of threads to use for indexing. The default is `2`. + The number of threads to use for indexing. Default: `2`. - **inBackground** (boolean): Set this option to `true` to keep the collection/shards available for write operations by not using an exclusive write lock for the duration - of the index creation. The default is `false`. + of the index creation. Default: `false`. - **params**: The parameters as used by the Faiss library. - - **metric** (string): Whether to use `cosine` or `l2` (Euclidean) distance calculation. + - **metric** (string): The measure for calculating the vector similarity: + - `"cosine"`: Angular similarity. Vectors are automatically + normalized before insertion and search. + - `"innerProduct"` (introduced in v3.12.6): + Similarity in terms of angle and magnitude. + Vectors are not normalized, making it faster than `cosine`. + - `"l2":` Euclidean distance. - **dimension** (number): The vector dimension. The attribute to index needs to have this many elements in the array that stores the vector embedding. - **nLists** (number): The number of Voronoi cells to partition the vector space @@ -89,11 +95,11 @@ centroids and the quality of vector search thus degrades. number of documents. - **defaultNProbe** (number, _optional_): How many neighboring centroids to consider for the search results by default. The larger the number, the slower - the search but the better the search results. The default is `1`. You should + the search but the better the search results. Default: `1`. You should generally use a higher value here or per query via the `nProbe` option of the vector similarity functions. - **trainingIterations** (number, _optional_): The number of iterations in the - training process. The default is `25`. Smaller values lead to a faster index + training process. Default: `25`. Smaller values lead to a faster index creation but may yield worse search results. - **factory** (string, _optional_): You can specify an index factory string that is forwarded to the underlying Faiss library, allowing you to combine different @@ -115,7 +121,6 @@ centroids and the quality of vector search thus degrades. {{< tabs "interfaces" >}} {{< tab "Web interface" >}} -{{< comment >}}TODO: Only in v3.12.6+ 1. In the **Collections** section, click the name or row of the desired collection. 2. Go to the **Indexes** tab. 3. Click **Add index**. @@ -125,8 +130,6 @@ centroids and the quality of vector search thus degrades. under `param`. 7. Optionally give the index a user-defined name. 8. Click **Create**. -{{< /comment >}} -The web interface does not support vector indexes yet. {{< /tab >}} {{< tab "arangosh" >}} diff --git a/site/content/arangodb/3.12/release-notes/version-3.12/api-changes-in-3-12.md b/site/content/arangodb/3.12/release-notes/version-3.12/api-changes-in-3-12.md index 67e72e191d..989fc09923 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.12/api-changes-in-3-12.md +++ b/site/content/arangodb/3.12/release-notes/version-3.12/api-changes-in-3-12.md @@ -309,6 +309,17 @@ is for debugging purposes. See [HTTP interface for server logs](../../develop/http-api/monitoring/logs.md#get-recent-api-calls) for details. +#### AQL query recording + +<small>Introduced in: v3.12.6</small> + +A new `/_admin/server/aql-queries` endpoint has been added to let you retrieve a +list of the most recent AQL queries with a timestamp and information about the +submitted queries. This feature is for debugging purposes. + +See [HTTP interface for server logs](../../develop/http-api/monitoring/logs.md#get-recent-aql-queries) +for details. + #### Access tokens <small>Introduced in: v3.12.5</small> @@ -452,11 +463,11 @@ add the `withHidden=true` query parameter to the call of the endpoint. curl "http://localhost:8529/_api/index?collection=myCollection&withHidden=true" ``` -#### Vector indexes (experimental) +#### Vector indexes <small>Introduced in: v3.12.4</small> -A new `vector` index type has been added as an experimental feature. +A new `vector` index type has been added. See [HTTP interface for vector indexes](../../develop/http-api/indexes/vector.md) for details. diff --git a/site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md b/site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md index 696a7d8fc2..c04a497483 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md +++ b/site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md @@ -320,6 +320,15 @@ per-query limit with the [`memoryLimit` query option](../../aql/how-to-invoke-aq or its default using the `--query.memory-limit` startup option. You can adjust the global limit with the `--query.global-memory-limit` startup option. +--- + +<small>Introduced in: v3.12.6</small> + +The memory accounting for AQL queries has been extended to track the memory usage +of the `MERGE()` function, `RETURN DISTINCT`, and certain uses of the `COLLECT` +operation. More queries compared to previous 3.12 versions may get killed due to +exceeding the memory limit as a result of the improved tracking. + ## Adjustable Stream Transaction size [Stream Transactions](../../develop/transactions/stream-transactions.md) may @@ -900,6 +909,76 @@ the following steps. 4. Restore the dump to the new deployment. You can directly move from any 3.11 or 3.12 version to 3.12.4 (or later) this way. +## RocksDB upgrade + +<small>Introduced in: v3.12.6</small> + +The RocksDB library has been upgraded from version 7.2.0 to 9.5.0. + +As part of this storage engine upgrade, the default values of the following +RocksDB-related startup options have been changed: + +- `--rocksdb.pending-compactions-slowdown-trigger` has been changed from 128 KiB to 1 GiB. +- `--rocksdb.pending-compactions-stop-trigger` has been changed from 16 GiB to 32 GiB. +- `--rocksdb.partition-files-for-documents` has been changed from false to true. +- `--rocksdb.throttle-slow-down-writes-trigger` has been obsoleted. + +## Optional elevation for GeoJSON Points + +<small>Introduced in: v3.11.14-2, v3.12.6</small> + +GeoJSON Point may now have three coordinates: `[longitude, latitude, elevation]`. +However, ArangoDB does not take any elevation into account in geo-spatial +calculations. + +Points with an elevation do no longer fail the validation in the `GEO_POLYGON()` +and `GEO_MULTIPOLYGON()` functions. Moreover, GeoJSON with three coordinates is +now indexed by geo indexes and thus also matched by geo-spatial queries, which +means you may find more results than before. + +Also see [Geo-spatial functions in AQL](../../aql/functions/geo.md). + +## Additional validation by AQL GeoJSON functions + +<small>Introduced in: v3.12.6</small> + +The following AQL functions to construct GeoJSON objects now validate that the +provided input uses either two or three coordinates for every point +(`[longitude, latitude]` or `[longitude, latitude, elevation]`): + +- `GEO_MULTIPOINT()` +- `GEO_LINESTRING()` +- `GEO_MULTILINESTRING()` + +For example, the following function calls now fail to validate and raise a +warning because of invalid points in the data: + +```aql +GEO_MULTIPOINT([[1], [2,3]]) +GEO_LINESTRING([[1,2], []]) +GEO_MULTILINESTRING([[[1,2,3,4],[5,6]],[[7,8],[9,0]]]) +``` + +## Cosine similarity fix for vector indexes + +<small>Introduced in: v3.12.6</small> + +A normalization issue has been addressed for the experimental vector index type. +It was possible for the cosine similarity value returned by `APPROX_NEAR_COSINE()` +to be outside the expected range of `[-1, 1]`. + +It is recommended to recreate all vector indexes that use the `cosine` metric +after upgrading to v3.12.6 or later. + +## Added error reporting for invalid requests + +<small>Introduced in: v3.12.6</small> + +When _arangod_ parses HTTP requests and encounters an unexpected `Content-Length` +header or an invalid URL, it now sends a response with an error object instead +of closing the connection, e.g. that the URL is corrupt with an HTTP status code +of 400. + ## HTTP RESTful API ### JavaScript-based traversal using `/_api/traversal` removed @@ -1075,6 +1154,16 @@ background compactions. The changed default ensures this cleanup to happen more frequently. Compactions can potentially lead to spikes in CPU, memory, and I/O usage. You may now observe this daily instead of monthly. +### RocksDB transaction lock timeout controlled internally + +<small>Deprecated in: v3.12.6</small> + +The `--rocksdb.transaction-lock-timeout` startup option has been deprecated. +It was supposed to let you configure the wait timeout in milliseconds for +locking a document in a transaction. However, the lock timeout is actually set +to differnet values internally, depending on what is a meaningful timeout for +a given case. + ## Client tools ### arangodump diff --git a/site/content/arangodb/3.12/release-notes/version-3.12/whats-new-in-3-12.md b/site/content/arangodb/3.12/release-notes/version-3.12/whats-new-in-3-12.md index 9dc4aee978..b5fdc5616f 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.12/whats-new-in-3-12.md +++ b/site/content/arangodb/3.12/release-notes/version-3.12/whats-new-in-3-12.md @@ -180,6 +180,24 @@ The following new metrics have been added for memory observability: | `arangodb_transactions_internal_memory_usage` | Total memory usage of internal transactions. | | `arangodb_transactions_rest_memory_usage` | Total memory usage of user transactions (excluding top-level AQL queries). | +--- + +<small>Introduced in: v3.12.6</small> + +The memory accounting for AQL queries has been extended to track the memory usage +of the following: + +- Grouping with the `COLLECT` operation if the `sorted` method is used. +- Aggregating with `COLLECT ... AGGREGATE`. +- Deduplicating results with `RETURN DISTINCT`. +- Using the `MERGE()` function to combine objects. +- Internal buffers for execution blocks, late materialization, building results, + and distributing AQL queries in cluster deployments. +- Internal buffers for decay, distance, and replace functions. +- Internal buffers used by the query parser and optimizer. + +It is expected that the reported memory consumption is now higher. + ## Web interface ### Shard rebalancing @@ -1293,6 +1311,68 @@ Indexes used: 10 idx_1836452431376941056 persistent coll ``` +### Deduction of node collection for graph queries + +<small>Introduced in: v3.12.6</small> + +AQL graph traversals and path searches using anonymous graphs / collection sets +require that you declare all involved node collections upfront for cluster +deployments. That is, you need to use the `WITH` operation to list the collections +edges may point to, as well as the collection of the start node if not declared +otherwise. This also applies to single servers if the `--query.require-with` +startup option is enabled for parity between both deployment modes. + +For example, assume you have two node collections, `person` and `movie`, and +edges pointing from one to the other stored in an `acts_in` edge collection. +If you want to run a traversal query starting from a person that you specify +with its document ID, you need to declare both node collections at the +beginning of the query: + +```aql +WITH person, movie +FOR v IN 0..1 OUTBOUND "person/1544" acts_in + LIMIT 4 + RETURN v.label +``` + +From v3.12.6 onward, the node collections can be automatically inferred if there +is a named graph using the same edge collection(s). + +For example, assume there is a named graph that includes an edge definition for +the `acts_in` edge collection, with `person` as the _from_ collection and `movie` +as the _to_ collection. If you now specify `acts_in` as an edge collection in +an anonymous graph query, all named graphs are checked for this edge collection, +and if there is a matching edge definition, its node collections are automatically +added as data sources to the query. You no longer have to manually declare the +`person` and `movie` collections: + +```aql +FOR v IN 0..1 OUTBOUND "person/1544" acts_in + LIMIT 4 + RETURN v.label +``` + +You can still declare collections manually, in which case they are added as +data sources in addition to automatically deduced collections. + +### Optional elevation for GeoJSON Points + +<small>Introduced in: v3.11.14-2, v3.12.6</small> + +The `GEO_POINT()` function now accepts an optional third argument to create a +GeoJSON Point with three coordinates: `[longitude, latitude, elevation]`. + +GeoJSON Points may now have three coordinates in general. +However, ArangoDB does not take any elevation into account in geo-spatial +calculations. + +Points with an elevation do no longer fail the validation in the `GEO_POLYGON()` +and `GEO_MULTIPOLYGON()` functions. Moreover, GeoJSON with three coordinates is +now indexed by geo indexes and thus also matched by geo-spatial queries, which +means you may find more results than before. + +Also see [Geo-spatial functions in AQL](../../aql/functions/geo.md). + ## Indexing ### Multi-dimensional indexes @@ -1405,18 +1485,18 @@ Note that it is still forbidden to use `_id` as a top-level attribute or sub-attribute in `fields` of persistent indexes. On the other hand, inverted indexes have been allowing to index and store the `_id` system attribute. -### Vector indexes (experimental) +### Vector indexes <small>Introduced in: v3.12.4</small> -A new `vector` index type has been added as an experimental feature that enables +A new `vector` index type has been added that enables you to find items with similar properties by comparing vector embeddings, which are numerical representations generated by machine learning models. -To try out this feature, start an ArangoDB server (`arangod`) with the -`--experimental-vector-index` startup option. You need to generate -vector embeddings before creating a vector index. For more information about -the vector index type including the available settings, see the +To use this feature, start an ArangoDB server (`arangod`) with the `--vector-index` +startup option (or `--experimental-vector-index` in v3.12.4 and v3.12.5). +You need to generate vector embeddings before creating a vector index. For more +information about the vector index type including the available settings, see the [Vector indexes](../../index-and-search/indexing/working-with-indexes/vector-indexes.md) documentation. @@ -1443,6 +1523,34 @@ utilizing vector indexes in queries. Furthermore, a new error code `ERROR_QUERY_VECTOR_SEARCH_NOT_APPLIED` (1554) has been added. +--- + +<small>Introduced in: v3.12.6</small> + +Vector indexes now support filtering. You can add `FILTER` operations between +`FOR` and `SORT` that are then applied during the lookup in the vector index. +Note that e.g. `LIMIT 5` does not ensure that you get 5 results by searching +as many neighboring Voronoi cells as necessary, but it rather considers only as +many as configured via the `nProbes` parameter. Example: + +```aql +FOR doc IN coll + FILTER doc.val > 3 + SORT APPROX_NEAR_COSINE(doc.vector, @q) DESC + LIMIT 5 + RETURN doc +``` + +Vector indexes can now be sparse to exclude documents with the embedding attribute +for indexing missing or set to `null`. + +Another metric has been added. The `innerProduct` is a vector similarity measure +calculated using the dot product of two vectors without normalizing them. +Therefore, it compares not only the angle but also the magnitudes. +The accompanying AQL function is the following: + +- `APPROX_NEAR_INNER_PRODUCT()` + ## Server options ### Effective and available startup options @@ -2211,6 +2319,40 @@ DB-Servers in a cluster has been added: |:------|:------------| | `arangodb_vocbase_transactions_lost_subordinates_total` | Counts the number of lost subordinate transactions on database servers. | +### RocksDB upgrade + +<small>Introduced in: v3.12.6</small> + +The RocksDB library has been upgraded from version 7.2.0 to 9.5.0. + +As a result, you may see performance improvements while using slightly less +resources especially for mixed workloads. + +The following new RocksDB functionality is exposed in ArangoDB: + +- Different types of block caches, LRU and HyperClockCache (HCC), selectable via + the new `--rocksdb.block-cache-type` startup option +- A `--rocksdb.block-cache-estimated-entry-charge` startup option to configure the HCC. +- RocksDB table format version 6 (not downwards-compatible to older versions of RocksDB). +- RocksDB blob caching (if blobs are enabled for the documents column family), + which you can enable via `--rocksdb.enable-blob-cache`. +- Using blob files only from a certain level onwards (if blobs are enabled for + the documents column family), which you can enable via + `--rocksdb.blob-file-starting-level`. +- Blob cache prepopulation, which you can enable via `--rocksdb.prepopulate-blob-cache`. +- An option to generate Bloom/Ribbon filters that minimize memory internal + fragmentation, which you can enable with `--rocksdb.optimize-filters-for-memory`. + +The following RocksDB metrics have been added: + +| Label | Description | +|:------|:------------| +| `rocksdb_block_cache_charge_per_entry` | Average size of entries in RocksDB block cache. +| `rocksdb_block_cache_entries` | Number of entries in the RocksDB block cache. +| `rocksdb_live_blob_file_garbage_size` | Size of garbage in live RocksDB .blob files. +| `rocksdb_live_blob_file_size` | Size of live RocksDB .blob files. +| `rocksdb_num_blob_files` | Number of live RocksDB .blob files. + ### API call recording <small>Introduced in: v3.12.5</small> @@ -2222,9 +2364,9 @@ is for debugging purposes. You can configure the memory limit for this feature with the following startup option: - `--server.api-recording-memory-limit`: - Size limit for the list of API call records (default: `25600000`). + Size limit for the list of API call records (default: `26214400`). -This means that 25 MB of memory is reserved by default. +This means that 25 MiB of memory is reserved by default. API call recording is enabled by default but you can disable it via the new `--server.api-call-recording` startup option. @@ -2243,6 +2385,41 @@ impact of this feature: See [HTTP interface for server logs](../../develop/http-api/monitoring/logs.md#get-recent-api-calls) for details. +### AQL query recording + +<small>Introduced in: v3.12.6</small> + +A new `/_admin/server/aql-queries` endpoint has been added to let you retrieve a +list of the most recent AQL queries with a timestamp and information about the +submitted query. This feature is for debugging purposes. + +You can configure the memory limit for this feature with the following startup option: + +- `--server.aql-recording-memory-limit`: + Size limit for the list of AQL query records (default: `26214400` bytes) + +This means that 25 MiB of memory is reserved by default. + +AQL query recording is enabled by default but you can disable it via the new +`--server.aql-query-recording` startup option. + +This and the `/_admin/server/api-calls` endpoint are referred to as the +recording API, which exposes the recorded API calls and AQL queries. It is +enabled by default. Users with administrative access to the `_system` database +can call the endpoints. You can further restrict the access to only the +superuser by setting `--log.recording-api-enabled` to `jwt`, or disable the +endpoints altogether by setting the option to `false`. + +A metric has been added for the time spent on AQL query recording to track the +impact of this feature: + +| Label | Description | +|:------|:------------| +| `arangodb_aql_recording_call_time` | Execution time histogram for AQL recording calls in nanoseconds. | + +See [HTTP interface for server logs](../../develop/http-api/monitoring/logs.md#get-recent-aql-queries) +for details. + ### Access tokens <small>Introduced in: v3.12.5</small> @@ -2257,6 +2434,24 @@ dates, and individually revoke tokens. See the [HTTP API](../../develop/http-api/authentication.md#access-tokens) documentation. +### `@PID@` and `@TEMP_BASE_DIR@` placeholders for startup options + +<small>Introduced in: v3.12.6</small> + +You can use special placeholders in startup options like `--log.output` that get +substituted as follows: + +- `@PID@`: Replaced at runtime with the actual process ID. This has already + been supported using a literal occurrence of `$PID`. +- `@TEMP_BASE_DIR@`: Replaced at runtime with the current temporary directory, + e.g. `/tmp/arangodb_i37Xxh` (automatically created on startup with a randomly + generated suffix). + +Keep in mind that `@NAME@` is also the syntax for using the value of an +environment variable `NAME`. If there is an environment variable called `PID` or +`TEMP_BASE_DIR`, then `@PID@` or `@TEMP_BASE_DIR@` is substituted with the +value of the respective environment variable. + ## Client tools ### Protocol aliases for endpoints diff --git a/site/content/arangodb/3.13/aql/functions/geo.md b/site/content/arangodb/3.13/aql/functions/geo.md index cf5b3f8a2d..71820df92a 100644 --- a/site/content/arangodb/3.13/aql/functions/geo.md +++ b/site/content/arangodb/3.13/aql/functions/geo.md @@ -71,9 +71,9 @@ called `location` (with coordinates in `[longitude, latitude]` order): GeoJSON uses a geographic coordinate reference system, World Geodetic System 1984 (WGS 84), and units of decimal degrees. -Internally ArangoDB maps all coordinate pairs onto a unit sphere. Distances are -projected onto a sphere with the Earth's *Volumetric mean radius* of *6371 -km*. ArangoDB implements a useful subset of the GeoJSON format +Internally, ArangoDB maps all coordinate pairs onto a unit sphere. Distances are +projected onto a sphere with the Earth's *Volumetric mean radius* of +*6371 km*. ArangoDB implements a useful subset of the GeoJSON format [(RFC 7946)](https://tools.ietf.org/html/rfc7946). Feature Objects and the GeometryCollection type are not supported. Supported geometry object types are: @@ -98,6 +98,18 @@ a longitude and a latitude: } ``` +GeoJSON Points can optionally have a third coordinate for the elevation, but +ArangoDB doesn't use it in calculations: + +```json +{ + "location": { + "type": "Point", + "coordinates": [ 100.0, 0.0, 43.0 ] + } +} +``` + #### MultiPoint A [GeoJSON MultiPoint](https://tools.ietf.org/html/rfc7946#section-3.1.7) is @@ -425,11 +437,11 @@ fully contains `geoJsonB` (every point in B is also in A). The object `geoJsonA` has to be of type _Polygon_ or _MultiPolygon_. For other types containment is not well-defined because of numerical stability problems. -- **geoJsonA** (object): first GeoJSON object -- **geoJsonB** (object): second GeoJSON object, or a coordinate array in - `[longitude, latitude]` order +- **geoJsonA** (object): First GeoJSON object. +- **geoJsonB** (object): Second GeoJSON object, or a coordinate array in + `[longitude, latitude]` order. - returns **bool** (bool): `true` if every point in B is also contained in A, - otherwise `false` + otherwise `false`. {{< info >}} ArangoDB follows and exposes the same behavior as the underlying @@ -468,14 +480,14 @@ Return the distance between two GeoJSON objects in meters, measured from the **centroid** of each shape. For a list of supported types see the [geo index page](#geojson). -- **geoJsonA** (object): first GeoJSON object, or a coordinate array in - `[longitude, latitude]` order -- **geoJsonB** (object): second GeoJSON object, or a coordinate array in - `[longitude, latitude]` order -- **ellipsoid** (string, *optional*): reference ellipsoid to use. +- **geoJsonA** (object): First GeoJSON object, or a coordinate array in + `[longitude, latitude]` order. +- **geoJsonB** (object): Second GeoJSON object, or a coordinate array in + `[longitude, latitude]` order. +- **ellipsoid** (string, *optional*): Reference ellipsoid to use. Supported are `"sphere"` (default) and `"wgs84"`. -- returns **distance** (number): the distance between the centroid points of - the two objects on the reference ellipsoid in **meters** +- returns **distance** (number): The distance between the centroid points of + the two objects on the reference ellipsoid in **meters**. ```aql LET polygon = { @@ -522,10 +534,10 @@ functions. Return the area for a [Polygon](#polygon) or [MultiPolygon](#multipolygon) on a sphere with the average Earth radius, or an ellipsoid. -- **geoJson** (object): a GeoJSON object -- **ellipsoid** (string, *optional*): reference ellipsoid to use. +- **geoJson** (object): A GeoJSON object. +- **ellipsoid** (string, *optional*): Reference ellipsoid to use. Supported are `"sphere"` (default) and `"wgs84"`. -- returns **area** (number): the area of the polygon in **square meters** +- returns **area** (number): The area of the polygon in **square meters**. ```aql LET polygon = { @@ -541,8 +553,8 @@ RETURN GEO_AREA(polygon, "wgs84") Checks whether two [GeoJSON objects](#geojson) are equal or not. -- **geoJsonA** (object): first GeoJSON object. -- **geoJsonB** (object): second GeoJSON object. +- **geoJsonA** (object): First GeoJSON object. +- **geoJsonB** (object): Second GeoJSON object. - returns **bool** (bool): `true` if they are equal, otherwise `false`. ```aql @@ -572,10 +584,10 @@ RETURN GEO_EQUALS(polygonA, polygonB) // false Checks whether the [GeoJSON object](#geojson) `geoJsonA` intersects with `geoJsonB` (i.e. at least one point in B is also in A or vice-versa). -- **geoJsonA** (object): first GeoJSON object -- **geoJsonB** (object): second GeoJSON object, or a coordinate array in - `[longitude, latitude]` order -- returns **bool** (bool): true if B intersects A, false otherwise +- **geoJsonA** (object): First GeoJSON object. +- **geoJsonB** (object): Second GeoJSON object, or a coordinate array in + `[longitude, latitude]` order. +- returns **bool** (bool): `true` if B intersects A, `false` otherwise. You can optimize queries that contain a `FILTER` expression of the following form with an S2-based [geospatial index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): @@ -604,19 +616,19 @@ Checks whether the distance between two [GeoJSON objects](#geojson) lies within a given interval. The distance is measured from the **centroid** of each shape. -- **geoJsonA** (object\|array): first GeoJSON object, or a coordinate array - in `[longitude, latitude]` order -- **geoJsonB** (object\|array): second GeoJSON object, or a coordinate array - in `[longitude, latitude]` order -- **low** (number): minimum value of the desired range -- **high** (number): maximum value of the desired range -- **includeLow** (bool, optional): whether the minimum value shall be included +- **geoJsonA** (object\|array): First GeoJSON object, or a coordinate array + in `[longitude, latitude]` order. +- **geoJsonB** (object\|array): Second GeoJSON object, or a coordinate array + in `[longitude, latitude]` order. +- **low** (number): Minimum value of the desired range. +- **high** (number): Maximum value of the desired range. +- **includeLow** (bool, optional): Whether the minimum value shall be included in the range (left-closed interval) or not (left-open interval). The default - value is `true` -- **includeHigh** (bool): whether the maximum value shall be included in the + value is `true`. +- **includeHigh** (bool): Whether the maximum value shall be included in the range (right-closed interval) or not (right-open interval). The default value - is `true` -- returns **bool** (bool): whether the evaluated distance lies within the range + is `true`. +- returns **bool** (bool): Whether the evaluated distance lies within the range. ### IS_IN_POLYGON() @@ -630,10 +642,10 @@ favor of the new [`GEO_CONTAINS()` AQL function](#geo_contains), which works wit `IS_IN_POLYGON(polygon, latitude, longitude) → bool` -- **polygon** (array): an array of arrays with 2 elements each, representing the - points of the polygon in the format `[latitude, longitude]` -- **latitude** (number): the latitude of the point to search -- **longitude** (number): the longitude of the point to search +- **polygon** (array): An array of arrays with two elements each, representing the + points of the polygon in the format `[latitude, longitude]`. +- **latitude** (number): The latitude of the point to search for. +- **longitude** (number): The longitude of the point to search for. - returns **bool** (bool): `true` if the point (`[latitude, longitude]`) is inside the `polygon` or `false` if it's not. The result is undefined (can be `true` or `false`) if the specified point is exactly on a boundary of the @@ -648,17 +660,17 @@ IS_IN_POLYGON( [ [ 0, 0 ], [ 0, 10 ], [ 10, 10 ], [ 10, 0 ] ], 4, 7 ) `IS_IN_POLYGON(polygon, coord, useLonLat) → bool` -The 2nd parameter can alternatively be specified as an array with two values. +The second parameter can alternatively be specified as an array with two values. By default, each array element in `polygon` is expected to be in the format -`[latitude, longitude]`. This can be changed by setting the 3rd parameter to `true` to +`[latitude, longitude]`. This can be changed by setting the third parameter to `true` to interpret the points as `[longitude, latitude]`. `coord` is then also interpreted in the same way. -- **polygon** (array): an array of arrays with 2 elements each, representing the - points of the polygon -- **coord** (array): the point to search as a numeric array with two elements -- **useLonLat** (bool, *optional*): if set to `true`, the coordinates in +- **polygon** (array): An array of arrays with 2 elements each, representing the + points of the polygon. +- **coord** (array): The point to search as a numeric array with two elements. +- **useLonLat** (bool, *optional*): If set to `true`, the coordinates in `polygon` and the coordinate pair `coord` are interpreted as `[longitude, latitude]` (like in GeoJSON). The default is `false` and the format `[latitude, longitude]` is expected. @@ -687,8 +699,9 @@ will help you to make all your AQL queries shorter and easier to read. Construct a GeoJSON LineString. Needs at least two longitude/latitude pairs. -- **points** (array): an array of `[longitude, latitude]` pairs -- returns **geoJson** (object): a valid GeoJSON LineString +- **points** (array): An array of `[longitude, latitude]` pairs, or optionally + `[longitude, latitude, elevation]`. +- returns **geoJson** (object): A valid GeoJSON LineString. ```aql --- @@ -707,8 +720,9 @@ RETURN GEO_LINESTRING([ Construct a GeoJSON MultiLineString. Needs at least two elements consisting valid LineStrings coordinate arrays. -- **points** (array): array of LineStrings -- returns **geoJson** (object): a valid GeoJSON MultiLineString +- **points** (array): An array of arrays of `[longitude, latitude]` pairs, + or optionally `[longitude, latitude, elevation]`. +- returns **geoJson** (object): A valid GeoJSON MultiLineString. ```aql --- @@ -727,8 +741,9 @@ RETURN GEO_MULTILINESTRING([ Construct a GeoJSON LineString. Needs at least two longitude/latitude pairs. -- **points** (array): an array of `[longitude, latitude]` pairs -- returns **geoJson** (object): a valid GeoJSON Point +- **points** (array): An array of `[longitude, latitude]` pairs, or optionally + `[longitude, latitude, elevation]`. +- returns **geoJson** (object): A valid GeoJSON Point. ```aql --- @@ -742,13 +757,15 @@ RETURN GEO_MULTIPOINT([ ### GEO_POINT() -`GEO_POINT(longitude, latitude) → geoJson` +`GEO_POINT(longitude, latitude, elevation) → geoJson` Construct a valid GeoJSON Point. -- **longitude** (number): the longitude portion of the point -- **latitude** (number): the latitude portion of the point -- returns **geoJson** (object): a GeoJSON Point +- **longitude** (number): The longitude portion of the point. +- **latitude** (number): The latitude portion of the point. +- **elevation** (number, *optional*): The elevation portion of the point + (introduced in v3.11.14-2 and v3.12.6). +- returns **geoJson** (object): A valid GeoJSON Point. ```aql --- @@ -769,8 +786,9 @@ any subsequent linear ring will be interpreted as holes. For details about the rules, see [GeoJSON polygons](#polygon). -- **points** (array): an array of (arrays of) `[longitude, latitude]` pairs -- returns **geoJson** (object\|null): a valid GeoJSON Polygon +- **points** (array): An array of (arrays of) `[longitude, latitude]` pairs, + or optionally `[longitude, latitude, elevation]`. +- returns **geoJson** (object\|null): A valid GeoJSON Polygon. A validation step is performed using the S2 geometry library. If the validation is not successful, an AQL warning is issued and `null` is @@ -809,8 +827,9 @@ Construct a GeoJSON MultiPolygon. Needs at least two Polygons inside. See [`GEO_POLYGON()`](#geo_polygon) and [GeoJSON MultiPolygon](#multipolygon) for the rules of Polygon and MultiPolygon construction. -- **polygons** (array): an array of arrays of arrays of `[longitude, latitude]` pairs -- returns **geoJson** (object\|null): a valid GeoJSON MultiPolygon +- **polygons** (array): An array of arrays of arrays of `[longitude, latitude]` + pairs, or optionally `[longitude, latitude, elevation]`. +- returns **geoJson** (object\|null): A valid GeoJSON MultiPolygon. A validation step is performed using the S2 geometry library, if the validation is not successful, an AQL warning is issued and `null` is @@ -860,31 +879,31 @@ FOR doc IN coll RETURN doc ``` Assuming there exists a geo-type index on `latitude` and `longitude`, the -optimizer will recognize it and accelerate the query. +optimizer recognizes it and accelerates the query. {{< /warning >}} `NEAR(coll, latitude, longitude, limit, distanceName) → docArray` -Return at most *limit* documents from collection *coll* that are near -*latitude* and *longitude*. The result contains at most *limit* documents, +Return at most `limit` documents from collection `coll` that are near +`latitude` and `longitude`. The result contains at most `limit` documents, returned sorted by distance, with closest distances being returned first. Optionally, the distances in meters between the specified coordinate pair -(*latitude* and *longitude*) and the stored coordinate pairs can be returned as +(`latitude` and `longitude`) and the stored coordinate pairs can be returned as well. To make use of that, the desired attribute name for the distance result -has to be specified in the *distanceName* argument. The result documents will -contain the distance value in an attribute of that name. - -- **coll** (collection): a collection -- **latitude** (number): the latitude of the point to search -- **longitude** (number): the longitude of the point to search -- **limit** (number, *optional*): cap the result to at most this number of - documents. The default is 100. If more documents than *limit* are found, - it is undefined which ones will be returned. -- **distanceName** (string, *optional*): include the distance (in meters) +has to be specified in the `distanceName` argument. The result documents +contains the distance value in an attribute of that name. + +- **coll** (collection): A collection. +- **latitude** (number): The latitude of the point to search for. +- **longitude** (number): The longitude of the point to search for. +- **limit** (number, *optional*): Cap the result to at most this number of + documents. The default is `100`. If more documents than `limit` are found, + it is undefined which ones are returned. +- **distanceName** (string, *optional*): Include the distance (in meters) between the reference point and the stored point in the result, using the - attribute name *distanceName* -- returns **docArray** (array): an array of documents, sorted by distance - (shortest distance first) + attribute name `distanceName`. +- returns **docArray** (array): An array of documents, sorted by distance + (shortest distance first). ### WITHIN() @@ -901,29 +920,29 @@ FOR doc IN coll ``` Assuming there exists a geo-type index on `latitude` and `longitude`, the -optimizer will recognize it and accelerate the query. +optimizer recognizes it and accelerates the query. {{< /warning >}} `WITHIN(coll, latitude, longitude, radius, distanceName) → docArray` -Return all documents from collection *coll* that are within a radius of *radius* -around the specified coordinate pair (*latitude* and *longitude*). The documents +Return all documents from collection `coll` that are within a radius of `radius` +around the specified coordinate pair (`latitude` and `longitude`). The documents returned are sorted by distance to the reference point, with the closest distances being returned first. Optionally, the distance (in meters) between the reference point and the stored point can be returned as well. To make use of that, an attribute name for the distance result has to be specified in -the *distanceName* argument. The result documents will contain the distance +the `distanceName` argument. The result documents contains the distance value in an attribute of that name. -- **coll** (collection): a collection -- **latitude** (number): the latitude of the point to search -- **longitude** (number): the longitude of the point to search -- **radius** (number): radius in meters -- **distanceName** (string, *optional*): include the distance (in meters) +- **coll** (collection): A collection. +- **latitude** (number): The latitude of the point to search for. +- **longitude** (number): The longitude of the point to search for. +- **radius** (number): Radius in meters. +- **distanceName** (string, *optional*): Include the distance (in meters) between the reference point and stored point in the result, using the - attribute name *distanceName* -- returns **docArray** (array): an array of documents, sorted by distance - (shortest distance first) + attribute name `distanceName`. +- returns **docArray** (array): An array of documents, sorted by distance + (shortest distance first). ### WITHIN_RECTANGLE() @@ -947,18 +966,18 @@ FOR doc IN coll ``` Assuming there exists a geo-type index on `latitude` and `longitude`, the -optimizer will recognize it and accelerate the query. +optimizer recognizes it and accelerates the query. {{< /warning >}} `WITHIN_RECTANGLE(coll, latitude1, longitude1, latitude2, longitude2) → docArray` -Return all documents from collection *coll* that are positioned inside the -bounding rectangle with the points (*latitude1*, *longitude1*) and (*latitude2*, -*longitude2*). There is no guaranteed order in which the documents are returned. +Return all documents from collection `coll` that are positioned inside the +bounding rectangle with the points (`latitude1`, `longitude1`) and (`latitude2`, +`longitude2`). There is no guaranteed order in which the documents are returned. -- **coll** (collection): a collection -- **latitude1** (number): the latitude of the bottom-left point to search -- **longitude1** (number): the longitude of the bottom-left point to search -- **latitude2** (number): the latitude of the top-right point to search -- **longitude2** (number): the longitude of the top-right point to search -- returns **docArray** (array): an array of documents, in random order +- **coll** (collection): A collection. +- **latitude1** (number): The latitude of the bottom-left point to search for. +- **longitude1** (number): The longitude of the bottom-left point to search for. +- **latitude2** (number): The latitude of the top-right point to search for. +- **longitude2** (number): The longitude of the top-right point to search for. +- returns **docArray** (array): An array of documents, in random order. diff --git a/site/content/arangodb/3.13/aql/functions/vector.md b/site/content/arangodb/3.13/aql/functions/vector.md index a20c562137..8b6bcb377d 100644 --- a/site/content/arangodb/3.13/aql/functions/vector.md +++ b/site/content/arangodb/3.13/aql/functions/vector.md @@ -16,13 +16,13 @@ You can calculate vector embeddings using [ArangoDB's GraphML](../../../../gen-a capabilities (available in ArangoGraph) or using external tools. {{< warning >}} -The vector index is an experimental feature that you need to enable for the -ArangoDB server with the `--experimental-vector-index` startup option. +You need to enable the vector index feature for the +ArangoDB server with the `--vector-index` startup option. Once enabled for a deployment, it cannot be disabled anymore because it permanently changes how the data is managed by the RocksDB storage engine (it adds an additional column family). -To restore a dump that contains vector indexes, the `--experimental-vector-index` +To restore a dump that contains vector indexes, the `--vector-index` startup option needs to be enabled on the deployment you want to restore to. {{< /warning >}} @@ -56,21 +56,37 @@ be found depends on the data as well as the search effort (see the `nProbe` opti {{< info >}} - If there is more than one suitable vector index over the same attribute, it is undefined which one is selected. -- You cannot have any `FILTER` operation between `FOR` and `LIMIT` for - pre-filtering. + +- In v3.12.4 and v3.12.5, you cannot have any `FILTER` operation between `FOR` + and `LIMIT` for pre-filtering. From v3.12.6 onward, you can add `FILTER` + operations between `FOR` and `SORT` that are then applied during the lookup in + the vector index. Example: + + ```aql + FOR doc IN coll + FILTER doc.val > 3 + SORT APPROX_NEAR_COSINE(doc.vector, @q) DESC + LIMIT 5 + RETURN doc + ``` + + Note that e.g. `LIMIT 5` does not ensure that you get 5 results by searching + as many neighboring Voronoi cells as necessary, but it rather considers only as + many as configured via the `nProbes` parameter. {{< /info >}} ### APPROX_NEAR_COSINE() `APPROX_NEAR_COSINE(vector1, vector2, options) → similarity` -Retrieve the approximate angular similarity using the cosine metric, accelerated -by a matching vector index. -The higher the cosine similarity value is, the more similar the two vectors -are. The closer it is to 0, the more different they are. The value can also -be negative, indicating that the vectors are not similar and point in opposite -directions. You need to sort in descending order so that the most similar +Retrieve the approximate cosine of the angle between two vectors, accelerated +by a matching vector index with the `cosine` metric. + +The closer the similarity value is to 1, the more similar the two vectors +are. The closer it is to 0, the more different they are. The value can also be +negative up to -1, indicating that the vectors are not similar and point in opposite +directions. You need to **sort in descending order** so that the most similar documents come first, which is what a vector index using the `cosine` metric can provide. @@ -83,8 +99,8 @@ can provide. closest Voronoi cells to consider for the search results. The larger the number, the slower the search but the better the search results. If not specified, the `defaultNProbe` value of the vector index is used. -- returns **similarity** (number): The approximate angular similarity between - both vectors. +- returns **similarity** (number): The approximate cosine similarity of + both normalized vectors. The value range is `[-1, 1]`. **Examples** @@ -126,15 +142,83 @@ FOR docOuter IN coll RETURN { key: docOuter._key, neighbors } ``` +### APPROX_NEAR_INNER_PRODUCT() + +<small>Introduced in: v3.12.6</small> + +`APPROX_NEAR_INNER_PRODUCT(vector1, vector2, options) → similarity` + +Retrieve the approximate dot product of two vectors, accelerated by a matching +vector index with the `innerProduct` metric. + +The higher the similarity value is, the more similar the two vectors +are. The closer it is to 0, the more different they are. The value can also +be negative, indicating that the vectors are not similar and point in opposite +directions. You need to **sort in descending order** so that the most similar +documents come first, which is what a vector index using the `innerProduct` +metric can provide. + +- **vector1** (array of numbers): The first vector. Either this parameter or + `vector2` needs to reference a stored attribute holding the vector embedding. +- **vector2** (array of numbers): The second vector. Either this parameter or + `vector1` needs to reference a stored attribute holding the vector embedding. +- **options** (object, _optional_): + - **nProbe** (number, _optional_): How many neighboring centroids respectively + closest Voronoi cells to consider for the search results. The larger the number, + the slower the search but the better the search results. If not specified, the + `defaultNProbe` value of the vector index is used. +- returns **similarity** (number): The approximate dot product + of both vectors without normalization. The value range is unbounded. + +**Examples** + +Return up to `10` similar documents based on their closeness to the vector +`@q` according to the inner product metric: + +```aql +FOR doc IN coll + SORT APPROX_NEAR_INNER_PRODUCT(doc.vector, @q) DESC + LIMIT 10 + RETURN doc +``` + +Return up to `5` similar documents as well as the similarity value, +considering `20` neighboring centroids respectively closest Voronoi cells: + +```aql +FOR doc IN coll + LET similarity = APPROX_NEAR_INNER_PRODUCT(doc.vector, @q, { nProbe: 20 }) + SORT similarity DESC + LIMIT 5 + RETURN MERGE( { similarity }, doc) +``` + +Return the similarity value and the document keys of up to `3` similar documents +for multiple input vectors using a subquery. In this example, the input vectors +are taken from ten random documents of the same collection: + +```aql +FOR docOuter IN coll + LIMIT 10 + LET neighbors = ( + FOR docInner IN coll + LET similarity = APPROX_NEAR_INNER_PRODUCT(docInner.vector, docOuter.vector) + SORT similarity DESC + LIMIT 3 + RETURN { key: docInner._key, similarity } + ) + RETURN { key: docOuter._key, neighbors } +``` + ### APPROX_NEAR_L2() -`APPROX_NEAR_L2(vector1, vector2, options) → similarity` +`APPROX_NEAR_L2(vector1, vector2, options) → distance` Retrieve the approximate distance using the L2 (Euclidean) metric, accelerated -by a matching vector index. +by a matching vector index with the `l2` metric. The closer the distance is to 0, the more similar the two vectors are. The higher -the value, the more different the they are. You need to sort in ascending order +the value, the more different the they are. You need to **sort in ascending order** so that the most similar documents come first, which is what a vector index using the `l2` metric can provide. @@ -147,7 +231,7 @@ the `l2` metric can provide. for the search results. The larger the number, the slower the search but the better the search results. If not specified, the `defaultNProbe` value of the vector index is used. -- returns **similarity** (number): The approximate L2 (Euclidean) distance between +- returns **distance** (number): The approximate L2 (Euclidean) distance between both vectors. **Examples** diff --git a/site/content/arangodb/3.13/aql/graphs/all-shortest-paths.md b/site/content/arangodb/3.13/aql/graphs/all-shortest-paths.md index bef591606d..7697a7950f 100644 --- a/site/content/arangodb/3.13/aql/graphs/all-shortest-paths.md +++ b/site/content/arangodb/3.13/aql/graphs/all-shortest-paths.md @@ -117,6 +117,58 @@ All collections in the list that do not specify their own direction use the direction defined after `IN` (here: `OUTBOUND`). This allows using a different direction for each collection in your path search. +### Graph path searches in a cluster + +Due to the nature of graphs, edges may reference nodes from arbitrary +collections. Following the paths can thus involve documents from various +collections and it is not possible to predict which are visited in a path +search - unless you use named graphs that define all node and edge collections +that belong to them and the graph data is consistent. + +If you use anonymous graphs / collection sets for graph queries, which node +collections need to be loaded by the graph engine can deduced automatically if +there is a named graph with a matching edge collection in its edge definitions +(introduced in v3.12.6). Edge collections are always declared explicitly in +queries, directly or via referencing a named graph. + +Without a named graph, the involved node collections can only be determined at +run time. Use the [`WITH` operation](../high-level-operations/with.md) to +declare the node collections upfront. This is required for path searches +using collection sets in cluster deployments (if there is no named graph to +deduce the node collections from). Declare the collection of the start node as +well if it's not declared already (like by a `FOR` loop). + +For example, suppose you have two node collections, `person` and `movie`, and +an `acts_in` edge collection that connects them. If you want to run a path search +query that starts (and ends) at a person that you specify with its document ID, +you need to declare both node collections at the beginning of the query: + +```aql +WITH person, movie +FOR p IN ANY ALL_SHORTEST_PATHS "person/1544" TO "person/52560" acts_in + RETURN p.vertices[*].label +``` + +However, if there is a named graph that includes an edge definition for the +`acts_in` edge collection, with `person` as the _from_ collection and `movie` +as the _to_ collection, you can omit `WITH person, movie`. That is, if you +specify `acts_in` as an edge collection in an anonymous graph query, all +named graphs are checked for this edge collection, and if there is a matching +edge definition, its node collections are automatically added as data sources to +the query. + +```aql +FOR p IN ANY ALL_SHORTEST_PATHS "person/1544" TO "person/52560" acts_in + RETURN p.vertices[*].label + +// Chris Rock --> Dogma <-- Ben Affleck --> Surviving Christmas <-- Jennifer Morrison +// Chris Rock --> The Longest Yard <-- Rob Schneider --> Big Stan <-- Jennifer Morrison +// Chris Rock --> Down to Earth <-- John Cho --> Star Trek <-- Jennifer Morrison +``` + +You can still declare collections manually, in which case they are added as +data sources in addition to automatically deduced collections. + ## Examples Load an example graph to get a named graph that reflects some possible diff --git a/site/content/arangodb/3.13/aql/graphs/k-paths.md b/site/content/arangodb/3.13/aql/graphs/k-paths.md index 0c490ce041..2ab9d95e92 100644 --- a/site/content/arangodb/3.13/aql/graphs/k-paths.md +++ b/site/content/arangodb/3.13/aql/graphs/k-paths.md @@ -188,6 +188,59 @@ All collections in the list that do not specify their own direction use the direction defined after `IN` (here: `OUTBOUND`). This allows to use a different direction for each collection in your path search. +### Graph path searches in a cluster + +Due to the nature of graphs, edges may reference nodes from arbitrary +collections. Following the paths can thus involve documents from various +collections and it is not possible to predict which are visited in a path +search - unless you use named graphs that define all node and edge collections +that belong to them and the graph data is consistent. + +If you use anonymous graphs / collection sets for graph queries, which node +collections need to be loaded by the graph engine can deduced automatically if +there is a named graph with a matching edge collection in its edge definitions +(introduced in v3.12.6). Edge collections are always declared explicitly in +queries, directly or via referencing a named graph. + +Without a named graph, the involved node collections can only be determined at +run time. Use the [`WITH` operation](../high-level-operations/with.md) to +declare the node collections upfront. This is required for path searches +using collection sets in cluster deployments (if there is no named graph to +deduce the node collections from). Declare the collection of the start node as +well if it's not declared already (like by a `FOR` loop). + +For example, suppose you have two node collections, `person` and `movie`, and +an `acts_in` edge collection that connects them. If you want to run a path search +query that starts (and ends) at a person that you specify with its document ID, +you need to declare both node collections at the beginning of the query: + +```aql +WITH person, movie +FOR p IN 4 ANY K_PATHS "person/1544" TO "person/52560" acts_in + LIMIT 2 + RETURN p.vertices[*].label +``` + +However, if there is a named graph that includes an edge definition for the +`acts_in` edge collection, with `person` as the _from_ collection and `movie` +as the _to_ collection, you can omit `WITH person, movie`. That is, if you +specify `acts_in` as an edge collection in an anonymous graph query, all +named graphs are checked for this edge collection, and if there is a matching +edge definition, its node collections are automatically added as data sources to +the query. + +```aql +FOR p IN 4 ANY K_PATHS "person/1544" TO "person/52560" acts_in + LIMIT 2 + RETURN p.vertices[*].label + +// Chris Rock --> Dogma <-- Ben Affleck --> Surviving Christmas <-- Jennifer Morrison +// Chris Rock --> The Longest Yard <-- Rob Schneider --> Big Stan <-- Jennifer Morrison +``` + +You can still declare collections manually, in which case they are added as +data sources in addition to automatically deduced collections. + ## Examples You can load the `kShortestPathsGraph` example graph to get a named graph that diff --git a/site/content/arangodb/3.13/aql/graphs/k-shortest-paths.md b/site/content/arangodb/3.13/aql/graphs/k-shortest-paths.md index 9c638740d7..0603d9582d 100644 --- a/site/content/arangodb/3.13/aql/graphs/k-shortest-paths.md +++ b/site/content/arangodb/3.13/aql/graphs/k-shortest-paths.md @@ -186,6 +186,59 @@ All collections in the list that do not specify their own direction use the direction defined after `IN` (here: `OUTBOUND`). This allows to use a different direction for each collection in your path search. +### Graph path searches in a cluster + +Due to the nature of graphs, edges may reference nodes from arbitrary +collections. Following the paths can thus involve documents from various +collections and it is not possible to predict which are visited in a path +search - unless you use named graphs that define all node and edge collections +that belong to them and the graph data is consistent. + +If you use anonymous graphs / collection sets for graph queries, which node +collections need to be loaded by the graph engine can deduced automatically if +there is a named graph with a matching edge collection in its edge definitions +(introduced in v3.12.6). Edge collections are always declared explicitly in +queries, directly or via referencing a named graph. + +Without a named graph, the involved node collections can only be determined at +run time. Use the [`WITH` operation](../high-level-operations/with.md) to +declare the node collections upfront. This is required for path searches +using collection sets in cluster deployments (if there is no named graph to +deduce the node collections from). Declare the collection of the start node as +well if it's not declared already (like by a `FOR` loop). + +For example, suppose you have two node collections, `person` and `movie`, and +an `acts_in` edge collection that connects them. If you want to run a path search +query that starts (and ends) at a person that you specify with its document ID, +you need to declare both node collections at the beginning of the query: + +```aql +WITH person, movie +FOR p IN ANY K_SHORTEST_PATHS "person/1544" TO "person/52560" acts_in + LIMIT 2 + RETURN p.vertices[*].label +``` + +However, if there is a named graph that includes an edge definition for the +`acts_in` edge collection, with `person` as the _from_ collection and `movie` +as the _to_ collection, you can omit `WITH person, movie`. That is, if you +specify `acts_in` as an edge collection in an anonymous graph query, all +named graphs are checked for this edge collection, and if there is a matching +edge definition, its node collections are automatically added as data sources to +the query. + +```aql +FOR p IN ANY K_SHORTEST_PATHS "person/1544" TO "person/52560" acts_in + LIMIT 2 + RETURN p.vertices[*].label + +// Chris Rock --> Dogma <-- Ben Affleck --> Surviving Christmas <-- Jennifer Morrison +// Chris Rock --> The Longest Yard <-- Rob Schneider --> Big Stan <-- Jennifer Morrison +``` + +You can still declare collections manually, in which case they are added as +data sources in addition to automatically deduced collections. + ## Examples You can load the `kShortestPathsGraph` example graph to get a named graph that diff --git a/site/content/arangodb/3.13/aql/graphs/shortest-path.md b/site/content/arangodb/3.13/aql/graphs/shortest-path.md index e3cab31823..3f6187da64 100644 --- a/site/content/arangodb/3.13/aql/graphs/shortest-path.md +++ b/site/content/arangodb/3.13/aql/graphs/shortest-path.md @@ -145,6 +145,56 @@ All collections in the list that do not specify their own direction use the direction defined after `IN` (here: `OUTBOUND`). This allows you to use a different direction for each collection in your path search. +### Graph path searches in a cluster + +Due to the nature of graphs, edges may reference nodes from arbitrary +collections. Following the paths can thus involve documents from various +collections and it is not possible to predict which are visited in a path +search - unless you use named graphs that define all node and edge collections +that belong to them and the graph data is consistent. + +If you use anonymous graphs / collection sets for graph queries, which node +collections need to be loaded by the graph engine can deduced automatically if +there is a named graph with a matching edge collection in its edge definitions +(introduced in v3.12.6). Edge collections are always declared explicitly in +queries, directly or via referencing a named graph. + +Without a named graph, the involved node collections can only be determined at +run time. Use the [`WITH` operation](../high-level-operations/with.md) to +declare the node collections upfront. This is required for path searches +using collection sets in cluster deployments (if there is no named graph to +deduce the node collections from). Declare the collection of the start node as +well if it's not declared already (like by a `FOR` loop). + +For example, suppose you have two node collections, `person` and `movie`, and +an `acts_in` edge collection that connects them. If you want to run a path search +query that starts (and ends) at a person that you specify with its document ID, +you need to declare both node collections at the beginning of the query: + +```aql +WITH person, movie +FOR v IN ANY SHORTEST_PATH "person/1544" TO "person/52560" acts_in + RETURN v.label +``` + +However, if there is a named graph that includes an edge definition for the +`acts_in` edge collection, with `person` as the _from_ collection and `movie` +as the _to_ collection, you can omit `WITH person, movie`. That is, if you +specify `acts_in` as an edge collection in an anonymous graph query, all +named graphs are checked for this edge collection, and if there is a matching +edge definition, its node collections are automatically added as data sources to +the query. + +```aql +FOR v IN ANY SHORTEST_PATH "person/1544" TO "person/52560" acts_in + RETURN v.label + +// Chris Rock --> Dogma <-- Ben Affleck --> Surviving Christmas <-- Jennifer Morrison +``` + +You can still declare collections manually, in which case they are added as +data sources in addition to automatically deduced collections. + ## Conditional shortest path The `SHORTEST_PATH` computation only finds an unconditioned shortest path. diff --git a/site/content/arangodb/3.13/aql/graphs/traversals.md b/site/content/arangodb/3.13/aql/graphs/traversals.md index ef4870dfef..2fae9b37b5 100644 --- a/site/content/arangodb/3.13/aql/graphs/traversals.md +++ b/site/content/arangodb/3.13/aql/graphs/traversals.md @@ -338,13 +338,56 @@ collection in your traversal. Due to the nature of graphs, edges may reference nodes from arbitrary collections. Following the paths can thus involve documents from various -collections and it is not possible to predict which are visited in a -traversal. Which collections need to be loaded by the graph engine can only be -determined at run time. +collections and it is not possible to predict which are visited in a path +search - unless you use named graphs that define all node and edge collections +that belong to them and the graph data is consistent. -Use the [`WITH` statement](../high-level-operations/with.md) to specify the collections you -expect to be involved. This is required for traversals using collection sets -in cluster deployments. +If you use anonymous graphs / collection sets for graph queries, which node +collections need to be loaded by the graph engine can deduced automatically if +there is a named graph with a matching edge collection in its edge definitions +(introduced in v3.12.6). Edge collections are always declared explicitly in +queries, directly or via referencing a named graph. + +Without a named graph, the involved node collections can only be determined at +run time. Use the [`WITH` operation](../high-level-operations/with.md) to +declare the node collections upfront. This is required for traversals +using collection sets in cluster deployments (if there is no named graph to +deduce the node collections from). Declare the collection of the start node as +well if it's not declared already (like by a `FOR` loop). + +For example, suppose you have two node collections, `person` and `movie`, and +an `acts_in` edge collection that connects them. If you want to run a traversal +query that starts at a person that you specify with its document ID, +you need to declare both node collections at the beginning of the query: + +```aql +WITH person, movie +FOR v, IN 0..1 OUTBOUND "person/1544" acts_in + LIMIT 4 + RETURN v.label +``` + +However, if there is a named graph that includes an edge definition for the +`acts_in` edge collection, with `person` as the _from_ collection and `movie` +as the _to_ collection, you can omit `WITH person, movie`. That is, if you +specify `acts_in` as an edge collection in an anonymous graph query, all +named graphs are checked for this edge collection, and if there is a matching +edge definition, its node collections are automatically added as data sources to +the query. + +```aql +FOR v, IN 0..1 OUTBOUND "person/1544" acts_in + LIMIT 4 + RETURN v.label + +// Chris Rock +// A.I. Artificial Intelligence +// Lethal Weapon 4 +// Madagascar +``` + +You can still declare collections manually, in which case they are added as +data sources in addition to automatically deduced collections. ## Pruning diff --git a/site/content/arangodb/3.13/components/platform.md b/site/content/arangodb/3.13/components/platform.md deleted file mode 100644 index 6e9764fd15..0000000000 --- a/site/content/arangodb/3.13/components/platform.md +++ /dev/null @@ -1,247 +0,0 @@ ---- -title: The ArangoDB Platform -menuTitle: Platform -weight: 169 -description: >- - The ArangoDB Platform brings everything ArangoDB offers together to a single - solution that you can deploy on-prem or use as a managed service ---- -{{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. -{{< /tip >}} - -The ArangoDB Platform is a technical infrastructure that acts as the umbrella -for hosting the entire ArangoDB offering of products. The Platform makes it easy -to deploy and operate the core ArangoDB database system along with any additional -ArangoDB products for machine learning, data explorations, and more. You can -run it on-premises or in the cloud yourself on top of Kubernetes to access all -of the platform features. - -## Features of the ArangoDB Platform - -- **Core database system**: The ArangoDB graph database system for storing - interconnected data.{{< comment >}} You can use the free Community Edition or the commercial - Enterprise Edition.{{< /comment >}} -- **Graph Visualizer**: A web-based tool for exploring your graph data with an - intuitive interface and sophisticated querying capabilities. -- **Graph Analytics**: A suite of graph algorithms including PageRank, - community detection, and centrality measures with support for GPU - acceleration thanks to Nvidia cuGraph. -- **GenAI Suite**: A set of machine learning services, APIs, and - user interfaces that are available as a package as well as individual products. - - **GraphML**: A turnkey solution for graph machine learning for prediction - use cases such as fraud detection, supply chain, healthcare, retail, and - cyber security. - - **GraphRAG**: Leverage ArangoDB's graph, document, key-value, - full-text search, and vector search features to streamline knowledge - extraction and retrieval. - {{< comment >}}TODO: Not available in prerelease version - - **Txt2AQL**: Unlock natural language querying with a service that converts - user input into ArangoDB Query Language (AQL), powered by fine-tuned - private or public LLMs. - {{< /comment >}} - - **GraphRAG Importer**: Extract entities and relationships from large - text-based files, converting unstructured data into a knowledge graph - stored in ArangoDB. - - **GraphRAG Retriever**: Perform semantic similarity searches or aggregate - insights from graph communities with global and local queries. - - **Public and private LLM support**: Use public LLMs such as OpenAI - or private LLMs with [Triton Inference Server](../../../gen-ai/services/triton-inference-server.md). - - **MLflow integration**: Use the popular MLflow as a model registry for private LLMs - or to run machine learning experiments as part of the ArangoDB Platform. -- **Jupyter notebooks**: Run a Jupyter kernel in the platform for hosting - interactive notebooks for experimentation and development of applications - that use ArangoDB as their backend. -{{< comment >}}TODO: Mostly unrelated to Platform, vector index in core, -- **Vector embeddings**: You can train machine learning models for later use - in vector search in conjunction with the core database system's `vector` - index type. It allows you to find similar items in your dataset. -{{< /comment >}} - -## Get started with the ArangoDB Platform - -### Use the ArangoDB Platform as a managed service - -The ArangoDB Platform is not available as a managed service yet, but it will -become available for the [Arango Managed Platform (AMP)](../../../amp/_index.md) -in the future. Until then, you can request early access to the self-hosted -ArangoDB Platform for testing. - -### Self-host the ArangoDB Platform - -You can set up and run the ArangoDB Platform on-premises or in the cloud and -manage this deployment yourself. - -#### Requirements for self-hosting - -- **Early access to the ArangoDB Platform**: - [Get in touch](https://arangodb.com/contact/) with the ArangoDB team to get - exclusive early access to the pre-release of the ArangoDB Platform & GenAI Suite. - -- **Kubernetes**: Orchestrates the selected services that comprise the - ArangoDB Platform, running them in containers for safety and scalability. - - Set up a [Kubernetes](https://kubernetes.io/) cluster if you don't have one - available yet. - -- **kubectl**: A command line tool for communicating with a Kubernetes cluster's - control plane. - - Install [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) for applying - specifications such as for creating the ArangoDB Core deployment, as well as - for checking pods, logs, etc. - -- **Helm**: A package manager for Kubernetes. - - You need to have [helm](https://helm.sh/docs/intro/install/) installed in order - to install the required certificate manager and the ArangoDB Kubernetes Operator - as part of the Platform setup. - -- **Container registry**: A repository for storing and accessing container images. - - You need to have a container registry for installing the images of the Platform - services. It can be a local registry. - -{{< comment >}} -- **Licenses**: If you want to use any paid features, you need to purchase the - respective packages. -{{< /comment >}} - -#### Setup - -1. Obtain a zip package of the ArangoDB Platform for the offline installation. - It includes helm charts, manifests, and blobs of the container image layers. - You also receive a package configuration file from the ArangoDB team. - -2. Create a Kubernetes namespace for ArangoDB and a secret with your - Enterprise Edition license key. Substitute `<license-string>` with the actual - license string: - - ```sh - kubectl create namespace arangodb - - kubectl create secret generic arango-license-key \ - --namespace arangodb \ - --from-literal=token-v2="<license-string>" - ``` - -3. Install the certificate manager. You can check <https://github.com/cert-manager/cert-manager> - for the available releases. - - ```sh - VERSION_CERT='1.18.2' # Use a newer version if available - helm repo add jetstack https://charts.jetstack.io - helm repo update - - helm upgrade --install cert-manager \ - --namespace cert-manager --create-namespace \ - --version "v${VERSION_CERT}" \ - jetstack/cert-manager \ - --set crds.enabled=true - ``` - -4. Install the ArangoDB operator for Kubernetes `kube-arangodb` with helm, - with options to enable webhooks, certificates, and the gateway feature. - - ```sh - VERSION_OPERATOR='1.3.0' # Use a newer version if available - - helm upgrade --install operator \ - --namespace arangodb \ - "https://github.com/arangodb/kube-arangodb/releases/download/${VERSION_OPERATOR}/kube-arangodb-enterprise-${VERSION_OPERATOR}.tgz" \ - --set "webhooks.enabled=true" \ - --set "certificate.enabled=true" \ - --set "operator.args[0]=--deployment.feature.gateway=true" \ - --set "operator.features.platform=true" \ - --set "operator.features.ml=true" \ - --set "operator.architectures={amd64}" # or {arm64} for ARM-based CPUs - ``` - -5. Create an `ArangoDeployment` specification for the ArangoDB Core. See the - [ArangoDeployment Custom Resource Overview](https://arangodb.github.io/kube-arangodb/docs/deployment-resource-reference.html) - and the linked reference. - - You need to enable the gateway feature by setting `spec.gateway.enabled` and - `spec.gateway.dynamic` to `true` in the specification. You also need to set - `spec.license` to the secret created earlier. Example for an ArangoDB cluster - deployment using version 3.12.5 with three DB-Servers and two Coordinators: - - ```yaml - apiVersion: "database.arangodb.com/v1" - kind: "ArangoDeployment" - metadata: - name: "platform-example" - spec: - mode: Cluster - image: "arangodb/enterprise:3.12.5" - gateway: - enabled: true - dynamic: true - gateways: - count: 1 - dbservers: - count: 3 - coordinators: - count: 2 - license: - secretName: arango-license-key - # ... - ``` - -6. Download the ArangoDB Platform CLI tool `arangodb_operator_platform` from - <https://github.com/arangodb/kube-arangodb/releases>. - It is available for Linux and macOS, for the x86-64 as well as 64-bit ARM - architecture (e.g. `arangodb_operator_platform_linux_amd64`). - - It is recommended to rename the downloaded executable to - `arangodb_operator_platform` and add it to the `PATH` environment variable - to make it available as a command in the system. - - The Platform CLI tool simplifies the further setup and later management of - the Platform's Kubernetes services. - -7. Import the zip package of the ArangoDB Platform into the container registry. - Replace `platform.zip` with the file path of the offline installation package. - Replace `gcr.io/my-reg` with the address of your registry. - - ```sh - arangodb_operator_platform package import \ - --registry-docker-credentials \ - gcr.io/my-reg \ - ./platform.zip \ - platform.imported.yaml - ``` - -8. Install the package using the package configuration you received from the - ArangoDB team (`platform.yaml`) and the configuration generated by the - previous command (`platform.imported.yaml`). These configurations are merged, - allowing for targeted upgrades and user-defined overrides. - - The package installation creates and enables various services, including - the unified web interface of the Platform. - - ```sh - arangodb_operator_platform --context arangodb package install \ - --platform.name platform-example \ - ./platform.yaml \ - ./platform.imported.yaml - ``` - -## Interfaces - -The ArangoDB Platform uses a gateway to make all its services available via a -single port at the external address of the deployment. For a local deployment, -the base URL is `https://127.0.0.1:8529`. - -### Unified web interface - -You can access the ArangoDB Platform web interface with a browser by appending -`/ui/` to the base URL, e.g. `https://127.0.0.1:8529/ui/`. - -### ArangoDB Core - -The HTTP API of the ArangoDB Core database system is available at the base URL. -For example, the URL of the Cursor API for submitting AQL queries (against the `_system` database) is -`https://127.0.0.1:8529/_db/_system/_api/cursor`. diff --git a/site/content/arangodb/3.13/deploy/_index.md b/site/content/arangodb/3.13/deploy/_index.md index 2d9787b64c..499c517066 100644 --- a/site/content/arangodb/3.13/deploy/_index.md +++ b/site/content/arangodb/3.13/deploy/_index.md @@ -50,7 +50,7 @@ ArangoDB product offering with a unified interface in a Kubernetes cluster. It is offered for self-hosting on-prem or in the cloud and as a managed service, superseding the Arango Managed Platform (AMP). -See [The ArangoDB Platform](../components/platform.md) for details. +See [The ArangoDB Platform](../../../data-platform/about/_index.md) for details. ## How to deploy diff --git a/site/content/arangodb/3.13/develop/http-api/indexes/multi-dimensional.md b/site/content/arangodb/3.13/develop/http-api/indexes/multi-dimensional.md index e38f031495..5627af291b 100644 --- a/site/content/arangodb/3.13/develop/http-api/indexes/multi-dimensional.md +++ b/site/content/arangodb/3.13/develop/http-api/indexes/multi-dimensional.md @@ -111,7 +111,10 @@ paths: default: false sparse: description: | - If `true`, then create a sparse index. + Whether to create a sparse index that excludes documents with + at least one of the attributes for indexing missing or set to + `null`. These attributes are defined by `fields` and (for + `mdi-prefixed` indexes) by `prefixFields`. type: boolean default: false estimates: diff --git a/site/content/arangodb/3.13/develop/http-api/indexes/persistent.md b/site/content/arangodb/3.13/develop/http-api/indexes/persistent.md index 7017836a3b..cb916d7aed 100644 --- a/site/content/arangodb/3.13/develop/http-api/indexes/persistent.md +++ b/site/content/arangodb/3.13/develop/http-api/indexes/persistent.md @@ -113,8 +113,9 @@ paths: default: false sparse: description: | - Whether create a sparse index that excludes documents with at least - one of the `fields` missing or set to `null`. + Whether to create a sparse index that excludes documents with + at least one of the attributes for indexing missing or set to + `null`. These attributes are defined by `fields`. type: boolean default: false deduplicate: diff --git a/site/content/arangodb/3.13/develop/http-api/indexes/vector.md b/site/content/arangodb/3.13/develop/http-api/indexes/vector.md index 1581ed1e94..0bbd14d4de 100644 --- a/site/content/arangodb/3.13/develop/http-api/indexes/vector.md +++ b/site/content/arangodb/3.13/develop/http-api/indexes/vector.md @@ -57,7 +57,7 @@ paths: A list with exactly one attribute path to specify where the vector embedding is stored in each document. The vector data needs to be populated before creating the index. - + If you want to index another vector embedding attribute, you need to create a separate vector index. type: array @@ -65,6 +65,13 @@ paths: maxItems: 1 items: type: string + sparse: + description: | + Whether to create a sparse index that excludes documents with + the attribute for indexing missing or set to `null`. This + attribute is defined by `fields`. + type: boolean + default: false parallelism: description: | The number of threads to use for indexing. @@ -88,9 +95,14 @@ paths: properties: metric: description: | - Whether to use `cosine` or `l2` (Euclidean) distance calculation. - type: string - enum: ["cosine", "l2"] + The measure for calculating the vector similarity: + - `"cosine"`: Angular similarity. Vectors are automatically + normalized before insertion and search. + - `"innerProduct"` (introduced in v3.12.6): + Similarity in terms of angle and magnitude. + Vectors are not normalized, making it faster than `cosine`. + - `"l2":` Euclidean distance. + enum: ["cosine", "innerProduct", "l2"] dimension: description: | The vector dimension. The attribute to index needs to diff --git a/site/content/arangodb/3.13/develop/http-api/monitoring/logs.md b/site/content/arangodb/3.13/develop/http-api/monitoring/logs.md index d68f1b6eeb..7808927511 100644 --- a/site/content/arangodb/3.13/develop/http-api/monitoring/logs.md +++ b/site/content/arangodb/3.13/develop/http-api/monitoring/logs.md @@ -568,7 +568,7 @@ paths: Logs various information related to ArangoDB's use of the RocksDB storage engine, like the initialization and file operations. - + RocksDB's internal log messages are passed through using the `rocksdb` log topic. type: string @@ -856,12 +856,14 @@ paths: operationId: getRecentApiCalls description: | Get a list of the most recent requests with a timestamp and the endpoint. + In cluster deployments, the list contains only those requests that were + submitted to the Coordinator you call this endpoint on. This feature is for debugging purposes. You can control how much memory is used to record API calls with the `--server.api-recording-memory-limit` startup option. - You can disable this endpoint + You can disable this and the `/_admin/server/aql-queries` endpoint with the `--log.recording-api-enabled` startup option. Whether API calls are recorded is independently controlled by the @@ -875,7 +877,9 @@ paths: description: | The name of a database. Which database you use doesn't matter as long as the user account you authenticate with has at least read access - to this database. + to this database and administrate access to the `_system` database. + If `--log.recording-api-enabled` is set to `jwt`, you need to use + a superuser token to access the endpoint. schema: type: string responses: @@ -1075,3 +1079,239 @@ Content-Length: 257 } ``` {{< /details >}} + +## Get recent AQL queries + +```openapi +paths: + /_db/{database-name}/_admin/server/aql-queries: + get: + operationId: getRecentAqlQueries + description: | + Get a list of the most recent AQL queries with a timestamp and + information about the submitted query. In cluster deployments, the list + contains only those queries that were submitted to the Coordinator you + call this endpoint on. This feature is for debugging purposes. + + You can control how much memory is used to record AQL queries with the + `--server.aql-recording-memory-limit` startup option. + + You can disable this and the `/_admin/server/api-calls` endpoint + with the `--log.recording-api-enabled` startup option. + + Whether AQL queries are recorded is independently controlled by the + `--server.aql-query-recording` startup option. + The endpoint returns an empty list of queries if turned off. + parameters: + - name: database-name + in: path + required: true + example: _system + description: | + The name of a database. Which database you use doesn't matter as long + as the user account you authenticate with has at least read access + to this database and administrate access to the `_system` database. + If `--log.recording-api-enabled` is set to `jwt`, you need to use + a superuser token to access the endpoint. + schema: + type: string + responses: + '200': + description: | + Returns the recorded AQL queries. + content: + application/json: + schema: + type: object + required: + - error + - code + - result + properties: + error: + description: | + A flag indicating that no error occurred. + type: boolean + example: false + code: + description: | + The HTTP response status code. + type: integer + example: 200 + result: + description: | + The request result. + type: object + required: + - queries + properties: + queries: + description: | + A list of the recent AQL queries. + Empty if AQL query recording is disabled. + type: array + items: + type: object + properties: + timeStamp: + description: | + The date and time of the request in ISO 8601 format. + type: string + format: date-time + query: + description: | + The AQL query. + type: string + bindVars: + description: | + Key/value pairs representing the bind variables. + type: object + database: + description: | + The database name. + type: string + '401': + description: | + The user account has insufficient permissions for the selected database. + content: + application/json: + schema: + type: object + required: + - error + - code + - errorNum + - errorMessage + properties: + error: + description: | + A flag indicating that an error occurred. + type: boolean + example: true + code: + description: | + The HTTP response status code. + type: integer + example: 401 + errorNum: + description: | + ArangoDB error number for the error that occurred. + type: integer + errorMessage: + description: | + A descriptive error message. + type: string + '403': + description: | + The recording API has been disabled. + content: + application/json: + schema: + type: object + required: + - error + - code + - errorNum + - errorMessage + properties: + error: + description: | + A flag indicating that an error occurred. + type: boolean + example: true + code: + description: | + The HTTP response status code. + type: integer + example: 403 + errorNum: + description: | + ArangoDB error number for the error that occurred. + type: integer + errorMessage: + description: | + A descriptive error message. + type: string + '501': + description: | + The method has not been called on a Coordinator or single server. + content: + application/json: + schema: + type: object + required: + - error + - code + - errorNum + - errorMessage + properties: + error: + description: | + A flag indicating that an error occurred. + type: boolean + example: true + code: + description: | + The HTTP response status code. + type: integer + example: 501 + errorNum: + description: | + ArangoDB error number for the error that occurred. + type: integer + errorMessage: + description: | + A descriptive error message. + type: string + tags: + - Monitoring +``` + +{{< comment >}} +Example not generated because it changes on every run and there can be many internal queries. +{{< /comment >}} + +```bash +curl --header 'accept: application/json' --dump - http://localhost:8529/_admin/server/aql-queries +``` + +{{< details summary="Show output" >}} +```bash +HTTP/1.1 200 OK +X-Arango-Queue-Time-Seconds: 0.000000 +Strict-Transport-Security: max-age=31536000 ; includeSubDomains +Expires: 0 +Pragma: no-cache +Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0 +Content-Security-Policy: frame-ancestors 'self'; form-action 'self'; +X-Content-Type-Options: nosniff +Server: ArangoDB +Connection: Keep-Alive +Content-Type: application/json; charset=utf-8 +Content-Length: 353 + +{ + "error": false, + "code": 200, + "result": { + "queries": [ + { + "timeStamp": "2025-07-02T16:33:32Z", + "query": "FOR s in @@collection FILTER s.time < @start RETURN s._key", + "database": "_system", + "bindVars": { + "@collection": "_statistics", + "start": 1751470412.3836362 + } + }, + { + "timeStamp": "2025-07-02T16:26:01Z", + "query": "FOR doc IN coll RETURN doc", + "database": "_system", + "bindVars": {} + } + ] + } +} +``` +{{< /details >}} \ No newline at end of file diff --git a/site/content/arangodb/3.13/develop/integrations/arangodb-tinkerpop-provider.md b/site/content/arangodb/3.13/develop/integrations/arangodb-tinkerpop-provider.md new file mode 100644 index 0000000000..04012366f9 --- /dev/null +++ b/site/content/arangodb/3.13/develop/integrations/arangodb-tinkerpop-provider.md @@ -0,0 +1,841 @@ +--- +title: ArangoDB TinkerPop Provider +menuTitle: TinkerPop Provider +weight: 10 +description: >- + Build graph applications using TinkerPop API with ArangoDB's high-performance backend, combining Gremlin traversals and native AQL queries +--- +ArangoDB TinkerPop Provider is an implementation of the [Apache TinkerPop OLTP Provider](https://tinkerpop.apache.org/docs/3.7.4/dev/provider) API for +ArangoDB. + +It allows using the standard TinkerPop API with ArangoDB as the backend storage. It supports creating, +querying, and manipulating graph data using the Gremlin traversal language, while offering the possibility to use native +AQL (ArangoDB Query Language) for complex queries. + +- Repository: <https://github.com/arangodb/arangodb-tinkerpop-provider> +- [Code examples](https://github.com/arangodb/arangodb-tinkerpop-provider/tree/main/src/test/java/example) +- [Demo](https://github.com/arangodb/arangodb-tinkerpop-provider/tree/main/demo) +- [JavaDoc](https://www.javadoc.io/doc/com.arangodb/arangodb-tinkerpop-provider/latest/index.html) (generated reference documentation) +- [ChangeLog](https://github.com/arangodb/arangodb-tinkerpop-provider/blob/main/CHANGELOG.md) + +## Compatibility + +This Provider is compatible with: + +- Apache TinkerPop 3.7 +- ArangoDB 3.12+ +- ArangoDB Java Driver 7.22+ +- Java 8+ + +## Installation + +### Maven + +1. Check the [latest version](https://search.maven.org/artifact/com.arangodb/arangodb-tinkerpop-provider) available. +2. Add the following dependency to your `pom.xml` file: + +```xml +<dependencies> + <dependency> + <groupId>com.arangodb</groupId> + <artifactId>arangodb-tinkerpop-provider</artifactId> + <version>x.y.z</version> + </dependency> +</dependencies> +``` + +### Gradle + +1. Add the following dependency to your `build.gradle`: + +```groovy +implementation 'com.arangodb:arangodb-tinkerpop-provider:x.y.z' +``` + +### Gremlin Console + +1. Install the TinkerPop Provider in the Gremlin Console: + +```text +:install com.arangodb arangodb-tinkerpop-provider x.y.z +``` + +2. Restart the console to load the provider. + +3. Create a configuration for your ArangoDB connection. + +```text +gremlin> conf = [ +......1> "gremlin.graph":"com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph", +......2> "gremlin.arangodb.conf.graph.enableDataDefinition":"true", +......3> "gremlin.arangodb.conf.driver.hosts":"172.28.0.1:8529", +......4> "gremlin.arangodb.conf.driver.password":"test", +......5> ] +==>gremlin.graph=com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph +==>gremlin.arangodb.conf.graph.enableDataDefinition=true +==>gremlin.arangodb.conf.driver.hosts=172.28.0.1:8529 +==>gremlin.arangodb.conf.driver.password=test +``` +4. Open the graph using the configuration. + +```text +gremlin> graph = GraphFactory.open(conf) +==>arangodbgraph[ArangoDBGraphConfig{...}] +``` + +5. Create a traversal source and start using it: + +```text +gremlin> g = graph.traversal() +==>graphtraversalsource[arangodbgraph[...], standard] + +gremlin> g.addV("person").property("name", "marko") +==>v[4586117] + +gremlin> g.V().hasLabel("person").values("name") +==>marko +``` + +### Server Plugin + +Follow the steps below to set up the provider as a Gremlin Server plugin. + +1. Install the provider in the Gremlin Server: + + ```bash + ./bin/gremlin-server.sh install com.arangodb arangodb-tinkerpop-provider x.y.z + ``` + +2. Create a graph configuration file (e.g., `conf/arangodb.yaml`): + + ```yaml + gremlin: + graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" + arangodb: + conf: + graph: + enableDataDefinition: true + driver: + hosts: + - "172.28.0.1:8529" + password: test + ``` + +3. Create a server configuration file to load the plugin and graph configuration (e.g., `conf/gremlin-server-arangodb.yaml`): + +```yaml +host: 0.0.0.0 +port: 8182 +graphs: { + graph: conf/arangodb.yaml} +scriptEngines: { + gremlin-groovy: { + plugins: { org.apache.tinkerpop.gremlin.server.jsr223.GremlinServerGremlinPlugin: {}, + org.apache.tinkerpop.gremlin.tinkergraph.jsr223.TinkerGraphGremlinPlugin: {}, + com.arangodb.tinkerpop.gremlin.jsr223.ArangoDBGremlinPlugin: {}, + org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin: {classImports: [java.lang.Math], methodImports: [java.lang.Math#*]}, + org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: {files: [scripts/empty-sample.groovy]}}}} +serializers: + - { className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV3, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3] }} # application/json + - { className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1 } # application/vnd.graphbinary-v1.0 + - { className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }} # application/vnd.graphbinary-v1.0-stringd +processors: + - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }} + - { className: org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor} +``` + +4. Start the Gremlin Server with your configuration: + + ```bash + ./bin/gremlin-server.sh conf/gremlin-server-arangodb.yaml + ``` + +5. Connect to the server using the Gremlin Console: + + ```text + gremlin> :remote connect tinkerpop.server conf/remote.yaml + + gremlin> :remote console + ==>All scripts will now be sent to Gremlin Server - [localhost/127.0.0.1:8182] - type ':remote console' to return to local mode + ``` + +6. Start using the graph: + + ```text + gremlin> g.addV("person").property("name", "marko") + ==>v[4587713] + + gremlin> g.V().hasLabel("person").values("name") + ==>marko + ``` + +You can find the reference documentation [here](https://tinkerpop.apache.org/docs/3.7.4/reference/#_configuring_2). + + +## Quick Start + +Follow the steps below to get started with creating vertices, edges, and querying the graph. + +### Step 1: Configure and Create the Graph + +[//]: <> (@formatter:off) +```java +// Create a configuration +Configuration conf = new ArangoDBConfigurationBuilder() + .hosts("localhost:8529") + .user("root") + .password("test") + .db("myDatabase") + .name("myGraph") + .enableDataDefinition(true) // Allow creating database and graph if they don't exist + .build(); + +// Create a graph +ArangoDBGraph graph = (ArangoDBGraph) GraphFactory.open(conf); + +// Get a traversal source +GraphTraversalSource g = graph.traversal(); +``` +### Step 2: Add Vertices and Edges + +```java +// Add vertices with properties +Vertex person = g.addV("person") + .property("name", "Alice") + .property("age", 30) + .property("country", "Germany") + .next(); + +Vertex software = g.addV("software") + .property("name", "JArango") + .property("lang", "Java") + .next(); + +// Create relationships between vertices +Edge created = g.addE("created") + .from(person) + .to(software) + .property("year", 2025) + .next(); +``` + +### Step 3: Query the Graph + +```java +// Query the graph +List<String> creators = g.V() + .hasLabel("software") + .has("name", "JArango") + .in("created") + .<String>values("name") + .toList(); + +System.out.println("Creators: " + creators); + +// Query: Find all software created by Alice +List<String> aliceSoftware = g.V() + .hasLabel("person") + .has("name", "Alice") + .out("created") + .<String>values("name") + .toList(); + +System.out.println("aliceSoftware: " + aliceSoftware); + +``` + +### Step 4: Update Data + +```java +// Update a property +g.V() + .hasLabel("person") + .has("name", "Alice") + .property("age", 31) + .iterate(); + +// Remove a property +g.V() + .hasLabel("person") + .has("name", "Alice") + .properties("country") + .drop() + .iterate(); + +// Check the updated vertex +Map<?, ?> alice = g.V() + .hasLabel("person") + .has("name", "Alice") + .valueMap() + .next(); + +System.out.println("alice: " + alice); +``` + +### Step 5: Delete Data and Clean Up + +```java +// Remove an edge +g.E() + .hasLabel("created") + .where(__.outV() + .has("name", "Alice")) + .where(__.inV() + .has("name", "JArango")) + .drop() + .iterate(); + +// Remove a vertex (and its incident edges) +g.V() + .hasLabel("person") + .has("name", "Alice") + .drop() + .iterate(); + +// Close the graph when done +graph.close(); +``` +[//]: <> (@formatter:on) + +## Configuration + +The graph can be created using the methods from `org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(...)` +(see [javadoc](https://tinkerpop.apache.org/javadocs/3.7.4/full/org/apache/tinkerpop/gremlin/structure/util/GraphFactory.html)). +These methods accept a configuration file (e.g., YAML or properties file), a Java Map, or an Apache Commons Configuration object. + +The property `gremlin.graph` must be set to: `com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph`. + +Configuration examples can be found [here](https://github.com/arangodb/arangodb-tinkerpop-provider/tree/main/src/test/java/example). + +### Graph Configuration Properties + +Graph configuration properties are prefixed with `gremlin.arangodb.conf.graph`: + +| Property | Description | Default | +|----------------------------------------------------|---------------------------------------|-------------| +| `gremlin.arangodb.conf.graph.db` | ArangoDB database name | `_system` | +| `gremlin.arangodb.conf.graph.name` | ArangoDB graph name | `tinkerpop` | +| `gremlin.arangodb.conf.graph.enableDataDefinition` | Flag to allow data definition changes | `false` | +| `gremlin.arangodb.conf.graph.type` | Graph type: `SIMPLE` or `COMPLEX` | `SIMPLE` | +| `gremlin.arangodb.conf.graph.labelField` | Label field name | `_label` | +| `gremlin.arangodb.conf.graph.orphanCollections` | List of orphan collections names | - | +| `gremlin.arangodb.conf.graph.edgeDefinitions` | List of edge definitions | - | + +### Driver Configuration Properties + +Driver configuration properties are prefixed with `gremlin.arangodb.conf.driver`. All properties from +`com.arangodb.config.ArangoConfigProperties` are supported. See +the [ArangoDB Java Driver documentation](https://docs.arangodb.com/stable/develop/drivers/java/reference-version-7/driver-setup/#config-file-properties) +for details. + +### YAML Configuration + +```yaml +gremlin: + graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" + arangodb: + conf: + graph: + db: "testDb" + name: "myFirstGraph" + enableDataDefinition: true + type: COMPLEX + orphanCollections: [ "x", "y", "z" ] + edgeDefinitions: + - "e1:[a]->[b]" + - "e2:[a,b]->[c,d]" + driver: + user: "root" + password: "test" + hosts: + - "172.28.0.1:8529" + - "172.28.0.1:8539" + - "172.28.0.1:8549" +``` + +Loading from a YAML file: + +[//]: <> (@formatter:off) +```java +ArangoDBGraph graph = (ArangoDBGraph) GraphFactory.open("<path_to_yaml_file>"); +``` +[//]: <> (@formatter:on) + +### Programmatic Configuration + +1. Build the configuration using the configuration builder: + + [//]: <> (@formatter:off) + ```java + Configuration conf = new ArangoDBConfigurationBuilder() + .hosts("172.28.0.1:8529") + .user("root") + .password("test") + .database("testDb") + .name("myGraph") + .graphType(GraphType.SIMPLE) + .enableDataDefinition(true) + .build(); + ``` + [//]: <> (@formatter:on) + +2. Create the graph using the configuration: + + [//]: <> (@formatter:off) + ```java + ArangoDBGraph graph = (ArangoDBGraph) GraphFactory.open(conf); + ``` + [//]: <> (@formatter:on) + +### SSL Configuration + +To use TLS-secured connections to ArangoDB, follow these steps: + +1. Enable SSL by setting `gremlin.arangodb.conf.driver.useSsl` to `true` in your configuration. + +2. Configure SSL properties as needed (see [ArangoDB Java Driver documentation](https://docs.arangodb.com/stable/develop/drivers/java/reference-version-7/driver-setup/#config-file-properties) for all available options): + + ```yaml + gremlin: + graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" + arangodb: + conf: + driver: + hosts: + - "172.28.0.1:8529" + useSsl: true + verifyHost: false + sslCertValue: "MIIDezCCAmOgAwIBAgIEeDCzXzANBgkqhkiG9w0BAQsFADBuMRAwDgYDVQQGEwdVbmtub3duMRAwDgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAwDgYDVQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMRIwEAYDVQQDEwlsb2NhbGhvc3QwHhcNMjAxMTAxMTg1MTE5WhcNMzAxMDMwMTg1MTE5WjBuMRAwDgYDVQQGEwdVbmtub3duMRAwDgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAwDgYDVQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMRIwEAYDVQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1WiDnd4+uCmMG539ZNZB8NwI0RZF3sUSQGPx3lkqaFTZVEzMZL76HYvdc9Qg7difyKyQ09RLSpMALX9euSseD7bZGnfQH52BnKcT09eQ3wh7aVQ5sN2omygdHLC7X9usntxAfv7NzmvdogNXoJQyY/hSZff7RIqWH8NnAUKkjqOe6Bf5LDbxHKESmrFBxOCOnhcpvZWetwpiRdJVPwUn5P82CAZzfiBfmBZnB7D0l+/6Cv4jMuH26uAIcixnVekBQzl1RgwczuiZf2MGO64vDMMJJWE9ClZF1uQuQrwXF6qwhuP1Hnkii6wNbTtPWlGSkqeutr004+Hzbf8KnRY4PAgMBAAGjITAfMB0GA1UdDgQWBBTBrv9Awynt3C5IbaCNyOW5v4DNkTANBgkqhkiG9w0BAQsFAAOCAQEAIm9rPvDkYpmzpSIhR3VXG9Y71gxRDrqkEeLsMoEyqGnw/zx1bDCNeGg2PncLlW6zTIipEBooixIE9U7KxHgZxBy0Et6EEWvIUmnr6F4F+dbTD050GHlcZ7eOeqYTPYeQC502G1Fo4tdNi4lDP9L9XZpf7Q1QimRH2qaLS03ZFZa2tY7ah/RQqZL8Dkxx8/zc25sgTHVpxoK853glBVBs/ENMiyGJWmAXQayewY3EPt/9wGwV4KmU3dPDleQeXSUGPUISeQxFjy+jCw21pYviWVJTNBA9l5ny3GhEmcnOT/gQHCvVRLyGLMbaMZ4JrPwb+aAtBgrgeiK4xeSMMvrbhw==" + ``` + +3. Alternatively, use system properties for truststore configuration. If no `sslCertValue` is provided, the default SSL context is used. In such cases, you can specify the truststore using system properties: + - `javax.net.ssl.trustStore` + - `javax.net.ssl.trustStorePassword` + +### Data Definition Management + +The provider follows this process when instantiating a graph: + +1. **Validation**: The provider compares existing data definitions in ArangoDB with the structure expected by your configuration. It checks whether: + - The database exists + - The graph exists + - The graph structure has the same edge definitions and orphan collections + +2. **Error handling**: If there's a mismatch, an error is thrown and the graph is not instantiated. + +3. **Automatic creation** (optional): To automatically create missing data definitions, set `gremlin.arangodb.conf.graph.enableDataDefinition` to `true`. This allows: + - Creating a new database if it doesn't exist + - Creating a new graph if it doesn't exist (along with vertex and edge collections) + +{{< info >}} +Existing graphs are never modified automatically for safety reasons. +{{< /info >}} + +## Graph Types + +The ArangoDB TinkerPop Provider supports two graph types, which can be configured with the property +`gremlin.arangodb.conf.graph.type`: `SIMPLE` and `COMPLEX`. + +### SIMPLE Graph Type + +From an application perspective, this is the most flexible graph type that is backed by an ArangoDB graph composed of only one vertex collection and one edge definition. + +The `label` of each element is stored in a database document field. The label field name is configurable by setting the configuration property `graph.labelField`, `_label` by default. + +The `SIMPLE` graph type is the default graph type. + +It has the following advantages: + +- It closely matches the TinkerPop property graph +- It is simpler to get started and run examples +- It imposes no restrictions about element IDs +- It supports arbitrary labels, i.e., labels not known at graph construction time + +It has the following disadvantages: + +- All vertex types will be stored in the same vertex collection +- All edge types will be stored in the same edge collection +- It could not leverage the full potential of ArangoDB graph traversal +- It could require an index on the label field to improve performance + +Example configuration: + +```yaml +gremlin: + graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" + arangodb: + conf: + graph: + db: "db" + name: "myGraph" + type: SIMPLE + edgeDefinitions: + - "e:[v]->[v]" +``` + +If `edgeDefinitions` are not configured, the default names are used: + +- `vertex` will be used for the vertex collection +- `edge` will be used for the edge collection + +Using a `SIMPLE` graph configured as in the example above and creating a new element like: + +[//]: <> (@formatter:off) +```java +graph.addVertex(T.label, "person", T.id, "foo"); +``` +[//]: <> (@formatter:on) + +would result in creating a document in the vertex collection `v` with `_key` equals to `foo` (and `_id` equals +to `v/foo`). + +### COMPLEX Graph Type + +The `COMPLEX` graph type is backed by an ArangoDB graph composed potentially of multiple vertex collections and multiple +edge definitions. + +The `label` of each element is used as name for the related database collection. + +It has the following advantages: + +- It closely matches the ArangoDB graph structure +- It allows multiple vertex collections and multiple edge collections +- It partitions the data in a finer way +- It allows indexing and sharding collections independently +- It is more flexible to match pre-existing database graph structures + +But on the other side has the following constraints: + +- Element IDs must have the format: `<label>/<key>`, where: + - `<label>` is the element label + - `<key>` is the database document key +- Only labels corresponding to graph collections can be used + +Example configuration: + +```yaml +gremlin: + graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" + arangodb: + conf: + graph: + db: "db" + name: "myGraph" + type: COMPLEX + edgeDefinitions: + - "knows:[person]->[person]" + - "created:[person]->[game,software]" +``` + +Using a `COMPLEX` graph configured as in the example above and creating a new element like: + +[//]: <> (@formatter:off) +```java +graph.addVertex(T.label, "person", T.id, "person/foo"); +``` +[//]: <> (@formatter:on) + +would result in creating a document in the vertex collection `person` with `_key` equals to `foo` (and `_id` +equals to `person/foo`). + +## Naming Constraints + +When using the ArangoDB TinkerPop Provider, be aware that Element IDs must be strings. + +## Persistent Structure + +The ArangoDB TinkerPop Provider maps TinkerPop data structures to ArangoDB data as follows: + +### Vertices + +Vertices are stored as documents in vertex collections. In a `SIMPLE` graph, all vertices are stored in a single +collection, by default named `vertex`. In a `COMPLEX` graph, vertices are stored in collections named +`<label>`. + +Each vertex document contains: + +- Standard ArangoDB fields (`_id`, `_key`, `_rev`) +- Vertex properties as document fields +- Meta-properties nested in the nested map `_meta` + +Additionally, in a `SIMPLE` graph: +- The label field (`_label` by default) + +For example, the following Java code: + +[//]: <> (@formatter:off) +```java +graph + .addVertex("person") + .property("name", "Freddie Mercury") + .property("since", 1970); +``` +[//]: <> (@formatter:on) + +creates a document like this: + +```json +{ + "_key": "4856", + "_id": "vertex/4856", + "_rev": "_kFqmbXK---", + "_label": "person", + "name": "Freddie Mercury", + "_meta": { + "name": { + "since": 1970 + } + } +} +``` + +### Edges + +Edges are stored as documents in edge collections. In a `SIMPLE` graph, all edges are stored in a single collection, by +default named `edge`. In a `COMPLEX` graph, edges are stored in collections named `<label>`. + +Each edge document contains: + +- Standard ArangoDB edge fields (`_id`, `_key`, `_rev`, `_from`, `_to`) +- Edge properties as document fields + +Additionally, in a `SIMPLE` graph: +- The label field (`_label` by default) + +For example, the following Java code: + +[//]: <> (@formatter:off) +```java +Vertex v = graph.addVertex("person"); +v.addEdge("knows", v) + .property("since", 1970); +``` +[//]: <> (@formatter:on) + +creates a document like this: + +```json +{ + "_key": "5338", + "_id": "edge/5338", + "_from": "vertex/5335", + "_to": "vertex/5335", + "_rev": "_kFq20-u---", + "_label": "knows", + "since": 1970 +} +``` + +## Element IDs + +Given a Gremlin element, you can get the corresponding ArangoDB document ID (`_id` field) using the +`ArangoDBGraph.elementId(Element)` method: + +[//]: <> (@formatter:off) +```java +Vertex v = graph.addVertex("name", "marko"); +String id = graph.elementId(v); +``` +[//]: <> (@formatter:on) + +This is useful when you need to reference the element directly in AQL queries. + + +## Query Optimization + +ArangoDB TinkerPop Provider includes an optimization strategy that can push certain Gremlin traversal steps down to +the database layer for improved performance. +This is applied by `com.arangodb.tinkerpop.gremlin.process.traversal.strategy.optimization.ArangoStepStrategy`. + +### HasStep Pushdown + +The optimizer analyzes the traversal steps and attempts to convert filter steps of type +`org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep` into AQL queries that execute directly on the +database. This reduces the amount of data transferred and processed in the client application. + +All Gremlin predefined predicate values from `org.apache.tinkerpop.gremlin.process.traversal.P` are supported: +- **comparison predicates**: `eq`, `neq`, `lt`, `gt`, etc. +- **collection predicates**: `within`, `without` +- **text predicates**: `containing`, `startingWith`, `endingWith`, `regex` +- **logical combinations**: `and`, `or`, `not` + +For example, the following traversal is optimized to execute the filtering logic in ArangoDB using AQL and transferring to the client only the matching +vertices, rather than retrieving all vertices and filtering them in the client. + +[//]: <> (@formatter:off) +```groovy +g.V().has("value", "foo") +``` +[//]: <> (@formatter:on) + +### Disabling Optimization + +If you need to disable the optimization strategy: + +1. **Create a traversal source** without the optimization strategy: + + [//]: <> (@formatter:off) + ```java + GraphTraversalSource g = graph.traversal().withoutStrategies(ArangoStepStrategy.class); + ``` + [//]: <> (@formatter:on) + +2. **Use the traversal source** as normal. All traversals will execute without AQL optimization. + +## AQL Queries + +For complex queries or performance-critical operations, you can use ArangoDB's native query language (AQL) directly: + +[//]: <> (@formatter:off) +```java +List<Vertex> alice = graph + .<Vertex>aql("FOR v IN vertex FILTER v.name == @name RETURN v", Map.of("name", "Alice")) + .toList(); + +// Query using document ID +Vertex v = graph.addVertex("name", "marko"); +String id = graph.elementId(v); +List<Vertex> result = graph + .<Vertex>aql("RETURN DOCUMENT(@id)", Map.of("id", id)) + .toList(); +``` +[//]: <> (@formatter:on) + +## Supported Features + +This library supports the following features: + +```text +> GraphFeatures +>-- Computer: false +>-- Persistence: true +>-- ConcurrentAccess: true +>-- Transactions: false +>-- ThreadedTransactions: false +>-- IoRead: true +>-- IoWrite: true +>-- OrderabilitySemantics: false +>-- ServiceCall: false +> VariableFeatures +>-- Variables: true +>-- LongArrayValues: true +>-- StringArrayValues: true +>-- BooleanValues: true +>-- ByteValues: false +>-- DoubleValues: true +>-- FloatValues: false +>-- IntegerValues: true +>-- LongValues: true +>-- MapValues: true +>-- MixedListValues: true +>-- SerializableValues: false +>-- StringValues: true +>-- UniformListValues: true +>-- BooleanArrayValues: true +>-- ByteArrayValues: false +>-- DoubleArrayValues: true +>-- FloatArrayValues: false +>-- IntegerArrayValues: true +> VertexFeatures +>-- DuplicateMultiProperties: false +>-- AddVertices: true +>-- RemoveVertices: true +>-- MultiProperties: false +>-- MetaProperties: true +>-- Upsert: false +>-- NullPropertyValues: true +>-- AddProperty: true +>-- RemoveProperty: true +>-- UserSuppliedIds: true +>-- NumericIds: false +>-- StringIds: true +>-- UuidIds: false +>-- CustomIds: false +>-- AnyIds: false +> VertexPropertyFeatures +>-- NullPropertyValues: true +>-- RemoveProperty: true +>-- UserSuppliedIds: false +>-- NumericIds: true +>-- StringIds: true +>-- UuidIds: true +>-- CustomIds: true +>-- AnyIds: false +>-- Properties: true +>-- LongArrayValues: true +>-- StringArrayValues: true +>-- BooleanValues: true +>-- ByteValues: false +>-- DoubleValues: true +>-- FloatValues: false +>-- IntegerValues: true +>-- LongValues: true +>-- MapValues: true +>-- MixedListValues: true +>-- SerializableValues: false +>-- StringValues: true +>-- UniformListValues: true +>-- BooleanArrayValues: true +>-- ByteArrayValues: false +>-- DoubleArrayValues: true +>-- FloatArrayValues: false +>-- IntegerArrayValues: true +> EdgeFeatures +>-- Upsert: false +>-- AddEdges: true +>-- RemoveEdges: true +>-- NullPropertyValues: true +>-- AddProperty: true +>-- RemoveProperty: true +>-- UserSuppliedIds: true +>-- NumericIds: false +>-- StringIds: true +>-- UuidIds: false +>-- CustomIds: false +>-- AnyIds: false +> EdgePropertyFeatures +>-- Properties: true +>-- LongArrayValues: true +>-- StringArrayValues: true +>-- BooleanValues: true +>-- ByteValues: false +>-- DoubleValues: true +>-- FloatValues: false +>-- IntegerValues: true +>-- LongValues: true +>-- MapValues: true +>-- MixedListValues: true +>-- SerializableValues: false +>-- StringValues: true +>-- UniformListValues: true +>-- BooleanArrayValues: true +>-- ByteArrayValues: false +>-- DoubleArrayValues: true +>-- FloatArrayValues: false +>-- IntegerArrayValues: true +``` + +## Current Limitations + +- This library implements the Online Transactional Processing Graph Systems (OLTP) API only. The Online Analytics Processing Graph Systems (OLAP) API is currently not implemented. +- Some generated queries might not be optimized, since the Process API is only partially implemented (see [Query Optimization](#query-optimization)). For optimal query performance is recommended to use [AQL queries](#aql-queries). + +## Logging + +The library uses the `slf4j` API for logging. To log requests and responses to and from the database, enable the `DEBUG` log level for the logger `com.arangodb.internal.net.Communication`. + +## Examples and Demo + +The [demo](https://github.com/arangodb/arangodb-tinkerpop-provider/tree/main/demo) project contains comprehensive usage examples of this library. + +For additional examples, check +the [Gremlin tutorial](https://tinkerpop.apache.org/docs/3.7.4/tutorials/getting-started/). + +## Acknowledgments + +This repository is based on and extends the original work of +the [arangodb-community/arangodb-tinkerpop-provider](https://github.com/arangodb-community/arangodb-tinkerpop-provider) +project. + +We gratefully acknowledge the efforts of [Horacio Hoyos Rodriguez](https://github.com/arcanefoam) and other contributors +of the community repository, see [AUTHORS.md](https://github.com/arangodb/arangodb-tinkerpop-provider/blob/main/AUTHORS.md). diff --git a/site/content/arangodb/3.13/features/list.md b/site/content/arangodb/3.13/features/list.md index ee4006160b..93f6002d42 100644 --- a/site/content/arangodb/3.13/features/list.md +++ b/site/content/arangodb/3.13/features/list.md @@ -145,11 +145,9 @@ aliases: threshold is reached. {{% /comment %}} -{{% comment %}} Experimental feature - [**Vector search**](../index-and-search/indexing/working-with-indexes/vector-indexes.md): Find items with similar properties by comparing vector embeddings generated by machine learning models. -{{% /comment %}} - [**Search highlighting**](../index-and-search/arangosearch/search-highlighting.md): Get the substring positions of matched terms, phrases, or _n_-grams. diff --git a/site/content/arangodb/3.13/index-and-search/indexing/which-index-to-use-when.md b/site/content/arangodb/3.13/index-and-search/indexing/which-index-to-use-when.md index ec36b3d532..fcedb87747 100644 --- a/site/content/arangodb/3.13/index-and-search/indexing/which-index-to-use-when.md +++ b/site/content/arangodb/3.13/index-and-search/indexing/which-index-to-use-when.md @@ -175,11 +175,11 @@ db.collection.ensureIndex({ type: "persistent", fields: [ "attributeName1", "att When not explicitly set, the `sparse` attribute defaults to `false` for new indexes. Indexes other than persistent do not support the `sparse` option. -As sparse indexes may exclude some documents from the collection, they cannot be used for -all types of queries. Sparse hash indexes cannot be used to find documents for which at -least one of the indexed attributes has a value of `null`. For example, the following AQL -query cannot use a sparse index, even if one was created on attribute `attr`: -<!-- TODO Remove above statement? --> +As sparse indexes may exclude some documents from the collection, they cannot +be used for all types of queries. For example, sparse persistent indexes cannot +be used to find documents for which at least one of the indexed attributes +is missing or has a value of `null`. For example, the following AQL +query cannot use a sparse index over the attribute `attr`: ```aql FOR doc In collection @@ -189,15 +189,25 @@ FOR doc In collection If the lookup value is non-constant, a sparse index may or may not be used, depending on the other types of conditions in the query. If the optimizer can safely determine that -the lookup value cannot be `null`, a sparse index may be used. When uncertain, the optimizer -does not make use of a sparse index in a query in order to produce correct results. +the lookup value cannot be `null`, a sparse index may be used. + +```aql +FOR doc In collection + LET random = RAND() * 5 + FILTER doc.attr < random // Includes numbers < random but also true, false, and null! + FILTER doc.attr != null // Explicitly exclude null to make a sparse index eligible + RETURN doc +``` + +When uncertain, the optimizer does not make use of a sparse index in a query in +order to produce correct results. For example, the following queries cannot use a sparse index on `attr` because the optimizer does not know beforehand whether the values which are compared to `doc.attr` include `null`: ```aql FOR doc In collection - FILTER doc.attr == SOME_FUNCTION(...) + FILTER doc.attr == SOME_FUNCTION(...) RETURN doc ``` diff --git a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md index 3ebbb3f8c9..174e095f16 100644 --- a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md +++ b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md @@ -14,27 +14,24 @@ data numerically and can be generated with machine learning models. You can then quickly find a given number of semantically similar documents by searching for close neighbors in a high-dimensional vector space. -The vector index implementation uses the [Faiss library](https://github.com/facebookresearch/faiss/) -to support L2 and cosine metrics. The index used is IndexIVFFlat, the quantizer -for L2 is IndexFlatL2, and the cosine uses IndexFlatIP, where vectors are -normalized before insertion and search. +The vector index implementation uses the [Faiss library](https://github.com/facebookresearch/faiss/). ## How to use vector indexes {{< warning >}} -The vector index is an experimental feature that you need to enable for the -ArangoDB server with the `--experimental-vector-index` startup option. +You need to enable the vector index feature for the +ArangoDB server with the `--vector-index` startup option. Once enabled for a deployment, it cannot be disabled anymore because it permanently changes how the data is managed by the RocksDB storage engine (it adds an additional column family). -To restore a dump that contains vector indexes, the `--experimental-vector-index` +To restore a dump that contains vector indexes, the `--vector-index` startup option needs to be enabled on the deployment you want to restore to. {{< /warning >}} -1. Enable the experimental vector index feature. -2. Calculate vector embeddings using [ArangoDB's GraphML](../../../../../gen-ai/graphml/_index.md) - capabilities (available in ArangoGraph) or using external tools. +1. Enable the vector index feature. +2. Calculate vector embeddings using [Arango's GraphML](../../../../../gen-ai/graphml/_index.md) + capabilities (available in the AI Data Platform) or using external tools. Store each vector as an attribute in the respective document. 3. Create a vector index over this attribute. You need to choose which similarity metric you want to use later for querying. See @@ -65,17 +62,26 @@ centroids and the quality of vector search thus degrades. - **fields** (array of strings): A list with a single attribute path to specify where the vector embedding is stored in each document. The vector data needs to be populated before creating the index. - + If you want to index another vector embedding attribute, you need to create a separate vector index. +- **sparse** (boolean): Whether to create a sparse index that excludes documents + with the attribute for indexing missing or set to `null`. This attribute is + defined by `fields`. Default: `false`. - **parallelism** (number): - The number of threads to use for indexing. The default is `2`. + The number of threads to use for indexing. Default: `2`. - **inBackground** (boolean): Set this option to `true` to keep the collection/shards available for write operations by not using an exclusive write lock for the duration - of the index creation. The default is `false`. + of the index creation. Default: `false`. - **params**: The parameters as used by the Faiss library. - - **metric** (string): Whether to use `cosine` or `l2` (Euclidean) distance calculation. + - **metric** (string): The measure for calculating the vector similarity: + - `"cosine"`: Angular similarity. Vectors are automatically + normalized before insertion and search. + - `"innerProduct"` (introduced in v3.12.6): + Similarity in terms of angle and magnitude. + Vectors are not normalized, making it faster than `cosine`. + - `"l2":` Euclidean distance. - **dimension** (number): The vector dimension. The attribute to index needs to have this many elements in the array that stores the vector embedding. - **nLists** (number): The number of Voronoi cells to partition the vector space @@ -89,11 +95,11 @@ centroids and the quality of vector search thus degrades. number of documents. - **defaultNProbe** (number, _optional_): How many neighboring centroids to consider for the search results by default. The larger the number, the slower - the search but the better the search results. The default is `1`. You should + the search but the better the search results. Default: `1`. You should generally use a higher value here or per query via the `nProbe` option of the vector similarity functions. - **trainingIterations** (number, _optional_): The number of iterations in the - training process. The default is `25`. Smaller values lead to a faster index + training process. Default: `25`. Smaller values lead to a faster index creation but may yield worse search results. - **factory** (string, _optional_): You can specify an index factory string that is forwarded to the underlying Faiss library, allowing you to combine different diff --git a/site/content/arangodb/3.13/release-notes/version-3.12/api-changes-in-3-12.md b/site/content/arangodb/3.13/release-notes/version-3.12/api-changes-in-3-12.md index 67e72e191d..989fc09923 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.12/api-changes-in-3-12.md +++ b/site/content/arangodb/3.13/release-notes/version-3.12/api-changes-in-3-12.md @@ -309,6 +309,17 @@ is for debugging purposes. See [HTTP interface for server logs](../../develop/http-api/monitoring/logs.md#get-recent-api-calls) for details. +#### AQL query recording + +<small>Introduced in: v3.12.6</small> + +A new `/_admin/server/aql-queries` endpoint has been added to let you retrieve a +list of the most recent AQL queries with a timestamp and information about the +submitted queries. This feature is for debugging purposes. + +See [HTTP interface for server logs](../../develop/http-api/monitoring/logs.md#get-recent-aql-queries) +for details. + #### Access tokens <small>Introduced in: v3.12.5</small> @@ -452,11 +463,11 @@ add the `withHidden=true` query parameter to the call of the endpoint. curl "http://localhost:8529/_api/index?collection=myCollection&withHidden=true" ``` -#### Vector indexes (experimental) +#### Vector indexes <small>Introduced in: v3.12.4</small> -A new `vector` index type has been added as an experimental feature. +A new `vector` index type has been added. See [HTTP interface for vector indexes](../../develop/http-api/indexes/vector.md) for details. diff --git a/site/content/arangodb/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md b/site/content/arangodb/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md index 696a7d8fc2..c04a497483 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md +++ b/site/content/arangodb/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md @@ -320,6 +320,15 @@ per-query limit with the [`memoryLimit` query option](../../aql/how-to-invoke-aq or its default using the `--query.memory-limit` startup option. You can adjust the global limit with the `--query.global-memory-limit` startup option. +--- + +<small>Introduced in: v3.12.6</small> + +The memory accounting for AQL queries has been extended to track the memory usage +of the `MERGE()` function, `RETURN DISTINCT`, and certain uses of the `COLLECT` +operation. More queries compared to previous 3.12 versions may get killed due to +exceeding the memory limit as a result of the improved tracking. + ## Adjustable Stream Transaction size [Stream Transactions](../../develop/transactions/stream-transactions.md) may @@ -900,6 +909,76 @@ the following steps. 4. Restore the dump to the new deployment. You can directly move from any 3.11 or 3.12 version to 3.12.4 (or later) this way. +## RocksDB upgrade + +<small>Introduced in: v3.12.6</small> + +The RocksDB library has been upgraded from version 7.2.0 to 9.5.0. + +As part of this storage engine upgrade, the default values of the following +RocksDB-related startup options have been changed: + +- `--rocksdb.pending-compactions-slowdown-trigger` has been changed from 128 KiB to 1 GiB. +- `--rocksdb.pending-compactions-stop-trigger` has been changed from 16 GiB to 32 GiB. +- `--rocksdb.partition-files-for-documents` has been changed from false to true. +- `--rocksdb.throttle-slow-down-writes-trigger` has been obsoleted. + +## Optional elevation for GeoJSON Points + +<small>Introduced in: v3.11.14-2, v3.12.6</small> + +GeoJSON Point may now have three coordinates: `[longitude, latitude, elevation]`. +However, ArangoDB does not take any elevation into account in geo-spatial +calculations. + +Points with an elevation do no longer fail the validation in the `GEO_POLYGON()` +and `GEO_MULTIPOLYGON()` functions. Moreover, GeoJSON with three coordinates is +now indexed by geo indexes and thus also matched by geo-spatial queries, which +means you may find more results than before. + +Also see [Geo-spatial functions in AQL](../../aql/functions/geo.md). + +## Additional validation by AQL GeoJSON functions + +<small>Introduced in: v3.12.6</small> + +The following AQL functions to construct GeoJSON objects now validate that the +provided input uses either two or three coordinates for every point +(`[longitude, latitude]` or `[longitude, latitude, elevation]`): + +- `GEO_MULTIPOINT()` +- `GEO_LINESTRING()` +- `GEO_MULTILINESTRING()` + +For example, the following function calls now fail to validate and raise a +warning because of invalid points in the data: + +```aql +GEO_MULTIPOINT([[1], [2,3]]) +GEO_LINESTRING([[1,2], []]) +GEO_MULTILINESTRING([[[1,2,3,4],[5,6]],[[7,8],[9,0]]]) +``` + +## Cosine similarity fix for vector indexes + +<small>Introduced in: v3.12.6</small> + +A normalization issue has been addressed for the experimental vector index type. +It was possible for the cosine similarity value returned by `APPROX_NEAR_COSINE()` +to be outside the expected range of `[-1, 1]`. + +It is recommended to recreate all vector indexes that use the `cosine` metric +after upgrading to v3.12.6 or later. + +## Added error reporting for invalid requests + +<small>Introduced in: v3.12.6</small> + +When _arangod_ parses HTTP requests and encounters an unexpected `Content-Length` +header or an invalid URL, it now sends a response with an error object instead +of closing the connection, e.g. that the URL is corrupt with an HTTP status code +of 400. + ## HTTP RESTful API ### JavaScript-based traversal using `/_api/traversal` removed @@ -1075,6 +1154,16 @@ background compactions. The changed default ensures this cleanup to happen more frequently. Compactions can potentially lead to spikes in CPU, memory, and I/O usage. You may now observe this daily instead of monthly. +### RocksDB transaction lock timeout controlled internally + +<small>Deprecated in: v3.12.6</small> + +The `--rocksdb.transaction-lock-timeout` startup option has been deprecated. +It was supposed to let you configure the wait timeout in milliseconds for +locking a document in a transaction. However, the lock timeout is actually set +to differnet values internally, depending on what is a meaningful timeout for +a given case. + ## Client tools ### arangodump diff --git a/site/content/arangodb/3.13/release-notes/version-3.12/whats-new-in-3-12.md b/site/content/arangodb/3.13/release-notes/version-3.12/whats-new-in-3-12.md index 9dc4aee978..b5fdc5616f 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.12/whats-new-in-3-12.md +++ b/site/content/arangodb/3.13/release-notes/version-3.12/whats-new-in-3-12.md @@ -180,6 +180,24 @@ The following new metrics have been added for memory observability: | `arangodb_transactions_internal_memory_usage` | Total memory usage of internal transactions. | | `arangodb_transactions_rest_memory_usage` | Total memory usage of user transactions (excluding top-level AQL queries). | +--- + +<small>Introduced in: v3.12.6</small> + +The memory accounting for AQL queries has been extended to track the memory usage +of the following: + +- Grouping with the `COLLECT` operation if the `sorted` method is used. +- Aggregating with `COLLECT ... AGGREGATE`. +- Deduplicating results with `RETURN DISTINCT`. +- Using the `MERGE()` function to combine objects. +- Internal buffers for execution blocks, late materialization, building results, + and distributing AQL queries in cluster deployments. +- Internal buffers for decay, distance, and replace functions. +- Internal buffers used by the query parser and optimizer. + +It is expected that the reported memory consumption is now higher. + ## Web interface ### Shard rebalancing @@ -1293,6 +1311,68 @@ Indexes used: 10 idx_1836452431376941056 persistent coll ``` +### Deduction of node collection for graph queries + +<small>Introduced in: v3.12.6</small> + +AQL graph traversals and path searches using anonymous graphs / collection sets +require that you declare all involved node collections upfront for cluster +deployments. That is, you need to use the `WITH` operation to list the collections +edges may point to, as well as the collection of the start node if not declared +otherwise. This also applies to single servers if the `--query.require-with` +startup option is enabled for parity between both deployment modes. + +For example, assume you have two node collections, `person` and `movie`, and +edges pointing from one to the other stored in an `acts_in` edge collection. +If you want to run a traversal query starting from a person that you specify +with its document ID, you need to declare both node collections at the +beginning of the query: + +```aql +WITH person, movie +FOR v IN 0..1 OUTBOUND "person/1544" acts_in + LIMIT 4 + RETURN v.label +``` + +From v3.12.6 onward, the node collections can be automatically inferred if there +is a named graph using the same edge collection(s). + +For example, assume there is a named graph that includes an edge definition for +the `acts_in` edge collection, with `person` as the _from_ collection and `movie` +as the _to_ collection. If you now specify `acts_in` as an edge collection in +an anonymous graph query, all named graphs are checked for this edge collection, +and if there is a matching edge definition, its node collections are automatically +added as data sources to the query. You no longer have to manually declare the +`person` and `movie` collections: + +```aql +FOR v IN 0..1 OUTBOUND "person/1544" acts_in + LIMIT 4 + RETURN v.label +``` + +You can still declare collections manually, in which case they are added as +data sources in addition to automatically deduced collections. + +### Optional elevation for GeoJSON Points + +<small>Introduced in: v3.11.14-2, v3.12.6</small> + +The `GEO_POINT()` function now accepts an optional third argument to create a +GeoJSON Point with three coordinates: `[longitude, latitude, elevation]`. + +GeoJSON Points may now have three coordinates in general. +However, ArangoDB does not take any elevation into account in geo-spatial +calculations. + +Points with an elevation do no longer fail the validation in the `GEO_POLYGON()` +and `GEO_MULTIPOLYGON()` functions. Moreover, GeoJSON with three coordinates is +now indexed by geo indexes and thus also matched by geo-spatial queries, which +means you may find more results than before. + +Also see [Geo-spatial functions in AQL](../../aql/functions/geo.md). + ## Indexing ### Multi-dimensional indexes @@ -1405,18 +1485,18 @@ Note that it is still forbidden to use `_id` as a top-level attribute or sub-attribute in `fields` of persistent indexes. On the other hand, inverted indexes have been allowing to index and store the `_id` system attribute. -### Vector indexes (experimental) +### Vector indexes <small>Introduced in: v3.12.4</small> -A new `vector` index type has been added as an experimental feature that enables +A new `vector` index type has been added that enables you to find items with similar properties by comparing vector embeddings, which are numerical representations generated by machine learning models. -To try out this feature, start an ArangoDB server (`arangod`) with the -`--experimental-vector-index` startup option. You need to generate -vector embeddings before creating a vector index. For more information about -the vector index type including the available settings, see the +To use this feature, start an ArangoDB server (`arangod`) with the `--vector-index` +startup option (or `--experimental-vector-index` in v3.12.4 and v3.12.5). +You need to generate vector embeddings before creating a vector index. For more +information about the vector index type including the available settings, see the [Vector indexes](../../index-and-search/indexing/working-with-indexes/vector-indexes.md) documentation. @@ -1443,6 +1523,34 @@ utilizing vector indexes in queries. Furthermore, a new error code `ERROR_QUERY_VECTOR_SEARCH_NOT_APPLIED` (1554) has been added. +--- + +<small>Introduced in: v3.12.6</small> + +Vector indexes now support filtering. You can add `FILTER` operations between +`FOR` and `SORT` that are then applied during the lookup in the vector index. +Note that e.g. `LIMIT 5` does not ensure that you get 5 results by searching +as many neighboring Voronoi cells as necessary, but it rather considers only as +many as configured via the `nProbes` parameter. Example: + +```aql +FOR doc IN coll + FILTER doc.val > 3 + SORT APPROX_NEAR_COSINE(doc.vector, @q) DESC + LIMIT 5 + RETURN doc +``` + +Vector indexes can now be sparse to exclude documents with the embedding attribute +for indexing missing or set to `null`. + +Another metric has been added. The `innerProduct` is a vector similarity measure +calculated using the dot product of two vectors without normalizing them. +Therefore, it compares not only the angle but also the magnitudes. +The accompanying AQL function is the following: + +- `APPROX_NEAR_INNER_PRODUCT()` + ## Server options ### Effective and available startup options @@ -2211,6 +2319,40 @@ DB-Servers in a cluster has been added: |:------|:------------| | `arangodb_vocbase_transactions_lost_subordinates_total` | Counts the number of lost subordinate transactions on database servers. | +### RocksDB upgrade + +<small>Introduced in: v3.12.6</small> + +The RocksDB library has been upgraded from version 7.2.0 to 9.5.0. + +As a result, you may see performance improvements while using slightly less +resources especially for mixed workloads. + +The following new RocksDB functionality is exposed in ArangoDB: + +- Different types of block caches, LRU and HyperClockCache (HCC), selectable via + the new `--rocksdb.block-cache-type` startup option +- A `--rocksdb.block-cache-estimated-entry-charge` startup option to configure the HCC. +- RocksDB table format version 6 (not downwards-compatible to older versions of RocksDB). +- RocksDB blob caching (if blobs are enabled for the documents column family), + which you can enable via `--rocksdb.enable-blob-cache`. +- Using blob files only from a certain level onwards (if blobs are enabled for + the documents column family), which you can enable via + `--rocksdb.blob-file-starting-level`. +- Blob cache prepopulation, which you can enable via `--rocksdb.prepopulate-blob-cache`. +- An option to generate Bloom/Ribbon filters that minimize memory internal + fragmentation, which you can enable with `--rocksdb.optimize-filters-for-memory`. + +The following RocksDB metrics have been added: + +| Label | Description | +|:------|:------------| +| `rocksdb_block_cache_charge_per_entry` | Average size of entries in RocksDB block cache. +| `rocksdb_block_cache_entries` | Number of entries in the RocksDB block cache. +| `rocksdb_live_blob_file_garbage_size` | Size of garbage in live RocksDB .blob files. +| `rocksdb_live_blob_file_size` | Size of live RocksDB .blob files. +| `rocksdb_num_blob_files` | Number of live RocksDB .blob files. + ### API call recording <small>Introduced in: v3.12.5</small> @@ -2222,9 +2364,9 @@ is for debugging purposes. You can configure the memory limit for this feature with the following startup option: - `--server.api-recording-memory-limit`: - Size limit for the list of API call records (default: `25600000`). + Size limit for the list of API call records (default: `26214400`). -This means that 25 MB of memory is reserved by default. +This means that 25 MiB of memory is reserved by default. API call recording is enabled by default but you can disable it via the new `--server.api-call-recording` startup option. @@ -2243,6 +2385,41 @@ impact of this feature: See [HTTP interface for server logs](../../develop/http-api/monitoring/logs.md#get-recent-api-calls) for details. +### AQL query recording + +<small>Introduced in: v3.12.6</small> + +A new `/_admin/server/aql-queries` endpoint has been added to let you retrieve a +list of the most recent AQL queries with a timestamp and information about the +submitted query. This feature is for debugging purposes. + +You can configure the memory limit for this feature with the following startup option: + +- `--server.aql-recording-memory-limit`: + Size limit for the list of AQL query records (default: `26214400` bytes) + +This means that 25 MiB of memory is reserved by default. + +AQL query recording is enabled by default but you can disable it via the new +`--server.aql-query-recording` startup option. + +This and the `/_admin/server/api-calls` endpoint are referred to as the +recording API, which exposes the recorded API calls and AQL queries. It is +enabled by default. Users with administrative access to the `_system` database +can call the endpoints. You can further restrict the access to only the +superuser by setting `--log.recording-api-enabled` to `jwt`, or disable the +endpoints altogether by setting the option to `false`. + +A metric has been added for the time spent on AQL query recording to track the +impact of this feature: + +| Label | Description | +|:------|:------------| +| `arangodb_aql_recording_call_time` | Execution time histogram for AQL recording calls in nanoseconds. | + +See [HTTP interface for server logs](../../develop/http-api/monitoring/logs.md#get-recent-aql-queries) +for details. + ### Access tokens <small>Introduced in: v3.12.5</small> @@ -2257,6 +2434,24 @@ dates, and individually revoke tokens. See the [HTTP API](../../develop/http-api/authentication.md#access-tokens) documentation. +### `@PID@` and `@TEMP_BASE_DIR@` placeholders for startup options + +<small>Introduced in: v3.12.6</small> + +You can use special placeholders in startup options like `--log.output` that get +substituted as follows: + +- `@PID@`: Replaced at runtime with the actual process ID. This has already + been supported using a literal occurrence of `$PID`. +- `@TEMP_BASE_DIR@`: Replaced at runtime with the current temporary directory, + e.g. `/tmp/arangodb_i37Xxh` (automatically created on startup with a randomly + generated suffix). + +Keep in mind that `@NAME@` is also the syntax for using the value of an +environment variable `NAME`. If there is an environment variable called `PID` or +`TEMP_BASE_DIR`, then `@PID@` or `@TEMP_BASE_DIR@` is substituted with the +value of the respective environment variable. + ## Client tools ### Protocol aliases for endpoints diff --git a/site/content/data-platform/graph-visualizer.md b/site/content/data-platform/graph-visualizer.md index e429e687fc..5e8b7e605a 100644 --- a/site/content/data-platform/graph-visualizer.md +++ b/site/content/data-platform/graph-visualizer.md @@ -6,35 +6,36 @@ description: >- Visually explore and interact with your ArangoDB graphs through an intuitive interface --- {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The Arango Data Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} The **Graph Visualizer** is a browser-based tool integrated into the web interface -of the ArangoDB Platform. It lets you explore the connections of your named graphs +of the Arango Data Platform. It lets you explore the connections of your named graphs to visually understand the structure as well as to inspect and edit the attributes of individual nodes and edges. It also offers query capabilities and you can create new nodes (vertices) and edges (relations). ![A screenshot of the Graph Visualizer user interface showing some persons and movies as circles with arrows indicting who acted in or directed a movie](../images/graph-visualizer.png) -{{< info >}} -Graph creation is **not** performed within the Graph Visualizer. Graphs must be -created in the **Management** section under **Graphs** of the second-level -navigation in the [web interface](../arangodb/3.12/components/web-interface/graphs.md). Once -created, you can select a graph from the list for exploration and visualization. -{{< /info >}} - You can use the Graph Visualizer to do the following: -- Filter and view specific nodes to focus on a subset of your graph. +- Select and view specific nodes including with custom queries to focus on a + subset of your graph. - Dynamically expand nodes to show more of their neighborhood to see how entities are connected. - Inspect the properties of nodes and edges. - Modify existing or create new nodes and edges. -- Rearrange nodes automatically or manually for better visual clarity. -- Use zoom and pan to explore large graphs more easily. +- Rearrange nodes automatically or manually as well as assign colors and icons + for better visual clarity. + +{{< info >}} +Graph creation is **not** performed within the Graph Visualizer. Graphs must be +created in the **Management** section under **Graphs** of the second-level +navigation in the [web interface](../arangodb/3.12/components/web-interface/graphs.md). Once +created, you can select a graph from the list for exploration and visualization. +{{< /info >}} ## View a graph @@ -49,35 +50,41 @@ supported by the Graph Visualizer. ### Select and load a graph -1. In the ArangoDB Platform web interface, select the database your named graph - is stored in. +1. In the Arango Data Platform web interface, select the database your + named graph is stored in. 2. Click **Graphs** in the main navigation. 3. Select a graph from the list. 4. The viewport of the Graph Visualizer opens for exploring the graph. -The main area of the viewport may initially be empty in the following cases: - -- You opened a graph for the first time and nothing is selected for displaying yet -- You used the **Clear Canvas** option -<!-- TODO: Doesn't it preserve the last state? Can it be lost? -- Reopening the Graph Visualizer after a previous session ---> +When you open a graph for the first time or previously used the **Clear graph** +option, the Graph Visualizer automatically populates the canvas with an initial +neighborhood. You can right-click the canvas and choose **Clear Canvas** to start +with an empty canvas. You can [Add nodes to the canvas manually](#add-nodes-to-the-canvas-manually) as well as [Add nodes and edges using a query](#add-nodes-and-edges-using-a-query). -Afterwards, you can also [Add nodes and edges using a query based on a selection](#add-nodes-and-edges-using-a-query-based-on-a-selection) +Afterwards, you can also [Add nodes and edges using a query based on a selection](#add-nodes-and-edges-using-a-query-based-on-a-selection-canvas-actions) as well as [Remove nodes from the canvas](#remove-nodes-from-the-canvas). +For each graph, the Graph Visualizer remembers the nodes and edges that are on +the canvas across sessions using the local browser storage. It also remembers +the theme settings including unsaved visual customizations, but not the specific +spatial arrangement of the nodes. + ### The viewport The Graph Visualizer interface is comprised of the following components: +- **Top bar**: The name and type of the graph, as well as a button to get + back to the list of named graphs. - **Canvas**: The main area of the viewport. - **Search & add nodes to canvas** and **Queries**: A widget in the top left corner that opens dialogs for selecting nodes and edges to display (manually or using queries). -- [**Customization**](#visual-customization): - A sidebar on the right-hand side to adjust the styling. +- [**Legend**](#legend-and-visual-customization): + A panel on the right-hand side that shows you what colors and icons are used + for nodes and edges, as well as to adjust the styling, and to select all + items of a type. - [**Layout and Navigation**](#layouts-and-navigation-tools): A minimap and multiple tools for the canvas in the bottom right corner. @@ -88,25 +95,28 @@ displayed. 1. Click **Search & add nodes to canvas**. 2. Select a **Node type**. This is the name of the collection that stores the - node you want to select. -3. Enter a value into the **Search** field. This searches common attributes - as indicated by the placeholder text and finds up to 10 nodes that contain - this text in one of these attributes (case-insensitive). + nodes you want to select. +3. Enter a value into the **Search** field. This searches for document IDs +<!-- TODO: Will this come back? +This searches common attributes as indicated by the placeholder text and finds +up to 10 nodes that contain this text in one of these attributes +-->and finds up to 10 nodes that contain this text (case-insensitive). 4. Select one or more nodes from the list on the left-hand side. -5. Optional: You can check the attributes of the selected nodes on the - right-hand side. Use the buttons at the bottom to switch between nodes. -6. Click **Add _n_ vertices**. +5. Optional: You can inspect the attributes of the selected nodes on the + right-hand side. Use the buttons at the bottom + ({{< icon "caret-left" >}}, {{< icon "caret-right" >}}) to switch between nodes. +6. Click **Add # nodes**. 7. To see the neighbor nodes and the edges that connect them, right-click a node, - click **Expand (_n_)** and then **All (_n_)**. + click **Expand (#)** and then **All (#)**. ![A screenshot of the dialog for adding nodes with two persons selected](../images/graph-visualizer-add-nodes.png) ### Add nodes and edges using a query -You can run an AQL query to add a nodes, edges, or paths of the graph to the canvas. +You can run an AQL query to add nodes, edges, or paths of the graph to the canvas. 1. Click **Queries** of the top-left widget. -2. Click **New query**. +2. On the **Queries** tab, click **New query**. 3. Enter an AQL query that returns nodes, edges, or paths (e.g. a graph traversal query), for example: ```aql @@ -126,25 +136,40 @@ You can run an AQL query to add a nodes, edges, or paths of the graph to the can You can save queries for future use: 1. Click **Queries** of the top-left widget. -2. Click **New query**. +2. On the **Queries** tab, click **New query**. 3. Enter or edit the AQL query you want to save. You can optionally use - bind variables to parameterize saved queries. + bind variables (like `@var`, `@@coll`) to parameterize saved queries. 4. Enter a name and optionally a description, then click **Save**. 5. To run a saved query, click **Queries** of the top-left widget. 6. Select a query from the list. The following actions are available for each query: + - Copy ({{< icon "duplicate" >}}) the query string to the clipboard. - **Bind Variables** to set for the query. - - **Run** the query. - - **Copy** the query string to the clipboard. - - **Delete** a no longer needed query. + - Edit ({{< icon "edit-square" >}}) the query. + - Delete ({{< icon "delete" >}}) a no longer needed query. + - Run ({{< icon "run" >}}) the query. {{< /tip >}} ![A screenshot of the dialog with a query expanded and a bind variable filled in](../images/graph-visualizer-queries.png) -### Add nodes and edges using a query based on a selection +### Add nodes and edges using a query based on a selection (Canvas Actions) -You can select nodes and edges on the canvas and then use a **Canvas Action**. +**Canvas Actions** are stored AQL queries that work with your current selection +of nodes and edges on the canvas. Think of them as tools that let you discover +related data for what you have selected. Unlike regular queries that work on the +entire graph, Canvas Actions use special bind variables (`@nodes` and `@edges`) +in their AQL query to reference your selected items, making them context-aware +and interactive. + +You can select nodes, edges, or both on the canvas and then use a **Canvas Action**. This runs an AQL query to add nodes, edges, or paths of the graph to the canvas. -The query has access to the current selection via special bind variables. +For example, you could select a movie and use a Canvas Action that adds all +other movies with the same runtime as the one you selected. Or you could select +two persons and use a Canvas Action to add all movies and persons that are on +the shortest paths between the selected persons. + +The query of a Canvas Action has access to the current selection via the +`@nodes` and `@edges` bind variables. Both are arrays with the document IDs of +the currently selected nodes respectively edges. 1. Create a selection. You have different options: - Click a node or edge to select only this element. @@ -154,9 +179,12 @@ The query has access to the current selection via special bind variables. 3. Depending on the query, additional nodes or edges with their nodes are added to the canvas. 4. To create a custom Canvas Action query, click **Queries** of the top-left widget. -5. Click **Canvas Actions**, then **New action**. +5. Go to the **Canvas actions** tab and click **New action**. 6. Enter an AQL query that makes use of the special bind variable `@nodes`, - `@edges`, or both and returns nodes, edges, or paths. Examples: + `@edges`, or both and returns nodes, edges, or paths. For example, iterate + over the document IDs of the selected nodes, perform a graph traversal for + each node, filter and limit the results, and add all of the items on the path + to the canvas: ```aql FOR selectedNode IN @nodes FOR v, e, p IN 1..3 ANY selectedNode GRAPH "myGraph" @@ -168,6 +196,25 @@ The query has access to the current selection via special bind variables. ![A screenshot of the context menu for a node showing the available Canvas Actions](../images/graph-visualizer-menu-canvas-action.png) +### Explore connections + +You can explore the connections between entities of your graph in the following +ways: + +- **Expand a node**: Right-click a node, then click **Expand (#)** and **All (#)**. + This adds the direct neighbor nodes as well as the connecting edges to the canvas. + +- **Shortest Path**: Select exactly two nodes, right-click one of them, and click + **Shortest Path**. If there is a path between both nodes, the nodes and edges + of one shortest path between them are added to the canvas. + +- [**Queries**](#add-nodes-and-edges-using-a-query) and + [**Canvas Actions**](#add-nodes-and-edges-using-a-query-based-on-a-selection-canvas-actions): + You can run AQL graph queries (also based on the selection) to add connected + nodes to the canvas. For example, you can use traversals to expand multiple + levels of a node at once, or use path searches like `ALL_SHORTEST_PATHS`. + This can be selective if you use `FILTER` operations. + ### Remove nodes from the canvas You can dismiss nodes to show less nodes and edges on the canvas to focus on the @@ -180,37 +227,52 @@ dismissed nodes and their edges back to the canvas later on. - Right-click a single node to select only this node. - Hold the {{< kbd "Shift" >}} or {{< kbd "Ctrl" >}} key and click multiple nodes or drag the mouse to perform a box selection, then right-click one of the selected nodes. -2. In the context menu, click **Dismiss _n_ nodes** to hide the selected nodes, +2. In the context menu, click **Dismiss # nodes** to hide the selected nodes, or click **Dismiss other nodes** to only keep the selection. 3. The canvas updates to only display the remaining nodes, with no dangling edges. ### View node and edge properties -You can inspect the document attributes of node or edge as follows: +You can inspect (and edit) the document attributes of a node or edge via a +properties dialog that you can open as follows: -- Double-click a node or edge to open a dialog with the properties. -- Right-click a node to open the context menu and click **View Node** to open - the dialog with the properties. +- Double-click a node or edge. +- Right-click a node to open the context menu and click **View node**. +- Right-click an edge to open the context menu and click **View edge**. ![A screenshot of the properties dialog with the keys and values of a node](../images/graph-visualizer-node-properties.png) ### Layouts and navigation tools -These features allow you to clear, zoom, and pan the canvas, as well as rearrange -the displayed graph data for a better spatial understanding of node clusters, -hierarchies, and relationship flows. +These features located in the bottom right of the viewport allow you to clear, +zoom, and pan the canvas, as well as rearrange the displayed graph data for a +better spatial understanding of node clusters, hierarchies, and relationship +flows. You can also download an image of what is displayed. -- **Minimap**: A small overview to easier navigate the canvas. +- **Minimap**: A small overview for easier canvas navigation. + You can optionally hide it ({{< icon "caret-right" >}}). -- **Zoom Controls**: Zoom in/out or reset the zoom to 100%. +- **Clear graph**: Remove all nodes and edges from the canvas ({{< icon "clear" >}}). + This only affects what is displayed and does not delete the underlying documents. -- **Fit to Screen**: Resize and center the canvas so you can see everything. +- **Fit to Screen**: Resize and center the canvas so you can see everything + ({{< icon "fit" >}}). -- **Re-run Layout**: Automatically rearrange the nodes using the selected algorithm. +- **Zoom Controls**: Zoom in ({{< icon "zoom-in" >}}), zoom out + ({{< icon "zoom-out" >}}), or reset the zoom to 100%. + +- **Download screenshot**: Save a PNG image of what is currently displayed on + the canvas ({{< icon "download" >}}). + +- **Re-run Layout**: Automatically rearrange the nodes using the selected + algorithm ({{< icon "rerun" >}}). - **Layout Algorithms**: Choose between different ways of arranging the nodes. Which algorithm to use depends on the situation and the graph topology. + You can also move nodes around manually by clicking and dragging them on the + canvas. + ## Edit graph data While the Graph Visualizer is primarily designed for exploring graph data, you @@ -223,31 +285,38 @@ You need to have write access for the database and the collections for this. You can add nodes to the graph's document collections directly from the canvas. This allows you to create additional entities to the graph. -1. In the **Graphs** section of the ArangoDB web interface, select your graph. -2. Right-click on the canvas and choose **Create Node**. +1. In the **Graphs** section of the Arango Data Platform web interface, + select your graph. +2. Right-click the canvas, **Create node**, and choose a node collection to + store the new node in. 3. A dialog opens with the following options: - - Select the target collection (**Node Type**). + - Select the vertex collection (**Node Type**). - Optionally specify a unique identifier (**Node ID**). + - Optionally provide a JSON body to use as the document content. 4. Click **Create** to add the node to the canvas and database. -### Create New Edges +### Create new edges You can add edges to the graph's edge collections directly from the canvas. This allows you to create additional connections between nodes. -1. In the **Graphs** section of the ArangoDB web interface, select your graph. -2. Right-click on the canvas and choose **Create Edge**. -3. In the dialog: - - Select the target collection (**Edge Type**, which corresponds to an edge collection). - - Set the `_from` and `_to` fields by selecting the source and target nodes. +1. In the **Graphs** section of the Arango Data Platform web interface, + select your graph. +2. Right-click the canvas, **Create edge**, and choose an edge collection to + store the new edge in. +3. A dialog opens with the following options: + - Select the edge collection (**Edge Type**). + - Set the **From** and **To** fields by selecting the source and target nodes. - Optionally specify a unique identifier (**Edge ID**). + - Optionally provide a JSON body to use as the document content. 4. Click **Create** to add the edge to the canvas and database. -{{< info >}} -If you select two nodes before right-clicking to open the edge creation -dialog, the `_from` and `_to` fields are automatically pre-filled. -You may need to swap the IDs as the order is not based on your selection sequence. -{{< /info >}} +{{< tip >}} +If you select two nodes before right-clicking the canvas and opening the edge +creation dialog, the **From** and **To** fields are automatically pre-filled. +You may need to swap the IDs ({{< icon "swap" >}}) as the order is not based on +your selection sequence. +{{< /tip >}} ![A screenshot of the dialog for creating an edge with the From and To fields filled in](../images/graph-visualizer-create-edge.png) @@ -257,7 +326,11 @@ You can modify the document attributes of nodes and edges from the canvas as fol 1. Double-click a node or edge. 2. In the properties dialog that opens, click **Edit**. -3. Change the properties and click **Save**. <!-- TODO: Can't change system attributes, even though _from and _to are generally mutable --> +3. You can switch between a **Form** and **JSON** editing mode. +4. Change or delete ({{< icon "delete" >}}) existing properties. +5. In the **Form** mode, you can add new properties by scrolling to the bottom + and clicking **Add Property**. +6. Click **Save** to store the changes, or **Cancel** to abort. <!-- TODO: Can't change system attributes, even though _from and _to are generally mutable --> ### Delete nodes @@ -275,23 +348,82 @@ You can delete individual nodes which deletes the corresponding document. 2. Click **Delete Edge**. 3. Confirm the deletion by clicking **Delete**. -## Visual customization +## Legend and visual customization -You can adjust how the graph data is displayed, like the color, opacity, and -labels. All styling changes are visual-only and do not affect the underlying data. +The legend panel lists the collections of the nodes and edges that are currently +on the canvas, how many there are of each type, and you can select all elements +of a type. -1. Optional: Reset to default styling if desired. -2. Click the _palette_ icon in the top right to open the **Customization** panel +It also lets you adjust how the graph data is displayed, like the colors and +labels. You can create and select different themes for these visual +customizations. All styling changes are visual-only and do not affect the +underlying data. + +### Customize the appearance of nodes + +1. Click the **Legend** button in the top right to open the **Legend** panel + if it's closed. +2. Select the **Nodes (#)** tab and click one of the node collections. + You can filter by name if there are many. +3. You have the following theming options for nodes: + - **Color**: Select a fill color for the circles that depict nodes. + This lets you distinguish between different types of nodes at a glance. + - **Icon**: Select a pictogram to be drawn inside the circles that resembles + the kind of entity you store in a node collection. This allows you to + quickly tell what type of node you look at. + - **Display**: Select what attribute to use for the **Label** that is shown + below a node, and what information to show in the tooltip when hovering + over a node (**Hover info**). These options let you view a part of the + node properties more quickly without opening the full + [properties dialog](#view-node-and-edge-properties). + +![A screenshot of the Legend panel and a node styling dialog](../../images/graph-visualizer-customization.png) + +### Customize the appearance of edges + +1. Click the **Legend** button in the top right to open the **Legend** panel + if it's closed. +2. Select the **Edges (#)** tab and click one of the edge collections. + You can filter by name if there are many. +3. You have the following theming options for edges: + - **Color**: Select a stroke color for the lines that depict edges. + This lets you distinguish between different types of edges at a glance. + - **Line Style**: Adjust the stroke **Thickness** and the arrowheads of lines + (**Source arrow** and **Target arrow**). These options let you customize + how prominent edges are drawn and let you better tell different types of + edges apart, especially when the label is not visible. + - **Label**: What attribute to use for the **Label** that is shown along an + edge, and what information to show in the tooltip when hovering an edge + (**Hover info**). These options let you view a part of the edge properties + more quickly without opening the full [properties dialog](#view-node-and-edge-properties). + +### Save and manage themes + +Themes are stored settings for the node and edge appearance. They are stored +per graph. You can switch between multiple themes to highlight different +aspects of the graph data. + +1. If the **Legend** panel is closed, click the **Legend** button in the + top right corner. +2. Open the drop-down menu at the top of the **Legend** panel. +3. To save visual customizations as a new theme, click **Add new theme**. +4. Enter a **Name** and optionally a **Description**. +5. Leave **Start with** set to **Current theme** to use the current settings. +6. Click **Save**. After additional customizations, you can save the changes to + the theme you created via the drop-down menu ({{< icon "save" >}}). +7. You can revert unsaved customizations of a specific collection via the + collection list or customization panel ({{< icon "reset" >}}), or revert all + unsaved changes via the theme drop-down menu ({{< icon "reset-all" >}}). +8. To switch to a different theme, click its name in the theme drop-down menu. + +### Select all nodes or edges of a type + +1. Click the **Legend** button in the top right to open the **Legend** panel if it's closed. -3. Adjust the styling for nodes or edges: - - Select a **Label Attribute** to display a custom top-level field - (e.g. `name` or `type`) instead of `_id`. - - Assign a specific **Color** to highlight and distinguish elements. - - Adjust how transparent elements are with the **Opacity**. - - Set the **Line Thickness** (edges only). - - Choose different **Arrowhead Styles** (edges only). -4. You can also do the following: - - Clear the styling modifications. - - See the number of nodes respectively edges on the canvas (by collection). - -![A screenshot of the Customization panel with a popover dialog for edge styling open](../images/graph-visualizer-customization.png) +2. Select the **Nodes (#)** or **Edges (#)** tab. +3. You can see the number of nodes and edges (per collection) that are on the canvas. +4. You can sort the collection list by the number instead of name by clicking the icon + in the filter input field ({{< icon "sort-by" >}}) and selecting **Count**. +5. Click the icon ({{< icon "select-all" >}}) next to the number to select all + nodes or edges that belong to the respective collection. This clears any + previous selection. diff --git a/site/content/gen-ai/graph-analytics.md b/site/content/gen-ai/graph-analytics.md index 3108fb1fbc..442a7838fb 100644 --- a/site/content/gen-ai/graph-analytics.md +++ b/site/content/gen-ai/graph-analytics.md @@ -3,10 +3,10 @@ title: Graph Analytics menuTitle: Graph Analytics weight: 15 description: | - ArangoGraph offers Graph Analytics Engines to run graph algorithms on your - data separately from your ArangoDB deployments + Graph analytics analyzes information networks to extract insights from data + relationships using algorithms like PageRank for fraud detection, recommendations, and network analysis aliases: - - ../data-science/graph-analytics + - ../graphs/graph-analytics --- Graph analytics is a branch of data science that deals with analyzing information networks known as graphs, and extracting information from the data relationships. @@ -17,7 +17,7 @@ and network flow analysis. ArangoDB offers a feature for running algorithms on your graph data, called Graph Analytics Engines (GAEs). It is available on request for the [Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) -and included in the [ArangoDB Platform](../data-platform/about/_index.md). +and included in the [AI Data Platform](../data-platform/about/_index.md). Key features: @@ -40,11 +40,11 @@ How to perform the steps is detailed in the subsequent sections. {{< tabs "platforms" >}} -{{< tab "ArangoDB Platform" >}} +{{< tab "Arango Data Platform" >}} 1. Determine the approximate size of the data that you will load into the GAE and ensure the machine to run the engine on has sufficient memory. The data as well as the temporarily needed space for computations and results needs to fit in memory. -2. [Start a `graphanalytics` service](#start-a-graphanalytics-service) via the GenAI service +2. [Start a `graphanalytics` service](#start-a-graphanalytics-service) via the AI service that manages various Platform components for graph intelligence and machine learning. It only takes a few seconds until the engine service can be used. The engine runs adjacent to the pods of the ArangoDB Core. @@ -88,9 +88,9 @@ Single server deployments using ArangoDB version 3.11 are not supported. {{< tabs "platforms" >}} -{{< tab "ArangoDB Platform" >}} -You can use any of the available authentication methods the ArangoDB Platform -supports to start and stop `graphanalytics` services via the GenAI service as +{{< tab "AI Data Platform" >}} +You can use any of the available authentication methods the AI Data Platform +supports to start and stop `graphanalytics` services via the AI service as well as to authenticate requests to the [Engine API](#engine-api). - HTTP Basic Authentication @@ -129,15 +129,15 @@ setting in ArangoGraph: The interface for managing the engines depends on the environment you use: -- **ArangoDB Platform**: [GenAI service](#genai-service) -- **ArangoGraph**: [Management API](#management-api) +- **Arango AI Data Platform**: [AI service](#ai-service) +- **Arango Managed Platform (AMP)**: [Management API](#management-api) -### GenAI service +### AI service -{{< tag "GenAI Data Platform" >}} +{{< tag "AI Data Platform" >}} -GAEs are deployed and deleted via the [GenAI service](services/gen-ai.md) -in the ArangoDB Platform. +GAEs are deployed and deleted via the [AI service](services/gen-ai.md) +in the AI Data Platform. If you use cURL, you need to use the `-k` / `--insecure` option for requests if the Platform deployment uses a self-signed certificate (default). @@ -146,7 +146,7 @@ if the Platform deployment uses a self-signed certificate (default). `POST <ENGINE_URL>/gen-ai/v1/graphanalytics` -Start a GAE via the GenAI service with an empty request body: +Start a GAE via the AI service with an empty request body: ```sh # Example with a JWT session token @@ -166,7 +166,7 @@ echo "$Service" | jq `POST <ENGINE_URL>/gen-ai/v1/list_services` -You can list all running services managed by the GenAI service, including the +You can list all running services managed by the AI service, including the `graphanalytics` services: ```sh @@ -175,7 +175,7 @@ curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X POST https://127.0.0.1:8529/g #### Stop a `graphanalytics` service -Delete the desired engine via the GenAI service using the service ID: +Delete the desired engine via the AI service using the service ID: ```sh curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X DELETE https://127.0.0.1:8529/gen-ai/v1/service/$ServiceID | jq @@ -309,12 +309,12 @@ curl -H "Authorization: bearer $ARANGO_GRAPH_TOKEN" -X DELETE "$BASE_URL/engines {{< tabs "platforms" >}} -{{< tab "ArangoDB Platform" >}} +{{< tab "AI Data Platform" >}} To determine the base URL of the engine API, use the base URL of the Platform deployment and append `/gral/<SERVICE_ID>`, e.g. `https://127.0.0.1:8529/gral/arangodb-gral-tqcge`. -The service ID is returned by the call to the GenAI service for +The service ID is returned by the call to the AI service for [starting the `graphanalytics` service](#start-a-graphanalytics-service). You can also list the service IDs like so: diff --git a/site/content/gen-ai/graph-to-ai.md b/site/content/gen-ai/graph-to-ai.md index b8bee3415d..bccae43b5c 100644 --- a/site/content/gen-ai/graph-to-ai.md +++ b/site/content/gen-ai/graph-to-ai.md @@ -50,6 +50,8 @@ Alongside these components, you also get the following additional features: - [**Graph Visualizer**](../data-platform/graph-visualizer.md): A web-based tool for exploring your graph data with an intuitive interface and sophisticated querying capabilities. +- [**Graph Analytics**](graph-analytics.md): Run graph algorithms such as PageRank + on dedicated compute resources. - [**Jupyter notebooks**](notebook-servers.md): Run a Jupyter kernel in the platform for hosting interactive notebooks for experimentation and development of applications that use ArangoDB as their backend. @@ -64,14 +66,6 @@ Alongside these components, you also get the following additional features: [API reference](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html) documentation for more details. -## Other tools and features - -The ArangoDB Platform includes the following features independent of the -GenAI Suite: - -- [**Graph Analytics**](graph-analytics.md): Run graph algorithms such as PageRank - on dedicated compute resources. - ## From graph to AI This section classifies the complexity of the queries you can answer with @@ -105,7 +99,7 @@ Graph analytics can answer questions like _**Who are the most connected persons* ArangoDB offers _Graph Analytics Engines_ to run algorithms such as connected components, label propagation, and PageRank on your data. This feature -is available for the Arango Managed Platform (AMP). See +is available for the Arango Managed Platform (AMP). See [Graph Analytics](graph-analytics.md) for details. ### GraphML diff --git a/site/content/images/graph-visualizer-add-nodes.png b/site/content/images/graph-visualizer-add-nodes.png index c0a23ed6774cddf4b385b58bdb83e1fbfb200546..2644a3cba4a2935341d4af46ab4efa84bc0ae3d1 100644 GIT binary patch literal 28310 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 VUOnZ$H~&aY3Hnm5OvW_me*lyUY03Zq literal 26034 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�e_YP3^qZy>MC6QLnB{oFOw0lg=+Du*~`a-Rm z_OUXzmS;Z$=NngVXGh{wKQum=X1T@l;rlrdGm<-Yn`KfxYZLg=BXPU6(zb3AyQ*o9 z6=>Y0vgP)R-sZ8qp+2qF+5Ka~w9vWcQQFgyo8IhERf-9u{2W&1IAA4fT7O>fHsOL) z{OPsq&u;E_{xp;OvoM<;HVIij)5Rg`XHjg$v}{^qL`pNNB@}x?zzAga8JG`!mqp=o z824Xa%9v4<nL)RpLn9gkIT#NyAcPO$I4&~&goo@Ce0%V6F)=9STGlx7EFJfL34hkz zK7P;Qu?mlj>JOaL#U`e^3?|Qr{&!DnvNogP-9lu56Wc}fV!5i+nK{|~bRbeMn3q#K z{|u)pZeS~uYbn~I;T4}O-y!++W|#15?wS|VW@dYEuC{sY4g&DWhVa)!2_1!=Vem)@ z1o31Twdl}@3*w91v&ls2|J6DvYx2qP*&C<w$Q!n@9zcEJZdhCm4uD=cc6*%l<9?!I zY{}-;p*9{qUKc{c8{Z%udmbT_$qUnddQh(rH#xrNvx(g~CC+q8YS3tIuMheRpkK%1 z6G3!NBhWvDAalZ%wEq!WI5b8g=PEWl)wHSdDcJxHt!HX3rdl&hS#A~+R54LMp>pS~ z0nn<ZHEqF)o<LV0F~@*t0tnM4`oM{2!S2zzY{p()+T5V<7k57(Z)QG*xpx}==K6vy zkROO@8)0bune_<5A-L~_1FC&=6^8tO#dcS0EV_JO%+@rLA}h7q{5fW|-XTjy=&m}G z5&$g$?9NU8LnLXCaC&&(5!SpBt~0dcKmmjs3^)D`=A{&DmR}vguBuJJcPePTWdtvO zhkO?W!`)oJP;CT1_$MzG)>ZjW(_Ra9_txK#9uID-!3T~i-2@IFcBGdZ(r6~+IKMoh zHSxwU=jv*2uqh$Ar&iI&mk{={h=dP8@!^qg6?GK;O;Pj^V#8w)UWQ&Z3mo6|-kd6I zeXY9(KCSXpZ^Lz7UgVY+=fz);j4q7LiEh$sBHTi_KE?mjAwuWmM0TYJl6dW11x3&F zf7m?!uOeerPwuQX8we{AJ{R}%f<I`bHJJllKHyn%8QbNl65ZW*`aSi1(LSowyWH<! z)xP;dGQZq`=haZ%bZs|zduc<+&!FltHri{~Ts?#j4QII^&NFcTLsf9K!7LH@*!jX! zqfi5Ey}yS8*Y>6Hn$#6lib(416P&K)N*}{=vUL9$im#@v9P{H~`K{wm)WgeK=ypJI z&G;^geq|Nb|HyQnydO%7x;0q;Q0>H31$?@|0OPPlzBGN%dU4&B0^I1?d?$YqWFXY@ zstI4bHp(1Phv9K3jsAk6MpY<O_rMq&b3_m2IKa9W^?%sfXIBN#J#Fo)0#<)OIjD9~ zz3A62>bwdV!fm}ctO6dlUI_0p)H=I>_smRUrc&f=QqJG-g;G>t8HOaisR4$1N({<A z@<nXk5_a!cP`q&=Il$&qu-nb?jJ{gY_K4#T2a@iN>g0bfr3Si;4ESC9bNga{Qqjf} zbt9rf%i450RH3YnvhN@|G?{~KXrsqB%QM>(-V>&G&(Wv6-$3DTs*T}2!Y5=y<giQA z6qNTrupretU8+t0prAj~VhV*|F{J9PrtF0^wxA9^a#pI;@PVz9RIW`3L07)8;f?vT zW`N9L%Udc*#)}<H={n_{<-m396Sff!Fg|*iYn0_ire_jI&0e+!&EFGCbQw<2!b+Yf zPJr&GvMjuu@;_`Kb~xPFXBe5W_BdcDM9JvIg@Rpk*v~<pTT=YcieMn?bOe_AA(ZFD zc6t16b(X&lYbe33!DQ-rWe)4QE&@j(r5IK5vhY@dZt49hnStc&wz=1SZl-G^Y5y;n znpO7-N@ThC7G6*^jo4%u7Vr8=h+$P4*uq?nEko%M828lLo#K2h_FF;(WS5qzPQLiI zjOT}41&FxV=XN4nSLO-Zg!l`s-)CD=!q*TE_c#msoTv6MS_$jVfPLG5%f2wO6w%LY z@ENEJNEQ;qd0X`ntKF&kp|-wW9JOKo2dTF3bLet1uE{=hdIfDq8!yI{l!&uxv;Pr& zdveMe2V650P{UT|&;_kC?9n+uy8@wz#KRAOO)9sJu&Y-bDP;-3wG5A;mvZ!kPC(2k zSJW(jG8F?mRAS#_8ea-axr_9?E$;lozy>%*OnfK@Y8hlDh-r~WlaIi^D9a8daH#m( zWC)_VVd;H;JPwmG(DM@RyGyN`4Q+Xwl7BMs%QTh!>}6BmL3W~|Ie|;u*;6rJ$A%a} z`#QZu)rG>VF67`u<97!MV#A>iQriqEfpYnD_I94o&k(cJd8OzkFU9zabB3@bgIhgl z;>|Di<A_}Sd;{^lwQ{Uy@10`xyCE++s;`z{{80ay*#2M0Uhx;saSB|&B6fC0V4puI z1hbUoB20+3W{SSDcm!TYWiht)p#v)BR${Nn+r@!E76X_TUu_W?vN&KsA$IB2fB!|9 z=EOD0FilZkapx8Df|GKL*wKq^mao;V(Blncr6j4qb#GS!@8`s&he+KwbU1Dx_KBI4 zZDPi|*BP{)nI=E>+sZx62~v2%_W3{B1X8f)H8qnTK)CzGgB3Q3H<`d7qMgY{a|PJN zOTvfvy9~!3P(;!*;dwG*=U!(kFJ~hwMv~?hFXl%qby{^*GWR%5<(TLQqcLE7h*JL! z&7|@;e7?)@1Dc8Jakxafi*RpnjHm)O3ysnEV5^tI9Mbe(^n20HAzgn!X+sQdDBkNs zF`nCOmIadus8OmuUA)MtY#5m)^Ap%bInN<irG}k9W6bp4urdo!GH{eFhRyz;#=bKg z&L`@d5RpVLs|Cplf>l<D714W-XuGSg=yml@5W%gB5+y;DL|;}*5W?yt2oa*Kh=?ew zckkwZy&v8$&-J`t_MVx0=FFM7r<^%+&TmOvDAygxxM@BFGWip(ebxC(Y7rNpeqB++ z`(#k<nFJJm<Tj0qt^*W`^!V0fVwHyOmymLnKJ#(5ET(unr_H@wRg^Sl?p(&&NBhy5 z_CsJQ<9oQQW68RwRI;dLgsbX<v0j8<>l{-gHf*L<uCO`%A@k?(xOqj!baQ7qS&|3i z^7=O@o!_|?u@mnA?f1FEv+4W^td73uxXbzgkv~Z@NG5f~7%2H#q!6=j$Yt}x?<kI< z9GFLWMwfb}d#Yk{ct%7MUE#`fT!8OVQ#IiQ>*n|0iDd5{Fp14sWEyk`hU>N8aM85R zuf*mh1P-zMvfbB)@LlD6p|+t&qQjTpFas+WvKez(m8@PW|4M^G@?j!3OihIIq-7}g z?0-D4?2}2!{hM@2L2aT8PxOxm{cPOVg@7cxxoP9Z`^7fRPE?6%vms3ZxrhS43UH8T z0STyJ#Uv9N!Dyy$D)p$-w}g&M_c{UUiS_Y5AZzG{Z*7x(fnCEQITn+;!B=baF7eHP z0S@KKenx2Dwp+4cJroLyN*(~G8gty%g7p<LZx|yiR6suZ%ffe<=zN?f6eqhxzaMF^ z;eJa}@3A2=KDUm-BqViZZgX`PuiUM3Vm5%tm&r9~c8ZB$jy&N%VTdP@ugAFS^^N*{ zpYSpAl@$+M&$olW|1i(s-&ri`-`HEl_PVO!?|rkZ>DxDLp>DWv=%}9PMRn&L_}L>A zCc$SUwt@pBYw`K-(zQX!ez1rBmGqT;3rrWvm6KnI4Aqz!oq&d`ny}}DId1@JgY2-c zRj+87HaBIr-DVvycx7L<JMhG8dSLQ)a6&A)>&=Le@A&Yy8Ja&?78WzND!(X6PFv2` zKf<Uow%V*6gc6UP8|4vXiBJ|}nQzR?%padMBd{MjsnS(QAz|J4MO_KmZ=Xm<b5D$F zY^!L(Q1G6d=}fQCb6j2l=53f{hFEDAC-qoEb-O)%^-O-n{py*rc`LJN*>BZyGY(Sf zC*B?{Gd(LmY(gH{e;M_gw)DJe`T;aPGBduh2H*RQ+bNfCc&nZA%=vaGwFJ9+xIO*# z!H2Qk!<LSu)p0n~&PM8dP)A`&*=z4lGA~EQY6})#cGqc2l`P(nJRYB60aSC@JG~Tb zuVxu!ibIBEtJlpzA+jcSS51GJo4Ttv22F`_JfKKva$?z@X?X`vgc<84%nMrMZsgie zJ1VC6g2es~8`nVQUZvt<Q_m(8MuY(mR69XYs`q<G1#eaUC<LsbH+8gTS6z@PH8C3h z&;fH_zF6scxoBwpqr0P|pZuR#kX?+;fgic>heN~pJF=&0;5~B$a~{WC<>WjH737b4 zI3eL^TdTQhMi(#-4FU0_+-LYvoI^M|<X-dM;nm!N8K<$00`zK3D^j;&oK3SlJ`dpe z-7%CUB;>Gbox1Q3hBT531T>^jkfEV}+vG9isammxla=%xNbuM|P}j?EQ={;zwvW#| z_7&sAqy!vg*<e{uahhy(Ew+<ogKSl!4Xh7mP-gevJ?Pei3MPnL{$~3oqn@g!3Z249 zHk8i#)XYh4fPf8ZK+gQt$JOd9w|iZ}K59O@`cPEu-fiujc(v;drnSK__*@nanX;m$ zDi5nxftCZ#Z$EL35+Kq9)GYul_%PPkl{6hWVGi0Y%N~U35t~~Ec7O(Ai{7%|tWbSd zaw%lfRZE^&bb}p-VD4+rRVgn+5c@q1cWoJEApRan2UJycQ`80Aq^tOW#gx0{chAUt zH`Yp79Bz;x-k!OahJ4bS%O&+#O?)LaS4Zh9^F}12EX`z=4@lGC(EeQ^#YvwaK6HD~ z@9s`x?z;KL6dIFTXmm%fq24#-K4@1DG%E~>uuMXeX$8xJI3#?_&S7FLY~81w8>_&| zlc1*uiB`<WMt2Nr5Vq*SP_Sj%DE6`0qXfo$+S+B5wZ5XDV7C7~G^A^M<2(Eem3$Hc zhujO>mv*qqz<KAE6qgu#8~eU$V0aWh1lEP1Hz=xSC<D%1LD3rKPBv%#CMU&<Pu!pA zJFMTUiV8EmajN<Vz2V@#cHj$<m(&P5E~mUy?Xyd>s3Pr&Y5X){|NO`9ot;k9&&<K9 zGN;Kb+NRSeT>l&4qpevko2D!>__#Q}!Lo<wsAcl^`3&nsmGGQZH157UqAap$oD|_! zZFfPU8Ys?(MVt<!ME>^Yd_hk1SGZ^3rr%KG3f#|aJsQT;3-`^3!Gsh6rPLS)toR6O z?I7_pOY`bm(F+pK)frB}*tYH|nW7Zy>iK~}LmYQ)uD%O9qS3vcH3VDa@<yBcr&yf{ zqvW*XPYK{<U08CbMJQW@yoydUi=~DhaxD%rFL>%*!8G-S8xHPd-uv*$e*g3a=QHMW z>u)quhI#ifM}2#@AYAIs$-!>CAnu7uOv^LNJop(h9;YHOC(30WkL%lWft1PoQ7}dk z9-SzGCT2zyO#TIBK)aF}=jGZEF75xP^t-0kT@vZb%{4czwe{0_UQkLA_gqND+)??l z@yp~XnQqEBw$;CycLZt|4g*FlGfGUKZ`<oYxKu)BGcY-lZyF^@;EwisFVooaU$O4; zl`-$K`>6?*B4>0ToZsLDSu2IiR<=lSl56l%3aDS|Q9Y;B+*h2cxbs<$S}Q}oUK`R8 z<=+bqj%Ugs2kXElNP*1cr;P8T>SbPx$K!hNLQb!(-X<-PXKJY}k=sR0+=CS71o>?( z_TZsd6_6_*mB*@)uf@{n=P4IgI3++SoN?eCDO}6|T>C<U_*-D)#zi_gnlQNg{Z~n@ zZUYU_Qs9Er2$KWd%q?=qM^xpzmREc(U|uk;U<>h8!KYKWH>nNrqta4~o56j))Fj1% z!jzhCzjy^<*1`!Z@V|PyIqu-ih2y#wsb$`jJAZ#z{u&$a9`ttDxX39nmvq0Q-xw+g zy3VHCPC;j)Ylm*|&eht-%g^Tphk>~3^i+Y|zRVPdNr%;wYjC$jHo=+XsRmv>pNNNl zRR+C!;du(u0PjdGP|haoK(ey$dwqZogl72i@qPJ)A%gro8-kbbxlF~~+VB#0Hh)4` zvU-(=vz=ep`1B@JxFP6pX8pCE>yaSj*CR@jFu#xEDj2xfotZXi>KVRbdT=gJ@wX+^ zU`}&;fkSjhTkE2B$b1um-}GS9L^QTHdY#8KNzRXjA7MrU_|%d!?KgP;x}Ee}6UR5( z&>L{gBN-h41(t5m)L39NKh*q?1v16kTuL__MWdVWNE0t)Ljs4I3Y=V9s`CBX<c2ma z4prT*Fc^98sEd+5jFvy4)WH+?UF2Kzx=~gL6Q47|LwH(pa3@&en>7#9le6&i(Dzw! zr%H8yOzvJCD3wi9n^S|t3c+XUp5e4#Ivk?W_g{}usi&gbVV}P)t_wSdHctz#=WDOO zt?dSzWI2`?vLh@K=~#SvFt^hLct#C}1`e*i%e0S-oV0AJ8;h2HEKoJvk^kn8PQ2f@ z^Fmm@($X#F_pF^G&_A28YHbV@-|hgB_>0xIV}q<U$T>ui$oOb4VD(f@eqt<#84%yC zB1!~TJZ2~qN$S>!ms;J*uZv4^z}#rL%-s#E<^lY;n(LDvw3N#gAonH*s4MKJ>)WU~ zcTAjF&WevD_f4CzH%H`$fL0n!FG}7;Ar@tU>8H%)wMr>{Y~SV|z5d3@3#lqZIgG9n z=y;MwFL^KJ1YvxAS&xDYc#G7DnwzVSGuytrk<tk+Jfd=y)>7)TLmxMCrK+8gKG%v= z7YcKVM^G`pv`ZE6$bQo0eYW{Pu#R=V0kqMWr~QQ9EL`1vZWu-21#tP9SI8wiD>A*$ z1f~o#qLTZ-CPo+%CQN_9Sc6E(eJB7&cL~L+C>q7hG(*(Sdjw;apQ?G}Pfiqa+olOt zI=;(&w2`QVhB|LSf?4=e+me99!Y?+&$^<=n)nv^r%sNNN&}nmF>G6;zb!i#nAc#nX zw^X1BR5mjnS7O<q8ADin@kat^q$hvzIT^?los`n-e+<2542FH7p)m{Su!rt3{uy#r z9)^H-!i{O`D5EPehCR*AU>ykGMlQ}HnYBF$L4M&dO))`gx?P!nm_<sn?Dhqgc_9XZ z-jeZ>J2jhp4Id_*$icO6i&p%Sn198}0w3#!F>acJ=vPr4cEXMz3Fp%u)OZbI_?c0@ zmRv8yYJ~p#PlT{~IctVbaQ$*AxrF*N`J~rNzZ2Oyc`+K=#Vk5ctg8@-CrVIRbHxX= z#*U4D3x9P^mvAQlu$C@3=+(Y?7F>5m0w~!&h_#I920wr#jAt{XW~Gh_t>{K?4Nbq} zYxa`7Vabq|UT7+7SxuxBZzX^(J4|wDM>EXkBhM)T7_9umHjRayapr%d=6Rt!90_xv z-OTGKM6A)QpaAb|F>WsW6B|1P%=(!TtxHJ2*uz0y5N&NicsW{=xOP|f;O&A*K@+Bu zr>3vqp^pqcqh5AEel%<6!b5e5k+hDMg=VL;|03Wb0kKU4uU_*Z?Vn@BaK&EOQn-mR z0!3I@AAsLg%LFf5nV6~}55kQ_JHZ3@geP47T)fDB;jl*kwRUX)9&<Hc&^ba7*n=IR z+bIF9&&7MIN2Lsa7Qg_A*7l$tqX;3qpbQXk53nMB`GSTcp^!yWOS5xi2Jil0KQgp} z5zy+h!}!PrDZco1mtk|>Q}p{s7Y5#fY-U`-=K;$O4jmM9?JdM3NERwPnTh?I4adsa zB??J{NOKP!he>Dss{`8q0V}0Ww74iEjJ(;MEhc_d*9J{b&Uunsb%E>R_{@kBgjQQr zo_UgoNAs;lQ@TCt%C127Hv=aw3#I|~15nNe%8{e>eKljRyRhE-hkJf{UF7_C*>5I` zVsiFkAXc37{ewZ(KH2o*gS54+GwnDJ54rcPYAFBPne}tGD$7W<*MIqByo}uS@26a& zHcCB^?LfnB1FTjd60DBwdsi17oTLAsef1f>h-Zm)5ZPm_4_x1#k|BH9r7!eBdSc$k zM<p|Zx%U9(DOvH<)Fbz&Y2axS4ZCFh-O1k+%5h$~y=eNHL;I{CP&TxJ0gkO00QPT5 zv0D@S<`~}Q7r35Z^GmmRx?Rcvvf0{N<gy{HtO}a7|4ewRwKjp>9rF_mJ@iVT>0-PU z#UH)S<z_>FvrC2sa-!RV4-Q?M+b)qU#%;oXcn3!NpyG8)AHOK<o8^?2HZJwL(JJ0Z zR~Da3emf|cIoNk%F>nv!|6<%9Ya}BP2N5|enw&Ht#NwPnPmdfbf^}xzRLq4*G_GvN z0<T)Kw|8V0W)EKFaTGgUqoDFD-Z`b<QAcN#jM@0Hi`2}qbnoKQ(sOV$LBgav!k{;V zji)$pT8p&_P9I?*Q)^qL>gD2NKjz2b;em<SAVsFBbTI?yjF>L~p_ZIHn0=z}GmET~ ztV7xdk;rBoO0t8qE{B)tuu5>2AL!IR6Qk=MLLJ`E>Fra0<mGb{>G1#<^VW33;pi|4 z`Uw3j&<8pe9&S8LWT%xw%Ds=+23ec54&Duf?`w$qsB1yqv0W3bzh_1bO1jw{L?}bw zb_KoRBQ0nh!rYd7(IfR{3tp8pe0}DOXbhONwF=jj_{wi$@;41PO&lv(L0H`+f6ogU z@;jJ3j>kw^$zekog1sImhE-ZCQ?OQZU;kSJLHAe~c!?dRo%DwSLvSb71={+YPxyue zqJh>wBFaFev$@PnJk;5Q`9mwIhPGskApa*uY9Tg`>SqpMA~)B{Sy}7-ywH+lC2S%Q z;UnPWG$H=_IGkA4<dJ_T>IM*E)@T5V-py6$OZ16d{poVUk@uOemyZfJ(E}W{pJ$!Y z;WlY*s0vZn1GS?^-%VM&6$Q=V!~R%;w4@MqQA3(NC{`WTe*<j|el{2++)Y&m=t(z6 z1!M8*i$7v_Ofpg-wTViZ+tW`}Xr)r@x(LMi{wf#8%~Ic@S+NBTF7}LPByxcw2!V#Q z(hL8aufH7;Rb|QK#GDL(!n-JkCq#+0qz8|F0e{%U0Hg?Da)_a12B6OrMS%X7tIrTc znARpL4E|eFV8QmFQi(0E(AE6c=WN66uWMd1TCa|FEEc^Wu4?f(>v65tH8Kg0U+3Bm z{U<Wg!@MPyE2D!?zZN;^{-c2xU7Ld)KP~nX5xWn2kx#Y?x!Ky_Z$+n@@`ku}YC|s4 zgI8hX8q%*qz5dF*(tl;ZvJN@zM>w7~XXFq*z{(d4w%B2EL<Uoc!g_~KxI9{59vZ<_ zVv`E%%50!3Pq~}z<t=dg*tzo0@8RPOw_h;+e2y@9zP?V)p-d-pVL|?ir+jk7#H=k= z0wjS<kEnPZoFe%~?ZxF(AEr?0xWWmuuh6Oj(pWtiFaR5nEdEwJIj4q`N|1$xFH;!A zUWv6cS*gTtaHslDNdV)mU6*a0Qk$VFonWRIaOBSQxcl)qg;IB;x1OY(TSDQMhnM0` zy4)#u+*InS=Y_|yQp=eYUG<K(hO%^uKIx+f_gmz!ICBcR;ODR3pt;x-$5>Y()@Cd6 zy2wJ>vR6FY>p_f^f&r;=0`Ml8cs8xCBzJaU!O9@nZ=Q8WAFf40Vxgg*Q6ut_Bd3)h zoRbUQM9@<1CXl7lvio%ClR>A}6=0NR)m2hfpmL!oaw!rLDf6Je%{9i^>wq(v1+ewC zrHfh#&G$0+9f|*-<tlA`4|602DA|6zwFx7*5M6mc;bA<s-}7SVR>utaZP1Yna^6?d z6$P%4o8Zh_ZstcWrz{uBc}~baVJcC#`#W5`m(Lz_<DRnUHRA4WVJ-~Pr8Et_^#RDJ z5|VHDea?<SM#}^D_LQo^@V$%l#)R*QP|pxqOwHMkI0I`0l^qGl)<XDxw4Mhhj-xIr zX5&>Xj;m<tpK>bd_I0+4UjyV=?3vB=&r5%XenXL)SEv;?fZtD3rVun$&a~FGPt`~~ z@$Ea%X@Db#gIg=a0d3zH=WNONfd4l?sMX)h^}=Oml2yqvjIJ6YP0h6=&MpA*ndI{* zc>xk>5CUwe3YLw$;8euwbL<iXO^9|-mxqV37XjU1jTn(_GW+>7*`L=XUx7g7MA*Om zM?T~m`25`NpCuxz0c4JMD0l`?>SGUt=4nbf8(Nx>CEC%ad2GOjOvPlF61z1v|F6b- z(>o`Hw8dD|>>{SwNX^^BzJuzviz<n0=~sWd<O)$<CNc+=40Fh*{nlj8er|hu!!}x? z6-ZZr%~2w&OM#3J=|kd9^=w=kl3;)COLh2k`(n0U(Pydyw_RdacP+1QGY{7|iL#^6 zZ1(FIDdxyp@OO|YaZMu5y*MKNrCxMjf|*y)SEg%p(vS1r?V0?b0K~fuHS|2{H7AYn z@v;z8zqzkR+~@9)i}PnF(CQIRxRB>pq~Db&5Gak`VE*d8Pvi8!BMVY%h8d!+D#w~i z`NrpOfiPw2lwvvd1X%~Pdn4sT<HIQrw~*?BWvh!oa%i7eqw{v$;1$4-N5`)N2j+3Q z%PiG80H&wtyw=uy^~Yp4uhZL0Nx%aiP5SWc#^_2Ym)Wjis6wxSu?&;f^2^fzdoYM_ z6{cX~H*wl}NF97O97n4fY2;*uTn%2RnHXPJ^eoxT#`U{ES*G;c-ZvyCG~PMUA{{S_ zuZe1+=F*zqd(6fHPh`JdmYBExwjcHN=Y61>Qw$%@$?{<cImev>_;;xEAb1?`jU05n z;-X;}J>Y<><z3|$u@nn>{fZfH2|p#Sh2HV|2vIi$?r!m|=eu;+|0j*J*Cs@Emv!+} z-DLB7`LBiG9PxQusEc>BT0W~vNqZlP6LXY-Ce#Xpp3euu6{$KKCXR*c;tarvFyWgr zrpgacXp6XDGk9ptL&TXA&%>=R+#7tL!(P;rM#{m;F2R#93*(huDo~^SHe5eT#X!6+ zE~#fyHXsG}cEBApVDmwH=!^zH+dMh`j0r4@aK{`e4Li%AA9xP4e)ih&Aib&>i!XmG z&R2KvbUrYI55!ZcmcH5|vcn0eE}ja@#Q%!*Y88^E;u@=vwEECm#lBW|;+2j2LhPYw zp=M5^Z_<?Ly@P+W`F^(H@DaQ1U%R;U+in4Ali)+wikFf}8tYs@LFO}lH^_C$Fgmo1 zU-u$CnOH;a6%jjqyn0=*odx$2X9KHL>j;=>EMeXeTKl}tdzS|SPT1SJOvf>8T1Bb} zx1B^W302~>^PXY`u1IAP9Ug4L8o#5UET-taM|(Hq<J^W8=>-!LuU9|Cp@`>$L=M}j zJaKJCcn`D+o|xNaOOMNE{3#FEX3ea8%*I`wGrtKO!V|a%VWoEUza8|{+#2CRtNF}V zOUyTXpQ-<7hNS1K@Vw_ys{SOwL6LG~m9$n;=A%(|{8h8u7S~P<!Ly=3DjC-GaOc^1 zTl&dms{O<IBbK5FwR=&I6=$dD5s6IZ!dXH$)nPjOIT`LNFVq#?PH%&zZ}X{)?KGuL z!lvw|-FB?k2d$(!sTxlTAmGS|t3(r@5<OnfRs}S_Eo-N8W=R}-yp;?{B*vjogc=4Q z0H>>BrE_e8Kx7|p*+V;j8|p&liQ9KgFe3HaW3IJ;hB%^~5F@Z~4-+VM4gn~63UlCR z`ti8vwQ@vH|4{&nU`{-Zl)bj6w=Id_2Yn=#wK=f`5t6oh@MJ{Aldi%LSP*j*M^w*D zT)=x$#KeLU6#6=UK9xVvBPz9I?da!T?fsoB`;tz<S){wAWAW<=@fgvFZEi0g)&BT; zVX{pq>6c@TROdb0Jd|_m<<zA(KT(blEp6Wz=%<d3qeO3^=EHWbz;93{4|*baihf9z zn)NdRwZsf2!*Y?1a%}}=W3Smr6(t~A17YHrqddfLMmYQwMb87KV}pOSaU=V!<f~fn zHI2%N0nnH-Xke9`PSf#Gq9i3^hH*?<@A=Y{PMZ^%qC7Ez;CnrCRR%-r0!%^hhbb2g zM8hn6->fkV6KH%61<Cxa4P-C_Y*y8a6ym=A;dH2B2$IsMC+I`C%p($T6D9h#&cAw& zkM%<H*Ul40_qS^%K8<kOV%TCIq?j};?d-C{3luPaY@K%c_B0T;&d08G?}n;(v{TQN zFC;bF>E64b2kC4Es3!D?L})`Iko40Q3E8KPh6MyIu)OupZAP+U1s_wv_A7_G5PU}g z6qvoo$NJGQW%jjvp+eBd{wloVMa03TSD)Uk8-?5L_w9_3{x%X$(-j+Sm*$&+(dkO1 zIdx+_y{j1&d~7>I58jjCS~;!tm<ib3S>G4fJKX(>tzAN&pRc~VnUnPTJ4(u4+LbUg z#A6?l%l-?sZBaUh_vPF_ZsXqc-oPI7yD7^}E<J2)<8BZ11tuQlH@7?hu_d}H0~{L5 zWad<V$~xrRI)<|)xTcC@NL#+(*H+T>`HW5u{hIja!F+4OIFD9bcAt3b`=;ralt@Tl zQ){3zp~vFv@&yRfjPpv1{R|xXxDzVl3vu3Vu7;r6Im&N_0b`*xbBka?2>TD~AN<)N z>^UWq#c8D>=Yt)2oRS$K=Q%o|w6{(T5Bu$CZ`C|@9qa!z?**m3!{;auv@ab|FT8wk z3##r!kImsgLdb>rQb0GAfPoK2z~*&lpLHR3A#M|d<&z%ucth16@6?8Dbn}{Bg@i{D zW0aWD0p<9q1oimFuYs$?h6Z`N3c0sWwycmPG0&;S5i*cW6n2AcRaMx)N{)Dz0_f~b zi5_B38J&?-B8`nI4~K$L_}EB~p!^#(W{o809ev-?+Mmo&+Hdf7(rAJalB#M~Go@i& z$Z~GVsFXYIH?=C$p-bAr4Ot3>5N~sX-Io>8OLsFtn5p9V7?3kP7EXhNToo=$2I>66 z>BK$$2i%Ea!sa~qACqxSpmS$Oz*-1dqV}U!?egHj-3+jPznVZK7vKUdncgS>wxHu+ zVU!s_U|JR)CBnQTdul+-0=?$>eVPC^P8NH#ykT<K#2UJOQA~U%_Y0rWJaGZ)Uf~!u zbf!NwPwZp$L~EzHN@L^Bg?sH1n_;E>a@5G40wfi5v+d*W_l}$U6X4C(t+H8JmhWU5 zfQ`Z*=ogfL6Vwk2{||LEE9xH%X=x$u>)8KS@`AD+r*Kx(0;K`*fs&uipYI$Qlxp^K zW5ULzoGDvDhnA3IBQZwC$eusiK=b>w{bC7+(<+HXHKgj3(hcoI4B5!kz`YVpAg%@r zV=>UK@~M~HZ2EdHi^-YZ+;qlNzM}qpe_RrSc8MCqhVvh9|I_cb8<k#O5$>^ZCfGjn z4Ne(euKBWo*sMMqUBt=@kj|Y~Te>Af!DDLJK-DP;HY1auN-UfXU4wUV3D#Z7|IPgc zuY_1ldo@@w4o-cDBu6>X-y?#cLa~%DVn9z>k>uLSfFhOf6<#8me=O)}`WG;r3ZSUv zL?2hAR(Kan+4BYbh=`r~KNTCw4QJgI+oKl7*Zm0}*0P=e(+o)3d9WjU=qK&MU64J5 zoHqSOpM!~kp8>J#lGwQJ0W>7p&H#YrTX;AOQxg-|c2$WnsKNgdL?bRYo6TaM@hdGf zxhu@q1e6u2*;L~?9%lwwC22Pwl?1T2aJbwW6=<&TC{(j4#ZA3+VI&S5!>U$+UeiWu z&;2HQkt>cuA+>XLr8xCQw%#IBcTbnJ&wyeZk;<xQE4902bN7pdzgmlv2X{orPEOVc zXH89<qn=JDYqXXNUpG#LD*R@{Vf8iZ9#kUFuboHK(qiMlXU-l{OAD=(wOba|<0G&0 z_s?Y{#~gyY^!#!kIhr{?qTQlZb1k3QGmU=Gw%9jxr-R$^`SZ5u@>d|kD72QQ@Nn;= zu1A##0qVx@k27AXHx|e}y!>Y7Vqy7gN7=j>mDk~a;u#X~Wfn#mW1C}p@AlohpGloB zE=A`O_5K!?3?8IYo`%pk_o150%@$#g@BJD#$4aU=-1LHr=!$$(eK7{Mc-nE>jm=@l zWHQS3yE3wO$<WWWwHJiYPK$E7V^+O-krEcxW?kh91kFX}6~sSZ$qdCTsL*36S+-~C z_b)2!Pm2_$`ot3Vxma>doK~1K72mlBnTBANoW?|^({JDZ*+w-~S$;Qgi$X-@^`7t_ zE-l3K3m;aRn;Dhwg?_FdfOTI{8!DvBZvdZOU^%jM?t-%`3e{R-zG-|N{T3jcEa3mi z7+G>J%lfcF?L%F=?>@R!`@nZu5E&!%#qpVcP{E&93u1`^$sDd0fg|w(>z3z!)^0An zD`i?qs-%a2*VU5}HE$D-EE_gs<Y}tSF?Dw;zA$|~MG<eB4jB*s&N6#WPkH<R!t!q1 zQ;*mkk;zTUD5H!m177V6-JjWL*l1>J&5YMzlDiND&<0!gfg*zQ*Xeo^Xv86+2jx`` zy&Xhvg`GHL@{<!sqX7-?A()%^9PZ6a-E*;7h`EMpYk2?`d2-bp70Q{d^PAgOxW$^t zy2rQV(Yt%)@gQx?P<NeHEwW10BM*teS~#Dc7r)bek=xiJdfgA+5wX}e84Fsvu@@1C zMISNJ2klyO>GUq-#VsC#En-Hm3x8Vso&N=#pZvcCX*zB)FMi(UTslhjf?<j!1fA$d z9eY(O=#VkH0}oy&f|e40$(DkY0Wa;KnnTaKjK~<DosND;K$6~#AS|UAGnR6j21(w+ z@PD7_Z`3qMwxv8gp%hmlYnS@}Qa#rs#-VlQP=2>W66@~xLy!uJ_-c_UXD(I-<w$;% zoC<DO&*^rj36y4D?6!y#*mFnMLVL+cxIuO{4grgKBqZFuPd$G`k}fWD>6~3_ps-ao U6Jam>_ZKHxYWk`*$~IB|2h}Nm)c^nh diff --git a/site/content/images/graph-visualizer-create-edge.png b/site/content/images/graph-visualizer-create-edge.png index cb3e497b8efb4a2b3fb5aa6d1a861f12490751bd..a7dcfc7313e46709a406efdccdac26a545a10e60 100644 GIT binary patch literal 10029 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 E7rX>E8vp<R literal 8632 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 QuNZi0Dw@g_iWb5D3v;9XP5=M^ diff --git a/site/content/images/graph-visualizer-customization.png b/site/content/images/graph-visualizer-customization.png index 0c808278ae95d6137ce4bd65df77a0feae0dde27..5605b8360a24bcf390c96100706e1dbd8e6659be 100644 GIT binary patch literal 17394 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ⅇ?Sx7Vm*#|wa z(MPs|>vY>VC_8v%Hv?lC0RppazTQuzFe|60(OFLu2uW4!0P%55i_?<P`&;`Pp<N)d z<JVyyF3&!@nILqDUgjVn>Hd`UzB2=$OuJwRSWy4c4#ed~Zd|5L%~XNNuXXsLXKx_m zZy5dDyLVc6Z_$l;S={Rjc9iy4&wIw$Rt(jLC#>dlp`fk1|Cx%Y^WY!m%E+6bRtWfc zEKTmN<cNmGNIiAGVAu#>+_ayaIqd+AG9>*~jd|+WO$NlR0n@n5GNP{xe=m1nu}}>` zUC{6e{<t!#Pb}2-2W%0;e*ZvVkS81)<amEwivRdTX2HjLvlZ9YN~U+44w#~HqL9i^ zwFs(L2<XM!3N{VeQ~BEoe+4-2-YRX)ODU3mz|SE)?`kxSy(H56J(1Usj>kDCG6Gv@ zv2@e26LQO051E8@seMWQInYBuzQ>FHl5Fy*qI#+lX+9j6ld6-#u~*4t&1sG+=8Hzv z>MDXU7@DW|&i9he3WmCdmgbsLbajGCZ*|6aQ2hDoS6_lu_ivc`dB~x=C=X%)bQ-+2 zm_8f-n8@`y@f)_4&$|!BKRYRXK4`V-Z~QG~t0SI}MBGF|*({!U%3ONR?6FC9pY-1$ zhISxmXtg@g8_C9ol-I}MnZMk_r%Af=QNbKxv<WwiG?B8Kwli0ZT05eUZ0EC}`|!P= zy10iwW-nkS()eOc>K#3QU9{VE-Tfuf$ohW94m$62fXIEKuqW#EPQ2HzNE`=lgkwRW zNdGWMv4_QjuvpT7(2~vdm?4LFMgv=}g$n8j+G|}22s{Wg@y44{^F^Aa-vX?HQpKLE zs^!$yQy1s_R!n#Obv1qMH@F&d>1{%DSEmpmvP9_H-im7q*w#Yb?b6i|Q)SB@<&RJ2 zL7nS8Nd2}CtU9}kB_88#%5S3@1H;t4gD1uB_q`_vM5$JNQr+`RsbhI6Bcje(=ic*N zSZ&*xF^v6wydm;VTE97moy+c8H|5E1{yTBcaq_FD7ul{-=<nm3&9ZOfi>GkMWmTLg zf+4aN`^3O{poS=a`_E0>AfVd}DcAA6sEpgdS*@NtW-{@G5q*(N@7ctC8^t-I3emKd z+c?qIYW%=Or?bmN2fF*?*nv<_L}%PlWoOUko0rcTec<O>zKze;vB;6^le9-!{IEvZ z(zjttZ`h8}2Vt+u*Ys|uZ#y@d@cH<j2=vx(Hv$=UVbJucpt`jRzu2yBh4oO^RS3^K zLezeORgO1(e|d-VL^|zAkY`5ZHTl*@*|E3PeGN<d7fBhtg`B%fZ(gTratWni*+Kqk z!uI>PUdLUl_Vb5777%{JQ+Hr;&={P{D#WJ^QaW&{)PLz1atzu@@@xBtkR%Xn4bnss zVEF$^KKZaqB#5N^kAzS1qaX<+<$t7qP56$-RYA-yeMiKOLfG8Jq1S}C{-**IYWehd zp=J-v<I^{p#y1Id^*h6}9D~jWA#8;Nkss=f^I$ae+8%fod`5Lh^`G)T*bvZkB8kj4 z5YG0a*w-*0I21Ue+E78J;m72tHx5>gS(_j}OaJc2|4I5^djFHuf3p1FF8q&rZhH?C z!Wi_lDr?84GZsC(41NSK=`=Pk9okxr(_4UGpLM)n7xqAOpaNNbAsTp0K{POnP;*o) z?8g2V8%MAEs#n(n;+ca*yTk-Y6semWJ~V6LFGsPg*%8V~KsM6&*%=kn99-)6?R`vP zV(tusfjaabZu$?OMQA;$tw4t|C}=(Xi}>djObXRQz%UUp)L*vGHrKB&;f~kWAhl#L zt$f0ZBgt(g&8-pbC0uw{!zxwBFz~?>oi>k_dLmmlj$ZB}NR@ve`Gp;xe%KdN^_bwD zGeQ?Xk}GoRrzPKREQU3<znGu{U}6aqoEDxJ{~iK|j3#Fmt8<p`$L^k%x$VaJj8-W= zJ4v72^#L&q$55Sw*~j$F@a!ffge8(xc0TA24_arb&!|=iMw%;De$2P`cpbm4{tPd7 zs4eQkYCD8J?5)2Y%al^{Vi?#F1N_Cxd(V0M;P_H)AJx=%tB}J;bR;D&Ly0U*$gVIJ zo2^P3GCMT0v~CCFi9;*SYIE@+&Qxl;Kwy7xZV#N%0$Gt4q?t)NsA71MN%&1uZA%~~ zuo!U4epNs*kFn>%<_NxG4>E5xG@mgUd>jin{mcQA^vw6*+;)6<43eFIr1<?#+N+u< zV)RX!=thtx2^*0jc(U%R34GiG`&0lH$7Ha6h_ozB&hztOT<qT#RE%H901@+@w!H0v zY=~F;-(1Q2^fqdI?EeFNxCv7@j(gdJbv`;?q{8D>EuoFgCO(@(jvthKWQxB#gh7^L zzal>(&)O{eX<I@LnY$0yV~5l7ILp(3oMhnq>_rFZ5vC4(yvOod50?2-2#|PWoFeyn zcL@KdtdX)G2iI)O3kD=-B6N%u1DO!LSRDs01992#hz<5okz;1Q6J~8+G5ucbx1B0O zB*Q`l(mb0ydkfBFpj>6p$+P<lApeg$D!jwNZwp@MGw_aQyw5opP1;ktM?e5@sNQ%P zJp>#^{#Tm+x5v~QcYQkkzg_%4JLgQp#}z?KJ49-ST_9Py`es&t?tF7t_<q~LO%8oF zUYX$bWQ%g9a`=IRIKRu&>`rjP(LQd&#@Vr*N-X*-QyrXTtYp|Owr@j|4!AxcBjrGJ z^FA5uyLruVc@JzzAX>^Wn6yei!R=+3b3R3+^!3E1PPQ%e3`=C&;I7e`NWMQms~c<e z{u0)=yt14gegilCd7mgKSRF+zB3H;hyeY*y-N<Hk-Vt-RvX+Y6X)^V#DR=nd<8T^A z1=>FO;9FmnJt}7|tWYl}I=0?JM)wmh9>lmDQhs80qJMP!zz?)hC*3Y%TcdG3JJP_( z(M@lKAhtq8XPpYlP?pRn^jzgCe9Z|n8`XUowVq2y^Ym3Iv!yi5RbG5;tm9@ktx)jF ze#fEM<4SaBa+pcqi8f~XwWQP~i;b0sN|`IzjHidT9rXI9TSLXDxXBh{bn!LZ#;sS` z^)}~!wbf0S8fUROZ815aiOrcq<5%g=uLro!Lk<P}XnrpFjlmXXp;iMG4L=MGImCEv zdkOG<>GQA_7(k(m{H~ZRJZOWS|6q-{H7VKx*re`FZn~wvOSqWBuZQs^IW5oJbfM*X zgl3wV$2ReZUI59-X<u&+#D2XqmF**!LAVLa`6l9`@N6|vp)MaFt8#+`^{+|V;$6FL zuYkV^KZxIXE2B~{O?66jCuBbX*lfX;`5#M}Ys$i0pljeBYhH~2KGumr@&KM!46we6 zZ_fj)erQ`=3b-u3YqV==5*f^|9JLkwxbf$%D~;V<`tYV&l@bM|pJZhQE(SWDetn)f z0AE&`Y#F~wO^cx0JB1scFPdn4D0)Wzc0FhEW^~}kSo7@MS&ITtkG>6FI`ZRgWJT#a zNS(sBPfb~sawTky)Jx>4x)eAk<ii&q-2D0Yy3E=A^zDms@%FC~{F#{caV?|%PpPU3 z4ubD#<t`Fy+VF*-iP+4;1%gF!OBf2G$>!Jkdgfg@yyDu@3W$L?)>jj|>x^3aFgAU# zExH>EYg-D#tgswW_4_29Y>jLQ9=K>1ItVG5XKNR>|NH`^q=m^LdcrdLnZxH7J|6Qg zwPGzG;RmIRN;PJt7n=){yGyrw>sIpUD^8zf%0{Yj6&GMC&Xb}RR`y>UdA5Z*u1HMQ z>vasT0fg$ueLEPUT(sXQ7wq@k@x!9_npD+2Mdgy}=c;N>C7zqSf1LX$RLhZQ8-)S= zM;bjs`~|{9?+Hb$``2({OOuyk*1#pwDg592F6qejp&(UB0tnVcI<fzs;KNNi5&t3o zBkcY=s{gNT5(y-o-CdCD0}$Sf`y~U!sTv)0v%8O0730k~DPkS^WMAxvYG%ji`zU1* zmZY6QsH5j`tgxf3bAPTQs>5}fMbeQ?5~%)Dl9XU{JkWH;y0!9CRULg9$9?)9_6tq< zGImw#<R|;p(G!Bt%~=vH{ktFikNH1>LSH7eTl_~^BxjK%X%?rk43BR_+0TUfdk#%R z{bMhkG@$<3w4N=g6Ieo(ZGCl7NzgsNpBuV7X4LHZw+DvM(Ti^WNUO%BQ<BAQ)w_lp z_EpO_<w`c1uzDDlph}%VbRykRBoN~xP|rdX&Q69vf1yzZt{nDD1!u*QOu!~TY>DgD zfmuHc@5&9ccULLzEEEF^0W)qez1nw;8JSha`(C%h7LpWx6D@r#dayS1+EG5Hzjk+z zT@NTq680UBjYaxlk02T9sJ(M|Brt8I{}k=U5XmiDV&duPJ5l9IpoQRyKMbGu&5ZVU zLsGXLRa#;RMsr|vKe1}{p`nJ4sj;UojO9VMgZyUM*>SZb7}mi#ukd7*MPS#cqUGfC zM;zkh9(sQQYihV)BO(N|-t~J%$m(=lM7)kYU|H&fOla|7_uk8|eFA7F8kgYGA~0*T zG@E-}H2Mp`>y4cGe(@O?9lPmxFQd_qZr)+samBCmEAYi|l#iEb1)h;+*CMzrlHU9M z2{vqdHIEo|%YFEKQNd;j7xK;%-CiVa?zGEn^^y77hYQT@5Q`!|SKe{0vaNBTp6<z0 zSXfHPQN5m1#=8Wkt}fX3u4wJaL%wd%=+nLu^Sud-?EwsNej#ldwmDOT6NYs#{Oz?d zciCl38nct|{mgpEXE#B^Zy|@Q-MyvXXNyZuo8xp~+#0XJ*!w0-_}rrn7fFAsrr7Bf z8XeDHGv*<&(G0QdskcwJC9b#>ByAq$*BzTCAr|2>sBQf^I~b$u@Xcze9xT4bi}G*p zvL~8ipp!6Zld9IyVtGEDRM>l9l<A9sSQ6~fZKiUa-X_;9h+~it0GP$yDhnzbT^7F< zTjn+*X3W=&ZSuWGUd>efRQ%U0U230~nYRUij|6_7NKvKRT4~w{?_6_HE`(Tc`q2EJ z0Kox1{@d57u)VR`fInzsbZ_gJuAAtwudzl2FVOM7`KscJu>%@BAnh4!jnyn)qYM?i zAd9~CH9Bt%!uBNK6>-l**9X1|p2PA2WyAwtqs<tx;3euzH0t`$S4F`3K&Br08f^w+ zan?W7z-H9-v9CgN2K)SIEgtwf6?UV*FE(m(A)4c>&^*`i<Vd5%BVPwL1L*3VtfQ^- zd=-gJ70Ny<Ql&N#4}BfkfVV`^Y+r>;3=2)37L!QvwXY}}qO4P22`zt_`U*jSulNdq z_?qIY@2C`C@fCa_##ej=e1#|UmC4e+lj7?O`D!Bec&~{JzP^mFF@L(jcT$ta`1&%w zYQq_<&%{RKYv@cz!6U4{#F^0vzJ|_p6g-E-zLMT1!Q*StOh>`9#^2Mm|Gy`}<7>b$ z3O=Ao@Ei^Y52N72ngoxpVZ$i+kS4)%`WiZnf)8jCJn<SljDino5<Kx5I*fu3Xc9aZ zhl7Vv@Zn5?$Jg*-6nqeq;L-I(U=(~nli<-cco+pA&Lntr4If6qhca9mU0(r4!G|C# pw!Q?+l@0-HMOi>r008(te*^qQPu?6G*rWge002ovPDHLkV1n>j4#EHc literal 17314 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 diff --git a/site/content/images/graph-visualizer-menu-canvas-action.png b/site/content/images/graph-visualizer-menu-canvas-action.png index bea7643755215e8efc10f17cfc098be424002c3b..831b1d387fd5a7d9120fa80f9f1df1d5d0ecc16d 100644 GIT binary patch literal 15060 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 Y;=X9{p4+|s^Pfy*MU9tL@*h6_A5c&`KL7v# literal 11317 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 diff --git a/site/content/images/graph-visualizer-node-properties.png b/site/content/images/graph-visualizer-node-properties.png index 83a8f731a04839a053604c4b56ff2d2e19354af2..e4bea6dd20eb3a8bb659a71021b80c542b918b3a 100644 GIT binary patch literal 20966 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 literal 19492 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 diff --git a/site/content/images/graph-visualizer-queries.png b/site/content/images/graph-visualizer-queries.png index dbee79d2ecd8da731eb12663b45dbdfef149f57f..7e4057d5da05eaef98fa9efb6314c6bf07de96be 100644 GIT binary patch literal 16054 zcmajGbzEFA6DSI$NP(iIz+$C9p*Ur6YmqJP?q!kP#a#=<iXJEwcUau5xD;EgxO>YM z_fo9b<NNNr@1J|`yXPdonPeu(Op-I1-$@douKNBdJ_sKJ1LLWJysRb$1{Q#U@dyVG z>mjE<GA;iBw5Tg<%RRu;)6=7)qx<{&o12^Si;L60r^m;~d;5FnKR-A2w>LI6e*OA2 zy}7uwv@|<A+qW`0H8nLnJUlQkP&e6mTKBE5udlPSvuL=nsi`Tmud=qbw!FMNwk>}@ zI<~mDxS*gQFE1}MGt;*^AuTN}B_$;>F>%|;EiNuDJUrYm!w0Rc@9*#L<>lq%<RlRZ zMIaCs78cCDYDPvzOEipBZgOgBYJ_%Ta&mGQR&OLEBm@KmczAf&*x0IzmaZS9CvnqM z)xwZTdXWGBd+s!!@V~*pkVsdMeW&fUxW6(IS;mX;_Ji$BRJ<5>EnZOB{-fY=%?!@X zTeH2iy!On6W$EfTmkyP(aDp=uratS3dcSvN{)r{}9(6mYw&3VJryGiKtSL7G_CD8I z(xIh#5n8(E4@9%zV#_1<|LkXL^$g%KYY7zXb2|#Zcq<yK)t`||Dqs9>;7~NH@X-^B z6&Zk*=miVnaWN@|z@urrPasUh<F~*Ao&$NnZ{{}k`X32A8Z_?cr0*~*CY3KF5Lt!( zR;7^7KtE?Xg}nF}(@5nViADROpM+^lJCN!3C7nfdRZaOu*-TqEkz;`o;@OG7b3i#L zIrt|KQgg!5g3>JPJ`NX(JR#eRi4%DK#@y}kx`i>rhU^TR);j0<M+;-u=;E3Lf<v9a zd8$TQCPcZFq5vzIBRO<j?p9St(LpDWEt?qABYPT;*2oV~j78`C{+f|J?I7@ch-xZw zj%ur9<4;!{LfhlKYkJt`ub$LiJ7U^~A;Y((tkj->v2@UPWFr`BrubE-s1#*tyJ)i- z(6=oF*&qBT^0%@o=KgPY9KucMb8v#sAAe2w7T|MUS0QU<6QJWeH{c%JGgE96aM;NC z{`Ix<^l%U;DfYXtjc;?M#_ZF{a#v;h%&8^Q4A<bu@|uhrJ6T?@quxCF3>u@FZGd~} zq(R+wYE5u%Sd<apKJ$Q}#@;b;Ui{E}MLjeTb+rIu@qr?0VDGn-y|1m6jX)R4CStnI zv^d=u#?hH3Kd7~fc^~Oasqpi@=)J$=@ks4DS=>Jm_-u#llz#>XlN^Vw|FrFN4h7m2 zn6S<^CW-qWIW5yk`;GpL6G)Q7G^OB@aK;yB6nQPqwKkO^>h@}^NYFb55f;Y!GBA-y zcrL6viOsXNtP3fr74vVPxl4nMSn--ufi{l3XNsTHDhH9EQsj>w?1;O7O=D^Bwjz{2 zS6X}uLB*_^g0Oifh>W1+i68xxpqT8LweD1Pm^308tM!=nx%f@A9&e*^m1cf^6$MdZ z4_)Ax;*p<r%dOjPm@r|f<m2`e)>q=Mx$Fv6*2H<jmhI&pOPC3~`S+ZFD-7kcKi`tv zmp-@aYOFlT1<($~D9^Yt8q$QwcQ0|iUA3Xdzs<>SARTcwp2avLshGOJA>^H4c7AUd z%ovI)cqbL189Z7!k#w8<r({i-_Wf$U##}bI66Y**S=|Kbf0g)_b}8Gc@~pG@WNk<Z zT5j)v@CcI}!(ATN$H)qR9h3UP4CQoRO2Rqc=FWvh!&<2RlHQ`o8<;v>1=$znkez=w zG3Nz_=7_M<io~pO#uKMh0Ez*((TqNj(<GJQIxLDZEJfc4*UnkylS0<r#Lw8T%dRs` zu`8w>F!6uDSLfe6zBY|ZY{VhIuxOOw%U_;R$VYi-`TQnlX0{x;U7PR!VG~zftm84I zS=u&+89=Yb_<M(hBSg-Q5c_1*I!VdcX3X9aQz2zRSox8rVR{yoXC|O|Ir>HFNbKIm z-tt>ovDF7{cCpDbJ0!mE%z}5&k4`93nc2%4okEN(HK(SrjVnHvlsYch?uDd2?nNym z?uJVUtGP7|L6)>^pM51#(wNjRa|unGfgBXm1=+GJr6<_fp~o%uVo-4lT8~n<>)6Gs zfU{*3A48>H*Goa`%;;(G^u=%7bj2jqd^b*08-s7+bpiA9PF0u=H3p;Bwf%bYZ1Eb% z9_flVJl1yB*)-mpnS}kl6)<EU<g0a>5H>&SlRVw^nZQ$J1eD|pmY^1m+SReWZgmKt zNjsPrmSywHwpc~i*Ay)%G{33e9s$tKS{Z8%I!75-lFiJ`v-QQb1WUN}aQ^zn8!fu% zWgVqm&YM!IIL5!KQc#}Kt4x+4Yd-|gu8|0oB<0(s^SDow;Hue)Z}ePjeSaxfD;GHW zr<AGiU?4Q{=T0x=<Vzc?M?BK+C?d0M2$Fb)uB?W~Hyqgr{y|VZsSqi=;7t8XpSQqh zo%U9YET8XGR$FoMB-Z6~2~gzc6&r|c_v}v+j`)?KovWSMY&^};(ecR24^(Td*vciN z#_B@Z(J%Q-ON0drM{h%89fwX$p_=!*;egN<5t_ao7YcdQV@4M{&f80qjPVgMrmHQa zFx}xP2EhW`Kng-elGxT`@vlRX-E;RuAV^`PiT3nQKa9)sJ$4=#7+V}AhpB!<fVWba zM)}@@oD%V$H)se?vmD;y{**peqQ&?QnaBJ7_$G)6g9EeEf$+OpqlUawF8+6$z@l}G zYO>>AVGP~Tf7yj;Id2}#hqD4$#}$I>GZ+|xk1))cFsey0FlaD8J*?mJco=q%A8Pwg z?th3hm>5xuu*0t8U^80G<arpOgWW%u`oNg#lSed1jOa%&Kg~}7<$QSKU{O#q^?#%= zXL_hd@Xn3Kb#4NGn>MQ+o5pboVsB*lw4(1S5D>D1s+K+4AQfCK2NoxX-nxeXLPj)3 zhSXf6BzA2YG_IiU-`MR!0FLU3iCrgQx#|-^`+b<Z+yB7wDT1^f(|llhU|?7(R(UZy zBu;6#BdklAqmthd6gGF;L`z+9_xW~MEQ}lXob=z79wAMa=TejR$LnmQMr$K9@5jj% z*+PS(+AfEe=xTP7nb0mzctATvojso|+e3*>{f`0m_3ZZE{^~WsfDi&btU3>2XFrd$ zr?oO#h1~ujyDbBDbKf8o|GNBEaWQAm`+X23=y4z>So)&}wbXE8pmJ$S^A(!=O3*ZH z-V3vj&tM$I={trh{tQ%WJelxd5+ow%TjJMKD)=j-bMSJ)%|=<nUR7|{UPl5(^h<v9 z8-HZnJj{%O><6aYnWgspoxTK0#!kcD9nZfs($X+LkFJPFaF@}8fdc~an5bWCvbk8& zKVe=B`+R+SG<SQLMQpd<#S<jk7fUNpGVtW6=<)DxHy9s7G!flYp5l*~C6Pldd+i9M zIn)e9VemeoAFh-M*eg{4u4Iein((hr%eVpCQEFFB8z!rvEU^U{+8OGLbq51tnt&wW zWuEd6KEHVF^tJmMNB{QH^|u%SDR9O}HrUT+yyJ1Krpn3=(QEfn_BK=+G0Q8<BMZ1f z=a`FEbH6t4GLl^Klko$rNE}%~!=H8Rd0m(_m)s}vSE7(IU#ONN!<MV)lpbSp${D4< zkJBX9!v{2mv4&WT)}pR|I1VXqbFu9mMoP18+N6zXkFQ1@YQ*UrHU6tQ);79e-hr&^ zYpM<28fg7f0O^rd>4c&P^b{Yvwq)`ef0l2-iM4xeh(XhHD5ziD>+RY~_cRA{-q=CR z1Etm1v9J3PfnJ&v=8{Fnxb#k63q%dbg_Ao@SAI{3)|OV4^-Hg}`r@mI`7#DmL*~iw z#}7f|0(`wH*_h<y|7OqDZPRct%e|O0i$dhIsq`BYYP(sL-$D=l-H+%~Ujy1kM5gR2 z|IA}k5zoqKos}L5+KCANE*B~&Is#iyS9U!U<)XkL9Xg>LxMc&<nbw{2YouM<GOzkZ zNqXiE!ZBv*KX3dx^jpQG&4P<py-4V0VxrMb|IkFJaoqk9yO9`hJbTV+m{*hUR*n%P zCm?x5QxK_O0=B1A5W=)av=)$IG*ZiVnm5bfom;%tfJ*5OK$`S@vpl3!vq;jdJ`&}@ zdF2%qYyf2TdS2aY;MRn643=SC3Ln-bgG=Ff+EKVmKL03H6vr?YNl~!R);!2Va$O$) zL06f;n%4Kc15tZK``>?<2!0>PiWYeS!wnBI#~rl#ZIDzSoH>VLN+aix@hrlq?HAaV zyhdG!{+j0=hb^H#EgO-`Qj1S*n?L$Sa#ShsRhKkgKj$+xjL=GU$feSD%@{0F@S_J$ zR50QAll=z$`nNYE*T%k}vv*KQ?2L(G`ZT_Rv;=WeV3|ipsz?LqeY>R&+$`Tv12&sZ z*nYPHbK*lZQ&fj2Lt6~BM)sWKpUDPKIfRQ#j@=bD!MdN;d%?T#LDB<WeQ|%7UveUX z`KcM~cZcUPf`<audaNq29$8l?Di0%GoYsW~ju@k_JJheDQ9+3Qia0NK8-oh{<b>)2 z*iUMeIj!`5#Z^1O#2vYJ=@Z5H^glm-QD>aHiP)JRgA+!goXd7z<L`TGzTe9>D%qVS z7V-o&%dv8QNd&?YOQJ<2ro2`-Ct)KFc_*|o?!A{cxhJ<5fUTOpUB$;-zJT%YHqLT* zyDYMemeDM^ULLvE-e4U0tY=BUI&at`{~vcqKUe4E4jIOU8u*nfXhw!VYbxc`ymWFx z2o$`Y6*P5hco8Ra%L~k5eV0dD_MVY7FWak=kZT=2t(jyKtktBO-pT>j>Y1OrcAuPs z5!4gs($Loz`pUJEzTYSUW(8`L|E4ddNV0y7YN>luULfdyZT%D-FIwgw1ukTN7zq4| zkFFpSn?A-l=1p*^bh>EF9(?wO6X>Qmx+3yxraM5G=V6q72Py08e407<hwWs3J>zsM zJ<ppG#=-EJws3L4(ef$16!?x9)(aWqbP7b(a9UbWU8h~Zqrfp+&%SU^rA(UIG*On6 zL@p#9#mo|8^=f3RwzgT?c1+AC=Ro*Deg9D!)|z&0TiVb3&yavkDtTXbMFPuxTG$)o zj}82pKjC~JW6ucwReg{MEwKos{Fwoi<bzOcB&yaml*FEsh5$fNw=jU#(jd20=@%?R z1HTA>1fW-5`+a6?5}Xsp?Bu-$J92#UF>lRbj}*sM?g=sCSJ278Yf2-<$2z2qJm7zc zkGJ$|LuSQ$gB|@Piug8)?Ksq)c`75}kFDpf<*&bofyTfPll~9)*ud8C+C(ufS<h$J zMLv0%-nS+~oO6P_F=n+H61Xy25vOOvP8LP!lLH4BPM3aBr>kHH-3;~{8I>%Nyx-ph zMUQIRkD{FA+k>q@<asZLmmEq2BUuyQt%zlGtU%@(y>)#HV{lg_IU?Rz$J)!NLT=Bq z`dmRJg_;McBcm+wVLtLGR}cY83#V62JIZ-g3+=b`PrhMHwTR-qePz)>z?Bef@`uYa z-vjTaflW=qDz){~<w|MSf8&>{VCh9?0}L(Ad&&ntH(ihrXPh9Q0ZAsWz)BMJ>cwfP z#yiUc>!W*X+h`?nt7xvES0-c4Zv{Opu7i=kyQM}ev}V5X4J&O8;XW~_du?N5r@b&M zqW5ETzIgJRYo+n-RDIJtB9-p`O0yB&kP9Q*t#sS}aM=Qdwz!Sj$E-|nY$fqP6?-UL zXKMLWqr?&^J#%Y0hql~Y_TglObQRHv1!0ak>v0O53Dk3`rG=s@PsBegnzdU56lwPS zEn<e{xq|ZUnPHi0c+F-kmjP1|+_}QYvq}gEI<!Y}w`jb87;<H17Sj(0w`3By!y4pL zqId;qS_KmBy30?98_uOTDCZ1RX1=ZxNVSxe<N?VBi96o~{nPwA)Y1Mv_r0JPVk_j2 zKL->^%n^JD44Q9=^nz)22G6^>bsp;ZTEW3DKznN+{kNLW)4_hBixgsmjNZX>wcp^P zpI8Ka@PwL=347exYz5eb&<nb-6A4-{v7%10A^~0vdtns{ni^+jL3~yK$|Sf7>L#2I z2R=Q#P7*Ys!YlM$5W5=!nhLr8bf#Id$98RY$XfCykpaA?G~QZ|9-O&{@Zi<iJ^tUI zpM<`}QLkXkh1f7*IF@2O_-+p_;5^;~{6C`qgMh4emP8l5NULBpN2~vcdPEmt?Ta@r ztiOLhw!OzZu^aNF`7T^#Ul>U(#(Kl}xlZHgMzVx_&Ci`MbHz8HiC}QqH#;n0zikbk zNb9E}?`e^pe<bivj&`~&E=oqtGnW}aE{84WYaCPyL!68D#?p5AG#GC|W#Xs_yRv`r ziL{RD61{Ac(C|X;(v}MvI<dq~5AKV&JOPK>6}{8(wV|UQM`53Udut?50UW(7RVTi1 z$>z>pCi*ZXtNd$hARI$IZ=ZF*rf|5fYC`2pej0Kze<9qu%|2Xni#IQ+#Utn|*g{b& z1FoWG@rbU&08U`PHwYp}8y|^wNg^jC2G?fzsUqFXRf43x4^AI1wHg>y+ubq&wEUqj zHLprTGEo;W=39C6Qw-%)SpF+nCNcnmGh=(S<@hJ{kT^%TlmJs^D5!VYx}8K~Bx*9^ zEu}Xtre4tpi7tjWK=u0)Lf+?cTpP}#R+&CVRNvVauE4}jJp6!Bt2frNLKbb60taZ! zZm{<750TrigP&t%WFDZkJif~`csX5ppd%U3<d2J+4bO;V)eQcfL!CC3ui>0%ii+0p zZDP;(g$kUQc82eIQL!Fi0eN_@unnUUwlX&#OODY^iDS4GIzxqM#>Ct=-XavBKlGzo zdUP7dp68ni^{S$M!4~ZN0GHFmTL$Q1IsI?5@d2`^pXBi0di8w6hw5gp(m#eMAy$5W zNTvX~yN7MSrdWON=7fpy?!Lg5=STQ?fB$?BYIfk>C=cA*`#i5!>No)lMy8@j^NHvo zvTvTW6m!0!f&YbmVZZzGCcxf@_f0P9U5FLli(!KHm&<yTbae7ua67z8A8BYq)AqVJ zm?6-67U<*9;C59(K27q|iE6phnD-TKzGpo%0xJ@%DNmRXb0}gVE_K~-AoV$d69b5Q zX5c>jb!s0oyz=suF6$8H@#^W3aVo@f)~pw;3*MCA*HS}Z_>49@UkfO7Hk=yx<6<D> zSn#$}=F%1%iRz*1prPYcq)uZNj6(%@j5^8LzraUIz2SQ&Ba0u$OOQAH<*oJQ>iv$Q z$NIF}m&Jog9pBMdD{Q{ivi{WOi_$8wr+xR$g4U@E^BR+UCNvb=x(X`a%&aad0Qc45 zc8R4$s%?ueAU*j@Z$ay8rIl5;NDdh<g-DHdy>#MXSG3Zi*B6fy-Tj-eS|z?)I^8H& zr2RjqXVHQ_Tg%=ywfm^%n!#79k#h^eJB)VAN@3-a^uxM{wQOf!^fDEi$nWd9@MWrC z+Nm9S5&r7=EK&UOKOsTgD)qjSOq9h3^laxGt1^$Cbs>RZsw?OD51Zb;X1@6Orn7fj zi)JQ8PXzs)1!dlO+pB_Bu3uZRx?5K=unMA@pmt9vbTWvSQYuW2k2L9RDWu3acrv?h z9WH1t+%Jp#X8n=&X<w5UtvYL{HkNAr2tWsIH#LiAlV8j%MHLU)1yx03RjdL`i-;VC zCEp4X$J^Sn?g)=P`n$Bt+3Y^)812j|Sjaf;c;iY_hf-4zY`^h1lzi&VDS2t%v^HXp zQSo$v=iuu(jm@fmW*@xm)g}Zgw&voV07rw9JQq_E(H5Jmx-3=<FVf3Q1FPw(s+i11 z*L$0^Xr@TEh5WxmT=9!il$`x1T~ytWjGZ5#`B}9LF8B3<|0)%?w0kUfo6>t|nXiue zX3o!F&>hzC#RRpWj3vHXwtWn@JIrJbSSWH_4{@-7MvHypdm5OzE5%~nS?_VWyY`D$ z?j%`BJyps<@bt|X5lDznw})nZ&@OtRu^}%XB1p-ou60|wZ{&{~V#h6$({rLTT^?=u zRp@c2CiefIA^u-2b)!8e#!vDO_K(er@c%DX{J({z=0%Vz5bsxn4D(dlB;nfl(z1$? zEfn&f-pUWup4_g@u60?)zdpE|XdHA%=f$m{BM!zA@1i$tTSRaG0kGvWYuCG~GFJaJ zMPqKjshK5MW5Nfe3p$#UwXs%`1bby@oLZ{v4$l@0Pi{#qdC)E?mfP4BoMgeZuia`{ z7uEMJeJAvz2Yp%|%49%xK5V2<hSM3U%_*X>CI%X<61!o?uMhggfnWTddWn4529d)E z*7-p%V{N%(Y`~w$el{p?NCJk6{MtJ`eCWSbOU(F^Ekr9!mtGIV@EIka=BYIn&4NQX zF9Ksblgyb-P){Ot_<4a-zMefkphP2MZopDoNU^&?tkrW44Ttb188x1TRDdP%fV&+2 z(MHYCqQDQLM5N@7h3+Y=?v!sd(mtb6g(S+;uZ+g=Zt5{zIkeuO&I^fC*b*w$C?sa5 zhvDu+2F$oe(D2VyOf!k7_e1NwUsx9we_KURc5buK>Y29BiI)UjG0_$se)_6DqXfcQ z5G5qhVm!s6DG(H3qS$3&-OWpZhMOv9L2D<QCNJgHgb|zPnV({pJ1G030{EYAi%!+{ zzPyY^{a`-5e}=T{2i=*6`ZV`A6Gk(h6WZ}7aR3|u@jGO+IB%EuYmRC|g(I&M)>kal z6S3gPe7g;pWG)}W5`H=V)idlG6*Y?8KGSGw|ImyN;ok2%>@F42ifEY;8kvHEZ}jlx z^xw81`^fk1q5ncqlWcJNSdE-i?Qlw{vzW9GuFSUA`F`(z3SdoyGilg*IWFISMgd8D z3Pth0=uQ1zwwlV^KS30KrB8_rL#Zr$+oCF&W?GBleBYz*$7bG9Z%OR%z6Mmq=3h$j zQL-z+QhX9183!K|`xatw37_wLHo6D3iS@ryw%zT!{CmNR^iBIv_{t34<_m(_mn*~y zHW7%E)7GpQhD8|PyMq>1+fH_3^qf&cJC%LueBZpMf0Bd9T`{tUIN>4Fa9(V6KG((9 zky0r>E<CiThN0={y@hVQpSd2s6f*gyp%0z*7MiV^Bpk)@w`xk>J*B4dUJ}R?SmEY6 z>wPOa#QuR(vry49c#t}mltKMDd{#jPUY`Wh=}!9OQSO%7G2nqX_dynb%q&&fmshpn zhUr~m1SjVmse^h}%S_|?(5tm6{k=<usez0~5CWOUR#~=KAMxHgAc-?3g^j?URBf1^ z0Qnk}L<vwfp<H{9TGR7%)?yN#PQIT47q~)NJEdA5g+Usz)Yid^MT`hG8&GCFdt-)) zN?3&0$4v(Jlp7I-Yp`?s6&CA)D5tV<O^^Eg${y%K+?jppc-`|9G3VNe$TPwxjDEeG z=ChD@$`{gVx<L$K+T{~FVvG0@q5OvLdNrx4sE7HbdS1^nI&HUoqF|e%1PW-gDlSc= z+r?ID=a#OkUisXSB03&24ef}j;E!EZe`SzP2GcGeKsM}0iYhO|kNib7`<gAWOYZ!% zzYPb?KC5q)8p#-)mUMmdtz)2b^3ve>Rz$?=8_gIaC8i<f-1A<tsd+avg?mczrJq0; z4{Uim@?Ebf#$0AK4R(I3)aWwmQ_0!JuSAG66Ss5?^{D~b6#@Lm!<I$FpgM)iQ@U5X zJYA1wM6)Mh0Z;Vb$o<$l+*eU-xyBk%8}{p&EAuRf8=t48gefZP1%879;7!q2B0Bje ziVw0X|82h(0roMjE400KiN1KvuABj#GlveVP4C++Bfv@7Q(gjeuY9`iI&w(sdDUuN zzd&F^W38>GSY<1efH0YrJnj%PCD`;~4AOsbC=XYjKyb!|_D7#Fw6tbj&m1PA)O84> znSi1v<{5a>=x=T*Y>z^h$0@<Jc0WMW^Iq8L<mLITdc4opO^0tbfu2qeFpu4meWwrY zAdklF>S~Bkddl7sSYmUL)~>nye!7W3lE`6H;zE>e^FkRpwfppj$L$dXMTTX3$Nm#w zZt_DO-ZUJ=H7Wlt6eGAawLl|u96r;U-x?5|`#t@BhLfNDQ%8Dkgg4Z1Gzr4GIqf8W z=UFaTx1mm6z{mPT-J<;LSHZ2BVkQ~?C7~G+Q$5Oi2K*J{G2j?kT0!vgK>zS63vL-V zsgve@{#x4MGy9{|eC|m~>;V!`RZdTDrUjlNa$DI5k4?u~d6R#<wDIrL7MYgou%wim zf8fZM>3>uxwDaCrtYx71)L01)a+AYeaG#xgpFVnO0M)+11*fG2NHdKkOlT_FYkOFZ z4W8Yk`uXdFQrFTv%a+kqXr87FoNMFgaW56R!ZjJ_XtL;!9HE9g@$*AJ9KmBGmr#A{ zS_}jPI=G&cCzhyE-gwJMh5Eg(ln?E>{{;EU1%C#>WqccG=6C$$v?ZT;O{eSmAAwB^ zOWnj{-VD<0^1|^D-KeGQM`IWsxQ#bjuJM!8@O5=YZk;a82(AGC&3Bkq>k7$GY@pJY z@HRnG1#pfqS}^$~AeYvacTtN0s#$-<c+x@*(5w&`MY^-9f?Fhp_7v{zv(M>8XbC`N z??UC7T%<a3wj4OiJ5{UOsrX&=2ealp@9#s2>LyQ~1`tb#bgn6cHfdukF*oGxc`z+c z@Ixe=MP@Bc@eH8by?5J772`ENJ&v;Ja#$OTGa@A<RWuXwMQ1+2;5_5_^9Kt+AAWqv z1bDyk2%3cPkWBAT`aoIe&-rasi@)kP3}!i6cKof9M$_%`uH;kE_%nfa<S9a%lqfjk z<|9?h=(dbXgr;3hV+1tVGhq3_<`Y0wkQ^3sdE1BO(~H_(N7*z3I3l_E8||r<oJ^?K zN)Y77&tGZo@<<^<ZY<<&zhr83x#V>mL^myCa@+08TQ8h8P-gX8T@va)C#ixEAyI3Z zk1xuW<0aNme$f1Yr=TPCu+(2i`v-7Y#zRePU+x-;%t0GQ@}jK1l*R0u8*)&cGw}wA z>?hn)1k+EUmm|5m6))y~M{9@Aan%Zs9iRDJ<QxAuQ99Ps;<K&4Pp!CgIUd-pV}OSc zO62lsv*h0|4oJa-rO$rWa`|<+l?UZeeXyAPMr5#&w0{NRo&AKSfVD}{y~<4a^Wb_& zFBjmS8(VOQQp~4^|BWbGLc6!+#|iy`>+)Z=i9m!+wenM~*ak*^5$lG}sbo311x0j_ zGXn`J^vvNP2F>czI~kS`{I@c?*|%?*WcT`%nRZ`hHh9MV>o*Ra;;9q^`(@=~<Zk^} ze>@Z&NA%x00rXuUspS_`=zkk-5gFFlPVssaXf}aII7g8(%@@H-4SyA6e7>j6XgXJ* z;V8j7w=P4ZV)2SbDJ0=914qdqMs*eZ@fAu0;1RX%xUs5Hqf%PkOZ>aW;Sr9x#+ST$ z#olN+))*A0B3udfCkILCbmjHxx@8K-WJK5$`^zB3q9+$gT6zpZ2IcuV#vV84OSd_I z9W##HFB=Hswey5_q;$VKI>z(BL;f^<1Fz54jK)E7>QMP}k6Fv|Jv)ZD7EYg*^R}Yz z6H$)ROd4I>4>LEtjyf?Wyol9kivu+1_5<>Q#GIev_vWW}L1n^ZRb^A*c=Ws@dEMyb zV;r~K+kQoB&1duhs!UPSBw8S>&<jWtu`1XBHPv2o*eh;jc6jytJo>&<3`n+R3-x?+ zcM3BuHjj8v!Y5b+^0%IR@cU*Uk_9N&X7te&3|c}ze2-rZz8Iw}b4y!f4{r7DS%Yz0 zj;SS&`g!80LxRpb>nT>ZQ_3Y<^GW58re&G#<j*pLk4Db8hutl|mU*mhyFFzsTVBsP zI`c-RC+X-Nd?a(%o3T%9zIS$STFz03{b(a&FP`h18zhlDA2|vh6(`8cO4Ye+PqTZ+ zv|sqS;!$`foy{%d!*p4odFDsY0cAk!3!}yCUDn+>K)FWkQXCA(sbms~S1Is&A)iw5 zy;;VxF>d%{OGYiXEGE%U7%!4|k+kfn$tOygyjh5^HR^N&?2T??qmqIA=g(zqf308w zFLbpu*`c6i$^F>u#C53&s=}k$Sdq%<f0-i;ZePVh{^yL!W$;ixr#^dDu~Szc_$MA> zn)=IJr$PNQUg<kLd48pSg)c_7^Wq5*r3xZZR?|jgTr!S}*5q~wsnx@VG|NF}#k?GB zaJP;C)aB>xuPnw_^<I|<qOy-$nw9t*oenCX_p2S^S~*?a#&i1-Oz<*hcWWvI_KjTE zuyp#fiU*ZdckT<*Gm;xhP{8b;Y#MmJ8r-<lT*HFEAfvi*qoB<*1Sk2UG!xnv8;Z^L z2A5VRs2OjP(CBURGR#+R2zTLg&1l5jQ<$u8mJ`hHWkcrL)Q70MQ-y#j+~~L&n`E$I zVI1TfAM>h#6S~<hpcAgf{_gg9ZM7XicBPBb1?}rk0%5t4Qz^HxMSQyLv3_UlDK-RN zq@Qa&c}zqo1S0<u;=*A|@lRRF)S~|#jZk#@PAaf82o~-7SnNc^S1QdSSbkBCc;LFd z%_Of%pDzHJF9s|Y4R7>#$f|NZ?&g+o@naX((x}c>W|AC0p(&NMoC3B@w4;J8uWJ*v zN-W9Yy`Hg*I`5gYn0M9q@=tgS6Zk$q8ojR7--+f=OIG~0ylz8$b{OzT(@dj_7Xx)1 zivJ-4KW~c&MK3er#qUK~k)g<(F3%*{S-arEe$rda0d%$prgW#jdMeo}cIt~<5?2|1 z7aCp+E)~f)V8Ol6fc4gkR{dRFtLJTwIm;3`_}OhPbr#<>jj?~;{UA{jIovW;WZv_t zr1w;OR}p<wrO!)U<6B=H&#S-d`ABL#9nuwErj+?Umy|+vi4XdHCIOFgOK0t`wZ9Z8 zUc23f_R9rX5Fd{VFLk0<e6iG!c=D|d`d6iB@7`|Ng$k18C^_->j8;Rlb==*VX{s4b zaTjanLn-z{S<ngJ;ZKb~wD<HGxUyjq4?H_5Hi>tpztvwu^?mSVrdfjvdz>8^=ob-a zFH$37>wof*P)tfqq^N=a;2Z%tFWUYq0y8+WgHj9c<w;2K-j0!d!AU}_lfK}qes5_0 zyGb3sbmMQQC|O5tBauXT!6(2An!P~Bmk+(S7Xtg12*H5d#kPwf?8))by#6PpTVEor zIKUx<cHM0F?@yfGD(+w1nb~Gaw<eqPKKzgwK5eyoLAf5RaOv7|Wq<-K-NiTlII%Mm zpb;(n7E4soO{=4#B06e<?m*w`Xc;nr6YV4RJ|sol0VDZfhohB3$w(7$yd$70WqXKP z(4Yv@avS`MH4MH!R}s(5iak|To%yO_0^KcgjhN}xYA@SCk~h;?ymq0Q3mabe!$CHy zj#goKL+a}m#<|eapj>qHX;9c}sc5GI?lIW*RqM=BYmUvzj+|8BWcnzr$&2=4>Eh*u zjAIF@o*ps*jaDr~pWLz*A+ERDGg7?@JNJpm4T2=q&h|5sjGj_f@;TQG%T+z%XUNnD z@I4wVDG69?n`wIfPkiRo)v&{4y;eZch05aSyfw_B*bH3)B|LNR{3~;X$y(&#p;B&X zC9tbjTDMt$gOoSUfp9H_F`_PicMNd2?uSujUyI&<`l?k%wPd#<Fq$#t()ht2*b^6- z(MP_@;wX3C%t&f|nnCS(0!p0<0?lbMxf-gY4H1^A1PEg#;0OF2U@M~L{=j96jWAvp zpP_a&%!<iD$&G4d@)d0;27-9TEN!;x#i`x_Q4_9)kdhqK#*PS=KoCd@$ePk*Dt5;H zn~}8la18E$e<V(w=`ApgcOxSJ!e9uuVfxOhgE5V#&V=!Q=Kr6hdpJ<S_d1yr`8)TP zJzzxCrsRZ9V3WHI=Fm)9l?3l8?jU{bS4?&_0zD3Gn|I4y8i*=Sz03PZ@XNIG1ihrx zk%Qtt^rO1s^4$1VYoAiDJ6YOFE;o~+%@|#^_D{X&W!{DgbOR_rNyU41CC?^FUIs1w z@yP}f`I-r&=K0fgZ9crf=Xu4KY{*$S{^H@>6c@h2fYaT5fbZ#qVrZ*Z^Kg6}TMzul zt1V~RKKU~LqPQ5gPnm&%{yGOhK;a3F@-wSXtb-yy;<rJ|S@Kl4rsoOEWkh#d^u|il zoFCwbPo46%1Y*3eGzE=Ih%0GQ?bEMLoj&H)l%GWw*Zh=-Yaq0FJV9b-lY33#^HRj; zcrp<X!*!I+Jz>&eR*m`f-T-bqBYc_dnVTP)SaqG_^&&z*ZVuba3ghcmq|wNc5ZwL) z&T_J0Fr{p$V6(>l-01mZx0tS%aOqi@UUvPrwr^QAzh0&Y*3oN_Pt>bWn5@m|f}}>f zhKxsk9)5*j8Eex3uUd|KG!CUj>oB)%{W~j#{`L0+h3Qj*x{%J_<%jxf+o1&-SdG2U zaTc+EsMO_mzWT&dWKwwYm@to^TGQLy;VEl*k$q``+C+<N-Q=ZizgN<3bAbkTvp6q9 z9?jyL?_!DmyTQB39a?9sCx-x)qOj@lV90XId`Uutgq+#t6HQi-$~zr$4W{CnWA>^M z4nmbBZ5EIxvuq~KJyM80HrdS?srs{r`{%>%@yB*&-Q8-8DMe(VCea4n?tAi9%-aq> z+&Jqe(b7zw9DtM!4TjelNdCJ1q+TVl3CmneFcCG@%(vfr$$Q1!P!K1hYqsnHn<6#t zRKA05#TbHc^LPo(G6t2aS*%*spU}aclri%@alJG*(EW3NKP!!kq<%ILX)<-xjIZ0y zcIvX2T2JtC4d(loyULl^Zc8jr>J#)MDAbA=wzehUKoQPZxFBp#e05bCZ^1B?i*K7j zi@}qKzy%lGf;e6QgFC|TQjNoj6~^PxUFi$$C?}AO77&~KUcpwHY!13j>L{!ERkEyR zo433$;CbZK(ad_0j=<|uqGAKIB}JeI8ngG?Gfd$m-%wqbPlvr;gy}_~#!ua@XWXZ4 zH7&S7BQ|K25QiTJr>EOY81*~j7F>ds0)@ZXRq9Ar%fsr&_>FYZ@pxQ@K{gGMmaH!Y zFkqi_HHqG8=Wt{p+_1d9et%=bR45Z+Cs=s?_v)h)4R*EC0bG3qk$@BaPGAI8jBz|1 zKBlXK+dH6Fnp&%a;Ujv<_daxXC)J$`!yezeR0EWQe!8i&qBWx)@w<+%BBDJ&7x`3P zs0>u~R&Pt7g-Cs^aAAHH9~>&*P&!G`65lH9iV~@dJch_dXWkoIBXTy^+XYdna}2eA zg1RXdvTe!`E$f-i3};jCW&K0qxBmz{$NZi(CN!~OTOZc?*+^LS<`vP)S$Wy=xNre7 zQd?#VK(-eYq0dBG19`}H`xgD}kZ=|>EB{x7tEJAM2NW@Cy<Egw9=H96@6~4kvdsP# zH46i#iH-MAi;jE<v;v7;H|qq>8uNb#e12^j*yvl{o$X9}f1cP@Ox?dUNALaj7@a=b zMD*d-Y#P?2SrzP!R-)~HA8e!vRN*w4HV<MJuPm(^F+uZVe>eS;h`BBNlDA6_`F2z~ zkz}<HL)==+Inr3-Oh@XFaoxX4*U&Ij=Zq0Rx<~O`qh6hqU?t98R-NxLGjnst{hSXk z++?M$a?d0CAfxWaEW_IlWH3;rP(KCzldE?B82FI(4@&kmY9YFqfJ{WSq&ta(Y=%6I z@2oN9y^e%1z&Gb1k0W4*7pRLwKpkg*D2<}RkS|`^kBAWLhEUPn>=|2t^G+L(?0g5M z0?A173Mb7b<qL)zerT=}Wzh(8{Sot}`$b-+H9#Yjok$*;QvGC0{$F|AbhrRxbC<^| z6DcXHN80dWPor)A#*2;WqH3Cg1T@w(G}*Iu89)<xpuaGL?AJD%Gg+oLK$WDBe1rfa z0~M_=EfVx`NZ(wdbsZeXh6di+eZ>{C<>V^0mt>3-2B{~jBYxX}$U`L<aqC+Ra@hF; z2W&<qpc19OTLmQLDOHv3$%$O{3pkZtE3v5&yQv1Y0RCTAOvb7Hd;`5($9%PKp$Xzt zh&r%#E9>uGe96xy7~)okBC=PIFV*NRL479a*66N7!M;Dq`>;CK^x@3}n;=)ISffEe z9m?_x9TIpZGV*?*h>%D#vQRM=R3NO~o`5^AAYylF>R*EzmkZDw2vxU=THfyEdZ9FF zu0}zxb;v3CPXX3Ut-%+j*ULhW+*UwxSVhS)NgYIBm&*R+8}YQwc=D*A$Q|wS<}BZt zSRHRLP^lSfK<+{2ry!Lqn*P%McyUnx(!8%&Rh%Y(Z^I*rm`22i&&g8=vZSqtLduMZ z*2?1~oBQn#7E&Q`*>KJkf(#EAWej}=@MphZNbB&3hMIzpokaxtbJK5}uy7Lpj1q@f z{+Z>ULADdyx;b=1DPK@3h@)piP5n>qqB&^Yj<Sm~I+V~Rl;F=d4aNpS=Oi=Fk5X&J zx+ip*eX2{tSr$dv|CZN4GX7}4j1*21W_cV!>Qq@%KWmOY&#|P5nIAp!375BWzpVg$ zgsmzVbXJfyJzL_{dV2L7$bVl`;v6Gqt2W0|-{l?hmuJ8LDn6P%1x{w;%4-M@o0*qq z{hR*OP=a#ybp&?aL^%1aHPFX)go!9}{_@d91Il8RZDS%FMgGt|O12!DaM|Xm@Sv;? zcAJ&H+u(Qmr3Oq3%W9=cAyU6YN9NgUC*=)gYfgL>BZNm<(X%ht-wq1dw(aFVLng?q zSAAGE8{fuP6d`;E9hkF?#sOc4%aSsZ0%~Fpzs!wjT$E|ATuU9^?+;bF#(H&LM$fr_ zY=p>L2iK}#zBnkb<AFbJVSr?Xx<dz8wX$4-A>GV*h_ccaN?#X|0y+Br*ykeN5;{nY zq9~Nqi)tbjGJHu-Lhdc18xbAQ!`KK@b2rN|MHq=&FSltZ=0sUKw%tYDD1e}sZxvtD zpbiUeux%oOQD4$0*AJjbHDmX$X)S+7BpXW#G;2E^KlhrWf0|@6d}j!FX1eWs&Eflv z{^ccTFk+tR#2Rz)S@%}>oFep8_CYljIO!YXNgN<x%B1w?6!nkicV*+aK!e%`RYuNI ziMFH)>KDJ`QFVi*3GdKrZn*D-iN9{Y$pEKtV}9~kwUIk{4U|Yz)@2eirIs~*)=5dh zm;d)V-E2DJT|t(^^Z+wGaxylclJnd2sWkz{P6+KM<k<17vtq=}evjPm>Y-ARt4TJa z;C{lQ&mS~v3+f%a10P`ol=X>>zKDGSx{qw7F`Lt;$w0pO1Ty)1*f|w`tp}c5Wh}_U zn%`-DtX+EP55zYMdS#=0q{R{WSfhMp9!3INz5@RyOQh>s3u~T&?&HPo&F0t^g8E%> zuEMcGK_YJj*N>k79X^TwvLR3Y-Ggk~&!mb%2DAR<jc|eH`mb_OXZM;cf1jI^L^5!l zG{$IA(OyI2utsHWKLvFg=#C85_-|Yo+8QesDeiE?Znm-_T}_~9H4Nsjqp@^OHq5~+ z!;_<ib3*#I<3o>(&&k)dJ90H777!ID!mnDMA&hpQI=8%YMI^EAQ@Ek98(bNYOq}OZ zth7^S&g^39_pRVBrQDRyt%#~Ck6Tc>E(3+_yKBg}a~7xHcUD621+L^-Rx=q#)7wf# ziXJU^{4<V&o``(po^(g+C6UHrGRU?SHt=k;#&?b}nR;0c=mU=@gBn|c+949wrSy+g z-q*LR$4|`8Nl;opGRe@m7Qdjo)vXa#ed)e=pZ=~iAvH?*$#>0P*I*a!1=CGLQ|ZK3 zKHpT(Bj!w#`!prj)x4T|Q}k&42fG_SP_~|uR;?S|9Ao4Y8hw_`eI9%}@DlaUFOO_Z zY#h~Ro<$yV0k4IYl0h_yy8PALI$=9;qla#zEM?`KpAJ{_Cz~cJ-UQS55GBk)npU9r z`&~qC1^HblfMX>ZUq_BS0{2rLew8gJ;aaK1@0}4)V<8r*!U*yo{rwDlO{bd@vIJhW zD+Z&o3;A^7GvRJKugf)|zPsO2J-l{cN>cA!y_KMaEy*C?E}Xhy_phb6CI`xDORs;$ zyZaB=s{H!gtW~A5vPh1T_=rMlm#AtoF<$w}?y7LIhn(UPR)&t333`?`Wxvq=4e(bN zIC!uihjSpk5pNT;<|5ouY^tr|#1sd(UsM)IO{zJW@WfmC9_3UX(?0tY%Rf2H&xEPI zMc>x4HoZT4NH_GC=$5roXimE_Grd-Gi(0#2>W{3+_Ea)?ihn5<75V&P@<oA<nsP_( z&BrJ@l%P+S@pl(DAwalre&v&~TEyrc|4c#soP7UlXAlo7>}C$UI*4wm=^JwYuDmEw z-gA(OI#)*K9F6OzoEJbk1Ze5qP1D~e60xi3^jnVUg0M||4p!-tOOpi-mBmg!%Rvhr zXY@ZjHJbW<0CEMO9exNdgS1mFV5AOJP(Ov2xMDUn5R3|tN9qmS8mn1#U^$EoSI+(H zO5`;f_~y$*H!_?3xxF&(e5y(hys2n~c1sbkruBw{sN8U>LABXV80OL(0lOXs8y(u~ zh1J29W1x%qZi7%g0dDj(F8Iw3!fS!PY_l!D=2S^{a8%J3P>wv`o!6&FJ~S$go}I_V z=?gh1!Sa~zW*0-^7e7nmQV*2DSBMQ7#V(4MzB@O_xH>>90jZGs@cCJG`w9Cp!gDqP zpJ@SerLXkPPQ$ecT(<!Orc-#n*ZD+0!I6)*P1Ct9@g3)iCzrsFF6L<F9<D{XnvSQ~ zUPnoD&jCjQ-K*goASIw^85g(@f_O<&cB#_6oZB0_Onvckcf!ubP`KZuW2|uFM{mK= z`j4s!(i(r~=97t1&7a@dGi}Hle9OwV%0Tg$+8(Q9K2GFaB8RpWJ0aXXh7rE+3bw)m zf^<U52+JG^ny1GzY=3+G5>`s`BpPlQ`pLPs`Fof#7NiI8{6~&g<Q)}!H&6RJi%1nC zis`pcoxaxu>%@00@|~5X80+IgiEIV(IDe@Cb>)eW?X0=<=E~7b$zp7^3Jr#v`Z_uL z8-LG%xy1T;35L}nmy+XlP_o>jQyt_!G2CCrdL|<o{I802JE=m+7Z~RRRXxllF#-R8 zb9UduDK29r`{v-X)!p>J;A>@_%evScKA4}UX5X)8m2aBjF_#{HTA@iat#tXGg#)~U zj(fSDf999>|8~a-$E>HqZ%V=WXop4FeQO7XwN;Yp56pa5o7_$=wVv;G9t@pg3LY*g zkOMn@+JG72yhFPK7#dX5l`Qxd(F9lc0H?X%`<KrjmcBsL+XIOwAekUk4j(g&@PENz zgrMO6LHaLzNdA}gKb#K>;)B39<tS~1=b{edmx24e-2b6>D5F24eoN<J_OtyrsR)gD z+MG~6(mhZ0&|m?o+TjKSTtAt}u^g@g7F;NW#R_x9?%9C-@o%l+P2W3gPs6{cELfN& z(n!m9i)DS$IV=^sP&4+lrw9A1G966F)oys(u?KH>JN+_!E~NmSUe6e8_i*&<e4*WJ z`c7f`7cG57|A@=o)?7&Vyxcpq4OrJ>@zJwI3662WXD$(R7!+*yIqozqr^J)<Im+_& zjWV+GRz=ahYQhdlsk@j<DZTA0?RgrfDV9TrL8vhp?T^EH2l1S`<h|E{6;B8Tvy0;B zHrr`(*&+(k8j+*Fqfn--AtZ*VDj02^_tKx76I9!u48o$gCB%Xb8oE6orHWJovnxj0 z=trSu>0j1bR@7uQYOUY`*^|O7W1wMvK;?l+4VoZyYpJfGX>k?+;s;um>`iC%N0+p* zf$RzS&`}I?N0wmJm^MEbb%IBJF6%uQNR^(};&{e_%Q*+y8rNkqq{jw2-!s(<^P;#E zaYAc4w@<uJ2SYyM)Z^PY`+q^{FZPK4IdiZRF9&m54Lu=#hjyIQhsnx{C^Yz3&`t{) z|GI>O$Pak!A#w_(xI&K$DL&3NIs5)?dIAcFh0LqKvdCU9oJ3*#3-l>GeCYe#d*Vs? z#QB@5_SQWG+9)jH=nO+p86O94o%NH2AFl|o-c;7xnrHamS3TUL%;}mJm9s`|HGlC! z%k}WwFDAQ6dpjcA8ZS4Nt`NrDF*29cE%{T;qeGn@9{l_?H03q%^ORTZGgKze?lZFk z?ppMj%ajBuw}SU(w3VwIJN!fm(J!y}Zq};SB#S4mf&C^F$=J|HsnqBYsK;6N@amuE zGlxvBNI4LZ)JlTdZboxqDa6AV`dT#}w#Snxyc`*ye{+K_Y`U1xLL)4z9BGQOc@8s6 zH30nx8K77LK*;_#Xfq)mg6w~Cib)0XAP=G7_L+c>7@96(rWi6^jADPeHgUm(KPJyq z(#~0GhWsVJGC?IuC!$Mj{LL0jTOtHf%1oeimp%Y(3<#pkusqD5;Th!}ST$4^+R$5i z>?@<FZ%wfvlTsXkM~KJ&*H}tAjaU5N=)VLysKn4o1%4`1s52Fl{wM11sB8|~jIc@w zbT0`v8+ZKtBMThk_zdIwAVM<540K)cAoJgbtyq!~A-7pYm1om<tpWzRU=61ISwDjb zW1!k-cxW0gebS-0Qff#k0+j1*pkbL?t0CEz7(0zOBHwQSZ-{gj=WfX@-T8Z11j?n3 zl1nnN(nG&NIZ$br^99%~>M`9EJMiHZv{JQFjA?(pJFWrMoxmR2HH9|%M>FE*b~1`P z8o3ADRYB$rp|?~@Q+^fJ0Ap4$X;w*%fAqwjE$7)LB7{p|Hp*ForU)s{keKam%Xy20 z%<Dq=nxdR_B?gwr!fwTnlI2QC(@LGy-TKQ0Q*^4Fn>3L8I<Qidf%84d=u8=cwj~lv zWhP|=1;;zHh6b1*#c0R10b9MQiiwo~ST$;H4AtveI{vAi%5&~{ow`o^7V=L(e+ej; zvCg6=kA{7i!7B_aEzV<3`f1ONsTp9-LiC+o#~k~;K+p`(HFS>%v6l7d!xTeds>yn2 zg_^;OPUL}Ot?DDG|1lW<b5Q<Y$oFt%c|IG4L`}_~e7cQLGa_D$Kx1Bitv4bjiXnVI zpMJTW^KDj@n2u~dwx@n&(Jdn_rkc{(XW6IxV?wWn7dtlSSytrw@8T7o-JFlR`dvn1 j_6+q8SF15DL;Y~;{EFGL$^!ZRlU9&Zm93OE5Bh%qVZa68 literal 17781 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 LNkvXXu0mjf0AvV@ diff --git a/site/content/images/graph-visualizer.png b/site/content/images/graph-visualizer.png index 52e3e30eaf611cd2e1ea915894df9463ef3ffae7..4bdee4f799614ba5853deba888091321c2b1d40e 100644 GIT binary patch literal 158120 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%0DShXn&>giVwO=F7;u~r zq#KlibfE$>s1u$(_oC-ZH)<lF>qH1tCy91DYc3~JOh;*=c`0@Q%F0)%S?>ztNh>c_ zV=%PbCXS(M#^HxAA(o__28DJ~k5Z@Wk`q7Ftg>aWDj)Z$oV6uuDy=T=tD)?x@MmHg zGzvula<N;gF?$IS5yHgx5`r4t;G0~lfxEseG}I4$r*mkVqV(x^&;9mT*?kJk{|{nW z$5vaCU`hXv82a5V;F^{f<HtWCq-rU8pEc2*N++pW<rBM;S0VK4R`n*ghM}7NjxuJ3 z|F+IMz(@l2K#^%U1Na6}l>2?~&1+7QP{=O}t??>VSaZ6BOYB$d^71Vwm<jDW4#U;L zjv`Ue7$uFUskxM=h44s<&58L-s!!>ZkAI^(EF;wGw>_0^DZtDET{;Y3yYV*fx2(Lb zf&a{dA3qUH;9}Dc7B7qLTNkoAvHUAOiSw4RmNiM>yx>Ay!BBt4lj8q`w}#<q#qCe@ zL&-vZ0Xtb@Fyd@8Dr9!?R(VMCfbQgDIprpcHR(M=kxl+!<O+D-3sOVZ|7^GOe-`a^ zlp3*ZKBj1~%8w#z*tZA52J>fX%+y%VD%i(ET$k8V%U?k%GAasW3fRSmruHkndb~%& z^?Z|g|1E$rbES5<rNwV64lcu(k~GUy{!j7x`qf6w^)MjJ7TxL9BPREsohUQ!suUR) zLKk0xTLYnIhl#!!JAUC(W2_j4f4&2@LyEoo9wE?AlOishwi2aUFOJtYukW8_X<#<q zLX0XZLZ#fPaDNT8Bro~DRjKr>?BWj*_DY9(xwz~vhX1!k+b_UK5^$>b`6cvhd2#W? z(aP`Y{O_#i)#2a2&c3HY-X4F`1j+6@{Val7JuP0qCw+WWaVYu&y^*VQe-<^;&P4E@ zvNwlDK85q<+>CCA2b4LMcX-f5xjcN4oSe+?l!^^>TeLJ?2@jzqEkdtBH>czZ-Ls!3 z+s*$zYp`X$D0b}`RX#8VFb5+7O@rbk@O!0J4@UZmz-RxwFFwZ9JH4DOcd>Er*xI(( z;8f)7pALimt9Z&(wWKsF?;}U;U$DE5Lv7zbdz0U+lD2$lE|_e^+*2D5ksRyuh5aj( zsxb$A2yRl?lOc^Z6r5XLfYI=Q`8iW_IwM4zH`A<Tb+1eitu(eYjLiB^`5a_bPH*3> z2~IcYm9w&Mv6*a_p9lYZc3K86RLCK-M&e^Z6oBpbN7f`}<;V-T!`ERqS-#KI2qkn0 zH2k~iZ_KfZDe%gwhcA5qD@59Zk+oGL@c*#91nTkv2T?U%>Ws#rX8;`QM<qN#9)~&r zk|3@CT%Hd@!%qMogH}z(L-Bla{|^wxBz|FR72zlW<ms<$2U|;kU2*J0Xa{=FBotaL z?;P|91z%bR%2<&-OI~2q@M_5y#2rl8*{X;tqp#v0G&EdMR!HaHz4v`C;7cdhn4w+D zM@*kI|ADM$M_wuHLVt<x(|^h*zlAM`#FVPtmZf2g4T5`HsCHYshQiK)|Ep%hG+@rM z|2nk5m^w6UOd-Z9gNUQWP$DVg?I5gB9dJ=}>Fk%#_Jzfr;}Yi*%o7EIyWj*_)mi?N z+-~wWwB_Q;_G#a;@YnetjXZ-)j2e|)Wf=z467jM!PxJ8Mf;nccOM*t9$XV}GJgb=~ zmeFk_jIdeFI<K7f>`oy%pw}w8bKn&aX8uLfQ|nh6l_s{gV;%n+EEF~iXoIJ)_l;os z;5&Uqq~)b9mM<Kzu-e)YIhrPL`8NPB3SifEeI-QDNk$+yrC(i)?<;~Ol>>K)<n++W zOij@fclr>i3_{@Nz}t$d)JFC5<g1NLt3T#~{7sV~On6AbC8m=9`d_@bNHsGK=!y^z znI~-{Qe7P_>z`!h*7o>Nt5=H2`bFT2GA6KUhh!<0Vi8os>pu4njsOp|IiEz_B0+|# zJrJ|>*KMaJYO8`+UPiNxP>pgr{;k@dtRtCI%au)f=JOJNLJ92AteDmqwd}RUf<YC9 z=n%8idQV=C&7A=qJ?_u}=lXsADnU?U1S|-<@+B#_51)7$bRKj-^-pfshmuFYF-6F9 z!;=Wlgc6n4>>ezddG@8hMYs56MH%aAng9neGqV28s;d)igE1S)C_<;UaESBesimc< zL7LSG7{QV@&gqOB5&TEw*cKoYo8!DS272V=U^*{%88&wiw9me=<4&fCQ&Tj-k-=Xu zVXW;+7;C+FA#91FEM}b}4u0U1L}t9hNu*uz_TV8$bV9*WrVE&#NOE`Csou}$m#)6S zV+iBiU-tW$(#U{Os>Fj3uXl<xonWl$WJtx%J*$n0D7J}rA5deqWGt`)`*3ADH?{=$ z8;`=vhjRuR2{zNS5ZKI4(h#Rd(G_&_{ATF5o<)1xJ-`PAnavCMK`xRt?)2m>v*-mq zab^;_X5EJH)*clVwcQTfx$oi-c>^}j=X!I{0c<`K=aAso2<7_h=j2<&g%fl8Tt7&7 z+}Bx&SIN7t`Yp{0zYqo^A?ewUBFhMtdO6wLx1;{lp*Qwga6Pc*>>Ttx3u+(N;Vx=_ zBuYUJ_o3Y#MLn>?h6&wI4aSkzVDfNL{UYb0cqXQ0VOw|803X9S%kW0$A|&m+gLMQF zUEyai{dS#2A3|1@A!F?)5Aajp2rmg4gA@KtGW^5b6dK{>EqWYqH>?FNd;e)9U!+cQ zWD<muK~t<=N&|W@o$1cmthMc#X`n)^3JWvb)d+R8cej&8Hh1LIN)htZbi{Byh3Rk9 z^UGp(_`-E?gvkpXtPuVS(xbgRC@~f9<Yqmt5&}PY_P3|;RKkzdap)d7jVxe8Ls+~R zB*jGq>#J)vXfm?(I+nfnZ@EJ8Y3^V*K4p9JxMVUM7Wwo(MP>1;M<E(-d=!hgOoI+( z`wfq|*j8#kbJ2WDfp{-WXV-UnJ`($Cp~g6Mj6FwjYtxrD5zoQOApb8X2$#&E)MCYK z=p%|D&RQ~UcSDhVl@?SU5#Qvr4r0z-rtGDy-Q!$1wcUudpMBAypZ@k~0uRzzRjt%( zNcYYyBJaNwnux3}QfVxn-OGBJE5SUmRu0cgujl2HzQ5PepT9ld0aS`m3AQ3szG$Wr z&+X=$8imI>@C?B&nJ54+wn_tI-}yPeL#Xb)>Vks&^*qL<a>Bv`dmYXnX3b55xf;&0 zM-D5diV+Q;GdF8_K>hE~t4A6Q44ldR^;2UBM&Pu;PnjJHVy(gR$<ct5o^~WOAb#QL z*RDIy_3(&xnaMbzaDn{?!R*ROU$UlH6E&-UR8N5;9xhFYO6iDxv0rEDLqV(Two9S8 zcWjZhkFNl-4bguz>6yEH=QjU{!t4wrzO9=_NS@X2Ckl{Ygpo#`KcXL{vLPby>s{G` zIYFgAR0e2!##i{;%7}nn=T2BTe5{u9m5G_)GY$|xCImuZhok;BWv5Vnj+keWRzu0A zc7YWn`iX9PSdjPSH#0BV^U+xJ97yGoM&d}STXVs<YyK=X4&8liIr!4{7?J7E-WneS z<%sdWXWkzCr+zqc;6UELmye}=P_nUgLf#HGyU|ICg#SdVjG8l!SFH{<Z2VNHt2(oG z*N&TQIp5YUtGg3fn!rH*o)87fDPzY8sn0t-=iPR1sW~t~2?9R^?!$G`dUZJ7S0XID zYnX_O{!J`4liibp-=?Lipv5Z^-Dk<&g9*J5___ej+I=?AHvA!x9k9S90m0P*k1*S% z%<~j}?D50Ifd5z_>hn5?;6eVGoSbA56W+CX=jL|7z>Z|u2C#4YZ)ZaEaFUygAq4uB z=R+>tkngJX$$GUm2j;1#r~~fVy*6Ois1#@=*qKKPAn+N?B+4maP2aD@Y2f#yfwnNn zYAo}&K0D^u_l~ldw82iTET6rqlkX<s7v4hPPJnu4)14*H|7y`79{k6f$}cs>Upye0 zp2Nqt4_4j@=-IG&n*F{=&P#bV%)&#=ETc=i;a_(g9UY%5B&-Hy{-R)eQ>}RmD8vxl zqhp4DRrET3hQPrjG`nkYaVSPupW=RirkL1;1gd80-JYkl^*Rm;+ha;E3yJ19fyvxD zTqcbuy2}Q%DkE<}4GB%r%Dh)lvwFPW;U-dkpx`yLpJejOAGUOE94yGkvEj-~q>7gs z*Y{8f_U1KdgX;&M<A$wkOI+rY0fMjD_~a$G3VUm%hHz2)Srfxo)+;>;$J-v{%<=}# z;I5qo)IJ^K#qJ7dZ#b(T)<rg&K^Yx?4Sk=KCxU?Fu`yOYjq(a<89yk~-Pz&=nO=LV z;y%>Dki~-B1tUA({Dr{75NN}+sJe&hf?bSW9Mo>6(;XB)eMw;Q?dm=4Vv>}d#uI+I za1zMSntndznu1<=G5W)tIwLh~+Q`7*v&nkHBnma?l!;#t;D%Mg`5V{G*pYI1Z~hvH zmMN-QazepHEql4-zm}5GE29)4&&qIw_M#pzMV&SeYml0Q`wG?w58k}j{aW+|2pYcr z8$F+QS&IqKqky)*-S9`@)u&rgt$zh-a@;iz`{*5lt(8{DX;|J#ygiWICN~DNdJzs^ zGki}ed202o#ZVt@wk37~Yfmu1cvjzDgUuL%dr5Lhj*jc#VPdbrp}WQueo0|#9~l-; z-JBDJIcS`ciprTFi~$G}amy-QsxPr9-q>4DwXGMTfP;V0_d35LJY7?4;NTb3^eUc? z>1yRObkhrhhe}{KZ-(6~vfgzlT^Y2)SWtCk*k5}+ur>xd=5ex`grbvW^ojm$h<mYq z2K7=s?EmiDsG(roR0eO9^8KJ#;HwBQgwt8O9VimKLZZH?2vt(U&c6Sgw>E4(5;HAI zf2{y4@L1kX!w}pO;4<)<zT=45^wXgtUb*~tAgo~&`ryP$24HYmVt&vG{!De_3znrp z{o7_gYv7*6M#~(1Y^HT;S%>ny=ESr;!+}t3smSrVvDe_|zJxpSn7b!T4jOXrm$(df z!z(yIQU5Gg*&H0N6@EU?mav|-z3^P~G_gm5xI;)w#5X;!>FX8zTy+)n|6}T{!=mh> z^<lb1dQgx?YUoZ$>7E(7JCrVIB&3_61*w6dK|;E_yFsO-L|Xbc_?~mV@0#Zyu8U{K z+V@_u*S*)XVHoCw@WB*uh2Nz&7T9dx^1~1w8A51A4{Y1&6Oq5B=p+BiIkg=?K!v2y zEH`>7QFo2b@yib&vl(&M8X+k@?@*8;mh29%1hxWHY5>xpqazsqFtL8!^6j|{^55aU zpMGe?Le3<bX!?9wS$QMgW50@0@Rmf<9jQdprK27%fNHNe8fr$C#Gjq{>-D}u$vHnc z52$16pq%Do^?u4|n{tC)?g9cH$7`-Xyf0VuEdAM?TM4M2xLRnFh!uf4QSS$u9#0Hg zw^b-;eew-dv(nS{QU$(vqjmm(U|Lic!VP^=I=n&y1Mcq_9zC>@MmV+|1FDtDG*5gS z%RbzT0h&{gxd6JWkWX;cB7EyvI^c6HGdcEuEDc10eN<9op(I8d@MA$<cC-Y&6Y|8d z(3WBc79^TE9}{Z^s%^WE)|MM-8Z`e&G#W-^<q`Cbs0D-Y@RJU2!4%XpNK6f-(QqU; zs?jhH(dwJ0wEgJ@BF8<9t8>Hkpp)sirE&(beCd4kzdg1B%*u<q%WMb<<FhqKgr3+H z2o8%Czmo+2aM^pA^8RfI^ZyPcl_|-GC*^#P2!HO|IyH_xVkS=<fWD>P<}Q1EXc&c{ zde}dH2BL+&GB`c!J1snOejwubU;n>m`(|AAvtCEGQIIdXEoS%h-_pe?T<k!ASMSa^ zKh%jmi7*I3G6;Y{4r`c43hsTGjUS>yrbNb!g!tQ;v_cPu;1JoI-EE`fY1wG71MvTQ zLmR&6cBX8$M(bon!BcRN=UyCg@@AXHoF8@-KK?{2d76|a3SlWX?5F=YZA$V4SQEDd zJ$)9^>)Gga*nmR(B<npTcnmk-xXP8VEYb}aRpW#N&K%wpk1Cqh9}-%Y_=)l)??$w| zLvH9nW&5kr?y$2`0l=}Z#oH^)%yQ-tu_g-gY;=a9HQKL*5F~5FWjFuwa{%C&x*8cV z0_f$3Wk;|JB(6okqiz6V`D@II%H1haKtOe-*=q=<TK+7nP@GGV+SC}lB(CTm;<ucS z`qZJ|)wkc=P+GkHTY+`S)__|&MC{0$HOw*1P6t5;Bdcr|!Ar<giUJ-^#Na%*;0>f5 z0jNWv=-;08>%WX+6)xE}Mcd&qBEvgIO`GzAe!Q#QB$3TA_kW;$Ex5C@>0{_7ZbV)( zeEhCQ2em!M4;Q{Z!@x@1X5_D(XJoYvqThoN+RM9rH#@MP^b4HE7ARout^q#ryOmFG z($hqLF)g2<nWbb(I|B`)Sxqry4;T0d3x@G%D%7ZOg0D4w?!Iklq|S32<TNaA!FWis z9&z1TkPLH3r9N2$qcY7>bUoXeb@-_>_;W0D0N-eX<?zvGBass<g@yRQQW)r}ea77$ z)q2A@CKRz(fz?+bG&#IbXEqDhLslz4(u|~Ip`M7aAD;>@!Cb1$!r!P)=u+x03tomR zqg_2$Vu>t(e}R9%3UqY_pFB_+;lgDO?y(l{q!MT|qLSWc4aXDb_6^~WK$37s1q}(A z&?@DdaP<c^bwY9Y@#--uSZ#r}z#J)@3qgR5X_5CK7ociDI3GBED@72Wp+u8um!-rs zaHkImR@(|DT18X~L7LuHGDeE4)nX||k{sTym|AMZRgyyfl)$bNMVRhRlD{kD@)8IB zNfRl3VUL#&zy~-cIC20=Tq+fnx@|WSdtNUlf?ee72LwxleVOS82UQt}TDYM5nG@y} z%K}hcG?Ag13Xvj+x)yT*DF#xWiYlLHtJBu??c4#+D?2LIP@Wh%6(Lz4WR_so4;$gm zd}n`kravWOV9o#H$i&HvvLUd@7@gdGaE8QdQ3s>SYkl~OVIYCU!v{{Bdj@6^R*{8r zW+++cBn{7&^wFx>A|rY3nNiRIO0g68fqn@!_^I&Fcm0k8AP;&>;yBnq*K3{G5e^eg z3~9yKS@)lZ4}%^BNC}g%6i=ObX<+h0Yxa_Hb4peFor8ITai<_DTYxoc8x00^RusvE zmwHHpnQ}x6*j44Wa#Y=g9H^3ggAJ-hrXHL`u`<|<6tO|FhMXbFSU)ECos*m<Gp#4t zRc7<yD&cT6G)`KaJOq!Kv^xPO7<UH3Lm{7^>b3+qHT7h0&uC=kGmv9*@V0)?txT@w z2MNtyk6d3VGGRIl_c~k+@IcAA<2mzeQ#2>?5deuvg!7THZ&>Ny0R^EsGu}+_(xkVV zQVDrkQEsWV2H++BY18~);V6aV<gYBmzRK0QJg+d%|0)HRiR)kU47Bg0F>01j`b-5& zsWl^+giJzOWojGYcO}1%JQQaGtkTpoEv$k0y%2O+bSbgLdzX1g(!GjR2Rm)8@w3dn zWFgyFh_7X#<1f++5|!sT=xMVGw@XqPNmxh_X6%0e9*1C<sQ2CS12oU&wQy(XBCd$) zDHkJ`+xejs>7#;+*d(@HY?X`r0HRND`r?+~55GdCTHFKqhN})iMsi>&#P6CtV*0t3 zY;1lB&7f0u(IFo+TN5K0Wo`QnO@+d<%fWj&92K;5I)$a9RqEK;(JBts4yYadGlEJp zRdmE}`--;K@JLle0@*N=R7$S#G|Mg36|!#uBs5<KOEJcxaRFnSD;MeAK3TU1tRLd4 zK6@M9rMW*_LP<V5XrYF#YUSq&9GKg8Y0Ort_nH0)<8c(dR$Mqnf@{VgMx>xKbKGgH z+7S<zT(><W&DnE*q2h{BaYw-dvAx$bOXK_|vd2s=&*XB&+OZU0+k>DrY~-Si-%EkX z3YsL?KTSwQn@}l(311I!lzn3_`QBZJ#WPKb^Eq-^_gfWQvRRGAfh35SQLfVBHOZ?K z&>Q?@b;GjiDsw`^e3C%N8*ofWas=CV<6&FiOl?k-$sgwYNAgOdo=}|Nm|=*dX3GRf z8{jOX8`r6YRZG$T9M=i!3E;&Mst@G#YHx>%%3gCTM$;7VLBC6Xs?jzYfn1gDgixj} zB6K1-awZN!AFAFy2qk{NFA3bhe1k3}X9pyR^gN=J*T9;D5byySeOc0|B-U^DSCuo2 zJZsWw2TtTIhH|z^u$k^?25nW*x0s`Fp4ypy#*#uY#b!0P*>b%U3E<Cg`I5OuGE0I+ z)&`ff`~lKeGm_LqtoI~D<WKxC#5}+Zmw@a+gO3zE_gda6iRd(%nFY&L8HOUokb3yO z8JLdv=cey>V@e{QSA;K`Hdp57`zFsMR>Ci@T}3`i*k4oJopG9>s`kx9B#GdFYl<H} zQ0w98cAJ|dPJ#)x8dSoFwewrQWk4)6(U}gvz!&d4UI;yWPMvt3h4iW+@Grifgf}m0 zc3;Qmz#&|=OrVTAAE1h^&u15cP<fTYP|(mgJZ55+n#p|Y8cgOyhjn_3Xfk3DM<!0e z76ohx1XL^V`H`xH|JfaJqFO`OJt_mPsv(i8w`2?-km)Yc*30t}h<MC8P_a>D$e0qU z_Vpw#ckMjHy!(<$KRh83s9=V@J&!#)zGk3rZ2W_blXETW`Ol8-lysc+y(!51OziJl zRll}Z?R*EW8L==OmAH5xS{_h~;nl>IB6sXM{zj7E6M_6dNif+#y3+UStFIIIAs=2e zsTM93K`)M8RIU5po%e0c3|t)>J4)#3<viOA4}k@%Xk8U!V_#zWt$CZikQ}F8tWSC* z?2c#Ce`F|}I|<ghbk4*9r%!IYxX<f*fOT&GRQqHU9u`euJoDU83GwXDpWnoOH`<!V z8fC9?>M)P{`F*qHg}V0du$sDHMC<Wz4M$*PnG&#DO1^&UyN$EeNl69i-7H?so!dZQ z=jXz3#JTlXRb7YNHVooQ;fgUbBm!;qDM)Jwi7H;*@r00IAdyoCFW5Uy3c5m9Tletu zvjYpBcw6ALr4^|WV!vlpW-9$GrNf+gX5-B8*<2lSe&YBqc#o`ww|90sMRiN~*Ytf8 z>Z^(z*s0D9hws68919RB@BGcjFegMWG73k~68?q8-_2>K>ygkB%FUgLyTJBb?sdjL z9Ime-zOt5Qo)!t_uD9vt%IN$<Yj!L-BSp9U$ZzyEjLR|cP0UyGW!aI-s$U6a_RWB+ zZp%Lm0&Zeu4G_9DL_%PaZTsZ&b<cF24P)+Or|4$I2OQ4g^WFQA3*o!gNl1bn7gWv( ztmo1Etnv9*XY&Qa!};+>(Fgj2Q9EFTDzc>RqA<ehHXPS&kgE2vMu3=w-NBKuT`2X5 z#kmtg8`S1WZd;*g4Qt*w@r&(-8GZ4%2$A@Khk8<lkxQm$AjX(NnC)(i%%1M^_LsU) zQe_r_F*gA$foxd!IJF*O+Ke%*+rOCpS1|17SpM*L*iUhFR%4oPayS?aW<qFG0YYE@ zif4X_dg**uYyOBYldjO)bfHrz)`wUAo)i7gdK_Yj?|gvRW!2Na?0}t1roWNS?8es` z;D6tPYXD)-l)a{e9^J5M+-FB1A3O!20*Yf#Ud~CB%F*)4LX}DU@mYv+c6u;K#7w^E zR&f1{3EDz)G%vnWuk9wmQ)nmQG%-HDWC4+aN~YG?ax*)>Ry1W^Vhy}<7O=^SNd7DF z{<?2~b76C)%!92A;qxUs0G|iR8R%xN6+dtMW=bG!uOgG46f~CK1JPa9#^OTzL+v35 z5cQuPff)Cw3n13W1k%*e(BQct@@@1!x(qc1!lz_6vtT*#n(do(dEL2^G07*X;37Lc zmq8oYSMf*gsBexHikIO0ZQ7>nJ!S(wCPS&rhLXsxRqLNvRbTrj>b*Ps@y}#zfrDsS zO2l8xDYs~k-AplM4=r)PQIykiUg^V(hBW2Nu;~lc+gXToc;VRI<C5s+3wR<MQsY(m zK2Ps+M-irXFNv|}=7X2=u$R4v1bs19oy~;kh+gn0NXAJINpXMdQ*wH^C@cN#;Jci$ zv_?kguz#DU3iPhx?fx||G7`-V<-`oN)Z7NU?qb|wODk=HX1R+9KS`kP`A~~v4<_c< zW|ssHyQZ^I8~lMw(K;FGZZ@)gTZGU}O{Mqy>VccC&o5d={_I@8al;%;k1`8Xwc2Fb ztt(}-y0<Xkn(a>YJ4_#T$_m-PoQQ*qVF!xMK-wi*)cZzD?m^MOv`r=a2b$0q{*K5f zKSlA1@PYvSv*0N;Q(-<lEQLR8^9GKySF?>s)l4s7NWgJejf~hr)KBNqZu)1hMG`}h z5)M|R4lOzZC~m>Jo4*|O?SN4(em{^BXkZ-L8;3z^N3=+yQS?xZmK+A+QG%f5ywd~9 z+@PrGvRAV;8b-ls5dx=J3JH{79e)#B0pr9}B&96H@q02g>Z*%ZeJ*#_wm-O?cb<#9 z0&^e2;lCIGV@nmlWlHgw{sph#x)6o_z=yvFmGJklDusmvGf`MRs-VI0$McM0)$Ik< zmT0Ax5B%id>!eOs*f7JlQyTw5RrJoP=%hx%$<hPw<VB=2Pvf&3D-I;%I{yh*e5>~q zEg~pP2JA>^9{ML7r_rsywxUd`+efUhaIEqx<FHj`L@fNRMTHM;1w4Y-h6x7qh@jic zkkm~B>egU*RRfJZ7#B%1nT}$Qk0b=DWyeZ93PtPNAD))oMEzS<Cs0m%CP&4JiiS>& z&MKDhJ^i`N0$Ku|9s~ZaQkb<~869?c#N{01PuH1O+HR4ZHaE<C5e%ME1!lVGYn`L^ zEEFaE8mbdCw)={7f0Oe#XuUuQCKI$czu0Mj|LUy&BzB#3nZPvt(S2rkM`cav)}B{g zHn7QC>G~N3#Fva?L9GS3N|k{eZG>3x@DtAnS+2z(lhJ2@;cGPWuG;d{1}R?JQ%mdJ z{IOa&2!{r3v)>O{l{)W!%y~=iV(C_G2v2iC1cbio>)?2}$cTPUf}Y?|0!4n+V*2oq ze=%u2?(f|X{Tb5*ehM_E{!pm@i(oK*`RMRR-ypk%G`*=4TC_$I)l}|8RkOa<U0Lnu z{*Z4ZMx>%NT>;~_=07Awc&-`z6bOW5H+Gt0-rgF4yRPEa+jvXOxnSlhRxbhtoy4vq zHrmq;O69d9`>f?0N=z#JmLXf1cfP*gj?{9a_(=Y?kc*YY$Yzc3ryIA_Z1bJsH=V~{ z#4OLz7`k2UKHKbX^pZGkqkg`et|X5w7m%?mnbhu1lgr0z$>6^&`9{N=ITm{{y9J5c zNjfG(iH!@8O%$3RH-Q~DkYk=Nb4u%x@HrwX!JgSLCOgg-E1axPdtJ^x;z3*0ib5SP zIWOIe=xjbCl@7z1?8=3flxNHwQA}qG&ozo0xp*J^YH3d>ROkmZ-evLxiBI6b;#o^y z0&>*N^7;{&>>YJ-lPwpl6%QtK7}~K1js(zt^f&iW7tekV=`&U7OCOf+ZSl?;8en@Y z3jbob;8Wv$93L?Aw51b0Yu|_l4nW+$i@1KhT`Q}I(}#1q9<`iYT|Eo}<MzPUC^q|n z<GvCt2v=WiuCl<Bxhe%dicDi#fq9W`+DR(K3Z@NHfFTK`DoM-c{iM^LKx+NC<eIe* z*OP&Yq&8v%x=36;e2WFd4tfKYIp<GyX)=u4wDdj&m-%`qGDwp|CrPfRrH&Xt`>j47 z%^DU(4p4*{9l&G!us+uoD3A>%1bvFT*~Jo~x5<nug$1p+gm3xBAZdtXIOW`vk<7jC zc)Q(10xdf^&D+y@!aORtiB0(;JKp+?!%DyysF}R5=9#l`WMkuS&$0cO5x4xN{n2e# zq|>Ad9${WjZK*1OaH!?1FpO7xBnJ|Akuh`;7pFW375wIXAeOpWQ87VFllsFDavOp3 zdTCr__=hh<Hk*q@R2bO8V#XQ6uK8qX$LhxCG8Kr73Wvo*-7kwnr|Hq`<};6@V#$=W zw^rq!oVBB2sny(=syy~5)hp}5GZ3`7`CiI0D(%E%56joOBw?Ccs#m4*vH~;48T4mp z3EY4lop(SC3!q6*sbRCCY>0YR)Bt1hN5OkL@W(HSC~KOnJb=c%?v2MQi2+Er3kmt} zDphm>Xw!hU!N~o9M2Ap-Z|!d|nf&#Mwn`|hSdu64Z;UsA!}K?574!jrDM=7s-bP#x z5QwTO&`(oC{=?`!&{LEwlyPlC9N=#7CdbbshdR9p*bl+|_aObbP@gPyy~6mUya0jC z=`Ok!uW$p<7CAAS>MP;SQAiqt<X0467g-t8FaZF1u$?YGv}L&_q$f8(d<s?z$#uFN zM}Cf?;+;`)a4O3m1~A}<Ml9^lvVi#kq}`;p;vDBoF)O>7IMe*lQWN>#CtoE5sqata zdCyF!C@I_SwlAo&FAp28FZf_j8=4D7*VJ6PdTov4yq6iZcFBR1lUs=>)`W#RN=`-V z02Bgb#Lz}Em%FKi)#<C3Gxxp&*T8RZ$)0sya@ih&1WG8Vb8%}+Tu(Qo_V6R==!oZx zMl5gz4(_zrZcKsShb+LI?k}Z9cO!o*=Ly)NObH<|lkzX~L;pZj!wSu5=@X+?E8x1~ z$TXE9ND~x)eQKzv+L|=LId6QNkH24bb%jvpP#H0^R#9hE>RUW5BjQ2AGP*#fc_aG> z<OkIJx&J1-R&4$?;P)-IjkqoNW5P-A)o#pya~xcf&VD~UqolkZ9{Q#rAmOt9os9z; z`R#{VG4a+w-T3>Vp&DBY35A<^bQ<_ea{Lrxtunq3Bap#-8@pQDK7ya=jc1+lWcX4c z2ekP2-vHd%2%!9)iFiK;(U|p!j5)k9ZG=gaI^cr!i}27q_71I*qXN)>gcvwG#CrVs zC0*uyJy}=!63mTw(gWoyjkTJ-5<y3<;FFHF2K}BlkR;<ehlv;S%Mh4i@e9y_A-HBF zr%{C~Y5``x9V}RWyaR5`D*SS?u9nJ)f*ZhkIuI^=Y=xF<f%Nt|T~CQ?-i~gO2jE<* zhU>3~N4xlpY%WTip_=YJ`ny~4M)i!S+E-n{6`44?iVM7eNUwJYRI+ppL)6FoNRa(1 zR-1pVPh{=lJ9XEy54IJ*$O$kFKwQUq83RX*7Kz61KC2~H6M_^*_8G`9$gBXXD=&@V zFn?ytjfy0y_&&YgwLZcDDG8Pul^>>0gJeuf3#g>)98ZR?s_nY2C=Qp7(&GxLQ3A|I z!hpqSFh#PUorjat`w0#dmF;G$1E)MRNm(0Yl*qCfw3mZ^KT7ViQD}&Yu2(BR5p+gv z7p1tNyi3T1x^5s#em(Eu5jv~=Lo@s)f%_SQK&YcU9h15#dXzE_^C0o7Rl2V~Si{7G zn!kIFe?|3kz_b(Cd5Gr*ggiY^iJv&7r$^6m(=aQvhHA$LPp5#(Y&3O|8?m$>ZqaBC zUWS_W{W!Tz9+=;usEZSV;uA)H`F!9`FJENQz0ua-(MvKOl<+JNScgbRSd>e&|J)5& zH(aFiJ)(Df_;Y#}QQ*6iHj^IJl^%sqGg`*T?mCgfI$;+xD_2g(#DB{c$vFKFNi8fG zlRn2Y)NdN*Y_xk~I3G+MoJ9lGoiaKg|KR*+a~!9)g3*nHOV8ou8EQ_*#P~hIlDS_< zriSSqZ#vo`OEgzs2sgSa>1W60qQJJ=8MNY>_IXBo|8sv>=oeY?)BIaR>c&*{Sqroe zN?md1DqPQTG(X!uT3mHdpwS-KvY8SOx>0&r{MiFi9o?MBvG3Btf}o+M;0V-l$6g|{ zO0@66=2Z>!k5mV);!UWI=^xxu%amD#Wrz=9KD@@IPmEPbxZfSs7tbE%NB0-wjF`I^ z8FV5q*5kz1(5%MgM@~n4R<-|Q)&5u+{z(g@DrI7AB<HdRMe3{j6y=A2?whLb!_yFb zJ~3VmMm@_0QGsTv*SqHSYxxGdQaV50*O6eT1-l9+$M9<XN0NQ;t7~BIA3k!JVo@5{ z?2<KNoiHq(FY==B*GG5bClq{05hcD9n7D04E<g-V1NcFvELo0_wb3f$)GbaxO=ph= z6fkvwU@MG%Qv~dH)2WH$gt(S+IzV=0!u}h_@vr2WeC_2%gEr9Js-xhmsuh0@&@O3+ zE^F>ACgRNqOv5nel<lHVj06g?yn6(x|MQxiMU=iBU)Gpso}O*Cqm$BnMVOl-v@YgU zLCjjE2vNb{PH(tqI!k$j#qv7*AJbQoMC^EcPTwIKe31Qh#<2v->Hf~`_bUsa7FU~| zG4R#_UVS_80ztZbqOP__6wd<==}v6XOS1Gu+bsF>aIC+PC~g0l%RT%k^^Y-J6pZ>7 zd?28`d60P;VjK^D&5d7$bD^1|!=;&JqmKJ;$(R8Y#z6F}8`l*5l=9VJw~bO4@gel^ z-yn`rA6!yR#G*0-4prqX4vfqD6K|M=u8uyq=eU0SaJn-076|ozjA>CuR8Gu;R5u=h zT;}7s=MKhpvGtToLisdU@k>i4`if#^LI0qEVB?J6{Net*yt69U4=F_y1*Lij>z3|c za{5nTn5n}8qHUA=-@>qW+qG=IjWR50ptro~h&4OIFG8>*Qicbjhz{1P0|QY)-8SOF zsjQo9=dnFod=jcg8K0P_2p;tH@h|28LLl*iRtA@VK}QDHY*nCQ`E4ICvU{+kU{2`> z|8l**MU~azs-d|}FuiMOlg3zmtR^qIP|sR_6H<hC^p*u~N2$MW6HFa0LL1)`rF?Jg ztW)%>jtLa^aPd{J7U2Jrb0{g<--A((Cc&EL>z%=s|Js7;JTcwnhy@#+%<%QHA%)mq znJDgS^Me#JI2Sj_tnl;)b~u!{sg)wFi%U41`~%a_Sy5i0bh6T0LFV8gY-~TO@RCs& zk9ZeYaog0*jG#m#P`SOKDg{DAM5-ew(0GMc%h}e^*w*CY`%ykZxCYTIqSbDNZ5)Qh zoLx!*i__xB*=GDtEVks|KW_=8h9?e}g%hEfe<%rxj9g#`C)ae+3jN_3@qbk;uwt2L zBQ%5x9ZJU8+D%(%#40%7H+6DzaLKW$?p6p(#Gwbs0d*MTc5A?#XJYZ4eF|X*uK`J# z>LK<_D!^~qkmSjF+<InLtgZljt`Yw%Q`ImLHOFURYI(9em%RLi(p**+w=}yeRh$!F z*J+;`i-Ej^8-D&E4GfA%ih|(z$By8#Srh2L^i0I*)qbh}6B|y`7mFg(dV4drBIvZ< z&Jft@?H(>8N3cBnR#BF(jajj5j_>q6ScfbAMgZ`}<^Y>%2b{O;>+IWZr1Rs&!ip)E zOD+xx=|Y2A53Fr$4*erQ`{n;iXkT&rPxX|oz_3`5{_5*+epJr{93H&Ap&s*SNcF~h zg0MpAsrLfbnY_GCCTl;O-%j+0%M-r_sHKq1D3{tL721&q!B!&~G?wxTW)F1+UMn)Z zD_Au))Ya8BG+tX|$mU@vq+`pC&Ae=!f3bA_^8e<`59iy@={2a2LUY#j;x?fRrz{K( zY3@7o9CJ)mf=fRn-1$f<SnV8T=~TTM6O6AGBvw+0&kBVwvKU{{PXL#U)3wWLSlqYU z3A1o`XX8{~+4SJqgVxrUm-FN18W=wpPwT7=*+9{?(=8A{cv?0nD+8d2(BhQG_T^;B zHHz>i-w_@tag+Wzit)ezKj14C63;ur3V6a%s8{mNijLO-iK8i8zzmd_J*b6dOu)~i z`UX(5+8D{$vHeb80i7N9*X`C-(2m}-i2pDV1F4)ZMj67dGRt@E;f>6;p40=M9OP9* zJIJ%A#DIiLh(UI<#{j}(!HstBb$8@MKOr;FRB*MH!Vi84U?c+HANlSz-#vD9r@xZG zzZ@S@Yk3ttsz367m{UUBs!&kubC?Idt+z(pADasC*<@yW#*P?a38-w2{72bty$l|b z=|UvDK`X55N2p>SmW&J%WHEB&rMtqi_q|Ve1ygqKC+X7rwWEr$2CB)x`nvl17B8-* z=V7)14hP@w&g;Chnza5898rqsmW9)Qj#T7!5Al<ftU5rPGD^VKl?cifNF|!rF-2cc z38bvuTXa)e3H8KM5xq3PQkj6jOrpkRw}{0+J;Hj|arK*b{wqPp(J^DEDE;;E>%R8; zpc~uWU3A*p1u<a}Z*KLrdIMkKvD6E1E`dDR{ew3hcnu4?WMThp;jqNvxdljh^YaLe zi4>mvnUM<|SYhyHl$voCz@&Ge5TqDkwXH!DzC0DGh`!=tdmx+GW1aNU(ByX(7EH?d zcmG&XQ4tghRgaU!OG|Y$ey6XuIQlt_Wec0V+!4<s>afyv6BW9R`J#T|(1DE$_epL1 zLrYmD9I1kc6{*v8%ugPu5$%r~1geT4gHuo`2E_qyrL!QxI!@%O&rqfuRKDHz>=`G8 zRywqp{UntN|7)kG9>EOLklTCF1<hI@)&7Qw*;9%iUE-YCdAC2Ga62GWIJ&mJ+7TM~ z$wAHX|KDSmowlLqdv{fq7d>*eX{@}C^Y>E5o0GK#as?p}Lv!uVb~m27aP@S^moLI* zNkn~>!yoam-QVQ#xZtESq))?A%&LPs`APIQsBy{5{C=>Zyso;8k`J6bst8ej&cF@% zzv*!&M?Eh|Y4!qvkz2LsAM0C3Mz65pk_@j;9G_#N2uDRr;trN&x@~<<i1OY_7$1J+ z+VFcaW;qhaRku-W;~>%>Rl{5SdR0)!w;-0qyV{jq4}E=|(va|D7_YsV1!wUH4~K?X z2||{3r3%|eUYCty84bpZ+Z_mOUEIUc&=%eBB9nSQHlQg=pPvs|A$^mtiZs$9>@4h4 zEQKBL^ndfpqWB13AU0NC9AdeqD@W<#CpKIpUu|Z|);q($teS+Or0u=1{?|jZ!uI1s z0oUz_sN=Pb*=2D?B%J(lTw(iuin1G76o|>l8llRm1U4bQwL4gUmvq~&J}b8}!g5{C z^Q<x>6nV*MrR<9{9{YPL!_TT#W^N>UoTJ)L+irMCu}Je*+O#?_Y+||UVYeVMX}AL? zmmB0Ah(?{1Kg^QMpHK|Va8Y6lvrC$nUOQ*U4pwvFyHfpZxw*^uBjwC?4+CXE$uBT} z_(4QRD8BRPh}Ghw_fMqu)=PoKYMv)$xJv`Dg1KOTGHy4HH9kJ6DNPn-)*;oPux!h3 z?JPkj*!yNb_to}?w)uEIOtM5SL!wMU(t@etLkky9$X$IE4?7A!{4$TrMh+|UYP5n* zJref#vX_i(2%VqoN=zmM$0WD)?}{kM`_+IvuLFOwkfUe&7su4gSBewXf0S?L3l87! zQfi&%?@q-)*5zIB;b8P03N@E};B$*txoDy%T2qP+Y`1n~Udgj%*gNgC`WnI=+NnE} z^^T8+6+PY8XsL}pW;SAD)Q%p4xuDAifq5MrodxRm+f2Wx-mh7A-TWIz-7T+g@t+fJ zmOCA@-^c8r>)ehP5!M|J);1C_&b=~Rk#?l><$=KZ-;XwzKQAQoukNL~in*?o%b<K$ zcgIU*jpwT0d0pjir>K(~-QQ%oD#5DA;H~PifM#u*Uy^FVrLa7PGgH5$)o(EX2@dS+ zjK4g;APqSh>5yP0s*)|Qph|Evj+bxCf;mX2id5jzw}qA1dFHoM6=!Q!&idl|gx6dx z;Q7CyPHT$Z{&5<}(MKW4t&iC3h%k|zc`!yYY5cqG^tJR-6Zy{FFqFl9U!Fv(R_BYt z`d^o5=ZC)rX4(v#HXY*%Vb1Ze1h0p$k{jT^hrKv5PE5zg-sfKDa;mqHiNn71Kh~@B zakgq4!{_vWme8SCq#VkU!m<KC*fM@Z5rI}Py-jv08Qt~@I2Dy#z|t~}zt}XDVb0bm zX_<Ga_V*QYTyC{pMjd9MM7fT<^<~q^eZtIC(y;ntA?}oPw9b}QKXo0_^xcat!YJZ% z%<Y#qn<inzjCm3dvIk5KOuttG6B;LP#p&i>xF)sQo4iYEe2{&m^8G8LzwSnX-qr3s zF~n;f7x&|KwIik-zbd`*k4~Ym&x2aZk;QbnYDVw_BKY6K!Q@QUhpnIaOTdLWa7&}U zP)BMbUVq2u1e2AqHSq|XwVyhT_^zEh0xOeaPaBE3MMB~pA3d6sc`~i8`6sdS7a?g5 zf^1tO@qm?RljR(uVaoF(_JF+OFP({r0}JN>VfnXQTWdX7cYFr9&jR)X_~@Zm>Kd)` z6*NSLKS(scqDZq;9${!^7*ZCX@kR|B?+*u)!WfX<ZCwQbalylw!N8IhNKKoeP{$yB zGYwKOx2^XX4JHKRZ6^{D(SRKE$wO?yk!P1B2H{+boXw0sq$DaC1p3V)N^4P{i+FqF zGqUv7DTbJ1wZ)_00Jaka0!9<O8k_>NkcUr}#^rfI-X_t&`z((H^J_(N;ZLv4dE->5 zVl*{4<X!YH*hLj&0GHeCk;y1fd<?D7IkjS(dbr_uNv#A`+VI_tah!}NS+;=0S}r+# z_2VNi!dc~!24xI2i!J3M>Q)!{y-Q>ziBq(KB}3L9Zl5_&A^s@1Pmh7@)TsngO9Shw zUQ>5$Zw1H!kH4bnL%d)2aDceG`CMb!xV2r0y|QHiz0d50OXsIwtD=GrV|~3n!clcN z(lLPx8)ZqykAoSS<5}SKS6=%D#viv#eF3Bx*xQq1;=FS_Pa~QBt*)(_kq3nyTKS4& zeviLV+&+3iJ@rnEHWsh$%atasUG$d;Nzk>yfWb?6>tiqud+GUBC(vpjg}E5%wQwX; z0k^+EFjAIC>R2uHr;iry2EKii=3vcE=(8!qW#xC<{cPz<+f~!Ti-zA`!w)N-nd0VC zbF28u7<GCpy0nx(>2w5SDC^1SEKL*JMh|P<Hu_aj2-*szH*g*nI6E30?M#Ms!#zXW zW8*y*DL~*1hmP%t#9>UD6At!L_a3aI*Hl)Ri@3z{!4^D2wwd}kM%X91Q~c;xp?fog z`-<gEqtxo{4=(lBvCxX>Imo4`24;-R8f=XhUz^hj--(R7_@9?wzyQDjkTBP#Iov8p zz%7rms#fBb1!63JF9{@DlJ9_7TF<(;K-ZE{Kz}#`0Set~X3vyQFsy$1rRO1B7ta;n zMuY^zqD^t$1Nr_qyw=YQSzs)=G<vjgq6CbWsl_Z(slzhU7Y3HT<Mh0Ke`iy&_!s}l zB+wr{Oqx-K6qdTD>hdJ~I)1S1Bc=<c*m{#<u$=W=6u05=;j*f$aJsgafWPDVl2Z;y z9sI4lB>xNYtH5$DMO0#XE~-e+bjUlqU;3Yb7He0Qlkmtz2u<uHbz<dMyY!&Pd7vkC z`MP+n_Ch0m|LQGrbQY#?Zz8H@nQ&;&{Nt13#iJzeK>A*~KYVWl@8{pm<NG*$C1yVS zZ4+w3(l2Z>1vZa=cMs(&C{jto?<O{IOz>%;61Iqna%8SD69r!<?xPcjZyB39N~DF+ z(}G_=ui(b$kSa%1OpQ$D!)|j;@MM}j6;0Mv$5Q;cQc~yYe<RU-^Sh;T@WI<-a!NA; zbCY0rXlkNyo^5Aq*^yhF{hwGE0Ga$NH%oMQ<oqqV1h@9U6xClr6C23me+v{N!uD4J z-7RN1i1x{}!FE=&){*sN>+&-z$P+yF6I;WrE@wN_(@L<SqAbB3*awm=4pm*S&-}}* zP%xcAUql*!jfRWVrSv#!R{d4+oW6bJ7a7EkB`I#dO5S)xUXY!w_Hl__DMUGIU+=;g z{W>W&h+S%AaYX$Ty{R!kZ!%gWjw*5emy9>gPR_)0hq1Fp1AM39-mc2uA3IEHZ<ht9 zMMg|PdnPP=GrmW>a=>E87(IP5zDALX8JbgieF&jc+A1H1%>_wcth9lg1<xF?w$sIL zs`|}DlFtleU92}*FZZtNA`q#tU^s1lo{pw@f41>LI_|ri@lDp?m(V9GAOMe%nhW%m zm*HqrUHw%>+nMa38kbcpCi?0*c{!gW4~UFI;l+wk%eIG}rtGILU>`+*cMNy<QAuX= z@CS`B9p#38RJHGkojvOpp;gDOI&HsqcbE!hho56rMwbw8CFTF9vmhLfc3v4_0MrE} z$Y?(+zwbfpRi!KlV{v0vpvUNSjO3_h7X91#zHBOEk?778MIXLScsKp~4|z69y6j<! zif9%DHfVOXe<Z)EU|$&e@F8d6G;<U1N)*{sUck?MIvmG8;$vzx=ro<gYMP`#I(^hC zY`p;7z$eGmYPxXRm_1$3jts5>%bqsT%@EN3=!GGqg~XF@&#yX6grZGkYfGVc6F{!_ z5``CcFJ5g30WzT$J_5+^$D7;Zj&&wBX*{3v^D}kv>pL6Qo85`3COD}zd+M`jjJ{J- z6*};&1ss0p#8vQ50VFd4_T$lI&GU*_5f&o`?4Z{4sazVN_m>#_gky)*h%)FPA?_5i z0EF%4kPd>}a7(NIUO{^gL_|pvg4Wg#cR2|-!oQ}DO#)7b(mImjepQ(m-{#|>2S<kt z&pRN;D32I4eM?jZzVbG?L5_x7{WnSJi-8IhLK*-<7i`Y1#=4EgsARRIx^}std$t&@ z&9az_o<ApSu~01CraWDI|5|@c{L2Ka+l1SJ!{3z*)U+cDurF)-g+^dxJsQjXJ5ZEb z@YFg`z>U3=4VL<Z6U5Pm7H?kDUsXAv#VkRfQo9Ly@E&1+(3cXB8fr%J=Rw|48kYEv z5FySQ=YtXwU!yO*R!vUC%y7eONae*}^%a6z-#om@^^k3DqKs;}8Hj7o`Pt8Nx4O2` zl7B$70GVYX!BuWy>CmEAw#!k#wa99X$Rr}zb{v;VL6Xp?OeJ9#{j-TlwN>+7Oa;-Z zDnwaS$DIVFv%Ra0K=p(|`M`&}`zwjZjKpD&iP?$XjrHY@AXzJaWHpXMD=+o|jh2R7 zW!<tErT;=z9y}w~aHVzwbd^|yIovx5lN7~K&ioCV<Ex9d_zql;`B}?&qM&g%+wXsX z&HW9O_+j}+A<s-<<{tQfjRE?u11wCezbfRUXXSL(fYlEVi#1$b4CFF-2@4y$gUyK) z5dC*bqml%HNwB@o6p^$K)I?YCe2H$BBv;Auj4rq!_ueJBmosfN=|wokLL<WOG(0QL zg`7eW6S$fMN%3_wHwCr_57Uu*0oS@%HmAbO^jAihpwHzPo_tO&5Lq~EG2b<I40!hj z1lfa|OAf`AkrhYS4+&T~p4;7Qa}AN`gBn%00X6VWR>ucFS3OYE!x1&m(dB-W{Y%JN ztd-fcBIhkW>1o5mR<jEk^uO@gs<x2l-q$>JhajDZMbrt4;?Eaw@aJA*MZynju|tVb za%z}Kdw<PHn%9P$2yB|1oKePdm6L`qoE|k!Mnbj5`&k-yyS|~nI5QAh!r1K!k$81m z%nme%{7;bVVhfbozA3;F{8G}Ll~<u8)~iP3t+}scS{N+W9|f~()+W(t>`HrSPYqyN zxZ7ibVz|t%Q~xSydptWH69duCNGzy#|6JZ#w@V%}I2bwmj#Kx|!yeN<mh)Ws%T&X) z`TxeoSJ{y7Z1+c(?O$-#^D=JyykJp`0A<G1)?TgH*ZkgGN<$2SSQJJivS=dc&)kWp z-VhoVnc~3>&6R{#O8hAM*x8)kAMK`qsmeKUzAM$WdiW$glI#2ejD5HH-!Aa8A(ISJ zVfI$`ez<=SeuP5x0R_?M<N`o~-C|w!4R(x1QdZ%dJ!o3V-yraJ8{K5DYA1rO4f^<9 z9|!x{JN$-AJPa+cfFtKPy(AxiAAqBF(1t4MF3R_0yq*@>?|WhJ&Nw=7W}Pyqdpt-s zEGhXLkBJ&8low<oRiIL$T2TAB_Y)b0wU@rKHMptA=*V-Zh&vI7ztm92|72@OXQb>^ z){5^fCK<uuk>eX(6XSFzuLD>iOnPrmfUT9dvDyF6KZEpyr|U_@um?xqTn&a-&jVh2 zz0itsw6y4op+^;k>x7zGPXFxfm7^#vO>5>sp#<6f&f-Cqafnmj-n}&mxUO502W|vj zZ(lj&4*Oa{hU)&TImPQBzonRXHt<t;mP#jAQk5ZBOZ(b$Gu-u`qWqufp(wVP@?~b$ z>Hp9S)Rc84!bGKyQsFO8<$jrA%5q`V71fq+`|0EO)o;&$h#zz0_GgL=CdVvrw#UCK z@gt@v!&#v5#(77__wV0(S}xSESpARO1`A#3F~uv3%Tfzup`UZ`;t9h)eF>XOGF`#J zlw)e#H$ChZ_~b*7DV=6vjdFnPR2~xx+3Dn;+fPp0U{^tgCu}vI{0d^|csgoE918n0 zLQ@sD@An@g>PlSI562Qcp7W}(#c*TFF^hU^n-gS-@fG~ejQaa$*a3(Xn*ynP{DTj; z+3$<4`oQI)>2w&@H+}x!3G-=J5{~|jrMrGc(gVKyGDnrytfL%P_iMFjjomH<^b2MV zGM7TyDYaIP+$fcx$be{8fNDS4-g@qVI`Emq-Q{1>^tw|)5)kF#@$vK7hlhXwe(QLI zhW-bbbrVqD-YfdqX*M)4O$7CHzEY#iTfSCiJSF<ZSOqnrFgsg&Quf93-S#dx9dxHk zJuu+LH}G_&N<CNn{_G6{)L_O8jNH`4jOn|AKd+Pa;>C-b2facI<reSiTHh>9?Ekvy z&pQygN;ZM~=;VtiHlF{S)Bh~RU50R~L_%q{wNPKVhbz)3_P7?FFg*T-Pz3<rQfKMN zEvyxw6aaKqIqsrOuH|rU*_nB`IWd>L=j8cksKe|~3VDV$-sNsE-H3_)noG+~nlZ7) z6h1Kp>p_qS;sUs!yvnuqw=PMHc?H;?Ctle8UeS7GPfHIq#@=ZCaM{O4z-PEluC4A} z9fMP>s7u-W(iCj@pVFB@Q?LsD@hW%y@eDy;?NE<vf4rZdy1x-_dPt!VW57h^V^@Q& z=i?Av*Knm!gpzMr_0%dg&)yS)Sg&H|AdKaG)W(R5CvZxz_@ePPj?Gl}&G)A5`{!~0 z2}EUc@;ntHe&4Q0*IjF3cTZ@BrXl_arScQ*g`>cv|I)J9wvO;fCD}!po(J=tK1Ugx zVdkD>hb}`%_>B0Wj7u7S?>nD|Z9IxGhyw=CzOPD)#j7E>M6(v)YcuXg<5@Bn!xXFb zTfc|2u#j=rka4_*S*l6M@>jb62UDWeb@KnwtusP=eH>8Uq+$0LTAu6f5Wa+;HzN3Q zob;#lv=c?B3i#YeV1e5i+q)%++vLv<YM5}-#@>%^IKaw+oK+`p4E$y3UfAiF-|sdn z)Q=XCuorTPHq)4ccyDq!;qRZ*n7&7-;+pDaQ38nMkMf_GpAMW5AOHH#7RAcUi2gm> zvr@3q=h6Dprh`WE`orlo-iXB)49ib71=yxRe@9``9BoYAKvo@Dpwb(n@y9C-Cn4#B z$&%3zl-XSB?}6_Ka9{AT{>EN1E!LL6-IN<6MCRHbhYuD~_Vpnjy1i8TVq)ukU@Ccl z2^g=uzE}&GU&^-8_-9p~7C8T%7Ym#(@bO~7<S~0sYf~q`p9_?iNhFB+nz#G2EMN^E zmnud-DNTE3vIbW+)c>C8=34BVc`WDk(T;oauu3@+aLR!QBpj}a-bN4Ts-#>3Y9AFe zj~Qh{f|L}tW0stJ52SyHWp2DY$HMq;)@`|k!4bKhwyI%K4X7B_p_IN{#m)Dqz3cf( zTMEuwh32=KN!rQG&JN(6W@#5M#)Mmp@BACLGmHRc14q42L0D;q^0EW5<c*<2$i;iD zzePkAV6plI+S2SwwgSwE6pm*F9a<yR<K>4XclH}L<B6Ptm*-@y+Mc-WUtuV7h%c8p zb&cd@CJvvt6&_miCdd79S>o>_g)@KJWaet=_;B|bN?S-*est+@sK=JA-q?tDlPNI@ z`%h#a_@DvHo~jHwO@+05q6h&w%*q1d!jU3tHC^wxU_}7%;a9kVGs>pn^^j8!WqpTW zaX92{<GihaJswJ@*n7S#4;<pf0;YHsR}#5^&)FBwEgY`8XS@&9_Tl{MXxTbU#}z5P zoH_i{5mcF23gP1TNY3vtkotn!X;Ve*f!SJDvXTrw9<QtmgTL<1{u*<kpUK05Cgg~L zSl|?4=h5FHR<|I7dagosFqE5RiI%czXYrGR+qUYjo#{^=BLH?{>yssso0ABEwcMi$ zfgs*zC1W^?QEOfwYa)7xNT-U-&mD{i&_h2+O{=Ut^OO0dm#pB0uS)o&j{<#$Q%;9t zSziMx4JG(qUz9i^ZC7gpiTIe2*B#zwTF$Xzbh>;sCmB<!m}LY=l>SQKQR%DrK<Atl zF5=yjcrrF(%{xm{MW`%U8JePa2g9yjps`u&&zocf3^S1qhAQ!!d@1Y}9@9-5)i1&l zl4Uy0LhhEL*NFC{my;~xi)Yi5uuo;#rO1%Is5Zl604%PwECp6;2vzym*?7hB2mW(X z$&+EUD%-C7P!^|0B&+b=j<#ofQ>~tw=%-OfVR<&@XdJ-9-Uf5w2Dn)$0TU4TsZ9Xd z(v9}lO~o6iEcksc5eLM!tik<?gNwxrX{c9HBFYMf@ItcJrDxEdhGXM0Gv&aFO0tb8 zb&yhn<puKhRiEqdjZA*mS8?|Gm~hE9(kLX!!2UxTK!<s@sVxHm3tVyzG^m{RU7oRk z)S~l%6eB2}oQD?L9EOyz55OKu#X#mFfB2J$)7rLX!Tsae?%Z9!)Yai6UDn;dB*LCQ z17N?cb@p(=y)n>Mub`}iF4bH|u0n=YrOd8AGnI2ahcGq?hCXLc<g=YKD_BZrr2Zj1 z>#e$zN+Azs<!o`cg(B^1>Azc(Y&eK}Je9&rf1LdafBucg57Im76M&b<*PwkUb_6#J zQE5Q#nr}Cq#v;~_7M}l&gM4#cOMQ)<mboqp>I#s>WZ#o#2MGtnEpWxhvhkx@O9gLP zswjq$>qi8Ca=H7gyjGZW3}0(E66%=0YB38}efZ}Z^C5#W+~pRx6|AgCRcth6FQmbP z=HCyQW3xd+szk0Rbk5vTugMx-Fs5kx6&L<_)8te|J>;B;l!BtPxjP~8cxU%$a&SK( z(UGeRWEDi@qTjAX#zm0z7R5oW`*;DpEznWk=#Z$7n=;uaZ!zH!0c)YtKN6D?qinxv z7OmU<oiG+ak=#P$c#j3*@iu#U3al5G?%^2@;gz|G!$WSFOXw^mOS2)Y8ODZXf{0xt zD=TTq??AJ^oe;1q29hdkF*@su4m*42-BMQA-Tg0y_!o4wsyZuzGD1w1W{n_(anV3O z7Bxdu`qv_G)-&C{KXi(vDB(0)ugB_EX_Vl34Wi?@98{SK;A7XX63Gp4%R;)v`en1N z7LON5>$v!=vAUaU`uOlp4$zM=pU$*>4td2eR>48k*6N21&Yb730Uh2it$>Y+VWgJB zSQ;*#V?UVTf3`*Z)h4+N>{zMpbq@uBF2DNOL3t`DN3b!2EzyDYWCL)XEOcZMQbO8@ zr>pqC8TEXYdU)MCphV!!Ua>l6!f<hJz=Llz1h!s+GFa%mn<PmN89}DGR(yBB%_ptC zaMan3q>1G-G)a<uzkyjM2Y+8?xZxx1LWd^82qF^=?9P{x0@=L{Mvx=BF&F??$i+9$ zO_&#kD}GPpiIl*)!K_M<8D5)cNEsOxO)+9N)LuzSuTeVD^{$H1BEFxrG3B`=qLgfv zSfeNbr#1U%UVQ$fh}}p8CqS~DwE!TK%&)9bZwZc?>wZN;n)Ts;2dNbgKlFzwSe<<- z0QM;T^Z2>i8VgZ&Q(fNy$4mkrGR7+|e@zr`o#$Q`x)Oi11C}1v`Es=ygM^SSm}k8w z=>QwgOW`_byV_H#(}SF8xLQO)p#=S6zX$?m$NjS;m5vZ5*|o`OGR6ouXbD&7B7qL| zl$>MQD5PMN2uF@V+jOU-5A_|e)BbI&#-M_%WA9d_`QnF@({Qgs>2ERxj!Uq}7=1~- zf%E#fEkTwNUlQ(Wd2xDrsCjH{ED67A(0LC%F*4oP--)^QMcXAs_cTSG5C|O(`=G;4 zveNF~iHCl_A9wnTVx}Py{{^krH1@#PbcfSlC1xl}HZVRd95XuWM{mY3YiRE1urS&2 z$J$anG%@H&y*-XYUEuN1+tM`Qw~_yt%#ymDq~vD$#U!~z7D%iDp29n5--D1d@`rwa zAp!#qKGyJ5&8Sy+-2rcaWNJm$`5*ZKG?e^9ZDjC>aE}3I^ot#*iFR*!VCzPV5oaa8 zDh>m(zpl{{4WMw~V$s9!v>1;UL|D-LE?vq~eo@Swa)3qIetS@$yd=>haKFZ4F?@{Y z-beg?yf^_zcU|ly8T{}o+dr>6y&ul<@}5jR2Z!<@1D3Bu&0V5t{s-x#764M4;vP8J zwZ_34X$C;b?2=&acLOPtTMNXXuB9yRA*T)r{~LEn_~AmadZ5D*DCc_&j}sMt1a<=( zk|l+JeSMUU7c$4fe!WPAhvZV(!n;@{MWm2-z`+dR*HzC&irz!W>u=0f{~itLTnNA= z*&PM;1GH&1L*{$F;en7_cNSi~ZT}=G2OJd2pTM?LP;!7NR?T^IRVF6?Fp~q;n3T=E z!h@yHlq>)p?@2&Ew7o=q1jF2-&*McJUe$ike~P8j#l=8*KJf~&g|g5bB!P8RR2fZG zK{fh?P6`qa8MIwelIIeq??+C$>-3+ySDw-9H#sHWWVMZ^oT8;YAikEP!dvF-a<0&q zi566n$p9usCY&EllCmjJ$fr5g*NDclB+|l8I%r1uYJrv@{TrlB-Enu4YK-=l$e#m9 z4vUL!#zN|Cwj;;!a&=NBcy~U-MMK2rnlq9^Z%6l?zm4IeA#Ee6RV->NQ2A!aD|N5& zMLpej=%sbo-NVE~$Vzndv)vmTmkT3BtF$G=86ZN9`&21z@38PgcX9(CgoAV+3X9Ja zt*oLH(35`3IaOj$2fscKVU9Ee|D@e18nyFvWO0OOSJNnb%7s;~=HB*)43TK1%BdmT z*zKfGSPk)$Lxi@}N%S8sZKND8PNI)VO|KM@)VyE5S@C@~idW*(!SqJ%jr_GV<xy4$ zf<kd-=UY|a-Rtw;ZfM&mJXLg5ExJB`xW7du?ez<Me7Nc`p$82`0r7pKfS*h%v@I4= zyhA-!QrP4>khET!+5V~csYH<4YaBQl7saT}@roNhx!8D6a$S}4=GOjZ7!TniOVCe> zXWjk_T(f;zOYQm_1IG;Y9~%Pgs5|ca$G7f19>Tdm!cYiDZZXe&VUn<1t!x-&a8ep$ z4$HF?aBy$3i)QHeRUUeiP5sS!V@r=D97v?<b|Rk<>aW~@$6JKtd~)yVlR~K8+$Y`D zi{F2y@XH~FxgOR19g7~A5u)fJE*r9vRRvOn5I$jOJn!+^mv-i`u~?L%^yJt(?NRS< zv;SS-qqZ%!pC^ZQ9==(j>q+LYuPpGcXTg6*yJjmhD(LMPPSRrIA9Nj(Pl+s4>W%#j zc@wbz$J1AbMcqAbF9=9T%F-Ym3j)$0-AltR9n#WLlG0t0OAAOWyL5MV3epOSlr&0% z)Vun7zVCJM_i{dS=1kmk&rE1<IL2dgUCD=(o!Nr|{ruF~{J=cg4kZ>~&24|&vkXz* z0FnhS9(>SpxwzH;{qsklXFyx^%hgvzX4eN$=(YY@eSPX!h0Su40%NJveOxkbInqRV z>{Ph(GplkM1~Vc(e;}kX8aosZd(4Hz2&9Oe11|2>AZb&2x{bk0=SG9kDm#GWQ_;>C zdrR7UaWyE6H~S^SsGF<opsJ4fpGEjoBz5oggyhY`Iq{W!aWUUzw=uhX-njCXLjcG# zw{cZxxnQFr!BGLU(s^HqOUuu34JKJCi?*I6>cwQHkfFNSN;y=FVLIRLax>?eq4_YS z1XP|~Rb-<|>URPaDFLzmKFq53P<HZ(yLm}*?mz)liJrFcmCy~igzA~?>(!xSZ93%i zb`!zOg;o2nqOugnc&K7#DPN7`LUC#JQ>3(SX){8WqhEEVrow_b%Y|llN7lvkTf&aw zPXVtvZmwjnX!R28A%^I?xy9?*Sdg&3qTyfE%Hg<uw*jfudwt$H9*ld6_*eJwAkfYO zNOf{nPw4PCp1yhpj5eA(c@>d}OpM4jU@x`)BUTg>M21VMaDS!5(4H#?dVopnA0Ar; zi3VC-xF2OS>9e*EDMxG}J>#BfLDwpoJw4-V))eO*%yEA(hNkRdeEgM75mJRJFbrkf zL{1j(A!$Z{+0+&fQA_sKmFinjHW+XnyW{d_+-AC8jI1I5-qyq!yO=0Ni^yg-yNf3h z>|?C~0aP|xFFpvBqmV`R>35}foxJ7tQrg)`c=dY^f8wU`ufZB&)tU^j<}@dP6AkzD zF6}!zJ%}V@wMGYOZTbCGOfv2`;xK)#6TzEmZJoO=uWLk#<9T0bVI!W7f!#Kc;32^< zpqJ8ynuZ6lvA%mo^~Xzsr9y%Mg&Z8JN%)@hU-S-6G~{q8{UZxW>Tqxd?ic9%eoUn) zd1RB3$j&ouG&-!VLRlG#efXrYT`G-LT8QK9;@PHn3AOtyDw)lfv9P`{_Pcm?hI4jb zZOocgUEdr!l|B3ng;343r=5}ysBL`Dzbzc&6cc#jKS5JyMo@0QvlFS5L29O<MI`FV zwYElq0;tBenBQ*R4)-UY2cb~jmL?$>+pGg*Z85Lo-R<B>*d1Q**!Lmv@_)BGqXY_+ zIW{iPiPmTy(YY9rW{^Ww-v!A}Vs8(afw3<R$Ik{{hk;8Hn2<p_=Ay0L_$m*D)qL@2 zQZIBw!=^df)2KB^C-!FVH=9v7q3=W5X7g?iY46LsdJ*N?Fai8=P@>3lT+gEv*n1tr zjn#maeOk(Rr4A$aR0m5{>`m<VWe=$eNRwANV`+ahz&_lD$_>)*8n?O2X`E_zt^ZmV zzR4%jFmA0;HkcH)c|-EnfR$`(Q50&76d+A#^h}N8fn@l&dr^`xap(E^v~W}F)^p6X z)M3==;%qY%VSf!E<4TDFkn(MEEb)wAEP(%4l%f0&9UTeH?P~hV1mVBfoB+roEwNBo zF$Clpbs`ANHp{{F-XG4G>M|}?8YjFU_|(sVV%|A%{3B;(*<yWEp@yEIghF$uO3H%T zB5?2Y>RHOI-qjUF0G;vIRhf^8P&*~%1-`ov$zxd<pC^wuk<*{^k*T*kZ}UCmo5rys zHvw)2edy>JDa1{kOs?_!I3MXsx{$^)B$*WNDRtQq6Ed#qf>Mnr>H_Z^9y$n$BI7we zOyt%z`{v-Y{bL8jL)puoJOakzPJVw%JD+Hx^D$oLkfU;c6A=XsE+o$C7I^(#opf?N z5EW_9!l@KN84Yu0@1cl~USe?|+{a=pv82zF3bLCZLN;`vadDgqsA&VYH8wwJqcC3L zKpkq2Emw)wwDPNq5p_ORTPFpffR-U47|+jA_k-=6*F1qOgCSPWE8hIdPk=NnkY&pK z)B0Qvo9<_*!A0zz5Y6lA&-2ioEDdx<b^2e?w=_^l)}4^#0x=Vee|Jd74CNO0|0Yd; z0m>=)AlqX1O836l%0gU>PFeR+%^86NlMmhT>LoM{-lQilJtY`urhX*mEVVR}zBoSX zMf9n99~~YXtPEz*0mh`ajFzE3yl+GCUP<_0TSbLn6-Jy_c7{Q2By-{+f0J#|=bD4h zut0MOCx(jy?#rb!%mdTvpleCkJ01I`@1oJr9q+3co4LG21Ye#w3>j~>{fp$+h(^#8 z9Gx+@#&jQ-OrMM|0Tn)748iG}FTO%+mSg)Pmfk}&pVIG;Mg3X{XgR$VoNSXbzZjZ{ zGSdENMq~*Iff(#xhsNJ|lKazVz6z-6^iI;(_|hUVH68Z1=7z`Ct*vJ#?26ssIdOk0 zgMurIXC!XqzGo<boEHzIZj>V=8@F1W15cml=t!1p+t@Jsf@a@9KBm}dZ<*ycK3WEo z=vhJd`UgmQBT6vyyh3HXhf{B`VuJ11Di6p%VV5Ikf#vANX(xO5#Jzl&0C}ygN0`8D z_=yvhGw9SY@zn*PrW`$2mBi9l+BvMRtKU`(Os%sT{>Jepu~56{QLe49pWXKC#+rF5 zJV-6R>vDC_>j{W`;<><X={td7=)K(*a^m);$WW-{ong^fiL#Bo7&wC304igY+2)rd zX3)S5fv!zV+iy3nP{*l9WC)mM$TO*#z#aj1WwO(3=H7c~^QrjW!Aq=Ec{W|RObMWw z>NX7|dO`0*GYe2e?l;wMoLqh#9X@LSaoqT~8|P5(H<MGq|9T~Nu+B&MW6cw;_m2d= zb_o|XWkBtOaDTkCXOt>xdTql`dz9=4E;(iVNT~>F9b0W#u0je>Z|0-*zS(r*PlUqX z{^F*CLf2Hm1$c@il%d3b$fuyhhtqvO48HiuikuJy@Wjh5Y8^7WLD4K;o~RBVztK7> zCIyM52BhS8)MB@kP}dWgSjkvIu8+wc!_{spoemxoOo^Krbab}0HRai#U!1Iq4^MFX zlV%<ik-ci8>TN4kWIfY(iK+tbgytQA*Ka$eX#WU*_>Go-egoB@Q_Y{TmW1)gHUznQ zaY%Kdg2n2)(KoBB-46kr*M~-eK|6eT+i$*~k?CT*e9IEtIRKlSUKDYa0lS#T7O<$r z37;Tj24iQ~<7cO5zA@ueq~r`Nyzu&V_>r`1(K|vFV}CYuj4K#m;+->gHpv!r8UOA% z!6vrt0~`cU9+3X`e#cW)9*j1=n~vS7Y}kI96m?*A5jjJ8W}H~u^rC1Dz-(j6fV{CY z)(9|ROi*ztBD7+T2fcVW`4ENAZ&ifSa9hd;%1W1D1irj<rrF2A<X15<tuJ)2Lu|3D zr@mhxZ2WPCu)4r5{Nj<JtLHMo;MyrD1rq{_<=<{RUyJ|UOMyBCgd52lfL)9}Ju`9& z)#FYh#S%peb;Fw}96P1si6tw=BCN@Q+Z*)#rcq5Z)hDm18b_ZvSz57NhM$1S?cx=Q znj}9l&<uh-*EEweJcln$Pfc^X>Sn`0X(M8JG6{{_&k<TLa>howNhxm(t&IIq=HYJ{ z$em8}ki`MS#D#RtRvk7N;$)XBo`3H`vz9BsYh#w^D3RlN!jfJnz&q!jDc{i0OZnZ$ z2^3oP`Bz*6Jt#(j4eSIKv@shn*fb{(dyBlpD>!Y@P5)`j&~h>61aie44(u{7KtZ#p zD1!+$POkfpeW3Ykc73e6`~Lgg)Kor6%5|2>!}Vz|3oPz8R-YFYRo^_RE-AKH3C6rY z9qBSB(3e2QRfxl4Ju3xPY%j<W1F$Sf5Y2oyf^Y&6z08YwL3YLqvUkZgFu-9<opN|i zyFO~}nSnLXnwy}jSJj@{<P7mui!X<WT%69MJMN*L(cfaKjX=zwYbs~S=X`zP1lRA4 z(d{QXb{muIG*Yl)>4E1draGS%BGxCFwL}FGe<D+7x-^GP=in#UVV{+~o_5o;#qJH7 zX(gyK>Vz$A%2c=bn<7sB5bTgohP+(0=2L}GmWYU5oK7<4_N{KeOW&&Vo~BCp{>`tZ zi%S|Cm9YJlJRh*lm3PTC16NEKF`_}WhmK*jSb!o#T0@4H&I%ihCjCT9Rk?=WGmC<) zaUDpJ1rUKtXU~0{w^Eh5-x#^s=8ddl0lOB~t_7M6_2(KdaVhAr!B6e%w*q)dt+O9~ z4yN*ib5P$foQ{suWP%t11AVO=gS31e!j|#SLs60TU;mKR@>5UISf@9|Q-4Ulko~u~ zH=GOmdo+m>keH&qZbt4^?;{2?4kddMEQ{>)7vie$04G&N<>5E+Ejdtn6pZ;e<TEy| zhEd{^yu~n7WJ446VE|(OaN~n+K^tgfF|q*&fl;e+%IAAVcc9v3Uu<=v0b8#6$Dh4X z2a<4EJK~h$=FxY%-t->*e)90QAp;G?yZd)LGi{=>T87zSmu8)QcYm%=KPV;ANp^Vu zI{Nm~8>*{q4GuQXOj_4157A$Efw7VP=N5kryK0KSa?su!X;8Pm^y3rB8JT~223BP7 z!5pWT=~sqGBOA|GOQokHxQWP!#Tk5Iu*y21ptb(AZB{c!N*&`bLBCbLp-%R`#rITk zTn?|-pGn}Y5U}lVd$`e;S0eOue1G|IX{7@5ek2hS5Vhtr9?IHP>IyY#?L`aRR!=nR z4!qmDW`aHHXU+x-#-un1z2kSWQ2^pxkiRuC4F|-U&G-I*y7^@e*juU^;OM9x*nHHk zWDD;w5SVnQS>}7y&?kUmg;5EpCj8RTvacVboG~#U?naX*>Ug!@<#S>QLg_m-oWaIQ zs$1e3bV+?|AV&7{<<!Z>dRoFKcNG^4Oq5#vmEP9f&O^mYZbX)P5#;(18&r&CZ)YEw zF;H@>ue<pHP1P5JQ}R=(Ldie|gNS;P?Q&F8{3LyXz>*cjm!B~Qw>sTvoQrJS%^E1` z)M7#E7p90pee1-p&rg*$HOut9d!o1<Ach;g0}<bhIzJ;G^HJXTYM;v|73q`&R>X$% z#7wkZyPT#16j?sTK~5Ske_V*8sQm+fxs00_pAkQU((9&$Z-2j)LWpNrXlT4sA;$d6 zTh)g`ckjh``A7QnjM<K3e{<avD=hMs`hgAlP^w?QMIfAQV)XSI=ZTruNU3sk22_0z z`wU$8kY)C3rPn*ZSt(7*6}9h8;Uq_JifhppB-Q0}AvZWouT*v@g5e}STx)an{*|rD zVZS0}yy6P_;Z3e-JM}ot|E?18C8r1twlN>RQY0)f_Kj=ev-1!MhL-zNO&Oy2)~5`p zoBWuAGZw>%R#r&9Tn9)V2@z-D;!KH_uC=E8c0fP9BK%gMfCT<=`wK35Sq=t^0z?5r zCci*!IM7U@jR}y<h=((>)$^F!Xa9JdqXvZz+cMAQ_f9<c9)BZ8;r1bjyTwe}UJWNH zaUFnNH!AALY9DbBBl0pUVk15f`+UK;1@7o<eaQFNHTMrd5#*o#En7c*x~Uk7g57Oj z=2Ct8+Uxtp*1q_(0cVrV2FG%e7m6a{ddB)F?Gls;u8;JfKMpbQdOJI#o`XK36_dT; zuQ93x1QWHbmQJrUGq!XTth3~C+vr(qoUTt3VhvrngDjYELE^q49AyXWT*v!yuX(z% zJN$K#P|rWkWL-B>lMh`bDB4K5hCHYBW`o^TZRxHJPA)cz>qV;=M+1{$1!~l*j}pAL z9Nr8;_`6wyvFZDD#%jlzoUm$3@uUTwQxYLjRoRcBc>8ixQrFK5Y*1SA&sD_WOg>NO zD@K1mcy6R?w&f{@!KC4=)>)xPLse*vsZE+LND!}nMa)rlCIYU>2)7yMVx;FhYdJTz z%q%!6nP*ln>}gbG!MR{<ino?vcoX@N0|1&#dLjk3YLAw#Hj<O7rUR{vk|~n>>~jLm z!TUmR@Urpq*`&z3{4O4Zi+mGOa9_{wHySbNG4z;)(a<TV7gfXijL&pBb=LV%HGqDm zN5kh?euGbI^G#pQ0iMkf>;qqE6=8{f_EhMtgmIkRB<Pq`jfZtUm`L9km!tnr%UG1P zY)D<cK8=xR4|o=9o{4zLQs5z@e7aFLfefU<08<%}(7e$uaU{c;DO5<&;tNh8o-a#I z)rYL*GJAFwXS3R8V^HnA(`m{}qMp34el>0fzCeGp-(*Y$09gv1o!;hox`X{1JRXM- znz$YhXGn2}f$?C}WPqdzwug&Cx;RRtU87v;u!{td1(JAQ`GorKhlLhp$6V<==hD&n zSYXKrsDR5=QAQ=>Vw4^oznc~p5TUzyTOEDY4^N0!VMn8%f6vUT*5{mZ>cv2NP&I{0 z%l;XiwgMGN1VAGoa3KYEW@C<&L3&98T@Dax>kzx9Z%?z|GC;^)_S<3foW`^#@+o}2 ztQ41b8_mK2cuw#BjXi;e@<P&IUI@0+0x!IZVL72Vb)B9j#Duk9ePb~Melg3MN7f+e zOI?~4NF;B5vJa&}3s!lJm<vxBI&n9P&;)@RMcZjtS|!CZ=rGjcueX$F2wmBU$8Vpa z+tJwAQj`Qn$E_u!$sl(NKhDGF#W@d=YaqP;xxq9dsb+!f1<jy`D2<Ze=9#V>`}Xt_ z(atzB$s5G-Wf?vos*OU~KOb6L^q!U!GVh|uvWu#ZC^wa3tnfdpL^%yt4P8EwNi>&W z2qkj$BYJ75`M4cSNjPDXij6qCU&Ny<1@NMHB0D5x#4gFT`ESmwbk-90Y~t8mGA*}= z9(^s_twvglTZ+m&XM+7e=&eiVpcXfv%Dek%P!I?(QYL!F7rO`2uY&n<SM1AOXMDOf zG4ZGV-|<`1&43Q@h)%O44XE$AosXdc5eI_w!+^fRq`SmZJgtUVX$7ksbdqNmWV(og z0$9Jmu}Yowws3wtvsS_SpU48Nyii3Ki1wKdxZj<uC=@{S4V7I1fX})d-00;}T_%Gr zPewtxkw=<Y#`kNO;PH7!i-o)1M%zkR=$lNP=Oln+{sMStMT<_g?j9vlAp31jkP>Jq z#&O{L3@fn9q#jLIOE@@?lnmy_72KQsYMG_OP4sUE)<2&x5N`XX%7hd;U7#E6tTBqN zd$grk;;Kjri}llD!F7gQKGg(Tf1}atkt|+yLCqGBpVfTYU5t$#i$2!=E&3fM(o7K) z^69Nvo2oPDmL(w5A{(x4INQnGV2x%7wmu2tl1!}IwH9oTbY;DtD~+RQN+cSQC;Ssp z1E@l#2i-cOSm^+&bMq{h8^fO!k#T%F$T_ZAt}J+r+ab}TLK#6|k)HQRj?uUL78B9A z<>J1V=S!@M@4psXE{>sUHex+8gEct|yz;NUu{O9F{{OGS(B85nc2)JTt8s2DQS$aS zs&E&M607;pQU}#ouRDyI7f`oSo$F+-jKq>^D#ShdfU6;=3M5*ujrUk&0X0BMFhhE& zwWkH)0}}5PoJ2E<I60A#W=Zfoiz_gRNT3++kNoyicIrRLqS7UF^GFZ@Rx3%LfrzNs zh3UzC@{>O$^Bs<k5Z{xNc1&JWGr?hZeloTg-LrXoX)vb3Tg--w1P?d$sWSFQ4j_%$ zb+n|ScqmtIRn!;`@<)v&Dj)N@9Im)#Yz66o6abak9tNpB(#Ors_a63#mH%Ju%(}k9 za_n}vc;`7W-M#bk9rTF>b<;Y_%IUQQLyhKVN!em<i&cVD6U`bBCmq}S2((ELnG`*O z{%P&&wGM`~S%cX=M6n36v>?x*l@`;itdK<a17oS*Jc_+;P`*(1$Y1K6qu6yGhH<lf zLiUD8VCC-GI~~!AXf~w;#sZT5HuOI>0*_oJFuVPZ*E#9b%yPdu-Cp>p_qfe&^Xo7) ztQ`ZCKYx7koC=SvCCoM`*A{0w<Y#(O`X~NWV<aT~-dWcZ+o#!A79<_xFlXQ>93XE- zvyd%`5f+{<{J@WXSatG0`;be&3ovafn28Lz2<J<qBiVjk4ngbHvS2$Fq+{&WV1!KD zt;vE)KZ}%s&{0hwS73QIw>WgPV$k!wa5Aj^aO-vxt~Prb=6RRc7LVQY@X!w;B&3zh zZ*9!d;@!XKw4zzu56_Msioq75jcr%6zf&5iB(|ZeKTe93My2y~%7h$9&tW9vbaI^7 zq|wz{^KdiVD#%@o9}-9S+E$jhK{+BZJL<i0*0B%$AO1<jdNKk8((W9tPp~&>rGuuj z!hR}^6lRKR-Ukl9r%Dh)(wCcEj(=8Dhr4bH=L{wFG(RrQvM1#GK&9Uv|6gLr2cCTX z;e)Oo0_K&8YxuC;ik@f;G!%|r(v9?Z{3d)JQH&^Ie+x7_eX74!lhZ~KZ=&_h_nSWS zqiBI&lAdF-?#T&G40*D7QZw94SaBsF5P2RRy&W6qWMQJAQ;JCUBz6-=zw7g^hlP7D zKf_D}M|kWDt&Yh|uCz$=g)Ircz{s`Vb%FNDIe@h2^_h$#0US*h5p=A@g>7!qzb4nA zyH-1|Qc7MXvjp#=COYNd5{(%3tvVzq7TGeK=p;xGOMfm;eM$gdoNOW4`}Y1TdpcS& z*rnW81_7wIuw?)Va8^Of9}9d>kbFTP|NZ3z(bFuYO*uv!ElQXHO}zTP|8-hjduweI z3fJgrZ4XMi`Schs>3>nzd_oC~-+gRS)Ki6wYf{x&DXnwNNZOl)`?2nfK>Q2{pM+Qi ztdkz$zW2UgH_l#mx&MgG1O1g}%91K1ETeOPR_H-)b%cT4uE`N8zB3w7wEKdbv^pz$ zkF9AB9+ME~Voi9Bd*#EzuoZEXjqAE+Lr1$^;DF7pU9U(WK^$$dfiUAxMM<VG^_xfW zG+eGk4-W@PL%ZN`j^)e-7SL$?{)Ct4?vHloPi*tp#=jKB!0UE$6tFu)68UYL<(*UL zPh-fK*bXU1Wn2n?{-C2i0FMWZxa?p?wa~u0-Mg^IX^60rNwM@#y8NEts|Zs2i|DB7 z?Qm7p)ya#p=zDv$UF`qxe`$zkxBW@$EO^OXLYC9UFkJygA6C9&1_q#_d9;yu%kmv~ z*F=t6fk)UI;JMD|v^AIIL{Swd>8HF`B8=(6p(8rE1B5dJeOhisC(=4=u0kJfqeE3R z)gwZ~2kje+^awy$C9ym*ELHo`PjYHMd04U`cTgjF7lDYO+7O@8U9?XQb50X-MPHs+ z7c0EQbMumbCX)!6GXI&BllwuRX@>Kv)8_*7G3#@e<o9<g>%F}8AqfoC&*rUNF^yIx z4tFX}A_zjZR)CSq&BXtU(YOS>`N{S4^wM1>`ev>6^Suwbex^NbAJftc0pQt^P}Ut% zh8{52vRK6TP%zsnz!)(;tXB-^CsVP&5s!P5E)t=*sOBD%<vHL)hz8Q|h#F&?l(e;? zaGj-#J6pSvEDK#a`x*Y(n5)XLO5dmKSoYXDR1BH4%A4q+g(k!dD41oJc~Oxi@&2nV zjrQPqBszwAguu1{To9-^LemIa=y78H(I1;Wh+JR}m1V((8^uX=<f7-`8qpV=SbZ;} zsn;Pi`Gq(tEbnPPr#V{+sxjF4eEY|RV9ALaRW<*=n>2`y=Xz>jNNJ+Zu$5*Q++!cw zlA#>_GLcWu_x|^%-y@fW`^t6X8852a?45AUxk7P2;;QI;Sg%}y5wn+u=*33PLshh? zA}r+XSk9ay_9yLqqt{v;IangX3U?K{dgVsd%kx;VW1rrL5xVP>c+EriEGUM~V_7^m z3v{YpjDNRCO;J(UWr6XIKpm4fiKv^XQPjXWr=(<+X!hR&jfF;pzJC}3A>?<l1aRZ# zz}v&9!O>;EZoiY0<FD^rqP2+h-}muhZIGiH>Gywfk^UK|KKz*gV*20b84-Pc2bASh z{pDk06Cpb`N$o+?O5mRM^zc2hQAjlua`jP&2;8$ZuqaXxWlt#w7}A6K&Y1#aN|;9` zXp!Xd??Zd&eRZd_1ZKU$*mtYiUFYEL_bbhX<k{%Z73OmRI@j!c);yaVu(gGVHH(GN zhZPnTkbD(KsJAGBh5d0<qhASMCX_0co@6ch4|Gfbc#il227RxMQ<&eUD{!|}nbibE zFG0JqT9QLuZhTJ^x{R@K%RX9pvb=h|L0?)}r$s@}P+eBnIPzaU#6eWt!S_<wI}D)8 z>dq@H>^~YM+iFu8pit4s`{oJzvDzR#YF}~5n7ba7xP1yU#+20OWhFd>;Yo}}dA7KG zN3d=`U;6^}M$~4^w&0v>v}$_j3!yLpz84swKZj7$D=d)Dp!8k-9Vs=Jp$j5hV+!D4 zK=dIE6bCb5nh(G9J0on(7leRHfil#J7FdA@;jjY-D5Sx!=QG4*HZxEs3xzk;3kqD< z=96o7837=SEp0ioV}=+JGTEz3Qyl&D|GSwOdikR7zK>x}XutPq+Hs{@Na1co@MMm@ zE*^Od%+`?*RdCDlD=3;CNqc%>xV=^i(Lp}rPtnoD^96lrn$<&uE<#;l>(j7mc6d!e zx~h9EDQg1)-KTZa&&-fKs*2g^RCo1&P*;fnR7Eqk88th?1QfgJ_dh2g4A$ANKw8`X za@f*J14WSpSgmNWBYAUBn|srrp<IUo23#JG@FZnL%OVL;d12my^h*BE-2bXAaNV{T z0u7+1Qd!V^e5p+XF#~*%Rp=K061ZmXQ}(gM#E3v%o!`z3qX6IBLJR8H!V4<f5C_<k z`4ZDC1`F@%RdMlG_=ugEhv;`4%u?1b9h@~ILzz_{wV`VTE=hb?L2;Ky9sX3(Kua2{ z^+lcX^dM{B{BQu9UT=e_$S`teT~X6A#;|*Im}DWEpx+CLJZ#R8khs;(g5|)TH0<x+ zCEomsiZxyx=P3IR-`wgXJE$pl?SFKEFV~NtW`4q>kus9bJ6Q|l$$*Wm27G@7O;!{3 zw9)2hm7x$*6izkJCW&yP%1jw43Tc0D7d#<~VIz#Ap6sf>nPb2)>}IGK_Cykz`)5bj ze}}CUj^2XsP1{0k@p(g+{;kOGv>_Xpk6N&qX1-l{tA<R(?NkeHY)fS!YBwjydtTg! z>e?98?+aI@Snc?GVo&zflDc+WJh`-&Upg9l{?qYGV;UE>-WWM!X`00Z#w7knU!Rt- zrc*Lkg+d{UKh_<9y5UEJKxSRyx59;b$;<*`)w2Egsi1EIPt(+amou?RU!Yf~lWhAk zR6C&s{<W{o=hd-FI~zR$cc%%Zc%Q+^LYwMn=Gx-WdSr?|V}Faq!IaYD;}R8TfYmUf zfh6gl^cy!S7Fp6p26NIH1uIvJ68NeW%l^5F7H3<aC;BD_RI6oY5jT{3N_XRXvAm&c z5i9H8d};#1Ec1A&d$I5ztb5XhM`llAG6WJA$w@k53qg*Qu%AKDi3@>k88W~&v0AAI z3>mZ2ovQ@<KgjArjjE)#v+j@DDA{8kHP7MW^P%N`@St*F5b6_{_Q}@!wd)z=nMP?J zrNOp3UcY^|U4YK6Lec0T!0XM6hsu!y0>r@bl}slz#G#G_ThEk5A8B|kPo=KrRp6LA z3{-9#T5aRW4Q^4nVgC03J1*B@QEUrFM^4@I<MztNl1mzhEDVNuZc_&V<vpG<tx+>7 zqq31>zoblbp5_n?#sQp^vK$+!D!uZU1eqvym1*0V*6_D%m42YaNnSVIkQxIKUbiD3 zmNnBS!y*Ugl6LDtK#Rk_Rpji)5T=%ztl3+`M-d;<$Blhu8vl!@eIGDeUt$33m|H?h zk_)vD#MFBjsEvNAf(7S%xMFU%EWcUkK{+n+1PfbivK4G(xgyE;Kjh20VUA~8_;-D& zSH6BH1O&||raE-0c)u{Rfa=LJ{T39!hQ8M)se72;RLyKqk7z&dAAh~728#*1vX64O z^kPuL6IFzD;{PXzci5odiqhmeg2*sgU9k-)2EWU-q7OgViHqW6DWfaF)*Ef7I8L^z zC-viAS{E}84l!X|tSNJXt<2V~Z_q^&8)~RTHMG=eDZyT(h6)t~W!b+EVd0B1M1`VM zR4wi_6v`XuuZb}>^p;WR(x`n_{N1}|Y`8Le>9t2qXRa!UkO2OFO{4$1T=btS%jxGg zAAs)AZc>27v`zTEvHZ)}__>!r4L2suEnfl?MS+KVU(I1fPa`{Y-{;DxQAfNl#2}oz zE0IPf8nUL+?paA01EX8)G<G^6S3Y7{k0CtKwvTxd7|RQP4#jgi=ZtMCM|@)IzFi|j zhcL%d%e}?X`C?}KUltz4c>Vo&y-!jv#6h$Ii!EfM@PiMolH+qXlfD+x2-byM)Qpn2 zxS_GGK=x2>7!Ec=wEQHvOaT3T6ulDpRDfJvMhL~gRwm8wGHQbC+qKOF71@&m4*e!> z(CbDPQ;G=G?1X6bt#$=$R%ZF;yW5tr5c`=EJv!t{7ZFnHu<Ab$$!2rC#<QY+$_*jo ze1JyfdEW%XD8;QQ9kguG-m}ll`#HfYAU{wZxIUJ<r|_Q95DXQvIZ9Cg0=@W^a=&I* zz(NJ^pDP5v4j{3hd-92)_)jINsJui6D;d;T`aH5bHDpZA_p1y`Is9D;kC7oITlqxL z`N5Y>RHbSyZkXqp=IoMYU`ilasm=&7K6I3l`hRs2%Eq()pS4tZfKSXUE_#;sw@=<S z4}xBL-vmBWg_A4UsE0S~r((ce{Op~umtxW71VSCCbRU@p{|H@w)^+sgiM5j3P868r zYgzQCTqY%F(E7EGd*?thv1m_8F%?B$L5J|Mj~JyK@BAKn>1Lc)$WRn6s{N+}#mmF~ zRBf{yNZ-OO1asnaw?LeP8X&Y4{)eX{BGi}b5^cqon*=aEG1vdJas{Snkdc2+*5Y|? zD4?hiF3lS%fRpO5r`&O*WMjz9hWr&7!^z}>EL6G76d2IcDTiAa4)2%*6mM@E7eA?` z#bi|=`W|0C+G7*nB6#LOsCh~BBKHGRuDfDFZI$fBq1q=n<I114!PGZoqP)6eF>l84 zW=q!>y-t;F98vCaR*(tS{9raOu(8~2`w1>Jw$-h1bo-trZ>RQ7W9!XpclkF~#qMYk z>a;{|;v_ZLqao2RGOm?;=LjA`#o^=(Zx$tD@?;rXF?K_Gk{z*eur0Wxdy=JOSpD!E zDv#yPk}LgtC^3CYob`KawzF+-ww%lj-EQeC6~uU8Os`5Qne#qzve0fg5p6TBADxry zib$w1DGirSO1~1iOqdNDC@LZCjg_4ulF9$w>G<M9JeI3UAfX+Z*-+#7M~e^dhk00S zA#0;cQ}w@wY7e&`YA+?toSE#qyq8p9pteFsdqbX=m2$<RjFU1i!${^BKi3qQB-^D# zf41fs!*b3Z3nggigDd36Z8TrTcaC=l>hg&QEyV^U|L_b*!5LD7%kf>MmUc~@s-c^_ zdj~~Qs{&uZR7OSpd=qnUUpJ|3N!`0uZC*S`whKOa;1j+qJ<WMI)ogzF`ZkEXyImKp zJw9h_2_DKd_2fNMJSm$byb3+oy4^Mj-i3?S)0R)C#LBAiRV>B?BN|8x(Ub#}bsf$a ze3tEp+ZS*UNDv5M0CY_KXbdp`U+NDxmjEf0w555tQTbdCZf+kjcqEFE=;rha3H(vf zwraG7_;pL9Xr$0_JURVgqWBOaGF{hSVsxv*N+)UV5^GW9MV~%02~9GpmK%ci&L}10 z+Vn`iTe}4Hw*@G!9W`%c=oUC-MuOs8rPXZc-VsmFq;`hA9%pQ^s7V-s4NJAS|2DQ6 zia>of{O@O595n%N^UwSA@29n4DwFKuo85odl?)-iXM{Z<N6-qiY7*+YBqA#DUOquc z^S!1~TCmZK2)9cf?KmK7IALRB7G4>iQ2)~{nz`Fhd`V1*zAn48l&#iswUBMNv{FFS zHUj~m9G+Z%Z>t>a<~JiEDkR_R=J#$zyegrw<+po2p8O9Qr?%Jv412`Wob(W=%=s+W z_^JEx2}Moe7|XEqNpv1MeH>Dpk*Rw}44gM)ksTEv=8sWH3T#UG&HBht#>P6f4wnK? z=9nZ~KF=AkS(n3Iml=B%;Xt0_|9H7vSOaRVyRUh^p1<e8v~b(69>K2)KM8tRZ1ujq z?4AheCa@7|en^f{4BEQNe|Q^6C=7EHfGyO<)R>nfqk}!i(Hb|o^pa(#Xrv1xIb|iz zU$|0z#0Z{O!w<PqS6TXGnqh9YD%Mz&o=Z!utYO5Rlp3j7pqN9zr(ujHqx_PauK#=O zi<#-K8YWx4KO!Uzdh}$S3!@B+acriA@M+n`NXTp{X|I8*nbD~U=^1p5k53b^ne~+G z1&(i`V|{8<v;e}CP(!V(K*N%sCBEq;_SxZiB{9M*@Vc5VV}lv-7Pl2E<kDDStjHqy z)hK5x($#hhdhdHg@DvCKJ**&MbF&Sc%I@hUyM~LHLF|D9R-gm>z+IKn;@#1b@%tPJ zeqmU$dWn68I$QRHdwnyyma2yOh}T_I@IWaUx-?6TGl<>A2ms)4$r^D`w7kK^!04uo z1}s$)8I^MR;!P@YQI@7jlm@1h5k*sBF@?aCs=vCyVu8Y;bTtGvMjA}XV_lRuj*|F8 z)S^01g736iYhLf5{5S=r_6w(RdOP!3P5f^M?1#b?{MY<tv023-Hmx$b(`kN!)0o_r zpqy9mbKAhm9Zj=`+<gBNLsTUICwE`zZBL04<R`o@ixOhN0{p#L<uLk63QIrm^4Gyd z_out}oyL&{VxW^}53bt})k3gDO^@x>DXGs=jrF{y8F!ar>__N9A{%hNLL@H_2N9Gl zI#CtEv3OlxNnzgYOOnz4@D<LONApzcM{etg!&N~~m(3$v5FJ*JL&S(9YuC1~1%D-F zDe-vF7?>Yl4JSUn*rn4(N%|1%de>XVNa;p~z?Nn~3ZE{eBxNzPVp&O>HSRN{7IggK zg&#^YV+T~F(seip-}U6sYVV3&Q*K~jha|fhu;4#6<o`zBFgh8H#2y@IEj)Z2nlrqY zlTQizXv9meF^<w*2waxOrNPBCBnvzBJ!db_lr!+!@#gs9t?}%`+PZZ#ay$st5mb8# zQY$$X_#;(UYX6My+d}MRPd+!dl_1UU2Se2d-pj`>pp8si=*Fz=X@fHei3`xme!*Fj zpDU>O^n3-X%mhSZhi$Gv3(h}7&E13vj3%*)6o4B7)`6jCh|dnWSJ?4tY*jih4xd=^ zYj7pogw=BupL6j}WRiK)Gk;7jZLKMcjqSO@{?Pgc5}I4h-0`I_G!qd&_3Z@|vpwt8 zAD)4f3L-Sm+N({xLFf|EL*3zPGW7`L*hpcY$U3~QRU5vJ)V>+oHJNKp-u7<hZpSKj zZ<q?r%p`py_6sI_4>i+u1|1BUTnjwtluZXcKz#4Mbl23W`x+YdS)7yU6|BMeB9Tco zFoQ_j59isqM7sU(*J-&qWA^QE%Y0uH^1k#214~Xn!UKX9Z3kbp6E%M_GFCpLYlhFw zAw9~AgD&lPIx^i+p|QdBf@SpgyVVrMCvhF-C`v)RW^0~nw89u8aa7En?2H-s%6x$n zG^-DE8VqFX$5`9S9II!+kd$&-CcK&8w+9^n?9RtN6Yf*23j#l>WvK|1DmrUt6$Pko z5$b>2itn_ENIgZ-f7lG1!*>;~%^H!nsz}z7qFdytfX&#}dR>rnP$B=HR~>M^_el2L zS}e30?s;eu04-$({#gj9oFfKF+?k-#f}ma4(|>5*@l;bVk4V&umBG~g{PkkJueX#B z@otj*PCP9c5#?J%=TN3}+L1Smg@viy=ekpfyZnV;$l4Kc9^OWc6_8FecIB=*?K_)@ z-HVUKr=6AbOL4MnM1y9zxErggHWT;ipeDV@oo8Jw8+XI*!41_T<@2D<0O~-!Ll(#` zLWKhagr8K)j=sXHHxHdj#`Rj76-ts76hrSjE9!%ah0e4VzN>nF?CAgs+Uk_r$Wcki z+aXF(EtUG?Rwm0%C)_XtHIQaWrstz#vzAuJL=2Z=g@%5McU^`inVR4v`=(3t5@>1B z)wYbW37=ZL)bvE7cVb04`WQ-h-B#pfG6DpLn<F_@Y6?~K!PXu3AN4^PFl@3);k|?C zGIGwk(Jc;lHK@QEJW<=C@FYuj@DtTJR|CG`j<CATrRo3_HIwc8q2~h0C%wX^{`*;$ zCDAM2N%4q9s7SpnsH7~dP{$tR!4hP-p+nla`D{vkOK%t|hOV=xRD!HgYFjB5=id|8 zWGm(KZl_2XSGN&|5O*$sDRKq;)D>`zhb>(F$X<DJq!z!W8JJARUklF0b*GvXQU0Wn z5SJaB-DF49XheqEeWFXIZxPT2do(}C?9CF)OA54{ozTZ*k80&%vim&1Do3XKT>}aY z`AYNx_!)dUa?bO>Cc{?LG<SZ#g1P`>L2MU+=(l%jpPHEx%7K;9KhOR0!mCP%F}R1J zdV@UE7xgzT-liD!&Y+4K6sFf7m6+dk?W_FV6|%O%3$ZBUlZJ{Z@m55Llte_<yaPwA znhF8QQZZ%GGTZNd&BOa7yHE~fqmAy@-kn8$ME?B~RiCmKkYfY^8h}~ES%74J4wE?^ zs7E7mG4;#&s=_R#jq#?Yre$M^1R$XEm^8DL6)*yJ{@4<*js}=)XbGqK+su|hFX2ME zm}!oVv4Akv!ccvzis5BIJ4k>|>u5n%#?@~5y4FHzOO_rWDW{D|_~H_u((UJB5<7>V zK7?<;Ed4AEIz6Z&>slY;4QBvV7+zmYo9bW#=y$z{_>D&`_0dcVc%DLf%a@~2rQ08H z_g`C|r#AYwQLeI5Rg{Vu)ak32u4X}Y+&$}|;iq2m+EVhWKU@$vWZ0xlQ+pzRm?@o1 z<oWg|C9C|7AGx#|GxR%!2o*jt<N0@nT1Qqi*#&gSkS@ps^NW3F-u9gK!9_SQctWJ^ zwj-;(U!!u+Nt?lVnV)W5&)>%cxTJ!PuNtXZ-@t!`IUgz@)XqaXwtBowNdzR*$-?rE zQk!SA+(`*04iBc#Ae!Zx^RoiAzoJKtn#`xAbK(xA#>>(6m*_CtK$%ImQ)r<~Vc&a? z`)TLr2k%|3cLZS%7KC0iZ2eo%`^F%R5`X2RSFK1Be%A^|R!q<{a&p`-ZxSVKyLoG# zIDt7yrW!}qN?{%UC1m3X8E0AivV&Y?<_+stuyqbv<zl_K)M`%rd2}S!(UG0yZf-0r zy#DJ2gjSdGDEd>poN2w9IvH`O!3$@(KkF}mdLyDfbr>$(`Frc4UsqRyW~0`Rii+~D zBV|7=@?9sy3=Dt1I$%c3Hh46RGBSUI&qxGpJ@7G6)?IEBN_0wfx3?UacWwx*K)W>P zO}_Z8nwf~S03%^<c+)~Zxe<mBsN0i#!C>Tl(kHI~+<I<I3vJ{uBCVl(ZLc@=bQQPG zKuOJPA`{D~88MP*YtF*(s4i)&f#T>^NkClba)t}X$(9p6RD$)%cqT4ZKJeqx1*GAQ z-qpj<r{k3c^&2zEuI{#mr9}VBXOcmkK~TZSzX5WjTEv#o8-5lGCYxWk{=4*t$l8af z#-C@|V}_*yI^T0$^Hg^EZ19Mxk?%UA3C$Wzw~~#%yjAOPcX-~%h!IK*(btV;E-#CZ z+~W_F^3ql?;Hav^p0k{+o6L3^Hl%vl7X6&+1ths5+z*6Ki_uu0;`(zc5FT{@sFs<8 zQ*DMzbED^lU?_J&%yUZ+(L0Ul^`WC)q1mFGIG>;b<U#kl7Ul_E0QoPe)n^^ct|6!c zd#Ocm3`&tt4f54hw9H7Dq-QB6B1yZ0yS)gTKR78qZ&zI;H!M!i8PlH_9*hwD$cH0K z8)`HDx#r;W2vM@-V{IBEJ}Nju$1N0sUuB|+&GK^8eb1rJ!Z0>E_~5k+KDs4a%rfou zAPR2bfugN=hI@sboP7%Faiv%D9FI#8n6kG^R(%2MoT7n*;O)QMGV05DLM5QJwR0}F zkZFQ%&?3d2-2On}23ebUkL10-0k;-xUqtZM?5Vt-)l5XDohQFfnYgnr?3DV@e)T=S znx-N!zFe9Y!0zw6w~VIl{3ZTrj`?Jf;h5r~qYt8REb2HGWND)o;bWLL9p8paMuZ&A z&WEU?D-$x7`rj3dV4donTTcb9PHo;v0dNh{@Rt))mKZXuK>Mfptx~=>=H5l#&(|in zAm4)m2|wYZ8NBO|LYzna%Z*CBC*5A-oE$UXYjvu&ZdX}#sa}^qUWZjSZ@U4XU<C_E zP0n)Rc|KQugwGkM_-OoO*Eh5=8>T-Y{M*1|HP$Hx{SQ;C;ZI825h&)U3&nu%9?`;u zRW@ICD=eG^@$1XfWzg;EtNW8}DYE9J1hf0wfa5E|!EaLUqyn`|!h%b(Ez0^}nX$h` znKsu?>ccuG6)-63$&lZI+OU5{hN_3&v=Z|CLP_$S1!T<?((0B3i)$JCLF_zm_Gne- zOK+?KbB+)~UF%qg&T_o&48dOJl)!-NTGHX#6K0emhA|dsrg@M}R&1Ew@VJv<r4b$b zQ=dv7!JR5-^<gVxp}PCFM2pyKWAP}z`~Ix|SI|R$;^5@7Ak^=~H-%C$fJsnx$=pa9 ztZnn8tY_S2IT7F@GShz-$dEeN`Z25f0sgAM3#F1MSqcL`v0z;H4zBmfsHQW}hhr<_ zd<jXU`gtyP4wb>l;tKXiiiR6QiRqvfY@`PQIv?$Z4ATeGEtlR`#{IzMd-=_wnmHHk z&#-;>gK@3noxUyTK#`}L7jnHD{|%vB7LUaYFTq_TfrMmJ56akd;XHRfq7^qD3VvZM z1B6pDMdOy2(VS<MB(@-3QGbv%6B#YKPS6Huo@ZA%&Lf|me>9YR>ZuYQe+EE}G?W2Q z*Y92t&|^iW8(tZk8EgJJnH3?kE(#_ytYf|)W<lf%-zgJK0GbWKHo?dSNehtF9dE(i zwh#rS1oo46&tCuqC-5wlh<gC$?T1Pjw6^va%lrNwOtrty_Ews8d(<OP8E6h}DPdvV zc{)t@dp9CeG&HS7!#Rug54)bpR4P|}j6;+g2|`(5c5cu6d9JaqpxzB(m60a)<Undn z{#7>BrtgD-yjH+xGT@WmCji5ZsR2RQXdGxH{t<paJW>tSbb9Qu=kJ!?5>~im7l`#W zP;6LANq>*Q)rI+wlXYO%|38CN;gH#aVS|^eaCHG@Ez`2SletWjeP?nems8ICeoRTE zZw1~RkCn%w84)kz-VLY6Dm^=qjczj0XPb4KS`HA}q`~YI(7ZL}_gy+;a26oo=B5|! zezDKfeS5NBIi7o`Gu<}m00Q#sD$2QAY90+hy$JHSLU)53qQ8bypp|sJf9!PgMU-nf z&^Ba#JjTH5f}iR%@%8WDrB<Ne?zt(UV3hX2vL2~$ZdaWs(}_1Uv8u9`q+_5}`OXR7 z3E-=7j-d;WKmN3&AGbGhlbi}79J{dnO<X*N4yem1jw!bcpA%`snJXGu_!IE+6c+xf z@TH;FbNsN+(%xOvPN4YvN}t!y;y7nV=g<ceo!n_(0Kb6Wp#$_xvm+yyyqBjgEIwa6 z>Q$@xeHLpokubIeo2bs{ImpCauRgEG--P$6+gt>r_|~0VMlVH{&={Bl>Gmmz!ebmt zvq~*PFu;0*x&k|ek1G(2VV{>QJyv;lf@${3m2vjYJM#Q-Lv2$GQpj|w-$?$nWMRO_ zr$vNkDg7An{R)C0Q8ixp+uNe3<m(r3_nLNY4Hp**H1h#ND&9BY?pe?GPBD!@C^B9a zP#ewFxtp<sPfurSha(#Z=_N_Na=de5BF6E6pmLzF5vSB=IT)ol=0r=y=i;tRd&&-( z5p6xpjBl)e{t$^iDRZVR0(@B!2EGe#@jcpgNpI6jvLTQWo3xTbvfUY#yhttT4no4h znc2yS;?b?6q&6~DY}6xYA9{!@`{Ew~%?6-(z<uwYV!J9+xlqbQ>KHVNf!KO2xgR77 z>_3wl<)^S+kFTe`iGRqarhNBcH+0fK3n9h{xg88l4+)Q6fwmwgm}_YDEpEK9+GB_Q zr0r*w8sR*zuUPuD7l<Dc!u!TYms&lWyP7TBA?dYD+7bz?naXqU#ff5PH39_<-Eo@* zAl0P?)S2Wc-e#&aB2h~@&tKkh?94&o?zeKeOE4K~0azxkTZ%F{5nrD;;W8R<^sGuT zj!euE=QYM$5#<fx@ybX|&3HTvDh6jH&O?5%$4>rhC$e;l-BFXHM3OPFvCRFt-VlF= z*M?+KT=^CjfewANtA1xW9Z_3GrbT4~!i{=#8p@t3nC0&!P9JHY7{S%#?DVdb%p^MX z_LdgBBo(KxzjjK+zxfqU2T7Ku?r8Go^;N?xgIDd9VKmZ@%ce?SOz7u~Z3}x5dN0WH z@)txjW=L55{=BlY;{U}X5W{v5ieU@l(}z(;j!Zx?Tu`u_?bD^0a&dauK}Uhmln;s( zkvu!#Ba*8aAEz(w;^K+1$<CdR6}1Ek{Ul~E7a~ZvYB?-qc@OG=wckEe^f<oCDIVWZ z$y|s@VOQffrjmg3eHMq+hJlD=rbAfLq%<I3#FtF_&2{Kg4w(6HpyJsIkFdI99AExg z+DSJ=o8*!D^8I`MG_+^tv?^uH3T*=YHzPvUI<M@5E>ZHRuNun03BwFAWDPo7Y90xV zXUEdtP@YDCM&e|}>A>c8L~%&F-#Y#&l-pp+!2!SA;YjRWUDx*A*Kxs)SYuUh%zLCs zki-M>B~Htq>ioX3n3KBHXO3A5!jAu>F{BGBgew!NSP)l;X!QzMfu4-U)-R=NPlD_2 z!&ZNT9B&LW88pAF1bDZ66TCZ|1m#kH;D(6$wPL&;h04Q0xV;^QzCQt(>}pW?e{!U< zu-TXJfHfQIo|-0;m2`1Ca!(qVl%xRlpr0{#xr(DN%uu8Bqd#mOV(B{#Wvx~}GQ4%- z#Q8|fV)GS!6i%(!1tv=AjBkr1wmz4ZVH$#>P}88Bjmy<b)ZU_?hr9fjf-twCIa%#X zCQTT0b`JX>0ok+lp?_Bm5~AauQQTA40M54<@@aLt$)eOW{JJD6zOroA{cuu*tmqwe z0KGY~0@&_cm2#EMkt%45@<$f3H`W!q2VVX4BV!eeZ^_8Z7-_C#geFtz$Hsmu3$}2T z5%F@}Ek2d~^3my%$X}N80M{lk1{SWBP}ifQP;qT2F}1{5Yd3(@my^b?Q&uX{fFQGP zFUAw4?ytsSYR>zm&w_4u7roqUI+UL;gmK{sFsaRsqyU&TrmyP?&pX2=eR=WeZ^V(M zmZMK@iW81!o;IZuO<-u57_CaOi`!TcPp+;$WFlybE+1ERUQ?8s2G?7GJ`}3#f^aWk zU!=8RDcSF|b=LkG(54V4Hw%Btq|jbKG;OKjcjf0efjSc3?*r1Z{x}(G<zsW}bO@a4 zJ^_$|^Wo1HZ0|(%NN`CaQ`Gl;_c&se?0+oDDAEq9SgL}6+%JxmL%updknlRV4lR;} zTixUv_LpQ`YiW81MK&eI+RRu09DN`=-!_CHCen&{I<Cf`ibdX>jEHP8?~s=6z==DC zsAq6k=|lENf5~9PX9E-e`{RRcI&^;Y4)!wTVoz9hpJ&NX(8|@bc%#ZQQpOJ%DEo!7 z6wZ=Ex>()6@yfPlR`er2k`dH_MqPWJ3oVdc+=K_Fw;dMu_rUY_O~KK?*>ee1-J*^> zCB4bmr%H+kQe1q8%t8u)BsvIQV$0d<K3~v=-~)o;?N+uba(e*DgvM?@7lU+q=E4(V zA41wpa}~+*t|SI-qRJjZ3E-}f{30Q~^2H=C>cG_Vmlf3JVe6FG_xh*R>QsPRdYuyj z3as@6GJ4p?%|PViBfP->Ugj69YNr?a*S`ZDf3M53zwBZN)htTTfihGZsM$=rVZODV z^X4Ib3T(0=4h4tE4;AnjoZ5e67vQa=Pk7!p6hR>`_<>!M_9d8$7+?^`r$ki*_WdIW z+xz*fm~D=9$<Ha_%8)+H<?9O=GDJD6oaF}}DiJvM#deWYNNU1H97r0P5{XHuRtM#w zzoFxn=H>4()3q2mV7rOvZmoSYMjh{>{Z}`(ID<_Fbepi)w4=Eg0H_Gj(D$Vsl7TdV zcRwdC#K!x?zsV9cYbVPb5f!KjX+&f<A)~SB=S#smm;&dz{2EJuwlqa;*;7A>w-X|7 zu`vqBwz{6Mz0o<!RM}sA71Zg#^}3rZw>En$6COG#(gc-KRU>}<wtHB_f*A58^YQE> zu&wgl*ZKR+LrOzcb~2f-j0Go7&cxm&j=#FEeJwAZ@h}2xwRPpeDcG-VlT_4`2e|*8 z+vb9JBn$<;=_fka_4OC)S0F;8Of|1Am1YVgNxD~OC=9&Vx<B}M*V!rLfijN=TfEuL znGt3wHulz>P6Ep7?1fI(WS<%Lh}O3f6eUz;r-c3=OIH~c<@a@ml$0T*L^_6{TN(lB znxVV973l_PsUf9v=niQZKn9SMR!TrgrIC8a-~U}}79UynS@)jWd!KV`g_JO!W7r_x z`rOZ}m0fHXgj{cqs>T{Ebl(jTp@w9-gy+Oj%<>k(*_c?6&v8Cwg?M#z#g*qOd<A1f zm?3uTp9~wx31XnZ5|1L@Jy|`7XFL?^@)vEaqLnn2v$#}?g5yzS*Tj(6`v9{mEYMIz zMfoXt*v=($$5q-cbog~mCBI3TrIuP0ngZh`F$|SS@uR0PhzSZS3`Qr&D9_~aw%ABc zG%?35H$o;g4Hcfm%FB5rf8zIS1~(AsX2>hRmvJuy!2yPne34`7wx@oeujS~mc{YA@ z)TvwL^O)bju6?;yYCD5}v0LtOHp-j(!&}~q)2L>CfKP92-{UIm+(;7it5wB?@&LsI z02H1yMNFs=*Z~h@i9we5nCuM8$G@RBhF<$rX8$F*RU#(<Ty|{@toCVEh#R&nCE2k% zR+aws{J0CR_A|8N<PWfRvRsi`3<D_9p}1z1N=~M7(Z+g5DfR6bJHvdVYk_R!wGcUb zOx5#|eC`~}3_t##c5knKkD+(iX>}bviJ<v%x1ZKC^sY-GnF38Qsw(ilcrf(2J~6NT z2=HY-I+_T%8_1kcYrYN1R5&I_zg2Se>S^bqftms~`MIgGD6IU23u2xDQPf+E=|{Ip zJ+nQ*0K^+M&Q#zc!&G4w$0gLZCY6(Cr$k{~4g0KqJ^7+ZrV$W{`_5?87!!sC*EFmn z%rSL=%hi2!H(FYk7z-p$-1lamrf-)5A#<iZSxN!d#~Zk3>A_&BwSx1X_IkQe3?6oP z2+?P#gP{NxR(dlI#dcWQhK=vN0yza_IkkV9-MFmM0UeWcpnUR^Pr4s}TeAU+S$-!b zLmF#_ou9T|{d+wb3{wkSqN%xBQDKEKl~Y732J-TyKy@=$B2GBqmac4UP!yH@k84Wb zpC5c3b07ZJ*D`W=ugx__0Dld@1UP5-{UY+&T<-d2%WIoVrx?AISN=^Byb|mdC}Ugk zJN-y#mm?^Q6ybDLz|F`TFN6IzCR9{}7A**~A01V)pg;?3G6NIaCP$VIQ>g5#$sig_ z(k3K$e+ZvS4QHXmza)R>LQBCehZ3O-=R$Lt@keQmD%p~bXT5CV9A=iLnf8%c1}%ZV zt!{{Gj3B?;mb5}&3&Wg7s!+SL7v?0c-ZG|-Iih;z2sG#*vLwVZJYF(ESZ{!O@4l0} zN{a;Ap8mbu>>8}7`job@G>N?Zus2YHt_ldpDL#GnaAx;t)0ghP0{GuSaXPawD=cwF ziuKrsZ=aA{V_J3Q0|{_HqNEw6qhf^J?DeDA!dr-pTINPv0hl6_W}xbT5^&PXLW)_I zZvF>-{j(G0D%0cpu%TA-W)ClQvW?8V3UphMv85Bv2K7V>P9No|A?L0W);Ku*w?xL* zVVSI3*wjDi!Og9a@gf1kQ~S*k@7{Oi79j76S%lHuY|QF$EuzCdW@7>VdjN{`{nW-L zpKD~EPwAGT3Y62an)ty5(uHWLOpwA3F&Y#4X4zG2=5TpTE4?ZhPW#<Sex5~!ckA*E znG)C-vXpG1?ych#yOhv`LZ)%v`?NOk>S|OPGNb}3Y(RYp0_rcSWi#f$Q*%pKsh{Hg z>A+T?19VE70k!=LiP=w_YQ?XZNZ-L+^PjIBwnjPx-;90l8tP#i-vZ7#zb2|alr~2v z;O6`|Rmbt4k$;QFU-cxn1?y`^gQ^+^hmu)Hlvcit5q);pBWbE~Z2fL$Ul~20#sHkm zT9Ln;lhHOTA+oqgQyK-T2q&s56U`<h`guF!#8s&PDbYHA_HlCr!08<1BVQfei#fL% z*|*nCzwEoMXcQ*1;`C5Q;aCZT-&*N^TK!qx{K8L3W5ay0<oQMiVoM;4+vd2|s!PHx zCDt*s8l2n##dM5Ub{}F1X6O|$GDN{#L9rpKn}N9hvVxncu%qFq9SRvk027mxuQ7#g zw1H-ftWXap?yaporgCTyK8MoVVsM4*2|x_`)C&W^A-hj9GsdWU*{l@>FjS_Xta2JQ zEW{1pk4#s*G)Vhhx^=ZMe5?OKuZ22#gS0E%IOMiy{YSfb+?adF!;Z_EDKfbdG!R4C z_5%B|O#AQZNj_ItBb=`@B6VNh)1vLsqaj->_f7l#;d8h8I1yjl(-DnLj@1KvhtHfF zgZGQCUj-m@N8^)2UZe0NQ~>V8F7zVSH)QZwD^}Twl3QGBcfu^=0tKP)kBpMd{LMC@ z$!TXsxwzK?DsvLT!}&QX>0*(lKkb7F4IN#8nTpuhGCp$>v5xt#4|Si#3F#$K;fJ*f zUHlGPjspk1Q$K?q2S@bNH|%0+B(j*Z7#`n0FDmA+_ohog1Bc9%AO;b5&HnkB=5nD4 zqHlMOU8NOPr&c67iZ+HXycmy0Na!3TCWaPohy0Lp0hFi%|L@Ecg$+$#ePFdSrV75l z+g#YN$s6o;^^v@q<@xo@h(aPGF|0CY)&!cFbZpiXmz<7IE{ccXVtg^1X!Ot@<we|- z%2s1OI>8BrOT?42h{g9p>HA8qJhswb+uzmO=Of>}qo)MSM+jaxg&HKu(*Lv!KC^Hq zOf0dA#3{>QZabcpAjD8neYCcBR#{{-=o)jC&QdQ8de_k0DVU=o8<|Ph8|Zxw4@4e} zR-c(bME^Z+k2>Pn*lLH8-Z$eYLyYOKGbD?@(px-U5Bc2D*XHm3N7i1_Qb;a<WiuY_ zdr4$=y-XOpd?-Lg@1uRXou3Vm$GVYJSp=5P8Jn3gBxUo#_0Za0R!BetnQ0j5Ty6`Z zR7=ovSh8Jm_~w4Bp$DO|mgl-`LVQ&yyl$x>S7$0mw;k7ut=hNDK^W4l#!+Z#Vi)et z$zVN4=q_A(zfw>zFbHZI*JI_G`XCg%^Dwt~tNSN?k0?|AK|S(6Bx}z<><1$Xo*`E3 zYU-*)-^*N}lL~tHJNck}n|nR;kh?hb$Tcn{ks1wzU8)SC!Jo0xra1a*FH29nOlDdY zTuWbRN}K6#<a%|GxMIOso*&mp{1sxHdOu(9C~HH?%R--_PuJiDC31NZiePO0nzkN% z_h;0+P9ymC*XWCozpc;=J}VF&=Sy4wFr!a<rYsA&*{s0(GMs`r?AfPJ<n~mAZ<MFy z^dPc!WYltt(~C5#mqXOS!tb8qX&OE^F5S&MmOeH%6k7?oIp5qz-&&Xb->pbtAWQU* zY-N~^R~Uw4)j1eF9=;D%-1il{IFf$+apj#7i+tZ6p|0E{K+WnW>!R}ci`6TDR=kcT zUvW)`NQuj)x+eN)$$a}a(dxY<=9QFJ%#+Djykc59dUO*0fA)`V%`_eNg5&}HM<;c* z`N(hX*tv1aq!?uMRxFLN0g={0R~FWE2~TS}l{4&n<<u4%op6ZXH|;6LEnl=!WaJ-` zJL7H=63)84K+VfLh(|fsnB7dh6Y1cG(~F0h&PahLA$J}}bc<w9MaZ8%I$tjLuPh92 z$>AoYdU3>qJpMeKA*pXrdxNV76MmrJCu)fqrds<(`v5^AsLNkg;+W$yze3`nL@SD9 z^?-NZa8N~)Vg4wp`Cn_Hf{`P<v`%8h|DuhFBNHFAV;}Z=wQH`RLZ_!-y0|e(25r6= zaqQW~Sl-kX-A{>ARUpFO9*wDtXtMMZ<a&*K>#iLw@{WrE6y6f>9;_tp$%xD7X&L+6 zrOmLXy+w42>mNWmq`uRPK8Dm2uWKs9WunjxALS9x(a9Fayia-2V{fmin_^bU_I4l0 zocV_|*21d6OIebimocu2N-wJsH6k=Jhg`m>gaagt+STrOB&U*D`exm&o$IY#pL$oh zj^q`g3{z3td@ng$Pi{eG{&P2;SG-RVwsrQ4z%J#vgs3PPo?)ZGp(C2*%OO-IiaKR{ zxga^A3;-Yb&Nn*a|If!1n6N-1dUt-?{^In$#4<o^_<<95wK#mhqL2cH(r_h^s)nbM zmkC}*2sX-_FrkO1rm;kOh^Z8RX3U8jmR#~5pe<9?`QE$Y-*UR)x+rO!C*|aGCvf_s zz4`RGsht1sCQ%KR;Z`My9Ab=-P@N89DKqwFjlHCf5wL|2^nzmgXPd8EI^!~QI8N}G zV>)6zJi7k7Z4p>K7Fe2n8#Me|h?pSuZ{VZ!>#Pr7?YHAb?kWXj>$YH`vr%5fx#|ts z^KkoxrE9)n^*}-<E^tKYoMQ6$T>hZ;r;(Z7pvDUsNK7PyamCWtGYoEvQRxzt&9!FT zU1pjizZc99g@ih=`ceBOkxtjV`$c5ONA5WxlT?NDPu9^K3a>c;buxmSQ9gSF9aAI$ z<*~bZ7?s8)|NnBG(YHRNZSYc}cVBwVXK$YY&pmomwPXwNl-5q)JV~YZjwSn1#En}F zv#Z;m2FE&5wMNZlq(75P8pQ7E@ogyvDwA1=F=W2k{dJWQxsi7=a-?G?qIi5~sb`5P zSl{g7IUNw#-fsm$r+n^m?Mad)f8jt)8Rs~LbFR~NPlhs`MEpuJ(tp9*dF`JYM*VtU zqWW_^$=f=#00mZm{(KHtOUmai;`}zYqn6>+0MjPLp!YW{tn@ryOfG!wN9PciYjdGU zcTppqL9oiWtr|C|5rC)gD<z$)ZTSg45P<V#U`HZIkK|MOy3Bf#^vzKPTKOqqC@jP) z?l}UbN5#X|w*onIw?_I=WXmn1lZ_gdMwl6_PRY((de6PFunfBW{cZEhNOAuVGp!p4 z^)qJx)^%U=LQSx~)3}Q~fQ}8HBc5tRQ+DVmDl+s7C%$2sfFDFU=G(@qH#lXRic`e? zYOHaks01cF)qCO6<NsLHURIHuPJK*M9QeC!{!?{)V(*RHiV%55#d93SCLH=yG6gxH zNq+gMO+wWZoo#;?N3{T8<Mtp{9;c!g(`xXpe!=tZ0DY*x?@!p!CiQ^&PPKxCC+tgI zKbp+1hunfutH&)&oYdE4l{GONY4nmRrc~$yYF24k%BWElkkN*&MKoEfo3her=F{gv z=|0ZP7A8OJ%+FQu;!7or7;r+xrcs;1Z_eTX+}^jVz2&ESDDRGP@puqR5&xUj7a@<g z(hobYeM&-<vGmHI;i6An@^F4ORmRW+1Z*Rq@*?qsS^!;Dw&-Uov*c_`OI?nx(hWGX z$K?5^HrZD|@BiF-;MdPb9V)|b$UA;}Jnr#{`F8_WyVAOHgR8=vlCeQnBXV5Ivpu3- zJUkr?8mY6Q=ZD&gJFn1G<vEx*Oyf?Ao+~p9vi;Tms{cZ&`)B5lC{$&vUZn%7<ZTa6 z80mF2iR(dW5Am>>m~Q9ESM!j9S}F8aT3(J^n}6>nbI#j3A()N@e-tEWQFe;DQAw>; zP&K}LyCCibIXQ(k6%B<RF)FcjnVSO2EOT|a7afjf;LwNPk1QHyXb*W@0~+O>IEf70 zH9wRz%;hs&2_cQ^v1wDk*&RtkN?w-94ZggHsL`G}1IH5-iJ*vs9&l)i_TU6lq0By& z|7zFK`&yQ6KhCtpo1X?x{}FSrb#yB})16mT`r4j-;G>zTwBLca&UvuNA%H?WKS~;9 zfy0U&EARLr_kNm%<7C-!3d1$hn#oduRMs5m{FqJgHBow6NynIfOAu$)|9kEfamKr+ zBe8J6maXNDJ=0HZE7cADj&GOV&3dfQ@|&6)BL{dJv_2$6AFb<?;XY;Q%L+Nz_%Cm} zxr@htF^@Stj!p_w7WH>)?@H6P{25u{N+Jr2y>3EYUcPy)lZE<fy0>wOU)q-oS2(mK zRk4-~OBp2-)Fw3ppPM674-;F@pBUp_WR=QsseuW&!`uv3iHx(m^?i}MO@cr29oUKm zpPqa7h3?Q0Uub$i!7WR9)z6j^m>aV9|EF+~3FG2+8P)Y~COT7tvTjSSlTn;s5_=a; zVI$-X#R`5b=qmY*vv$_9TZu8+`WK3?f6x2AOoSdmye2`fg#RkSAf?_c34T};%M_Al zgUcDLB568^C~EW^S`FS9ypdn|%1}nIP;8gR%4R=GafZ*6oc(dR2)i!4W}7uJZO%@n zzalv|J!Jd;kCPzdX<Plg_S^m!*BG#xILGV9%lyQ*_kpR!J{0s<6gqS@4G#F2kS9TB z-!2O7d70S=$!bPZxU)PfOO&laO*>DLG|uTK85b`dcT+f5gHhh4%Ga7YIF8=6k>Aht zXJ{OyFueA&-So?^Xq9DbFK=He65^XE6cL)I#JpW=K&7Vt{njL2j)%6r>_Nn|vT453 zl}f9$$R^h@d&47R2RCeMw^yjc=~>G<E9hGP7FLKppi-$m!91&wt7tU!s#-zK7GZf6 zH!2Ky&pH#7L*9^IJ?_-ddwV?6av!5gqmb<59uPzv!4PJ5W)N{`^avhl3Yzs$XEbV| z%Hqci6%8wq@ksJZZQ<meR|H$oUSr$oSdnaD3!@PX;7ORWt7GL#bs2_|U5eVsGFBrt z7%2WTtd9p95_P8!UzrpD2?6!et>5={&cZX@ld7gd;>P}N_=lx>nJN8(k?ARE#{%l8 zM9UruPI^(nr}BDUe}cJff|t;VbOdU{GhQ5H*T}-@15^mB#nW%QKO}RNJ`*Y1+%qKB zTK;Z8GVoiTiv|r_%<<>tujN|3xq0g0+~|m+RfoJ*4O8M4K222!TCp5`gNBj4{bVV2 zsP}#W#fwa80N|*!<7<Kqy~tdp--44b3E;Ck#T8vH4*d#9tnQCH8_L_GLee4{bctDX z7er)(*>81Wvm&B-vTkgIT5E06{qE7TtcJFy`+dE(PTX96ogChF_oJ@@1Nt?s%;#bd z1PEI#q%Q5us8pa*=XX*~8-_CHme*Bb`AK@(XzS@3$_4#RyApoprkLz=^zU1iO{m9m ze=EPjat+T&Ox%W4N2gGTJU5J7FdWi3Oe<#!CCSc@!c3RhZrPb{sid;lXfq0{VzVbk zYn>A?=X2mp{;|8<2=7RQV4zoYz&|CD63TsL$1#dU^yU6P=T1~?q!E7G&pHqbi-2Ah z)NzM)diUS;jJku^`c22(#Fbj|Q6Dkn$DoiQwZ~1lP$kh=wPstaLx^a?j8#8)yAQ9t z4P!)&5-i1jUK%y8Ur4g+r(vr5la!w#?!ji^CXfjobVPr28uP?t_E#h3$`V(*NCo3_ zk*`gusi4BdV6TIP*irCv;HZ2}q?~iVWW1&4ndny;kKORoa*&8I2q5b6GD}b+Yu%UY z1xB=|SMjMk%m1!nC=Av8#-zvIQrmvi5of$ZSAQa)`O7M})oJ-O*RkLcCz2fHnF7;M zugR~am_t5t!y5x%H(Np-e}I>M`TS0mO~}`E&!T1P34ift#8PSOvmHkZ<j?)$Ew+HN z2Q?xvKNB^TaLQ#N!E91hL1{{yz8Y3WIeMZVI-Zi3liakTM^d~%LCXY)DR#bQ7HT96 zD9rds`J+SjW$a3NQ1a@z!hxO)-h?7!MwIeO%Z;7=|4d+0#y|BZP69gSpkK>n&}9Mn zs93e{F^L0wzv1W2x!G@^qbAC$GjZ5HHiF-JH49XL)S%HP?u;a#y0h&O61c+Kh}0jU zFXK=|i`UziM}u}VmjaUyHZ#8i7l8vY{lkfQsGM%=XUM17UvPpIU#^Pwa;sJot<a(9 zD48cS8pdqcWP)r`+*@pAa04}mE$dfO>Xz;&L;~b{3%~eEbTizQrg5&9iT<Y#u?3>v zhx+H!;3UM+H+QIfk+%i#oD_9dgQ1nknW2AWlNpCbfIn?nPupt-`Mbf~M`8#pHYs?6 zUCu9dn5|?4noKv6fuPW{7AQ}tHaXJ#E@?9*#-}8+ho9Hv-$R$nB(*bWH1pfLqj^BW z)&}TGz1O}~zHAI>H2&TRU#c8+3%83&+}>5riDY{YNx_F`Q;+_vf_JoQI4Fmr0lz60 z|2|Rr-*f1ppQPi3n@xI=M$8bWzjnXkObXVUF?oSv*6OEAi;RlaxD41;K9n}JN|I0j zY4^VN{D@WywYD_E87U!!$XbxaIFc}Zp-q?+otF2t<w7Y81fm{n1_;0=`SPC}DWV)H zoGdVR_2b8GPJBc%M`|)UYqc;5di=mw3(y2Rf^n;{n_ooy-It9YzQ!m+lR_XLx|~7J zDx{V4JTl=1_QB$MlXU!=Nrb(EDgP_aNsQ97tR6eh1>0G8pUMqSwBNtqG6`Au4z1Ot zGuNSWX=U5GQi%&^2p^higQ$(BZce)B*&U6g(bpX{Wg(ShFdG%DpD&>AlT6ni*;C(- zc_lyLC#&Vvu!1mZWGvf6hN|$1J%0P1w&PjyT1(7Plo24KI%R@m<BwE}iX^0w@mdqi zGX7W&vcPc@$XFGEg(3(s&<ETu=b>7@y9|JN_T(<LvIX|s)Wm*y8Fd=r^_<WD*dJRb znHc}D4aG1_9KhgUg?bd$Q(zamwKf8WEXFQtC*_s*dl_DA-J-O;cyA1V=7(}UXc!RJ zV75*Lxw_Tznxa1jDE?)6IYOPjLzw>W?y&(eOdObijO2rn3>436_kj7ZYf$8$73Q~e zV&<ola8-J(JHgq_<V<e2<6cg5P&FwIX_IEI@`l2wJ)h-py4|4)Ab@MX>a&=*kNQ=| zrj=H4nfiW?#;gQi%DP(3R->M#I+jDCox_SUQ}QP@tQ)R<vKOl@#7R>c==Gs50G|Ia z!ED+$x0iYDz4w=0UGG-w$=~(e9<RC|uk{9bzfll0C1eu+gZ&kao}?j$7@?>Z1R01i z&_<R2vcTjT(Wx_ky{T`FX4z4<<SejTUpL^@cPO*&?)&vukt{m-m)$4)=|o3Lc(U6r zM`8Zy!?GX0dYj8`P*ar{--rv#h47=uy@Zr2r4RdlIrhTXJ^dVYERo?(PN~E@9L@3r zF%W&a{iflqyI3s8XZ_4ddMi$?U#Rm<>gXlhga`pbD^4#BymC<kPBuxWv1yd6JGQ~C zyp_YXiX|!MyU-=O!e+&0DtN;<6o4CN@7TD<P|^Oy2umH`<G;LH4PAah=lC+u?u!dn zc&-fBm*-x?P+$i0+EaFtZ<m3u*%VFOg#}*MbqY>3cWbzYU$En=8-Cb-8&ZSuVYq7R z^VXV7{~7LTNFhD3Atz080BzaFAHvFFkp^wta>G*s#vm@Dfg}obp?J=~vu~B8=fqh+ zOTVrdc*3T8D(r{Y+s`|<tIoIzyo80+<=hOy>OIt$GCr#T!0ND$tn-DZvvRytm3Bs` zy*K?p=v?Z`)fmv?TN9W1{{EvdcvU!iTy7ccHdX}!SScOyDUhPcR5==B3vioaVaaC_ z14shsOv3@c$_IieyKmqBvpOU*ulmig+t)silQqSSai-UuuYuakm?`Y3IdZ)6O}~8W z;1+=7!|CpP`$pGjzdXNKb;!EbIeq-{(NZeC;Fg3IJtbAg<tIiDerb^`q)`H9RVX7I zHL&gUJ-4!-xiGymX4sevB@<>!N&|>AgK&I4MhmaN5>BZ`B&gGH={9V#l41qgPD~|d z&g(&ho6$SpE}P{(fuNCOj+B>TIYLLeE@J-T-OZyiQnrBM()P(;g39mm4&`vB*27a( z6`(P|{a(EAahb@!h?W3S2=G*k>%W5Gk8EZ&M+Ary7^t1B#Y#*(Bd9#@x|(RE2|Jfl z**DyxVPtl3j6WGQblFF{ATPx<EX0$UE}5T`q;B$|-?A-=>;F6<EkzBct#)wZRVClv zq9gjq6UW?X5<0=WbBb=G8*X6*oN-;9*Bw^T$pi{0HGRa6#zbq{ng$L)We-o5Jn~On z6~?EO_+Xx^Z|LRpkF8v#AttIZiR>57h&Z^h8&->>m2!bmwuwfmY2IG_HLBEtt$&1{ zXFx#soH%M&?4Y<v#XM4Hu^K1|$R)Xwp-Ye}__~UCPw+e<5<AC%HCzAH5{?|?k3*pq z(--vd7O=?JD^7>{;b9+&R&`r{zm@y4PCUdS`Q+qPWblw340hSEoK)H{lwX{D>Y$Ll z&|p|9>X}jDNyZ{36ia0*i1HA^xHDNB47|3#MHDcdVo;l+9x`Bj<OJmi)VP;{;}P^M zYJ{a*@!yt@W$3N+aJ8xl9@iGOS?*Kq`u{)u+OaQk&zrmyD=e&f)aoJ}DGZY+_bbJ- zBgt(_+ikS2iYpk!R&2^+Zrdv53oz22!SQq`v`kxQ7PP+S@_S<m3eRSxMlT6RdHrkb zcz6Oibh(emEH&MSAxarpCZ}SoL!b3jtHpuhy(L-2g?}kWaK@6#WL&dM`!?9#o*44v zo2BOw(hDgv_tF+@4T`r=!O3eYaAa_>q;^Q9n&bZh&Q1y&phpZ}Sk10}zZ_x2rbQK) z$cbDeLg?l|69}+jozJMVV_ms5Hd${L!ZlS98!@D9kb)VICWtoL<l5CGBvaTwWe}Q7 zYVQ9%`=v9<W=@Ng&}b@E6c1xvNLM8B4I0437W&!(y1UE^^F(i*fF?zYK7<)87%-IS z>wKqZT$a<ZAsBcQhM25m8IRky%dR$1_9F;$rOx$Psf1inuY}Quwi|jIu5Sp>rHhmA zNo|ipS)XucxJvt0nTN10mhLvr;$Z?%AlZ)#`+$?DKEfHktSFqL{B%`-Jj45L!kU}% za}4Bl__G;Fc{LFnjMtfkg@0Sj>g`j$rXeiC(mwYWQ!T=yQPM_4F^Ye*nU;83B3kYz z$$$R=m&|2GY1BxEh#<-$5|@FZECVO>=K{nIRPyd2!4v{Fdx%(aT=HWmd#$sApBxL= z?LQAgs4qJ+Ta8$e@FWsU^iJp3J8S39$fViSMh~Qi0a}bV`?|)fIP=`D-TShcpXfe^ zWPgmBj6gL~<<JWi7I9N)Q$sVZrw6G~^>1_M1P188my{20sJ&YhdD-G`qp(Y*0ra;G zhIpoR&y&8g;VB3^7&crw`)15*wGYH$7FT^Miwnuk!aaLxV}sHmObO&5lJ?t3*|plh z%cYHB$_7M+7R0$l6_u8BzbL6&QmD`=VF5fLbQ8HK3C^cCAw6oPWKrpK${ZvdoOs0a z9c@XtF7k$3#u=~Av~-7Bg1$%CDDYeDXMeK$*PbneS&kp+;&GHG{;v0zhyC9?+Zw#4 zo`im=!4mrdNnM;pm5k5nHgH)TBp`b>uDK$+f`w^E8}sbARx<GV+Hq|A{gr;^?#-dm zf7$OgQD>!@2R<u?qh&tAut!@Hj7#!<w%_wk@XAIANgK|>i5Fmlo-4@52cgZO3a7Pu z%9lD%fi~Oh?_gYR=>Qt=$!Hi)R(|!>LLbM+Cs;B4Nt^?VA<3}g_s_L6?-uKN;ruY9 z{L$S(oa%=`Ih{|@lf72>$wG!C{X!Vy%D#>{Uj;IMYA^ow6;C8g5mnCFy_km(cTfP+ zD4=naA0NOr6cE2AobtiDm&U51M69x4@qHeJ97$@bVk;-gr}-cI3~SW5!&~qvCxlU} zX}9-y%=?z5U-IzMJwNL6yFdLk6tJfEzqlIk0^fR;l)g0b;v;ra?vIr4boMhRgUTDj zQVvhLN*v<WcA{swj#hXzMyWrdWy05B=c3IDKCg#h$k1ZzG3-fGDwwgZlcJodx=y%6 ze0E;CicM71b6Ydo552`6`GgAa&%=1$3EJ=H`5%t%Un~EAh0_dR`Fe^jJ)uKdt&Mcj z+u0x>v5_T&GZ3oHRoDiW(csvHI*veh7k!>C8$963C}ttTlx2vP5=h=d4XDl5mZU65 z9qlER;wes~LweRv2wJ9LnIHVNh5m~%54_q`xhJd;a^~BM35fg{(jXS$savGxJM!|+ zzL>h4YMSR1mZFMk7rnBZ)y$N{U~vlxK(vzWCAN}no+M&iV6o*c-6)lM*UyD`QuWlI ziAWt6oxLi<wyLx|K`O~+^N+T!<&R&3YZh@}H>@e?yB^vfZN;B4ho+p-l^78=TYAnS zipp(MKDZELIsf#(ar6Q~@;y&2mhmt}V82G8zfUhM86<%TN$lg4WbDCuQ)eGp!am71 z?KsHk%Ip~O{i?;8jRQ{bpH*wFzY#2}uk8-*z!d$jdH^-G6qxJM|JjcX8}At@4`o*F z7vh|t9uBI?6wXQXr@IW)cW=Lz0SM--7XP%B5@++m#hfm@SmLjtFL`P?u-YB^lAmN! zRMmwMIMhS{!)f^TF!7zgoU+okyH4~$mM5fctE{US$cP6Fq-v-kVO|zIdpm3=uyL4h z5mbH135wSvxy-?{;b0(e6ZQCGNDK+HzynKit^|)zo0~7((1#+%PWzjJDzIgVl*nc_ zl-;YRkg+YQ&88lq_*drq>hRs4lXC%qS_J=H)Hpf$E{(aGuDr+x!-p_LXH=L)WV(VA z%{(H8vi!N-h5rey;quf{sNu}m{?h?B>U1itj7x-`5zl9MH4cC{eprSp9BC^?61^i# zgUM>w_;Vd@@wmC+`M0{JR7dERFzAMqoW09Ya;ga|I8T3OOVN>d5QTxv(by;xz@O^h zh>pm3S55}uNbP*Ddk|5jult&nn2%E@RtczJc`cgMfIu-!ni+e<m;w`b_nBXFW-T9Y zB!jUL|H_LUrkGe{CX{?;%$g95UZInVQ2@TzSkf4_#c1Kg02EOrSUWq-vI%1~R_-|_ zKAhHqe0kD|R<z6NNWv@55n2fdcZ|p|doURrFY`n#TDw1XpFYFK$5$O6A9p?&{?NLE zPw|X$kxDW$m3+r=%dvRuX$U>0(nYg`Fi(L*KmUXO9Pz?CqH@#?;O7RQ=nDp`Z@Qjj zS;Ee*NOkA_xROV>6^3G8&x{;*F%~unZ=*f^Lq~eYfMO}TasKy|%5}9Z)tZj=TAB?; z0ZNv~K$6`Q4*bu>^QlMusq{d@TioNkG=+mif5|B?^AR7C{if$j{QL3}_2L_z^~E6- zPOmNBsziCd3GoiFx3_mc+4xo=y0*IdZ8`YzaBSr7-~H3saCR%%to&@{ssywa1LSK@ zQ^N75wH3l)ndPCFFT;UrE{Ms9Z$iXs1jecz&7jaf$vrjN9|#4$6w{BLDKZhgMSIhq zv&|lKQMtqitx+>G2M8oKT>C!mX^Z*?71%qA{bRpdWY-%KkO;Nu8nBV$@>?)Am`2q* zQwG)Wv&(L#=vro{xMMfK4de?KRCQSuP*Adg(+ZwaS>B7ox;uF;rEe{t>E$B7ye5b5 z#&yyjx=F9D8CVNt-rVRI_m|R3)>S0YX}_15>6Tc+w%}A&Qxl|m<za2f2OB!F<>g3j zy-#>CK|WauB!{H;)JPPlrPdrafWpA3u)kH)JW2stDB#$|{n}EN#^<*H^{r;6ugQPi z8!Bks0!5W-Qu<iNM`?63<LHL*XP=>OKP(8;+sXUoHw#IYWAczA70^&?CE(CA|Jn~# z{Y?~*$$R^NE-dlY)zzsu|FPZO5&y*xiIe#G5`Jwx&0Ssk9{oS{G9!BOj*4fS+FCj~ zczGCk(GV(?6}OHyBsJKXYFH|C-b$RY;8sPqn%aLFVh#ipacLxnIU<vc!*|CV&xOn3 z^0^3(R8-=*<ggs(p!0?j_{*a5`<{2GKeogZf)1OTxdpHHezLe5?*2pGbv!DpHdgI( z^x~Hz4P#lHn;R6@(wCL<5srl_pJ*x^w;U<gn6(^1U&+c2I#pwa?wU^@2D^FB-{{kG zfx+DMb#=Awyl<D6x#pt`RV$E9?PoUDZyjTC@iDE@imHGDUmPt0T3j0b;>;G$r^xfD zZZqS84Jlh5v_1ham@Rp6z<i(w)s&clpN0R^6*HiuqHNapOfSYVUifBIJrSJ7jNw(p z!ST;(shGoQBDamTSJIcXO~Z05sQnVLjLoGhG_L!M?O8_^3TV9BRmXZO2Quf@<xCe4 zM@IQt5^`wBJ03bjTaV!oXX8lb;<M;L$iw@emAQhxcKdZRPrOBozO~;0VKSkQKk^}N zhIedPxmImEcjOG?AVqAsG}Yr#4GH>Jp@_I9|NOEd2D6uUvFbGn7awQAQ{8CJ1ZC_! z{iIHf7}%TTEHnKIYF<C^014y};(qytOPV&6R&a(mk+;6tPb!X_4g4#DT%GlkrZs7% z`5JFouX3F)a(3kDS$b=BNG*3si}mU5CS!roI4b8f7J+Ff?cgiwCQ~44${8K%)KT=D zE(MRRRZ%5nx$Sb&!4pfeEXqIzgRbV9niC@3Pr)7YV(27sogWX29kW%09D09J8Lcj{ zYsP#D+DXP$O|ddGqb+g9A)X_`Fix{Lp{HH&w4IR<Bo~+<QQcox`Z4Mm=;dQ_w@+V7 z6()<YPY<#=SduB^S#eAl_zZUYCqEvOiT^iH!}|H4OrCCOH+=*1a79tr^7<9M5>i%L zhCeU|JA;5{v4~=^o#-i1n+OFK?>1R0qF~hikx&00Exq0WUwb&dn%h3k+LKnACG7mG zQ|jv}hZ^^xlY=N&hN3pG7|!US^bx+l9Z*iRTHpOcw1i!V$)PD{$GgYP@%v3~su^e% z(R+ZIfsyGtII^s=;iCw_k(+y6JvSFl31`k5KV9|g7Fai!Pk}v)@2%~Uxh@VIOT7Td z814jV#9?q+B0$a0K$2O38XRsdT?Z`)mO5-9Ah!9Ya`)FGFKLvs6e!RR31Xt#7)>10 zElC}Te1w<fSEyba1>B!8qtvoLp2(mAd7mvLZ2ciPC-5DO32EgnX4u}#Hrt%&Iue{Z zn#kCiI$m+VbB6=0=Ct;c^>=!-M5Yr`{%1`a>QUv;2}m{`P{uP~*Fe}Xd8eV4Q(QBv zZlYu+|0l^33R0UdnW#q#UBRz=VhZ}JPDI8FVbGv;sLa#Cvo_x6Cr=A%@bRi?;dC`4 zM2|KxDJsE-5OW!04`IZk+9Trqk!=MLp0|+~qTcda=+1PB>V`tJ>&;|{boo|Sb<9iy z1KYIkKEj!O;Xy%X+xpO#Trz=8s17}(`!dvEeJVX3w1~+Xx0cV3Uq>vP`c+5ciz?f5 z@lFDP56+vD%;h><R1U!@<Ocaihp<mNmxA>?JaHD_m+z&0RI*)^^ahiDV~0uSsQ8=Q z1xa}W0eC&S)6@R{n)um3K*mdh@c{siPujPnvNpKVpKKyUi-)nzV-ULaoZ~Ik1sQru z4w%7)Ios5XW53*P#E}*y&tgVP->Amj@=5l&8ru&C*wINeRyO>R#}EBimE{V+_C=3S z>gUz<htttZLZ9Y?y@L3FzQ?omIGXj4@5RUqDm=2-!Nbz@v;m*N>))IAx9#rcJ*aub z>q)`AbY?uV9zp$QXN8H}rW{qAszb|o3u@|-rm_w`*RSqs)cTQbB-Fk*5XV+Vs;)^= zbfvXkKNWvx(8w=O!oT*=;RVMzxoL-wD+WdOW{x1QwNpOIu(G3fDBfsVXXdh5%xRUV zF`WI4V9jv0>QZxMuuZi_>LMwruEEUg?w5fsMy0NpfkP&6Bkxh^p>#R`1sm;%*nz&X zz)l`#omzt}HBQ^jjqPjm3#7@zPe%*lMnh~^y<zUaEG+utrnIDwyyBfIj%-mMT_pW~ z7m5<jLKRqz-p=jJ9PDYnkUkvR9-Wd-(f13!w?72}Jc~?C#n|`8pC3xB((b-ZK@A)f ztC|+OD{ADR^6aF<ab$>x6Ig>r`2nJiRMRd95&*BL_sjCF$|}2&TA3;#O&dVyS0!dL zAy+*|Wov`1IBFpb+=RjX<5E5ts^XN_CMKj%gjeJjW0sA>T*s1Xmcs0n$kR+j+KA%D zZVqY|gl_xeO!G^GIM0YZ{@ITZ1kMc)d~Dx3yGN?+j5Zr*UPomkd4>}U9t={To!L04 z#kDOEwz7|8f$WuSY2IRRV#du6T^M`S(Oamt=TD!b5qKSm(>GYLXZZ0~bb9K#H!g48 z*jsKR@{edUBJ}Z$Z{{5%3Oo7A9Bmf4<yiCM4ik(R#qVO5H>Y?jq>0f1(Omd`wf*cK zQ;gHBy<bJe#9UiR$c<3LZ|Ey3;@)_H-;uOBt`Xo;Vzp?av<19qC?U({Wz79pF$&S~ zC=qOAj@Qwb5+M&~X4EB6vX)&L%1iXJJv}`8^#zq`YQA_T5ps`P<ky4uFInqThID$r zV}xYK7RRwy*ZAmUXncS7qjXTCEh{hGi%~$F*rFn>9DnoSVI$T(-nWjVr9pT}_gHm9 zARN=t($jBy`TKBI$Hh)nrcxMt`Lj8}MDSqvC;oxM->)M8KoQ)x5+C8A=ysq1!|l?I zbMUWuXcC8{SP2O5g^PwPM)_454HVP0MX~zpIWsRF{?yZVY)+L%OG}(>_X)c%wf>-z z3#$>sLbz<kl03b}EL|b`llPhhWcf|2xU*j*X73lj_IO@p;#CyzU_E%2&CyEk!BJH< zY`q*FXlx0pol!6QR9Otfks^&TS;DRU80c_z)f;HxGb^>EO`hEu8>uP|x7#qdyMK@G zaGVwzb?c5T#DTxz9kJBkk$5yTtM}BWpoV9w%4{d+*QlT>21e$ygF1DTTX~hMVhF*V zN-abjBjGaJKM?Z$Jv*W3a6uS!KTAbG%$A6V=%Zjcf1g<m3vH`3RW6?~Q1)X>{)&~@ z)*@l^gud3W5LoHf?PN^N7x{yMye+KZ;1Mii;@@p9rl)}UA0Uznhfe8msP7yuhA-5P zr@t%E%|d<?FMKf@@r)C_Lopc<&NiWu_3_Po>8ysHo{A8$0xKIZVKCHvz<mMHStNsj zebCqYzJKqDTqH{CJDE3hM(mk8ZuRvI)$r-|XV%a#Ub}(J%greVA@Yh}=%0W7x=#tW zlMnTyVAyRRWoz;ctU~wkEoM3r)Lv7plH-*?X}a^lp^XF8;wP8Fib3d?7rY8q!+!bi zU-Ff7qp+rY^lEg_aOUI2@=7;gK!0#>=pM<(VUg}iTEF<84{5gtt*_Pc!erBRGi1vL zuPMT+9qJz*9tO_U6_Q)=#Vzf0hHtO-e2R&S04N4B(n4)xaJ%FopHGAt!(<QtX=gYP zcSlZQge_x>0qiVk94s&X^bLVx6<nr7))@fUTRQx8Kl6cxg0X@S1Mowbi5ROEfMG%V z9;_X&Je`0`N!{(~(ZC(bXUUR16fv2i{+ib$9w@FXk!hC{sk=&KLauukWwdUG5}`Z; zUONHx&Go-3?e1}7RFxmU_yhl^bLvxo+_cR?t1Qd;5C0G`8=pK%6~Sd<BGD5XuV*yA z>#vNxCwg%t?<TT17#{mKuQ~$ct~ayx`~3dNk0HO`3Skz(miNm8Q8fv_PXg3<DQnBo zOAFr~u6i~Xy~)M9oz9ZkJDhJX*@dHp`OL;We{8XB-Gk3NaE4kKP!v2r21j^?sZKo| zJ*1VRj<5Kv_;C~)T?+`3unoR2+~nx0A^yu*Ty?Vdv+??IDd5F=OYO;H-+lh~1M%_0 zI4XR{2OZz>bMoO?51J`Qt@C0=c;>?AdX)~R8t%Gq*hJ#X3LW+w!Q|^j>0VX_2H<H) zY1j{`D%XTa2cz86pJG$qUj#!60?}gJzwUWJ{2a;$bEKO^V1F)&Qq2NYhBvV~FW<z; z$ZHql4t@Dj5r6o@*ork_?n@G*B|wHCOOiAk)OF~8D&+g%8GZol2mt2FI5wsf?%Ijv zGT^v<KF`6UH#)hzy~iNTTfbWn;^h-RwEhGLZRPb_YW>^~)w1G#X#(@wKGQ>U!};Rg z=H@S;)E3@fY;d;H2q7!yKDUI`$dVt>g&{aRSMEiYN7LxX=gc60e@HKe0IVQiLkMQZ zV_44r{Z2XmC~+5BuK5_Vzv_+wGhothB2E1iTf+_}4~Wex4ZQJUC0C8IJhItUdpu(_ zF1@)nO8$ennTsCX3E1PzjhKtB9dTk%1x`?6a>##){kcV6Px5l+8||<Msg`YkyQKH_ zBfj!TtM-TohDWSz0$=ML{rMY9B#pmika(wiL+i(|04!u*KFLeJOJDxE-N$$4{}C9d zW0Fr;ftvGl==v(bKNfoL0w$<Cmo%7nS*wiHRN2@B#GkE<JsYXGg69z!i{pIztGN2> zsDP;E%9|@c@8t2YZ=!!qhQ!d(tv##8rIw81ZDUu*_Z2vO2QFA*cFkE&z5_RWH~Ou5 zHCBERd`^Oea8_8a3Fr9PoC>I`e&Y|;kM+Z|;{RqMz(|8{`lxb|zFJYezK<u#gpPt~ z9NLDKZu}013Cm+09|K>Sk{d%c;@CX&c_%yklv%L))+BkvF?aDA8$Q91$S=EI!C&6n z+rNN}L6=$!Xh4{HN9?EJqP!Ied+|50H%v!PW}yMt$YxZO>>iiy#rbn{oUY#b9}q?K z8LCB%T8=42P63roX5?xdnM!UaEA!EzrDd0DO^fyCPbbxTDb`4uN}*}N{rTg;x4_Dc z(Z!v>r5#<mA(Jow;#5Y@hx%X~zeB8bZD|!bln5M8T=?=gF+`<uQ_=GW)w6g!Ws%vo zoC7T4W2!kG(&Oe-qypLZKYw2QhtH1Q34Vh<+-$e62j^OV#+v)gtw0flafNPy)Se$S zhcJdAN0DR7MlY484%wR`0Rs|V+_zV(L?7x^?OJB<|8(M<DMgPVzwb%1a^f#wk+{)8 z7<OtGzU)p`cmlbyGm0!a01RE-+4*XA&S57nvNIv&z8Npf)h@S;CLZ3~N<I8bAd}Uw znq`h!Cf&^+{~pwb(B)NJ>C3r)f;S|BtUOVjAvD=eY$t}lek^G~4M_mN39;oAwIeBG zB2QPvRq6UYA0=|zj71vp*cuo2+6;jP-ogog=UbEtwy2?VZUsbo{j^+-wM5OYXH23j zb=ZSwAW8(nZLRK{p1L>3-%7QCDpw_FA(jE_c2Z>$Yxk_Z7WrNb6B>#tYzn$`Ej}B3 zV7$sx%NDxR>%UN`q`+8$2`*7crHinUa(7#&AqUU^h-Vy-$d5j9F&b=?xSB&_hgPV_ zNp)>FhVQ|{0Q&%W8m;M^K6v_Cs&e8V;KhQqo&%S-zfgADp2O6pnmC}X&>#`lwgKTa zbl8|5C4DRlnYd0WL>{0=`?11cY24E$%3lwyLF`>CE<zxx4swrR7Pwa9jXUu`kd6PD z{iBdXzMN&;_U}uSh66cN1;6uBEgy^y`MH7#xoK)c)B$v2mvO@t=-EgGFVr@#6HX`9 zcU~z(`n~>~!RZol^nD{~bM2L0n{l<sG+{bi(0Fn+hgKt^C15h@Wwu1KEocs-HDU05 zpWpv8svb&yIq<u)sl|FyZZg)Xhq=B9D6c7XeN~_#iACeINtaSN*Jfa600ctysP6Zu zOE+*g6kd3su4mv_mx((eW=H`c-dIU4rD&cU3AQ7$YKL7)RaD?@d}ri+(r2k|yQ2E; z=KMc73QV9``tkO@ef^QT;9fcZ{$%l2`RO@ss0@t7=g9u^#_uUP*#!DFU4myrZO|b7 ztG$W4=`MS8FeZ-u>3D9$AhNql#qvOr)6VnsQ{JR8F?r+1njYH&M}G7*YXk756*nL1 zcFg`JJ<&x$_;kr|dOJ{i(@kPF-mByvDJDnl3IgOGs}<*TvA9Acn)f&Vv=XDP2jTb( z3&HC0POAC&Z|@#sa+b1`$%D))VAo~yTbc+1=Dro1-0vVmv}2*I@xF@R+yX+{;_6;f zr-lE#O+9>K5UP<mk2gEJ%2QD;XVKW-X+*Y2PVkKJ<7LR@dXGsj>(u&Te%&+k2G@Pj zp*RdRy@h7p`j~2Q@oEy2KKqumbSum(A@*_M*<+#QexmSO0%Y&sT+eUS(g}`+CU)m{ z|Gff?ocm4$)PG$cLd6*4T%bYp2&OFk*|G}JRggG(Y<MEFtBy7hK44SUI4XQJ<xGlG z#z&66$lUy?dC`Qza=|9UkWwtMZ|xm$wVa>p+3mH}($N&Yr3w)$RU<cph<(4iocb~8 zJ|@>upULWEiMiR)(8M|*7xp9PS)2Hg(bJ(QoArB13@IoXdi)cT@dNQ+xI;*jV?!>N z);e<<2H4TmDkoJIpA|`|WZO&3tLMTLB8ehDQs06Ci=>|XlV^19aP0iK3KVYZmL&!Q z4c=}~d)|rGsaIDu{K-4nvA&<H5Q?)vvy6XjKpLaK1Dtr)vF2hbUXI#wFeP4Xn8jtq zfNIF#vfp3`&302e+B6Bse(<=W`6tOoseMs_oQ%20x6k5axP{^-hZ%msUS(#YOKdLM z6%xYMRiBEzoJmMEAUCM-^rZ2VN<MuS8$Y<*OI-+<nxt1O!VCHQXY2<I9Q_2X>d<WV zsGA)UkiC6)w)xMa_Ns@luAUe4%iG`%pfju%aiCdrQba8%R57v+Gd_yz?re{<2s2&m z)T&tUDeGsmyoJH;Ozz3{7L6yJ>*h#Pqls6Y#8s8r1|`Zmjp%=C`Symye(XbhVAD~8 zfCAOBy-`Da+(2`}eJtmrB7J3==Ke*$rL@lF(oh@AL_ICWC|P9|dzs@l1D77@wEgml z)8AZ8+_Df4$b~1FqW)tChJLoG8rEJ~V?ixCeHK+j*zp@CE(yxtXX9yxzFsHxS542n z{&jHq$&{bY)n~c|-@0z?wy$$9-(8;D6I=mGMYXvuNXKGU(9$x_3Zc;69@DDsuFk4J zrDt%0-r0(0WCK==%ymtY9^}Nk7~O&2vhcptxt$1Q;7$;H<Z^dwe(o3lTr0Z=ei&jv zF*4V(ocV(1KG+Y%Qj5TzSc5c!d&+`9njvxx8}uJ#s*5UAaR3Lh;#HbTDW7TJm1J0( z%egdF$cL_NPlLaVW3(Z+O>GTT;UxOYE^S%WYqA#>!hEm^74Lenq2@?-h?#p++87KR zu3(26Pzv3-xv9Yeb^pB<K@CE}M0tHEMD{v!b-7}20S*?GpCK?U`}9ogQ%q=9m_BF9 zSn;XtD{=tut>h*4VQ;XaMJO*$wF_!M36A0Ah=fR9(%r6*H7Hxf+dbf|j}8Nc9?b+~ zsl0vIZlQc|>G2x1gFtT#%$5s8je%uFK?;^Rcr*{4upB)6d2V5Z$33ry`XnCXBGfzj zg)Rs6$x}jk1!8R3#Jv}n?#X47+cT{Kj<MJj6bKVrp10)0$CT*^Xk9Cbxry81(S#dM zZnC*@lXxw*^Ls8S)N_7Qd)7SB@CV|T_Zd|Re~CifUvhbPNRAWezCKN)k7X+OsI1(} z9HaG+x9H?XTWhX5nCz1qW!Ls)=zKedHcB3Oc6f0tgb#98yeh-(l&!nOiW<hUMOG); z*mZUWFQ##q&bpY|&q;H*w;JU(f4YpAThlNylWVx1@V~TQLifKvy*X{RAD=Ssx$(Ut z$*<foK{0gi?Lpv5FL4MGAJxWd1Qa)#IbZF~7dWKH!w4{eMut_^jQyNg`+RnQ>3k*K zJwZwt)oW38>gZaeixoMD=M7Wb(P)3)kcGSyvI5CjdRMdx<#quk7KPidmKuMd%nzr^ zWO?Q4oiyuV{>_)oTd3$WR42qhHXeS}S~R?&#~q&#KBAGrr5#(<Bu{R-*!l<8wn!8R zoB5DDI8LPRcGvBnL3P3&t6I?8Sg&fCB3s%JEb%*hqfTboc^Ik{{I=_B)=XrQfhg`Q z-fw!#+f}!x>)PX;KsON4By>p;w#o~Oa(z&0iUEXvN@1CSLeHIIanLEIQ866{D_pyD zaQuV*1sMS;Fk?yo;j)*#pD|*IB&DTXW`mn@1o|5mPtUm;FiB;~gRE!GpLMGFfgAoF zx9is1`}*69FT?*;9pMFcFDIdYdqVt4h5Ig+=HT$P=G_kt204*9<z_Z;HK@ZELasOq z+LrV<Wa$o@(uCP}jK9B|k_ULHO5N6;=%O)<b3Z|ihwb-Zi-8?Eqd1D?#Csck>R&aN zM}By$l)F@^=4L_fl;sb;j_<*C_&`(Uy&Ani*Ic&$IZC!d^YY1uyFaV$ed<~N0&o!T zt@l)pbPI*3QEQcsxX+qs6T8k@hwvEG<E7@^uc%1YcVGEY`*%Z}#G(ovuVNv(%Doa` zVbSI_CAVj+bAr6qb}t~r$X`oD;U}!k-LQ{p-_3Z|aw>45PuOvGNg0gIzPTK`xcBBW z(j1Bdn3VdNq$v%66}vq?1@`}8jUH-I>W>q_Dt?yF=1IQA7q`_D3+%tKQbkYq#>ndz zWh+L17S@;*a%1;y%fL<+fm0rlA$33QuSx<I#Mx9U8#9T*9s0nU2nWY|uy|NH3)|x= z`w9F>&og%QCuaH`N2wE|lfG9r90^fYcGG1&bnWe4f}H;R^G3$x!K3IWkM+M~ae~u> z=I*69#PF`wy_kw6T8{YbimNd>Z>>VU;)cXe1E_o!HahSWR+^rtA#`{Wa`$`p>sfaU zNvJ2h3jEg&W@&3J?zim(j>icGcT6i;f%MmjGwqCeNg4WjCzDjxk9Px^l_}8}p)+|M z&pV?dH@Iaf@iCNdBrM!38qNGV0|tJ65%3MfLhN-tqh<eb@ULZx4waGJy=j7<qqau< zA5T{u73K5w7g)MuX#|#Dx<pF48<q}fB&0z}=?1AqLZoBq?iP?#y7No7(n$EO`aADA zd(Qs(%skJ`ojdmvw{;|=`w^C@{99VbaKi>-$?5#{3QW($o!~TGvo(}D@opRTrqeFp zU3jk%*h@0_v9Sh^AVjVtQPwd9f^rn`pvX5L1-DMA4~swJ45gzNCI4pDdNO{e2qgi} zBY%(mkJb4;6Yv&=C@Ot8M|ot;%+b%WQ+tSxAWcH`+ZWP}pRk@$+IP8sw0T)rC~90~ z4>#W>em|_A9fV#y{G_$zI|#kk)s|A^b7F~dfFubB#cZ|Es1tzB|I;ZW0IzU)p1iBa zia@nXU%9Pi-!W9RVM5X0e0PlAh3%c^Mo<VcM^l|Pf|D+$>J=<hm(Aehm&I);gaUa} zI63N7M`{a>aTrl$5Me&!ofsGqhBxfam;=H;iWT=EZW<G+;UHbx;py<z!Vhq54z@Z_ zm>?{wYzM8YGX5wkJ!S-PR60`yn{rsc%|u)zGn5MkGQrIqrq*J`(p4`QFEeahy3zf` zVB+Nn5uq%mN!V+-DsYC>aVk*rxQ7dT8%#%^GEN35Hy)=+Q&OU~DH&#Div515ySvjL zGqP14%1+DN4~6{ySeOuFsg~%qlvWn}e#2o{6%k#AVURq#681XWlLG>Drfo8DHs~_+ ztSeV*GTr(5CXH-FNtNk+qoV{O&9Mr|cg#^;Tg%!k7OgNU79&AHidS$DRJ!T&#Y1ZJ z*O&QWCCQkS>TdH0)o#i%F5hEflJkH189@P~&%k{3AMU#5A9xF(79Rh5EUqM0<W@$2 zJE1Q(^Gh_s2`j&B=SP3qSc!{-B9we&Fc*c9!QdU=s8hR`F(0x7vL36&FSl7o37=a$ zzVO*z`K64j=BUkf2yzc}7FS1Kp~!HeqbF5aUGsYpgJW01<~1STowU!+pMk`yF|#4l z0k<}OUVs0(cl)z(sC#X1`Og||fipgc$><o)tl{geF7SJ0A1GCkqE+o>Ov!2~-SZ+p z&<(}jgyJP)VB;%$P>W{4D7Mw?$aM&@vW_|EL#P;b^$lIhc~vmK$Zt?UnCgZRK7`^T zArZPPWy&!$OAutJCrV0BWgnxBPe@@Rn;T_nK&u34M1a_K1bhj<<L=K*lt2wtJj3+& z-hl==DbXZ`ziB@?0BQ&icUz`<RTz?9`mix+q3z$^V!Sa}WIh3A!*D&SY2A`H3>xjZ z^YTv949b!|XIC<7nKj{z;^9v;!L?d{4xPphn8(d;<2$!7`e0c2+*5_zK(k1GGtE3% zyQ;$Zb5d&M6%6re2twH6&SdXysh_<{c_@GMsQZ#7fhfY^*A<5Z{_?Wz%n3KuFvdNh z4hc)vDT=XK-pWTlr)*ccEqMEhHIyP37xhaYgEf2B@MhnjGO05*Z)hYhZ2Up@oPXIb z-i8oSN79=rp7Rw(;SV0ltlD85cYJI4eImPO?)5j%GT|4o2Jt4a%&wAHfIDZ6ZVT!U zNo`71Z6c%P_~62*D5Vh)<BzMmsNt<6_m{`#KZ`K_<ZF?yA-8)a`0Y0+QF9;E<am&) z88r=`O%pP@@MtY+qTc4^Qh5e3hFhkqxHe5GjzElI%kD5~VUPH9tdR<Vo6PAf+3C=R ztZ`E8sc)qPawMa;eLcJlMg)Fs6+TjeEEw**EO81B@Xb4B)ZF5;H1noh)z5O;L`wEF zDkHnTMJ7Yax0EWu-%u@YUSWQy#wJ;d_s8tIj{l-&^DWqTYnWTZj{hdqTq>zz>rF$; zb|e}Sa8IfgTMo7NM0!RF{k4pgD^ud(3(DX-S&r&6|E^BbiF4&=uY`;Hic7k;IPwe( zXo2?K?{AGpc$-OLu6Xb|=&rqrC`HONJ@b2NkJ9qA{9kH2DrQnaZ2<ZAU3mN`_>4uZ z0T8xwnEOk1%k;sWjHM6XX<y|Wmj`sI{-rBm0s1roGonk)4P<Mgg7*WV8p|SeWDdx2 z!KuNetjI&YNjM5wf>^(#Xuhyn{v^svj3uFwn7Rb2fh<H=KY9msnRvy<T89Ozo2yGL zo-<?TuBl^}*1TNUNLzOh9J$qYTyi+6*yCLRZoW`#PbS;+ql-cG3esmM%+(`+3eLI) zq)>L15IXp3wXY^HbeH8`BpGQn$`~U_*5&D>qbiPZ<1^a0u(FM!GP4Oyxd|9SeVQL` ze_5NICZs|M{_w|lDO$vT;N(NPx%PwHhf57b#%J?A<FV3{UiA^n?r;*r1ogtI#SdR6 zhQymS#~iI{hS4jEx?`$JmC_jA-fC5^pLqL;D?}X7*-s$-a&PoO;O8sgh*ng)l+UAU zC&v}zRYGZ)04^az)t&R&oNOx6w+oCq+EkWOM!<Cx?IVj%3yRyRij#PU5c&Lk?R>w_ z^cH1?UdvYnw=3`PD;2yT#?FF~03O1Pc6ukaKr6q!+a7Z;8~cv`a|TPG5E_};S<Yl! z-_{X7ShQWN=+BW5q!wP}K)cTj8nrXNcvESukYtrsk!xClAupw9@%XWyn1@H_U=c{3 ze_v{h+G-^2I^v~TbVLzhLF0J@<dRC%7=a+0plLt0C=-tHTGHDiHB!QG#>g3~T<YIp z342^Bkd!1mM)kDx1_PLl!_U?(i<k0V2{rhV8`SOoBBi+`cANZJP6CKc)t0;2%6#Fg zI$f?Um0Uy>+uu^y5RqKhrTvXh2`Ox&odDrArLIH&UE;jb1rZlkpb=%~JaSA9?M=jA zt3H=1izY0+5sm!1{tG={nh-~ICl@2mvShsyS&NM^ib<w`wG!drq$K>gv`tIwnrN2C zeg6}D1_J=03FiYSGRb_Wr;7=h=8F-5P-*-2-mSB*aHNj03aDTO3!~ZSFS6yr7R!~3 zT1^QhO<dmS%bJtujrO5hNr(zj-CGQ#zw!30{nYy-Te0{oi)1UGctK8F5Jr+(j_ySP zG%Ui%%O{&>r5rX?0ruYTw*-G8(N<?FN_-I$Wd3~nRrYh2we9X{=*yRT?SGDeU78lt z^fIv*TD*NN5NzRQ8mfG!HmQva5>rM9QQ^!l^lV5(m@l^vP;Ol|Naa*&Z$ik`5)$~B z>#_Y2kf@FSK_pKNDM(xl%VDYo9^~(ui##WO4N*xw{2T*d9G#zhovEli3Rzz(->=)% zXs3~L)672VwbeEsURwO9o0jF5<&(O;<d{k?Wny2UNS4FYkp$V%Z<Z(l(F50U8#{an zQ6^W0W({Q1ioZL^IiMy$4y#`2Mrp_ThxR!2!V7Celt<JV#JQt*Lnz#@M>g8+ght^0 zVx7)ITMd80`3iIaI1!rli?CcvO<tNap&VKm27wZpn?TocK%mmAV;Kp~5b9@(*^vEJ z5qXD+t2ZUnlZkT&Ky~qbbnuX~P(w=ObF@XJXG=;s3grACCr^K@C8_z!Wpo9!+V-)~ znID>=9#NrnBllowoh%8dk`q5I(X#PI1Zy`Nrn_+e$ie1x(x?|ErHUH8GbmSrKA@Zu z|JdUt#bJFR?DpwcwYZCiUNKj0)TKGV)JxjfBGV||3HC-MDaM;b!L6Mp{j#FL66uSY z6vqE@QaU#NXO>hs(6s=VkH4wrX57J#wSQu=u?QG#VkupmjZj0W!3V2YhbCd+rC@FG z7xj!ybM+kzG=PJE5??1s;hdK>hmknGeKv!P?4eXOuwgfqNBctp>+=r};K6}V^@9pH zk6&$Pfu@Y6XE{mKteaftR;=nPF{~}0jQEC%I$ll#m2uXp@-V%Eo<st=U~`}cW_!zp zk4wFzd4zRJZ@#UM4NEk<rr+uOL-fUV^q1q+4GwyB4dfaDo-r(`#ue6t5LTX4qm4s^ zi4M&iXf^hsEpPszU)VG>->Nq0wR(A5Rq*C7bE&ay4JI3x>c(tktPo=qn^z~FnRU%x zb~9Ihy9|W%{3)CKDDKniSuI4l^yDS$vM|zyvXp^NUNp%rCLBkDFx)vH;7^$`7Bq`s z^X?Mkuf@{%c)9?(%#k(;62RgI)gGb&z;-UX&fbtDK=VXb!S22G19gz(fT!zF%IgWX zkk@ZHfm@0yIa75bQv>#(#pqQcr2P9}x!ThG;wo*VUh0tZVc&o`q&^=0{;Ph*IU(a^ z_Pg2Lz0UgBbESw+RQJ8}rh?jQD@q#D#OWY|N`)lHvNkd(=nM86HN7!99;QapK?}8{ z8EvlkCb0BQzL{6Ziv;AoOr3pJw^XOV3>)nP8XG%5_BS_x5Mxxbwd3F7DBiCy|IB=| zIC<A0=Vju7b;V483S7R5OrdzF_~kTHBQX`%dV1+6UQp*d0@Az%>>^?vtptBJ>udB` zVjZN^`i?KB1yvk=t34_&_C*;4LB``d%4Q#0ak&-)OXhDFQ}=O(HiNN<CGDg4-qnxF zy0S%aVj@j;_T<m}$S<W4j^OAK19J&Y)x}`&TeW6{aT)oIUk$F6mgYLq`<=V;T+39o zC#6Ntew%Ygvqj6F<tZh_oa`LZ^Ux!>OCXbL3IPt3QpULcijFv`Uy8MxUvRT&;gkN4 zHC$Gk^6N)GZ|}_L!qjQ1Aq;1l^W#+<s7+4fzijnW&j@6mqm<5ogMe|PL0H<Wdo>yd z+3B(`pC{t>ziA&Wi(;?{4Yue9)y;lr3{6hlsg6al^vP2};Jn1~i1Lrpk5i3bi5q85 zjB*i1G&2(CqMv~ddqMlAAA76|8#U}}t_Q5|a`i~|k?AHe#7rT=!F%s4sAu>1>-$0) zLscZnZDlRkaii->_szB{;u6o5H+QWh6geuM-%Q0fklUi`oeZ&Ark2Z9kQ5s{t53=d z0RZ9yEoVJWAnb`2E#N36<<`0`!PL|fVx_y_C>TCJ0gU6HMhr*tw&YdSDMW*;CRdsy z28liGD2ph6wsh+-mGop`dZ>k@F#kL-x~CK#<hE_EpfEK7byuKA1;}EERKm^c{c<fN zk;>sX7qwf(U<1=E-v9+<RvKR-^J@LNb`c&f#cze}h|U=fNO_-#mmz4WR&S4LoQyIV z9lXc**bNGaB7{+*K~0BV0k$@<V_OGE-0qOIR&kx#3;t`5PB;T^cd|1=QS`G-q+%h- z<v@NFzo3Vtwv;kWE7cr_5ncoaRe7MaCOQvDB&9Mh$GneC<`dWTW4LAhSN$dHG1)2m zd=4bVm1@Q%EFHk>AtZo`#&r6w#-iwiT}&wDCud?^edq|Ji6{pDqM<<<^1{xUgDN)a z$N<hQ^hu9sQ~&_oltDGQinmAZ?@FaJ3t)h_E{}JTo0j`VnR<5(&)1N_Mg&<z0Iu3q zY7Anqd6;q_w8(O}Y<?^`%)E;LTS=#AK$)6f%0Pk_=20NNcvZ<q$%;*NKWuV_;aPW3 zIcxng+`L#Zf>uF`x?OMeIio<VjP{G9)E)lhx&RI~;AxOy>Bv)-oqx(d1k=MVh)CbZ z*Z$?s$DABGU~B~R0+&!{+C_m>PI4xbcEIhEm~h@WpAuACM@p}GT??U)%v#mdS5dEi zsjYMHE>qk6mnp?jBzke#Av(>QeyEA*^ySiK9+yvcS=qi+P6n3v@zo&@Zr$ZIHdS`u z?-1|{?Buef>TH4cvSk@*TH3l_@Hq`V`dAYJ*dr~zncIM#-^7}e)?~ZKWov0k-Bs?^ z@eB<f*M2aiNHtwkMTU%Doxf2X9xC3tcWz|VirMtD*h5WG9MSV=_u^nPK4KpYuSmz5 zFb(GaF5#b3`a|HK;?2W6?)@*HvI+!r_A%#k&wtTagN21Ux&?IyUq5q!d!W@zO+`t= z;ju0*A2H&xuwr2?w=>WnkyUlq30!wO4@lX%I0hb`h$%(kp%x2HTeb*A#^b>=8X7O( zNL@mT$W^)*Vv3FsbBV)Lb4b)@M#t}uH<O-GY^H7wWYaS;8-7)^cM(Ro9lqo7$hNON zA`BLsYO|}sJcIIHRWxv$PdQS9JM#5lJlg`}EFYl04ME}RT15>GWb9eK!vKYnGSl$* z^GKn@4@{`zy+RJf=cl_m64lry|6++MS4CkR-=cQl(;X%n5F1@E1}s&#MJZr+mz44g zlaLKG$*6VrHo25;Tn`C2%|_o-)P@#Q$sjp%F7{myu$>u<B>6TrD7I;@warEa(C?c3 zl^LmGHU@*-px#v8lz8Fm>h_h<I3vJZ>>N`So!*N<Z7z_q)hH@TZ#F#$*3qM_DsfKz z)hpC{nXPWLok^)u!3^_D2mQAGR}sk!e>7)l3wE0R)v=uS^((g6*SyAcb-DyqlUWYT zq>Z}6#OeAI>4i?rt&7sWC=~SR=>2v=G<r|BknhHSZm=s*<`4qgy7LQ!8U3%L>5{Jr z=a>4nY!bX`QZ?_QW_u=O3t!~fX%<n2c}JU2qu%vNm&+kr(WL{VLlh_OJ}`i>TyaPT zg4gH;{Be={0TDefU-q14A&vpA&TP-dL;|29AF@WuB9XV8R?I9<*$79Qy=JgiIK~*w z3!Oz}5y^5p5y{2#@wI$D4()a!W`@Np(susTF_sbrDgDrG{b{-rWwWr>FeQZhjT54v zby!<CHZKI%eAnog^6h)%o*~yCF3bwF_+ool15<+K+d04A4{I&XaQZ)mpQuvNymFmJ zO4+6u?wX+ZywZo)vXx8Xg|4W;y8*Ylv_9b|=Xt16yni-M9eV`hp&9jJrlkSaXR)c6 z4Lm7JANCVK()5K0jAI4Rv6e{(NnE!iBdk|CDfXHD!Sxbvs)|%LT_W)X7u#sKzaA06 z82t;s(3+9ctQ{O=1lt2)9CJViBu5GP8pJ~vXYSTp2O3n@BJdJ&_i6&B+K6x=?5}i# zXg>rl935g*g&9y+%+q>+7)MeGR%1iks&v0BXb~oR3MJ6QD<i7{l!~p^>_bplXmab@ zm+H!eRt&qBevQ@D7i>r~L|2jMCD-PZe`B$mqC2@35zP>@OO(}qPPP11A@L@?F!dso zVdw&@FT<|-ZS~@vPX^1sq~JVJvJNzm08wnC63!fg7JZf>i-`gE(9ppe$~E@r;I~i9 z=7gUxtTg#wH(NCoHkBPlfZ?;bG;v2!Ju9eWClh+Zrp_i(89VZpXzUrpI*Vmdt^q^8 z*47Reum=!0V&(WOT9!uFuO9;J=hnb<7R75>?U%GFBgzmqa-@(u`JtEZo8M=%p72ML z{o83`0?=uf<~Jafh>vB;;$@@6eGOEI^kj(qH0-Ezi!PkW!Jynh8Z}C@^K|Bzl_$ol z8&ZF8yg+gCjy~TgL7!WzDd1HaXElVOg&|RMO?lhA-1V4rTma-3N;N*t_lf0;uk^UB zqn-GNYP}8nQzj(Xh*%Nh6x9%}o+8DHq-}B^78^M!Q1+Z#!b~vl+*$Yw@xSHuj5@lc z->u{gJBlt_Qoj7pcXEHP(=q1slG4r{r~*I>u!B_Yq|tsFP}VW21hXLPYe&npJ^HNC z_7S*pEgR0G8SzHOzOW1oZJMsNZ0T)r4)kXkAr&2Ko?jBftHHQ)7xw#!1_OBumbUT< zeGcI}z_l)BjmsYVrA*IY-tan)H!P#vWLQVmOyh4lcfKKMJL8Qr9lh1oSB9NrO2RzL zik1)VMb5)9lFTtvonz0}*1EC!o~Yt{O!9MRqLJ)A?Lby4lY3B+h<Aml0_C!`5nNPU zC)8OQLSX!GF*@u@Nu_3$Vvm7j#ZjDGGryvGoiEswa#E?oMWQ^a)FOmgI@bFPKddHE zjcJFUp|Y@sYADFuVz}nngbh11$nW1-7m2Q&-SYVho$+LC8F2R<m5C;qCX`^LGC(Au zd?L0uLp8@n@4tyu`HqUurwy>NTpA<3S%H|%1U8nky86ssP3J)8wBd$$31YIRn#wTp zFRYBw@K1dLjMyo?mOdVP7iMjdr|P}3e=>b0IQp9s7zqvrDb@432aDgx#*6C#7h<D= ze``4-p+Lv3>XhETyV7EeI*T|Kt+1jSY-Whem!(@iSJ=<?@Gn*!f&1;nahoI+_XmXb zCg)3C>M;o}S_f5U<jO~)IffsLCl(wl?Ofb{ZnBkE=1xkUeA}b197J@VA^nkFQnU3< zsn<pr<!vOLZJnz20`7KifD|)Z=tT&|DXR3-T^4?O`+Z4YGJ>;md#W3L_P@_&F4aa$ zJ|^k<&7NPkcZ*@35d_mvg_7ds4Vi@7rzxBB$!hKI`_&^XujSL>ElHKi5obrqn{zQ( zpp8>=7GR2-4QX{Y6e{(uBa^SSj*m!(B2A|$P2&{D7Q4VD_D_D9@}Ha)lb;>DpkE7X zlqI=t-r+=`87<kpTauif7twHJ_UJ7w`Po`W;MD^~^B>zo#I={w#Qlqr$ZwU3QeyQb z8Ze&hPB=#F*B{RGvE`+}st6POH>gM$nPdh6`WM;BCb2T}^<J2(ZwzdzYd;st86EA3 zB1L%xRCykWw&q2DAB2*Nj`JT7YgcV6G^bVw7)6&<tc^c;GqdfCzzdIS?n7X*+5{^) z1R*Jn<55EXe~ZhXkfJ@G*ZOi~cV!Vmdi+CQb6(=?vh>G+*HZ`IrtoOp4a(YR5t?;K zJVSvbmuD)Q3NLmcurA%!?WQd{>lCf+)2T*jVMDz3`s{5ZDjTG4Az#I8+REw76Gyx= z<yVb{vF)aaj_e#+`hLnUUD0+Yr70=rnHXx+b+IHTI}dy(dU_iFb3;rl2G5En;P6Xg zQe!66CJ3Z^M4if2NugG}&@v_76q|}gB?Co#l65R;!OB03(pGL9(&D8Xz?<6rP@==| zTC~lX!eO#hZ=6WZl`PkZNYCQ9B8mYOR@?QxNSyAv&fguIRXj2-nAf6_`dgaNbjt7! zZAX{s&^GoCh?%YOPX!)cSQr^`3&8n9bVs1lkY{2dQw07Jhj|*C=|&onJ_^>&;f@if z{ay0RQ6nWTp{CW?@ih&+1G-UqZ_7jmT;pB?yXZ0ND8iT>pB9*kNKr+k(kY$E2Wnkb z2a3%YZ7*PzdX(&okPZI$oL5y_YzNzX?BzA6jbl>s{34_A)79B*)j~HBTo<9{S+A1+ zq<ySx#$S{BHvbT@UhDMgl}uL>y+F%;M3??jGTFb}%kUjf4YjD4@1TAUOI1xMCWHr1 z^(R=%kcg1uMd7<+$k|uZ@YF-8{dQe7X%?N4JQw4upkd=-wJZrOQ>my`c`O7Kv)KXf z%Li~JH&jn=UZ|P!_{7fu+NvaFvw-{yQ)SecgE4kusPK61+JRKNzt5onb{&E7K(1*^ zpk(iy^NCE=y?!)Y?A7SV-^hq8xmxhcg0AF*K&2eLI9FeH^adx|C^$#`t70b2ue7*D znN|GkWLvglSOnPu6Ec8RAJ<<+MNMvIb({Zi44POdoHyD9<T7OXf_(&u5Jpxpn*AxJ zKuZSleI*-Ck9P#w`@jL#nk;uFV64+7nr2b<o=M2}b}FCwAr?w0WlkVjM&nyN#)XP2 z-;Nq$0RX4=aMJINmK!^9E>m1Tzxb*r$Wdz2UJ=3{?!MarsW@}O&y<iRDqOXYTFO9& z7ORYWqflZat25F5r(Z<Now6{v6cItrHM^-<h7*;Xy%kxlB4&Pn)(X~ao<H&QMVGr~ zd)(f%cxMe@wUD?AQ#VE2=dMJu6V`vSDL%j7M(M6bNzQg|o<6zfOZ45_D4jldE0E3} zRhTyO39y$mmtNXo>aRu7HnJ35&Wa)50~JpL#oFU&T^X$=fOV3mcQwR4V=<!TC-5AY z2+P&YwKz!Q9mb)UjHPM1U{_Id-YgA1Dh_?$5p}sB;F#==EdsHW=Lty_2+Onq1|jkh zvkQe!s`A<hbU^(SyJ>303Bu-o9gaYB5biZmnkP&B%1_FIj5E=IZv~nRwk2nKiGiMl z!GQ!MQVs2RgomAUktEIYypor`2^{;;4dw^A`ee~=6E|$+ohZ1Y&dt>*aPLqey^by! z#m@Jy35E~+kjFq67C@`0<B|18LQn*hx-CX*4NZleea&2(N=d+OHm0z@uy8wEkRs6} zR`leBE5~@kVV!l01+{{`Eh<HDd6MxX=EyeosGS#+ILhUA$@I7HxFV7ogH1;+wHP>( z5vcZ&^l8f|(eOe6VkP0$;EqgBzjsXkn-b0;?SZD4SYig;69))TU$_4L78fUfT2OKd zgrg{W&a|^piV>uYPJ_}=r2wc|bYtxN{*0M&OXpJu4j?tO3$JxU69wSAz?tmZ{LQ4) zL(<}uA_gni516?NQOu2TPAlBp(*_@Ywj0{by(@T;r2n?Sn|jbqZSG;Adj9bRkBwYC zgRzwBsCn`*X_|g>dS#(}@bu#LA{<M!vZFo|G<vjr?0exZ4*)i!QYd1HhWJC+7AvCe zobV$(aQ>VIc9KQvlELrBxJ%y}SZWA&5(RC)73fzT07}+5F9yzkY)D`!noLVTn(cCA zTA+DVCC*1Db#x0AQ#A#)2hhM0&@heLT@rsKMFYY@87NK@*wbc;f)V7PmREFIruUa; z*7`~XEXb6CRBC!hdB%Nk_zX$wYacfjOE1uRZn8GE$tu>8n`y){Iz3}lhJSE8KyVaZ zI;N?MVO-VSscrD4X~Fq%c^SZNJ<6WNvii*1%+;gl(|2209PAISZO-V?L`W6JB<fPK zvL8zu-ZcSBL2SzP*8ljttI)$obpoKm2NO?Ai0c~kwYZpaA6qn>oJIi%n0(3CbNcoJ zk%+j&-eqG7o6QoYoMP#XXW?5DWK6y85mi*8K2bqXYoS{D3}-g>ObmkZ#EQHkN}x5@ zRakY-WdEj@$s9>%w0s03(K7Oinhp%AEVD%mmLnusy-?%d_gr!&{DL1mTxGCkH2%;p zYvWxOa&8>`T;MrX<#yZo8{CHts5X&;Fauk30S5UgdgdOCpm0e2wWY7CbswAMY90^n z;p`^4HZDTX@daY@-RN&gbE6pi>=K`%GeOKqCr?I){>s@v5cgu@<0Zc!%y*qvN8mr| zd1yj9oLVt)<I=0pON@}HEWnXVRqk!ULNjZerTq1fY;r^I^9h$Bj8g`TVR(6=$~999 zPMBN>K(bEy6&VtuL;@%EV?qK9+p2LdX^{&<=%fQvE9sE<weHM5KZ!v>sf(&NACGIZ zMo^LKSyB|0Jzjk2XDmu2{L!gA4z6FWj!m@mezq90f6GK3Qn(=*Y(JC@K*P9l{t6dX zSZxD3%%lG0#tVTu$w+2_%`T=;9SbE=oQjVO@W@DEfaaG3B>C>ZDNSD5#YA)OfEauc zIc7<zSLj!CkDZwJ;&1R&QK>9gVk~ti1LopF>ow>_2tY9#YtkB~;b6}J1|_rOEM@rV zY-&F7tOpCYz^6+Ip33j^{oX=l^Yg>`dwx0!y$Gb&UV8@g&qu*y1YtY~0K|*WQamxW z_v=QWg*Potd(`$d!j;U^x-`LT6{@_-paxEMduJevuph+v3mc^8G166%{WmNKLbTmW zTD@WFJ@5f*wy*O_zC0`gEQnO7C^s7;521eW$7)2_W*InLE4WXQSFTAUo~}V_p7ndf zp{cAeo==h$ld%$tKB5GmmhW^;R_`Z(OPX??MNzS*11B#WzIrw8%jsgFL{a!s_A;@= zET4FLdb3l5iKJYq#4NUk>!Ao;f`_uUX2#-sewA6AC2<tFMaQC(&-bEBp=0XRc9x10 zc<lkkJxd$V)>B_*q{I*uU6p4si9v#2MJG*XuN}^#;N*`Y%6^h&(HU5cVxlM9V29Q! zDL|rAsl#fyHlTuBdGeZrkUaUI4b3*kp2U8<9`uKH!_fsFT1~*gA-Yx}n}NDkzJ*q! zb$;eX!le~IylU@F>V>e0Hy_?4cmn4Ns&pj84u6sCOG#AtWPj<xQxrYE6Rge=>+sV_ zIy%meFD0)s=8neDE_B$Z0OJrsnIW&{7+dx*TDQF|AnZ!!;aIN12DKeLKguA(K5p^g z9x$j@8~-qdZrROXUXA-47ZZujTrt8_muKwR!-bP<_?vRM1Esvm?<GthX5F95Y_yvv zBy;0C)0LPO&3Rji4;PxZ%%>{^&a(iVe3I82QU9xzlDgW^l2$;cr2h4|ZBdFmbda(N zK_ghX%wvj6kBQtMZ=|ZzIMqk(k-yRE3&vU452Lx}11UBVd!yqcT^1-{R-8Ig-yIYC z>b_JP*etHQEw;R*2I4?Zbm7FL^u4yY)Wf1P1pGLmmD&eaBC``PK$On}ra)S$O>3%I z_1j!4fVEeOg5JJT&<vf=9Q>^(0BZRm<0)|o$q)7X%t_hM3t1<P^W)><Iww|7?raY~ zBRQCaHlma#QFFz-D*1V^yFP0L9V4WS!!q}3XgW#~ce&91LV@o~X_a}RW3Xv|5R<S1 z>Zfu!C#ToDabZx~#4^x%R%H@R%d#;H0mt^J5fpM{7278Bxu#~HRHD<d;aERgL@KWg zA)=lW`C6Qe?c1bS)`<c`dz8Utv#3spUiOfypn2vHbP|}0@oO_FSY0jr*-Q7>R60dX zKXGn_vQ-(1nJ)=)QLD{JRGrSI$tztSlp5D7V`lueEm&z7@#Wgz(}hkRh>{q0%7Ff) zK5sF`NCi&pwbI;vaZCTwI4mwkjv65fAyH+c@WzVxj-0%(B^;zy-J;9ltWZTG7iz#+ z86SgX=*yGOCx&rpvjK6esBxDAu704FsrHqsd|lh<60_`lpO#i|d|k&1E32}jirGbL zG@OOnuHRE!zt^-V_mbBkBI<nYZ1x_2VOMvDyc{F3p!xBIGCzz286S92YJ24bTzKIg zZ-pq-eoX@O`<71UI-2+Rel2Nv9Ro;St<7D)L^sYb@pXV`itS(FzhQ{XfKv|v`i~Ci z4n_R(iTQMXvhio)sc{U!0I&C=l6_0KidT;yd?I<sbZw?6|E9fyWMDT=WJyi^x<(Qs znNgEJide%9hiy+*HwIwcgufl95Up}XtaaBfyOSq5BRB`NtUAAzOZu<eHs$d}LjJ^D zjJKwKG-<=u3w7BV(p&j&t_3gdEb8B9bQa~aRNV0MCp(6Zs(ClGEIJ8L8XIS2WgQ)r zv$MlS+|61B=?9z;*P?YN>UGIAixR(QOSsml=`rr_WP?R$bR?dGCK3Meg^E%}>#Q^p z!T=7(ww<>eJbnpj<}|1y6go(~m-y|Sk}SF2;-9<=$35v2ZD-oXpdwyCI$$R?+`9}T zh}zS7QFMwv_@q!EA)P+ScOLjp7X`{&I%sL~7#c(;LzDF?FB=se^`c>52|AWf116TE ze@ibdENI8a)Kj!PSPHH%;WWceHoNg}HcA!v-dt)PCRKR|bh8ZULZC_df{veQSJW@; z^g44kOWgwlVk>JU=6?*QReOI<to&t%ZKuI#(>|<zBgUgdF$a}J_(xAkm3~ggy25Lm zT+Eq)&a}N>IPh*Ko$<~75>{YV`dJVrKz!u&W%C$e%b71qFZ#?oF%ygN77jN^B=ELo zdci6k;!C19n8aDs{R+_(3UQ5eMKn;m#1n}O)QuRBszTQ~)(4fbLK)NNEV~&2yeouS zN$Rqwy(pm^waf%tqxX$P<sdyCT@NDLfLvcK0qIvPmc#BLLxK)Y?>U*<<`bOr?m`XD z?9v{75r0c?DFk7cvoDsfNSfIi|BOto6HFul;uGrW&<{8(mS>9y3xb{trGv9GV~($o z=c`(2un#+X)NA)k;XL|3+n8TkL6)@U-yZ3)bRfPA;s8T{`lu~bh532I7^IP(h!xBT z&~;H6hIw#V5>zpRNaB;<73ZIaM349}L-6sn0^E!Y42_AZeLn)ovR_o}UeXCL0b~Vr zggR={WP)^A@SF?o_<drZ-ap+V+D<$?<y`g(KiwOj|6G3>eP%*ZM#E4)wE!_;W>aEh zf~AJ(Q7Rd7?a^NPNZCUAj|`8O=A+>RC04~M$b!Db#rbcMLBR%R2IiNCLF9JDscz%? z^hk@VWv&j8(zS9O;K-z0ao>L)7=XB{SOk+B!Tv;l__zqm^`=fQI~@py5qomS{5L^D zFGYv!swIr3q~hq({opr+svXAORR;CoF!Zw0XONu}FcdHpK?T6Qx6=X*ly;iCeLLSj zJv{z?I=kt9I*5O|{iOirdGD|G^4l|2j<O!%^P}ZuklP5Zby^mUvU2E-EjGTfc7z~k z;$Fd2pE?tZPb3&eGFy|17xWQOYB7(zv#*FG+4c$+Q5<so^8N+Mm#Sa|L_Xa!yC%1q z)30Je5p*j~{Le;O$B<exng(T1u6Y%YqsZVwOo41u?7vt<jVO%~h)>GF{f4pa`9AU+ z4kcG6Mmc8L8}NG7(r3pqy^S;=z{E2Yq3#$<|Ezs?;#lXlRoxGLx^MjbI(6-LI{b19 zeLC$BA0YtKa}@MQDy&f)`4;^T7kK`~g^piahkmo53Q0x>>F^4VWBTmQ&JofY`q@hF zi`hJ~$qDUZalj03cpf~+cR`{w>zmek%H|BTXP;(np`I)Qt5oWHb4AUb%HQ>bNCya7 zD1}M1_%R+9ggo49S*>2+Z{{Zl0hN4e-BwWB>MD4Ep`11G3<~;XQbx-3ZD&;AG0M%5 z)R8l?tPzQ6H3Siq;8QS%(Dlm?SAhh>9}O9IZZXc+o{x@`8en~V9~+N&^kL*>9Gq_P zgymM)a}ZkNohnAwHpUw@srKwG2cfzeDqEmL-rmrD1w87?tb4tY`}hf<*J*Yx5{djj zr3p3=KIpB^+V<Jv_9VBA0LKc08$m~wmD_&LCl3wy8Mpy~S7-wDrJ$FYIzq8TyeJyP zfE|ZmowoSok!gx~sDT#h7q-P&YZ~Qxjvh9~ECjXW2&$b%tds;aQ=&jZqV$Uhwh50b z`cx`SNSz`!xaTcGpRBX(hRs;VQJfR8f!uF`heF8=C-^P=-yevc?>8Mosn#N9S?ed7 z=4m;IRZVEX`WhGEQx>I6uF5fFqPDUlz^(CCAdMBoyOB(0L=r7epj&<3M{zRw`;pxv zx%yT2)AW1KgeQrEX&D`gJ*VR5-K{ANUV3umbUaG-HPR!)KE1Q<FS7`Ff7>7`I)6e{ z29hiZX1)mQFi9UALvyPh-QzPM361GUc#jPBjP?rFPOs2x;mfD!4_w7tMo`=4YQ#>$ z1!1XLS`^$>sxH4Vc06C5=sg4c*yu2KM6lD?clxzjzPTf!3gTxA=u6Zr6KPWCl`kX9 z0Kfihn#^nso$KP&(rPV@qf?Boco<bAZqiQ!A&~HF@Ahf$7;@XMm$4ER#qMll(BkIz zd<YZ)GyYssJ3XHVO(+o+i6NbeXVZq}AH0GZvCo7_zv}XKDT!&z^C2>=Bl;1;jR6Fs z{#|hX;=dZ)RIcz8RKzFbD=W^qUbMw&b4_}3ng1gd*6{YSbIq$+r2MR>&V(w393m_| zqndsGD)*0w${7-iRR`8c5$HY<4W!N>VK+NomRe@V+(McPE*&yKKxTz0&k=!pnaL1* zi`C2}S5S=E+@WgIQ9PybPC!0~cK~W|k6x2#k)1Ow6J9CRuF!Jv@>AIm6pSIy+7>Lg z39h00@#_1(M_u4dJ}&S(<QeCe(S)NF=`A=ni@z~}x>Io!)JfgB9FsAC=3fR-r0KnU z!!dlBKvX2btCMkejPLk6_jrUtW6{21y|a*qVD?C=ofutLSFw@lE1tAD<7+c>WmhBv zUbS$c$bY4zU2@rYy6b>fEOe~iB;-(Dr)5fwe2l|oD3tN(w-Y34H~G!|D|Ln@M-@c1 zIg&39KIWgJObH!!4tO@T#1YFw7S%=-E=4e)W!f9%;7y<qs0&lRVyyr%#W5)}g%HLC zdCgDz9LM}C?0oK>!C89qiorD>k}qKKT85QR>#k332ZF)ZZk4_;;=1*e42i{XMgjLQ z^0eRa-)H`L5+n9y^CAbIRds9f01vw6=v%?0(yJE}wbr+8Bw<<x^JQAi%hz5;bx!TJ zWx!rT*Ka)T9SG|9-_0|RFrHfuRw4|_6-ko#3H@AyP+d@JFq>h90oW=U&Ue=HDxEqE zAS1wDC#jLCWC6C~^NZ;NLD=u7J&6?6o#x*Ud+$G{k7%@La;54wQ!ZCZ{kH4;lo6Sl zXzM_P>;z1rC&^xz^%!s<NN<}?c+4yowMcbFBc0qIbtggjk4Ej^iu6I-DYH0!4F)9U z6SqPlE)t>8mz6)`Mqp9^Su-Q5=OG3x`_uQb`XtEpvH`#Cr@T!_OS7NfUwnV{{^?HN zg+ufH>JJ}Z<jsXKB^*`q01wm@=lubui%^#O)hM#*HW-mmBoE^mAn7?&u~8)HlfaDj z=PTN1MIn^q_KTzgF?qvf#UOYPslZq^x0rEY;Mh5TAWHHdy8lQ33fnACoeHp)`GaZE z>yT3at$cR|*{gx5%9_S|NA5IhB-^m_XpmESc^s;PUAIQ~&!g|IA&G2IB4hi2wXXX* zEO43OTWX=G<zV`G>1GUoEE`)gMH@sfdqS_~HSp;*M6Lm>z-+reze?w7_|kDwGDCW2 zr(Edl<>~3!@9diH?)#ssS^C`UsLt$vLEBS81Grq0DI-AA+AXBC<9AvIP1i=gJ3pf> z`<X<o`b163`SVE_cz~Z525cI7MJ@zeJkzmAT1w*jn8;b}>?}xC9^UQ+(yl<&B6(*< zaNlN$-h_;TxHhsHG%~D1hGQ%eQgH|?<)4EpS@Hb2qe9B!NL6({cltk`ZauAA9iMgi zJ)Rq;jsC-~{E+(`@*!TZ9!6O%$U1KF_J522VNHW}*{K{=<S@I??;d}C^!p8F>B0O> zOZC_qv~Fh&kqJ}v@n~-~BRzYLsMs{YK`M<C(@@b;b`~ye>=Wwz2r@Y{(}H&b#o+lb zB1N+=yf5=lWn%@=WzP{GeBtq4`dXqR&}<`A?ce*r3^B4R0|Nlnr7NV!oLupTSVw5M z{&GcqZ!?q+A&xPCuRJ;#dO8QcQzmGIQnwe^NOUaXGL*aO5dDu0H`PZ&t|q4C%m-3t zpibe2%1WbbSGim$X}FQICQfRy4BYi!G8yL?*6E@$yIi7b=;(efmcLciDXzOeo#jt@ zfArUSyH%phQi%u6_a_@6?1r0>3&KAI@;Vq8G@iqz{0U;_pyIBgZ7D+7%34%~1P61$ z;g{V{Kkv_e--|Fq-ap;ktp7e%6N0_k;IOpl{3GyIaV?>1rMyi;;Kn@Ov8_fM4#))K z-f_t^Gpv9#lFr?)wZ?s}SX?4fy4uGRY+wRh7dO>#60-nu$6pBAMThTT_uIb)cq`ap z`6u?<2w>sAd_HypI;nhR-k-1=r@JS%bs{SZ@w}S@S$<H}8;BF7FQ-t&pV&3>PK~L% zt+DfC#ryXAXQ74dTGVJxB#T;1U+^8U*yd35xrKw}*xDauUc*VziZM#eueE-*7&1~+ zHPaP`)N^N)n8ZJRs6KzVPx!ZeBsEEptvYTmxyfM5lOV)M#Lw8{T;gO6)9V?hl1Yq; zD_UXc@VJ(d2oVD<(Jh+BEkTgB!MbyipTh<DDRr5s7PX%si+ike73p9et!x+5$CVm+ z_)fhVWXxRNM0Ubtog~&-GbIE5u1eh;iQwaUywAvG+la>+^568pown!Crd5&)|M6S2 zxnI&CMuqAu@+XYfk%IRl5*5mvS%<+r-*qOpi>~LrAnaJ#%8q;Wp$QCb@iQn=PP2i( zrsNx}8*m2r*s5zDx13N!khP{cznFZzsW~COPM1jrWdjI`D=_f<M(Et10>rQ1zPk8h zdxfAe_+g5Wf?mFKjitLLBLxOWox6UzbMGpWVD2;7`Q2@Oy_Zw{{_)Do|6*AJ@jox| zsNw)o93vY!TFyat;<id>AsED%GEr92VFHGnHW!pR{Bjee=V7B1pEx)egQ{ZnU~w}c z?b2KxuddJA{a)qEG5Bk`=guwZibnr<@yi$%JMw{+NLjl1Y<gNsX!9|7$N|#asDZje zl@sYyZH+ldP7e$+f7zQK1=sTks4hd?n3&`@U{NpkF(=Dh$au$u|GW6`em&{~H~)ii z?BCBRZmuTpij$0%pZ_Cjghsi5aa3ja^@S0bE4r1@U-Y{{EtCBdU}g6uC~xJ~KW$FE zzP7Qot<L0|9Y2K@qihfPxXlSxFKY-zOPM(WaRUrB_UQ4939{b1-<(m^-9tvZKmJ{} z9AbU<dFgZ`vO82{usc9@b=we2hXh$EjY*Qfd#tE~n+432g}SD>`Q|RQ6KXW4kKkAN zKhJunBF~6$`9LjClS(>mrL-*mZ{8Ysf%C0CYD8@@VEm@%?`Ac8m)7-ZMzf|PDF$o( z=J{C%&Ck@WeDXl|;nkeL>KhFg{|jS@fa`PY@E7e<)Z`=AySsV?t(~3q(+-W-*WZ*! zz3Xc;QjH)x(l2w~sW@<AoRTu`LUohaU_hXZrh`th*(_7KT^K^}(%l^zQ1y=sLHaq~ zrD8P{3CIM3;bN^oNe7_|L3IGO{bYoy&9UyklMg=^bN+O6Z~lG7#Se<mTu@bb@2$rl z)bG^QVPa_dN~1E|9=kq`(B7hm)RuEcntqn_r*okk>tgU(t9PdZW!v*WpMy0$XoN24 zbNSAn!@X`oG3QB*>ZO5ZMydbe1_&0;3)*EXncl|u{cxFf4SzTXYKJ{27r^8l_`mFu zNWVx*lWwi68!0TBRE_0in3_^9w3#vDqX^kh2nJ1ii%VeSzetdoPkfeG%5(i{r}d91 zqN|Rf^@1j!4yf_=IS7;yJMwVhod|!t^i~R^cglX^JkhyB&AA5a8DhU~2lruMAfZHO z$Qq@g&n3S`Oh)ghq5(&l6W+-2aTMN2fYXefX5CnN5Mg07n^_cH!&<|0^0m7=YxSd; z9zxiK0KPWYFVo99?DFdd<!mehr@A^!lL3ROHrI&Ddm+wOx*;x?Q~x!`RMZw=@^FIT zs1KsGTbh%6e{%;@x?(Dw0g2}BU1YaicB`{{q9H%QeeaU6Jh?3c6AQf2y?`cnnL zf9115Y|iedhl}c;e;hmz#t_w^<1W)y5Z7YVhGyNMQAr$g40r>zvC0xygqyQs#@&H4 zyx)j%t=63Cl3Vob;&e4j$Ym{HrQ5px<twDGf5+}7Y&!N$Hrx(M8XC`i_G*ayTkz+H zhs)>JaD*NhL)s$1&yL@(;DlM#NWP+IxMJrbQBT`JsnW*LoYNjI7le+<)v=cI85YoG zGQ>iXmec)tjmcMMV_op?AxKJc9@rumXQO*d+wnx}XScP~G<)_lBgKP}7W{E*Z4D(b zvHhHtof10Qptne1xS(sa(`t$Px_~m;$bF*)bThmkj*InC>i5-=2g#`SF>BLS2kU*n zh(YECr^?n{%Gp^Zh1lbDUa)O%_L|qR&cRzu5p<6NM)Q3K0udWdH!-TlPt9q9Dk=p+ zUD?O&IE~*V$12}+(j51;N&{3;Rd=d_mb2BHmrv~5R@F;7gOAM4*VN1s?w);P5khgu zZEa|ObR2^E((skHjKx+}K;9`Er8X|83(E+wb1oT`b&-M^SN!broJ~_kvfiAqfricx z6F6z#e3?cA=pgB|q9l5kEFa<f@a0QbvvOp|Fa4)6(C)H{UM(*p@|dZ*bK!cmyyug( z{#1srCVErgp*cvy9cO}FNfU?bP^)bWafBBZ)uoA1RXf%S^G`m8{%BkJzDa7I9qKgu z5`f2!Vh%BfG~?Q{tN8H6Uc;R2oEy$1$=(lk_&I=cTN7i8-+%rf)E&TUcd>lYHtzEH z4b6il*5Fu`CYb}F{}d*bnnxWpGE#NOwvXM4®bPm)fxk8L6i2#>P#l*nCX5nQt< zn8Rrd;AHV5NJswrv=RA|`S;piHT9MXi*I${SWaus%vX*MIi?oMt@F%*%;zSo@+|LV zw^v?Yp;ARC!3D$ImS?qM)6#g|3pqs`wX{^~i^3Ps1&eYxXEIS1MJoJo#H0W`ARd@8 ziVHM5)$7vl4PUzwEp+Euuu@6$^|;Gw{J17b%22;mv*$RvRTwXGKaXn4Avm=<pOlGH zM=^XUzFdRlxt7tsx7y1(H6xF_Wd%XC#ve0iJ<uMgGj>HLG3nN)a<N}mzir>$;A2En z#h$`V&vu1YHAX`!N+*ohPpJ`xI<iWcqn4x@<;Y1@_=aeDbXW7MsPnRrP?WhgfVbPD z9Uu=2P>fvcF1kNFGXQsxoMnDwd!jxS4=-Ml*RHO7)fxEv>2|i>qUHS8?W4fgb{VNf z@i`Zh7FASHB{%v1obyGM>}iV{pjxqsnU=_)#(s!{mdtn3q8R}kX`VLYjZDQIMLEa? z{b^RFI%q)}5Cji`uOQ1l;&hU9{-jIf)qS|r$!;$o$72(sq$#WT;2^u`IxWpmzp#~> zD<7mbm|a%RR89GYxkyfdbHs?eKD8zN?H8llz;Q~UwKf7X;xg*KUqXME{NN-mM1?;_ z_s8^GVvCXLb%_W*@9EwM8@NmK)g<jniQp<U4VNxl5jir0To8?>k$mo5kRm>Jc0FmH zk()xhQOh-{1A(WC`AzBWM(%7ILAkB*$|T+cIr85j^R)cB^C>b2FH@8=9%+9c@Ed<3 zm03o$Q)K*FI;WbtZ07BAEsY|GPqKAgqT#k%Y;FYaOPT(!?M4kv7`&XEhW4C0nBc04 z0mgmiT5pH6me!V8qoN1?h2{<TzXvd;H~6u4F<)JI!y<qGs-H=9p_P7Yb2G1BIxK6R z{K(xdU3~ifdX5|(=NK;AJUcRUl`o**tGvGwy2{jVIor8cID_z^Q$#HDBF;F&OSIk3 z$8By_?Owc%AH+O2qf!3Of^l$!x7)d5VE>@{_tQ;{AZiuSbD};c?iu~)5@t`i<B3ee z8r?1pd4gxw;i}>ei&CF3K^3=6auc0^4|p%z&3NoNwbfNd8yXGf1eLJ8kD9uE>ft`* zGRH3l=P3PM?No)uayGpbxh21^9-BXG{5HWw)!7AVB}ZE(i`C&a)HeOnsJ5DNa}M!I zCj(n!P^{qU)+Dp!jjDOR@7ZxSk)~)aFD>i1@jvypOiRFH@pZQ6Y|IvQ<aoltJ5(!j z*5FKi|MxlNuA%w)2Tej26D6Ajv5v+`0~CBsxU=0e#ve<aT)$hv#)*m`hp%}1>jFR( z7&H~;o-Vwlf>xaTQ|`8$zt%2{3X8bNg-utXXy`nT|6UHcZ1jk(E~>!JGs*N5v}jfV zxJvnjgk#2i?E`{5|J{~Zn?RJ*#~gNmvg4e-9S-fq;-3gW#h0SAgxG7%{dZT?IEHxr zY1UIldQ|&sz8-C-haYx_LhW$=ZZH`{cRZSEnOw*X@@`3;<~CBfthcxtM76P4QLvlp zSJfMe870{<UI@L2K~ngT<$Ce{S!f#R8&2W?&c(t8RpZgRDd~=sX^@D6;Pob(KpEg~ z*osfMnQwrgycSEN+S4AXyOt@F6V-RtowUoxdA2(%;(Nj_mFeU8Nl0@yESlB&a|9Q| z{u$aJ29;-@QJ*k+PWVv0s=dnMd|gkkT^oNXuDs%rbd)~XSDfoyE!4lEp74jfiyA{| zjcn0@rl_h-l7hp$(ryMurGjpm8YEpIKfTNaBO`)~b~Gk01lGYC3L<{2<W+SP5Ur{x zN=+NC&Z#4<<eW`zZFRI?Fw2I2I<Bm{Q{!LQ`|%0sZyZDJs9H=gqpI7G4{gnflJ2j{ z(rcu}9XwHgPqR*yerw1ZJygfBJ?%H4I*O^IrI-|vfXXC?%UkMI%$acXagL9ZQ=9e8 zu!`ePaVAc*Df3y!I?Dp(M;UZ<*CK*{6Bw+Pn$W#}D^C`Pm4UYM!`<sYat)2htNHWn zUirKjMK71ifq;40X>;k;k`PeF*O!rn&Vxp(ZSYRH>On+=XB`~UHl88TqG-I0Eb*d# zLsf~LyX=51aU6*9cLEvlg3c;ulI6-)dETkRVEi}41)8L-8k3CMkkDh|)wzZ5<=O6N zy}pted4^F~de&M)0-hVsZm3-kJpTlI?O2$8RGIn;7F+%8enXm!_s_U<drlYgTlBx9 zM{<3ejlQ4zG_8q&tqs3Iq7N&O29jn<)3Td%&Qlf;awLaKGgo;n?rjf9tHgiZ(Ad}J zc~(8(7NAQjl9I;pQn+%*`l~^airiP;A71Ex2CTQy<RC$r{@b2$!QDzLs^4x&AiF`4 zS^%?Ho#e-?y1}(b{{~J0VS>ZFnhx7^5Fr$OkhnL-M$+ERFlyk<{KbvB`jN2vq}(26 zFZAE}7J2!(A|()A8djVq$jEI?nqd3pLF{JyKwnHKDZ>ShHGvgLswxrhWW@(fs-@kL zdnQa$;EQwm)j?6{gSh%;mLt>5Y>w~Rm=37U>zywqi#Y_4j+H*rD6^}8=&DL}4hytG zyK;L(6PR7YXT{fMyJ&$7ZfJ%bn~X*|*9sCEKG!>d&oQwifxS8S@N})6F6dIgKgs1k z_9D8Gam=t16#V!<o~|+=%C2cE9n#$)xuhUn(p}5aNJvR{cT0DdG)t#+cT0DPba&&s z;`4of?!V{UXXZ>?=bD-0`j7c+iM*;g<qk@>XV`N8RNITw-9g;=c56WK)Fq_k;^4U` zdb%Sj8%5~F{m$;XpO_qEhD&o9S8}FOLr{cTQq@Sb?QU4EYOS_^jdz<+VXedVRHpP6 ziM>RL+No-rT11gBXQb1_4M(bkgaLOHs$4*2^3a6GOx|~4e3CxppPNmekpxr<`keRa zRR$McxZm}EBn$DsIBIj>x_`o>-2<7S2hyWpn0-|NZBqGh=-O8DTH%=9hzv@&d{E!N zZOPMQ#XYRAi`6y{jUOBp|Hi9Kb2(Uz`zUtZWE>la8lw6A+60i+waHm&kJH^2(Di@I zKJG~wJE{1cX9ufrmJJ_eFuJ}aO7>#Y{3_O4dcJT2)g;qVBv23tldJT*x=1GoPUH?w zB)EhR%ni?SHKYK?a3=o)rb0#%*DjI7W@Kk&?ZO##f*+RG{O#WWXSr~?BMjVmr&ycA zFBLetb=gLVN;ZIBqXg>9KDSSN&@Y%jtm9IGJuh_-svbbJ$5ft+V`Ld0QCkydy=pSn zEOr=K2^8uSU*zTe9Md(q8N)SA@QzsJUz~$6RsJDy;#9B0``NA^BuLWX?ezri2R&H9 ze0<ZLK>dv>g-6>G?2_`MlCw+oH>t28>)KZa&HV{Qm0-KDt~(k+zsx%PoY8M^nu9U^ zyasCDYSLXc^~FW1YOu9!6e>fyh!&KQ|N2H9_JiOH@j^CGB8A?lQk!-v($x$nP8l-a zMeYdi_I9R77^A%SY#|$>LBx-cA5+Jw?Ng_>9&Og9DTVq*yvn~*zQRO@Bh^!`D}Es| zd$+@)^L7e<1u?!g2EB|i!prt^p*@1jKi6eZI9<t}=w1i@q-Z7j!SeH6sE))>;uIpW zgVD@gUR}mIT`^*Le@*oJl};nWVg?*Yy?el(`030<Z?9;XQqnELY!IO_f!UFqb*2gq zdGnnh`?88#^x&_~V65Qeo?8}a3Dle08|R&;C81!*{?yMxylcOGe9uqh4v>Aomc ze}}pWiH*DOD`|q=xT9U)g$mgEChTXL8VM~%btFc=YIeDB<WO{x_>OvXj<IaHl&2)g zEb<l=L20M~i^|(6C1>2S{G1W;o>F*ikAP-Qt@)kN+(PMzKQ;IbtIa!0U4j`rZ~j`F zie%^0utKQqY>6*C%FM=u3+ecup;TMUdh+Q4O}|T*DSZQ{^f`7961BkXNK;J9sLBbc zD2EL~DSQ)VGI?aq+lw%-M-mSA5A7S#r;dgu>QA!x&;ak0H&m<&o$L81qRzAESIPhC zV9WP@DUKaYoS$6o4%Cv=_uQU%&lExp_z;GYm;jFrw7*l#+J1=*;RlSbzhw((<u(QA zriHwVBv$}pvk{@ZGq_&<C?i&41^2$2F`{T2JeXII5Rfv8hzW5z5*0ynZ#m`sPskPo zz<Rf8Xq$X^0^UUCHm`=t379&3pfdckc#0ncZ9#!$laq!R9r(@ieF9r`(L0*KaFPD_ z(>z_y#gQ+~W*?}~G;ylGEg-U`HWzxs_fIQ;nCJDTxDmE>GY<RlvWfP>HsJqwo=+?4 z+2neJcyap#y>MDF!PrIb(6X^UyhbWIw9WF{kW-BW$oJUKB75L6{-#d}YHGj1`nDge zRW_d|w;Yc1Tl@fjt45hu3qNFFmXZ{SU>Pn=T-`T+CVLSWBd=}a1-_Xtf9HL+YUA_H z?Xky4-?6gO(x;->wYZ-Aav%f_o;VBm&kom2mU1L2CZ{8PEcuAM+N||khLp9L7}rSr z02l~G0Tl+YjltWM4_XLaLLC68oY#uHuP^zkg2+?z{+cUd$AC9h35Oh-37G*t0Tj+E z%wXtwe{npq{(N^6y{;!nxu<JjIf0Wn_iJ=@$i4<%<=4MOMV77$FYaAkTyCE&vxiGp zSJlZ5*>S#tngaCOnvBi~h%DW}i~}yMa<0Yxbjr#`q~h-xt!Q{bV9KN~l&U$ph5Y@F zn9ma#$bzMBtiIGS&dfdPU3ud}mk;mcNn#5<ZT5uV(KM@Xl;`oRR^`{j^a}WWet2Cv za(Z8&>DLij-3%w3B`X(hA0{*>Bs9~-HOz3N6#URuMwhCDI=VG1^AVIPlURapUcz%J zCvaV+t-6zE;v2@Ok+Thhbu!QdVzBjUm;Q-_-rQt{Dfe<e5<*5s{zcIBth4tve=_NG z0u^7oyr9ZiKmDI;*m8VO=fL?2wt|_JS%PIb`udI!)3gBJk`^O<FN0}3CFT0Vv!|AB znUuLK2C!ibIJzZ=#+%&60+$x8IsS%cC+troIOc$@u7^(dW^!i>k43Nj?%_Po#{2QC z2YPGLg~jLP6i*MZ--XuxQn-0dZfK%#AGxfBTIb}t2Ks*Ys#%Q4DM+^GOx>VierLS3 zJsDRjv7>~2m}qE+75dVZyqTDk!&U<Xl`pyL+xUs#K^+t21SEQ_WG#bVa-&$Ev4Q%} zsWfXcTwYb+38q8+KHVB5Bk%i*p3{y$FE`10Yu<OqM3>bst7JBM{JkmOw>P^i@-s#z zOLB0J`SnzD;~N=Aoo@dCjOKmaFMw>JKODPf6Q<86?kf8M;1z1QRlDXHau$=#KTqeI zyV>5J=L=#f;%kjm`6A)mf7V4_ggj0m9Wa`2pC@cr=MxVDjRMlcs(t}_@BRIju^kS{ z?fJgNSBg?i_!<nb()vkDW#^+=pw$hI3FrKIm}YP`S=O4SGA~-)y<FNRCW)_`E`PYW z+<IOsqnCZ&L@~i<e<3VklK<r@nEJS-RnFz~tl2U}z=a|Dp)iM!bZ!z=>}HInFPn0s zx0Ms}oCn}RVh}rk_nRambat#~EuEbl6KJ!5{XvsiY@(m>eSWNGZA@JaIP@9xHbCo5 z0uo)KsYz{qMpnVopxE)B=1reZ;8sFgFi%#<i)GA!n*33tO+|7tUh<(sVoQ_y<7UnT z5QQQ0%>4uMmRUTxaa((1qt55bEtIm_+EnfHf#XmitMj@k(uu-MXB!6$L#y%bzNJqs z-|MT1n&Wf%2GSdieXtrb+;#~@@&<vfx+Q1<-x<twSs5Mjc`xMZPnmMt19iF3NR$Ob zZ5&kY5iaZA(BUWnCXiGBea|4s-f+cCxZ+YG^%Dr%IU*}7KZ+}lCBA>(t||O(DWkF0 zE*@{-yq?Q;OEX<^_(4b6@pgUwPZZWlZ&DIfwNPSKOVbD!e1I@*69VVl^Z3)j($4f; zo~d`ED%7x^hFwuAGK0o}yRLenXAc5nfw`Dk06Eou6!<!CJ24M&Pc=Z6>?As+bqvkx z56UR$jS}EHDC(14!G+LwkgiZ&_tVa*G~axSV1@kC880~k#bS%4K9!72N2S!*kmX9k z?8{eNz2*9`_Ual`^yB;Uj`@mHh28T%p~1kK2P_2(9SdAV^FYpKulhynL~9Gk^bU)C zUYYc?)hKmlB@Kd!xNaGibcwvMdW2E$`H0+{GHzi#6OR0nieyz&4A(riM5-`dmb&X} zU4h?L-cpYvt4yZ0Q}Ca_zQ7?gNI~&q4AA3O@JpHcrZOrkk$a{t{LzmM9RU7p+qQYV zWB-;j_=HjY&`0mH_Lqrk_yRF7>wH7$>`b=Pi-w+FC3Mi)8sH?f_=m>CGHw6%*pRd4 zZ^#~bE1vDVI4Useu!g%sIk7s$bJDwI_Qw0m8F}S_C^i^wliib4W0!Sf^u#RtS$U<` zC4y|hC0AiSc!C)?WGd3+<t#3;0M-I1U*Ow<xNO5w@DuV5NS9@uEB;c!GXc(<`?y@7 zkYPsl6h^vhY3ie?l{)v3=Hdg{AKi`*(pCr2457gN#_EoU{*zH1y`b~ihg_LIjZtYZ z;L=1P{BmOXdbRfvm?^-`vBOfg%7mrzJ<DH-JRoejUczwgcBV2Td{yNu@Aa@U-b(l= znV-QWn~}r$E4R6Q-R#(;dGm-?UhR3HwKn6U55UKI6l$E;3zHX+y##F6U4ObX2{*ci zPZ$mlDZMr+JD&#F(cuwcc{#P!Sn+AVA_>>=C9o<pPr#OylQeNgs@uq!$nqJ;7;iJa zJfB`SaoX;V$QB47=haIO9E!tkPV!z9tpU3<4mi;tlvQ$it|>E|re>fq(hYxX>*Re! zbH!~q>MyH`%Xu42&vH0dJPOwRt`Zn@fml$o^%bgUDQl9Wbr3SSR)&6+fc?Iv2x!o6 zcZLo9R{`kX+=1V$ca@#TQ*A0m*i$%TVtE<2O&07T2@@%dPf&j;`#6&|;G>gnnP$9{ zFBCQHZtZGC(JpYUjyJVoUO+jdt>DR}aeZnIQwVB&c|c2UD$7sre7BR+p$Pv?xOcd) z>X(8C!H#YfsQe<|nrRf$9&Z{{Dmr0_u8YPmALq0@Ngbg}n}4%!yP7?ruZa9t+86Ki zl>k0^+&@x@$Kg2M?h4d$psea5GDzP_9<Z<w;!B5NFjlT-$oA^a-TR$-H*%&H5;V9P zlSDkPN&C3*IB!{Gil50<sBL$Vm0~C-IeXx~R5$BtmdKsVK=wFH+$b2Xsz6q|=;+J3 zgbbKl(6QT_7$|>dF@pbI*9kYvj61e~4%fjaFAWbx(RTIffvufvo6&ABv9qD$NfmQ* zeW&p1<)|`L2Y~|i^$1~pzq}#R;P6kK!n1WRm+z)JcFhB!6I7r8c;-t-I-B{EzcrMp z)0~&Ja4v=^RWbn%FQua;^E+-<N)MU&3Y_b$9o_MC7d4!1n7IxYl1mR|uXW{(Ilfpw z2RLH*-$yoiqvW-92C~$9W2@EBAqzWHRN%&flbi<B=({giwHCBAiS{v@kyV-UWPX;u zS>OMY;U#EQzqb9bd$qNwM=|{K@$KJzy5W+`-fxT2chS*u58Wdd9b-x~fg_)7fjxA} zfOk%2mk;$S{Zb~YWEKV0vs;_>sS6c#vcnJNO43o`D|bts2%GWY#<g=*%q?qfiB<^L zkXmWA-KVy+;cqtbJ#LC(V5;+BdaGRiF9mak!f!(B-??KdC^dgp-6;t+1@ZVxx#2T0 zs&3FXxo8U4>O}&D^SgWdnM|9SwusdI?EZ5&n?l}vaoNMC9iPnZ$j=UJ^VR8xVa*ht zQeZK$60)Z{<ugou=x~<wQXL1Ic{M&~$u_q9fU6L)T}y!!n9~3tmxXq~&B4b@SK`|q zLs758gK^bI>Y0q^Y@sy#Aw1c8Z}}kk-@&7N%p}zUC|d~vIV-h%AJW%`?0Gz)=c{sK z8Na>{l1cNzxu$May^W=lsDz1%EIFFkCFJjV``4&v!OD3H{N3Q6PoL~qCDEbh%S*TI z4d$e?94w%@Od`ohx8cLv+_)|5AZLoVYTaO?%gm8mE+9YIcHI<MvRg`blR09+&g174 z%4`$OzGGeYgQLKw+9)&2-L`E8u|)30%c``b`eN@n4N05L{#iO+&`gx;#xT2pm+VbD zXUe@DacwtJ$YlIRyg?mnqOy^U*i=T)?8Zql2%FRQ(tTsG<f7fv%<hcwRW;pcyq~>< z3ZS6t2YglP03ocj91(-;<#dEeb~_FXnVN%yLX-gi1qDyja|y6crCRCrLn{OMkQNII zbK7=PAouabgS(emg?#S<@c=6SX@lv>f+iD-8lD$TJj^9;F=emQuj_{kd#4v$g>BAC zx2LNM+XAk2a}yj`o0YS;#%-jDoFeks94orj&PkYV{*8|>Yk5vRM8m{h0;)LYS0mXT z7uVRq|NLbZ;?qsCW5LD5pO?x%54$%R!(-Vmw<Zd(aOTl(DweY(Fe;<u27rMFto9!T zOCirO)%i?IfSfTzB75p@6#Jipb&C)vG|5m~oK&~bG5gPF$<oT^C*d}48iRjk+z0fJ z`FRB?R&eSN97$LaO3sZf{(f9n6cTPMQ^yeDfAnuF!uht4#s<$<Xm$h7F4>w&*1u`_ zlkprzAc#D+x#{d7Y?#uI+Y!FxLv3PBg*35nrQdVG@Z$U}`G4C-<}9|)SS7<(S%hZ1 zdNdYMi1-@Y`-@|gJbf8on$hf5YGl(K%SSyK)`3_UG0~3OW>XR`&-A6yACa0)_y-Hf zIfMJ`Im_1t+Ya*-_lioo)jqDq6}@qo#(FW+(VQ~bSbtDUM_l-~)9JOll-pjaQ;EB- zo@xn{1WVR)0TRML2eb?0&~Z`((wE!D*B_q8(NsESh{jQI9lLCvnl?SJU;FrOReF;K zQJuhufXGatN7`!O{pjaExWct+KO*og)r)JE(YTgP6brbJd(4V@b9#LH<X38h4DCkt zq>WbXiA%L<?z~HK<`akWzHYk4PL~6(2+<XVvT-VkJ^kj;-pIfv3}0T1oO;mX;H&T; zHCpnfk)s7fj%c{yYaop!iE|%gpTxufZBB%k2ph-wiN8fFwy&uI4k8tGNT@+Ho2}wM zx2P`YMgXA;X^mz2Vv`1)DV0y(v@492K6y4Vub<)=fDab{l?&>z#=Oc`T62kJhtrzE zITuZRJy_Up3ZP`RdAk1GF>&06oI|>L6cH6bjb-QgDvl18U54SLpbXPk9_zdMPb0&O z#?4LWOQ+k1j*n*7XIoY#^uM%@<qQ<d_jH)kf|5GO`mR@Om6iz7_|I3%B^~-0@In|? zan&>c=+PG<2aK&s2kw)_!|EY^MaX-qowI`8kF{^s1>5t^o?u>Wt?poD$L<911ycBG z{Pl$xzJym-J+67pgz?u-a5<u4*;?>sKcJnij^lc_4Rc7}fNxb93M}V*6_hsZswK*| zfpzQsVcB+Q#?<(|KPudgg%A?MSVlSZ&cn`Ek=1vja0dQtcG_+@F;kB$;u0Xh83oMi z-!B>*XaCY3uDW+1uKM`SGN_WsuK>6s_l1`}dk)b9+7ue_Sk@n7biBLIV0)Y@M7KF` zY?S&<IGQ}ltD)yqK`djSR?cF!(G{Mqt!ipSO@qQ;?9^#r!!_so2hC6nRjW#toO!7A zVQn>@$C+S^e>!IxV)ci3AulNrwBaz{Zi~Wzp9DL06Kw2{o^8UCWJwcJ%gEEUe`20G zIx7S1(mta0gYBj$n&xWbhM!p7S+90Cc$!9BlkXFwE&&N9Zo^Yv6=mEi6p&patcpYN zkh*lFyWetq_7mXL0cFnHO%J+*>owNOemkPVtgGVZw)Ebwpklz2SHiCx5kF_ugoJ-t zE@~J022Pt;hp=&TZfT;TSvr2X9F%4>pjo?P4O{iWcSPfjnPMt4Lr#D{S5PANmFZSy zJw2sa(ypd^Dmh#d<cDqf!~;j(PZWQ-(&|J&tUqG<UP-owc-HzVULL5vaKN8u2!ZF& z=g(~<@cz#q2<!b?==SA#*Jq6`)#v3<kBdt`>qa96;GmpSf`jkGY-OLvb#3S}wdCNY zZq(9k^;Q7Uj5>>+FLC(D4oB3ZLI{15xp9YTC9On0Tpe}QE;6^rKfYTAv!S(AuunR& zVjFh6SeVm(iZpTiq%c7Q8xlEPm2C97khNzRPt#M1VM2X}WI<0<tc%K^`w60#j^F)0 z&%4kITYpmdUtFbOb*FCNFNdxIR$PFbdex2fsXFhhw>pAre?v7{ORg*uT$nP2k>>Fj z_Wa=6)T&MC1DN`+r5%Rv{Zy*%PtZG>7&xAal1{8K;TG1nz$~o>DSoA-=Q5m73;3=M zhhd?3<2!EsAV}%?^yaVr^I$>_XnAUT{0|$s#Qk^uh!fG_yiW6<@y)$CBvgGtDVkGX z>hR<w8?_B<_(o`$nmvMz=YF}Ia$bI=t&6WN?jff<d{gbZEgFERXCAq0NBq!&#E>F$ zU9l~$tEZq)Oo*CZ)aNu!G`x51cR$sFrl-<+DO4xJ?|JvS{5?3vrz%&*n*3tdH-SSw zcBm&qWchFeCXWQ&WQnjPo)Q|cEJ#OTv2XO9$C%TKUdA|NiTv2@fl7w{d|+FNQ_AY7 z|D{oSva2g_9b0W-uA$MeSX>QdSqVMhtVRrz)<CjgPgMjmZ_U$Vbocm~FBbDB{cAQV zM08>CK^`hx2wr4QQe7QlB63>vHOavIOR(!%!68F<CQfm#Kv7NovFxmri@jE+T#}di z&AOZ47s{~41&(E?O8yIkEq26@(`)1VOYzNtCo!Ybx$4LgDQXHro(~t-jIng<?Vb;| zT6y?lNU!!b+_&mwBIgcP2Et}6HKq}>?P+SZ&ya+QM_kK%H$(h*ZqOa1$?-mG&h`gR zPPLH5CA}yk-!$C)$H<=V@+NQ8hqpm^;~oRmls(@dxe6pnQ~7NhY+T-6AbTc@^5(Bj z{m#8Bw72tqhWA7mK>$ZTs79fi;q#<9=FYjr@pM(Or3^4?rbyx+hcBdt)J7OEH}>m% zZAy?m1_5+xJ_Z6emTPVM6($zn^3DN~=<5eAS?SA+zG?TTgnS}?^J=xeZs?&=sd@*j zDVn&>I$ueA1`<mah{cpf!uQms;32rfXdTG)EGQBRJ@z!j)n|{E^phn_k*;ZSb){>r zT(#vk37K6ihQuu9qdxMWJ5mM81C+RlxMcaC%%T5D1<mvO%fxAiZ>X_}?IHsI1W<M0 zkm2B`Bb2GD3n*yL$>hTgdKAI%z)M+j>3RH`13`lAj)Zbr$>#Fq>N8RMmY_kZ2mqRE zjJCnG)!t63Kp^YU?x?2G`0g0)HP`pXO)&<XPMlWV#=}Fx+)Bm*Yq8kcMlD8Mb!pF0 zIL}<|tjX`%PVgquBf+$;jtF}uQHkHn#>j-muCspZw)7z+H*+R*+SG&~48Q9LRkse? z`-*-pxnf@m^#j6e{p(dH{8_;@4N7k(8i-?>n;I`1LsjHikjj)hEX0L$)~IIRWyDf$ zgxHL>$>ZjHyNJ>4OEIeWa>kfh<v;zj?93H%mgz62Rd&&uTvXbp%FB*hIXccm=%}KB zxGG(V7=-gr4!gd8wvyNN({AoNflWHIC=*0#JUJBy2cf+~q7y6JyVL!H=W_Bpq^QM~ zjAm#vcLu+5xNeJ>1RqUoo98yt=w)Ef_mcqc7@bXC5}HzepT0TYbJeHh^q9W4T4B2z z{!bXN5Hr#S0I<rZ6KJwC)|P@=qROT5?E;GeOOmFOKZq1BH9*T&PL=mhxRM6fc5Nno z?!6h!HfE9Bpz@1R<oTZZV_lT9Ew3ny{}LOzvCeh-$G0ei{-?~wZOo^V|JLwJFF^u9 zqV*|ONEc?e9{ZlF2ww5lrTK&kEKMY1KtEE3x9F$aoYD1w#X{1f&vDmUPyE4Dj`0d9 zC;EI9`NnVpW+~lPaHh8HPQS)y&`ghP?8R7V3QTM++Nz)!hW^Rqh2K<l+XWqv+Er71 z7OdrykL16@-7IGG9;vmj8%Q0oowJ2sB1W3T&a1-ZNSlcy9^!Akqt26%Sd<6}L8BPV zkSF)q>)#0$z18twAa1GF)*o$DTB*tIW#SUQQ~jq|Sp=MFj~<iPM)-we?<zf_Xp}>n zimLEMg77|0pL0HwGP+1=r3!L}V~o2u)gnwsPTQZr*t|2(W(zLOcaAo(f(QiE=mbh~ zH8v@y%r%V1R$Gx@u@B0{gNsc#{RjgrSE<9R%VC9tkzjo=1qHBNMCIM<o!pD@!LIdv zJnk1IOOR2^S2oJf@9k_g_js>r1tJ<Q=g+Ab-3lRz9W$}7X6#N-%^(r909*9q7sO~R z<bq5ah3Q3e6}heAT4$qf3ZZ**3<LUPEclT%4UEsGkQnM(bjs&!D%4A7gJ|4#jqC7c zx33>|+~;*k@;)}c040I8%ssV4fA>*<K0v1Cr@2(7<cG<a8Xnuas4_R}F7z!|UxNlF zFYs8d5efPGIqh-4$pG7IC)5k;Qf}jTXQDK>yxD0CO*(ixi*&^)bz=zej~od(94(FA zhyhSz^XJIhk&?pedAzhja9mX-uxoZZsKV^CsTV~6@HJQFA(dn)eS*u(j*x0LKp|@V z7*TdWGc(S9fbzc49-Fy<fbD$Cbq;KcPl6tovX^XIK_%+5hMO&8tWZL+$fycT3KZc? zO~(QrjAa!-_jY=QmVcqfV&DkV#g0_<#fMB?F4anGIsW}MEHE{NKE7FtHnaq6L%Kzj z2H5(o_IY~vcV(Ikd9}(h7q5tvzND4fk=y=`jz4}}F2^08Owb&MxPLVBt7#j6`7<Eo z9kBiT{U_B&bGLd{9AUIpDrfZrUWv?PRaKf60gc7wO;20>On+NutY;XYY?_c_<p&2a zJDn!3N8=8o$y*UO3~d!5g&(O|Z{_attGaV3A=Iuch7u6WY3`{Gb3l6_I<V|=JE&Y) z45gGzhY++^Gw@E$37ifAsU)}1)vT?V+S+|F&&q+qt6Xruu)|4aslOe}{cPuPp(5`E z-}GIq;Crb98qL={NhI^m0$+hg9?Fy$J@1hI3BN9&P&3jy_ArU<;QFcqBNY`eX2hg| zMk2XFp){(T6{L4&DXu4<G_7ZIp~y7aVBE6Y@}(<#E2NdYZy$rhUMe~yNE(GR`gu;L zqoSF)9NeUHfImAipJebk%OVhME_qxE>tV!U+IH?oppl0eQGZ{M|H0buhlop6y!BG> z_m^}GH7MtqZ5i<yjn6fQ6)gzVKIXbQW!8ydM`gr4t*tZP$C3V`QuZKLhq55|Vc|_| zKEgz4H*9XgN{?9OUAMlQW}w!FoCjh5CPv0DJF}w@OFeG1U(=aHI)tngaVPfa1sdH^ z$VKuI7yf-~j4Pw-{K)vz@&?q-1Lc?@lXi4kDw;%?n86I;MRO%A200yd#)6HUMj{E9 zp9=1Jb)90}&9e1#37kM2lC=1xvXYJJDzOulsybXDY%~w`LB-Y1C4mPP(RibYkk;Xq z?F@-0!~7Jj?N^;PaIZIckV<R&)-ko)5y|q&2u8N2lg<#xfrnhHOUhhv6idLw7<9rP z;1(D-N|PlTA|dDaCi=pc!IChEKeawX7ilwX+LA{!QB2k#fvB3}d`ss;$Q@iAeB+D) z62nWKI#v{=8qz$7nFya^dn&#(nKYi*__VbPUN&{CQx}z9MB}p-sO_o*-wsn)43kx4 zJN(mwu8QVj(l%2i38@`sJj=BOyt3gUH3DKX9*~3E)IvDUp%f%#t7&}AWvUuXEAZ<5 z&LK(Nb;G*PdJfS05ohP?<tM5hA{ia0JtkZ~X4S{>FLpQtD9sM~wcTORCyj1_2XEF> z2kuE^wWQ4_vSfnfYesA9oNOZ@lZ;u1QS^vf3~r(bc1Et@*xwC}INKYIG6pj63&R%{ z1DjT#&2(UBhcBk8t(G;JIRqQA(SJqGHhBd!+)ynx>3TF*X-X3DCLbRD{SP+>FRy14 zfiJgB{d+srTykI?^S$6pWa*}=MNvn`Qc&PXqTzZ~tJ<bC+AFTfxZ(5EJu^(w)_wAH zvt0S-4h`n_TiMSl@du&<C)%SQv(+DZ+5z85Y)8oior^LJsctW<I4iY=J=BugBNrSN z-IX3nYO~Gak}bx%HMJV(y_$D-RxGQb{l9Q$tyTi-&{C?p!^rwAaf-!0@X`fY0E804 zel+XS>J$?dP-@Pn3u!K5{t6l4vZ=6oo7i^9H7{#=uP#p=^NqMHl@$!nHK4OJ??a!s zAu`3xw11LR)9PNUph16@|9WHHm{YXwx99bIo|!fw-}@jiHq>=OhHVWMotl2hwl_A4 zA_4{R+N#3W$kl~x64U3z#o5})g{M5G+9Dd&YFDBk8P<j#rUG;vYHkd>JnHathOIUE zi&=O~mhzuGx_>3DvZ6*4H0ZPzeo?NYPzK0Z?fqUeS-M}^7_0a4kM$&#a@hr4&GJOU zI9LtgXO=;5K;o*jFo*7OPM;ajI9HK~9{#JoYr1*dI>Gl?C<#lgMlh;kE}+IR8`NQ) zhfp&C#0n8UC161yvn?4ohsL5pYj({NRw?QalLf_ZR%mpauIuzWHGm1tCQMMDKRtG@ zO2hI>aFn^qZ~uOJqB@rcPelSL9ttR`46zAD!Xhw$Y6^?(M)E}4y7I6TT}>xgi|tD2 z-Am7DGK(!rh$6JR>$K*X1^%fnvLq(Q{{TezJ4eS)#XH<-zC=m8ZmX*@L6uh;Tc%UY z7>+P!JI~poJe$0XnXEl9qbf|4)`s9XWtFBaf9Spf1zZO&g%ZvK%)Z8UP2zPTPcCas zG5A7P`5^YWBwz)EIvNiFRj)T{^jH{fN+z6=o%3|K<_e9NC1-2C=&e_R^_}V&k$3Dh zm`c0SJveZ9b$HC1tSdSgaICh$v*s=Y2xk$mf_|$@<bT5BuFBCGTPW264_d<Fx+w}` zhm6lTz}^Rc8$}2j*=V}R&jQOWB(g#32;3?+qMU1ZITX3(i)Jgf7v78iDkgOUgrL6l zY3-IdPeY13o-J@`=baxc2U0AJ37pznWq&X6a$wMaM^c+m_j9ouzZ!y$)(V(sPU4D& zy|n-oTb47oUdryaT&C+YChJx;&um_z{51qfXM`32<N?$L6Z_^^4Q?W0rdEj~Du)vM z?E;<=%)Xxb>?m?<kBW6H_CnP0xU+2$s$~^MX2hZh9*=PHZ%6G*_!3dWIX$0V0A-Hm z{O-<1dC~Zgr<jFR<>bhpH&z3js;G9W7~)*$eN`kLbhT4Mdpk+Wrct$pTN*MQiWtzc zd1K`zvqhlV1>wRdZYPi=*Hs9=$ac>0Li3jyjN@B3nn9ZrZGh{{YcBq#5)F9b5iV{- z2er0ewUmBOQH%b5j~k)fOruQZyiS-Ype{==;$zWfT`)V%{phoq@}h*y{`v6G@0fCn z_sb4P<ZLDQ4heD4IBHq}sU4x(%(2Onodr;Rx6Mr{czef856`#*mqsn;;UC&B7jB$R z*GxmYVqUXC$U$}0m0h>AuzTAUunT<I3K34n68a!M5;<t8^fjqzxd>MN3%Gk5{}0oF zS4fA8FP%F!kOL}D#<<`VGS3~rLci**p7>LEL#BTGwp%7BK+oqjMSyjMMF*VmIU%jf z5DK*sMo-3Wm>V{1JbFjY3bS#9KH2T><0=oL4nwJHXj9ut!+%X~5=?qzWQhA2Tz_VL ze22SMEb~*iQ`&%f1zSz*?i&6zee#`u_fnlI_j8i&dL`E^M6*xa;h_#_kOZiu8HQU= zd$25R!pDa+adkUAH-5jwir1y2EUEjEmmV!3$Vy{~eA24N(1yEuF169_XoB__^C=1X z%^-pjptH1KCiVV9`pfU1=jeQwwrY$m(PVelArl~vp<m5xw$G&5&yw*PeK<jE4qh&j zf#~3<TygBrOryawD7mqeLup&r)Dex%bLgm3mkb>6m#nDIi{B9;6Wiz@z?TdKtMtM( zUAqtQ=r9RsmS#zC?V4S!>-|mH#z&^^L^FP?+;<;oH-DSeCd@Hrfs`a5`Qs3P5y@cZ zp~XI`D&G;sX7ekk{(YVTI&O2;EP7+`Hp<8zx_*?J2B!#dvy#SJUD&_LcPqElXVarQ zm>~wFXI=UZ0n{5bG&!q{{%XDoWk<P2n(!xv9Fe*mJ5KH8C93d}V!3WN<PU7R4kIA0 z+kUKYb&2S1@Q-<%-v&md2_$8FNlW!dgUW7>__l1ze9>FnsiOYtt{cYCe{;+cQMO9; zk!|}nQpB(6<{O#cVHVej8xH(IJj5wgsT158bz+X7vwktMJW5*uA;XqJ&hsJ;|14ie z9nPCLoWg2%%B6teg-93P%Vfzyk<z&@R5q42jH2unYRc*&AuzOSJ$5yL<9<wpXZ~;h zLbclzsSKj3voC!zJ|bYokdl%pNR8^QH>(sl^P@K}wWE$L*!3G~sb6ociG=iqDFMJt zVatq3{mx-H%5lyN@5a#Evq}xqb``0a{|kB(<NoBuFn8BpRl<V1Is`z`l@Dw)-spq+ z@6VD$#gx@KL(r4zD`=j-BCDPP5=X>x9p~Yig_T;;Mx!caxzDLhtM7sKY%v(E)%lrd z=ES^go)hwNSIB<pmKDEaWC{}G_I5P2!Zc$pNxzMSPIymY3m`G4PfCf<NjL6bGax}p z7VZ7~xkO{_CTN}5Ns8i{^BOpMh5-^EhI781!jH^OO(WL+7Sv-3m`nmH&(nyAIWgOi z9s|qVMn#Ai)}+XrT^wrix*2R~SoIFaMCMS?KR`BNN{Y9Bz3pzjfK|(YlV*HIy)q@Z zpNvBLxX+^_9jRXEzEK<pQZGpWN&1xov{cdQgyDk|GyqEYkBm4755=9~Fn`$`c`8ca zm`QiB#*>RLGbFmYAJJ{f0=(y&bp(_EGg^lT^t-aPe61Qcq4xVj2$PfMVhQ2l1}=^S zAdEArl+rp{?>$An3H=}A4JH(_sElyT^4)Ii7V$&b^>^=T3@~d_y7^V=L*MGyvC=yg z8gMTg;LD~wE`R;XlUFlyP5ik#Zt3(8g_MN2dM<rj(;%piDWD8qm-to1`KcU8G?JX! zYmCG|Dg|=R?_%BE*2pz}RQv$~EGBBo!V@XTyR=ZL#cZO$$m761DI{i`k2=@%zv>0A ze6rw@HMRz_ug$SZNGf;`Q-{2i)22sZW2QQdWvFGj0P`-r)PCZWOYn@Gw9JQZ&Z7mF zSo4UEtW|5<3=$F2#!k#JCE!CKU=CNrXS%XCEa-pV`E*I+?svwnudmbVhu-&A@9<2j z!x1otBsjSxK?0;PyHX0_>&tvw%9K*(lL`rJ23g5ZJ@tL>#poD0`9n2`MlZCcaEn}B z6`<x*L!dvj0L?CgYE!30zb_`<`j?_O4=}{n2ogHsXnufJ$!Ro)^plHft&sbPf$r1G z)L`-V?qmNu7>(NybRb%VeB9C3tjhH=6muQ(K>5my_2U=xZhE|V(K20)GTUya<oCcf zZoI)5CRA0HwK5VEK}tcyWX7`QN9`#S2tBY)Iy_tGW|t{~jpAm-O?!~gZE*KR`|K-= z2K?ZyY1_b~R0g?H1@BdyNZ1!iuO@5PQR8hoTSlD0wn%Nba;R3~S4dY-oYp)@AB^th z)}{*wnFCX9oD2Hl;`4iCq{P`w`m2g(PDVZO{xY1cC81hNuToOqDp3I}U>C2d`oOPO z!G)$NSxDy!L0B}wM(Hcm$8LgrTsj1g%%$&+p(UhSYxvga-HOdUp0WIGXLV9kOEeVJ zyZ5+l*O3`6?cm>S`X)pFrTa)06$3XT5_M73K9d?)8Qb>Pj8Ft7jD*Mp@iK@v*%~?5 zb{y4So2Y1NQn`_R^7n3<$$5?!sYxZCfS1R}+x4xNpXw70-rEwU_xKUBj8S`#O_OZ1 z)UTKecN;Kgy_Gnbcb0~AO$}x|bFaf!B{GSFN=Oy48+j?Lf>L<w9C>|t*ir$3rN(6} zbhv3PV@<8dz05}B!pq12IQyQ9+~>?7|Cl2t)xd&FWRLQiW5k^Tk&sf1gc_A~+UJz} z1k5YOD#l+k_1TPTw3nP??Wo5$y%Dp?8U3|iJPsy!DVO5qTQ4j_ngqe=u?58@dV&Pv zS-Pi$X}(d?m<{}jzmjsQpjr`L-<aH_c7|s@mRnT#$Je+lme02&TR<naCFabu?7Acj z+xJG*&P9nmGANcZ><pX8f1kX5$S}ipFy=f+YnZ_}<8GWut?8f0f(Gy)V|Y~D&e1^h zgbh!>27oh_cE2TaB8XdCxr{f=`|0KPIVyTNT8Q~P`-o0YgrzF8EDQ;b+#S$CMI#j@ zjS`#6FB|2Ri}k5%B|EX`%Tk+8R<@oy1GE8$Ms518c9W1oz+yKO%LL297!hG9m#AaF zuk!JLkwp6U8_ID6p;Y;(dAo1b`zt#1ZYZqBy6tvgOgO#S1}!m@T~dqUFcD+e158On zrU%&HaSO*a`>E3U?}$qf7&=<A?)1u-{_3~m&UOT_#-l!2z8;L3l9SO2>p{{75r2~u zlZG{Qbjsnuk0DN<w>roMqSz#wGxms9S;xF_KID(6+6T;p6q@bn7u7h3JCpXGyrd6J zw6MNM)oJM2{mJq2J)vGXfonN+rav8NvR%KO$9U&~uTYn}FG_;#vZS66MgTc5YzzV? zU6}^#R3|cGtY>=P-QADO+pM>HJzv~!Jx-^+sVClmf4$I<4bwf_g#aVaU%XGp|9p7i zRnlBuIbKY#N6@_>g$~aIPY?=)Fq|5SoT=zJkd7}=E<x+0-tkbn*s|9GDMpnlf-e<T zskXX20;C~9Knw3DsRK#%A0>;inge^JVihub`1+i>%c)d$Bk?!q{VBHK>&=md+FGGg zd*_?u%Mce<YG{7Azp|<%1I|y($5cFF=cgLc+ydZL?8Vd`-9<b133?wpD%k~M^TJ|3 zgURhSY;FR>@H>wc!R*mJnOMzQRjpc#{LjK}(6XNg%CH<6?`RlW`!+3=-b+r794oHB ztn@WRGodrQ!c#t?RHj}6{s@on$Tl>$LP$^2j2-NpwjD=^mtf@!%~T}hYAW^|1Bt6g zrfoBn!Dpcb!;@A=Kp(*}2xd4?9Bnx;^`qa+ZFVmik(V%~wCa~O@ncz)KbpH)`;FgF z0`_=&d!?-s_AA-pK3zDUt*&u;QzlarzZPH5k(<g8gQu&TXwC(NBSyv<>-nl_9(PRD zpFrKV9~=*%BThc8#|SCVU;NG>4tpMo@*>iWp?cWB0H{+(jWCdhX`WC8;hgI?`+X}{ zbkP!|4@z{|IQf^!b3q3vNC#nQV+pNsH<F<$pz)WN5oVdvMKg#42^;x#S?y<~Xn1B& zE9ASSVNEONuVi3vDi$?E-ms$(jPq(H_e(qderFsJg|cJb1}3Uu(`lhZuM^VY%<SfF znFLfZp!^LSpq_*v94~0DHJCe6bS+YMFGRc9cC3_=Kr#=klcr6_(@@lE_6b_#6yOl= z7h!GoY?2JL52@{&lfqKJ5?3SsIDO0KW2}zRcl7L?bKME4h5*Z3UIQwS!sLU;{2O2M z81`3S3+k!k?F6Hl=&f%gnH++M7zt0*Fol@WYLw+?n&|dyvd*9NY=Z<;8tK2$$wCXl zzS&dK2uom-z+@dq)s7Rd-Kgg5k!mP0*?<a+w*&d7Stfd~w`|9MC4B&(mbd=7Fl8PW zY>*{a{TJzX2<a3E*opcq@vMx~g8{~<h<ST}1DQQI=~^i5<tfaB^2?L;_g(d&*({kw zY~yzRDdylf>o@9KKXZ6Ljp}sVRzZsmH+%ayCUHh|0`Cq6Pe$+s;PZQbCG~Ji!{!!~ zLopQp-aZULk}G|EyL#i}U<>BRVt-#Lsx>t%DvQOcD!+3}QFVwEW>Dhjp>a))Yv$>( zv%5sv-IRc2Mk7Mk;Vn~Wj>g@2(64<yoNr!5@V#Zqc#o%<%B5{^iU`v?tNa5bgc*gP zjzt;<K?w>%+0UujwTe|W@BYcG+`uYG6MuXFUf#aT-X(t!v*218ef8w$#dWi90|OB~ z%|ny3zXM?nl}r%n=>uXN4}{yc?`wrS_tyPq2qvhf)@i?TE&9aO3qs!Lqddz{#t}e+ zgkNwfToA<VKJ!L;`*~g{{Cpb}SoGmvPTT;?t{%~AnZS3noWz*zC|M#_;>A*P&33zR zgR{mq$s%JFC+T9@{&CrST)CFM#y+C&hTjBpSE<T%JCbFc<ZJyYcMl*0)3pytLbcsM zB9`N$e~>bDF?k>4P^oZ=X?FM$HH)#g4<9l4<6l7x-wyhMxn7i>eT*7}4;5*Cc_S;K z){+VxGGr6PQD|R&%fz=DX4E3Zi-I=@Yb`dB38tv4heP~3j^BjdTKPJSu&es5?i@(; z27`jLxXO^rU}p;M?la!dF_cv`Zts6r{bi4U!<h?Au^|JT>A?Lp>2F`6&PJOUGSH&p z#J|DLM)(^f%B11A<-v6rMyiWFs(cBi{nBne(3#nAzoM7(6Lfs%8+DmKl^*oc<7zDZ zVZjnfM1xR*i)$h6qIjGF#EI9BC^3Q1#8h@yR@J>#CbE4rA;1j{seOIDc1++a6YnF1 z1=Dpy-}?u;un695A_;U$qFB3h3e<?3qPUJ<6gT$tI8zxl99dtqr4^4*Fu+=gQmD}J zy*eEdWRAX;HXv##LSC;__3}=T>rTB5(>ns8mPNZ)kEx~k@)#!&Bm-3SgG2u(LYII@ z{@%?xm7Ke;>`B|+=&50!4n<Y4ewfOl8gnV8OJCA90Qb+DdeK!lo4OQF47Tjo?cT`` zvqK;EpFnHtF<K;<a&lA78n;`EMbQ`p=3ApX6=cUaGOH~O^@j27g9hWZg~)Dj0G4X7 z{pSD4P<v|tW$WH|KVi#{dR22Ftyh{hy8Jo6v3I9lW2DWX$3>^%{SJ@!_|5n5#ob_V zyB%;n99I`rSXd@g9v&f&?=12~X%oF$?8HMi``WYki?~GQ_v|-?1v~nXRxK0F;dChH z&kaJiyCd|B4A6hQ-<!&)D}#^)l3E^rL;uvz=D(d35xk9ZITUK?h8hOqJJy8xEYGMK z8g#no34Jc^OfYloHGc&)^M*mNxF+6D)sN)5sVg)%zv6S)OKP-dV@*q8o~c-w>S?W8 z>C5!%knM*9hu1Q^%=}=9|2tJ-OT`}Uj33z)>nODfVm}jqAftphr0u3nKUMSR3*35q zsW7HkU#$yABJA9hgmypbJW2Y%98K9GtYm_4_~t&IWGb{$ZP5kbBA|%pZ4RJYCm!8O zft5Mdk?^_QrboQkeBR&Re~i|f$g1)!?NWJtv4Xwh^9`bT{LVL#nX1E||5FK}IeIXd zix(a!<4IBZ*eVkQL2sq2vk9yex+ObAg`<<y!-JG*iVdpi28baX<Z18VxE+`tHVL6r zV90ZOU#KaXgf?WB<aXl44X)!>6O>B*t849CCy`?aaKmrjq7k2fp+#6x!=Y*j^>(k% z>#T9G*g@-EL6#sMmUMq-xTvw<p3Q`f4B<;;Ze*MfmqFJ#P=o>sO*s)BAQNzVWgs+L z`B>3gjJ0eCljL23b<0J8{3ZeF>t$%QZv>hW(vaC8@(S)B$6RHu=PAb2nHVq^`1fTU z-u8C0cf7oZvo(ItW~9JDqH@UF#aeWZ*Z_INKEdaVdyFcWO3sbu!{X9}HCI1Ly^Wbm zuFL<8>*hiBawTj22i`yNpEjzaB)|Le5K8pu&@GMWVw2@kCGbUyxLx2D9w#ArhjDa~ z&0L|!tgE5>cV%n&SpH;pg<-pam@>L1AiJZQ&6wo-0E(TfRsL=bkjHzahOGbPxp8}V zpmwG!z5%VvY-)$74Dg>05-@VY6Ul0k3P5UBeQueslHD&wc}K(BDEIvuc~AxlJmH>3 zfkC1{-=l9@Y<qO^jfLmhN`uN}VGMf*m*2|#N^I!z|MU~t-*l(`#R`Bf{LcM>qagPJ zwQUuyKpIjTsQ(B4FANRqT7Q<f_ED||;oJ`S8Et?@dKN;fu&1rJ*_l91UJ7C8n+r(= z4(;MfE??T}i1cl6!P(-kN;*N+E;smhf~bWnlBk(os%b*inK7=AHZ%<S<dGQ4kyO;{ z6;0_?Xn!9Y{+za<7p+$Uy*^mJ)uq=d7$X##9=9VB(lGyOp1SrYFUJ&c6}7uEBlP<h zhV&F-xLiYEJkogT0`YiS5QA2xCig0v@0My$C@!+iObp@Y9=4FMnA_%t^I`0QGZAEl zFKK(OEbU$yA7z(W{(l*24a>;g93i3^S4U9Eds^EEwr1!`J{MY6ski_Yh?m|#Hi4g` zX=1YP^E<q~`}HBr!Nj+wt(Sx;!@9mqQ`j*e&#o!m-H<E8hWArtK^2=*&q5|DZ;LFz zG<&UWRX7cLqyY_zfAybM%){#$_C#FT9WJQZ(C$#$TgvAqeAnil{lT%XP-${RW|@}c zCkvY#ve>VrP#}_4YYP;G-8476jXgj+hWkO2+~WM3V6~#&Hi0s#r(MX4nuI(M1J@#x zs_#)nOFGD>1^HZbI3KC(&%aQi618F~^}&+;eve3~`|IX@<b$;6DF9RWUD<+ydcTYO zRnPugp%?b+4MjlEMe=2I1E`-O9n6Gar9k$<x97T@SvrkG!#%Y~`o`|1E$yZk%@meF zRfq}aEAO*sQqA`#XWIPCLR)Uv;r}$T{G1&U3C$T22o1n;Wk}&Qn$K&B{b1hACoyvC z0l3A?(SGj{=B*H-%URi=lnFY-&H@{s9cwnW754seCp6JFlUq?9t0m(0F?n07X2ACe zzYSGm#lF0uCEVer`ofvE_=euNp1|Zkd#?@)UbUtnt3MBj562p-J@Ee`5l*M2fy9s@ zC80mVb48NYs!HZ~FJ)BPQ>P(soaA9#%o$lE55lLJDO@&_Oey)%lm9svM2utDjhyhE z_@|5wgYJF7`*ua9$ktVP`hw@nYZCs$|86r(y8bt>q(=X!P^BcEK=1+2bA<yALCFbs zb0GSGM^bkV8P#z#l3?-baoxtAlv#{VJ8U@g`tf-&Yog!dU_&_UST&b(jVD)C!hv+2 z&=ggK{il>tJ#JH>Rdpx@2d_ux2Ts^?ui;d(4YSvP9ICZ&)JO<*(S%K6AP|t}-B!Y> z!DDQ<y>G15KrH`>&JDV~!8+bGg&5OBNgGfGq8o;{9_x`dX4(C777NxAu4M|Mf~S+v zV<(}tZDt#CF>|-5n8=xb>vqdiz!p~m+B1{U_(@Beb^p)w9=_okU}Sew%EKqYQ>cdy z-@XBuY^0)u@r*fqBt1Wn!aBLu{x#&M&c4^_!p9Hr<+eqxiv+~G&aE5@4Kq4>pcUXK zAAO}WjOwv8FEC)KByN*)&`a-Q7^qc1Y(wguuB0~z0LugkJtx@%>U{pg$fxd72R@8c ziVjE~xT}wR+6o1+AP2?-lSC?Llz+<IJ6TfXxBB9!1Yis=`i|&>QQ*&aqNby?RwBo5 z5w0!NNym0op-Y31eHE~ssM$v+<mrIffAZa57rFp#JqoCDe?yw}^zZK&zV{LeePA#5 zL9P0z!$|U(Mw+3R&mI@T^m}BDo`cj+g#;0-sE6_P<AD1uHA}FSq&9D+V)-K=WeLK` z15WS5S_h{aa|2k<X&?$B3K+d9-^&=zZsB=EhywguL6)|fDYEB&W06yMSOS}=)jL(R z(UKV#nKR3tta+$SI3(zuXGaeNX6{QsTIK*;;GBA_M>eGC$MM#bd5Z$e2M-zC^)|!D zX~yDQjW65>KvOP0Q|0UU*#=6m|BUaVe*0W{$i#kyUub@D8U}10ucFZyYqL|c@lQ@^ z?MM2xCwhKPf4;u5^JNE4%og~&b28YRxZdo&@$O0EsATG_4H0!y@K{c|9BtdzJ5C1` z`n{ry`w8s!nGNy(UP8L`hZ)U!c0Z~Qh^Q(P0iE{5gDEHDYsAiz%4LC4<a?cUJLmbp zMmvxcc%~47t^C}w{n(R+V>PBR3vHAAnan*FER#}s;Pp9{6#%u?%g`Y6JE#ThDW6CL zCanh-d0Tajyz-2Y&iv`?`$MU%f<z}^VjV{e?S|~<Lm594Id31Q2Ks4x`rtaioE~l5 z37kVPYFA3ie!0K)e?<Qc*JTmYTLCdrxH86|uRREu>Fc@5QV{b_?B28i{Pn2De@koC z53Bo+Y2@4UsaNLsbE((x*9NUq^MbZzj$i$8&ZCTG*~r4TlmiA?_i-lT!q^0~+NUyY zJRTOzbb$vYz(hK4M^kRbcJ`IDAZU#3V2iP*<5aEg5#!J;rvY~Cw*|J6jg#dt<P2<w zA2kb*<QTq$uk~%D8{QVAAF2yxJg0Uq?yhPMGtF`NZ<GCn*Kjr(V}Rw?FFi#QdL5Zo zx+xw1!6<6R(JpxHQ|ZCgd~S1~&k9btvA{%bs*J%f46z^GR*G&9wf+*PjVtv614kB4 zsRPU5+~@fhqcTB@-Im9!)%(N_#ZqDWuqMy~u;r0nF0D9p8jw67l-zcTwJM<*L(|DW zEH>q^<H*%`M=8C6s~1Z5A%fi&(opno{&AB`f4b)LH2QH^biCag!oS3_?aKYr8|h^t z9iD~87)i<QCRwl~g;kQa_I;V4`=wQ#q8Op>RGbSYi(`tA%?llWkF8ocW~WSJiF|$W zM<32d)9P=Q@_<sc8N3?&?7K@{L>r#H)Ue$70&9JSR&)03b${D+zE8jV0Evo<dyy<w z)*-3G4YcD=2rM7|T_WAH`dhM&d`)T3m!HhBl<7m4tQja-O~0c@3g?p-m~u`DRJ*OH z5ADW=3VoHnVR;xFxUW05cGkAANx0BOKD&iu>vp9EZ&5mtPGvlxnVA2jv;>o+s){tn zt`6489oZ0c8VD;NzOQ5eJO4~3nj2&4rCWNt)XR{Ehd3gtuzNJk7w40abdIQN^v^>5 z(tlYEnOJ}E^smfbQ~#=P&z^E$&F6g*iB<^mf6@EUc@>)zQGKWg8O&DZ9yP2CE^$Oz zCR$SmjCI4+r`I9}|Bt7uj*I$v-hgz2AX3r-2S_)Fbm!gCsf2V(cZYOK$HCE!bW1mg zG)Q-M{Z9RSf3N!&-n%<H`|Qj!GdsA6$VV+S?^D>&g26K%{ra&4CtY-%EuFU4iqN-q zMt1eqj0rTuO$D2L!@IqrHN0U2zh3e9w@p)(|8V7Wb=m8|{mKlv&C5G0&rTVT!D#tV zIlQqg^+qyDY>rp8PAGBVG-){RBkl<2-~iTIe$J9D^V*+Eg!@1wC3Hr@CTpk~Pe3g5 zZv70U38(x$N~|{ZDysX3C3GjHNnvTAR35UV4ne5K+X^*kC3OB(!=}>x<?a;Bx%uni zcpL~?Imz*qIixxJNn0r{vZce~5=Iw`FjDz77DR%ePqk4RBG9F!)6=`{JOU6!3v}3l z<pRS}OEmSVp$ZRL5z;QWO_^YNdYUnnX8mll2@_eM)dHLn50PmqSLtUEOEOZ6Z5})O ztZmqz8B~?wa62`epC7F&3gcV+Cxt3p<vCZmFKu3f)10!CPoL^xp;b<C6RqD$!SFRq z>m^%V#p`7s+O$$4qh93;T(p!&y0}-)jK7yN(e97Hju5^UeZyg{snkBaWszZM#FSb- zSmo(gX81POJ;DggPLrpAI!~m%H~i6*^I9Mg{aeYS3XLuANm)K68u#Cd0K!#Q){&K` z;XYV(%*SBAkW`9iGWki1*?Q@4l{fAfV;t#B%6SXjl=rDSE&(Ma9pn4>qB^w=NiJtL zq(ndfbN7zXy3{1|7zxS58KAm0a;sX_^wa)Yl^Cx!-xq>QlUhkt$H&|3AFYcln@*!` zUX63hBEpX+Vb&M6zDxgM2x?4%znsMbn)mO3+a5EDG$t~sF~vD;T|E{ny|`wc=DJo; z1k+0qVjUKAbu9X(rtpK<Wmih|O1_gNo`x(n^ElWW4^Q2x+M<rX#yV;)03kKyi8za{ z%>ddRUJV!_5Q2@M(Rc{gs#XwZ_oX|ddA0B#cR=>$w7WqB<8+f;vKdxf$7gEqv~!CW zDal5{k5R#d;q1jX-Qcw$|Ec{KGit!Pn?IYzPpK~*PBA&MH=@^XvnGE%ZJ8pC5eYh8 z`xS&w<CIf-6rm!%jN{KS!w=T64@qIQ)VmB6M?vt3){tTi$M=vTKoa`Tz<VJscksfP zy)6@6uwwpO$iX^Cv^T<cQa3<iaD)k4sYBp8s(a`!$4~WPI;f?@X+0POG}I;HuugGO zlP{v@S_ip{xLhTms|rN4bpzdmpP<K@cW6}A#rxVBeZ<$%5cYT>9o)!?HN)=au*}{H z`s)z;`rG8k_{B$i&Wwtf`xk%R#f_lp_Zg2`DHX>Q<T7-ykVfBHLgVx^=AP*|p(YB0 zwnQ*>jC6zBr=PTp!E6_IYA*TeChCxwgeRFzihjz5?!4cj0cA5()Zl%N-asM-w@I~4 zQH7kv7=G>Jh0fm=YfdKq)g29{r!6emG~$2&w@LUeR`a$8%RQ&T!t26gi$rUSvMEyO zT+V*Af5Z_ss)?8hPMa__ICPw>`Ba%Ku_xS`DFJ9L&zl>x#Nrq&aT{bM38Bm{R)<Bb z*NB_cUh(<!W3TL|S8ic76snm!Ubn;Y2Nb|D7qLn2xNok8eN@If$?!m&+7eNRlKMa0 zG^==V3a_6?Qr?%x@ySvaQKp2FIzGZO`!M`$y<}q<Sx&9di=5IvX5BO*RPg`9?o%ef zt{T#L-7@n7RDU<Hck-lqZKrw*rk#m44P;_T(ZJVYq4~s0m71=m8fEf}NyJaatje5i z*LKtzdnggTUFs!y{riKowhB~*zc9we_Z+--_yGfp0qDp4H<Q83tK+Zo7Y{WC-gE;L z=9<<?q78<pexHvXdYaxOVdKLpwhpU-IVZXQ?HT;6nkgup+xNSi*&b(}6W*gxad4UJ zW52~ocrQe6!t49|FU3J@4^bo@m3_&Gj=iMD5b-i$yhHfDd1;r5fyk4Q9P-HG@HLn- zZUg1;(PaH7*0-C98)%nEhndZ62>Jw-A#~t97%$F4!5w6Rl${pwd77}9oer`VypZ_9 z^6bf9V9VKIMPLNW2l?YV^TB<;SUVVNy>;lTNJ`ND#C!2lem*NSyVzkVtO=oFE)VvO z?N3<#hHSj}y+4$)#A_;yIq^NSMeUBh#?kjD;R1h9-xTdq&7SU()8rJqx#Jz%Fsg=@ z`g)n^X{19`e$OrWM8JM9XTpRqpVrJ?xVzZ+ds<j}Nkvx<5j-i>Yg&||btL%aX^0r} zzf7KcF^Mbp7LhEShiHx`!&kw>aj){S&>#s6nT2PvTdd3F{DD(1+*}Q#k`v3X*fQ8u z(eFDF&|51&WQhz(1$Oi_whSVhKRA5GpUgF*q<AyZa(DrGfe%%K>1Qf$CoEQ~xV>%1 z<`=M4fD)|mIggjBIcGea54*{IAmPaWt`@iKLW8WcoX6ptv%u%Axw4w~&<lw7j?z4x zzqf$qDYbaRt9r496|e4F_=Y$(X?}(NRz519%I(Vq$9C!C!WRN08gI0kD5G0qBkN@! zk&8{Im1{A;)~sds@tJF(bR+f0DLY2`>_THI4D+OC!urH{SvcNSDw`N3MaElI(eP$j ze6Dl<xCV!lBgZ?q!M-W=uVwmemhH;C3(r@6t*r^LRI!V~($jPNn6JIm+OBDpb+hbP zOUpT&o<nkp%fu2UbYF!N<y;M*=@%JmVbgWeo5iOIYMo&P=pjcP*EI66Nd83@sc8!A zRDAL1C6%$6?dTGkM*>M*kGSuO3EdtAlo>@mXzF>l?g$>8>`WH!4;L7pd2o2kz$adR z%h}<t#2!*C9!_%TavK_A26qdm1C%AJU{6-8S#^+zup&fx&GR+{qA&FzI)>Dz)jZwF z=?LV&m1*&<PLLN_@Y7fm@O8&-JJVex6olU!=4(|U^t}cQ7c0#)r4>Wx@O^)cS-vld zX<nF=y1c3{U5L%gQqh`ffcS;~U}|RV(#;ZiY$AVi%0slXlw4M<fTjQCpJj9qGgT`v zAU=f(a(m`JJQ+3Is$mbn7iC3M7z$T|MAMGk#FGfS!uS2$!2vcB@3$V5fPVXh9(C-G z&QOQK+^UG6g7L!K7_+C1C!3e&z%c(dU)02V{Z%9@bUuuamV0AI{cq;k(tBc&rtbO| zXu;Ry(nPodGA-3(0v|Sz4j8k94<2J0ZdX^bgb4%@T8{o1D|1j!SqzHOwFaE*vf7vL zBfWg)%k6fM{P_JTGMf2XD2hL(Vmb8Dd^sjR+`15bRbwR)!GP}H;fM+DV8}4O4;6RG z0hg_4xKcyCw)X(lcg|^UAiDJW8^N@`YUi-8MJcLm#TYFg5iu$Z-tNGKmWh#PuiL_k z)0taG<PXogCu#g<GoFW*Z(HA%d-?bbemu4k6N>@0;HrkUvJpYJdZ_&+ttut_4YPwk zW{1aJt*z^V+-Jm|FSiezl=h>exJl?UZ_9~Lu*sA{j8dv9<}AyuNkxIMUwyDu+N19F zsxelREcl2dLtBZ~Zt)~PUiKNTiacpWs2~Eq4)e;tG&S6~o_T7#PK~{Uty;3>popp) zKS4Ge#APj#K4Mlr>XUHjDzayqRrLfp-i@?4Vy>+A&u?Dy<RKL#k$=n8$eu#hi5RMG zqrn`I(IeTW?dCR&`>-lH4jKo=ltCA*Q#J`!H!yY}Iyw7Yryl5)a#`B}xH7K`Hor}7 zZ<suT_(Rofk}Z8eVeEeRV)YMqN7|~jxeYCLJYV*dcD7_AWo10LbalZ4Kgs3k+!nYA zM7h260fvp76%z60!!0{fmxBaqCMHz%8hl|`pu(a1T59hj%Flq$fc~H3Sfter?HHKJ zya{V7S*m<r0v%j9tY}#Q+58kb6oCyde;WUa7c=Vx`TE9ir`7Atf~8gkIfT@Lx~L_} zP-;?Vxz5y<Il$;TG*a+(XCK#%lHkEgl4-WcIcAw05I0U8KZ%$;cN1?IwI)%tSavjZ z#QT(b<#3blpAF51QicgZ6)HC3S7P?9T|omKvEADoG;gr8_#m@`Q@w<E>}Wv74r&RG zmO0O-2cd1hw=1G0kBO&vY@dW2hjYc?Q(jkKv4v+tt0k?&De34p1nU+}OFLNbWf1*l znWV3Q=5ftw@5p~=_0YT2T;%)T*P^DOr=eF1J9Q_?9Y>}=Ab)AxRYi&-r9SU!<p}6e zO>3j;6y!oLD)5j8n@zHmhDx#F==EK7HCEJEg9;6TB}0jkkt3oaoPiohp`sA>bf+N# zb%w^8N-%z&aiaT9A}Vd5?xE5f<XuR|L`}2gNR0CD_(pvNuWoumL`5V;q_EC8>j!#5 zC8KV&!$eH!uXgO|CsAvNlpsyd1O|cfckk+7ni?879D;!Z&79IAi4v-g;)2TUD^T(% z3#PC;{cH>bqcqOUAa+NSyzL?cEy2;N6<hDnk2jq3^Io?eZ$F%Ea)|;P1^Zb3H{My- zz?C$1DwZv~^c&0G;(!oQ4y-YMH4d&I^aDMO(6u>9Blc`{CD;p#SrWr18tlH=_nGfJ zeT1idH0{YPc<R(-Rrl7%&%2XISPk;KH9QTG>WVxiI!<#y{w=di8WL%y`A?Y;YM->h zM`vV_FSuNUT!h9R9IaU06y7&4Js!IGiJ~74LPWmM!ts}(<YZ`YiAUGJ?`bm7=<jp6 zXk9?#C-&Y`Fob7v0)>tXtr#wRAKg<b%YL0%VscoOm+JSNaafv+i}_AMGYAfMS&i=t zRuCNh1e!|m<)GN*lQ`GaVo}D`D4RUezY`r|C8WAsD}b8V{Jf>a!r~&8_XRob1AD+Y z@2#874hi~)`di|8R&_UiLux_p0B+!b)U%(B8KA4z(77;)p=^8|^3kkD=~n_Ja*N;H z+7Q@?+Puur$`aqt7;ors&G^^5h+X2x?T76n4*I?VJ8r$5ZyjUgf46q-O_R|LXKRu& zk6k_EW7&tOyMqwcrnjOKSlaW@qp@!L9Rfy%rdYyNa(+KwZEW5|bU&oX4qmX7Z{|-g zmv40OV%Ir3!E|RzhKv@RP7!LHwP4>AojL;+T41joLc5l6j8JNkK7X&x(PGyP#Kns+ zWWQv8`QqFO)lB5CTH}Wdk2sx+9ojI}O%ePMsj|^{P3w>6D!{~_W1E&~8%ildF+{)x zdk3{i-6}E|jDTUR^QpZ+K3nsBbot7jmZ|1T4KhnBbU9(Wx?FNDF#gKbPtHS$B`l$c z6792?g#E;@j{6_iX70d_W{Q8x>~kC60wp^%Alsa$Os%27uKA&)Z!wAh<abuL_^L&q zf^jcySpuO>I51os^w+-Drn4VP>Q21i>&4bV=OtXiL;wc5RytfqfGO0gt;KWfa6?}Q z?Kc1|calmP&_d;o6*`pv$u_L}hxUdoMC4mrZE`?fAWHHfZ@iW{_ZO$`thqw2{ouC& zNcd<)n=$itwN`*Y!jUAXZ^~@#Z*|j{eFb$3bR^D`ubz$v=1qEIz|gRp%?g^KEjok{ z|1AsipG+@rA8c$@8_RzCari@EzaIZH$@Z1%M$Y=`UB~;Q$PPSe^`<-{2Wt`kEo5)D zbEh8{9kc2vw2$Zkh~HmFy+dUdr32&ns?1cE<=(ZDS4ON2eqkLD$l1Qh0fNo|0l)ew z>IQwV<8Hwf%pXX`F|Y4hzxP^e|C8VVM1|muYV%Yg$95aw&F-8ss4^LIk>J5@i#R;D zIVVFeGn$s`0oJ}si-(Y!5NoQo)O`xu)X#E%g#s!0-cq!oiFDMo4XV=gja#B_5aB_! z$7erLR=e0g_aDCcBq6lR$_U(k<!nueK0TnnI~t6uB0x~90!_2X$0wMwtz*<-gc5ZJ za_D3Wq)am~Qxe<Y2G`74z0VRE>&{LsTp+{M3ms|#Rv)~Lo?O9NYgJF}ppfi;EY?s` z1gn7l9`_Apu^X{NWFDs~c!Q$H=(1^3i*8xooc8FN+@x9ZW?DIX8aJ1NviuB_IFct= z1HaE~nw0y)KQh;UeJR--dw@W_o*`nz0d@3m0F3A~l}xH|x|qcBY`Q)ipNS}uPzTai zj@lG-I?4Zov=QE{<_1FdGg6874|5%g*il%w{#lRxF^Ce@cbP=)X>f4a3AMQrN!tpK zvh=AQAn)%}F@}CEyq2$OigRTOo!b-5B5i7b&C^T_p_p)}2k>F1`>C`CD|TKoFB&Jm z9l2*lYW#PivUbvp3I#X2O#4#btei$`ZrZ|e$nG8VVQi1BC#i<3>&Q1DM2tr;Wb?2C zW0M!)gfsBP;4~+uX@4PC@jNi^uNi2_ZG5$uzCCZOq6Hp`NR08Dcc9Ong6YsbyUG5o zXAb^}tvak3AbgAOw)uJIMjkyVu)(}njWd00o3q^{VLEQzyb^W&Fp!#7tnqn#v{WGz zB#D@vo6Ckys_C_HYsEmefNn*p1V<Jm@>RvPLgVQ;9d1eeRP-Mre(^iui2u6isi!70 z+W6b*_ffw>kkkq|-qW`*jpA25#pt%*{#eUzhijYUm3dn6#^(8XnvHK!N(56F_3vKf zr(Wd>nwJ-Lw&DIbtVojmWRTC}x+*9ggM4xD_Gb+`D|Zjdf6Ksn;;2sDuK)#IlRPyj z1of+ezoHI^CVW)IJC_<F9owpDs;=)y^D|~}q91~<k*G8KB+li(eVd*|W*zjMD_Skh zPZEeaDUaT@pGY5|9VJH6zuf@TEs*?cCFQXZmIF47k$%kTJOLqM8}n?thsxBiu=ENj zjlY@>fsF9xUt_W6i>IQ`^cm@a4^z$Nb265`JWS~=Lb*NZaZ2)u;D{)+Z@?7_YWxU; zdP|B87YUAwD*tS-?o{+bjo39~__(#lq208>^0i|$F~V+AK{|8`{TynVN||?^Yd9MM zB_f)RM@3x6K}p7ut@wVnTG7{I3vHr?Sk*uYMSup25KLud%k)z>-q{|v&m?$U5d6Ct zP#n4xH+3MhiI|Vyl}1lPj%yW7`ovmk@vvAgSO`-#wJpItiJkcw0mhX3kjb<L3DN7m zw^J{a^I*C9V$W3{krdI?aT9)Z-Z7*5%5OHaCzdQt<Qoj3A*%U~58sX~{m9;0*e}Lp z0Q|iN;%*Md1g?3v6UB}wMghr-z^6|TG4zZHwp~)f88mCfob2frD+z{ZIXomY8?-B+ z!AcoNQ>HlXE2n{9u(sVfoO?c)7DY!*beg`X3MwP+u|Ke1hefqhA)zwWPQl)%l6c?T z(%72iU2yHvx_^%F;(u5Z!kZX+zpy-_7(KStkmn)+=^FEP4fT$T$)$K5sUus({YBoX ztm(S~B^Ae^tj`>%bbKaU>2tCZePzQJ3^#VQAXA+uvs=!b0}yXr?jgy?hYzh!`B`cs zFV|mE>Q^XGvTStS&L|#V9eE3QX(a4EE?FPnRi}Nrx&6<Sq-{SOI;C$nA?XgWnS?hP zKJl>*WgEf4G~$LYh!4n*nN=v*_^M|{_LE!iLNUlHgJFu?8U2E$X|$mRS2R_P!`jD+ zh+CNTgD!_>NqxFndzJ1k=E{B|P+~9xJjPl<{f>2v$&5Hynem^LF=rOUQwJ|6Qo?mf zg)U0)X(RqvP6+hJK|@2(S{^c(Y!yvZ{3L0oaLhP0hIH!P<kqd)y~_zP==!GepwTIt z$v=%&QvifJ@5=lRsaOf+P;OiG8=1w!aYHEspI`Vk|2NQUv)0|M*s+nz84cZY(Q%)= z92EhD4HTB996fwAIBx$B0g@aU1KDC!j6Fa6p(?5bsH%}kOVhNFV*H@8SRxv5sP;8; z7;3n>OMuo6_tzE)7d_1*g&Ul7Z02H(BYoqOXinI*mkoXJidhV<9JyaMDTo>B|4r1N zx;S@x8N4~a+vv$<CL$!2_@N88;7uesa0ozWwv}Fv<%1scS}48XE{7#8lh9YLn4}#g z^?3S=$dz--G6$iy)veLaf~hQCQISmZPrx<Bjk>h}ZsRchheL#S!7%>=HEnPu#8ddu z`f}ebD#Hq4qh^IDdr<?C4;?+@1$b)QD#It*MNi}c3pqj;^DP!}TpkaJS4z0H3nrc~ zZuP>C(Lxp6U67H4<BNuJGf6pc>)d3omqoFp3|iIrYoSO1LgHr$n!m#s^c{;W9*uHd zZ0KxsT|U}VFmBIx5BT{H1eWe1u35b*|8i_RkB05TSGTtFyBn02$=Dgi_6B-Z1tcAa zQky&r|4<OOiCAN=H|J)VIt##v!Ee!b<Jg_GLkNU9F`og?8c{y(W*5e!AD%`s&K0pI z=>_D&M!n;tV^S!K)4&y^l3^Xxvh^>ebTR3(AZpu?YU$h4!6}rS1eKZ4v{&10(2l5< zSwJEGre*Y-U_N-UaoEk8*d8Tz%xlCzPkPh#;<G!WxLm2UmrRUM+_Ke-b0YiO@{A!6 z3eKTIHRMd?zCUTxqw;>5qRiw{PJ4-b%*=29?vqBcA$@4aCtp%x87wLdQlZEua5@~- zKfwpx%*a`@x>O4rK>8G!2qvXBPN68WNO`7gKAB%zlk5Sg2_4i9pSVgt_}g7VtD*@! zZMX3hK|nt3u=jXaK0G)}P31DZrmF--(wYS#y9WK{^(yMFtsF|eFq;5Tar0Oi+A0_j z|GI-nr?CM^hQcpohu481u5e=vfi*>BOnk-MVp7iOIbTO+9z;Ujl9zIyg1$kL*V%h^ zBYo|;(9a2%ohHKbYc$uc^Tn!!3{KVfoA;6PNRfKt|6~(Zb9vC<=#G!!=H>5%X%3*( z&fpv7u@=6lwc;c@KaA1>`XR{_h{%4qd6D?k-NzDZ?5>FPMJkdSjLMvyAcyW3+VYZX zW~uorY4>LXUg4egmy`$tq6OE&w2;u_=cHfeONJe^=%Bk=>fFx)$v>TGr_@%76uJ~i z{z1CSgJZm4*ud>09=6YC2)oeq$|;hIdNRR~CGi!XlXJb$12H!1Yg$ysYY`#?iEdlK zy`J^8k7J%V-4fQ7YbD+wg{>wOZ-xoSf*&4V+};Zb4$<<!6y8_M&qz4>Tm|P$<zf%N zC2u}jc}zK45l@|Jek@DCH(v$L!WFsqe^zmCvFW15uB^hww>n888PYf?7IwAb(7=6; zD8W!oLfrZuzLq6@ehh5{qzkjX;7G%t>wzOrQ6)Ty_Z-W9tTkIZIRD!Pk)kg?7ig>X zv#w?f#h3uR%7a<!Mje5jfn4^p6Je;z(rh1O#@)M$xYS{fPs{Kq51n#4YwwQ|!CYzl zXkFXGwj1LW=|o2~wc!2`w25d+y0KYe<vfjqnJXjhBjtJixKgN-2nG)HXaR75U3QWt zR(+N3Pz-Bih`FcLv{DA%o8?WIWug~=FK(}g%jSDJRX2mX&5AAr;SYpEQ^rJNRUwZL zS`Y5tw8#}&f0PU6NXt?`9ICw!Q#`u*b!F~mdy@U7NH%aUuxzUI@SEE5DHhr*T+4}X zlDP!06oL-S0YW#%Dujl3Yprtp7uGaGS2|c0m{J)W0if8Dj0xlMes-DQNqM*rk%d{T z<%m75_NgB~cU42}UKqi3C};$frj9kW4aiKKDk4+vHKo*LE^Di2KKr;WxG0@EqWp6_ z3+<Z80+f|MirYelsvR+@?!?;^JzgU+oz%9FYKFtyFdaNUZ%LVD(EAPL^Mfg6ZpuJ> zN-i749LxxrV4}!86|eg1Mlh&E0e&(Qj_!3itML1h4(+k4^-r%p@Avw{YUWE*!Y>a1 z8yXSSx4+w4T3eB>&KDM<t5D|*)48*}A6z}47?*{sw}*#^Gd=gT|J0Pky{-t>n}mMw zloM=&fjAj--$nIoqg;Jy%5EF2H<ZfnRxJcgb&6~A8E}5{{y6j88Az4D{x&?9meE4p zM2?ZP`|F^PSaJu#@I`BqDv06WtLD*(m`vJT9DWv@9__`s-LjKPD}A@uBq~N`#6F}e zM7$y@GZ|F^a;8=|cN%RLvDs%UWelL0%1YjDqUBn7L-?@qAMvG?wzNp_g+1~7K5wva zWI8zBMlvu!bOxx(9-zgCp<r@}{ym8bg^Q5Ago7bXy>-rFu73UdW$BToTzba*#GbvH zIxCbJIw9}V^I}y^s$Ak_wm&MGVar_p&Fge+R_C<~{+Kp4La~e0&C9}1Ta38py@Y;g z6`2TzZF5YJu6F+@1Fruk;i$H+nK0@+%BHW>!lpHCuM*dMapBVHU{Ub1t~lfq7F>4o z)8E??m7%*KYX=$QjKns2VPGJimibN&f^4-#Sl=py;(qqELhyisZ}nJo?&(J5WPD%b z?5on0L9@w`n_KHrAe+G+g35WX(V|1T3DB(=18%i-=cY5@FAt_8z8S<Fzptl&1jvFo z_`DNus+4<<CL6*BPep`RlBj&UX)vd5&`^|YAa9<r_{lQF#Vt8=hFM>T8#a~`im)nx z1UvqXJ5f@PwDrYWCu&y0-?9;-iyw<$+)jdgaR*NH-$WR`x8))X|8vvB?ksyMGZ&1h zEa4SUxdY;4!D7ZkDjWy3O7)$7CygPM(Z-c=W$7z5o|58l+G-zM)B=K!l(WHkX_z7Y zgaUc0G$`ic8x9_P#I$&2YCa_%A`u@BiPledoh}tk@Or(f{y;R02cmWB8M+^%$2+Cv z!HDK)<xF~-8>1~yamg&<k$G<&RYxCy&Md}27YLV=n+u>0%Wxa|7KR<Hxdm^>k&lJv zSl4MhJ?De1>5k=nhwpp(yY;3^!xkVnGz$l(xnB_W-%19=IkH#+t~F+ATtTBA6b4?& zcL(&dZ{9m$aB<7;z4dXBAdNR7e5H!jrb@~(-BkbM_Z`TCqo`|b73%R=j0zR!Z11{c zJP5iuKP-@hn=YK?#b|Q}#-?jXBV=M+TX|XohJ8lz{@n5~zI1dvNF~wS^L_gjKz#E3 zJ+aUU*F6Xq@ThtZH&ww6oM`>)IX`y`dBeRg!*&&V?xdVJ1QSn&gl=B#7(E-4Z%Z4$ zn!Z2P4rILs)%G=Hu?%^+ITutY2GuTSE>fqV|D_-f&`TB{S>ekaxejZxo?yr|)g1L+ z#^1-9OPeP#?$E7#|CbP4dupMe#K7fHNLf{;f&da90)xh^Yy)+VPgG;e(bAGKzst2q zCMyPJhr5UI$z~=x<DKoZC#1Dr;$|N7;mo_G?!QekHj`*0XlCU#6WgP@i#Kv7cT@dP z=86hT)$O4E$dd&ol+7;QoTG#PNX;wNorW3`K+uHKEfxIX?!<j_Ks<7VATYdf=-Z|U z)-$U++kxII3At65&^@SFE(N?gC2l9E^x@xm7mi`QR!`KI3<Rx7cjZZ091GMgl9L-J zUw`C-s@|Z-HF(L-7i2WX2fPp)R28N5yI8|}&I?g(ri`&3ZQSVEJiPE}Uq9Mo?q)-! z_zSseex~JDpu`1>z1%MG3k-z(z~KcnPCHbfTM_#WejOoKBDtC^{Uf@t)17`pSCp|) z3s1@k^M|{~I@}fPmHvyXYRdHm)V~7H@5(Hml-C0}V72uROj?l&3=haVpNz+}c_Z{M ztdlDQ>BG3%;T)WL`iyEgJKC4o6W!UWhL!Ntl4Fc39Ied)@uzzK-0ew9$Hsf@L$1pS z9OHL)Fi2B6^(`JUaKbhQa4>(M1q%z0m_}#|qcWQpI<?rOcC1m>jw@A<3i!os4^-+c z8@{$$0`g$`p;LS7|J67dbeJ1FMJ~Dd_Ogc;I!}Jd%0WBQl(S~^1~B-TSn_eA(z?%C z*hlCaKOMYbNXC3;kn7IjmMX}?jtsUxve(o!4>mWA@2}^CUJRn$`1$=k{61vV>K=m7 z!AEeESQFdR*Q(epWtu6z;jbLy&Or08ed{L_KibOVaVgY@Ptv-?#azoAB6Ise`-#0Z z`}f~%^kYw7zWBQZlPQJ=)uj#|nN)~slB?F7P;AoA1S(8qJBlV+OhwD3I<SH{cUhB; zIrBnwUvaTz%S1^&{9o;tgT{|$?%wz9zZUhj>}p>9{T8+?b;WA>{XQq2TCfCGn+ftR zmDFJ%iX6R`Fd&IwSy@IF-9^rRu}nDf;8X_Jwe>9DC-$W}%e6%^63Y{5)*3zX->rPG zM-_~?Y!p7sFk{HaY8O9*G*2;6yv<H}nJV}DWkGjgKl<h<Lvh`E{2h;0hfi9WJvHBU z%Plv+Xd>+YKnrPO@bdBMTadY)XsOHZ0(Sv9M-+4V$bRQ%5f8KB-vC@mBmc<o0|MCd zG^t%uJz^LU1jq!;2(QqM!pUEEQa`tQv)Q5@(={XWG^R3+UZWt$h8i3V3!8bl-Bx`j z^g8^IfMvnlC{9!rXF9zHGdnXgl7?8dAY!Z62pu3pKnH??uHI&B;rCeP*r@rdG+CJ` zrO%<wv)|-Eqs3tZ?J}E1Hl})4`-ydLO7`h{N6fb?_-9oJ;edWnIMT`wLhoN_D+Q67 zXD|~ph+iBUJm4+~<Rk8~zHs9pjUY$&<z&lD`<&RrdE%-4PPy^}7}kUif?&0F{{7eM zQsyZmR_d+B4~vXTbZwjLpc1L#3)khcPjb2H>E1NO;9_SB*|(uExKu<P+dZS*Mpzhx z^)La#CmF&M&8;=Jr)PO(g!W%AQrc_?(6$}E+E$HCd^)|lgmh6m>Rtx(LZ+&J4>O{T zg*a!F{KB|?+%$)fxz+vs#7{$S+%qq)gTk@R<5G`39LWc~n_)*J{Q>9N<sc$_q-m0_ zFBzQ2y*IOI)OQP`jz=EvIu%+SlHc}io(UBS|F(etyN+%lv(t08jKhlLlVH2VAGR0i zcnq1bOb!xsyi#IUKj$^(E{8S=FWAvB{{DT3)Vt8qz!%BxjO(%_ERJy>Gv686?xy_Q z3eu$>Y+7^mw$r)NByv-q?lX5&c}tZI_&e8C6xH1Xiy*UazRcM_#~BcSM!BlTsZw+q zJfss!YkilsPztX%hixYm(+C+Dx?othAy^wFk<GgOQNKBlX$CECR}e@pk$_ib>l#%e z1<SqsyCuXymuKCqdr8Fg-g^kFgckhYNTk0_e~Oa`oJ^Bme7LDB&VTnJPQCBC#iJ$t za_3h#ChL3NF~={wCwDDWJSecrg%orJBwr6#H>`;U1s==6uPbVM;T;S;+-gB26Eb-T zN2|xmq`7M6OXL&kYiIm@DoB464sH>Da~9WYC@?W0f%m-wl*vCVFbw3TjIX!|0G1qJ z=IYne1Fla#ekz`%DSq|uKX4%dNj|>>n`e7c-}zRMnQ{cm;4<llN{quIvQ1q15vZ?r z<%sB*Uuzb;{)LEv#oUNGJcD>v(H^yM=v_N96o2&V;5?loNLvv?V1IKtd|UJ*fBEXt zTR0nC(WE8|fJ^0&mIT1(_>RpxwU^Kzvvv+2w}5jvAJ6r!ogmPNt>~W-)6ZIIWAda( zA5bUspz8jemMLPo4x}3WUi+|wQ$2N>6(emFTlP>k`@V`2so`su>|dK$)Z4$lu=%8k z1d6lqkq9ty9rJctMQy{24Cq>{Z+Sm6?rU*!buJ=&&-ng1R+R8Th5FCUFT)>d#PK~O z?XB07nB(p^eI_@mO!2HSmo8QbyD}ta=S13Tcq`k3-tt6;uCBDbodp&8p-i2+$UpU; zqojtv<rv+?OZLV&v*pJ$ns0oc*@@st2QO2aV)Ofo;GzygFPA0cASaD*1xbnl_Mi>W zh;3K+2BGLR&?srJW_rbkk>R;>1o<yi%H{OgN}xnl-e5JXvQNuyVP<cRaouF7lYCR* zuQdv*rbv|RnQGe8f3%i7{L~%))uj|ieQixKU^b++*-M{qdB4tVLK-RTdordA>0g;J zngedhqJG_SLVlkGy=#AYBd8FB8TB~F2=f0i<IPE%9aCQo75lntu3aqC@AXXT>O4=; zmc;kKukt$bcDi@z-?Ro(<=)1<CCm06Er7CFzCpB!N2npUd^K`;$`i5m$yC8={7%WN z1<O?N?ic9u)M-FauP=W&TDIWJm)N}D$(QW4BRY^Qq8<&GC*abetXZhr$2P1Xq=+?1 z$Z!hp`FRGic1J~XNStO}O3Hr&K7-r+F!K>r`Oxz1sYp9^6GsXYJ-v09vit3Ame*|l znbn&LbeDnha2@!uV=Qd1#OyNZgxTta@D@2+na94H)du3+#Yv|}2ptM@5Y8)ebOzZm zp7*@Y?pyf|H)3t^%|0#ENy#I&h4LF)Wjx=e&=3)35sU56_dGv#k+wHZs4by)P7TS8 zsf0$gjX>SK1r<|(+8qxKa-m;sA-ITnc6sTQq*S=#=BsF*e{qtrZ{Z^i$Z#2EQCx}M z1ak>W99hH*LiLRI-goCCpba1-i)Hs1()DV0k@8Dg+B6=9oNlZw<3(Jy`42Z^^U~c2 z$@r_6MgbY781YeV7NYdOUqbkWs)~lz-<ZD(GV74f-fnJ2SB!-k1U2J<J**sHMH1Dq zLJsH`VTJ+wcGr8il3#}=A(IRoiP5eP|0G1GxH+tB?Q5Ez)|VpJo(G>!7i(^Hn}YCQ z0r=PjCm_V}rWd4L58vTwgvW%Yutm?#%N@d+LVS)5M_!oO;*{<-trYOex1InygKXBc ze3mmHUm8wZbuxtL0}eZ;mbMOIlY;;i1MDd(9h?tXOZ$%&ACw@@c{ASUgWNhubw5z# zzJ)8;cOL#vfx;P`5y+}&VLnSrz2J2qS7ML<i}^7Kbpi4)Ef0m+G{;aX%hWK!l(Ku- zudL1bs?|?y>zaf85;x`Re4Kd1SFpab65pGW=Mk}SKhm9UoZQj=#!iqXExqPIS0R=n zol8<=oKNHcQhhc5E@);)ZLG7{TFT?D7|d%RzYQg$MG@SC5r!~3pMsaLJ3KF{YLiC> z$WAXhD0yZGXzvB#n**fCQlrm74=LvfX0IxVUHW!Q>0g<tF2+K-;4UQJO}-F{P!QBg zbI@B$TL?i7&oC7dri8Tw(!Le|eL~)hH~m6`l^|y99NXo8T*8wc8EgeNTTr2$_fXIe zlFGkgKDh$MLUs4PulzIq_<`)N7VD<U7!@TQ-Gp4o1>N34s1<`=pRT9KapEtpwUt%+ z{(`p4SP4h<Eq=O&bZvDxM*W&shWs8%8I1KNQ6?MsejAtL-W=Bp*i%ye`9ftFlmU(T z(n*nB1h30yt>F||jTt#@Io4$?_~;L@=ez&MX2_+X3x5u0)m2OjU$YN^=Zg0s0q#bW z$$mHwLK;Vp<J;*FIuFFShKMaWjrzjnz=<dXv3xHfkJla5ws%4f#6{n{Ro@=W7D%V1 zWyf-%G1+Z$u!x1H7f<G_WZgTlAecGsZ~67*@IxoproYb0Z}0z|R-`oVq+asxyou~c zDI2hle)lwgSV@snzQOF+N<}hcu3qHK$=WvGZiaqfjq*S=9NxYNf%;}hvBadZcx|C2 zBRKhYxQiAHR=H?8kF$PRYs3z3jDh5acNS+OYX^~h{ps>;*5jq@{rcf7f{j$|@LKf7 zOUU#;fY$=%l=l<eO@Od*Za-F!R8v3@9%&=UujCarJ3+3m5Er_WO@7RMsoqHCBHRld zp824BR`z5FuzK6$@OwKKM<f;f+~IvzZ)1fx{XoD#x|zIslY<1$M8(S@?7o_p#mk^B zM=XMg7#1)=sXp0jkGj(N02_j|!NU-#)GCp<F}}P1M4v5P1#gHHrU;j`%TCTS7DS2! zS(AJv!$m*hbsp)F&HDR29J_x<AdQ)<H{}rLH_g+v&PjPe%GvnYPPOlFhEnkNZ3>yN z_Yej3Ur(B;ZKt$TAH%rR#*s7KVP}Srcg^++q=?1cRehG<in5pq^x0GpnTqt)#63s` zOXtzQ6eTXUOj#(4wFiMJ<yrn()J4ISrob0yRCdv()dm%Q^x39UlsLS?F1_o7pKAt= ze13j=%VKclScg$DPXa=H{P<FTdW`_`k>LQ9CL&uI^-ylpN~1#NHYY&m5H0+rE-mk| zy~{tB@R`F}Yeir@N3P%WLL3XkskSG6$CWUYh3oY_uBNiY98euxc!h}Nb_MJw`j7X! zWu5x|>p-Jhzz<-b3-2Rdz;Zlb=T&H^?kEY&D}W}b5;6i3c?kU<B0l`d@OqNk+unb? zYx$U)OJ2AY^D;rKgp2UA?lCWo`^V$OpbActIH43dqt?^)xj=(9^`9VAssxn{1H_!b ze~5kTkEL<HZq+O|krMnZ7JHDmG;yoNV!K(T_pX=aq3Z<JP4+b~c5zvk$3i5h{r*AZ zYV^6l`pe^bmV@I8S|^*o`MEe&c>S=@$;N=Y&<M6<mst{bUOM66XB_s(iyY!lg{$7L zQN>RTL>fQoIM-Dv&N8_)>=zi~@i-59UV3>&(0@#myT$gRz)PAGrY`_f1**ar9Ekq` z?xY^hTN*LZsdI1qNa$;wwrb56>SNkwWc6I4igeC|@xvG*i@+W(LhW}Ns=zPvplUrB zYpRGehj?SQ3ZYFCnez($jl&yum=-=y5;P)=5dN`nQ)ms6u-#+7>QTO5PsAme&u9{! zdlr#~9#R6MdSQ7}G)24kUO}kAKhZ<55`9zT`W9`5Y>LHJ_3HHG{dg0XjRkv<QqT(+ z0L`|5x#GXdbAaeT^Ds;=Dbc+XX&8k|ya=jqvmg>;undw!G=Wek*LQdL6A=dIo>_iF z&m;IdL->>>W!w3%V9<WlJ4$!6qMyVrBP`9Us4eCaZI<tI$03tZS<t(liK(8khfaNR zeUK)h<SMKO9rotGAw#i=5SBd{jTO;lvTH|^1ogGbM2=DtI&zm;eDe?qMj~nee8OW@ z3hQVJL#Gdvqq;U2BI(0}3<&Mj(EJ>9$v=7{(RUEJH4*d~!{VOJ>(w4?*6t7$Mq}A1 ztQJ~n`@BtPsAaVpa@^WgZsbDnNo;szZ<fIV$oR*fU^VXA#5<`^Z8Qpenq`7}9kp5v zL<?=hGz;AlC=r@Mm~C)TbDj88ufM-#5q>eTsNZ5Glj<i8h^u8KNgV9#>^v0}Lt?Su z1g^>8<ADEuFJ~fcZJX>RHCqjn$`a>f?{|ZRyNM6JGi>tZN*s7U5@_0$<e5GUe@S4^ z$0URH-&5!8hZT}hWI<@_)jGXb6cr_th{gY`DlmAzV>_n|eOIMSb!C|bSElTA9KoUq z-T;ml!A4Bm;U&MtxBOa?G*V-(X@4m|bu}wNVvpKWdZ!7}!e<^XLP;fY7^}xcD4|Qx zEQn27oNeit6D|^1C$+#s*t-|~P5~jx;<``#*Ky_E59P3MRc+##uN@1Z9$rE{<+Fsw z!eKqhKFz;s2rsc?ws?Zijd(wuzr|3y`*RlV+Dy3a1Y?yJ0j0)Ya^&ReB#98W2tgyh z>#20y^;HlR9^nyVG{5i<^l>RjHNAXf&L0{R;S&P$1d*30O9&lgGN#@JGf0MtQ=4kV z5(S0(vA4k5Sxp<Io7MAJhXjgh3~)DjQzR4xuB`gP35=!tvl7JD14V-6vsWHy-V2Ty zO@saTk?IT^zi>iGd|8UrI5A1l=KvfOCdKRsQBJ(U`k!y<9n8&HULBMDXuI<GHmCr4 z1xyU^n!sBDG5k3p2&Rltv!sZsLONFi4SvWkR%*DeE>QPhe>9SPYQrviEUv|is`nC& z=?apFh`QjnvXD&jao09i<WdeKHqpZS0dms6)5--P%=*A&_E%7T(*(0Pxvpo3_5`)$ zUxlk)S$!_~{YH_@e`Ju&gKz#01sIPr$$@ThOB}H5%rP&bjm((Hg9&zjdt0Wsxq35} zP*byUDde^meZ;pkiirDXl4<B?j;bso;WaoD?#@9%AL^UdV=A<X@QY88>Nv8YwbNw{ zwoW(6pv5vPsqAbeA-Dbx=CTo-`j;Mm_JRSJ`qO)Kx!vpj=?vI)-*CK=^_=RUJ4Zx( zsu=WlPjo_xM=3Lf<TrFYjFFoK4e0UMW2b)O=r(>twfmqVuTf0koB~%{^7DjZjA*E! zPId8hX_mStaDu5uhR!~r<lDyc^+L%;=e<@DwZ*NpC(zCB58{3JKxf9L_4QZ9(6#)< zlrx=wE|+-6PjrjRMyPMya>u7HKd5wf!#L=d^Rtq=OIKqLWZLVX2{=k-5C<=hd!O`$ zg>Q{eD=JW@!e6=GnyWM}N6<69^nfT#5gY2`sGuVLHn_;+jzR28@lrjJse3vo<?t-R z=gY6<$$#%EwAs=P>2g_JQ5~35RpZb6HaK(XTnw0<om~W}z3TJ%b5LPN-zWx)HLX-~ z^>bwLSM%tCY?b$umbh#dda$n8n$WnpF~OrQb9~3#f%J}16F_T-zhVR%;jLLpxPDvv zjH9Qg3N+z7b+CF5XZtS{Dk9+#7S9K`R=>4xF4vwS+|Q-vo&15vP&7yWA|)L3?J(3Y z#JtRI8vcIuVl8RTFR>4#Kw)?SYnVNV;?m%*bgX|4wg43Ryi@nFnE+KP!&Z*>#`Jq9 zEy{}qZnApJx0QZ%hWoUpF7tNib!td&c5SHG11vJDk>iO)-vf7r`{A|lAYwlLP$Byg z`T_8un}SKzT>!*C6{bVf0vsaISrPq~JiUhyMb0SI*?eCNdr^fT1|C?0;Gc1eMlT1I zcLSILVwsYEO4SFTG@wC!Q{|p?gi#2E+o7IKJ$pERbg`O=A&ElS0l$tVF%+XlG(sfM zBEx<*kS#YT5m0HCDE$~Lmt$2!J|-^IH~zDy@}aTlVlVRGGo*S$eav2R%o-r1wzjyq zm<=_&M1d`jbY?W=R?AvnOEW?JH4n%T2*tx*lp}Pl-LgaEJ)sl%9QM_-y>&~Tt?`;H zC}wFGG$~=?2$ubdQX-P_2T+=S=mP+x&~P!tAQD}&*ZEg^9Vv3|ka6Su*C})8@X0$x zo?~NMum`jTluQBcZntHb0fUelky#DR$G@6|M?%+L6q;46V%aZk52yO>hnEe2jR|aw zFy?u~5NKKObJ4JxJ=RR6`dg}8Dr=G+<t%c-V8DnijOQ3T#5w|M&48Y65jg)q6Iob= z$3jdIixrT?^{a$6d}??#n>SYYM`vj}j8z7Ms~Rf%Z_+BcW`H@-{<(#~p&{ku<m0iG zHjyDmI4zO>;-~aCt5Nd`z}x-f=a!B?Y7ZZr>iq!BEaRZ2)}}v2MqYT$NusS{dDzS? z7w%6nex!r{>vby;JgtwvDd4UY>*|3cb*fR3i6=R$e6;Y3s@4!_u%=lgIqXcAZmD)Q zD-Olh%!g?C(d{iz7KHS7&IHA$RpBFOy6nn~vv=!JqS=bQrj#p9KN+n0^C=m)wW-np zssk6)aH@EmKq%R;;-+a^+2P%ukTQ1em{?-X`FYKGL;Cr~1aao0)(A)q{8y%a683r9 z<!?PQ_uUV-U;V;n4nmcoA!`7w288B~CmD|N6q2aFX4Zo<i^-4y|E~SeSdu!}BER`? z=B{1U*xJ-2FystY$x4ok)4=u-JXT{oF3g6~LgI1&e|OwYg(<~&!jTJX8YvrY@qMoP zcf_ya+%G@6NoZpFN7$_TRU8$)O2*^mGT2uysUVH;AKcV>6gF4=pt{24u!d%{oP_%F zckpBnT4q<<&(BZ1rZ5K*l}wvekX}{R92?Aeo~+q(r(E{j_(^PqSWZFG@3hjC&jK10 z_4QIje3SyJ6r%y+k_(kdmGcH_6~PiD=Uf+9etN6(5H5ovy#9QQQeR!+w|M~tTg{I^ z1RbheqmcC^WN$n?tNEgzkBi*0enlf|+umP0RF4%M*kp$6o717`PnwUiTj3QP3Up&6 z{O<tg^Ehd8yT*-0s|T=Shae-|zZeJB{xC#BV1dE=oTnctzGI*khh+vJdA?&{#4Y0{ z5zhourxBH{$Xnt^@%@>b+qZ_hnj%19>H-W*<mlxkk*@!o7+(hObnq}^;!j}Wuep~; z0#u$`l<;pza<5JtrD-HT!f<(~Kw?hY_E}j7?xqTH2(&emweT=Q5v5<wylf(+s?`a? zetyC^DuNkaa5+i|>;R*fNni@`smEBp1nmv$83xuosPsKAA%n6^IBNm{YMFDNJW+?L z><m{o+c6uaBA8+B_1Eh!6*6S5$T^5`zV8!*_QteqfNR!uD1C)fhIDQo!-d{4U=G5T zdl-1Zi5VDg(6kCL38OjsXP|+nsb59)bK3yy4AzREuRNElMUF&fa%s(_mh2Z=DZ}Z} z?8z`aVdkQE!MDNe-Lfr!{dlluE`rE?{E6K;DQ}|l1W<$j{U#YveBsVacXwW1Ubh9f zulY{~=^2+2tl3O;U@6#MI6gFRj{I5?0Tbp=cKMRq00_zkh&l!~@T%2a<^y&Z-A?p| zK*V#Xy%+8i8^pPy3-fu1aN}M8US9Ld?XA1EyLek;>DlMgBLg3>+F(#<_~!S_?Zzl@ zug>6~k!UTF9HwQ>(S`@n!N%0M>RCiSt3y=2kdL~NA@!h>MvFGM(S&|7$lEl0V=k^s zp#_zGWEE=CsOMjSufFz!P~qTG(c5R@+3(}e)s=5|mV887=9S@z63=1}>mQdXQT;{7 zY@5}=eF}fVT(2sT<4t-pwY9@zRk_ZvsIldk$hZk^M#^F!)ZATo4OP^!!=s;FebiIU zf1dZI_PdOXoM8`6H!U0q(@EHKo#@Gbg2Mu+G$d@h_$>R}UF-^27b@CZD%^w4u!#0U zDnz`WZ`|8aFD#Z$16U2rJkjQ_RR0_LO*h96;TJmZSm-R_b&c7nF_GJqG-XE6Dk;1B zzFFjJf=UGUctLTwb3#gPnMK<_d56FZImH86sW|=&QH4?XnC{lIP|HX-I2ZXwPod_S zbDqYWVcBJvC<}xNANJN8j-Oe6fQlbN0wV?^S?yP~z{7uH*&FOqtTik7wFIUp@dd8M zpJ&l>a*%lm$II6s+83!qKkOFkuGP%VQQ`^1JdS>lx-u9Qt2S8m+4Dzzn!!rMgEQnL z^qPk{Bz3W(JD4`OU!9-qEx}Bu_SQL8Uz)yXNah)XI)Be!;i~TyZr(^S2HY7|V+hyD zaguRgqjG`vBdL<VGiNdeh7iLpeCR-gIRBhPTi#?A?F*a@B)FaTi5GBZ)VIx`i?jXc zFsP@G#?Li*ktm;IMw~Zwht*N3e<I6^G;S~quT?`fwXMe3q*(trUBQk3t3)8N`Z^RR zQzf(2%g|E9FI1=#(eWZq;FL4*p~3w^m%OZE#U6ZnQjMv9SM?@Tj?Cwl!)LKPnH>o8 z;$u88MV5o13c87?VqZ0kKI1Vxh$>2&2R>xlcQVu|@f{$=*M)h&QYrRR(ansY2c}FX zLm{jNUNWxdDBsD_T|2oXZYM20GH2iP7#zQLl}`B+Xz%aZP}T?H`P@m{U`A+#L(Z5( zd_{pYG)Us$X40N`vL3&ZkC18v_hLXqZk$V(rikbH*38;aGWbNsgy-VCU^{;|N-(9p z8}R8*jsPX6=GLR9!O%=$7n%Y!@_g^-&$5VQ#r5BzzHiXTc&=nR8NS%Y#rIFK0kwh# zJI7jPfL^ypBSRL%E!-QdteKbN0wLyo3QHM{@*6Y%7EK&SWR@DPHQ0gv_BU_wiP2j5 zK=|C6NZ^BX%psM*sv2`KXUfJ~8`2bLsefj9dzSg&?r!_jZS+G}|5}Ml1rA0iTY9I0 z{6oAs-QeEHMz0IoUs*DOEX`5}J3hKyLG3<@R(qOW_py9^^$Cz|`H9%2nuJ9Y<UfGi z(-xLGD3{<??$CGI+4;?d;;Fw3KpzGrV7mcs#mdRC9n0}sNY`99{u3o;JnwY5&s9h~ z3x5@*YTFMlQO3^#?w^NZ(#A2nA#c5N<H`U8oQdFZrfag++ncWy-D7=2v&Z_o_u~mT z3kHRVhmyeC-@E@lM!@8eIn66$j+XyMp&FNVfLAcjMv?l&&i=LkyVK;dr=2d^-YPSk zx1{)Wis7k);X7y#ECwOZhu!<>!c{)BSatWSp#7&=#)(=V^(?Rt-(fe0>7V$BLmy|m z4uUizi|A$U0TdXI3RiQtjuC+GI$5<AjP6NYY0H$)kl=0$Go1=mhe7I+E88FgFNH4+ zUY_R;U+3kW)lVi2THPM2Lxt~J@5^dORqy7~zfa5(KcO>$2WMcQd^a#Kp;}k^S0NrU zNiF!>WRoNT0kUsjP$@`Sjyl6HgMvHm4`+T<b|eCZFX%=5Ix<SonJ8Mb1J8dKF~{<I zgt#0-Sh25(Q{TIb`ZOy9Iobkb;bjb3ug>~p!C6N|j}#uqD^oo6bv_N%R=J_5IR{ui z2f5ZW>mly)^gQ2xXoAUu-dY>>NB~+n`!k}1ChRYR_;YEvR147XZ6D``WYYs_-?sbh zw#_qkhP{j@UAj%TEORbfN1-At`6=(kqyyMWMi8#o1JnO{$|JF<(k)XTl9Z?K0^;H4 zpB*O>KCyyxnp3M~`4#=1G!ZPm4!;=Le`@+&A6u8@y`^<EDBe25CY1zXL*2WiM9uTS zo!y%kBd%~x3L%}F`ldz!{WYS7+&1_neg$Wq&w73^dK*fcf42L7G+kvtl;6`Oq*F?| z5m@Q&lCFi_rCYiY1StVYK^m5BmRP#G5s(E$T1uo_q$Pd#r~mis^XWeK&Yd}P=G>Y5 z-alJ;xLHy!hnifMXFce_-%Ax3(jYux70yO(Pn~2*Q*ecmy`<>FP33heDY(h;fJ&-~ zh+eS3_z4V9=gHZeKcWrzwfNws;+L_&Q?;`GEpX7p+H*RLW4F`*{m^#d>s#b29>6@v ziml>+4v=)3UW%^ys)brroi$qyz_`*jZzEP@E>wOo=nwEcnOW-%mH?fSm1UT3!)#Kd zzDrAdX9Hgj|KRRwj^H;oyxc{m!rPwB^a@3fHggP`)y#@Z&v7f$v=e_p!k@tJUw9M2 zJ?5%cgh&z510!;P_OL?SadjF~15Lo<z=$k;`3n{P19%Q-b|HCSy;P47Y@*j88~RH0 zy_^U&w+W(v00SXqBYg^iX_jo;FYSztcChYd!tDwr6qiCn6BROBP<Ij7qaF;A#b=Sj z4lb*VBzP}?i(sp$s3;Y%5zD8hcFlo@jA9l7EqOqo%<Yhd4Alc#v3U9;Yolye;HGgM zMyDZOM>$Aqm*-%<=y##?3eFe?vlKa#JaR-!S#mr;@<+K82FUL-{meKp2hw8j5sz>G zf^mq)uQN+xs@Og+%)bis5%f+9ULBWW=V*574s0Zm_HO9o*{woSOp8)$C_lxVmk=Fq zgI2r5rff#<r%~R$76A23JDBH6+^>v}a^~3NEmEoRPuBc?31{YHk2AEVLH<EuMTJ5q zPS!mcH1j$5wI<-r*_6YFoWl>B2#UM_^&5c-a=gfzeug+BH{q^WqVySj5?H5YIsSn_ zm2t(tt@q7SKNBy;rvzZ^>H6WqisUwjzbw7f%j^4L_zwNFf5*D=;mP2HHdQyZ7U<6u zPmNHspB8Jhnb)$Sab;7E3~2H9^p*{CrGdq-thEjac#iO7Jxos<2%M~OzsGm?aD-_0 zm^N#R&hys%zDZuFu(|OP2EN$+rL!ox?X)5yl2=iNrtq2zF-0$Lwi!n9#zLdoRWSDK z;@4iHCaGv^B5|+|zjAW9U80nFUIfK~t|pz^!O&o2!6(iARW1`soWEwBpb9APUsMew zcU#3e?Pvd5hPEkMNmPDZjc+Oruc8XEi)nHy(GJBZK0`0b^-Kl*8TAfk?Df0ao=+M{ zjM-?t7v^|`2vFVSa0*Ctim<VzOt^_ncrj;J;{j?N<CalDqas;X9iiGLgtDU96BQOU z$Ia|V@Q}ook%j9Yfm{eFL2^A}Z*^!g4s2is@|+DyU&bo`$lG$(SfNED{BZ-dwv3Wh z5)Z5{n{Fl+9qLbP=2KWwWxWo^#sS?hsbM_fc6aON<7zbx6U;+_v!XV)V`VRCsoD-D z0S+sJi$6{^ZCZnt06&czzyiTRUIBT~;lvo2x#)aJ+`04fQKJmQFZx-8wCQt)FSK;E z-89PwZ^H6od;)NRlUeqQKGASJ<KT)$+33$aRf@{LtlTB?>|doC-=6|<AlL(e(oBOX z;s6xDTVbq<jP3H71c8-a67smz{H9j=a&w*zp8G#A!phl?|8FpU0BI#AjswZFy>rMG z7G609=d$ddYxFK0pg73((Pycy>md-9nmXIh!LLU)?*w|(qt^mtHl`uqTVt4F4m*y; zeq$$5%NE8h%(h=@adMo^i4tQTjy7Ts$0jgnjl8n#Rf8IktK~Qmd(TNfaIZdU1;@m< z$~*CkW$X~$A14mt|IDd|;V_Su=!B8}H6ax1kr)(Nzm2Bm4B8J>->cyFF`BEX1PRt5 zE&LPKT|$~}cFjnhZua(a1VhDd^vB_-xs;gXzD4VL$U&qO&$ielmy***5nh35L!eTF zJ0ND^j8)CYEl;|$-QiPSOrWR92C(jXoAPP90Xl3$wzE6>(pFlz0Phk9>5B*I`c$?p zq7g1@nz?Jy@<a1F=DEJoR%n2ao_clWgiNB_@r?Ft9Hmn!bJY)ut~~OFUW4IgZ;)pn zO?1WJdIIdAzxmD}er<Wm%;<MM7##fF=;ou$r%9LDnd#FJ_xOsE3_zwl2x+Le9X(%y z+e?#SA||EGw)f6a=UM0YjNt(Q?xpyc&P}*4i21C<@kIg~5W_B{-4ff^*|-)BocD2( zPa!<B#T|@nRWZ>*Hv&0#Xt)gbFykc^F@n_Mazcv73j9^Nl1bCz$TTp>2gf8eGU|0t zvH*G-z5s=dum_c;5`5fBrLnJ3b6-wwEpB<X8N>@Hnr?WQpk>r>fj>WhtBH9D;F^qS zcmvDYCFILf#mW^Xau1-fJ(X&d<me}>W<p48P0|y<>Tk<xh?}-(!!vHQ>orKj#q*zm zi#q25LU4#c0&6kFdJpH1^c=m?9Gmy23^C`kS5j+g&Tu8jjAr)K=mM#mw?D)@?7QcX z=u*|0r}KO?8y>Z`vK9@nCA|ITw3|G~zA29Bzl{yf-kO-jiKW~2i}6%mg2A&>=nbh@ z=t+a*K<g11bB((Pr<x4z<4W7PyVfO!^6Csf=|D_z`fAqfqHoodHuY#bS4}FJHiT~; zE)H5?uh(P!SDSEN*Ze+82)sQ?t)IShWy==t<<zapYq^izSToJMFFd#%3;>h|WB;BD zM$z{O!j<RT{g5PO7XrwO0awVz+euId_rVTvS|y%cJ)ZOS20mUr++Ek+5A)VaUgqDs zC^YHdMX9n?QQI_pZtJM@Av}mKBO#9{V`i0E{Ns%vD?U{#oIVeL#o9x^>cFt{2?vxs ziPQlM!MCW$ciPk*ec@-b+YCCwqN)I@TEAr%^W5tcT#jX5A86FC#gy#Ib6x`jEtQIu z@8)6JXE6(1H`8rSzYd60GMDEs_0Z2C4#nR6FZI7fcfEe7!XWB?Mf4MnQiei=zXR1= zfP21qQ~pZx7*t|2Lk8l1H**D%I`to@c1uU_BD>@xrBRm;%dNHfq+pC~d(vh^|8_w! zNh-I%`anTlg?IjQzqBy{Wh5YiF<<bexL{aQzw+L{d4e#$oT?&`@_kv22D7wbc%yt< zTv#RJL8u&`s?w0fS2rCLCo;wf{uxQ;T)gq(m!A3CFJFMdK1J$H1M{~nD7oUN=w~J8 z=Yo@5@MJ%Kim~Oy`6DD#mHci<P3cwHZkb3WpSF100D}p0Oloz`kVFa55u8!xiByG| zHvl`N&q$eAM1#Ett{Xd?6k~QO6}1t)K>B>)YV7(%v~{x07kJjn1MkXWshsD+T({+= zW2<@=7w}`ax|Ja(7Msb1EI<z?(Es<RnsB891#O-bmykM|0^KhAX`Gl?t_EA~L-GiL zUi|a)MUuM<3U(27mB=<dzPOX}f|`F6mHa+P3pTKpWlA1WIqso)io6&+B3c>e2*Eqm zeKhp@VMVkDhY_IyZ7V*};}m7>|IQPyc?|pDW!xYf``jFe{cM2=T8rcqH#^j%$bY~W z*F(yc>xZo{`dF&c&CJ+Rl5jZy=<}A%ybTm+#^Ghms!DrnrN>S}xDb(iAix3fF4Yy# z{;<YqytV$MSS4Z{{mJ=&%he{wqoOwp6tcq6eBa1{3YR)CLtvjyPu{=m!`6gKhY|}* zueIt)4TGj~V(bOc=*Lf48IH;mAU*GTqotuIYyDs~4<|b-m$q%sdecba*3cN;AWu*` ze#PrElRqQ{0%juc#4iTnNYwWPj$N(nJmf*BgZiHP9D5nEB~~DESNBeU$P-nP;qmU2 z-PT*FrpX)Xm8foJ!3meDDiaWUa_^6#rxWDq81)sN%-*sqzSB18GO*D(x^;+yS`4a? zl>;<tyf`}aBaZo_tq!P@5ywAhHYOn9<PDh1XS;?c&Wl^BZ&%DYndOTAGe<ej=4QJ6 z8zJfkG9oTpcJue=eXxf7fDez9-@(~t+XZ*yFp#FWa1%_)(QF7&d<7wy2?aj(#IuL2 z&*MK-qz(lH^4XRu58sd)dTVP-5deGgh{c>VFR_Fe;Cpv+fRq@+W}B?VX09==jQh1$ z0{39WvAhRybjWLCgSf^<<;pqYyckCELUM<I@-ap(j>$5liOjbD{w0WrC}jS8kaElr z4k6pz43>4Nt<%~LE{O1%4K3P;+1pr`CP#|u%!41dk9TWL^VfR*Y#$%)AIchT|0=Yq z;&-iT4S^qv5r#28wVWV>B}0NkAQX@X`EOzz<ui)Q`jXK6q7q$o4pre5r?LfG3_rjw zEl>i=0C6;9Lb_1UQ{#?QrgM5H*%`H3*^UjOi$*kdsb9}`!&U}A{SFq=*O$>Wqa*KF zoTXs*9Y3SdlS^0xt3`&aeGk0bzT+k{kO_Xc8e86{!wWA2N01C#VrItH>HXH-Sq4BN zk@ow+{6ckG(v;x>z7lBip)6E&y{}+Ks)u%&-O7lrzU5a#PfYBRvxlC<MmZ8@%L5cD z^B-~Ww{KEGF;mvr_erh6JMGSh!5X>^Si=pUZJF%%Eqw}|>_kM<OB>FQ1Sz;1MC)*u zZcWwgG%u9BtE*BCKyAy{)KUbGex}+7JAs%eI&!<=Jari$axuRfdW(@&L!=d(X{uCr z1Q(<@ejO&@iLwvmYjzqH`kJg(GTlKb2NnF^#&~Y;@z_e`>nrp9zOk{T?*f1OO^)Wo z(DHb3Y89D~_vhjq;d#G38);1Wm|0jTg0sOe-8&0LC3Z+bT)VqM*5y!OB!@#>r7>{+ zluQxulo@D>(kqaW+z_Z*Y6ARL`N-vRrLrcQ;Z#SNIfs3#dlts*Pp+<z*6{{p)%Dx! z`%7qG@zCEp?Jy+W{1g_WU1@q;|4_SrG>ADHDu9`YKrh*RZ0T(&k}0EnGo#>S&-oaF zcDSYjP{)Pi>jm2}K}CW?;6;msjT(f5dxQubJAXElv0W=^t03lX-%QX$rZf;kG4=s% z6v#rZ2`yKJFWumQ^onue&Hh3AFi%XI=_o+?|4g^UxsiH8?;e%B7*)geVVx!-MRyeo zoTf6_?MG~)!gG%+-Ap8Ni(avBO;f*mA&7pBbqcXOV=uWCw57pbjgT?YEH?w((9irN z3nAv$U@s#Vw3W6(5PO3j+HYjsvx25e8{88)%`!ZHFW64dLF#FLX~|KT$-qsUlW_`K zs15$P;6S5wx!8#NK!2n4uk<Te(EFK@KQbPtDxe_$I)Z4VM_G%}Cw$MJTv691?sf=# z$P-*;_yq3fjjWJueVEHn2UnwfLM9y!>5Ns2ExXy&@-H=lr6#R~%z>XloM;4Q>vy&J z?aPBhy^m*)-eteT&IIwmGR3iFO;)&bdjeGpVc#uk_&V@osLfH~AraGFdML*Kyd1aL zqLYwyhC1^LU(>XhPuc23o<v#zSy?jp7U83z9*`TKvkXwzFq6O$R<uF10srxgb1r{h z6(f9c>NGEFlC)xxZH<=t&y?n{rt&!@LJ>|Z&(|??es_h8xF>7p!U*?vbM|!6&bpww z+6_lwgA?(kk4ie~5x%huyop+^MqL5$za83tm!pdT%B(DD>8e&Gsx~#f_xpX+9(Cp& zbo={H(09KlFtmzisY!76KX<5VN|{Bsf`ahGZWcM>s-^h12L!KCkPy85x|W@_1->rH zcX=y(zYt$~IChtBHY>(KEam;=qse~=hU3774dw~ms>nfd4v8^earI&;Q~>f!FQnUo zVg@Ja4JGU5e!urmkh$-*z)N@!k-L0a4a^?e`+goo3AA-?yFI6?kZl}-GL91_TyZGR zwz!VW|N0<qo1$w7{H%)m%YoKGXypM@6Ur}1rW@n~k3dHU-aHA<-%2|~Z$a1^dJ!aB zpu$;QIio8*=SbcGLLuS$g%ifLw}STh>RWDzX<W7!&Y7Ab*=Cd5o`?6&c3L}F*M3Ex zcLv{H%22{pyUMQ2b_sOmG1nNB%-P@}Xrgc59!2G|NkMfRW%HNk@@v-$ZUr}q`Bp!& ztnv}#Sd$So;x`KqfaXaDUS?RpzX5!OAgj_%Dn+=KWafIQK?=qgL7@I>jH&JIZHxQK zZCeQM%df}kswHTRvhQkeopPfW8UFKdi7UI&WUYdTRD{dIEpm7-IY?ck6>c)*Bpv&s zxtOmUYGxgflCVEOy&1(0&3{Y(W%A~x?Dxas`)l^SfM8t7?Dp6$0T8N^Fv|k^kLF_^ z<D5M()pMu`A)w$y=OOboHl@`uHpMN9D@5Cp@uud3ozwmyPQUMKml;w1-Mr$>wLkYZ z@ruxNUcRgZ2=46#M)A8a;);>pZ&u$POZ0KfpTY~~=lTd4w?4!g|F>S<`QuFH<|4_G z82S8}-ioD!uC!&5m}U>i3X<=!kd?YenZD|jrH_Spx(D60^;UPz>7D>}T6{zr&x+L8 za`m_fRZX*({qGN%rJ(O)mr@t=*JF*}5YaIfB$_2pj`VyO!F(D{Qsksb*PBPoq==lC zPRpZw6)*enxVsk2;LIDTyFI7j0LpaVPbk#hFQ>e_!yMvoFsw1*>ZsBCsz$$^t_>K3 zH~pyiV21e52uiiEe`Q(pS2)Rfx^?Oh4qJE`dcF0GxhUB9LU=7qUjg17jPjILXTmaA z8|M-Q+EOwiXDM=LT$~o(75f4>7Vpj<4g=`X0=&+1iO|_!_5r9^Nn<%j%VLh`&)Vrz z%f_!>pl`~4;49^SWcY8%PvaKN;TwK=%6n7!e>@(7K3GamRibLIPc)sMq83GnN@O13 z7oDK5;D^q=+ttyV@iqf<_B#ZDMn!7?qoU8M@#?QtkoTto*2n&31^44J!bxDoyVYm% zQdxfL+qe`TTxu2t<Tg?rajk2+xb%f56Ee+q23b;Q>(sb;SY9}>?$(YBu~-x-rX-qm zqm4X+hiblye5y~^`)0$j?QN7(K#x5rry-Bn8JhgoIL6}H>Bz&wq--z)f7>|s&&sZY zb1;ccruF{h8$kpu<O&avCxE%YtzX&f)O<uu#%uYKsl&;v{;FEJa#7;hUl60GHs$OU zyrsB3Cj@t)P9Y~AXlQ=$sA6{Sx!EkPzaq{l>U{7~M|KP}17$tl<5n>Yf%m!Rk*Hza z&V)A?XgV^|ohq`EYFWgtM=h!ciNz*+?UHg)|9;c&M+32sl$|saNNep{BYu=aD(K|* zb?=`?(xYcjO!6(dj`oHEBh?4!$h5o_ta=Mbg@&kBebP8^!z7yOp9(#Lhv<~dA?wY~ zO~%!@WFh}Tryhc0M+sV9VXuECp5uXdQU&@3p&tjYcQX$ksBw0t{P#(KcdS2hfK17% zTfZ_MM6eV%0}%}(17cuX9ue31VQ)Vx?`36bEJ?PnNZkk+4!*)3m~GPA2@#*pmcEjT z9Ij<o3|}lg&V0^-{aQzS<DscHc!{oD#+516B3#v~qC^(Ea=5AB71^QgA0e-92OTK} zc*s{Hbjy-~4RiAU;T{m7j;)N&XieW;=7tv~8QEpky`@=oZ;h0x@?uNrt*o`7i07Hq zgMy=%lzg+pz9dpk!z6ECy<YleTF&?^VG~)msi3213Qb(KmV@>t7^Mqqj<iTmdU2>v z&dP>w#EoVSimRQi3GH4SeL`xcX>kC2%T@f#c2BlXd9a{^-G!V?C{U#jzjh1-Y(=YO z;&8&MoP5PIY{u42bF(1RO8+*~+ZYStw-v8mqeD>ERg=}sDXUW|%?@3OAt3Lj)x3F} z{dhimBoJX4$f9XwqPEtbJMRYh^1zsfi|rmqgZ3q*8`uTjn%wL*i&;-<T0Jr5<QE>I z3pve~&Qi%b7H_d9nXRThCDrm?@mJ8ybd`+9neupT&4Wd*yw5Xu!-idnHN*8F4{=X; z(B$%e29eWUojXNSQyPE#56D(GC<|wGXZo-=q79<pLmkP}-lj$|LmyV0OsuP@ECs8m z7yWLthm)MG&L7)0SH84?%ps5<VjxC%q#4va{&D@}&;8AQh9J5o>QK9D3GP~y%ggB_ zUtEWTKa2-=gy2qCk-W?Cx6AMke1AUevS;A$>f!?eI$3+UlHh5NjA#W#+UNjf?gL{^ zQ=G<GGjiTU$fu(OB<P<5G=d53>1GZ4XMxK3$7cgsNq*QMWVYW7D{^@jW~3unVbW-^ zqb*J?h$*sY9GN3bE%Q?2_O%rBr{%<IfqxDbJSsS7Nm2?exY)Wf<8fbY^qLk-w>E=X ziYxCoa6c0>qAD7l=hvfr=CI|jQ00#_RKd7cVyDO<At;+%8g&=;XFtTocT?~Vgyg;S zg;Aje=Cv5<YK`jevHynd6e#UT)R%%=0D#NLdj0@HX4sC!1YOf_|LR8|=B592#neT^ z)o@%oUkBm9UR$Ffn^=anQ9ckAvfMP#+oKuj{Q2i8(_);FZS4dgbuoVPw@mRSixT8J zyy4@yp%-I$TGMGnz5&3IGN}-`drqn1=5SC$e@B06|JW)J(~IXp9_(_r$XjlcB|Ne1 zw$EPGQR7TrIeKmT()Yixo>#YJYIS?74l!5a<-Sii@nhbnx6F!3K^&Ni6dM$aV~)4l zzcYG~fd@g+QzlQWXlED%Q$>>VP@)ZY59>9w;&nB={iGom(D(GXEr5vH_Ngu>9l4{j zp-YA3#Foc~gIN5VbL}?ABId4ui|C|I7TNJi56G!jC~@hpR{__e5mgTRL<3G%F{Kp5 z-iKyHB~FRHgypn8+!W7P{$>jP1IEidku#VUE`UlDsAZ2%$HZI;Vq{IfmHoAAk6cc9 zhoDzpkkGhv_GDS2K+y|PF2sM;1bmdY5jwKUDE2?T8Hn#xg-TA;_K|(!x#=0<P-Ynp zj`v{#4~6v^MV_Z3d3Kk$jlixvVuGKzF}u+&rJztoWeg{+KG`wSX`<)mFR;%?@4yr6 zEX_;X$sIKLAEI@&zA26T%Y9QzY)Ws(Kl;9?=HfOpLV=b=0I00JVaab=YUuSuK2Ci= z-Q1nwI8;VHLXr(B6Da(ESULtcX_Ah!VhdvDdVl+{Xf{r`dCD;NhBgBQ1jjsXk^{Uv z#Ch8Mj*;HvC5rOtn=_u=XxSEDsTDlA>Ht>~^ZP=u>zzE<w)siA8CSi;qyoYN8`4<* zmkp4<^dYZ&Y@7ZLYgXV3mbi=2Wjmi4k^SzX@gk`!B?J+JCwI0){1Ve`=jP24yo4+` z2nA^C`Ls?i-trX{=>!Bvc-eXgg|}Ehk5bvsDH|z#p>#aCnDU_iNySROR}x3M?LpsK zmh$%WB9+8iJ=v-=LKpDvsCQ}<w38xVLE|%${89PZvR(rqZ$$n#nnCy0vlWUe>U)?+ zP`)~9S2tAa>!&s!T>)kL(bg|rL^?}9YrJbeKKQev4_Qfl)^J<a@eruassHBL3)^*g zEXnhxRpU+#zA2X!{#wwPbS=or=5rGY7=xCq6KO<pRAL|a5k%GOpDOGdlSe`@IX;%9 z*q7h`;Qod;yN}c3J|i&CZgv~SsJNEV(7wQ-YzBIL`Lo}XqyjX9Bn6RljzvL^E&)<S z6T|rEt+(0gC5c(!&(uk+;UwMa+O};>temUp_t|N6+!i|0jVt-aKBjW@&7fqO`jxl? zJ-DQW1rKNoBQ8Cq{K|B#hdl$KL_Z6pG-{dXtO>(~bBe_`3*Rk+ETz{OzcK!@v-Dyb zkW+|i{8V1h={3*S8y<B!+Crs+wT?k2un3eoZed8oVL^n=F%%gDz;8SL9_WLHzw@dS zUzUCmU%7GRa(ScQ8bpIE^oKE6&m;)0{>AO5Aq#k8(0J<Gm+H~60>s9<6Chb=(O!?$ zd8W>n@-?IiFCSQGdK%xIk`!Jhpq<g6-J#w&qc2Q1X%|S52@i{Fwn>+bDJtaL`R+gP z$+my?iZPcB6UrGGG%bq8n#31Pe5uYBWhHbo%}_;AkS!vcTjfNOPeQTGFJxT*XkbwI zZ<&&;8X&u6z&u*~i`B_C4s$hQZt6<Y`*g3ti>6fLDS<bubun{{{$HDxnpfiW2*5Q> zhTpVLx$PLpv`5;m?uwtScuGIyR_!~VU(G7?j-Bt@DuvY*s}6vvUXV2+`0Lc~B=xMd zx3@lBOUE(JMqzXb`h26KG6iCv-cvsR`0A%4(F4ja&C1tzD3Jr(F65Zin<cWOr-@Fq z9y<Lq$?DbV#TH(iO&f;to_hjhe=RdOv-y?be}(4PdSglp(_S%6>YNdbP%z@wc>1Jn zbH3=pkle^PZEL*cwY#bd#0%N{A;MZ#SBIN*{rR*=2!tBpIwpAkL;2l27gW*zT_0#v z4Y^w0)R9%zHnSLO6Gh~d>d)!TR&UyC#|I_#W(&`e%s_(~)qxC>vM99*e=Av#Y(ZQu z*N986$Td>0MKGihj3k7=5q+7I2k3SmbqqN@obmp3fw#{z(za0>ZK0v@6HSx)?+RWh zd{>Kz$VxJ!o+1FrW!1mhf?+sGR$r0oRik<&P8+aexVf2w**xr-pzpO|60JVrWu6Hh z>^N@eC~tIj{NmjOYay?icGLUB1ZV_Q{gLiQ_a-{e9b_k<0Qu~^$mW2V&W;LQM<YHU z^04;V|73q3dMSEG`U~s%unfK+kh^n<4%8DnP-k9=q4TH-P<a2>2ynQYa9A`a^KxC1 zG(lN9X-%|se12)t7tFP+j+h5#Z?l!>r>}IB8=KEAIwjsib0Z)X=(*j=zaT%O!o;q& z%5$GY;pn02OGW(=R?CNb28!93q4aE7KPBZNOv!)c6#ff~f$mGwK2|S^4i(&h4|O&Q zS$dP=uG!ZF-M?=Rk1&#=FJ9R%k60?JIiwcM(5v!3{Rdu1j0*~y`1HNsdO;)t-fb5n zsJbaNn@PW}>ZjR@mz?0FUd#%L*dMZHr9%)8RBvKfrJ#2aualoF5PTDrrZn^^NSq<e zC<&mo{Y>{sZJv~5;_5~GsAj2SlW49~favk^wL6kHj5vHSso|->_hrp;L^2;vRxYVB zw$#VjK%R2n$QRQwy310WCK9gKWY$F{+Xam{s$2gNge1ljC~nvV0$gkpw&g#oxYwCi z9gB|!otRn+d^Q<}<f*AB@F+fqs<gL`eLRPtJdY?7$gInPRWkn8_qv}}8xj?+a3mXi zY6ubAQ~Pv?qZiI!IR3_$dw3pOxs3pDz{-p8j>79mL)_IOYbCe2hs(Q@`N4jx@IM8e z&#HB$?DmNiC<RCC$Xe+rGk|%VGx^3$jA{^(GxWJKA5GWpa@_wQOybufRug&SKf8Og zSIvc1g(YbesYYp(Vb#nUUK;bxy6PcysSOVHNm|W6tS1ETSd6UliC8rTz?rJ$o%kOb z)pv_mFQi5|Z_GzaPoFkmy&MS}dyJ2#de8Sr@?<Z7@S{A2zax8=wsI=Je{1fQtn0%7 z)AmkUu;B_?RoBn)KQ60u$#!HkEa{Jon&oy9Et@*2<Lt$mPS*Y_ax`S0e^`min7$zX zds9e^Q(M4X&@6tQHgq&YeY*-9JjY0NCqWN8IO)oJC>4zb3HLY1=w+dDd%=k&`)c*| z`dk+BxJM%#JIycx$@_?hH4DhsK5?vx=oQS*up0u~K0Xze&L88qvM2tfO<m5~|AKNj zHqc~@Xiw=cWA8WYosx)~8tlPfBJYLIVskOg5RM87T()^K<cx!dIn+4unr7PrGGKyw zYcNn0^Ec|KI_NeW%*+Onlw@MgcQnb3e(je$1ogGECxQI6K@)Mg#>VB3Ts@$*dmtI+ z41iWMpEM6arof?Q(BCHg#d^6E?)`Jfvf_eVC;2kG6zhA$gsM!Yw)XK_2?PwUP;mY@ zqD+Bgs(XU&=u;4_?iQpVzji2DUU`MClanD`;{}$k-7Om_wL72M+Et2wJ+0@;5*s@- zRD$DU3c_{*vHQP8$}eeB-NRqHT35jZ=!q#L9~*J1n*;$B6U)g-jnj#melpt5Lrtt} z&6(<!ztSeFQAi$;=9$Z<26A35Y}SUiVq*9I2CjAV+ekB6<yFJUG77qr6MxK_n$BEF zFJGzmOwgt=d>x~Q%bi9YUhV8G^TCN{PJvQdEMH3%ruLpSNHeIind94x&uZc245&oL z^l#f5a;ITELj3Mc_B>-r|MTNaOkY8reA9PK$gZfWOpTxUQaoz(6upWN+T!X|VnH(I z%5{6%dBS@$xdu!wYGio`{HkOw^a1RrcFWR)j4mDwOviyAKP(a!m!JRwSYAOGd-O|E z1(u&I292IeJtiDyI|#v9=kj4dj9C`)?CU#;*jKM&<EBTb!xjs!0vpur*2%j2fWi<K zWvHc&)rEoKeDuGFxM$otfkAF4;8<PnDEJ(-1oPx?rPVQ#uHaCXu8v8OaTe5{bM<Qp z%Dtg5XFu*j-WGY}0k=EHG4kooZZU#7kzV=v6DCc{1l{*KX;wP?bWx<Z=h^_ag!;Dn zq3CDKEoyAqKUCxZf7(qRZe%KMUka6ZZe&nLmdIjK&EcR=Vou^(%StIS0A<^?Lcmu9 zA0l+eR^+HakZoS>ztsSs2F*dFkhz~Q%hY*F7ugF9$8>oz*bX`8)0OmeGEIRT2!Pun ziGoqQI$wkj7A*jj*D#*N8-in*{p!k;*kUcIePY_SpW3{m2<5;eUx$y2VJb?(n}vv| zT?&usSdV6=cz))fSK_S0x^=UI7z@{S-@LkGzmIebV4LK;X;J26JH|RX&3a1DiY$7$ zkN5#T_>oWAP|K^XGRQMwS5ilx`)CPcLaBCA-h&CR2&A8LR6UE**%sh>hK=~giq0fI zRI$bxZ0m!Mb|Rh+y_%qrWf@|QvoAycP}~fd9=^edK5-^?e5$VXZU&rwUW$}Zm#BVB z#5a2GRat7EmU3%X5|7czX&<_Ofl`ik%G-c+1x697$xl=;yPxhs<ZoIys@OkCi=nV% zR>);IkP%uIW!ZH#5_?{01dWPz&!muKybzhu^ib@;VLMnq=?z8`@xK9hUzKS9_=3kb zN@Q=#OJp-LTPCn=MZkqKie=yg`DPl(h1(Y%ffZx1K0w`6j%@W`dy(cIg~OP=KuIDl zf-`JTdy5ZGKsob_@XzmH4R(3;Lr;dH9KWan;2|`E+MIEel^4W2^x4|LO>QY*3JrJL zJvw4StS<M{rYbU??huEJST*36vlH?KgzM<-3UqG{{>-J6+y0%1`i*!_L@#4vYFvG& z5Zh|T+Gq5dZlWfY)=r_5=U~q9#|=`hzMCKX`1tVckR5vB3bch>s?25Jz!c&{k;OFf zsgPLO$6JwHD{iI%L*ceU(APVv560V!u{^vtl*9&Pkm}z?|Dd&_KY$8BnHbgezA?iQ zx3`c#3n>BG5>4fSue2Qf_IW(I5_t~Aw=y=T`UTk{fI8Bgd3MSbiK~`KTqL#SP)u_? zQJQLSqW`f!t_lEA!)N1+w94?g$g`Bx;(L+*_;h@?CFO@u@`>Zyli#14Ry>>aYZo4o zEQ8y2#GA;VrJELLO0uhD-ezvjZ@?FpnQIO5NfAyxJ$3A12gXkr=2)uR`LYSQ21va9 z3*r`e4iQSpq>XB$0#h2_hSeEy-sIT}mg-i#EW=Tr8M-_(V)|^sL`m=kwS61e;3%v> z-y2V2<;A~yGy_g@+%EEa=Vs43By%}gJK0F(<Kw;hOIr;7Bc}H|6ZG&<f1Dk+(`iis zI(#|To^pH+u{l2~^79@Rn4TU`kh@$|W8;I}unn$g#S|4B7)RF7=+{#yUTf~~6y}T8 z*<C>tL|G;{lz5{WFAw{&8Ks~%5u7wm)ofLs2+oL?f|Phx-3J5nvYLi8kfmM65)#d; z-#x*epit@rC(jyWHm@68f%wUTt{Uxq&)y1=p*yZmcWjicZSg3(-4x5if(bCIGk}+O zVXp)$roXf>2wnC~_7sApe6bV^c@23!1Dej={vB$xKVYlN&s@CSO+vkN+9^o<RA5Qz zyvo!6HBv9oEjIa9b^D;}b@k|1p=GJ=9auxq{4Gd)d$;;hiabtGbGvD=;0$dEVs{K) ztSXTYXXCZ>YoIBO+CE`@{oJTK2LbT5Zn-5=%ozVxRzx<#)02@qi0u{T5J@am_d2|+ z0h>wFD1b_5`nd-Fho}2ES6A@xH~J(y%SCw;U7(UJar4oreH+Hy_fAB5{c7v%bPT}~ zk<2seC&7<5jtOP^Z;RK0ZielH-P(OmcMo}2g&uy|^3{S)sU}!*!#<nMI;b3GrCPXl z9Y<+qU-+P~uRp!^$&R{NGyIq83rRy=;C`XdSig5lg3xTQ3XVheYD8q$&$Ww`nDH8I z4enq9e>>is7utZU2`b%&d#Py^!0z{sPm^y`+wbH;h1k(TCx)Han<G9=sGlRN+Pd<u zRp?RByQxdxX}j}w-9KqdQuf@QozL_GX?aFCiLsSEQSwDc{&yP*@gWa7npGwB_ssXv zp+)UjVl$0A<>)XFKwL9IHGs$yND}X05D@=LL0m#=#kw;@pmQXDBig=eZdK=Z=85hj zVyL$#_)iD;e&1&(13Gh+XTRCk_7b4js5K`dycgjZhS)NE-;txhUT5`B=P-&q=rM9J zwj5BGW{IO0S^u-w?nlFBz-`5DCl}S2RjDa4IERHXb)b#D+Yvq7=By9Zd`u%Y)X&bt zehe>3YztQ2)jo^r^dX!<0bNw}MeBHrb6K7f7zQ0d@k|pQsXl7Ebg1Z_#(Xk^3$(2t z3+d=l&-2u|IjrG1v}I6NY<o*M!y%|u5Fr*6=Lj=9UPM>j|ByexsdOk5M*K+NR?Fd1 zj5tJso8EVm7#1lQ5oQG;&<})485D$XJV!7E-bF3qTZeDD8HchHb%!Y%Q~rMMr7s7d ziQi;h6N_(W`g?O<oI*OdkP1chQcqVvvSRIIgU8lIe3@s%>!nv+dox0M+JM7_XEdjN zq9r}?OTyJ>+qXMDZlGu@%a*hy7k>3WtZ8Zc*R!!!o$TEY%{9Cog%rug({G=Zaq#W1 zMCHib#J{hz>-R@rhjZy8gL`3w@$68_*q#8tLFk`zECUke@D1K>C*Tq6qAFFIP=+<g zaDi=q05#MVQ4GD9d4(vjNFV0E!C_*1s~5Oz^(%FSfq!pH&AlnNpa|`@Djf2KCT>_c z-T3#h*T15AT-iX)<SUR>^~_}k#HQLWEvXGTwHwOSDV{RBlTN@04LoF~Vdxb<PQrCO zoBva(yaDH8;eJA9xVRW2i-PIZI-?I(u~()rUE!NxG=B4wR%+K}h{4x++pp6%){|K4 z6X#ED{SA^lL}V%&`0y%QSX(y7@vA=%|=zLn5$+1~io3jB&#%2#3f_WiGq2AguW zFZ^N=TIAY*Pi>tSQQuBw7z+rpTGBlBJdr_tL(w=^UlGuxTO?FSqOL&z_<Jg2DLJEn z=&~~m4Uf)4_~(mTDIblVl}kv&VH^eLsxRmWZffTKsmW`T9oFFU+5~a-a^gk}V?Z3# zDLH)oQF%ZA(=dtkBf6;Q(uk_o3is!k0PXAhRN<Fd{UFqc8iC-EdfhHjQ?_zr$-`e^ zNCJmG$?d!nfqhW?!Iw&B|4)ZBfG<|R&NM!e&I4}DB4Mhm7vRI$|D<f7Z(bGho(uZj zNb#fKw(9!NX@*w;CCSxRWcKR`rW&doIRx!q(Zn9=OjN&(p2Eus?0*E5$^Z464t@xU z-9FYwK?_9w2wVP<<JeC~@YyjH!!+#~gmw37>i~BI#+<wQY4?;D2ks)oJI}@m&RPSj z`E!;kpe5=8Wd*s$33UHt2YD5}nx$~8fF%=g&^lMFv|fvOLX{MM|1`9$f_>v0_EAQA zD9FPdFp1{N`ohaZ*{sB2TUz>lQ{ELg6h^et3=FL)p8o#!W$df3;=~j<)RN2Si31y_ zOyREpI(o5BIb=aUDq_)~OhlNvdoQV^(#6?`C^!=Gfu)*_R^rS`FVSW1iH+&tA=)%% zxiNn$u48(`j=6#ZHEu$jo5H<(nqB%VYfRACHHn2fe;>guxa!T}@^Z}dbMpBPhy2#0 zMD?p8$5*c`Cf3S48Qc|xUs5#&@pkNLYGeW7m01hJ^QJ2v??n=5-Kla)WYW+DpX({v z^4F~H#OqZ>6c5^69K#Z>ur47jE#^IebMqP;$(me<Hjee8PZw59M1dccgG!3lC7(x| z6Lgj^i0+VR#vWME>2-d`)NOwdFgz|qpQGPnJrzO_#ljmI!!5eH1_8yvfGWajdc{u{ zeIO?5k)VP%TfX<T%E{=*TlX#bO~xSc{iK+T2c+(<$tJ0B-n-b_D>(^vuXcE#vAHvl zDgk3&7Yy1u*chuTW7f-ShQN_JUG>JBlBo^>sCj<Oj8k54ds|0lJ|r{%EcV8aj5uT= zu|`~tE$%5|S<uxtKBhfl2+mqzlBrvO*4KmvLLF6i3t-pAAt?57asThx!Mgy#7a9c& z^I&-sUKH>nDW2i>HeRgq<PRrGO`=%7XS9~_Ct~rgPS4X_vs)}Gav;C?*A{-!aq%6b zzjcz%AS-qQyXtm=kHt0Z0?yE<HNVK$-Hp`GP1%G<{D68O#O|4I<*mw1iv{A)0xtw~ zBU9FCec#30C4a{q4n&v5?!%khgy;OLWi%+M+wa;3QMkGJ+VAeN)5?)GD%u3eJ^xQZ zXqU&#c_MkZN;-}&7fa*;Zn)_+qWLm2&q`$=wj=f!2@|{58Le_aG^n!C>7hW<Gy(d2 z@6>QpLAB9Nw;O6~70)7dZIioWY?X|2Y}m4wk?)?}oV^6o$6z{$gmpOMCmKof5;5Xv zKH>iHf-Ge{0{s&!=*VioitMT8<auDW<2XDg2cjPDxHg2XSY4N0021k#-1D*iF;Fp6 z55laFzOl;8150p<TP|nN#Z&2F`A?PdKC(Zror+9+twT9sQ{3{v815lOs^!8Hxvm+j z#-5Z`a9=f`IOkog!-r2NLj9Kv`C1IkF#^UWG+$P+wk8mM&*aI>FT2RaMD#HkrKKqX z_R;$#E?)DbLmIYI@zlRLs*AET3E+A9O!qs|Z2UCXfnQt{_p5c3g)+Xk`IIxx0UQ#K zX8Kg0>l3Z$MJwngFKpG2J`+Ql5@VkZc$pVt9-AxzRk*f1G4xofzWP)wz1eBU=@sbU zFHHA1kf+w4Kxu35^1Ay+Xsxw`vE}}x!+Cl4@ovrGd%ck@m3pToKzx469wz?tLob5+ zy}E7YE!=~ZEtbE4hP6ou^d3{+@iU*H0DSMV={U+U02NPuiKxL4$X1_wYs4eC__*7^ z9Q2U34|hQ=hiM~N6+YF7>3lmCgZ>s7GDH_S4V;|)&7bm-Kl`I&i|co9R>OADq9dO> zMTA<Zx-WGt#v5Ozh%uD?j+%-KH{B=TVa-Qo4>l-nF<<P<QPm%E*yuX3x(yfhswe;q zaw6M>B_GbmdQL&LK(<^=a&N+y5qtXW6pHD&Up5N#n}oRjh6ja@Kg+eq(k`o3THdy# z^wrz?%p%+}D1z?-haJ9U)jI&$7U3yi*2D%!ElPS5GFSryXnSa@e*5`rvQ<K+dC690 zsoAMes9wTM#O60@VLBBy>s*XqELBblZ0WX8OBC|T?|5^(^t4_3dp{;n7i0_yQOJ{+ z(lOGoZ{r=)H+swvLRux(4oneD#JrE?#XS1Fv}BRA<P$ZJdr-+IjycL$ers~%<@wP) z&ZUUoN>9LgrL1T0-%}<SGpkU#cT!EAJ`csmxoCq;r3hQ{;G&Hx7}|FJBKpG&`TXW} znat@Oi>hsV9<CT*Ke|SmX~$ulQ+}yyce$d1zf_kel)sQHfsQ7=_*eIzL+*PV1Rrgc zvHXdS!@gxPrKUZm;CSfhxmsI@`S;g8i@b9BI0pd=k7u-5Lih%@UatiBv(iX#Sy&wE z5%NkSdp|Ec$CdL&G_&E9Lu&5F%Em%O<&b`Ds;{;>LeDjVNd5k+5Qg7Ap<^G@wH$v| zDu4x7bUbCB*@bhd6uwZkjm}dikv^loNIUtA8i&t_s;jIwVH0~6EL2ee7%FZLmvwoY zUN2qqvWBHbodIqdIfqoVRu3k{D}<G&e*7hC`fIC$@Yg^zn{MHP7cTE$f%~(a7_0rW zSs0pPQHpNV^)*%ki$Y=EcHd_ruyARz?+^P&n5gjw_Ewbw+)UOR?$L6L=)XD|*$zgn zVDXB>v5b3EB|(E=%aR`#j<;jF4mcpAqO$4b-RsBWJBv2U;<e@ei9zhmBpJ0%$tO(X zN^Kn>{ZC7<I7UqK<wn@$0J%`v*Vhi%>a-DkpRb!1uO;|7_LPys<p>Mj>6NTXkQO=x zEH{iwc^TVLn%|<w4C>;C-V*7?W#+-N@+LWy`&4r=p-5$F-PGY~H0Jl%qR10=Xk34{ ztZC8TVlYv`qM%_|fec8VxHR8r*$9-aPEsbI;p?_)xK*<+)(Mj_zV4R24CO*zx*d2y zb$rR$<M~3Zg}a-(dvEaF{f$?HKV|cb?S4jx@GN}rlfyJd3a~!DeM2YpWq^A^y_uG9 zr<aUXwF8xA6d=KtJWQL{(F{mLgGvHIH4HJZ<SWaiD_hJPg$!p5o`G@G9ut{-Df#oO z6hbvd8|hM#DIp!vO};(kvLDC>$5>$t%~h|e?_4e6DMug?I{RYx+J?Qq3Uu@rtAZi( zWD7q~U$J~D9=1f|S09XSUxF09!S<KYr+T59kP1Z_>+#}%{~Y(8<g)em{EO1OEFM)` zzdXeJ$3IP%kB8UD?kcZWgZ?}oA0GB-lQ#wU27Y@P=`$_;?K$HwE#>`0=Sde91dnUN zNx9p%M`9i%dtSB}CaUX_9#T{xGpZ6mqc3;*SxYLiSQmfpc~-tQQf(-=>MHBNXc{42 zqCRS;8KJ_(x=#@PVU8`Oe1{rP(qWR2EdNs%mJHxW-Z7;;ECZi=`tCX>*B6suR(A@J z&lfT;FN|4b@bJKM_1cB-pKsy-&dSo>N~h;S+p({tsb!tG|Ng<pbZJm~d$ij2&Q5>= zfVUNURr>bfWV3MKi*B$Ldp+=#kZu&nb{WU*8+J#%dwK7-=_~TkqO5#HY$klB=Uo#b zcI2Tc&oV)E7b?A8CAqG$TZBChc_-pkxfjYeEPXRfH+~UKp5JJem46k(yOmUVl)=gW zFvvxi2IuUE_Z!3P>GQiLqw+}WFRiJz+}fJ%aIKTB=$IKJ>9aODX!*~dpC?bi`n;H% zS+2^-IXPxnT6f<^X&@zs8w=v65c4i|)orBqv9-SJ?D9pTdR6)o{cb8UPnL!s;gk8G zXjyjGBb3^)pY13V4{9w11P{nFpnLlZJ5glXy<pa3@{F5_kv|uVDaX2dS^Sx$^}%xP z+?61{1uN)km*)5W!<KyOH!#l|BE6J1QgnaGy2P){k--Ys0oiiXEi|y$M=s8tl2Q%p z#Xj8Wmq$LO?pta^0U8T!zR<4|sw}Cp4`>ptQ2B!K(t)wak#sq;97(Fj&zIgtz5qFZ z<6OSM_cGZ(k5MUz)qyX0qc{<cPPMJVrKCaw%YABsSl)*^_fzL#(<|6H6y!kX=so3D zTp@8081DmB<1yCL;f)BDuiut~`tMf`(gx)UE8l(uZeKl>6aANeDB%5OB{cKk-nrqZ z`N?H{!QS3wT2a#Qd7VL&635fBToYEse-?8voF$|HTa=KM{4?zY-9il!7a!s*06CiF zr)p<UfFg^(>_`5Bgg}tmSUM1Dcf~!D2O8}D*&#REPZIvTvYmK|?!|Ne%j9PgxCaIJ z+JJOnX9@$f*9|`&nlW;}{CHhH{QmtE(wea(=q}ZB-{&iICW-W77k>W%bYSDnN>tZ@ z{LL&>9RRkg|2+WMuCkm$Cb8t-TVps-Blh*tL+J#Ai*dySC)xFe%aur5;fXsK6T9_( ztIX(8G|wQ^?3rew-~8>u%q(=HP0hBD)V<-ujR@qyujKgbY%>2(;L@R<&lxyIVDji2 z&$n$l7;<hrhpJw*>AT_8peFPeGt0F8Ru(F6pHcjzd6EF1dxM$6DP_rY5OJkkBccef z()-8H7s6qbm%0<QlTkve+I?S*P398?IH(27t0;xr0^VCAa5IEB4@<zQEm$1XTAl)q zA|gMWw=+k2tCq{yE4Vnn_4e>&-V=(S<feTX;MK7HEG{g_uPHu3vhrEXp87OPYcf*h zRlY1q5Xu0b<R$s5o#qr$SFL$%U<Qc^{}&@9IoV#AmnQP#^FB^eepgwt`2%YA5@K_8 zuo$QkJN{k7DL{m!oNm|xhlh8Nk#?5t59EppG5LI@2Cc-Gj+E!2f7E!us<7uhL#jor zj=;@KV`{nH-3#&3|Jn4)qPw04ekm~|kwP-;aDY^M4f0}t&VdP*EHh%pYm+w_>$yKO zO$SOkvL{y)sm*`=Zq!bS55rC93#-oOwr$gfpzmG2J|;#9RtU%3CU=fZ&^?M4;y1Tg zE3-!C^ySb*<456>o!GUvo4KoJ!N7*(m7p5TB-WEihOW|>8DyWt#bBd+#IbAVt=Dq) z!#XTkg;xI?eO|M3>Qc|K7$DyLgibHz{{Fp|=$F%VT9ZfOsrFg{+x!>ED#4(&tiu~D zcO=UFaX%2gVy@^8na5Gipm5SXtC{uwS5C`PKl8X@uWOhroB4&J``U{hq#FV$eF=R6 zp+IIig$z95>3QmdLWZllAZhXwBQ<^AEOVdDi^a@o_~YlJotSF)Gf@$CsQrSS2+Iij z)W>XG^GVeLpG*4*w^NnrkM=z|oU1MOaaCKgoh^+%q#weCYcoG(aX+s$aMKn@4j#*7 zZ?rSF$abdLZDmKKTtS}0ADhlEp5`s87Gxc#YmT4;F)IU9Mxuspzh-6EnST9kId#;d z)fu&ASwT(wJVF%R>*Z+RSsnH`)lg38IUZS}x`EXMsQv)0oE7#@8mItP7daSwS_cLg z#72su@=PFeZtIg!T)v?JH4M!%HTHz*nZ4<cve9M97A7VJwQfx=@O{plRBG<#mjFb1 z=`cgFFb(3?Z|vv$T))>|0lL#?p6QUY-G$h-_gPvwoXvnA$-i64l@K|r5;0BYj^fiD z@Y5*dOJCyN!|=5gv2GFa$L)<QsdxW@)Pp0UM8wg+6X%xQyB609%A{3k8L_6Z6(?c> z5A|vXodLpxgeyA+xO{o{H{Y|6fU2_{BdM>E0=HYN;=x_}VP7@rMBc$XsW7&SOsX)g zPIR>XO1#2LQyYxpBe|jCTI6;36en;P5T$>z{s}0_%Z<+kKJHjC8y71y3~uM~Ge<I9 zit9~Q&Zg|GK2eaf2|Tero-CTfT>~3S&Gy%;9nuS_gz&G2yfhy7Tk~6U`5BH~G~f-` z^s9zc?q(?mWDAyk3v_s&8A*2=pKwiM+Kv0?@^^FD4^%aeT^a5Vd8LazCjlbpI=a?6 z{eG{=oUPt0>Qbh1Gorxgf;Pw*r3_@EdnUcEQsTz;LrckGFk2t+!*B=a&;&p{1W#il z1L9^x(TVj$NdlsK@tU1>fzk)G_)7Wz6#@&}RYIM=@<^13REDL!&raDPfxw>Y=&Tr} z$ayMbX&Vv4VIyBL5)&m$Jl)>dj}!@g0k?Pe^z?La*s`v)wWA5U-xI<UX@a&k4h~8q zNI_~%R>6+Ks@V{m<69wRrrr6&<e1<=OjR~(eX-RhHxkfP&C=v|m&HG&-LhRfqz1um zJ*Ot`0)lsl&+pYEQeu?*bj4%kF@`4K`t`<@SeO3f^E$+{$`Re0K$XsOCHT{3k6(5S zd8g)2i)GarQr2B%88uJbVM>a{hSt=1b!Da9L?H_mG0kJF>J|%c2p*jxX_^uuZT0^D zNb#pG!w49`8UW?6x)dYigNdR7V=juZW*i2hbdg;*Sb57i@*zh*<IxuEbsmCzM#vle zK<rs{BdLzkVIppKyG*p6QLhG|;Ic7ohKYPW_U_fT4CoY7O-ZCSd$$Zat)u`rI_P-t zXS=<SCQm&A1x;SwoG(n~-)L`Ncbg#^@xYy*Y_nqv-1ehbp%i1DW(y6;1d_)=Cg!MF z>{U;^eXxEWUIc;GZKhesC7h11yoY0AlSBxf*F({ctg^<NT*=oYb*c|Bb<|BTDk+=C zq}<lviYJEL-bw!{vs95Y!Swkc;7t7p%RbOz&f1PqJQDT2WCyxB$oU%|ulV5_B~RN0 z%iT1-&`M@AQagi)WW{-l4FG?#L%nwuBWkJsl+IQ^nhG=ODT#O5T1!F49mh8LUIxGv zXb7f*q;K{E0Dkz}`TYJj%(79~jYu^w<xu%?`Oz`qoW5N5$!DIE%2hCbRvFflr<*7O zSNz(weLCjs1Mj?9_J-+xPSc4#;J-x!jF{tjOO3qGf3xCjrLa^<?nk$eA|n3`->k&2 zdB8`mTH>4B3}!~wKZURA|1tH|0a0(w--y!EEZvezcS%Yvy(~y0E!|y8cP~hHEGgX} zEg)UeQX<mb@b0~OpWpj8%lFKgbLKN~Cf@5ZzbpGTS&Yd2JE|U1DCK8WSj#imvs<Wa z-YE<9wuKdrK7Oe6$1jeDCb=LM<|BI6D{<<LvA~_DukDhAluUWDBPqxIfDI*=IoCNl z1v`W7K~La9T`_|qNeMK5c)$vO<GQY-<kvr&gZF$T#Q=J;gKLyW8%e(78mLKL#qz#E z3SXCGF#$m$20sXf#zVT~X4lSB9^Z8!<OYT&t}aH@7rX=v+oGh0ko0?*EH;{EC{cKb zwob|<e^M7__D0=nKxG9y$L@4ow(`+okpFWVfAVNjvzmDy%%JF}-8A7AoyiivxJW?n z;cR8(wr|{)Kl4(-5#oVw&j-kDS3gE^H*%2bra~zYGZosGK8nB8)qJt-uPQUgZco}d zy5u;{-@M>_R#aPcyr|O8Zm=diOspz%qD$0hV0C#5F>{|4Zpa!KUAUdTf;2b6qehSJ zx)o`SJKwVvxO##qPI(^<xIfb54*;ke0yblX+{VyD)$V5^%zGl%b0=1Mm1cS#DQdg@ z6dZcRb@gJ8d^&sODS4*r(~1*BmXXBJB|vYB^PU&Kn^}>>aZtf3_x4wdM@3nJp8a*< zJDj&m187F|XE8ss&86VTr81#g%Zz+qSS8Q1>-dqfxBlIw8#itH!6`^b!Q7LRxr|K5 z3Q<)?w_r!0si|p)_+6pX(o`XzdpCByVBO1jknEi^hValxVuj)I>U;1&d!XDRiB)t7 zZDr2#>T11;&n%Udvdx#hte;OvBn_tOND}b+U_gGc(TO5`-1=)|IrAwrvr>c;lH6eI z&(=PqS?uFTf*%My@yK6~yoVjFO0>w)qi&9U$EK9`F39>w#XZb&%0j<p`ckc8YbjYR z2BRYN(HXmltH{v|o?ZQ7%^+F&Wp)YGEUTZIeayHtAja45&mmiIWBxpcoO^@pOetMS ze<nK{Yk)907HY~iwUMm#&JLV1*EG<kTRpeF>8=S3Bh&1G?mWe+`;1VBdlDL=m#@C? zJxXM%FE*XY+lzBkiOYW6JeCQa_6}QA?QCT5pn6t<hdBONeGJ*CTEs2NsT7h3c^_+Z zY8Qj|{SH59n64s$caHLC(wEglINO0oBLgpk8gfak1AR?*G1}(gu-dN9Rs3SQ?QG}^ zGs@j2tpnN_5HR+x`0YtY<RGub(#uF8rtZw<Wq1VGQ1o|-59h$ERmKmAzp9Q%WS8G_ zh5t!m8!hA$$SlWx^IM$Cn(R!$kc_AlFC}KVqs8X5QIpKY|J^rNCz68IwO#IqJ08c! z0^?^lMs12hgoR}<Ylq8)B#_i&xTaY&eYKUoc0UJ+1GB$lcbgp@Uth=L5|9x$8aOL0 z@pm_T`U(8POtMrdbtUe5e`D}*D<V%r1;80NBYylmgv#$5pXs!?(23nNuU*nYbWfb3 zx@EIv?y?4_@OJjSwv~MrM<OK{(jfoexo8-<(K=pa9qiVdUijhcrG;3w)0MSl;2Q_l zYGBC;bDzYY>R(WODB4}iu};>97m@j|Xl=kgl%H;xQ<b-SUzpg$_QY8TXYbt5hdnF( zP{4igtH#^&<qGh{Hq4HDjmK`#<xBG?3sO|vhaU#EDY-NvLB#Ot;w3T(LM$F~W;`ZI zry$Vp);A{J(8S8LmC7jM0<&fmrXta0jR`klg&@q3w5>c*dA_KezYZ3UbzAjhp<xF2 z;&ZiUediBng3`Cz>CMaFmvXw?OJ@c81T!Um0fAyz-y)0}XFY+`?fu5v^n=j197dg< zHGFd0VV{b3p&+HAV;xl**^o(?jX+zNFY5cat(r2fPj2qyObiK^9r$8o13<_J)Sl$! z4tQph$a7&&@%A7)@eaZyIwA2Qiqx`Xx=J3@b-Iztm4w7(p9#9xMXe1YrBlog|3<sx zCn~_XVq9H_9vX&9aYyoMLn?JqOyqzs;^lepIj&CvUAg=WLmN$YGVlrvCoL-*o6dE! zG3M-}H_h@T=R9vdk@d8->md<`;Xu=hO_$=`$UHh6@ury4eNn?r2RkRPzUfhKj)o!X z=RKZ04@<KbvGe$`vnt_F@Z=&eg6R!*)y#5^%d>{=t#5y!q+|MzDBpr%7Z!b-(yx(Z z#rrpD?#m47E1zyo2|j!M)P$_6_f;>VzlMfjsJFRpi0~KG1%i5jPH3o!*YIF)@xcwS zYlyrn%OsG23~{6U!zBjQ<!0EcdL+S1JTo1=dt&DM+mn?HcX76X!X){nof4(A?a&|e zC9!4GE7mx&lk`vcAs4kpCk20@FwPkP<%}6<&oX7g+q02YJNtGK7K0Fi;+B<P*2&-x zAH)J<)t7d$t=sziI5lqjHHbO+L+sUtG@%p;Z|J*GS6lhu5YU8lAo@fbwu9@-rl#EX z{yWF(9QWzZCx=~64;Ka>zwmN94oiMxzBVi`&e(RJAd%48v>vZ8U76^$0gUL&%v&=y z|2?iLHS>#D$tvNkuwUaPNgJV2z{d|;`^!Tue9wTYvl`v$J3^hxG{t6=YR@FmPy>Is zqeZ?kCZUJd#!#l3I$QmEeAI<MRf_GL$s(zcd>ZiY*Xh4KK6$=XMJ%i?@?88yk-Y>t z`5`l%j(r4_Tcm;jona>H8Xw+0=bseG_C$ddM=`YpEkX}2k7{~n9*wY1kT4?V@dCGU zc8P8Hn-w+jsE4-x?K3r+_nnqYn~lTkl;{4OgL9=8-km!)u?J8fK(8pdY_~d>P!M*1 zxg?hrEg$2xow7#!qj;Z4SiwQCa(Oy0nU1h4qbcz84C4Yn^)G0#(eEI;e2ipeQxRz} zRy0@9pbz}8=#`vRjsRK0?Wk9s)A$HU@cb=j$Dt~FCPo%ON&Fnl6}p9YJ$|XkznSZd zs9qE6kblnjqj-3{>#_C8gcy?h;>AZ6<lMpLLIIq-+h42#$ws07W(LSJP4+e;Pv#Fg zL<M2iZ0|nbJscB8L9$XYKiB2u`5FPsVcdmL_Yg<l(V`EXQmA!fP*cg9eH5YwXaG!= z_$;i;dew^{wRVFxjNfU4CqJFhAdWR4KxFfV2`ASi-yTeS8E<A4XfQa`Y5%hxJXB4} z<4^EL>A|E3TSCKZw8;(yvYIXa+M|SgR4}`pS#Vpy8#s|?V*LW&!iFF-zIO%5FL#h7 zCC{j69yc&e!})bwH=${lnFbDtp7xL_(?j$^Zz+}U{n0q*6OVKA;4jRp`nqN006MtO ziw4H^?u(o@DAB49CX7~sn}65ON%wKF*ksc6hA&wGwWanEUz$q(+2Mwp;0!NcZQGzS z4xpf4Gx;4B6FVY(k|dDNSTol^xYDz6$Ez`gicy>B7;a>mpDa#{Q>`A9-&BRxE`Lxz zG;4uh9C>(Y;$|wVL+izR-8b}h!d_g@7#gy6rddppFzO(9+Z8aolFt>EebsXs=kWf^ z6I<RJT*JKRBS}O*OF!U9cT-S0Q8-&7xnY$R+bxm5g{MxRDD#PHaTqq%Y(3mHIjlYP zAQ`Q>%YM+0eT9O8GO)rbpe8U<Ij)GC9T^WVo?<MF7R#!{)4~w)B7rgqWF|r8ZWZX6 zSiiXgktZRck!{SUtJ%dRfq71S9GXf13p1>^*eiE+|Lz|04`SVP6ZX{_FGy`ErcbVo zWCwy&N-ocCdFGpr^w-3mPH+609^c^9uMi6B*xx<ZvA;2E-8o4_&zC0rH*Yg9A+bog zoK(f|+NlXj56CYQr7pD>&oKlUA%Y<K`VaJ$$w5OxMWs<$!KyRxp7qZa`;A|iqNc`p z;IZre@Ra!Kuf#&&5o=slR=j!L896{ZrZoum!u;esA}((4&>3)dITEnwT_Y2X-PO4e z7Mq;Bo-GFgdOaxymFNG>YJNYoWN$~Sg=W*AwO?zYTkDr1?`Eh9uj*h^`QqGdmI>yU z4jWE7hfoX71=D0ETH*zxCHv>*n4w9bY7CT1<i06=zRq7!8lA>K;xORa23hsrE_6PN zF3*7&>Y`BjKOBszrRb%@8zq1sG1jDqjSqPD2!$s6q?Yu9;&!~R|AbgbmxQb}gMO{H z#+6rdoRIQI89Ow}`-?RokBzemGE}Qo$z9zl%XBlt0ZdZx(DuT2t<Y=c8T9@%7<EPD zg(;G^RxXY-=f)rt<;B-ef{EQZ^O=y&{=(CaIEW!Y{PARI&;#XNkrIe3-QYyYBK?~? zFKHM0?1p06G!G(fGy?;m?xa83p|k|k=#P~*Ag{$AW5TA?piyz~Em6e6`ywa3p-wc* z{oLg9H=1>F+jmh@`vf+Y26!|;)dp20^|}qNL5ml!P{m1r53G6Ug;GHWCnZ?bIGkD& z$D5b2?n4IfP`TfL+lV?n4PfubXjqOo`7hyqVr39eEESX4m459RiUJP_4~fi8n#@e# zwzH0~Bz_{O^CZO8ez*ja;m@PrCf&%M2vU>quuyoQ_2l9Z^Hkz&mo;O>d@)3HzY<x0 z7;E!e<9f>8tM}}P(bF<i2h)cd-7}5G{3O;q3cHpIv~5|!YE6XogYG_+jnu($kHOs* z+!DYwhos-C9Hm-2HZQTGBdW=ae|l0%Zwq%Cl_lpQ_K{E5XQefvsPzK1Y#O{f49hh~ z*!4$V6mAG8{ebdZ6Y-7xg+$E-xaCh+enB1mkv=leyK-Om)?FoKOS6I&{jmvQHu_tw zZO&-c^%GI=-SbF6HE2{yO%nd6(=E#Y94@;^I7;T-0MKYExIb$($Hs{?_jt)HX?kdC zuFQ%(oQ<z#YVsmLKmHzPLxDOR;e*vRSAJC16PQLb&;yq0Mae!CDFU-im$HR2vVv!& zYA7FOXU)|bUAdpZd?VI_`N^-r)_=3(TU8fE53(o>1SDEJ>pIdj3jqqDT1hRMP0puy zBW7vKSyzlD;rZiTW|t@_j2iaNeHub6_&vdDWzIfG_s~t#4=HQnA7jN&jvnvB_KwzA z&|q{F4NZR8!%sV>b|YP#O9JN#E~mJ(Kq4Ny>2i2+2C)dY-ym-miGqxq&E&R`sDZ5H zLURs8t)PzrU@ZVj77G|7E&ij#lxcNRsGKb9TM=!F6fSE&BnK#Gqtk}@pp{l=GsQV7 zv5>#T!j8K=_jw5%94kNn9d~!QNfpp8^2@9PfQ~SwUj|~PA&!%!W6!q+1|172o09UR z6{jsK%~HMMf*{)h5@mrAY0h)u4bRs8YHZWEtGJ&p0B<XnakGbQY4@j3R@L=yy##60 ze1c^)`KnZ(?jLqadRMx|pqKlq0dfZ;eupq$PnR#75DCYEC|0|7>$KG57?|p$pIAt9 zqxdmOj2npcANdMDTgUszhkR*|+f61di5)$%`~JsVI=@zz`4Bk~<Oyt(%S4OCCh5OH zA(Cn?C=idkf<%UiSm)hN?`e2R&h}*Fto;Jos>Jr5W8jovZ%q-#E2irG`aBZIsrGUs zu&p>nx5DUhSWE%%3!V*qNCRkbTAVN0;N$%RDc<Lk?A!0z)o>m1jv)-RA1jGC4BNLh zj2ay&U5N#%DG^IwlhX7F3U|j4!QfpxkiR|p3Vz@uh*nrim~<;9`@(wHOUjOuCsYM) zXf4Va@ov#(O-XX-&5xZHv1Y*}O^U?)?(ENQ5dd#LgjT6m?oeK-x3_@_&#iyaqn8Qx z+(CId`wa+#vK`~a=6YR>zoLf9(e)u2-A<ju2P^oG^h<8r%xlyv3s9S0+u|_POizWT zETBv8)|REN%n@MVot5eZJ<n~GnO2ao%N$0abG$2D5C4M#suBw%VbFqfniOJq;udYk zuNiP6dmLNzLP-F;*A(igxRmkKiW;g<vUtGu?fuA|Q7akx3U=4S$%%m^g$wsgA}WJ^ z@<i+!qWy^DN2V$qdZc``kmb+M87}gXON@WJmrELJD$)Z=uQT(nLw%<NiAWm$c>vE2 zCMe*4gT%yo6b`{(hbd9lBjs{aAC|ulgWIS(M>s@^lq3bE!qojAXZbW&;dK|6qVr2l z_ZB;+F+n*`*Vh)}V^ebYs<P$6I3sjOw0xBk!57Z+k}wiFs&cj1R(8dYh4JWL9e6>} z)~jBd?dovt{7*o$BrglbBB5?jUy7<~J~gb`!~9SIzCFL=`o<{EkL&j|+J-G2z=~)X zGsp5~_DbCUhhFj(Mys&qI9hT_D7y5W!pCqH_)@3T*0YblOP5EBW|u#^FgaiFf}hpY zA^%!lS7w2y?f+AS<V~vEWWDYh8rjLP%J<I(2~;Per2sA*{B)EVIQ*-}qC-^J=Uk<T z#=uPVOYBQb`woN(wbz@UaU*0T4-nO9iX@WFzQOvbX#j$V`C6$E_7PcO*oW}l?~d5H z@Or9$nh%M`CMz+#TFZeHS6FW4$$dTj{<?YHhi5OU<b~H#r5wHsXm*&5xkXt^;<SDo zW>#mSd+X#4j40ra1`>!5BLl?z?+-T}99+3$YYerI#2)WsO@q-xXeH3zl)M-R$)dI3 z9P510K1`zqLVDR@5T9(&3_Ua*Dhuo_kVyX*V;-1vdo5sK?g;L1`s7N*=ZQK6wKNwI zpDXI~y1hJtiS4Pr)qV6ae;Q6H3SlWH+M6`X+^`?Ny(Nn-&M8Z$mgSxj#B@?h!Br3y z@7?e?=JEzMV?zv|b}sfV=e0SSCN|GBIA^<=ZjS4+<>+>+Tc)upx^6a`a>UygO76MJ z)CC29eMV0|n-$rnc`>{*NEp6)K4oP?*ni@tH%q5cbg1$Mn8<MZPggHEr2-uG>GPvY zEId5#0x}!EQ{<nd?`Z#45VM2fwTY2rUtQ=GUAioce)NH!Y02mekLR|{-dRhit2H)S zHo0o=u|8~ZjO&hC?EPHSqmm0Q^9xgu--Ga1v-294y_Qlf64=LxfgRmYJ<{(gu6X-~ zMq)t_o)TVjVTJl=8g|s`XOU8gcWyq^zaajIP_h5KqSTDU$`#&=zn3jD+8gGe-d03d zzP&YJ&WQ;N|2Gd%JeJ_B)olPr#D-6q9ttUJuf+7#R#gV#oy6CZn|o9^i;~AN!xIy1 zduBP}AoijI--g{rAOk;U6sAdN0a%f&EdCf&1tq8X4s%3_3Z4Exjn+Iyn67I8{x8Rv zLaTnq?_I_&G2CK=e^hv3%y~HOyD~0<1)RvmTVe`EEO#u5K^)a2BW1+_+@4zXmf1K# zgSsr}0Ds>3!_*(!H4)R*+B1+7>4e5@T?*a+$%-q@*LhOxZ9n~#O|fNy&;P1x=l%iv zO7?ATE=*n~R)Jo%&TG2Z(JaVf-Eq}cTvw7V$S#8kL$WH<9$+KMYrR<Vo6!B8!|8ot zVxC2lN~5e&^EoB#y(2(nk9XQ%`yStNS9Ygk=)GlSVk^y=UYQ+j(HkHM`PvpX_quY3 z2S&phn_$_3?HfUMc$Y2e%&ii?hsy&774K~!>y^TJqPQW*E`dLS_-9aqfcVqNlNja1 z>j<4~%~TC0ujdNDcH-w^k$ENrn=i!Ye++_UKN8BZ%a_Y^&^>(CVj~)XKdY2K{&kB{ znJc_v=_Uqr-XztortZzbhsq$pu8q=1%khB<y1gO}hNZvLdL@Ih4fv|NzAuQW$~1QA z3sjHsnirOA@RC1D6VZ=}GX$V9k964?WS!~lK{dK2ZTZ`gkOqcZ>{gsd8oa~a!t0aY zM%hcQskCbC&;cMVKg2;uRRTtl4)!k-BMbRCYPp3DmKn=;pc<YIpM$&V?K6nnWohp* zZTT}V_+h!z*D)WPI-WU{%^&|*IlWmy7YS=xB&Y+GUqNye=@q;?TKtd$KhM)8J<2>z zq6*TpufL1NnY+TiMwk$Jz7w(DdP0lv7^m)Eko1rfaCaU1CZde!ix$laGLh89D$@kG zh>@Z}y#xL}V$h_`I^Q!=SfKTfx%(J!Id<5uZicyu86q1<9W}RrK>}(#rZp@~315*9 z3i_5nNpAKI(b6pK3$-QkJ_bi{J_qR7Xw7@1@6ff@hl}SNWoCK;2DuLp`4PAC5S}sz zt57myKur5292M;0m43z_U&wvTFk)SEfkP&pF<6z4*Mz%N|I53vnGqU(MqBCmCfX$% z<TW`Y>W#~xCd~O_hiMA@)kUyP5({Is&gfEJs`z2)$bp&(3w^Eq=Ao(O-R_P;KXX6( z2&sD7S7zxX%eK7wScMRIu#>fViF4fyZ~n)5ow?W|W5&_X$`QLgijyaO;6kazMHyV8 zkjy<=d`;80MMz<4<W^qLluWr>em`&3ZSku@=j)5iHj!fp)_M+6l7b=xFmA0%V)!|w z^mJFZ6Qjz(UW)wQ%MI{Dt+*t3&qlu3AdL7_gVGu8@~M*GYi}~wt>S*lJF2||1=F{C zn)N2fC|bWNX`xp(2e9|x$thu|ChFycG4m@7HkSktn1pPN_aS|dflRoT^Q8>^%_pG& z?w=x-41hM=$tg$lA4xoLp47O-m;-@&36X0OhgC^KSBVg3vV}AzwsQ>g%$EVUuur&a z-RZn<%w+wP2^s8>y~!UG!iH<>dU%wEGm7Y-Dd`LcK0EOxiE$yO+7%8%qA(oC@(S{l zN>Y}V&NL?0Iy`6Cfi`dJ#nZG8P;Ey<E}(Ob8Jtkf5d-<$B_JQ(G>A@hpO6u=ce|%* zBo<;%y_fig-2d@uXVm*u8%$nJorWrxjC*si08H)c8cRKP7A$qPkTYtYP<eJ$dH!6J z<;5wTlCqt3SBHU>s!UQO{A#4omz?&qH7(hZ(2VeFR>@#xgG{K+=-TTS;(KvQ`*wv< zq-5MwEx>uENR3Jp^J6-y=4QXAvoHz~T|TGHyZ0?zNK<&&6r{3K1IlsAhSOtaxp%CI z<8G9I-`o^vJk5v|n<<wY5+TwJ5?>e598`hsjGQ<o%qA`jfaykpd4M7WGl3jzxTLby z>fBs`l7BQ^as_!5#D5_90AYAI;U<Ur1%iHTKD@yC!lr{%)pT=wGlHT3r0VoteUWF2 z>fwSZnLpz80kB?5;dkU%*h28@)QK4<;;a^UN^9<P?y^oZZsZ4H208@o3i6aOX>9N1 zNc#ZOA@%iR-aszL;1AK=`kj`VB3~!<@7}a6n!Z7N!vO08<fkm2(4_NNZ$@GLOwT)m z|905+cqsxxsFQ;*{~ZvQX%Mx(wPHg9wNrf;Ewc%EqoLS9wA2F9i5Mi5LLU3=-;MxY zM@n2oZ)XI&<%Q2urPcdZ7^tMnZvy`V?z0LlqovO8Wo%~&yLaa#qR_L+oKy)Q&UG3s z|M!fCH~=y0$GD&v+ll~uCd+LL3jcV_HM;H!Df1%ovXHrTQSN(F=6LKv@J|JDO9knN zoZEr!B?pb4`w4Vkd^OxgwEu2!2SyA8)yBW#`MJrosOtqJr%XdWaQCDI$k3Y+hk)fQ z!3rG6d2~9`%%briXAn@U`y=FK+m<aYAgG-Xtiz8F^UUwRU`qDn@&U>u(#;^EFTuyw z7@fHkN`+D&(&vA+0Ml46cx*@jk>k-RfV>Hye~#}G(#|uPBiY$WuG-(LtwSwm^_eo^ znuakvuG`k@iXD|hT;3q`X!T>7)YtltfjG1<bED_Hd-}}rRP<i(VFLs^I^UR-yv6nD zT`x`uxh*?hwGeRIJtfl6{1sax_(Mv32jH87j0sJW6X3ykfFRw8GCq=pbk9i~z;E$O z9>^#&tkjPN`^5Z~c+=MBR`@kwq|Q>+eAu4;ja{mrtLIBf^O?YnniI^edP`Bj>cZ!@ z42eRwrhKNI(%~nsRFR@q@Ca+jVV$Zu(;6*ggBV3lo?O|(`X|q!Lx-%ji5G)n$njs+ zWr53Z$9u^y;7)B!wHV{_Cj;vhZtgTV7onUv=LPTB8E?e&Yh&lBUg^gtT*)KfW5{t$ zF2k=&zi@-UTUk@3ciGybC1fk6cozj_Q8f=9pmrZ~!H_r4DKR;C!MEiqU6}^)ofLGW zlT|8|ZlmPqzSk|Bdj(GLnfWe(d_Z>O<_VNc()$`N)4-|WC^|t)#lw>JA&QeID;^}) zhgx+^4%2R+m1z2z;6x25*`v_DG*vZUaMYGrc6z&3JpQSKTP`5fGV&3@NNpf+5FkE` zdvc<lqx&h{!VxuO1W&kU)SNgN;ygNhRUEx^@k|m?P~Ow5Jd+J6@H9tIC6RZ8xSO5f z*@GmQru@ptq09gNsAl!a&FAi9_^Q4nUqME3FO#rh$NZc2n3u_|G7)~_dC)23Hu;6s zJoubi6{){B7B~HDF-@VrY=E0qo&Iz?k8E#(jyJr?WT#-TaKlzc!A~pdn=eIn<k}hC zyO?n0p!(OC^20v1FYGwNDgfunkPTzShf>N|h5q5b6d`0XUD@~DP3-BS(3N<c#QM#I z5)(QTlo8?N)~ltuOO2aH1DSw<wxe<I-KKF)yx=(T<<B%UuDSI$Dnb(BO=}izE$9&I zuRjx;v-iSM$&i@PEm5<5j*Tc!#=4RbpH=kzws}V?ll-+C`)k<RjS%j638ul@zrr>g znIY*Y*0_MD!@Q$B%{Q#ETi$6WlcW7h@*G76X~((M@4IS$xy;&mJ_B-kFbkJ!CGqdC z(xrk7fS|ejB)wF2Z;I?;+U@-9d}rfI;pS`hls9vyjkvFyR22GGFexfFxM0NfBwN-! zi2PaaONElqP4s!~mMDFIUt!I<S`QeZs=Khv#Nn0e_N=wnc>N0LeFSSIqleGM<v#yF zK>&)qWRyTN-bc!?;a0ZQ5_{>J7G6txH+n3FxOM2Ji~fSTZjcnOKYCark!~cCx91QW zHAfEmWYE3+S5bJS(FM);mjRtOYReL-3%;5$s|=UDBa{+kj1-@OH-o5OrYmtKFvmKb z$;=pjRfw%SBI20&pp@L^xE0KXJM>Y>SJ23$H;C%-730UGcKwByRbxB|d-?fg=+-^) zKTq*CZ!&nAzjfS`r!XlHejWLBo`>l}KyN_Jk`gvT4gP6{>-^3@Nqd?Xv|XZJRrW=r z@k59@<6O!xTv5h@eMld?itTTMi>!w8BVM+{f`%h-H<U@3!W4dKlD#9wp$0GqblhZg zoY~mvFVtRR#<)nKo(H+Fc$M-%oG`l8yPK7QO{97FHx}O^w)k_JMspyW9!uQiS&{a< zri-r@11hjDCD4xSP9OgK?Ef&~yc@S7=Gd<7bEIh}xc~yHEQe^tC6n5$FvSN5qSGa7 zWj06FRRIn=P!h8y@72m}Q#Px{UwZ=8fCw|kOBb5EoJDSK4|=mtm(|tm1{LXTr<w$| zd#&{whmPZZ0;vK5se|n6x+B&|Gp$u^ZMR0t&QDY22OX(z=Tm)%4%VEks(~(P;sc^% z>nX!e#<?0}doaOA^?kML>VPMa7>JkuW0z}G&(p(vng<hIEn#S^PYpQI4nrI^uI?@= z{i95n`8Aa7^%bYRxPs4W<9AT1X`4+Uy?PY_0H=cz$wZfh#*JWbAb8n_>h&+x)V39W z{=J)AJ8^h&8WRBF5p+ECoMJD?PsuV|JWMli-9m8l8fzUkb9Ofesk!$6xvQN|KW2^1 z7W7o0;mOEqzYY3iqh?%P<+@TY)Lwew31I@n4Y_NbJGs#|&L=r@9_aI+OS6_EFc-ym zsa_0r7<=#<Ih-Oxow|~S=>BEeJ@kFVc)53FUT3>fbW6Z3VIwekcpt;WXdTA;{idXk zgbk3W3oMX1G?TaaNHBTx(eDJE1yXU%^zQU<&a!1r9*VxLHDI9ED!aHOF=e>U6j1S2 zjR(CiL@U!JuaNp^#j$Jp0Gsu}o^e|B7?KM?xQ=pCf)AT}Jvd)Er+LkLgIa`GwDB71 zfe92D6S{u$t&bu44I43jU{c04Y>K(>{xw6_7v<Z+&r1P>a*uXZhWh2`2L?F;<(%Hr zNLFi<v50=+(L1sUmLE$Hix9sUO=+~;6OUSO6(MEsegABBl3N{hCQ#=vMd_(99=jiY z*B{hsUxWeAPuz=8g53`!^|PL`pSbmCSg~qGE{^Lk_$!giI+2G-$;l?{kU~J#wAK6d z4=ZSi-3Dsyg_k8#IfYSnW07Qm%dSGD2rXhuczxgZ)N_x*!g0L_|1gwK6p&G!F>o!u zRGGGWbGCCnVLzJbB<dAel@;RbkaSeXW$Ivz{WeFV$QdAB;?d=s@*ZA6Kc!SAnAhXq zo=2O^Z%jU@U|V~fc#u6br^eiEW|81YGA6cQ`27)*xzTxHF#Kwi&}7OZR2ksPiB3oC z6+rrjvm@TX`y~xmH+=D8lb~!PN-@KbHGNIS`^!(nPSdrfd>uPTU0Zb}Tfculnr|4C z^^Xu43%Jas3JjeclddtohJwO}!Q0qN%09?hCOs3s1S7rkAc5Pj1glKlvEPoMVNF>- z=m{vl2?0AL0IO=Y4}W+izx@De1g$Vl<RJXHz&+U@7O$EN7DMbD@3-go{fgLBl*;Pg zS|YVzM$S|<b0|k=sc|}S2Z3jDJ~|_>{S`$4MN^tLc9*zDZ~_E0H2pd1BY7bHPba40 zg`0G{A<VkyV_@_wXSHkQuwNqKZCq44u;xi~59I{SJtpKRUysd6b!tx_0to4YuIje+ zW#0itTNthAI5@&ts2)`GC5ka>5Z>brR-*X{FW@Hs{A?oIgk`UzUaX8M?X@KAiw2Aa z3VgcWj1zxkc}O~qTMJ+u7YPEBV1+pmTSQ!Jp^HQ9!<L4^u$Hvk`>D^EaYU&4ccUH( z1)H{-jLe6fiU8$H0Mu;s58!7%lvTGaE)E7LM>u%mvMnz;hms?EF)UTFsYa)#1xBWc z0G-nA4+RIM9nnNalvG`!Z{W)dF=&AsOl}^Oyd0E5hBzanMyEGz^P8*UphFP;(x5u_ zEw)#Vppd@K`5yi9;g7#t>Y~2+B{N~k^jAqduEIMA0}zT3B_gz{Ae7>ZrkYwntecxU zZq+EJUf-8SiM~eJ5ZI>@2L*!A(nt7Wh&5eAI9@v+%skh40$omtJ$x9Z^@vbBP@WIU zIEr}?y%2HhL7eZ}`1WZ&i>dp-P*Z+s+4t3N*^j<hsz?$rgwNQDO2rad_owSRMPZe{ zP9A?YfD`IaINH2VWFiI^`0tHGIrj7JPn8SxUN4FIyhw(pCNRJk3@TUCtBfD{*qRbg zOCm#_$+#|T$+l2Dj0EF9A%W^?lJ^C#trmURU3L7_mw+3s{_x+%R1{wqKh&h^<Y##4 z6m3(b7oBcF!B#c18lNZ)WK=QSJ3Qxh({)8X1<F$=LU+Y2LH&h9FV!DDmYlLkWe;*s z{&2@;J+n47L-BalK<GSK&kpX-!t2f=BXvG*XJf!H*HGsmVNg(I8H$ZX?AG`Qeukj! z@8jvE#4sLbyw^Ls<*?>Gl<F#W(`%zz1Q2^Ta9O^)7x2mQ^-k-*ic>wAMR_>oj<Af2 zGm`ecPVTEKAz}h}0=pQhB#UI9o6+1>-^oimHgz>tLz)9{t_P%-kZJ@gq-q^lKXpii zslQiRj*`A$noz0W{1-Y96!&h|;r))eZbuo4=*BrXRC^)To^kj-wO4jaCC)JMu0r3r z%5x+m^CtbGu-lV<VAlBVzUp}<C6>5qF60O7-kZ~KU*;D&3!ka@DoyPHqBWa$mq5Qv z*}mKCZM5M|OY?iEQkk@IqIBMdtJz!XA(DTkR$|y;b#P>5eO51Z#d9@Aq_L@fUwyB@ z!+_P$YZcH5Pb%)B?9=AgPa*;ENflM_=t~@QkGNk>$&{fAf9EU(s*Q=Yd@?3%osUWq z1W9@5JTOgQYXRvzF|yH<(Gd{7Xxv16Zr3bqJl>Q#&pH%jy%H?NVYmOVAX_OYf6cz; zj=d;b9zWR3sZP+}A>VdqE%(vC5Paetr8%tD^Y57;cml=I7*2=GL?$%?!Hr=$;r_d{ zKM}3VSqT}i##-&5<zgX<AMthNhB(3BUJVHO%~wf$bMR<QQK2TuDusNr=2OUD?X?E< z{`a+=LFN1J$k5+XQM1qN2byag&xZNbL%_^(W!k^qQT^=2?>3lZ>XrUZ78)JC&~#O1 z#fdI0g|yP`DV#H2vMDJLe@|CrqJ@z}@ij~n`@dZZiEEW?CGkd=^?lgApdD>=%k0JR zn~!j2`8C=I7^c<4%HC~Sp&ZeSY2dB{2XAe0kyu~F9uXtqWlj3FtZr4Lo=Ik?r~y~4 zyQ6yNdO`n3Y;Ox*nqVnEdoWlXkHijxvpqA!2&=R~%{$MCuXn$c(^4OQq_HLigZ{N@ zIwx-t3t228F81x__Rqc8QQw&hFVmtaJrWP4a<qR>8{tEV^Wo6evKp=--|#2FNf1WL ztZk+M7++2AB^%YR#CZWc@n7GH2s~<D?xW&aN|CTN$My(vO=XFh6NGzmItrVYXtq8p z2nCtfaHu2#!v4{_2nffJv2Yu;_5Df~2*F^@dh}@xl?tFy2`Eiht`5vj;*RYt;Tl_z zL}H4{*_;a24Rd<$Jzy2ZP#{rn@KRQ#bpJc+otRBA<UO<yK%L;^l=l|-e{4PLQ++Vw zcCzbHOBg(@$(ag~aSBUK2Eh_SIuZr=Khf)%E)o|AwrKd4=Ok+lXGiZPN48b+qSx<~ zvZglb6vYFlI}2q&G8OqzQA5DZ0zV{GBoGn;!Vg#`$M4Z}oP|DB3c7|3hnNRJ1F0~U zj~c)tc_<hNAEk8I5-+gRY&HsvZpLBY9TvfYTX1*}H(D92a?I03NkEE8d6=Wfktwa> zr)-0ee|0bdLiVuNXA|liR0~5<eNeUzwf%kxf9@P@psETCB3nlAYJ7n<LNJ!fWXNzF zVFf7>m#f%SL5Yt9=~QI1vVi;W7JMV=(K=>SEq5RbDr)d<{*GHs@V|3I4o4$W*qa6T z(^=9ryz>edD;c(2_^_A=w(_~-Oszg*`mK<OJ8yg>h883E?HgufIMIfA-jo@^FZ=ps zO&{$`np>CovL2X%+<_zgvXc!ze0<7Z2|bBlii)oj<|^1QE)7--P1P{pd%!y+0`(hT z-7<Hiz2v@mqco_H*k`e}mY0us9vV0Oj-a%Q?Xu#oyV1bnyy4we9Ro<Fic)uJ^G-AP ze*};9V9$~OjRiB$^Cy_Pr5)k<VwPPfGL+f0B@o~%P4Xx87xnQI3F_+PR_d#f^0gj( z>&LlWkLh)XUk~KmK<10MG2GUhv(L9<haap%qjlj%GW`CY7SOQUpo?RfEMB%?nHId@ zIJnfv-V^!><Lsi13i0f$<mSQ+El%x=^nn7XPgOz}gDSx~?&dWEC`K4R{T6K3a#pRO z@AEbmtQ$%HhcIi{ruwMe<rZ<wcNY$ypE#W;E@+d21Gg)yYqxZ_;uwk4+E7@S0X{lk zm_@07ijk;KmTfF}C??8dlsN{hGHMDJjLvE7-t}(=YXC<QteaD7vnyEZewj4?e@kF& z`j<=}xG##aU;yTGr3~4Yr4u5&Ww~v9lWjPa-uE-FWgX91nin}Mn(y_C1v{Bb?PSHj ztX+!8_%7W+w*^lrc@G#`%Yzi_71fe>w7;Cp@@LbIdoTs{cPkSt@@SR$e)vxuJD>mb zXbqb56wZnrEbzbjEKtaFf1Q}*@d7twAUN+^oz;k`xD;6d^lQ?oxdQBKz$*7?8Leh8 zTEW+^D{>(51OP4A5+w5(Tw^Wr+?94E3#@}x8?3)TQf;7iP_GM{;n8RQqqGoIw^wkk z+I*g!X58d%x-4?sf4}Be84Ua6MqpilG-4Ss@<s}%#Kr9ZWfP6xDoF&dA5;Vv<{NUv zChK|J@wnh$nY_}`d~%p$cypuyOu5NDxbyee(prT<#F)-uaH9hO0q!2WsYv>rJo<Lf zLX@ihX0C&Y6cYQi#UqkqE9XSaWw@eTzG*y;n&Ob5@Bgk0a$T;Og3^a3>f4OHU2X?O z8d-yIm5uqgxHPJ0<nLNM`4GqLj6674++!65E>QiwQxu#F6shi8da=UXQExEx*LRqf z&qEc+7t_{<ar{iUl@jHhoS!wA7bQkuS9&PdPRW+x;IAKxafuw5wplMdvsBu8VClQg z0Y7s_YuMZM<o)H*7S#QoH`}4nXv8NO-68<){QLtCcj}E1^?epI>n&{Sbc0-;#EjUY z{k48C?CgrIIhkex)p6DIq|87eWH#R%fpdZT>Pp36`nlyL@YWhP4Sn4>VPa}d>U^aN z3?W3O(o*!$y--e?GPRb6sc_htdi^iM07tCJB0T&Vqn!}6NMvYe*SVI`%Qq^!l0eA) zsezUXQ)OD#{ms@HsE9UA^R*K>(BkcKGR`~$uW@r*1UHPfvV=DLlY5e65rN>9disy6 z`I~TOJpu+y)9CU`K~?`f(0^y&FGAHWs_Q^zB^Tr$@cHd-vj|)2>M&BlCn%0X=r8<K z5C)N&4{Ai4KI|Oa|7yXVOVQAHI9M1YCF8?QH?2PW9@ZlmQU6e=3CP9I*OYfnS@4*| z4NGJs;@sr_Kh+|X{aU*<BIkpTlKZ}t`tQ$DU(QNzrUeUpe-G@OH=gBtdLvy8hqET6 zWNfXAZMnu<C@%N8%SqLh2%XmZ=hgEMagu~;QZOrB>pY9%sU~^!H28L%oK-R^@z?M| zQ0*5XYp-ii<A3;&B&XzFY(wN{0UbocNf^`*_ve$cvP!bFNsc@eU6wmUQ?f_^78Wq^ z>L%_`<C^)S?UWIvaq_l<MTaU7`#LPXJ}$eB9a8fw7Ty+(z&(RM0DCePWHa)aHOd=h zt%Y@jy@T<0<AW?dORDfox5#9zgc(nu@iGR$1(4bPp!G>Gc3I-o|1BHt{DAbpDp->L z%Zxo~WlvD|qIKdJ&BLxmUH#4NfBGiUgZ+Ke=;+jy^A`JS|1U!#xQ4c_`k}!Jhexjp zioQL!9tmI4hrKU~`FSWSZom*X<SDqH_7Eq{8n@4w!AxXzT2{lO#0dG&x;bjWLlO66 z`84j^q7z%$9{3-WwAW2$Ik@kZ7ung%KD$y0LQm~2mk7OjBjW$f%n@E$N`61574k_9 zWYh01(0GKXLI*Cwg9VXUks<7G(Rjv8zIvX4IImPDuZO#od@X#4`o9m4!63IbL=;q< z9B<BdmKvPGd>GYTr)$eJhWpf$w|j1MB<x6rq3H9*#34S+4n5<EX9ul#u8t@pdYV(O zPOaZ9pxB@!3jF3iT&!Ar%Q|Q<^d}I60EeW^*_=)cH60Jl6A@8e`}tx6CzB+QwZV(o zD@Xi65Lve^U&(<_Y+?y*z9F~LMh^t;(nd!_BCq+<Eml!UULUX`#qyD8vKL+2pH3M5 zpNW?Prs4m-<Xf##58L-IEb-gT3S_e8(&WtRWr{^AFq!V=?u+`B%-KRE8@OD#Ae^MD zenZJ%Kxxl5Q;N8inNACx^AlRxm;FzAw&890YACPTZsMc#(sK$S@Od03K)8IU6GSTM zwsY~cYXE!c@WPgGLF~2KLfL~mRN1ynno}$eWQWECt|*(k&Mk)3sb{<ICu$lo|0-Ru z(AoZYc1f*{1x>@|1v@xk6<YF@vg^U!S(M8(LzVaJ6O>}#u1HEL#EAndBz2Qkvw4!% zrg1jRV@Ic9rciL!7dc$s^&i#oni8{B(jVpj`>txhCMnkdOljA{Ap23l4_IX?-C?Ee zSPqdIwfkv%7gJuluR9Pj1!|>DjDi@0b`9}JE<i82)Y1DZ9V#wlc%tOxjc!1o1Pr*B z1drGuAQU-UsD=QPnKO2Cm#k1esyuyC@i2R<n(;uxf@s|;5l(_n%0?1VVRva))B}Yw ztHkWnY7!GIHZEGLKpm6~McI+6(ki7W0RehH{vh8qi5GBMIa`+HfP-7-HJ&7{hREpx z+CqH;&8^a>31S&a7dVE0TG^0$&-QxIun_%Kt*N9vywXQklN?fpz=!xpUO(i(qua<f z831P{1!8PjojAKL1%wWK43F+5laIj>iN+>O9miE{-}SI-Kr)(4fP}$C?!0dkqZ}ek z0Up(8(c3%{fnJ#ZhNR$zrll9KwyolqoU!lcAz7CWS;4nK^X&-{Nye%UE4bBo7Ett5 z5a(D++j}C|2JTzo8S{koMj2a#1;+<gB&@##8Tnp@-Ji4q`MSDlQb0fWzJ#RDq(lbC zZhV&?ucKhhE+~W?zQ6~e7tvV)OeLju1@do$MCLVpUJMVw4nE<%`pa*B9o7B=IYIlk zOwiGKi}{?SAb1~mFyL83triStQ#jg4h_T<6r>1EJseF;7#-A!z&*(ph^p{cX?|$f> zQeo;cX<gvODs{^^BJVDHIj}VAbjL0r<Jspr6V>~MBw@QhVzb6&=J*xS`fVoGl$P*H zvI-;4U%0x5sP;<^jM1fjXGKv)3HTcFi>lkanc^+biGy%!&Y%!<pr*R1x}H3`s?CS* zUm{Mbx^s5pIdgQK_}3pg)({0SK9e1(rk{HNukBs6lGwL~tx}qIK0uhDg^WWiGG*jz zgK1ffM`w0wzNBr;>)sll4P)<~{kg^n;?o*V$0{`xIi{uoup5uiU-SF>XM|?Z$OlC$ zQ$gq}O+ku-lyyT5eWY-%$z9d?JEJcaV!z~(|2Pd_ZbYHnt>Ol)EB+NloWJKDl)8+l znm;UBhp+i3UOJo(AHN0{A^)^o0w&GBq|Gj)BCFyMDR3Ktkb2Pli7z1hvw^p$yRkp_ z^h+yBf~q*uA6DB=-pw7y+_$wNV%8|ZAiW@9iErCTnP?Hwb>oU#XymJ?r1cknDNwzD zEIas?EK$9bE$Gf&6I~z7*5A^7CG9v*D3^>rs~P)ZR(!3?Zb@~TxE7H6=y@<~$egj^ z$#aPM-yLWy*?1>Ks7I_ZEutUohyVMzHJj_*kR_iL3*UCmRO9d{e5%f_r4U7twcT&S z*yr%j&p-as7u8D$c^~+z$TNSFmj1D$nT}@-a93+qXhU1O%I3%pb?DL8CjX_c5lH-( zFl-9@uRxYwLj3*0?-+LxO&ZdeQXsJ7bg$nKLO!yzOVZvzy8}y}Lo@d&ds`o#gL@%R zk=xm`|5T<BhZ(-YBIAs%JUNfdS7s;(67(gRH8hr|nz^=aS(wS7g<^@)!5~GfWB@*& zut}TEJ9T#tYTnJk&hAql<|@gdRd)`^_&+OEpMd6eONSI?rq;s?Xg^l!rxeVYeR1ur zjD}n_hyQs4_wkoaH`5PgC}_{0Pl2I)t2e}O6wI(MrJ|(;(-)(Ai`{V^Nc=zQ$k?U3 zX!^jI>H(riIlrZmua06p`ZIr>yAF_*K=h$j_YLnBah0LyM$1j?Rg64Gw7R?ZeUAB- zFmOwnG*R!m%(-KT*gsMKe;jgT($G|RFCMoS4cjyf28F{3Rf|8LIj*#50GF^CTc@j$ z&N^+&Aolgm@&`#I27MU*X?(@Ub1|C0$~&5z^FF2A|M|2SKi66%zFTlQ)sF`MhDHuP zFL8_A*Zgk({!-0jx5o?RV``qPVhIE}COPtrwyAmZrwXkoTRsgSk#DW{J8azlnW-&5 zMy1X(2G>Q3Xyd-V8Y1PLs3&VGJ5Oy>TlB4awYJELG%}rxK1#Te&!_*=tzFx(1Om1_ zK&cb|7uQv{U*ojIL}k2+z3NS@qB6Cx_b!#JcHrqM=~^8br>gf`JBk&sw-N%w$-oC5 z3hMXYfn>gUHfsm}XVwfa4EPJ4sYn*f4%UdozNo?xA%$&7ZIGhF9-ZrwfO|KduZ`M5 z@I?WK!JtU(msiQd7jKvdjRpThI@Rs4Uj5ERw0O)?QSVVMn*7BEi=o|v&Z?QZ?AU`U zxd*syp1#=slcGVT^!=R&|C0-DWxi<9RGY)@0;Unu|1`ARXR3NtcIhVqeF-}X7#Q}J z=V=!tFGuE|VFf#MO~QaWHEk-w_H%N1m@-qWnog2y1$2}X3H))ZEsSeFd5IL|PZ3!U zY(@VsoFk4f5JK>cgb@DC!l4}1kJt8VA$Oz0!qF%(wbnz?{Ap^tO-PnV`qvM>YF^9h zqh}B;lG}VhNf>@-#>0)^q*d@iuQl}l9KA;~vx$Q%l;?V+yYBZ-mPfIE<b$J3ABdiT z4H)s>e#Utg6jD5a<MOq(IZ%f914R@yt2XYl@4o$k4-aP~I^2AwUbdJ&$ZePJ4z52; z50@WYu1DN|?c&lsxLb0!X8^3KKHG{dc!aW@p@}~XzA9`v<u!0e>12f2-k)9_G;}?j zVq88_!@aazjTVkomIISw^KO_xQ1T$n?TUahMcA)&7RI~fM;Gr#2dazgw-71D#lsWh zL1<$#<``HO9&r62cL+(ogyGDRsAF9o4BqORi*p_BO3hps+k5bU_FwPb{B}*5%idCC zu~g0n8LqLxez2O;!NtZE=)s6Aa>b0Pj^2prxD+>HaQ4<r5$GdZwl7>Bzs9PGIJ<vw zT_)#u8{O5SlpHNx5?Bb2RADc{P|Y<~a&z^HoJ*cH#E=KP6mjP+U#a`KYR|4|+{2K+ zwbrt0c`JDIO5M5k&Hw(X{kxJ|(AT()yAkJrmw_vcuxOF6R<6|}(i`#bN=L)zJbr}z znEC(xei7zqg+KdhxZ8(HF^j&$^GcM>a2bo&r}*^hE`PY%dc0=X#4+MG2}lJaR0T-^ zj<1vr8o0u~*KhR{taKqmy6#uxYD?!X;FdvoC>nklo2IdTc;`{b4_lv9<!xV~u^M&B zKcvMi!sJs`V<Mq}E>*e^W<!s)?mk!f)2u|$ylmO>z^!p>8il~kOL&ZoL#fJK-#TY6 z62$3zODGKZhl!pODn(SUW?wm*4r<RknQM%&2fE!k2^}u!vWBh=8WiZztvzg6!6J#H zFKGIRgFLiYIt?aG{N!8ON0`0KOOR2s&=cV?-q*Gz`QL7<<T7akt1$w8c))2#<zs}l zMMJD;tjJ}F6h()+u|zF1<ZSkQQM>gDey+*<rT#mt{<)Kd*AF|8uE7hoPLbS{1J7Tb zg|z&yR;sAVZGC|dvV8LBtqd|BW^51z)+w>+1ni&d_T`laP*`mba;xzJ)eSdh-`&*C ze8@l;Ft8*K6-`D<`)x`8J*x8Mp32{!zwrPvsAmDnTMJhETIE&T+nicFny?%cw#$02 z`5osDx`QtvO^NCiccgzAv#(;Fbt^mRDmT2-`qj|iM&f|!rc>!`Twu=aiVQXtVT=hp zuVQC1&?kugbAZ{VM{#Tyg)ex%KISgbHM?IQvsYl2c0`P<t+^-DcQq#dEbeVJV*c*I zKIzSb@OPCtm434_#^j2*Mf$Rg!df}9JNJxxzws$OhJg+YqXFr?m&EWH9IK;-POd<C zxW#;&nT2kYgs!f#ZlDC4k#Rp2d2TIt6I0l8WykQ_V|ftyt%|V?!I`zbOKW1o-y1)^ z2$L3$nQHpk7s_p<tmQ6JW2ND=b};?4iuct(b|_8Wk{*X@F2eo!Uz(=efL%zshWGNT zH8SGCV8+Sw6&3wMs+j>@aLb51V89Mm_kP>?;D?JI^M6~f*C4SKLIymXux>Dy%|uZ3 z2_VmODs;AKEO>CNHC%>J`5Mr%aAaBr|7BIZMuM<<C4FffcdvS7gWynGR^K&$<O<J* z|GpwnDOThXKZ3><`3vW^VphWD%fEMQM`swAtcbsATMU|9_K>ifK3ef##y*QC9QY2+ za4p3^57MrpFT<F3`O7Lu7U-37d%g1<U0FZYiedh!Sc?sK{nV~C$;rQn2$x|l>2-CE zxv-k(Nn(M9<Udffvkz%@P6N4K)~Q*enFh3-O$@O6`@VuH-I!Wxnnu?gW;IwOS1eg? zJ~1X|Qp(y%!D3Q>LE_<oogWG!fC2xrkZ=(5`AG@5x#1)%DyUJ+Jl(QJyRz>Qo)vn? z&yalLBu1O&d@ift^l*T!?mXA}2?O^p(^plBZro5?rtZrhAdx@kPO)Hq!bpg;z@eBG zF_WYGl*!73pwg}PkS3bB!o+ruIbxeij28CHcYl{}5r&4=7~Uye)R9NGKJtluKfbX^ z?oe+lOY~C+QQREQmY9sm;6UHr3kH4G?ZWCEITmiWCVSs$TXTi-5Bg-+XjmB<{3C46 zXR~o?{If0uF|8CB-+Ac|mC>CZwA?3ZW?Z~PHbbsrf4AZNTr=6<G?qwy`SXt~Cb<Lc zgud<sp^Z+Q>Al+Io^_EPI={D2Q(qLeIlr*vG^U-!95!^&&AU0ma~&6d%k3nlOu}QG z@DJmdMWCT0lY&$mZ9lSFTKF$}jr)^LQDHL+m2S=YSkpmZ&~(r~6eYr~z$tb$Z0^>q z$x8F5UdI*@Ll2<*uW-ZH$266)vWuSFQ~PevJC`V+yQKEJup{s$Q0-R33xEIn8ONb5 z$`wI%m}FZckYVv`WthXFb>0q~kfZum_74=PF2Q)CqaL$xD%z|>pE&epF=$XU<}g-L zL%k%G&MpFp%~iS!KjjhSr!ue-F=abA{p?Ln-Y+UltT6j~2ww25xcOAp{T{;le@$I^ zJXC8Rr{3zmbX780+85$nyB8&y7NW7$%pnw}A^VbvlEHMNgrbHqG}d8^v5bs;SGJ5Y zE@otFq6Tr9P_DiAjCtStzW+R*^Zd?lJHOv^zQ5-==kuJ?D@!W8Qd}&#r|613(F45q z`(ogfW6}+*$AF@L!!e6Yg%SCT$))`N!e=lI`*Uxy`{f{0pMx^j8wO#j+cT!OD;{57 zbWH3B3^!!PbSln=l&-fc<?jdM?omX;^-LhZzF4e*>2u3Dd%v|-@<WxC=~2LVn(J0w zU3m|5FHs~$bgB*e5T0pA`}un|;E~Ji{}A0w21HX#j}rZtgVV=6{_qXpEb6k`cP<C6 z@G|-1ZqC!WD0|Y3Lxtn--rOT)>Eb79e)=PC;w|JvgEbJ?)snPt`=yffj=Cqgjo3K! zP{-Powwmnlw;vDILi0VAlBc6T`_vu@mY?N0kX@q~t9J+z|C8lHo3-N~nc|#F%V!Ow z76MOcRek3Sr8>2T5Rx#)14!!|Y>oHDz3S>;qmZw%WgMeKsIh@fizzrMGjqg1{Sw)8 zwZW}5(oX|dXrN*B_Hu(7df%5HSreF7FQz!3U&xapD!BIrsk#pT<YtM2)rh8zd7&u# z6BQgOD>lf}-p0(?+T-dYZl0ag9Aq808I5u*%VD<KwLeNc>ps%9o*?1!CqKSJ(nXZr zZn~i>vO}f8oT@j6q|Hx#HKc3KHY`c(HRw}n{id#zKU4|7{xqP={x8}IVg^2SO@zJ= ztoWn0eMqUrmPf|dZ2K6rC1`Ka{!nJZh$&`gd6B-Bj`z^HFl;6BZ3Y44=FRV&-oz8g znpDE1&wkC%$XbgTo37U4cW<AimY2r44-~}KCaTnCxtR9KmT4@^R7@W_LNEJ&!Qn6Z z2nUIVbcGzB!oB!U*AfsFgu}RmyY!^Yu6^we`2xcJmZ;cuIhNsXvwH}LSOBh-y-x@N zX{@a`H7X9o?!F(sre#SgLJt)u>n2?(yX5V=g;SctysS5&<Ax)T+m4HGiUrK>5*B|0 zVpPwxF^QY~fq6RXHW_?^o$ng7d(vP96f^n|cX5H;iI1L!KFDFBf3{Y`g;i`4JR}K^ z3y>sV4DxYmqxz(n`N9~bTsxPvc+h>|u==B;%n|v~!M?$f+ez9&6KlE##7mRsbWh(I zhlA#FCeZy<_C+SUeKaWe{?9rE*-qKxc2(GFWZ49!==JxJizi@<Ow8YT+o@!6jHSZ2 zZbVRvF)anZbv6z7z4`F{D>2&H*Jocg4WUR%rLpG^A7fQa#J>PH*4w9ee+x_HLiL6? z`I(0NmvhT6p4cMdn6lBfL%KWU;7@$zUV10@(t126x|;@EP7q1>qK)50gEfuy8I5^W z(x;;+$8l78Y*s#=S+h${R_SUH$(s<dSRH;zW+JT9j<!V<55{Oui^Y$vK)>yCGqQSN z>Mf-nrlW_s2T76x<9o;m4yn@7g8xLjy*U{E!K_^6b(}lrty@IETufN*R!(Sj^i2!p znY~5UPwqZX4VnbSL@Bkj*x9zSySG-Zj)Mqv{#+kzJW$KtNKjclA4+_jqt_KBhcYx8 z4L)uFI|r4(b2MhWTv<t%y-ur4TaCAq1*OKsDR%n4*?#Y5@-RVMH(gAW^0dfFey!8( z@C93FGOg?+$#s04Yx+G*V+p(eZ%wk^3s?Q5S&vIisuJsxR@2|qY)_LAtreCJ<L-68 z)RSupNIuem{Uum4-4J~1>2zSHypvw!wo7Q*Yq<y~iL)Ofb{sv~xJJm&RvRgU#a>P~ zeFa{L-&mS3VWV%PJ+H6FeUm%~Z%kdDjJ7nPi`{;c+oSgNc4F94&5+HkA0EH@J=_qn zW5N}66%hLX#wAI$4e3<zD%x*HMcgT+LyK=8K;yYo@2H1iLrAk(iHOo}UU|>|Z7u~A zdquyYPL4r}H$fdA0I@9-MxFO_22@BE5a)y0q!>hXX#FRFnq){j@5VZ0<5vyXHN3*n zV4;ARfejFL5c;S{0L7Lr7Dxr(D97z3BZl;eC*rcN2o)$LA;Nx~%;Zc#zC+#ZNFeRG zGK{*V+v28-34$s~l{UHh0VTA1bLvX;UTP2a$7vW9(yZVB=n>UZQFK#L_axSedVE6U z;_r8Pw6W5<krf0KkbfcN9y2xqT~N^?i<gpOEU8<`G5+BwKuiy&ZbJbRCC(jx)J0#4 zbCAyh#S$f=ZoS4YKe_;UF@U`M@MOq({U;b9-1jFX;A+ds@OJ=lucA<MSw6_H<#Xp@ zbm^afplIP#p6hhbU5k-59WaSUWbN6${NAm!rh^DY&jU|?dab_~moTYIWxlkrc2w=; z=Y4b^U--C(ZNFIS1SIsP*ALk985>X#^oWQxANm1CL^DUr*;(LZPfx|6I;M?NER;Ar zOFv;E)ij6&rc}ba7{ejk<}#kM%(dF~w%1&=lj>u(O*<uZ$9av;kROhxRE(lHjR}<G zw$)>-So`(y?09{SlupPBrrAVGaIXw}LsAFe4{@FxfR2RJ7O4=weah9oP9jd%80GRY zHc7pv@jvF_f0DD}BQ#~&7B0+Q+DDKW-+di<Ey8ZMyO|Z*>`HQq!VOE41Yl#?yRv>H z#5}n%94=1H5)3#S1siD-i*vD>B*);o#8JvgLGzeLXcHju%gk2B@u{#Jyn37Wkeerf zyPyB{yrMO35aTF|c`WXXM?(nt{AzAb4d3jRAP~m=_>7`Fi{piFJWbN-2cLxp>k=L9 zO6bAaF$X!ZXJvDq`i|ik8egkUwYv9U()xouFphD#J!U@&fD6Dt_x1%Zt<|k4Xm(qu z4I6RV1A3u&2gZJT$pUwuT~xy53>rITu?O_%^kHW-s^p|Z=ou4n{v}GO;B@1t4!gAl z>x;B7GDXo{GdEzc>KF99QFfzB=TnPqxzJ+zry*)i-+|!wMdS40zQ@lV1oB!^!#e-6 zME#+-XC}zbSx}?ucIOD9>qKi+G}gXr<3J7}Km18du>PXU8B7ufa0N7>Md%VQg{8_c z{1SQBL9l%EWAexME?>r0Em74#jHcUD3+@wg-3fOBX86nVuYa;f)AReTQ{H$n8RjdI zA}><bXg$k|qtbsI3XYer*VV6)MGbf#mqvLO>gbo{C7F8xo?3o{=|pWB@E&(HYsKEO zMwjxO-ULlQkHimTaPP^`%ha>!-wySjx%|!<^}-L>a0Twntqvlo?p1b!ORhS)FllW{ zPT}OQTVo|^S(*QpwV;-u0xG32&=0V4VL8LHCNV7rvywDrEn<A<u_yBW4)gRA8JA-Y z3M{*fuAz<|g~hV;bkDl<i<iQM*Zo!zr81teIGbMXt0whH^Zewt<EJ9Ns9fAS!VJ_@ zVE#ipSj%;Oj2c_1s<1O%dh%MM0rm?yS*n_}DxGE+pXhLQ`;Nia@QsQb=<PTLS9Q?* zmIK*JTw;~Ruj=F7NJNyL@ncp}wI}0t&5hz3J035}_uEF@R2gb5?r*@AjD0tMxh|_l z%v&<bD>g#chp(O`a;u?zd`H$(Sj$VVmj9TEno33}G7h$vug-=1wjL4^u0S>P(;K4A zZSj+(B4^@iXWPejmnsb%$QYYzkhgyL(Z8V{UqW7r6{J@<FE_xKE6J@K(^NLfuaeEK zWY8e!YUtMWA_uDsG&?RX=49|aXA;#`gV(Oy7&fowN%7|xAZ2Y-)3EYz25WX~j;(Zv zME*RtG1lrgHn%t!hBpf3W!$Y3SWhUFLw?Sru&COR1?C)bxryOMo@(TjmvlUPnxwHW zUUu$0JyhAoYUO%=o(&+@@g7VLq8q;tfx99a4@tcjqTU4^7?og5uM)%~#Whhkw^K1f z(0&Il=_d>8z&p@L1LD~7ASEUxMu-n?fHEvmq6w~rQX$4z<DuuAh;2fKCLTb1N50R} z79#VwBS5?d{bX1Ok?+dE`4aFU)O}O}VmHs)0Vb+29(dXApgHvl1nlSrS@54XM}IwQ zGl#E43JG0QWK>(FS8pQ6GSAsuQHcKNaH=$lDwXBgO!>Y`dlx<nHK^1VWCPo@an<No z8%%y#CttV2&PjvhI~3`eBLwv(3v+5=zCkXcSKWI5LVsJm?@P@%5Fzx!ZEeolUJa8U zspK_ui(GSS{`!#K)hAiZJXUWMd{e2F5f$M>Jik`~x%=gAtF(CqV3WMEkdX`o9Z?C| zNnCIjao)?rdcly|K?r+c;nMsIjCLV<Y32PuAk&b<R`0w`ssL0efU8M=97|tg=N(wQ zBce`&(X8_}#AyEj>oxab$}!fC6k(Vbh`VBV$_XnA<}WX7mc`SZ*@dS%o&O3AHJb<? zOu!p<nr<@ckTPKYm9dQ{%F@@8_z9|;q1wO_5^o8e&4U?vQ-#*WG7^MpGeIa}nNVQF zgjs|d=*(t=*ajU5B_1Hp3mb@cv)L5*#zFA;-G}j|p?~gb6p9glaynfq9g4W^bZc(G z>gT0Xg?DT3R16nW7}tdQH!j8(1o7Z^$pPW>)9(F2C7=^`qyir@x!8;eoIF$!F;a>Y ee^9n2{&w3NuVna+S?DFG*kuzdW5xya!+!%4CrrWs literal 151576 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 xip% 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 diff --git a/site/content/images/icons/caret-left.svg b/site/content/images/icons/caret-left.svg new file mode 100644 index 0000000000..04c267bdc2 --- /dev/null +++ b/site/content/images/icons/caret-left.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0V0z"></path><path d="M15.41 16.59 10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/caret-right.svg b/site/content/images/icons/caret-right.svg new file mode 100644 index 0000000000..5fef8a8723 --- /dev/null +++ b/site/content/images/icons/caret-right.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0V0z"></path><path d="M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/clear.svg b/site/content/images/icons/clear.svg new file mode 100644 index 0000000000..a64d8dee58 --- /dev/null +++ b/site/content/images/icons/clear.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><path d="m2 2 20 20"></path><path d="M8.35 2.69A10 10 0 0 1 21.3 15.65"></path><path d="M19.08 19.08A10 10 0 1 1 4.92 4.92"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/delete.svg b/site/content/images/icons/delete.svg new file mode 100644 index 0000000000..c9a6b955ba --- /dev/null +++ b/site/content/images/icons/delete.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="currentColor"><path d="M19.452 7.5H4.547a.5.5 0 00-.5.545l1.287 14.136A2 2 0 007.326 24h9.347a2 2 0 001.992-1.819L19.95 8.045a.5.5 0 00-.129-.382.5.5 0 00-.369-.163zm-9.2 13a.75.75 0 01-1.5 0v-9a.75.75 0 011.5 0zm5 0a.75.75 0 01-1.5 0v-9a.75.75 0 011.5 0zM22 4h-4.75a.25.25 0 01-.25-.25V2.5A2.5 2.5 0 0014.5 0h-5A2.5 2.5 0 007 2.5v1.25a.25.25 0 01-.25.25H2a1 1 0 000 2h20a1 1 0 000-2zM9 3.75V2.5a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v1.25a.25.25 0 01-.25.25h-5.5A.25.25 0 019 3.75z"></path></g></svg> \ No newline at end of file diff --git a/site/content/images/icons/download.svg b/site/content/images/icons/download.svg new file mode 100644 index 0000000000..a2f286d021 --- /dev/null +++ b/site/content/images/icons/download.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M5 20h14v-2H5v2zM19 9h-4V3H9v6H5l7 7 7-7z"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/duplicate.svg b/site/content/images/icons/duplicate.svg new file mode 100644 index 0000000000..0e8aa6490f --- /dev/null +++ b/site/content/images/icons/duplicate.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/edit-square.svg b/site/content/images/icons/edit-square.svg new file mode 100644 index 0000000000..1bc7f0eaad --- /dev/null +++ b/site/content/images/icons/edit-square.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></g></svg> \ No newline at end of file diff --git a/site/content/images/icons/edit.svg b/site/content/images/icons/edit.svg new file mode 100644 index 0000000000..860bab7fcb --- /dev/null +++ b/site/content/images/icons/edit.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04a.996.996 0 0 0 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/fit.svg b/site/content/images/icons/fit.svg new file mode 100644 index 0000000000..96c8d4a592 --- /dev/null +++ b/site/content/images/icons/fit.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" class="chakra-icon css-13otjrl" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M17 4h3c1.1 0 2 .9 2 2v2h-2V6h-3V4zM4 8V6h3V4H4c-1.1 0-2 .9-2 2v2h2zm16 8v2h-3v2h3c1.1 0 2-.9 2-2v-2h-2zM7 18H4v-2H2v2c0 1.1.9 2 2 2h3v-2zM18 8H6v8h12V8z"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/rerun.svg b/site/content/images/icons/rerun.svg new file mode 100644 index 0000000000..105e191dca --- /dev/null +++ b/site/content/images/icons/rerun.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="currentColor"><path d="M10.319,4.936a7.239,7.239,0,0,1,7.1,2.252,1.25,1.25,0,1,0,1.872-1.657A9.737,9.737,0,0,0,9.743,2.5,10.269,10.269,0,0,0,2.378,9.61a.249.249,0,0,1-.271.178l-1.033-.13A.491.491,0,0,0,.6,9.877a.5.5,0,0,0-.019.526l2.476,4.342a.5.5,0,0,0,.373.248.43.43,0,0,0,.062,0,.5.5,0,0,0,.359-.152l3.477-3.593a.5.5,0,0,0-.3-.844L5.15,10.172a.25.25,0,0,1-.2-.333A7.7,7.7,0,0,1,10.319,4.936Z"></path><path d="M23.406,14.1a.5.5,0,0,0,.015-.526l-2.5-4.329A.5.5,0,0,0,20.546,9a.489.489,0,0,0-.421.151l-3.456,3.614a.5.5,0,0,0,.3.842l1.848.221a.249.249,0,0,1,.183.117.253.253,0,0,1,.023.216,7.688,7.688,0,0,1-5.369,4.9,7.243,7.243,0,0,1-7.1-2.253,1.25,1.25,0,1,0-1.872,1.656,9.74,9.74,0,0,0,9.549,3.03,10.261,10.261,0,0,0,7.369-7.12.251.251,0,0,1,.27-.179l1.058.127a.422.422,0,0,0,.06,0A.5.5,0,0,0,23.406,14.1Z"></path></g></svg> \ No newline at end of file diff --git a/site/content/images/icons/reset-all.svg b/site/content/images/icons/reset-all.svg new file mode 100644 index 0000000000..2ce6116179 --- /dev/null +++ b/site/content/images/icons/reset-all.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M13 3a9 9 0 0 0-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42A8.954 8.954 0 0 0 13 21a9 9 0 0 0 0-18zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/reset.svg b/site/content/images/icons/reset.svg new file mode 100644 index 0000000000..c7280681c6 --- /dev/null +++ b/site/content/images/icons/reset.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="none" stroke-width="0" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M4.85355 2.14645C5.04882 2.34171 5.04882 2.65829 4.85355 2.85355L3.70711 4H9C11.4853 4 13.5 6.01472 13.5 8.5C13.5 10.9853 11.4853 13 9 13H5C4.72386 13 4.5 12.7761 4.5 12.5C4.5 12.2239 4.72386 12 5 12H9C10.933 12 12.5 10.433 12.5 8.5C12.5 6.567 10.933 5 9 5H3.70711L4.85355 6.14645C5.04882 6.34171 5.04882 6.65829 4.85355 6.85355C4.65829 7.04882 4.34171 7.04882 4.14645 6.85355L2.14645 4.85355C1.95118 4.65829 1.95118 4.34171 2.14645 4.14645L4.14645 2.14645C4.34171 1.95118 4.65829 1.95118 4.85355 2.14645Z" fill="currentColor"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/run.svg b/site/content/images/icons/run.svg new file mode 100644 index 0000000000..fdb9a8f624 --- /dev/null +++ b/site/content/images/icons/run.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M8 5v14l11-7z"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/save.svg b/site/content/images/icons/save.svg new file mode 100644 index 0000000000..bd2f015bdd --- /dev/null +++ b/site/content/images/icons/save.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M17 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/select-all.svg b/site/content/images/icons/select-all.svg new file mode 100644 index 0000000000..63faa72aa5 --- /dev/null +++ b/site/content/images/icons/select-all.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/settings.svg b/site/content/images/icons/settings.svg new file mode 100644 index 0000000000..2ead9c7514 --- /dev/null +++ b/site/content/images/icons/settings.svg @@ -0,0 +1,3 @@ +<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"> + <path fill="currentColor" d="M 15,8.77 V 7.17 L 13.06,6.53 12.61,5.44 13.49,3.6 12.36,2.47 10.55,3.38 9.46,2.93 8.77,1.01 H 7.17 L 6.54,2.95 5.43,3.4 3.59,2.52 2.46,3.65 3.37,5.46 2.92,6.55 1,7.23 v 1.59 l 1.94,0.64 0.45,1.09 -0.88,1.84 1.13,1.13 1.81,-0.91 1.09,0.45 0.69,1.92 h 1.59 l 0.63,-1.94 1.11,-0.45 1.84,0.88 1.13,-1.13 L 12.61,10.53 13.08,9.44 15,8.75 Z M 8,11 C 6.34,11 5,9.66 5,8 5,6.34 6.34,5 8,5 c 1.66,0 3,1.34 3,3 0,1.66 -1.34,3 -3,3 z"></path> +</svg> diff --git a/site/content/images/icons/sort-by.svg b/site/content/images/icons/sort-by.svg new file mode 100644 index 0000000000..03e32dac5d --- /dev/null +++ b/site/content/images/icons/sort-by.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M8 16H4l6 6V2H8zm6-11v17h2V8h4l-6-6z"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/swap.svg b/site/content/images/icons/swap.svg new file mode 100644 index 0000000000..1fdf5372b1 --- /dev/null +++ b/site/content/images/icons/swap.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3 5 6.99h3V14h2V6.99h3L9 3z"></path></svg> \ No newline at end of file diff --git a/site/content/images/icons/zoom-in.svg b/site/content/images/icons/zoom-in.svg new file mode 100644 index 0000000000..4ec4fb63c8 --- /dev/null +++ b/site/content/images/icons/zoom-in.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><circle cx="11" cy="11" r="8"></circle><line x1="21" x2="16.65" y1="21" y2="16.65"></line><line x1="11" x2="11" y1="8" y2="14"></line><line x1="8" x2="14" y1="11" y2="11"></line></svg> \ No newline at end of file diff --git a/site/content/images/icons/zoom-out.svg b/site/content/images/icons/zoom-out.svg new file mode 100644 index 0000000000..e8dc090236 --- /dev/null +++ b/site/content/images/icons/zoom-out.svg @@ -0,0 +1 @@ +<svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><circle cx="11" cy="11" r="8"></circle><line x1="21" x2="16.65" y1="21" y2="16.65"></line><line x1="8" x2="14" y1="11" y2="11"></line></svg> \ No newline at end of file diff --git a/site/themes/arangodb-docs-theme/layouts/shortcodes/icon.html b/site/themes/arangodb-docs-theme/layouts/shortcodes/icon.html new file mode 100644 index 0000000000..d45f7c345c --- /dev/null +++ b/site/themes/arangodb-docs-theme/layouts/shortcodes/icon.html @@ -0,0 +1,10 @@ +<span class="inline-icon" aria-hidden="true"> + {{- $iconName := .Get 0 }} + {{- $iconPath := printf "content/images/icons/%s.svg" $iconName }} + {{- $iconSvg := readFile $iconPath }} + {{- if $iconSvg }} + {{- $iconSvg | safeHTML }} + {{- else }} + {{- errorf "Icon '%v' not found for '%v'" $iconName .Page.File.Path }} + {{- end -}} +</span> \ No newline at end of file diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index 3650762cd6..d228b4c548 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -356,6 +356,19 @@ img { margin-bottom: 20px; } +.inline-icon { + display: inline-block; + width: var(--TYPOGRAPHY-BODY-TEXT); + height: var(--TYPOGRAPHY-BODY-TEXT); + margin: 0 .1rem; + position: relative; + top: .2rem; +} + +.inline-icon svg { + margin: 0; +} + /* end Images */ /* Tables */ diff --git a/toolchain/arangoproxy/go.mod b/toolchain/arangoproxy/go.mod index 174ca5a215..e08f29a0b8 100644 --- a/toolchain/arangoproxy/go.mod +++ b/toolchain/arangoproxy/go.mod @@ -1,6 +1,6 @@ module github.com/arangodb/docs/migration-tools/arangoproxy -go 1.25 +go 1.24.0 require ( github.com/dlclark/regexp2 v1.11.5 From 79bb7f9ba41666b64c370c22a27cf3ea19ef7352 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Fri, 24 Oct 2025 14:47:19 +0200 Subject: [PATCH 29/69] Unrelated consistency changes --- site/content/arangodb/3.12/develop/drivers/_index.md | 2 +- .../indexing/working-with-indexes/vector-indexes.md | 2 +- site/content/arangodb/3.13/develop/drivers/_index.md | 2 +- .../arangodb/3.13/develop/http-api/indexes/_index.md | 4 ++-- .../content/arangodb/3.13/develop/integrations/_index.md | 9 +++++++++ 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/site/content/arangodb/3.12/develop/drivers/_index.md b/site/content/arangodb/3.12/develop/drivers/_index.md index cba7ac5de0..6fc7ee3507 100644 --- a/site/content/arangodb/3.12/develop/drivers/_index.md +++ b/site/content/arangodb/3.12/develop/drivers/_index.md @@ -37,7 +37,7 @@ language. - [Tutorial](go.md#tutorial) - Repository: [github.com/arangodb/go-driver](https://github.com/arangodb/go-driver/tree/master/v2) -## Node.js driver +## JavaScript driver The [**ArangoJS driver**](javascript.md) lets you work with ArangoDB in Node.js, using the JavaScript scripting language. You can also use it in web browsers. diff --git a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md index 77fc3151ba..174e095f16 100644 --- a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md +++ b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md @@ -31,7 +31,7 @@ startup option needs to be enabled on the deployment you want to restore to. 1. Enable the vector index feature. 2. Calculate vector embeddings using [Arango's GraphML](../../../../../gen-ai/graphml/_index.md) - capabilities (available in the AI Services Data Platform) or using external tools. + capabilities (available in the AI Data Platform) or using external tools. Store each vector as an attribute in the respective document. 3. Create a vector index over this attribute. You need to choose which similarity metric you want to use later for querying. See diff --git a/site/content/arangodb/3.13/develop/drivers/_index.md b/site/content/arangodb/3.13/develop/drivers/_index.md index cba7ac5de0..6fc7ee3507 100644 --- a/site/content/arangodb/3.13/develop/drivers/_index.md +++ b/site/content/arangodb/3.13/develop/drivers/_index.md @@ -37,7 +37,7 @@ language. - [Tutorial](go.md#tutorial) - Repository: [github.com/arangodb/go-driver](https://github.com/arangodb/go-driver/tree/master/v2) -## Node.js driver +## JavaScript driver The [**ArangoJS driver**](javascript.md) lets you work with ArangoDB in Node.js, using the JavaScript scripting language. You can also use it in web browsers. diff --git a/site/content/arangodb/3.13/develop/http-api/indexes/_index.md b/site/content/arangodb/3.13/develop/http-api/indexes/_index.md index f759f7e174..a35384f3d0 100644 --- a/site/content/arangodb/3.13/develop/http-api/indexes/_index.md +++ b/site/content/arangodb/3.13/develop/http-api/indexes/_index.md @@ -221,8 +221,8 @@ paths: insert a value into the index that already exists in the index always fails, regardless of the value of this attribute. - The optional **estimates** attribute is supported by persistent indexes. - This attribute controls whether index selectivity estimates are + The optional **estimates** attribute is supported by `persistent`, `mdi`, and + `mdi-prefixed` indexes. This attribute controls whether index selectivity estimates are maintained for the index. Not maintaining index selectivity estimates can have a slightly positive impact on write performance. The downside of turning off index selectivity estimates will be that diff --git a/site/content/arangodb/3.13/develop/integrations/_index.md b/site/content/arangodb/3.13/develop/integrations/_index.md index 635983cc4d..3469808d73 100644 --- a/site/content/arangodb/3.13/develop/integrations/_index.md +++ b/site/content/arangodb/3.13/develop/integrations/_index.md @@ -47,3 +47,12 @@ allows you to export data from Apache Kafka to ArangoDB. - Repository: [github.com/arangodb/kafka-connect-arangodb/](https://github.com/arangodb/kafka-connect-arangodb/) - [Demo](https://github.com/arangodb/kafka-connect-arangodb/tree/main/demo) - [Changelog](https://github.com/arangodb/kafka-connect-arangodb/blob/main/ChangeLog.md) + +## TinkerPop Provider + +The [**ArangoDB TinkerPop Provider**](arangodb-tinkerpop-provider.md) is an implementation of +the [Apache TinkerPop OLTP Provider](https://tinkerpop.apache.org/docs/3.7.3/dev/provider) API +for ArangoDB. + +- Repository: [github.com/arangodb/arangodb-tinkerpop-provider](https://github.com/arangodb/arangodb-tinkerpop-provider) +- [Changelog](https://github.com/arangodb/arangodb-tinkerpop-provider/blob/main/CHANGELOG.md) From 8076e73029f6728df20495199c2a60976439127a Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Fri, 24 Oct 2025 14:56:39 +0200 Subject: [PATCH 30/69] Squashed commit of the following: commit f005cb32f318469b1c7eab5d1dde0f4e61309bed Author: Paula <paula.mihu@arangodb.com> Date: Thu Oct 23 13:22:52 2025 +0200 fix broken links commit cb0629b8b52e752fc962991c6261df49baaeba9e Author: Paula <paula.mihu@arangodb.com> Date: Thu Oct 23 13:13:55 2025 +0200 remove tag for now commit 2474431a7c96da5d3da7c1a2a878b1ee9a7a78ca Author: Paula <paula.mihu@arangodb.com> Date: Wed Oct 22 19:29:42 2025 +0200 Renamed GenAI Suite to AI Services across all files, including endpoints; renamed Services folder to Reference; fix all broken links commit 80fb22975c84366d746bf5a1020b1f67d11355e4 Author: Paula <paula.mihu@arangodb.com> Date: Thu Oct 16 10:27:08 2025 +0200 fix some broken links commit 52b1f2a67b56e83dfe9a2b4ddf60011897d3d0a8 Author: Paula <paula.mihu@arangodb.com> Date: Wed Oct 15 18:11:59 2025 +0200 reorganize genai suite overview pages commit f54dce1e93483c8d17ddef1b75bda564e801fb7c Author: Paula <paula.mihu@arangodb.com> Date: Thu Oct 9 16:55:42 2025 +0200 added graphrag uses cases, reorganize content commit 50ea4766087ff352382f40dc15c37cc14a1b89a1 Author: Paula <paula.mihu@arangodb.com> Date: Wed Oct 15 17:10:38 2025 +0200 rework data platform content, make kubernetes more prominent commit 4249c4e08f09554c99832c415945ddf27a7a8ee8 Author: Paula <paula.mihu@arangodb.com> Date: Tue Oct 14 16:55:41 2025 +0200 rename ArangoDB Platform to Arango Data Platform commit abc5079bf85cca0fa0a293680fe2eda6661b0b40 Author: Paula <paula.mihu@arangodb.com> Date: Tue Oct 14 16:50:32 2025 +0200 change menu titles --- README.md | 8 +- site/content/ai-services/_index.md | 36 +++++++ .../graph-analytics.md | 16 ++-- .../{gen-ai => ai-services}/graph-to-ai.md | 44 +-------- .../{gen-ai => ai-services}/graphml/_index.md | 2 +- .../graphml/notebooks-api.md | 4 +- .../graphml/quickstart.md | 6 +- .../{gen-ai => ai-services}/graphml/ui.md | 6 +- site/content/ai-services/graphrag/_index.md | 60 ++++++++++++ .../graphrag/technical-overview.md} | 23 +++-- .../graphrag/tutorial-notebook.md | 8 +- .../content/ai-services/graphrag/use-cases.md | 87 +++++++++++++++++ .../graphrag/web-interface.md | 22 ++--- .../notebook-servers.md | 14 +-- site/content/ai-services/reference/_index.md | 6 ++ .../reference}/gen-ai.md | 26 +++--- .../reference}/importer.md | 14 +-- .../reference}/mlflow.md | 4 +- .../reference}/natural-language-to-aql.md | 4 +- .../reference}/retriever.md | 8 +- .../reference}/triton-inference-server.md | 18 ++-- site/content/amp/_index.md | 4 +- .../arangodb/3.12/aql/functions/vector.md | 2 +- site/content/arangodb/3.12/deploy/_index.md | 6 +- site/content/arangodb/3.12/features/_index.md | 4 +- .../working-with-indexes/vector-indexes.md | 2 +- .../arangodb/3.13/aql/functions/vector.md | 2 +- site/content/arangodb/3.13/deploy/_index.md | 6 +- site/content/arangodb/3.13/features/_index.md | 4 +- .../working-with-indexes/vector-indexes.md | 2 +- .../arangodb/3.13/release-notes/platform.md | 12 +-- site/content/data-platform/_index.md | 47 ++++++++-- site/content/data-platform/about/features.md | 54 ----------- site/content/data-platform/features.md | 81 ++++++++++++++++ .../{about/_index.md => get-started.md} | 93 ++++++------------- site/content/data-platform/release-notes.md | 24 ++--- site/content/gen-ai/_index.md | 24 ----- site/content/gen-ai/services/_index.md | 6 -- .../layouts/shortcodes/tag.html | 4 +- 39 files changed, 470 insertions(+), 323 deletions(-) create mode 100644 site/content/ai-services/_index.md rename site/content/{gen-ai => ai-services}/graph-analytics.md (98%) rename site/content/{gen-ai => ai-services}/graph-to-ai.md (70%) rename site/content/{gen-ai => ai-services}/graphml/_index.md (99%) rename site/content/{gen-ai => ai-services}/graphml/notebooks-api.md (99%) rename site/content/{gen-ai => ai-services}/graphml/quickstart.md (85%) rename site/content/{gen-ai => ai-services}/graphml/ui.md (98%) create mode 100644 site/content/ai-services/graphrag/_index.md rename site/content/{gen-ai/graphrag/_index.md => ai-services/graphrag/technical-overview.md} (92%) rename site/content/{gen-ai => ai-services}/graphrag/tutorial-notebook.md (98%) create mode 100644 site/content/ai-services/graphrag/use-cases.md rename site/content/{gen-ai => ai-services}/graphrag/web-interface.md (88%) rename site/content/{gen-ai => ai-services}/notebook-servers.md (83%) create mode 100644 site/content/ai-services/reference/_index.md rename site/content/{gen-ai/services => ai-services/reference}/gen-ai.md (85%) rename site/content/{gen-ai/services => ai-services/reference}/importer.md (96%) rename site/content/{gen-ai/services => ai-services/reference}/mlflow.md (97%) rename site/content/{gen-ai/services => ai-services/reference}/natural-language-to-aql.md (97%) rename site/content/{gen-ai/services => ai-services/reference}/retriever.md (96%) rename site/content/{gen-ai/services => ai-services/reference}/triton-inference-server.md (92%) delete mode 100644 site/content/data-platform/about/features.md create mode 100644 site/content/data-platform/features.md rename site/content/data-platform/{about/_index.md => get-started.md} (62%) delete mode 100644 site/content/gen-ai/_index.md delete mode 100644 site/content/gen-ai/services/_index.md diff --git a/README.md b/README.md index 1df0c38a87..e7fbf1834f 100644 --- a/README.md +++ b/README.md @@ -367,7 +367,7 @@ Inner shortcode Tags let you display badges, usually below a headline. This is mainly used for pointing out if a feature is only available in the -GenAI Suite, the Data Platform, the Arango Managed Platform (AMP), or multiple +AI Services, the Data Platform, the Arango Managed Platform (AMP), or multiple of them. See [Environment remarks](#environment-remarks) for details. It is also used for [Edition remarks](#edition-remarks) in content before @@ -696,15 +696,15 @@ Pages and sections about features that are only available in certain environment such as in ArangoDB Shell should indicate where they are available using the `tag` shortcode. -Features exclusive to the Data Platform, GenAI Data Platform, +Features exclusive to the Data Platform, AI Services Data Platform, Arango Managed Platform (AMP), and ArangoDB generally don't need to be tagged because they are in dedicated parts of the documentation. However, if there are subsections with different procedures, each can be tagged accordingly. -In the GenAI Data Platform only: +In the AI Services Data Platform only: ```markdown -{{< tag "GenAI Data Platform" >}} +{{< tag "AI Services Data Platform" >}} ``` In the Arango Managed Platform only: diff --git a/site/content/ai-services/_index.md b/site/content/ai-services/_index.md new file mode 100644 index 0000000000..0b5897e9f8 --- /dev/null +++ b/site/content/ai-services/_index.md @@ -0,0 +1,36 @@ +--- +title: AI Services +menuTitle: AI Services +weight: 2 +description: >- + A comprehensive AI solution that transforms your data into intelligent knowledge graphs with GraphRAG capabilities, applies advanced machine learning with GraphML, and provides enterprise-grade tools for analytics, natural language querying, and AI-powered insights, all through an intuitive web interface +--- + +## What's included + +AI Services are comprised of two major components: + +- [**GraphRAG**](./graphrag/_index.md): A complete solution for extracting entities + from text files to create a knowledge graph that you can then query with a + natural language interface. +- [**GraphML**](./graphml/_index.md): Apply machine learning to graphs for link prediction, + classification, and similar tasks. + +Each component has an intuitive graphical user interface integrated into the +Arango Data Platform web interface, guiding you through the process. + +Alongside these components, you also get the following additional features: + +- [**Graph Analytics**](graph-analytics.md): Run graph algorithms such as PageRank + on dedicated compute resources. +- [**Jupyter notebooks**](notebook-servers.md): Run a Jupyter kernel in the platform for hosting + interactive notebooks for experimentation and development of applications + that use ArangoDB as their backend. +- **Public and private LLM support**: Use public LLMs such as OpenAI + or private LLMs with [Triton Inference Server](reference/triton-inference-server.md). +- [**MLflow integration**](reference/mlflow.md): Use the popular MLflow as a model registry for private LLMs + or to run machine learning experiments as part of the Arango Data Platform. +- **Application Programming Interfaces**: Use the underlying APIs of the + AI Services and build your own integrations. See the + [API reference](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html) documentation + for more details. diff --git a/site/content/gen-ai/graph-analytics.md b/site/content/ai-services/graph-analytics.md similarity index 98% rename from site/content/gen-ai/graph-analytics.md rename to site/content/ai-services/graph-analytics.md index 442a7838fb..e19db7de88 100644 --- a/site/content/gen-ai/graph-analytics.md +++ b/site/content/ai-services/graph-analytics.md @@ -17,7 +17,7 @@ and network flow analysis. ArangoDB offers a feature for running algorithms on your graph data, called Graph Analytics Engines (GAEs). It is available on request for the [Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) -and included in the [AI Data Platform](../data-platform/about/_index.md). +and included in the [AI Data Platform](../data-platform/_index.md). Key features: @@ -89,7 +89,7 @@ Single server deployments using ArangoDB version 3.11 are not supported. {{< tabs "platforms" >}} {{< tab "AI Data Platform" >}} -You can use any of the available authentication methods the AI Data Platform +You can use any of the available authentication methods the Data Platform supports to start and stop `graphanalytics` services via the AI service as well as to authenticate requests to the [Engine API](#engine-api). @@ -136,7 +136,7 @@ The interface for managing the engines depends on the environment you use: {{< tag "AI Data Platform" >}} -GAEs are deployed and deleted via the [AI service](services/gen-ai.md) +GAEs are deployed and deleted via the [AI service](reference/gen-ai.md) in the AI Data Platform. If you use cURL, you need to use the `-k` / `--insecure` option for requests @@ -144,7 +144,7 @@ if the Platform deployment uses a self-signed certificate (default). #### Start a `graphanalytics` service -`POST <ENGINE_URL>/gen-ai/v1/graphanalytics` +`POST <ENGINE_URL>/ai/v1/graphanalytics` Start a GAE via the AI service with an empty request body: @@ -152,7 +152,7 @@ Start a GAE via the AI service with an empty request body: # Example with a JWT session token ADB_TOKEN=$(curl -sSk -d '{"username":"root", "password": ""}' -X POST https://127.0.0.1:8529/_open/auth | jq -r .jwt) -Service=$(curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X POST https://127.0.0.1:8529/gen-ai/v1/graphanalytics) +Service=$(curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X POST https://127.0.0.1:8529/ai/v1/graphanalytics) ServiceID=$(echo "$Service" | jq -r ".serviceInfo.serviceId") if [[ "$ServiceID" == "null" ]]; then echo "Error starting gral engine" @@ -164,13 +164,13 @@ echo "$Service" | jq #### List the services -`POST <ENGINE_URL>/gen-ai/v1/list_services` +`POST <ENGINE_URL>/ai/v1/list_services` You can list all running services managed by the AI service, including the `graphanalytics` services: ```sh -curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X POST https://127.0.0.1:8529/gen-ai/v1/list_services | jq +curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X POST https://127.0.0.1:8529/ai/v1/list_services | jq ``` #### Stop a `graphanalytics` service @@ -178,7 +178,7 @@ curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X POST https://127.0.0.1:8529/g Delete the desired engine via the AI service using the service ID: ```sh -curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X DELETE https://127.0.0.1:8529/gen-ai/v1/service/$ServiceID | jq +curl -sSk -H "Authorization: bearer $ADB_TOKEN" -X DELETE https://127.0.0.1:8529/ai/v1/service/$ServiceID | jq ``` ### Management API diff --git a/site/content/gen-ai/graph-to-ai.md b/site/content/ai-services/graph-to-ai.md similarity index 70% rename from site/content/gen-ai/graph-to-ai.md rename to site/content/ai-services/graph-to-ai.md index bccae43b5c..061068ae26 100644 --- a/site/content/gen-ai/graph-to-ai.md +++ b/site/content/ai-services/graph-to-ai.md @@ -1,17 +1,16 @@ --- -title: Generative Artificial Intelligence (GenAI) and Data Science -menuTitle: GenAI & Data Science +title: From Graph to AI +menuTitle: From Graph to AI weight: 25 description: >- ArangoDB's set of tools and technologies enables analytics, machine learning, - and GenAI applications powered by graph data + and AI applications powered by graph data aliases: - data-science/overview --- -- [Link to 3.12](../arangodb/3.12/aql/_index.md) {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The Arango Data Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -21,7 +20,7 @@ data science applications. The core database system includes multi-model storage of information with scalable graph and information retrieval capabilities that you can directly use for your research and product development. -ArangoDB also offers a dedicated GenAI Suite, using the database core +ArangoDB also offers dedicated AI Services, using the database core as the foundation for higher-level features. Whether you want to turbocharge generative AI applications with a GraphRAG solution or apply analytics and machine learning to graph data at scale, ArangoDB covers these needs. @@ -33,39 +32,6 @@ engineering space can make use of ArangoDB's set of tools and technologies that enable analytics and machine learning on graph data. --> -## GenAI Suite - -The GenAI Suite is comprised of two major components: - -- [**GraphRAG**](#graphrag): A complete solution for extracting entities - from text files to create a knowledge graph that you can then query with a - natural language interface. -- [**GraphML**](#graphml): Apply machine learning to graphs for link prediction, - classification, and similar tasks. - -Each component has an intuitive graphical user interface integrated into the -ArangoDB Platform web interface, guiding you through the process. - -Alongside these components, you also get the following additional features: - -- [**Graph Visualizer**](../data-platform/graph-visualizer.md): A web-based tool for exploring your graph data with an - intuitive interface and sophisticated querying capabilities. -- [**Graph Analytics**](graph-analytics.md): Run graph algorithms such as PageRank - on dedicated compute resources. -- [**Jupyter notebooks**](notebook-servers.md): Run a Jupyter kernel in the platform for hosting - interactive notebooks for experimentation and development of applications - that use ArangoDB as their backend. -- **Public and private LLM support**: Use public LLMs such as OpenAI - or private LLMs with [Triton Inference Server](services/triton-inference-server.md). -- [**MLflow integration**](services/mlflow.md): Use the popular MLflow as a model registry for private LLMs - or to run machine learning experiments as part of the ArangoDB Platform. -- [**Adapters**](../ecosystem/adapters/_index.md): Use ArangoDB together with cuGraph, NetworkX, - and other data science tools. -- **Application Programming Interfaces**: Use the underlying APIs of the - GenAI Suite services and build your own integrations. See the - [API reference](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html) documentation - for more details. - ## From graph to AI This section classifies the complexity of the queries you can answer with diff --git a/site/content/gen-ai/graphml/_index.md b/site/content/ai-services/graphml/_index.md similarity index 99% rename from site/content/gen-ai/graphml/_index.md rename to site/content/ai-services/graphml/_index.md index c1262bbdcc..a636fe9901 100644 --- a/site/content/gen-ai/graphml/_index.md +++ b/site/content/ai-services/graphml/_index.md @@ -8,7 +8,7 @@ aliases: - arangographml --- {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The Arango Data Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} diff --git a/site/content/gen-ai/graphml/notebooks-api.md b/site/content/ai-services/graphml/notebooks-api.md similarity index 99% rename from site/content/gen-ai/graphml/notebooks-api.md rename to site/content/ai-services/graphml/notebooks-api.md index f34d9121b6..1c30cd27f3 100644 --- a/site/content/gen-ai/graphml/notebooks-api.md +++ b/site/content/ai-services/graphml/notebooks-api.md @@ -9,7 +9,7 @@ aliases: - ../arangographml/getting-started - ../arangographml-getting-started-with-arangographml --- -The ArangoDB Platform provides an easy-to-use & scalable interface to run +The Arango Data Platform provides an easy-to-use & scalable interface to run Graph Machine Learning on ArangoDB data. Since all the orchestration and Machine Learning logic is managed by ArangoDB, all that is typically required are JSON specifications outlining individual processes to solve a Machine Learning task. @@ -80,7 +80,7 @@ news sources, and locations are interconnected into a large graph. ![Example Event](../../images/ArangoML_open_intelligence_visualization.png) The [`arango-datasets`](../../arangodb/3.12/components/tools/arango-datasets.md) Python package -allows you to load pre-defined datasets into ArangoDB Platform. It comes pre-installed in the +allows you to load pre-defined datasets into Arango Data Platform. It comes pre-installed in the GraphML notebook environment. ```py diff --git a/site/content/gen-ai/graphml/quickstart.md b/site/content/ai-services/graphml/quickstart.md similarity index 85% rename from site/content/gen-ai/graphml/quickstart.md rename to site/content/ai-services/graphml/quickstart.md index db81915e98..e9d0cd164f 100644 --- a/site/content/gen-ai/graphml/quickstart.md +++ b/site/content/ai-services/graphml/quickstart.md @@ -3,14 +3,14 @@ title: How to get started with GraphML menuTitle: Quickstart weight: 5 description: >- - You can use GraphML straight within the ArangoDB Platform, via the web interface + You can use GraphML straight within the Arango Data Platform, via the web interface or via Notebooks aliases: - ../arangographml/deploy --- ## Web interface versus Jupyter Notebooks -The ArangoDB Platform provides enterprise-ready Graph Machine Learning in two options, +The Arango Data Platform provides enterprise-ready Graph Machine Learning in two options, tailored to suit diverse requirements and preferences: - Using the web interface - In a scriptable manner, using the integrated Jupyter Notebooks and the HTTP API for GraphML @@ -20,7 +20,7 @@ tailored to suit diverse requirements and preferences: {{< tabs "graphml-setup" >}} {{< tab "Web Interface" >}} -The web interface of the ArangoDB Platform allows you to create, configure, and +The web interface of the Arango Data Platform allows you to create, configure, and run a full machine learning workflow for GraphML. To get started, see the [Web interface for GraphML](ui.md) page. {{< /tab >}} diff --git a/site/content/gen-ai/graphml/ui.md b/site/content/ai-services/graphml/ui.md similarity index 98% rename from site/content/gen-ai/graphml/ui.md rename to site/content/ai-services/graphml/ui.md index 8c4e43024e..042e7e9936 100644 --- a/site/content/gen-ai/graphml/ui.md +++ b/site/content/ai-services/graphml/ui.md @@ -1,5 +1,5 @@ --- -title: How to use GraphML in the ArangoDB Platform web interface +title: How to use GraphML in the Arango Data Platform web interface menuTitle: Web Interface weight: 10 description: >- @@ -19,10 +19,10 @@ giving you a clear path from data to prediction: ## Create a GraphML project -To create a new GraphML project using the ArangoDB Platform web interface, follow these steps: +To create a new GraphML project using the Arango Data Platform web interface, follow these steps: 1. From the left-hand sidebar, select the database where you want to create the project. -2. In the left-hand sidebar, click **GenAI Suite** to open the GraphML project management interface, then click **Run GraphML**. +2. In the left-hand sidebar, click **AI Services** to open the GraphML project management interface, then click **Run GraphML**. ![Create GraphML Project](../../images/create-graphml-project-ui.png) 3. In the **GraphML projects** view, click **Add new project**. 4. The **Create ML project** modal opens. Enter a **Name** for your machine learning project. diff --git a/site/content/ai-services/graphrag/_index.md b/site/content/ai-services/graphrag/_index.md new file mode 100644 index 0000000000..5fea31289b --- /dev/null +++ b/site/content/ai-services/graphrag/_index.md @@ -0,0 +1,60 @@ +--- +title: GraphRAG +menuTitle: GraphRAG +weight: 5 +description: >- + ArangoDB's GraphRAG solution combines graph-based retrieval-augmented generation + with Large Language Models (LLMs) for turbocharged AI solutions +aliases: + llm-knowledge-graphs +--- +{{< tip >}} +The Arango Data Platform & AI Services are available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + +## Transform unstructured documents into intelligent knowledge graphs + +ArangoDB's GraphRAG solution enables organizations to extract meaningful insights +from their document collections by creating knowledge graphs that capture not just +individual facts, but the intricate relationships between concepts across documents. +This approach goes beyond traditional RAG systems by understanding document +interconnections and providing both granular detail-level responses and high-level +conceptual understanding. + +- **Intelligent document understanding**: Automatically extracts and connects knowledge across multiple document sources +- **Contextual intelligence**: Maintains relationships between concepts, enabling more accurate and comprehensive responses +- **Multi-level insights**: Provides both detailed technical answers and strategic high-level understanding +- **Seamless knowledge access**: Natural language interface for querying complex document relationships + +## Key benefits for enterprise applications + +- **Cross-document relationship intelligence**: +Unlike traditional RAG systems that treat documents in isolation, ArangoDB's GraphRAG +pipeline detects and leverages references between documents and chunks. This enables +more accurate responses by understanding how concepts relate across your entire knowledge base. + +- **Multi-level understanding architecture**: +The system provides both detailed technical responses and high-level strategic insights +from the same knowledge base, adapting response depth based on query complexity and user intent. + +- **Reference-aware knowledge graph**: +GraphRAG automatically detects and maps relationships between document chunks while +maintaining context of how information connects across different sources. + +- **Dynamic knowledge evolution**: +The system learns and improves understanding as more documents are added, with +relationships and connections becoming more sophisticated over time. + + +## What's next + +- **[GraphRAG Enterprise Use Cases](use-cases.md)**: Understand the business value through real-world scenarios. +- **[GraphRAG Technical Overview](technical-overview.md)**: Dive into the architecture, services, and implementation details. +- **[GraphRAG Web Interface](web-interface.md)**: Try GraphRAG using the interactive web interface. +- **[GraphRAG Tutorial using integrated Notebook servers](tutorial-notebook.md)**: Follow hands-on examples and implementation guidance via Jupyter Notebooks. + +For deeper implementation details, explore the individual services: +- **[Importer Service](../reference/importer.md)**: Transform documents into knowledge graphs. +- **[Retriever Service](../reference/retriever.md)**: Query and extract insights from your knowledge graphs. diff --git a/site/content/gen-ai/graphrag/_index.md b/site/content/ai-services/graphrag/technical-overview.md similarity index 92% rename from site/content/gen-ai/graphrag/_index.md rename to site/content/ai-services/graphrag/technical-overview.md index 8588300420..846ef4f164 100644 --- a/site/content/gen-ai/graphrag/_index.md +++ b/site/content/ai-services/graphrag/technical-overview.md @@ -1,15 +1,14 @@ --- -title: GraphRAG -menuTitle: GraphRAG -weight: 5 +title: GraphRAG Technical Overview +menuTitle: Technical Overview +weight: 15 description: >- - ArangoDB's GraphRAG solution combines graph-based retrieval-augmented generation - with Large Language Models (LLMs) for turbocharged GenAI solutions -aliases: - llm-knowledge-graphs + Technical overview of ArangoDB's GraphRAG solution, including + architecture, services, and deployment options --- + {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The ArangoDB Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -34,7 +33,7 @@ ArangoDB's unique capabilities and flexible integration of knowledge graphs and LLMs provide a powerful and efficient solution for anyone seeking to extract valuable insights from diverse datasets. -The GraphRAG component of the GenAI Suite brings all the capabilities +The GraphRAG component of AI Services brings all the capabilities together with an easy-to-use interface, so you can make the knowledge accessible to your organization. @@ -76,7 +75,7 @@ information in a structured graph format, allowing efficient querying and retrie 3. Store the generated Knowledge Graph in the database for retrieval and reasoning. For detailed information about the service, see the -[Importer](../services/importer.md) service documentation. +[Importer](../reference/importer.md) service documentation. ### Extract information from the Knowledge Graph @@ -87,7 +86,7 @@ You can extract information from Knowledge Graphs using two distinct methods: - Local retrieval For detailed information about the service, see the -[Retriever](../services/retriever.md) service documentation. +[Retriever](../reference/retriever.md) service documentation. #### Global retrieval @@ -134,7 +133,7 @@ collection, and then it expands that subgraph over related entities, relations If you're working in an air-gapped environment or need to keep your data private, you can use the private LLM mode with -[Triton Inference Server](../services/triton-inference-server.md). +[Triton Inference Server](../reference/triton-inference-server.md). This option allows you to run the service completely within your own infrastructure. The Triton Inference Server is a crucial component when diff --git a/site/content/gen-ai/graphrag/tutorial-notebook.md b/site/content/ai-services/graphrag/tutorial-notebook.md similarity index 98% rename from site/content/gen-ai/graphrag/tutorial-notebook.md rename to site/content/ai-services/graphrag/tutorial-notebook.md index 1bbcfebf8d..ffadbad182 100644 --- a/site/content/gen-ai/graphrag/tutorial-notebook.md +++ b/site/content/ai-services/graphrag/tutorial-notebook.md @@ -3,10 +3,10 @@ title: GraphRAG Notebook Tutorial menuTitle: Notebook Tutorial description: >- Building a GraphRAG pipeline using ArangoDB's integrated notebook servers -weight: 10 +weight: 25 --- {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The Arango Data Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -199,9 +199,9 @@ pprint(importerResponse) Once the importer service has processed the document, you can visualize and interact with the generated Knowledge Graph using the [Graph Visualizer](../../data-platform/graph-visualizer.md) -directly from the ArangoDB Platform web interface. +directly from the Arango Data Platform web interface. -1. In the ArangoDB Platform web interface, select the database you have previously used. +1. In the Arango Data Platform web interface, select the database you have previously used. 2. Click **Graphs** in the main navigation. 3. Select the graph named **Knowledge Graph** from the list. 4. The viewport of the Graph Visualizer opens for exploring the graph. diff --git a/site/content/ai-services/graphrag/use-cases.md b/site/content/ai-services/graphrag/use-cases.md new file mode 100644 index 0000000000..9b08fe169d --- /dev/null +++ b/site/content/ai-services/graphrag/use-cases.md @@ -0,0 +1,87 @@ +--- +title: GraphRAG Use Cases +menuTitle: Use Cases +weight: 10 +description: >- + Real-world enterprise use cases for ArangoDB's GraphRAG solution and + comparison with traditional RAG approaches, including business benefits + and practical applications +--- + +## GraphRAG Enterprise Use Cases + +Whether you are evaluating GraphRAG for your organization or looking to understand +its business applications, these real-world scenarios demonstrate how GraphRAG can transform the way you extract insights from your data. + +### Enterprise knowledge management + +**Scenario**: A consulting firm has accumulated thousands of PDF reports, research papers, +and client documents over years. Team members struggle to find relevant information +quickly and often miss connections between different projects. + +**GraphRAG solution**: The pipeline processes all documents, creating a knowledge graph +that understands how concepts relate across different projects and time periods. Team +members can now ask questions like "What approaches have we used for supply chain +optimization across different industries?" and get comprehensive answers that reference +multiple documents and projects. + +**Business value**: +- Reduces research time by 70% +- Improves proposal quality by leveraging past insights +- Enables knowledge sharing across teams + +### Research and development + +**Scenario**: A pharmaceutical company's R&D team needs to analyze research papers, +clinical trial data, and regulatory documents to identify potential drug interactions +and development pathways. + +**GraphRAG solution**: The system processes all research documents, clinical data, and +regulatory information, creating connections between different studies and findings. +Researchers can query complex relationships like "What are the common side effects +mentioned across all Phase II trials for similar compounds?" + +**Business value**: +- Accelerates research insights +- Reduces risk of missing critical connections +- Improves decision-making speed + +### Legal document analysis + +**Scenario**: A law firm needs to analyze case law, legal precedents, and client +documents to build comprehensive legal strategies. + +**GraphRAG solution**: The pipeline processes legal documents, creating a knowledge +graph that understands legal precedents, case relationships, and argument patterns. +Lawyers can ask complex questions like "How have similar contract disputes been +resolved in different jurisdictions?" + +**Business value**: +- Improves case preparation quality +- Reduces research time +- Enables more comprehensive legal strategies + +## GraphRAG versus Traditional RAG (VectorRAG) + +Traditional RAG systems find text chunks that are semantically similar to your query. +However, they don't understand the inherent relationships between these chunks. + +For example, when asked, "What is the fix for Issue A?", a VectorRAG system might +retrieve two separate, unstructured chunks: one describing "Issue A" and another +mentioning a "Fix 1" for a related system. Because the connection isn't explicit, +the LLM cannot confidently link them and will often default to a safe, unhelpful answer: + +**VectorRAG Response**: _"The context does not provide a specific fix for Issue A."_ + +GraphRAG overcomes this limitation by retrieving a subgraph of interconnected data. +Instead of just text, it provides the LLM with a clear map of how information is related. + +For the same question, GraphRAG fetches structured triplets (node-relationship-node), +such as `(Issue A) -> [HAS_FIX] -> (Fix 1)`. This context is unambiguous, it explicitly +states the relationship between the problem and the solution, allowing the LLM to +provide a direct and correct answer: + +**GraphRAG Response**: _"The fix for Issue A is Fix 1."_ + +The key difference is that VectorRAG gives the LLM a pile of ingredients, while GraphRAG +provides the actual recipe. \ No newline at end of file diff --git a/site/content/gen-ai/graphrag/web-interface.md b/site/content/ai-services/graphrag/web-interface.md similarity index 88% rename from site/content/gen-ai/graphrag/web-interface.md rename to site/content/ai-services/graphrag/web-interface.md index 47e76c67b4..f9297b6d23 100644 --- a/site/content/gen-ai/graphrag/web-interface.md +++ b/site/content/ai-services/graphrag/web-interface.md @@ -1,13 +1,13 @@ --- -title: How to use GraphRAG in the ArangoDB Platform web interface +title: How to use GraphRAG in the Arango Data Platform web interface menuTitle: Web Interface -weight: 5 +weight: 20 description: >- Learn how to create, configure, and run a full GraphRAG workflow in four steps using the Platform web interface --- {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The Arango Data Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -23,10 +23,10 @@ The entire process is organized into sequential steps within a **Project**: ## Create a GraphRAG project -To create a new GraphRAG project using the ArangoDB Platform web interface, follow these steps: +To create a new GraphRAG project using the Arango Data Platform web interface, follow these steps: 1. From the left-hand sidebar, select the database where you want to create the project. -2. In the left-hand sidebar, click **GenAI Suite** to open the GraphRAG project management +2. In the left-hand sidebar, click **AI Services** to open the GraphRAG project management interface, then click **Run GraphRAG**. 3. In the **GraphRAG projects** view, click **Add new project**. 4. The **Create GraphRAG project** modal opens. Enter a **Name** and optionally @@ -75,7 +75,7 @@ while OpenAI is used for the embedding model. 3. Click the **Start importer service** button. {{< info >}} -Note that you must first register your model in MLflow. The [Triton LLM Host](../services/triton-inference-server.md) +Note that you must first register your model in MLflow. The [Triton LLM Host](../reference/triton-inference-server.md) service automatically downloads and loads models from the MLflow registry. {{< /info >}} @@ -84,7 +84,7 @@ service automatically downloads and loads models from the MLflow registry. {{< /tabs >}} -See also the [GraphRAG Importer](../services/importer.md) service documentation. +See also the [GraphRAG Importer](../reference/importer.md) service documentation. ## Upload your file @@ -145,7 +145,7 @@ while OpenAI is used for the embedding model. 3. Click the **Start retriever service** button. {{< info >}} -Note that you must first register your model in MLflow. The [Triton LLM Host](../services/triton-inference-server.md) +Note that you must first register your model in MLflow. The [Triton LLM Host](../reference/triton-inference-server.md) service automatically downloads and loads models from the MLflow registry. {{< /info >}} @@ -154,14 +154,14 @@ service automatically downloads and loads models from the MLflow registry. {{< /tabs >}} -See also the [GraphRAG Retriever](../services/retriever.md) documentation. +See also the [GraphRAG Retriever](../reference/retriever.md) documentation. ## Chat with your Knowledge Graph The Retriever service provides two search methods: -- [Local search](../services/retriever.md#local-search): Local queries let you +- [Local search](../reference/retriever.md#local-search): Local queries let you explore specific nodes and their direct connections. -- [Global search](../services/retriever.md#global-search): Global queries uncover +- [Global search](../reference/retriever.md#global-search): Global queries uncover broader patters and relationships across the entire Knowledge Graph. ![Chat with your Knowledge Graph](../../images/graphrag-ui-chat.png) diff --git a/site/content/gen-ai/notebook-servers.md b/site/content/ai-services/notebook-servers.md similarity index 83% rename from site/content/gen-ai/notebook-servers.md rename to site/content/ai-services/notebook-servers.md index 27a7896fba..fc3c9a0c28 100644 --- a/site/content/gen-ai/notebook-servers.md +++ b/site/content/ai-services/notebook-servers.md @@ -3,23 +3,23 @@ title: Notebook Servers menuTitle: Notebook Servers weight: 20 description: >- - Colocated Jupyter Notebooks within the ArangoDB Platform + Colocated Jupyter Notebooks within the Arango Data Platform aliases: - arangograph-notebooks --- {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The Arango Data Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} ArangoDB Notebooks provide a Python-based, Jupyter-compatible interface for building -and experimenting with graph-powered data, GenAI, and graph machine learning +and experimenting with graph-powered data, AI, and graph machine learning workflows directly connected to ArangoDB databases. The notebook servers are -embedded in the ArangoDB Platform ecosystem and offer a +embedded in the Arango Data Platform ecosystem and offer a pre-configured environment where everything, including all the necessary services and configurations, comes preloaded. You don't need to set up or configure the -infrastructure, and can immediately start using the GraphML and GenAI +infrastructure, and can immediately start using the GraphML and AI functionalities. The notebooks are primarily focused on the following solutions: @@ -32,14 +32,14 @@ The notebooks are primarily focused on the following solutions: NetworkX, and other data science tools. The ArangoDB Notebooks include the following: -- Automatically connect to ArangoDB databases and GenAI platform services +- Automatically connect to ArangoDB databases and AI platform services - [Magic commands](../amp/notebooks.md#arangograph-magic-commands) that simplify database interactions - Example notebooks for learning ## Quickstart -1. In the ArangoDB Platform web interface, expand **GenAI Tools** in the +1. In the Arango Data Platform web interface, expand **AI Tools** in the main navigation and click **Notebook servers**. 2. The page displays an overview of the notebook services. Click **New notebook server** to create a new one. diff --git a/site/content/ai-services/reference/_index.md b/site/content/ai-services/reference/_index.md new file mode 100644 index 0000000000..e23683c4ba --- /dev/null +++ b/site/content/ai-services/reference/_index.md @@ -0,0 +1,6 @@ +--- +title: Reference +menuTitle: Reference +description: '' +--- + diff --git a/site/content/gen-ai/services/gen-ai.md b/site/content/ai-services/reference/gen-ai.md similarity index 85% rename from site/content/gen-ai/services/gen-ai.md rename to site/content/ai-services/reference/gen-ai.md index e6bd266480..f0b1ee9bc8 100644 --- a/site/content/gen-ai/services/gen-ai.md +++ b/site/content/ai-services/reference/gen-ai.md @@ -1,20 +1,20 @@ --- -title: GenAI Orchestration Service -menuTitle: GenAI +title: AI Orchestration Service +menuTitle: AI Orchestrator description: >- - The GenAI orchestrator service installs, manages, and runs AI-based services + The AI orchestrator service installs, manages, and runs AI-based services for GraphRAG in your Kubernetes cluster weight: 5 --- {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The Arango Data Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} ## Overview -The basic operations that the GenAI orchestration service carries out are the following: +The basic operations that the AI orchestration service carries out are the following: - Install a service - Uninstall a service - Get the status of a service @@ -23,7 +23,7 @@ The basic operations that the GenAI orchestration service carries out are the fo Each unique service has its own API endpoint for the deployment. **Endpoint LLM Host:** -`https://<ExternalEndpoint>:8529/gen-ai/v1/llmhost` +`https://<ExternalEndpoint>:8529/ai/v1/llmhost` While services have their own unique endpoint, they share the same creation request body and the same response body structure. The `env` field is used @@ -86,7 +86,7 @@ corresponding service documentation. ## Obtaining a Bearer Token -Before you can authenticate with the GenAI service, you need to obtain a +Before you can authenticate with the AI service, you need to obtain a Bearer token. You can generate this token using the ArangoDB authentication API: ```bash @@ -106,7 +106,7 @@ The example below shows how to install, monitor, and uninstall the Importer serv ### Step 1: Installing the service ```bash -curl -X POST https://<ExternalEndpoint>:8529/gen-ai/v1/graphragimporter \ +curl -X POST https://<ExternalEndpoint>:8529/ai/v1/graphragimporter \ -H "Authorization: Bearer <your-bearer-token>" \ -H "Content-Type: application/json" \ -d '{ @@ -136,7 +136,7 @@ curl -X POST https://<ExternalEndpoint>:8529/gen-ai/v1/graphragimporter \ ### Step 2: Checking the service status ```bash -curl -X GET https://<ExternalEndpoint>:8529/gen-ai/v1/service/arangodb-graphrag-importer-of1ml \ +curl -X GET https://<ExternalEndpoint>:8529/ai/v1/service/arangodb-graphrag-importer-of1ml \ -H "Authorization: Bearer <your-bearer-token>" ``` @@ -155,7 +155,7 @@ curl -X GET https://<ExternalEndpoint>:8529/gen-ai/v1/service/arangodb-graphrag- ### Step 3: Uninstalling the service ```bash -curl -X DELETE https://<ExternalEndpoint>:8529/gen-ai/v1/service/arangodb-graphrag-importer-of1ml \ +curl -X DELETE https://<ExternalEndpoint>:8529/ai/v1/service/arangodb-graphrag-importer-of1ml \ -H "Authorization: Bearer <your-bearer-token>" ``` @@ -188,17 +188,17 @@ Replace the following values with your actual configuration: ## Service configuration -The GenAI orchestrator service is **started by default**. +The AI orchestrator service is **started by default**. It will be available at the following URL: -`https://<ExternalEndpoint>:8529/gen-ai/v1/service` +`https://<ExternalEndpoint>:8529/ai/v1/service` ## Health check To test whether the service is running, you can use the following snippet: ```bash -curl -X GET https://<ExternalEndpoint>:8529/gen-ai/v1/health +curl -X GET https://<ExternalEndpoint>:8529/ai/v1/health ``` Expected output on success: `{"status":"OK"}` diff --git a/site/content/gen-ai/services/importer.md b/site/content/ai-services/reference/importer.md similarity index 96% rename from site/content/gen-ai/services/importer.md rename to site/content/ai-services/reference/importer.md index 955f1a68d2..9c118e6d7e 100644 --- a/site/content/gen-ai/services/importer.md +++ b/site/content/ai-services/reference/importer.md @@ -7,7 +7,7 @@ description: >- weight: 10 --- {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The Arango Data Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -36,7 +36,7 @@ To create a new GraphRAG project, use the `CreateProject` method by sending a provide a `project_description`. ```curl -curl -X POST "https://<ExternalEndpoint>:8529/gen-ai/v1/project" \ +curl -X POST "https://<ExternalEndpoint>:8529/ai/v1/project" \ -H "Content-Type: application/json" \ -d '{ "project_name": "docs", @@ -57,7 +57,7 @@ Additional project metadata is accessible via the following endpoint, replacing `<your_project>` with the actual name of your project: ``` -GET /gen-ai/v1/project_by_name/<your_project> +GET /ai/v1/project_by_name/<your_project> ``` The endpoint provides comprehensive metadata about your project's components, @@ -94,8 +94,8 @@ The Importer service can be configured to use either: - OpenAI (for public LLM deployments) - OpenRouter (for public LLM deployments) -To start the service, use the GenAI service endpoint `/v1/graphragimporter`. -Please refer to the documentation of [GenAI service](gen-ai.md) for more +To start the service, use the AI service endpoint `/v1/graphragimporter`. +Please refer to the documentation of [AI service](gen-ai.md) for more information on how to use it. ### Using Triton Inference Server (Private LLM) @@ -209,7 +209,7 @@ to send an input file to the Importer service: ``` Replace the following placeholders: - - `<your-arangodb-platform-url>`: Your ArangoDB Platform URL. + - `<your-arangodb-platform-url>`: Your Arango Data Platform URL. - `<url-postfix>`: The URL postfix configured in your deployment. @@ -224,7 +224,7 @@ to send an input file to the Importer service: You can verify the state of the import process via the following endpoint: ``` -GET /gen-ai/v1/project_by_name/<your_project> +GET /ai/v1/project_by_name/<your_project> ``` For example, the `status` object found within `importerServices` may contain the following diff --git a/site/content/gen-ai/services/mlflow.md b/site/content/ai-services/reference/mlflow.md similarity index 97% rename from site/content/gen-ai/services/mlflow.md rename to site/content/ai-services/reference/mlflow.md index 84d43a6e70..39146ba48b 100644 --- a/site/content/gen-ai/services/mlflow.md +++ b/site/content/ai-services/reference/mlflow.md @@ -3,11 +3,11 @@ title: ArangoDB MLflow Service menuTitle: MLflow description: >- The ArangoDB MLflow Service integrates the MLflow platform for managing the - full machine learning lifecycle into the ArangoDB Platform + full machine learning lifecycle into the Arango Data Platform weight: 25 --- {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The Arango Data Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} diff --git a/site/content/gen-ai/services/natural-language-to-aql.md b/site/content/ai-services/reference/natural-language-to-aql.md similarity index 97% rename from site/content/gen-ai/services/natural-language-to-aql.md rename to site/content/ai-services/reference/natural-language-to-aql.md index 6d2610dfe0..e73234d162 100644 --- a/site/content/gen-ai/services/natural-language-to-aql.md +++ b/site/content/ai-services/reference/natural-language-to-aql.md @@ -55,11 +55,11 @@ TRITON_TIMEOUT=<timeout_seconds> # Optional ### Starting the Service -To start the service, use GenAI service endpoint `CreateGraphRag`. Please refer to the documentation of GenAI service for more information on how to use it. +To start the service, use AI service endpoint `CreateGraphRag`. Please refer to the documentation of AI service for more information on how to use it. ### Required Parameters -These parameters must be provided in the install request sent to GenAI service. +These parameters must be provided in the install request sent to AI service. - `username`: Database username for authentication - `db_name`: Name of the ArangoDB database diff --git a/site/content/gen-ai/services/retriever.md b/site/content/ai-services/reference/retriever.md similarity index 96% rename from site/content/gen-ai/services/retriever.md rename to site/content/ai-services/reference/retriever.md index 9c1f03c0cd..5aba44eacc 100644 --- a/site/content/gen-ai/services/retriever.md +++ b/site/content/ai-services/reference/retriever.md @@ -7,7 +7,7 @@ description: >- weight: 15 --- {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The Arango Data Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -84,8 +84,8 @@ entities, or relationships. The Retriever service can be configured to use either the Triton Inference Server (for private LLM deployments) or OpenAI/OpenRouter (for public LLM deployments). -To start the service, use the GenAI service endpoint `/v1/graphragretriever`. -Please refer to the documentation of [GenAI service](gen-ai.md) for more +To start the service, use the AI service endpoint `/v1/graphragretriever`. +Please refer to the documentation of [AI service](gen-ai.md) for more information on how to use it. ### Using Triton Inference Server (Private LLM) @@ -236,7 +236,7 @@ GET /v1/health You can verify the state of the retriever process via the following endpoint: ``` -GET /gen-ai/v1/project_by_name/<your_project> +GET /ai/v1/project_by_name/<your_project> ``` For example, the `status` object found within `retrieverServices` may contain the following diff --git a/site/content/gen-ai/services/triton-inference-server.md b/site/content/ai-services/reference/triton-inference-server.md similarity index 92% rename from site/content/gen-ai/services/triton-inference-server.md rename to site/content/ai-services/reference/triton-inference-server.md index e1a7ca4112..43b96d4bc4 100644 --- a/site/content/gen-ai/services/triton-inference-server.md +++ b/site/content/ai-services/reference/triton-inference-server.md @@ -6,7 +6,7 @@ description: >- weight: 30 --- {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The Arango Data Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -21,7 +21,7 @@ and seamless Kubernetes integration. ## Workflow The Triton LLM Host enables your GraphRAG pipeline to use privately hosted -LLMs directly from the ArangoDB Platform environment. The process involves the +LLMs directly from the Arango Data Platform environment. The process involves the following steps: 1. Install the Triton LLM Host service. @@ -37,14 +37,14 @@ more about the service and how to interact with it. ## Deployment The Triton LLM Host service is deployed as a **Kubernetes application** using Helm charts in -the ArangoDB Platform ecosystem. It integrates with the: +the Arango Data Platform ecosystem. It integrates with the: - MLFlow model registry for model management. - Storage sidecar for artifact storage. -## Installation via GenAI Service API +## Installation via AI Service API To install the Triton LLM Host service, send an API request to the -**GenAI service** using the following parameters: +**AI service** using the following parameters: ### Required parameters @@ -165,18 +165,18 @@ requests for example. Refer to the specific service with which you are using Triton Inference Server for more details. {{< /info >}} -- **Internal access (within ArangoDB Platform)**: +- **Internal access (within Arango Data Platform)**: `https://{SERVICE_ID}.{KUBERNETES_NAMESPACE}.svc:8000` - `KUBERNETES_NAMESPACE` is available as an environment variable. - - `SERVICE_ID` is returned by the GenAI service API. + - `SERVICE_ID` is returned by the AI service API. **Example**: To check server health: `GET https://{SERVICE_ID}.{KUBERNETES_NAMESPACE}.svc:8000/v2/health/ready` -- **External access (outside ArangoDB Platform)**: +- **External access (outside Arango Data Platform)**: `https://{BASE_URL}:8529/llm/{SERVICE_POSTFIX}/` - - `BASE_URL`: Your ArangoDB Platform base URL. + - `BASE_URL`: Your Arango Data Platform base URL. - `SERVICE_POSTFIX`: Last 5 characters of the service ID. **Example**: diff --git a/site/content/amp/_index.md b/site/content/amp/_index.md index e43ab5ae79..991f8e0dd1 100644 --- a/site/content/amp/_index.md +++ b/site/content/amp/_index.md @@ -1,6 +1,6 @@ --- title: Arango Managed Platform (AMP) -menuTitle: Managed Platform +menuTitle: Arango Managed Platform weight: 4 description: >- The Arango Managed Platform (AMP) provides the entire functionality of @@ -8,6 +8,8 @@ description: >- aliases: - arangograph/changelog --- +{{< cloudbanner>}} + The [Arango Managed Platform (AMP)](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic), formerly called Oasis, provides ArangoDB databases as a Service (DBaaS). It enables you to use the entire functionality of an ArangoDB cluster diff --git a/site/content/arangodb/3.12/aql/functions/vector.md b/site/content/arangodb/3.12/aql/functions/vector.md index 8b6bcb377d..62ebe4352d 100644 --- a/site/content/arangodb/3.12/aql/functions/vector.md +++ b/site/content/arangodb/3.12/aql/functions/vector.md @@ -12,7 +12,7 @@ To use vector search, you need to have vector embeddings stored in documents and the attribute that stores them needs to be indexed by a [vector index](../../index-and-search/indexing/working-with-indexes/vector-indexes.md). -You can calculate vector embeddings using [ArangoDB's GraphML](../../../../gen-ai/graphml/_index.md) +You can calculate vector embeddings using [ArangoDB's GraphML](../../../../ai-services/graphml/_index.md) capabilities (available in ArangoGraph) or using external tools. {{< warning >}} diff --git a/site/content/arangodb/3.12/deploy/_index.md b/site/content/arangodb/3.12/deploy/_index.md index 499c517066..cacd720b1a 100644 --- a/site/content/arangodb/3.12/deploy/_index.md +++ b/site/content/arangodb/3.12/deploy/_index.md @@ -43,14 +43,14 @@ on a single DB-Server node for better performance and with transactional guarantees similar to a single server deployment. OneShard is primarily intended for multi-tenant use cases. -### ArangoDB Platform +### Arango Data Platform -The ArangoDB Platform is the umbrella for deploying and operating the entire +The Arango Data Platform is the umbrella for deploying and operating the entire ArangoDB product offering with a unified interface in a Kubernetes cluster. It is offered for self-hosting on-prem or in the cloud and as a managed service, superseding the Arango Managed Platform (AMP). -See [The ArangoDB Platform](../../../data-platform/about/_index.md) for details. +See [The ArangoDB Platform](../../../data-platform/_index.md) for details. ## How to deploy diff --git a/site/content/arangodb/3.12/features/_index.md b/site/content/arangodb/3.12/features/_index.md index 85b1f4bdde..768a1e24f5 100644 --- a/site/content/arangodb/3.12/features/_index.md +++ b/site/content/arangodb/3.12/features/_index.md @@ -22,8 +22,8 @@ aliases: See the full [Feature list of the ArangoDB database system](list.md). For a scalable architecture based on Kubernetes that supports the full offering -of ArangoDB including graph-powered machine learning and GenAI features, see -the [Feature list of the ArangoDB Platform](../../../data-platform/about/features.md). +of ArangoDB including graph-powered machine learning and AI features, see +the [Feature list of the Arango Data Platform](../../../data-platform/features.md). ## On-premises versus Cloud diff --git a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md index 174e095f16..8e81c3f2ca 100644 --- a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md +++ b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md @@ -30,7 +30,7 @@ startup option needs to be enabled on the deployment you want to restore to. {{< /warning >}} 1. Enable the vector index feature. -2. Calculate vector embeddings using [Arango's GraphML](../../../../../gen-ai/graphml/_index.md) +2. Calculate vector embeddings using [Arango's GraphML](../../../../../ai-services/graphml/_index.md) capabilities (available in the AI Data Platform) or using external tools. Store each vector as an attribute in the respective document. 3. Create a vector index over this attribute. You need to choose which diff --git a/site/content/arangodb/3.13/aql/functions/vector.md b/site/content/arangodb/3.13/aql/functions/vector.md index 8b6bcb377d..62ebe4352d 100644 --- a/site/content/arangodb/3.13/aql/functions/vector.md +++ b/site/content/arangodb/3.13/aql/functions/vector.md @@ -12,7 +12,7 @@ To use vector search, you need to have vector embeddings stored in documents and the attribute that stores them needs to be indexed by a [vector index](../../index-and-search/indexing/working-with-indexes/vector-indexes.md). -You can calculate vector embeddings using [ArangoDB's GraphML](../../../../gen-ai/graphml/_index.md) +You can calculate vector embeddings using [ArangoDB's GraphML](../../../../ai-services/graphml/_index.md) capabilities (available in ArangoGraph) or using external tools. {{< warning >}} diff --git a/site/content/arangodb/3.13/deploy/_index.md b/site/content/arangodb/3.13/deploy/_index.md index 499c517066..26defb9066 100644 --- a/site/content/arangodb/3.13/deploy/_index.md +++ b/site/content/arangodb/3.13/deploy/_index.md @@ -43,14 +43,14 @@ on a single DB-Server node for better performance and with transactional guarantees similar to a single server deployment. OneShard is primarily intended for multi-tenant use cases. -### ArangoDB Platform +### Arango Data Platform -The ArangoDB Platform is the umbrella for deploying and operating the entire +The Arango Data Platform is the umbrella for deploying and operating the entire ArangoDB product offering with a unified interface in a Kubernetes cluster. It is offered for self-hosting on-prem or in the cloud and as a managed service, superseding the Arango Managed Platform (AMP). -See [The ArangoDB Platform](../../../data-platform/about/_index.md) for details. +See the [Arango Data Platform](../../../data-platform/_index.md) for details. ## How to deploy diff --git a/site/content/arangodb/3.13/features/_index.md b/site/content/arangodb/3.13/features/_index.md index 85b1f4bdde..768a1e24f5 100644 --- a/site/content/arangodb/3.13/features/_index.md +++ b/site/content/arangodb/3.13/features/_index.md @@ -22,8 +22,8 @@ aliases: See the full [Feature list of the ArangoDB database system](list.md). For a scalable architecture based on Kubernetes that supports the full offering -of ArangoDB including graph-powered machine learning and GenAI features, see -the [Feature list of the ArangoDB Platform](../../../data-platform/about/features.md). +of ArangoDB including graph-powered machine learning and AI features, see +the [Feature list of the Arango Data Platform](../../../data-platform/features.md). ## On-premises versus Cloud diff --git a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md index 174e095f16..8e81c3f2ca 100644 --- a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md +++ b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md @@ -30,7 +30,7 @@ startup option needs to be enabled on the deployment you want to restore to. {{< /warning >}} 1. Enable the vector index feature. -2. Calculate vector embeddings using [Arango's GraphML](../../../../../gen-ai/graphml/_index.md) +2. Calculate vector embeddings using [Arango's GraphML](../../../../../ai-services/graphml/_index.md) capabilities (available in the AI Data Platform) or using external tools. Store each vector as an attribute in the respective document. 3. Create a vector index over this attribute. You need to choose which diff --git a/site/content/arangodb/3.13/release-notes/platform.md b/site/content/arangodb/3.13/release-notes/platform.md index 850dc4df8b..1eb76ad190 100644 --- a/site/content/arangodb/3.13/release-notes/platform.md +++ b/site/content/arangodb/3.13/release-notes/platform.md @@ -6,7 +6,7 @@ description: >- Features and improvements in the ArangoDB Platform --- {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The ArangoDB Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -17,17 +17,17 @@ the ArangoDB team. The ArangoDB Platform is a scalable architecture that offers you all features of the core ArangoDB database system along with graph-powered machine learning -and GenAI capabilities as a single solution with a unified interface. Deploy the +and AI capabilities as a single solution with a unified interface. Deploy the Platform on-premise or in the cloud on top of Kubernetes. To get started, see [Self-host the ArangoDB Platform](../components/platform.md#self-host-the-arangodb-platform). -### GenAI Suite +### AI Services -The ArangoDB Platform features a dedicated GenAI and data science suite, built upon +The ArangoDB Platform features dedicated AI and data science services, built upon the powerful ArangoDB database core. -The GenAI suite consists of the following components, each featuring an intuitive, +AI Services consists of the following components, each featuring an intuitive, user-friendly interface seamlessly integrated into the ArangoDB Platform web interface: - GraphRAG - GraphML @@ -35,5 +35,5 @@ user-friendly interface seamlessly integrated into the ArangoDB Platform web int - MLflow integration - Graph Visualizer -To learn more, see the [GenAI Suite](../../../gen-ai/_index.md) +To learn more, see [AI Services](../../../ai-services/_index.md) documentation. diff --git a/site/content/data-platform/_index.md b/site/content/data-platform/_index.md index 84f9764a1f..82380cfb08 100644 --- a/site/content/data-platform/_index.md +++ b/site/content/data-platform/_index.md @@ -1,20 +1,51 @@ --- -title: Recommended Resources -menuTitle: Data Platform +title: Arango Data Platform +menuTitle: Arango Data Platform weight: 1 -layout: default +description: >- + The Arango Data Platform brings everything ArangoDB offers together to a single + solution that you can deploy on-prem or use as a managed service --- -{{< cloudbanner >}} + +{{< tip >}} +The Arango Data Platform & AI Services are available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + +The Arango Data Platform is a **Kubernetes-native** technical infrastructure that acts as the umbrella +for hosting the entire ArangoDB offering of products. Built from the ground up for +cloud-native orchestration, the platform leverages the power of Kubernetes to make it easy +to deploy, scale, and operate the core ArangoDB database system along with any additional +AI solutions for GraphRAG, graph machine learning, data explorations, and more. You can +run it on-premises or in the cloud yourself on top of Kubernetes to access all +of the platform features with enterprise-grade automation and reliability. {{< cards >}} -{{% card title="What is the ArangoDB Platform?" link="about/" %}} -The ArangoDB Platform is the umbrella for hosting the entire ArangoDB offering -of products, including GraphML and GraphRAG. +{{% card title="Get started with the Arango Data Platform" link="get-started/" %}} +Deploy the core ArangoDB database system with Kubernetes orchestration. +Optionally add AI Services to turn data into an AI-powered knowledge engine. +{{% /card %}} + +{{% card title="Features and Architecture" link="features/" %}} +Explore the Kubernetes-native architecture, unified interface, and enterprise-grade capabilities of the Arango Data Platform. +{{% /card %}} + +{{% card title="ArangoDB Kubernetes Operator" link="../../arangodb/3.12/deploy/kubernetes/" %}} +Learn about the official ArangoDB Kubernetes Operator that powers the Arango Data Platform. {{% /card %}} {{% card title="Graph Visualizer" link="graph-visualizer/" %}} -Explore your graph data with an intuitive web interface. +Explore your graph data with an intuitive web interface and sophisticated querying capabilities. +{{% /card %}} + +{{% card title="AI Services" link="../../ai-services/" %}} +Supercharge your platform with GraphRAG, GraphML, and advanced analytics for AI-powered data insights. +{{% /card %}} + +{{% card title="ArangoDB Core Database" link="../../arangodb/3.12/" %}} +Discover the multi-model database at the heart of the platform supporting graphs, documents, key-value, and vector search. {{% /card %}} {{< /cards >}} diff --git a/site/content/data-platform/about/features.md b/site/content/data-platform/about/features.md deleted file mode 100644 index 65f61afc50..0000000000 --- a/site/content/data-platform/about/features.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Feature list of the ArangoDB Platform -menuTitle: ArangoDB Platform -weight: 10 -description: >- - The ArangoDB Platform is a scalable architecture that gets you all features - of ArangoDB including graph-powered machine learning and GenAI as a single - solution with a unified interface ---- -## Architecture - -- **Core Database**: The ArangoDB database system forms the solid core - of the ArangoDB Platform. - -- **Kubernetes**: An open-source container orchestration system for automating - software deployment, scaling, and management designed by Google. It is the - autopilot for operating ArangoDB clusters and the additional Platform services. - -- **Helm**: A package manager for Kubernetes that enables consistent, repeatable - installations and version control. - -- **Envoy**: A high-performance service proxy that acts as the gateway for the - ArangoDB Platform for centralizing authentication and routing. - -- **Web interface**: The Platform includes a unified, browser-based UI that lets - you access its features in an intuitive way. Optional products like the - GenAI Suite seamlessly integrate into the UI if installed. - -## Features - -- [**ArangoDB Core**](../../arangodb/3.12/_index.md): The ArangoDB database system with support for - graphs, documents, key-value, full-text search, and vector search. - -- [**Graph Visualizer**](../graph-visualizer.md): - A web-based tool for exploring your graph data with an intuitive interface and - sophisticated querying capabilities. - -- [**Graph Analytics**](../../gen-ai/graph-analytics.md): - A service that can efficiently load graph data from the core database system - and run graph algorithms such as PageRank and many more. - -- [**GenAI Suite**](../../gen-ai/_index.md): - ArangoDB's graph-powered machine learning (GraphML) as well as GraphRAG for - automatically building knowledge graphs from text and taking advantage of both - excerpts and higher-level summaries as context for turbocharging GenAI - applications. - -- [**Notebook servers**](../../gen-ai/notebook-servers.md): - Run Jupyter kernels in the Platform for hosting interactive, Python-based - notebooks to experiment and develop applications. - -- [**MLflow integration**](../../gen-ai/services/mlflow.md): - Use the popular MLflow for machine learning practitioners as part of the - ArangoDB Platform. diff --git a/site/content/data-platform/features.md b/site/content/data-platform/features.md new file mode 100644 index 0000000000..1979d9f5bf --- /dev/null +++ b/site/content/data-platform/features.md @@ -0,0 +1,81 @@ +--- +title: Feature list of the Arango Data Platform +menuTitle: Features +weight: 5 +description: >- + The Arango Data Platform is a scalable Kubernetes-native architecture that gets you all features + of ArangoDB as a single solution with a unified interface +--- +## Architecture + +The Arango Data Platform is built on a modern, cloud-native foundation designed for enterprise scalability and reliability. + +{{< tip >}} +**Kubernetes-Native Architecture**: Built as a cloud-native platform that leverages +[Kubernetes](https://kubernetes.io/) for container orchestration, automated deployment, +scaling, and management. Powered by the official +[ArangoDB Kubernetes Operator](https://arangodb.github.io/kube-arangodb/) for +enterprise-grade database management and high availability. +{{< /tip >}} + +- **Core Database**: The ArangoDB database system forms the solid core + of the Arango Data Platform. + +- **Helm**: A package manager for Kubernetes that enables consistent, repeatable + installations and version control. + +- **Envoy**: A high-performance service proxy that acts as the gateway for the + Arango Data Platform for centralizing authentication and routing. + +- **Web interface**: The Platform includes a unified, browser-based UI that lets + you access its features in an intuitive way. Optional products like the + AI Services seamlessly integrate into the UI if installed. + +## Kubernetes Integration + +At its core, the Arango Data Platform is purpose-built for Kubernetes environments, leveraging the +[official ArangoDB Kubernetes Operator](https://arangodb.github.io/kube-arangodb/docs/) +(`kube-arangodb`) to deliver enterprise-grade automation, scalability, and operational excellence. + +## Features + +The Arango Data Platform provides these core capabilities out of the box: + +- [**ArangoDB Core**](../arangodb/3.12/_index.md): The ArangoDB database system with support for + graphs, documents, key-value, full-text search, and vector search. + +- [**Graph Visualizer**](graph-visualizer.md): + A web-based tool for exploring your graph data with an intuitive interface and + sophisticated querying capabilities. + +## Extend the Arango Data Platform with AI capabilities + +Take your Arango Data Platform to the next level with [**AI Services**](../ai-services/_index.md) that offers advanced AI and machine learning capabilities that integrate seamlessly into the platform's unified web interface. + +What you get with AI Services: + +- [GraphRAG](../ai-services/graphrag/): Generate knowledge graphs from documents and enable + conversational querying of your data. +- [GraphML](../ai-services/graphml/): Apply machine learning algorithms that leverage graph + structure for better predictions. +- [Graph Analytics](../ai-services/graph-analytics/): Run advanced algorithms like PageRank + to discover influential nodes and patterns. +- [Jupyter notebooks](../ai-services/notebook-servers.md): Run Jupyter Notebooks to build and + experiment with graph-powered data, AI, and machine learning workflows directly connected + to ArangoDB databases. +- Public and private LLM support: Use public LLMs such as OpenAI + or private LLMs with [Triton Inference Server](../ai-services/reference/triton-inference-server.md). +- [MLflow integration](../ai-services/reference/mlflow.md): Use the popular MLflow as a model registry + for private LLMs or to run machine learning experiments as part of the Arango Data Platform. + +{{< tip >}} +AI Services integrate directly into the existing platform interface, no need for +separate systems to manage or learn. A separate license is required. +{{< /tip >}} + + + + + + + diff --git a/site/content/data-platform/about/_index.md b/site/content/data-platform/get-started.md similarity index 62% rename from site/content/data-platform/about/_index.md rename to site/content/data-platform/get-started.md index a7e7925af8..a47c4aa5ea 100644 --- a/site/content/data-platform/about/_index.md +++ b/site/content/data-platform/get-started.md @@ -1,87 +1,50 @@ --- -title: The ArangoDB Platform -menuTitle: Platform -weight: 5 +title: Get Started with the Arango Data Platform +menuTitle: Get Started +weight: 10 description: >- - The ArangoDB Platform brings everything ArangoDB offers together to a single + The Arango Data Platform brings everything ArangoDB offers together to a single solution that you can deploy on-prem or use as a managed service --- {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The Arango Data Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} -The ArangoDB Platform is a technical infrastructure that acts as the umbrella +The Arango Data Platform is a technical infrastructure that acts as the umbrella for hosting the entire ArangoDB offering of products. The Platform makes it easy to deploy and operate the core ArangoDB database system along with any additional ArangoDB products for machine learning, data explorations, and more. You can run it on-premises or in the cloud yourself on top of Kubernetes to access all of the platform features. -## Features of the ArangoDB Platform - -- **Core database system**: The ArangoDB graph database system for storing - interconnected data.{{< comment >}} You can use the free Community Edition or the commercial - Enterprise Edition.{{< /comment >}} -- **Graph Visualizer**: A web-based tool for exploring your graph data with an - intuitive interface and sophisticated querying capabilities. -- **Graph Analytics**: A suite of graph algorithms including PageRank, - community detection, and centrality measures with support for GPU - acceleration thanks to Nvidia cuGraph. -- **GenAI Suite**: A set of machine learning services, APIs, and - user interfaces that are available as a package as well as individual products. - - **GraphML**: A turnkey solution for graph machine learning for prediction - use cases such as fraud detection, supply chain, healthcare, retail, and - cyber security. - - **GraphRAG**: Leverage ArangoDB's graph, document, key-value, - full-text search, and vector search features to streamline knowledge - extraction and retrieval. - {{< comment >}}TODO: Not available in prerelease version - - **Txt2AQL**: Unlock natural language querying with a service that converts - user input into ArangoDB Query Language (AQL), powered by fine-tuned - private or public LLMs. - {{< /comment >}} - - **GraphRAG Importer**: Extract entities and relationships from large - text-based files, converting unstructured data into a knowledge graph - stored in ArangoDB. - - **GraphRAG Retriever**: Perform semantic similarity searches or aggregate - insights from graph communities with global and local queries. - - **Public and private LLM support**: Use public LLMs such as OpenAI - or private LLMs with [Triton Inference Server](../../gen-ai/services/triton-inference-server.md). - - **MLflow integration**: Use the popular MLflow as a model registry for private LLMs - or to run machine learning experiments as part of the ArangoDB Platform. -- **Jupyter notebooks**: Run a Jupyter kernel in the platform for hosting - interactive notebooks for experimentation and development of applications - that use ArangoDB as their backend. -{{< comment >}}TODO: Mostly unrelated to Platform, vector index in core, -- **Vector embeddings**: You can train machine learning models for later use - in vector search in conjunction with the core database system's `vector` - index type. It allows you to find similar items in your dataset. -{{< /comment >}} - -## Get started with the ArangoDB Platform +## Use the Arango Data Platform as a managed service -### Use the ArangoDB Platform as a managed service - -The ArangoDB Platform is not available as a managed service yet, but it will +The Arango Data Platform is not available as a managed service yet, but it will become available for the [Arango Managed Platform (AMP)](../../amp/_index.md) in the future. Until then, you can request early access to the self-hosted -ArangoDB Platform for testing. +Arango Data Platform for testing. -### Self-host the ArangoDB Platform +## Self-host the Arango Data Platform -You can set up and run the ArangoDB Platform on-premises or in the cloud and +You can set up and run the Arango Data Platform on-premises or in the cloud and manage this deployment yourself. -#### Requirements for self-hosting +{{< info >}} +**Kubernetes-Native**: The Arango Data Platform is built specifically for Kubernetes +environments and relies on the official [ArangoDB Kubernetes Operator](https://arangodb.github.io/kube-arangodb/) +to provide automated deployment, scaling, and management capabilities. +{{< /info >}} + +### Requirements for self-hosting -- **Early access to the ArangoDB Platform**: +- **Early access to the Arango Data Platform**: [Get in touch](https://arangodb.com/contact/) with the ArangoDB team to get - exclusive early access to the pre-release of the ArangoDB Platform & GenAI Suite. + exclusive early access to the pre-release of the Arango Data Platform & AI Services. - **Kubernetes**: Orchestrates the selected services that comprise the - ArangoDB Platform, running them in containers for safety and scalability. + Arango Data Platform, running them in containers for safety and scalability. Set up a [Kubernetes](https://kubernetes.io/) cluster if you don't have one available yet. @@ -109,9 +72,9 @@ manage this deployment yourself. respective packages. {{< /comment >}} -#### Setup +### Setup -1. Obtain a zip package of the ArangoDB Platform for the offline installation. +1. Obtain a zip package of the Arango Data Platform for the offline installation. It includes helm charts, manifests, and blobs of the container image layers. You also receive a package configuration file from the ArangoDB team. @@ -142,7 +105,7 @@ manage this deployment yourself. --set crds.enabled=true ``` -4. Install the ArangoDB operator for Kubernetes `kube-arangodb` with helm, +4. Install the [ArangoDB Kubernetes Operator](https://arangodb.github.io/kube-arangodb/) `kube-arangodb` with helm, with options to enable webhooks, certificates, and the gateway feature. ```sh @@ -190,7 +153,7 @@ manage this deployment yourself. # ... ``` -6. Download the ArangoDB Platform CLI tool `arangodb_operator_platform` from +6. Download the Arango Data Platform CLI tool `arangodb_operator_platform` from <https://github.com/arangodb/kube-arangodb/releases>. It is available for Linux and macOS, for the x86-64 as well as 64-bit ARM architecture (e.g. `arangodb_operator_platform_linux_amd64`). @@ -202,7 +165,7 @@ manage this deployment yourself. The Platform CLI tool simplifies the further setup and later management of the Platform's Kubernetes services. -7. Import the zip package of the ArangoDB Platform into the container registry. +7. Import the zip package of the Arango Data Platform into the container registry. Replace `platform.zip` with the file path of the offline installation package. Replace `gcr.io/my-reg` with the address of your registry. @@ -231,13 +194,13 @@ manage this deployment yourself. ## Interfaces -The ArangoDB Platform uses a gateway to make all its services available via a +The Arango Data Platform uses a gateway to make all its services available via a single port at the external address of the deployment. For a local deployment, the base URL is `https://127.0.0.1:8529`. ### Unified web interface -You can access the ArangoDB Platform web interface with a browser by appending +You can access the Arango Data Platform web interface with a browser by appending `/ui/` to the base URL, e.g. `https://127.0.0.1:8529/ui/`. ### ArangoDB Core diff --git a/site/content/data-platform/release-notes.md b/site/content/data-platform/release-notes.md index d5d4db5fa9..6800b2ac31 100644 --- a/site/content/data-platform/release-notes.md +++ b/site/content/data-platform/release-notes.md @@ -1,39 +1,39 @@ --- -title: What's new in the ArangoDB Platform +title: What's new in the Arango Data Platform menuTitle: Release notes weight: 50 description: >- - Features and improvements in the ArangoDB Platform + Features and improvements in the Arango Data Platform --- {{< tip >}} -The ArangoDB Platform & GenAI Suite is available as a pre-release. To get +The Arango Data Platform & AI Services are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} -## ArangoDB Platform +## Arango Data Platform <small>Introduced in: v3.12.5</small> -The ArangoDB Platform is a scalable architecture that offers you all features +The Arango Data Platform is a scalable architecture that offers you all features of the core ArangoDB database system along with graph-powered machine learning -and GenAI capabilities as a single solution with a unified interface. Deploy the +and AI capabilities as a single solution with a unified interface. Deploy the Platform on-premise or in the cloud on top of Kubernetes. -To get started, see [Self-host the ArangoDB Platform](about/_index.md#self-host-the-arangodb-platform). +To get started, see [Self-host the Arango Data Platform](./get-started.md#self-host-the-arango-data-platform). -### GenAI Suite +### AI Services -The ArangoDB Platform features a dedicated GenAI and data science suite, built upon +The Arango Data Platform features dedicated AI and data science services, built upon the powerful ArangoDB database core. -The GenAI suite consists of the following components, each featuring an intuitive, -user-friendly interface seamlessly integrated into the ArangoDB Platform web interface: +AI Services consists of the following components, each featuring an intuitive, +user-friendly interface seamlessly integrated into the Arango Data Platform web interface: - GraphRAG - GraphML - Jupyter Notebooks - MLflow integration - Graph Visualizer -To learn more, see the [GenAI Suite](../gen-ai/_index.md) +To learn more, see [AI Services](../ai-services/_index.md) documentation. diff --git a/site/content/gen-ai/_index.md b/site/content/gen-ai/_index.md deleted file mode 100644 index caa176ae72..0000000000 --- a/site/content/gen-ai/_index.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Recommended Resources -menuTitle: 'GenAI Data Platform' -weight: 2 -layout: default ---- -{{< cloudbanner >}} - -{{< cards >}} - -{{% card title="GraphRAG" link="graphrag/" %}} -Arango's GenAI solution for generating knowledge graphs from documents -and chatting with your data. -{{% /card %}} - -{{% card title="GraphML" link="graphml/" %}} -Discover Arango's graph-powered machine learning features. -{{% /card %}} - -{{% card title="Graph Analytics" link="graph-analytics/" %}} -Run algorithms such as PageRank on your graph data. -{{% /card %}} - -{{< /cards >}} diff --git a/site/content/gen-ai/services/_index.md b/site/content/gen-ai/services/_index.md deleted file mode 100644 index 8df04c2c84..0000000000 --- a/site/content/gen-ai/services/_index.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: GenAI services -menuTitle: Services -description: '' ---- - diff --git a/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html b/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html index 9244cbf9dc..189c6e9b99 100644 --- a/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html +++ b/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html @@ -1,7 +1,7 @@ {{ $tooltips := dict "AMP" "This feature is available in the Arango Managed Platform (AMP)" - "Data Platform" "This feature is available in the Arango Data Platform and GenAI Data Platform" - "GenAI Data Platform" "This feature is available in the Arango GenAI Data Platform but not the Data Platform" + "Data Platform" "This feature is available in the Arango Data Platform and AI Services Data Platform" + "AI Services Data Platform" "This feature is available in the Arango AI Services Data Platform but not the Data Platform" "arangosh" "This feature is available in the ArangoDB Shell" "ArangoDB Enterprise Edition" "This feature is available in the Enterprise Edition but not the Community Edition of ArangoDB" -}} From 25eac9f7ee7a16f84c0b0df5709700b37ddf7c53 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Fri, 24 Oct 2025 18:44:18 +0200 Subject: [PATCH 31/69] Update tag tooltips --- .../arangodb-docs-theme/layouts/shortcodes/tag.html | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html b/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html index 189c6e9b99..f90c12ee44 100644 --- a/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html +++ b/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html @@ -1,12 +1,14 @@ {{ $tooltips := dict - "AMP" "This feature is available in the Arango Managed Platform (AMP)" - "Data Platform" "This feature is available in the Arango Data Platform and AI Services Data Platform" - "AI Services Data Platform" "This feature is available in the Arango AI Services Data Platform but not the Data Platform" - "arangosh" "This feature is available in the ArangoDB Shell" + "Experimental" "This feature is available for testing but may still change or get removed" + "AMP" "This feature is available in the Arango Managed Platform (AMP)" + "Data Platform" "This feature is available in the Arango Data Platform and Arango AI Data Platform" + "AI Data Platform" "This feature is available in the Arango AI Data Platform but not the Arango Data Platform without the AI Services" + "arangosh" "This feature is available in the ArangoDB Shell" "ArangoDB Enterprise Edition" "This feature is available in the Enterprise Edition but not the Community Edition of ArangoDB" -}} + <p class="labels"> {{ range $.Params }} <span class="label"{{ with index $tooltips . }} title="{{ . }}"{{ end }}>{{ . }}</span> {{ end }} -</p> +</p> \ No newline at end of file From 3737b481719968c9eea1e95e73956c8ebf7d62c4 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Fri, 24 Oct 2025 18:44:31 +0200 Subject: [PATCH 32/69] Fix tab name in Graph Analytics --- site/content/ai-services/graph-analytics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/ai-services/graph-analytics.md b/site/content/ai-services/graph-analytics.md index cef7730962..9dd39d3c85 100644 --- a/site/content/ai-services/graph-analytics.md +++ b/site/content/ai-services/graph-analytics.md @@ -40,7 +40,7 @@ How to perform the steps is detailed in the subsequent sections. {{< tabs "platforms" >}} -{{< tab "Arango Data Platform" >}} +{{< tab "AI Data Platform" >}} 1. Determine the approximate size of the data that you will load into the GAE and ensure the machine to run the engine on has sufficient memory. The data as well as the temporarily needed space for computations and results needs to fit in memory. From 73909a4c2df435af6da88fc953e29bb4c86f6874 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Fri, 24 Oct 2025 18:44:44 +0200 Subject: [PATCH 33/69] Graph Intelligence -> Graphs also in menu --- site/content/arangodb/3.12/graphs/_index.md | 2 +- site/content/arangodb/3.13/graphs/_index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/site/content/arangodb/3.12/graphs/_index.md b/site/content/arangodb/3.12/graphs/_index.md index 76d5771e20..29eb32cbe5 100644 --- a/site/content/arangodb/3.12/graphs/_index.md +++ b/site/content/arangodb/3.12/graphs/_index.md @@ -1,6 +1,6 @@ --- title: Graphs -menuTitle: Graph Intelligence +menuTitle: Graphs weight: 75 description: >- Graphs let you represent things and the relationships between them using diff --git a/site/content/arangodb/3.13/graphs/_index.md b/site/content/arangodb/3.13/graphs/_index.md index 76d5771e20..29eb32cbe5 100644 --- a/site/content/arangodb/3.13/graphs/_index.md +++ b/site/content/arangodb/3.13/graphs/_index.md @@ -1,6 +1,6 @@ --- title: Graphs -menuTitle: Graph Intelligence +menuTitle: Graphs weight: 75 description: >- Graphs let you represent things and the relationships between them using From f5621c496b1b43fc633fec063a7ee21ebc2ccc20 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Fri, 24 Oct 2025 18:45:47 +0200 Subject: [PATCH 34/69] ArangoGraph -> AMP in oasisctl generator --- toolchain/scripts/generators/oasisctl.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/toolchain/scripts/generators/oasisctl.py b/toolchain/scripts/generators/oasisctl.py index 50f4aa4fda..418c2c8e44 100644 --- a/toolchain/scripts/generators/oasisctl.py +++ b/toolchain/scripts/generators/oasisctl.py @@ -129,7 +129,7 @@ def rewrite_content(data, section, filename, weight): if flags["inFrontMatter"] and not flags["endFrontMatter"]: if line.startswith("description: "): if filename.endswith("/options.md"): - content = content + "description: Command-line client tool for managing ArangoGraph\n" + content = content + "description: Command-line client tool for managing the Arango Managed Platform (AMP)\n" continue if line.startswith("layout: "): @@ -137,7 +137,7 @@ def rewrite_content(data, section, filename, weight): if line.startswith("title: "): if filename.endswith("/options.md"): - content = content + f"title: ArangoGraph Shell oasisctl\nmenuTitle: Options\nweight: {weight}\n" + content = content + f"title: Arango Managed Platform (AMP) Shell oasisctl\nmenuTitle: Options\nweight: {weight}\n" continue menuTitle = "" From 298e66ad335836cb85afe327708f76c6271e7364 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Fri, 24 Oct 2025 18:46:19 +0200 Subject: [PATCH 35/69] Change cloud banner alt text --- .../layouts/shortcodes/cloudbanner.html | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/site/themes/arangodb-docs-theme/layouts/shortcodes/cloudbanner.html b/site/themes/arangodb-docs-theme/layouts/shortcodes/cloudbanner.html index 0030027cdd..3523400d92 100644 --- a/site/themes/arangodb-docs-theme/layouts/shortcodes/cloudbanner.html +++ b/site/themes/arangodb-docs-theme/layouts/shortcodes/cloudbanner.html @@ -1,10 +1,7 @@ <div class="ag-banner"> - <img src="/images/ArangoAMP_logo.svg" alt="ArangoGraph" class="logo" /> - <div> - <div class="ag-info"> - Experience the shortest time to value for a hosted graph DB.</div> - <a class="link" href="https://dashboard.arangodb.cloud/home" target="_agCloud"> - Get Started Today! - </a> - </div> -</div> + <img src="/images/ArangoAMP_logo.svg" alt="Arango Managed Platform (AMP)" class="logo" /> + <div> + <div class="ag-info">Experience the shortest time to value for a hosted graph DB.</div> + <a class="link" href="https://dashboard.arangodb.cloud/home" target="_blank">Get Started Today!</a> + </div> +</div> \ No newline at end of file From 11b874db53361ba1117a0a5841ed64643d60aede Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Fri, 24 Oct 2025 19:02:12 +0200 Subject: [PATCH 36/69] Rename AI Services back to AI Suite Also fix oasisctl page and name capitalization --- README.md | 4 ++- .../{ai-services => ai-suite}/_index.md | 15 ++++++----- .../graph-analytics.md | 2 +- .../{ai-services => ai-suite}/graph-to-ai.md | 4 +-- .../graphml/_index.md | 2 +- .../graphml/notebooks-api.md | 0 .../graphml/quickstart.md | 0 .../{ai-services => ai-suite}/graphml/ui.md | 2 +- .../graphrag/_index.md | 2 +- .../graphrag/technical-overview.md | 4 +-- .../graphrag/tutorial-notebook.md | 2 +- .../graphrag/use-cases.md | 0 .../graphrag/web-interface.md | 4 +-- .../notebook-servers.md | 2 +- .../reference/_index.md | 0 .../reference/gen-ai.md | 2 +- .../reference/importer.md | 2 +- .../reference/mlflow.md | 2 +- .../reference/natural-language-to-aql.md | 0 .../reference/retriever.md | 2 +- .../reference/triton-inference-server.md | 2 +- site/content/amp/oasisctl/_index.md | 16 +++++------ .../amp/security-and-access-control/_index.md | 2 +- .../arangodb/3.10/components/tools/_index.md | 2 +- .../arangodb/3.10/data-science/_index.md | 2 +- .../arangodb/3.11/components/tools/_index.md | 2 +- .../arangodb/3.11/data-science/_index.md | 2 +- .../arangodb/3.12/aql/functions/vector.md | 2 +- .../arangodb/3.12/components/tools/_index.md | 2 +- .../working-with-indexes/vector-indexes.md | 2 +- .../arangodb/3.13/aql/functions/vector.md | 2 +- .../arangodb/3.13/components/tools/_index.md | 2 +- .../working-with-indexes/vector-indexes.md | 2 +- site/content/data-platform/_index.md | 6 ++--- site/content/data-platform/features.md | 27 +++++++------------ site/content/data-platform/get-started.md | 4 +-- .../content/data-platform/graph-visualizer.md | 2 +- site/content/data-platform/release-notes.md | 10 +++---- .../layouts/shortcodes/tag.html | 2 +- 39 files changed, 70 insertions(+), 72 deletions(-) rename site/content/{ai-services => ai-suite}/_index.md (79%) rename site/content/{ai-services => ai-suite}/graph-analytics.md (99%) rename site/content/{ai-services => ai-suite}/graph-to-ai.md (97%) rename site/content/{ai-services => ai-suite}/graphml/_index.md (99%) rename site/content/{ai-services => ai-suite}/graphml/notebooks-api.md (100%) rename site/content/{ai-services => ai-suite}/graphml/quickstart.md (100%) rename site/content/{ai-services => ai-suite}/graphml/ui.md (99%) rename site/content/{ai-services => ai-suite}/graphrag/_index.md (97%) rename site/content/{ai-services => ai-suite}/graphrag/technical-overview.md (97%) rename site/content/{ai-services => ai-suite}/graphrag/tutorial-notebook.md (99%) rename site/content/{ai-services => ai-suite}/graphrag/use-cases.md (100%) rename site/content/{ai-services => ai-suite}/graphrag/web-interface.md (97%) rename site/content/{ai-services => ai-suite}/notebook-servers.md (96%) rename site/content/{ai-services => ai-suite}/reference/_index.md (100%) rename site/content/{ai-services => ai-suite}/reference/gen-ai.md (98%) rename site/content/{ai-services => ai-suite}/reference/importer.md (99%) rename site/content/{ai-services => ai-suite}/reference/mlflow.md (98%) rename site/content/{ai-services => ai-suite}/reference/natural-language-to-aql.md (100%) rename site/content/{ai-services => ai-suite}/reference/retriever.md (99%) rename site/content/{ai-services => ai-suite}/reference/triton-inference-server.md (98%) diff --git a/README.md b/README.md index a6377bb0c3..7f8a38db53 100644 --- a/README.md +++ b/README.md @@ -367,7 +367,7 @@ Inner shortcode Tags let you display badges, usually below a headline. This is mainly used for pointing out if a feature is only available in the -AI Services, the Data Platform, the Arango Managed Platform (AMP), or multiple +AI Suite, the Data Platform, the Arango Managed Platform (AMP), or multiple of them. See [Environment remarks](#environment-remarks) for details. It is also used for [Edition remarks](#edition-remarks) in content before @@ -591,6 +591,8 @@ The following shortcodes also exist but are rarely used: - _Agent_, _Agency_ (uppercase A) - _Arango Managed Platform (AMP)_ and _AMP_ for short, but not ~~Oasis~~, ~~ArangoDB Oasis~~, ~~ArangoDB Cloud~~, ~~ArangoGraph Insights Platform~~, or ~~ArangoGraph~~ + - _Arango Data Platform_, _Arango AI Data Platform_, and _AI Suite_, but not + ~~Arango AI Services Data Platform~~, ~~Arango AI Suite Data Platform~~, ~~AI Services~~, or ~~GenAI Suite~~ - _Deployment mode_ (single server, cluster, etc.), not ~~deployment type~~ - Never capitalize the names of executables or code values, e.g. write diff --git a/site/content/ai-services/_index.md b/site/content/ai-suite/_index.md similarity index 79% rename from site/content/ai-services/_index.md rename to site/content/ai-suite/_index.md index 77bdb3f00a..c149b1fea4 100644 --- a/site/content/ai-services/_index.md +++ b/site/content/ai-suite/_index.md @@ -1,14 +1,17 @@ --- -title: AI Services -menuTitle: AI Services +title: AI Suite +menuTitle: AI Suite weight: 2 description: >- - A comprehensive AI solution that transforms your data into intelligent knowledge graphs with GraphRAG capabilities, applies advanced machine learning with GraphML, and provides enterprise-grade tools for analytics, natural language querying, and AI-powered insights, all through an intuitive web interface + A comprehensive AI solution that transforms your data into intelligent + knowledge graphs with GraphRAG capabilities, applies advanced machine learning + with GraphML, and provides enterprise-grade tools for analytics, + natural language querying, and AI-powered insights, all through an intuitive + web interface --- - ## What's included -AI Services are comprised of two major components: +AI Suite are comprised of two major components: - [**GraphRAG**](./graphrag/_index.md): A complete solution for extracting entities from text files to create a knowledge graph that you can then query with a @@ -31,6 +34,6 @@ Alongside these components, you also get the following additional features: - [**MLflow integration**](reference/mlflow.md): Use the popular MLflow as a model registry for private LLMs or to run machine learning experiments as part of the Arango Data Platform. - **Application Programming Interfaces**: Use the underlying APIs of the - AI Services and build your own integrations. See the + AI Suite and build your own integrations. See the [Protocol Documentation](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html) for more details. diff --git a/site/content/ai-services/graph-analytics.md b/site/content/ai-suite/graph-analytics.md similarity index 99% rename from site/content/ai-services/graph-analytics.md rename to site/content/ai-suite/graph-analytics.md index 9dd39d3c85..190c6ac1f2 100644 --- a/site/content/ai-services/graph-analytics.md +++ b/site/content/ai-suite/graph-analytics.md @@ -108,7 +108,7 @@ an AMP **API key**. See on how to create one. You then need to generate an **access token** using the API key. See -[Authenticating with Oasisctl](../amp/api/get-started.md#authenticating-with-oasisctl) +[Authenticating with oasisctl](../amp/api/get-started.md#authenticating-with-oasisctl) on how to do so using `oasisctl login`. The [Engine API](#engine-api) uses one of two authentication methods, depending diff --git a/site/content/ai-services/graph-to-ai.md b/site/content/ai-suite/graph-to-ai.md similarity index 97% rename from site/content/ai-services/graph-to-ai.md rename to site/content/ai-suite/graph-to-ai.md index 35bfb04a22..f98f654237 100644 --- a/site/content/ai-services/graph-to-ai.md +++ b/site/content/ai-suite/graph-to-ai.md @@ -10,7 +10,7 @@ aliases: --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -20,7 +20,7 @@ data science applications. The core database system includes multi-model storage of information with scalable graph and information retrieval capabilities that you can directly use for your research and product development. -ArangoDB also offers dedicated AI Services, using the database core +ArangoDB also offers dedicated AI Suite, using the database core as the foundation for higher-level features. Whether you want to turbocharge generative AI applications with a GraphRAG solution or apply analytics and machine learning to graph data at scale, ArangoDB covers these needs. diff --git a/site/content/ai-services/graphml/_index.md b/site/content/ai-suite/graphml/_index.md similarity index 99% rename from site/content/ai-services/graphml/_index.md rename to site/content/ai-suite/graphml/_index.md index e5069ada36..af839ece48 100644 --- a/site/content/ai-services/graphml/_index.md +++ b/site/content/ai-suite/graphml/_index.md @@ -8,7 +8,7 @@ aliases: - arangographml --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} diff --git a/site/content/ai-services/graphml/notebooks-api.md b/site/content/ai-suite/graphml/notebooks-api.md similarity index 100% rename from site/content/ai-services/graphml/notebooks-api.md rename to site/content/ai-suite/graphml/notebooks-api.md diff --git a/site/content/ai-services/graphml/quickstart.md b/site/content/ai-suite/graphml/quickstart.md similarity index 100% rename from site/content/ai-services/graphml/quickstart.md rename to site/content/ai-suite/graphml/quickstart.md diff --git a/site/content/ai-services/graphml/ui.md b/site/content/ai-suite/graphml/ui.md similarity index 99% rename from site/content/ai-services/graphml/ui.md rename to site/content/ai-suite/graphml/ui.md index 042e7e9936..a83f8b5582 100644 --- a/site/content/ai-services/graphml/ui.md +++ b/site/content/ai-suite/graphml/ui.md @@ -22,7 +22,7 @@ giving you a clear path from data to prediction: To create a new GraphML project using the Arango Data Platform web interface, follow these steps: 1. From the left-hand sidebar, select the database where you want to create the project. -2. In the left-hand sidebar, click **AI Services** to open the GraphML project management interface, then click **Run GraphML**. +2. In the left-hand sidebar, click **AI Suite** to open the GraphML project management interface, then click **Run GraphML**. ![Create GraphML Project](../../images/create-graphml-project-ui.png) 3. In the **GraphML projects** view, click **Add new project**. 4. The **Create ML project** modal opens. Enter a **Name** for your machine learning project. diff --git a/site/content/ai-services/graphrag/_index.md b/site/content/ai-suite/graphrag/_index.md similarity index 97% rename from site/content/ai-services/graphrag/_index.md rename to site/content/ai-suite/graphrag/_index.md index 5fea31289b..1174402e92 100644 --- a/site/content/ai-services/graphrag/_index.md +++ b/site/content/ai-suite/graphrag/_index.md @@ -9,7 +9,7 @@ aliases: llm-knowledge-graphs --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} diff --git a/site/content/ai-services/graphrag/technical-overview.md b/site/content/ai-suite/graphrag/technical-overview.md similarity index 97% rename from site/content/ai-services/graphrag/technical-overview.md rename to site/content/ai-suite/graphrag/technical-overview.md index 7a2163a99c..df38361cf6 100644 --- a/site/content/ai-services/graphrag/technical-overview.md +++ b/site/content/ai-suite/graphrag/technical-overview.md @@ -8,7 +8,7 @@ description: >- --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -33,7 +33,7 @@ ArangoDB's unique capabilities and flexible integration of knowledge graphs and LLMs provide a powerful and efficient solution for anyone seeking to extract valuable insights from diverse datasets. -The GraphRAG component of AI Services brings all the capabilities +The GraphRAG component of AI Suite brings all the capabilities together with an easy-to-use interface, so you can make the knowledge accessible to your organization. diff --git a/site/content/ai-services/graphrag/tutorial-notebook.md b/site/content/ai-suite/graphrag/tutorial-notebook.md similarity index 99% rename from site/content/ai-services/graphrag/tutorial-notebook.md rename to site/content/ai-suite/graphrag/tutorial-notebook.md index ffadbad182..fe587e4dc9 100644 --- a/site/content/ai-services/graphrag/tutorial-notebook.md +++ b/site/content/ai-suite/graphrag/tutorial-notebook.md @@ -6,7 +6,7 @@ description: >- weight: 25 --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} diff --git a/site/content/ai-services/graphrag/use-cases.md b/site/content/ai-suite/graphrag/use-cases.md similarity index 100% rename from site/content/ai-services/graphrag/use-cases.md rename to site/content/ai-suite/graphrag/use-cases.md diff --git a/site/content/ai-services/graphrag/web-interface.md b/site/content/ai-suite/graphrag/web-interface.md similarity index 97% rename from site/content/ai-services/graphrag/web-interface.md rename to site/content/ai-suite/graphrag/web-interface.md index f9297b6d23..80c1a4ae07 100644 --- a/site/content/ai-services/graphrag/web-interface.md +++ b/site/content/ai-suite/graphrag/web-interface.md @@ -7,7 +7,7 @@ description: >- using the Platform web interface --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -26,7 +26,7 @@ The entire process is organized into sequential steps within a **Project**: To create a new GraphRAG project using the Arango Data Platform web interface, follow these steps: 1. From the left-hand sidebar, select the database where you want to create the project. -2. In the left-hand sidebar, click **AI Services** to open the GraphRAG project management +2. In the left-hand sidebar, click **AI Suite** to open the GraphRAG project management interface, then click **Run GraphRAG**. 3. In the **GraphRAG projects** view, click **Add new project**. 4. The **Create GraphRAG project** modal opens. Enter a **Name** and optionally diff --git a/site/content/ai-services/notebook-servers.md b/site/content/ai-suite/notebook-servers.md similarity index 96% rename from site/content/ai-services/notebook-servers.md rename to site/content/ai-suite/notebook-servers.md index cfc2f134ba..8606108f1e 100644 --- a/site/content/ai-services/notebook-servers.md +++ b/site/content/ai-suite/notebook-servers.md @@ -8,7 +8,7 @@ aliases: - arangograph-notebooks --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} diff --git a/site/content/ai-services/reference/_index.md b/site/content/ai-suite/reference/_index.md similarity index 100% rename from site/content/ai-services/reference/_index.md rename to site/content/ai-suite/reference/_index.md diff --git a/site/content/ai-services/reference/gen-ai.md b/site/content/ai-suite/reference/gen-ai.md similarity index 98% rename from site/content/ai-services/reference/gen-ai.md rename to site/content/ai-suite/reference/gen-ai.md index e484775fa3..4f59d38bdf 100644 --- a/site/content/ai-services/reference/gen-ai.md +++ b/site/content/ai-suite/reference/gen-ai.md @@ -7,7 +7,7 @@ description: >- weight: 5 --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} diff --git a/site/content/ai-services/reference/importer.md b/site/content/ai-suite/reference/importer.md similarity index 99% rename from site/content/ai-services/reference/importer.md rename to site/content/ai-suite/reference/importer.md index 22142c0ee2..263a3c77aa 100644 --- a/site/content/ai-services/reference/importer.md +++ b/site/content/ai-suite/reference/importer.md @@ -7,7 +7,7 @@ description: >- weight: 10 --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} diff --git a/site/content/ai-services/reference/mlflow.md b/site/content/ai-suite/reference/mlflow.md similarity index 98% rename from site/content/ai-services/reference/mlflow.md rename to site/content/ai-suite/reference/mlflow.md index 39146ba48b..0ec14ccd2a 100644 --- a/site/content/ai-services/reference/mlflow.md +++ b/site/content/ai-suite/reference/mlflow.md @@ -7,7 +7,7 @@ description: >- weight: 25 --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} diff --git a/site/content/ai-services/reference/natural-language-to-aql.md b/site/content/ai-suite/reference/natural-language-to-aql.md similarity index 100% rename from site/content/ai-services/reference/natural-language-to-aql.md rename to site/content/ai-suite/reference/natural-language-to-aql.md diff --git a/site/content/ai-services/reference/retriever.md b/site/content/ai-suite/reference/retriever.md similarity index 99% rename from site/content/ai-services/reference/retriever.md rename to site/content/ai-suite/reference/retriever.md index 5aba44eacc..0d9ac3bc11 100644 --- a/site/content/ai-services/reference/retriever.md +++ b/site/content/ai-suite/reference/retriever.md @@ -7,7 +7,7 @@ description: >- weight: 15 --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} diff --git a/site/content/ai-services/reference/triton-inference-server.md b/site/content/ai-suite/reference/triton-inference-server.md similarity index 98% rename from site/content/ai-services/reference/triton-inference-server.md rename to site/content/ai-suite/reference/triton-inference-server.md index 43b96d4bc4..64c6d1fc79 100644 --- a/site/content/ai-services/reference/triton-inference-server.md +++ b/site/content/ai-suite/reference/triton-inference-server.md @@ -6,7 +6,7 @@ description: >- weight: 30 --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} diff --git a/site/content/amp/oasisctl/_index.md b/site/content/amp/oasisctl/_index.md index 9d22a68e31..f7a840444f 100644 --- a/site/content/amp/oasisctl/_index.md +++ b/site/content/amp/oasisctl/_index.md @@ -1,18 +1,18 @@ --- -title: Oasisctl -menuTitle: Oasisctl +title: The `oasisctl` tool for the Arango Managed Platform (AMP) +menuTitle: oasisctl weight: 65 description: >- - Command-line client tool for managing the ArangoGraph Insights Platform + A command-line client tool for managing AMP --- -Oasisctl is a command-line tool for using the [ArangoGraph API](../api/_index.md). -This tool makes integration of ArangoGraph in all kinds of (bash) scripts easy. +_oasisctl_ is a command-line tool for using the [Arango Management Platform (AMP) API](../api/_index.md). +This tool makes integration of AMP in all kinds of (bash) scripts easy. It is also a good example on how to use the API. -See [Getting started with Oasisctl](../api/get-started.md) for a +See [Getting started with oasisctl](../api/get-started.md) for a tutorial. -Oasisctl is available for Linux, macOS and Windows. -Download and source code: +_oasisctl_ is available for Linux, macOS and Windows. +Downloads and source code: [github.com/arangodb-managed/oasisctl](https://github.com/arangodb-managed/oasisctl/) diff --git a/site/content/amp/security-and-access-control/_index.md b/site/content/amp/security-and-access-control/_index.md index 81903b4630..45520fa70e 100644 --- a/site/content/amp/security-and-access-control/_index.md +++ b/site/content/amp/security-and-access-control/_index.md @@ -619,7 +619,7 @@ Deployment Z of project DEF | ✓ | — | — ## Restricting access to organizations -To enhance security, you can implement the following restrictions via [Oasisctl](../oasisctl/_index.md): +To enhance security, you can implement the following restrictions via [oasisctl](../oasisctl/_index.md): 1. Limit allowed authentication providers. 2. Specify an allowed domain list. diff --git a/site/content/arangodb/3.10/components/tools/_index.md b/site/content/arangodb/3.10/components/tools/_index.md index 82a6a260f5..6919e13c84 100644 --- a/site/content/arangodb/3.10/components/tools/_index.md +++ b/site/content/arangodb/3.10/components/tools/_index.md @@ -31,4 +31,4 @@ Additional tools which are available separately: |-----------------|-------------------| | [Foxx CLI](foxx-cli/_index.md) | Command line tool for managing and developing Foxx services | [kube-arangodb](../../deploy/kubernetes.md) | Operators to manage Kubernetes deployments -| [Oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) +| [oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) diff --git a/site/content/arangodb/3.10/data-science/_index.md b/site/content/arangodb/3.10/data-science/_index.md index c99bf2f601..46d771acf0 100644 --- a/site/content/arangodb/3.10/data-science/_index.md +++ b/site/content/arangodb/3.10/data-science/_index.md @@ -54,7 +54,7 @@ Graph analytics can answer questions like _**Who are the most connected persons* ArangoDB offers _Graph Analytics Engines_ to run algorithms such as connected components, label propagation, and PageRank on your data. This feature is available for the Arango Managed Platform (AMP). See -[Graph Analytics](../../../ai-services/graph-analytics.md) for details. +[Graph Analytics](../../../ai-suite/graph-analytics.md) for details. ### GraphML diff --git a/site/content/arangodb/3.11/components/tools/_index.md b/site/content/arangodb/3.11/components/tools/_index.md index 9909dbe302..318e0379eb 100644 --- a/site/content/arangodb/3.11/components/tools/_index.md +++ b/site/content/arangodb/3.11/components/tools/_index.md @@ -31,5 +31,5 @@ Additional tools which are available separately: |-----------------|-------------------| | [Foxx CLI](foxx-cli/_index.md) | Command line tool for managing and developing Foxx services | [kube-arangodb](../../deploy/kubernetes.md) | Operators to manage Kubernetes deployments -| [Oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) +| [oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) | [ArangoDB Datasets](arango-datasets.md) | A Python package for loading sample datasets into ArangoDB diff --git a/site/content/arangodb/3.11/data-science/_index.md b/site/content/arangodb/3.11/data-science/_index.md index 1497af8288..45a4bfd813 100644 --- a/site/content/arangodb/3.11/data-science/_index.md +++ b/site/content/arangodb/3.11/data-science/_index.md @@ -54,7 +54,7 @@ Graph analytics can answer questions like _**Who are the most connected persons* ArangoDB offers _Graph Analytics Engines_ to run algorithms such as connected components, label propagation, and PageRank on your data. This feature is available for the Arango Managed Platform (AMP). See -[Graph Analytics](../../../ai-services/graph-analytics.md) for details. +[Graph Analytics](../../../ai-suite/graph-analytics.md) for details. ### GraphML diff --git a/site/content/arangodb/3.12/aql/functions/vector.md b/site/content/arangodb/3.12/aql/functions/vector.md index 3fc7804750..18c79bc7b8 100644 --- a/site/content/arangodb/3.12/aql/functions/vector.md +++ b/site/content/arangodb/3.12/aql/functions/vector.md @@ -12,7 +12,7 @@ To use vector search, you need to have vector embeddings stored in documents and the attribute that stores them needs to be indexed by a [vector index](../../index-and-search/indexing/working-with-indexes/vector-indexes.md). -You can calculate vector embeddings using [ArangoDB's GraphML](../../../../ai-services/graphml/_index.md) +You can calculate vector embeddings using [ArangoDB's GraphML](../../../../ai-suite/graphml/_index.md) capabilities (available in the Arango Managed Platform (AMP)) or using external tools. {{< warning >}} diff --git a/site/content/arangodb/3.12/components/tools/_index.md b/site/content/arangodb/3.12/components/tools/_index.md index 9909dbe302..318e0379eb 100644 --- a/site/content/arangodb/3.12/components/tools/_index.md +++ b/site/content/arangodb/3.12/components/tools/_index.md @@ -31,5 +31,5 @@ Additional tools which are available separately: |-----------------|-------------------| | [Foxx CLI](foxx-cli/_index.md) | Command line tool for managing and developing Foxx services | [kube-arangodb](../../deploy/kubernetes.md) | Operators to manage Kubernetes deployments -| [Oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) +| [oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) | [ArangoDB Datasets](arango-datasets.md) | A Python package for loading sample datasets into ArangoDB diff --git a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md index 8e81c3f2ca..5162c982cd 100644 --- a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md +++ b/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md @@ -30,7 +30,7 @@ startup option needs to be enabled on the deployment you want to restore to. {{< /warning >}} 1. Enable the vector index feature. -2. Calculate vector embeddings using [Arango's GraphML](../../../../../ai-services/graphml/_index.md) +2. Calculate vector embeddings using [Arango's GraphML](../../../../../ai-suite/graphml/_index.md) capabilities (available in the AI Data Platform) or using external tools. Store each vector as an attribute in the respective document. 3. Create a vector index over this attribute. You need to choose which diff --git a/site/content/arangodb/3.13/aql/functions/vector.md b/site/content/arangodb/3.13/aql/functions/vector.md index 3fc7804750..18c79bc7b8 100644 --- a/site/content/arangodb/3.13/aql/functions/vector.md +++ b/site/content/arangodb/3.13/aql/functions/vector.md @@ -12,7 +12,7 @@ To use vector search, you need to have vector embeddings stored in documents and the attribute that stores them needs to be indexed by a [vector index](../../index-and-search/indexing/working-with-indexes/vector-indexes.md). -You can calculate vector embeddings using [ArangoDB's GraphML](../../../../ai-services/graphml/_index.md) +You can calculate vector embeddings using [ArangoDB's GraphML](../../../../ai-suite/graphml/_index.md) capabilities (available in the Arango Managed Platform (AMP)) or using external tools. {{< warning >}} diff --git a/site/content/arangodb/3.13/components/tools/_index.md b/site/content/arangodb/3.13/components/tools/_index.md index 9909dbe302..318e0379eb 100644 --- a/site/content/arangodb/3.13/components/tools/_index.md +++ b/site/content/arangodb/3.13/components/tools/_index.md @@ -31,5 +31,5 @@ Additional tools which are available separately: |-----------------|-------------------| | [Foxx CLI](foxx-cli/_index.md) | Command line tool for managing and developing Foxx services | [kube-arangodb](../../deploy/kubernetes.md) | Operators to manage Kubernetes deployments -| [Oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) +| [oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) | [ArangoDB Datasets](arango-datasets.md) | A Python package for loading sample datasets into ArangoDB diff --git a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md index 8e81c3f2ca..5162c982cd 100644 --- a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md +++ b/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md @@ -30,7 +30,7 @@ startup option needs to be enabled on the deployment you want to restore to. {{< /warning >}} 1. Enable the vector index feature. -2. Calculate vector embeddings using [Arango's GraphML](../../../../../ai-services/graphml/_index.md) +2. Calculate vector embeddings using [Arango's GraphML](../../../../../ai-suite/graphml/_index.md) capabilities (available in the AI Data Platform) or using external tools. Store each vector as an attribute in the respective document. 3. Create a vector index over this attribute. You need to choose which diff --git a/site/content/data-platform/_index.md b/site/content/data-platform/_index.md index 08edf03abb..57bb0980c1 100644 --- a/site/content/data-platform/_index.md +++ b/site/content/data-platform/_index.md @@ -8,7 +8,7 @@ description: >- --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -25,7 +25,7 @@ of the platform features with enterprise-grade automation and reliability. {{% card title="Get started with the Arango Data Platform" link="get-started/" %}} Deploy the core ArangoDB database system with Kubernetes orchestration. -Optionally add AI Services to turn data into an AI-powered knowledge engine. +Optionally add AI Suite to turn data into an AI-powered knowledge engine. {{% /card %}} {{% card title="Features and Architecture" link="features/" %}} @@ -40,7 +40,7 @@ Learn about the official ArangoDB Kubernetes Operator that powers the Arango Dat Explore your graph data with an intuitive web interface and sophisticated querying capabilities. {{% /card %}} -{{% card title="AI Services" link="../../ai-services/" %}} +{{% card title="AI Suite" link="../../ai-suite/" %}} Supercharge your platform with GraphRAG, GraphML, and advanced analytics for AI-powered data insights. {{% /card %}} diff --git a/site/content/data-platform/features.md b/site/content/data-platform/features.md index 1979d9f5bf..dacda654fa 100644 --- a/site/content/data-platform/features.md +++ b/site/content/data-platform/features.md @@ -29,7 +29,7 @@ enterprise-grade database management and high availability. - **Web interface**: The Platform includes a unified, browser-based UI that lets you access its features in an intuitive way. Optional products like the - AI Services seamlessly integrate into the UI if installed. + AI Suite seamlessly integrate into the UI if installed. ## Kubernetes Integration @@ -50,32 +50,25 @@ The Arango Data Platform provides these core capabilities out of the box: ## Extend the Arango Data Platform with AI capabilities -Take your Arango Data Platform to the next level with [**AI Services**](../ai-services/_index.md) that offers advanced AI and machine learning capabilities that integrate seamlessly into the platform's unified web interface. +Take your Arango Data Platform to the next level with the [**AI Suite**](../ai-suite/_index.md) that offers advanced AI and machine learning capabilities that integrate seamlessly into the platform's unified web interface. -What you get with AI Services: +What you get with the AI Suite: -- [GraphRAG](../ai-services/graphrag/): Generate knowledge graphs from documents and enable +- [GraphRAG](../ai-suite/graphrag/): Generate knowledge graphs from documents and enable conversational querying of your data. -- [GraphML](../ai-services/graphml/): Apply machine learning algorithms that leverage graph +- [GraphML](../ai-suite/graphml/): Apply machine learning algorithms that leverage graph structure for better predictions. -- [Graph Analytics](../ai-services/graph-analytics/): Run advanced algorithms like PageRank +- [Graph Analytics](../ai-suite/graph-analytics/): Run advanced algorithms like PageRank to discover influential nodes and patterns. -- [Jupyter notebooks](../ai-services/notebook-servers.md): Run Jupyter Notebooks to build and +- [Jupyter notebooks](../ai-suite/notebook-servers.md): Run Jupyter Notebooks to build and experiment with graph-powered data, AI, and machine learning workflows directly connected to ArangoDB databases. - Public and private LLM support: Use public LLMs such as OpenAI - or private LLMs with [Triton Inference Server](../ai-services/reference/triton-inference-server.md). -- [MLflow integration](../ai-services/reference/mlflow.md): Use the popular MLflow as a model registry + or private LLMs with [Triton Inference Server](../ai-suite/reference/triton-inference-server.md). +- [MLflow integration](../ai-suite/reference/mlflow.md): Use the popular MLflow as a model registry for private LLMs or to run machine learning experiments as part of the Arango Data Platform. {{< tip >}} -AI Services integrate directly into the existing platform interface, no need for +The AI Suite integrate directly into the existing platform interface, no need for separate systems to manage or learn. A separate license is required. {{< /tip >}} - - - - - - - diff --git a/site/content/data-platform/get-started.md b/site/content/data-platform/get-started.md index a47c4aa5ea..de721b874e 100644 --- a/site/content/data-platform/get-started.md +++ b/site/content/data-platform/get-started.md @@ -7,7 +7,7 @@ description: >- solution that you can deploy on-prem or use as a managed service --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -41,7 +41,7 @@ to provide automated deployment, scaling, and management capabilities. - **Early access to the Arango Data Platform**: [Get in touch](https://arangodb.com/contact/) with the ArangoDB team to get - exclusive early access to the pre-release of the Arango Data Platform & AI Services. + exclusive early access to the pre-release of the Arango Data Platform & AI Suite. - **Kubernetes**: Orchestrates the selected services that comprise the Arango Data Platform, running them in containers for safety and scalability. diff --git a/site/content/data-platform/graph-visualizer.md b/site/content/data-platform/graph-visualizer.md index 93d61018bc..081512c2e5 100644 --- a/site/content/data-platform/graph-visualizer.md +++ b/site/content/data-platform/graph-visualizer.md @@ -6,7 +6,7 @@ description: >- Visually explore and interact with your ArangoDB graphs through an intuitive interface --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} diff --git a/site/content/data-platform/release-notes.md b/site/content/data-platform/release-notes.md index 6800b2ac31..006c949cdb 100644 --- a/site/content/data-platform/release-notes.md +++ b/site/content/data-platform/release-notes.md @@ -6,7 +6,7 @@ description: >- Features and improvements in the Arango Data Platform --- {{< tip >}} -The Arango Data Platform & AI Services are available as a pre-release. To get +The Arango Data Platform & AI Suite are available as a pre-release. To get exclusive early access, [get in touch](https://arangodb.com/contact/) with the ArangoDB team. {{< /tip >}} @@ -22,12 +22,12 @@ Platform on-premise or in the cloud on top of Kubernetes. To get started, see [Self-host the Arango Data Platform](./get-started.md#self-host-the-arango-data-platform). -### AI Services +### AI Suite -The Arango Data Platform features dedicated AI and data science services, built upon +The Arango AI Data Platform features dedicated AI and data science services, built upon the powerful ArangoDB database core. -AI Services consists of the following components, each featuring an intuitive, +The AI Suite consists of the following components, each featuring an intuitive, user-friendly interface seamlessly integrated into the Arango Data Platform web interface: - GraphRAG - GraphML @@ -35,5 +35,5 @@ user-friendly interface seamlessly integrated into the Arango Data Platform web - MLflow integration - Graph Visualizer -To learn more, see [AI Services](../ai-services/_index.md) +To learn more, see [AI Suite](../ai-suite/_index.md) documentation. diff --git a/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html b/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html index f90c12ee44..8d051207f0 100644 --- a/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html +++ b/site/themes/arangodb-docs-theme/layouts/shortcodes/tag.html @@ -2,7 +2,7 @@ "Experimental" "This feature is available for testing but may still change or get removed" "AMP" "This feature is available in the Arango Managed Platform (AMP)" "Data Platform" "This feature is available in the Arango Data Platform and Arango AI Data Platform" - "AI Data Platform" "This feature is available in the Arango AI Data Platform but not the Arango Data Platform without the AI Services" + "AI Data Platform" "This feature is available in the Arango AI Data Platform but not the Arango Data Platform without the AI Suite" "arangosh" "This feature is available in the ArangoDB Shell" "ArangoDB Enterprise Edition" "This feature is available in the Enterprise Edition but not the Community Edition of ArangoDB" -}} From 620e441c4e4cd377078f3cb918f6c565aa46dd19 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Sat, 25 Oct 2025 23:40:57 +0200 Subject: [PATCH 37/69] Squashed commit of the following: commit f15a5922af45e27f6607fc34ee4de80e9d434fa5 Merge: e043896e 4480ca8a Author: Simran <Simran-B@users.noreply.github.com> Date: Sat Oct 25 23:30:53 2025 +0200 Merge branch 'main' into DOC-799 commit e043896ef9564a0b8a8cb5cd5c29cc4c662ad851 Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 23 12:53:43 2025 +0200 Move image, add View node option commit 49fbafa9687703267c3d238480746513f4c32b45 Merge: d6f3359c cdd39d59 Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 23 10:13:04 2025 +0200 Merge branch 'main' of https://github.com/arangodb/docs-hugo into DOC-799 commit d6f3359cc5b4e20d3bdf627701a33a2148ec2057 Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 23 10:12:58 2025 +0200 Review feedback, mention that nodes, edges, and theming is remembered commit 6594ebc7c129b027e9bb247232e4ebb92f83d649 Author: Simran Spiller <simran@arangodb.com> Date: Wed Oct 22 13:25:11 2025 +0200 Fix path for icon shortcode commit c12be470dbcf952e6a3ba0b07af11e5c5304fd1a Author: Simran Spiller <simran@arangodb.com> Date: Wed Oct 22 13:17:25 2025 +0200 Review feedback commit 14003ceb9b0373feb61a6a173c66ac873bc5ba09 Author: Simran Spiller <simran@arangodb.com> Date: Wed Oct 22 13:14:53 2025 +0200 Change icon shortcode image path commit 1fc696fc00c87daae08ed3488923908407416cec Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 21 23:23:28 2025 +0200 Icons: Move settings icon to the canvas center commit cc2db4dd5912a01901e8a6db6741bc0458a86d82 Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 16:13:52 2025 +0200 Fix edge styling options commit c38b58e7ac4aabe9151be286d37c43c0f51319c0 Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 15:49:27 2025 +0200 Minor fixes commit f1600ef528a8d038037e8cdcd93c6166f23db9d2 Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 15:36:28 2025 +0200 Update visual customization part commit 144f44d80a89ff6436ee50a598b7b6695d61470d Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 15:36:02 2025 +0200 Extend README for icon shortcode commit 22d82c8ed21b251a07839bd6237ed2f9ed1d6e6f Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 11:37:39 2025 +0200 Rename icon files and mention icon shortcode to README commit 62860ef73a08efc9e97072d5549236485905295e Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 11:00:24 2025 +0200 DOC-813 | Implement icon shortcode and add Graph Visualizer icons commit 0f718a1512c149ccbe5a02709b23308fa3c9db7a Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 10:59:15 2025 +0200 Update descriptions commit 5ee3e0dfd451fb9da480703db571d4b59c2b6aac Author: Simran Spiller <simran@arangodb.com> Date: Tue Oct 14 10:22:55 2025 +0200 Update customization screenshot commit 4d61a71ef25a0d971f4434838e17edef0d000ba1 Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 9 12:39:09 2025 +0200 Icon shortcode prototype commit c595f250cb05fcf2b0070b0700f67e7a2f122d01 Merge: 155a71a0 8a3c37dd Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 9 10:27:01 2025 +0200 Merge branch 'main' of https://github.com/arangodb/docs-hugo into DOC-799 commit 155a71a053be48a63b83271f92304055e9b715ed Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 9 10:26:51 2025 +0200 Update Visualizer screenshots commit 1f925ce359ae4fc9596b117e6048363f14b2d47c Author: Simran Spiller <simran@arangodb.com> Date: Thu Oct 2 09:55:57 2025 +0200 WIP --- site/content/data-platform/graph-visualizer.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/content/data-platform/graph-visualizer.md b/site/content/data-platform/graph-visualizer.md index 081512c2e5..971b3ad818 100644 --- a/site/content/data-platform/graph-visualizer.md +++ b/site/content/data-platform/graph-visualizer.md @@ -1,7 +1,7 @@ --- title: Graph Visualizer menuTitle: Graph Visualizer -weight: 10 +weight: 20 description: >- Visually explore and interact with your ArangoDB graphs through an intuitive interface --- @@ -330,7 +330,7 @@ You can modify the document attributes of nodes and edges from the canvas as fol 4. Change or delete ({{< icon "delete" >}}) existing properties. 5. In the **Form** mode, you can add new properties by scrolling to the bottom and clicking **Add Property**. -6. Click **Save** to store the changes, or **Cancel** to abort. <!-- TODO: Can't change system attributes, even though _from and _to are generally mutable --> +6. Click **Save** to store the changes, or **Cancel** to abort. ### Delete nodes From ae5de8c4ee75e66afe359668d1bcdd99dc4b06b8 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Sun, 26 Oct 2025 00:37:47 +0200 Subject: [PATCH 38/69] New domain, Arango team/support --- .circleci/base_config.yml | 2 +- .circleci/generate_config.py | 2 +- CIRCLECI.md | 4 ++-- README.md | 17 +++++++++-------- site/config/_default/config.yaml | 2 +- site/content/ai-suite/graph-to-ai.md | 4 ++-- site/content/ai-suite/graphml/_index.md | 4 ++-- site/content/ai-suite/graphml/quickstart.md | 4 ++-- site/content/ai-suite/graphrag/_index.md | 4 ++-- .../ai-suite/graphrag/technical-overview.md | 4 ++-- .../ai-suite/graphrag/tutorial-notebook.md | 4 ++-- site/content/ai-suite/graphrag/web-interface.md | 4 ++-- site/content/ai-suite/notebook-servers.md | 4 ++-- site/content/ai-suite/reference/gen-ai.md | 4 ++-- site/content/ai-suite/reference/importer.md | 4 ++-- site/content/ai-suite/reference/mlflow.md | 4 ++-- site/content/ai-suite/reference/retriever.md | 4 ++-- .../reference/triton-inference-server.md | 4 ++-- .../amp/organizations/credits-and-usage.md | 2 +- .../explaining-queries.md | 4 ++-- .../components/tools/arangoinspect/_index.md | 2 +- .../components/tools/arangoinspect/examples.md | 2 +- .../3.10/data-science/arangograph-notebooks.md | 4 ++-- .../3.10/data-science/arangographml/deploy.md | 4 ++-- .../arangographml/getting-started.md | 4 ++-- .../3.10/operations/troubleshooting/arangod.md | 2 +- .../version-3.0/whats-new-in-3-0.md | 2 +- .../version-3.5/whats-new-in-3-5.md | 2 +- .../version-3.7/whats-new-in-3-7.md | 2 +- .../explaining-queries.md | 2 +- .../components/tools/arangoinspect/_index.md | 2 +- .../components/tools/arangoinspect/examples.md | 2 +- .../3.11/data-science/arangograph-notebooks.md | 4 ++-- .../3.11/data-science/arangographml/deploy.md | 4 ++-- .../arangographml/getting-started.md | 4 ++-- .../3.11/operations/troubleshooting/arangod.md | 2 +- .../version-3.0/whats-new-in-3-0.md | 2 +- .../incompatible-changes-in-3-11.md | 4 ++-- .../version-3.5/whats-new-in-3-5.md | 2 +- .../version-3.7/whats-new-in-3-7.md | 2 +- .../explaining-queries.md | 2 +- .../components/tools/arangoinspect/_index.md | 2 +- .../components/tools/arangoinspect/examples.md | 2 +- .../integrations/arangodb-tinkerpop-provider.md | 4 ++-- .../3.12/operations/troubleshooting/arangod.md | 2 +- .../version-3.0/whats-new-in-3-0.md | 2 +- .../incompatible-changes-in-3-11.md | 4 ++-- .../incompatible-changes-in-3-12.md | 8 ++++---- .../version-3.5/whats-new-in-3-5.md | 2 +- .../version-3.7/whats-new-in-3-7.md | 2 +- .../explaining-queries.md | 2 +- .../components/tools/arangoinspect/_index.md | 2 +- .../components/tools/arangoinspect/examples.md | 2 +- .../integrations/arangodb-tinkerpop-provider.md | 4 ++-- .../3.13/operations/troubleshooting/arangod.md | 2 +- .../version-3.0/whats-new-in-3-0.md | 2 +- .../incompatible-changes-in-3-11.md | 4 ++-- .../incompatible-changes-in-3-12.md | 8 ++++---- .../version-3.5/whats-new-in-3-5.md | 2 +- .../version-3.7/whats-new-in-3-7.md | 2 +- site/content/data-platform/_index.md | 4 ++-- site/content/data-platform/get-started.md | 10 +++++----- site/content/data-platform/graph-visualizer.md | 4 ++-- site/content/data-platform/release-notes.md | 4 ++-- .../_markup/render-codeblock-openapi.html | 2 +- .../layouts/_default/_markup/render-link.html | 2 +- .../layouts/_default/baseof.html | 2 +- .../layouts/partials/head.html | 2 +- .../layouts/partials/inkeep-widget.html | 2 +- .../arangoproxy/internal/service/service.go | 2 +- 70 files changed, 117 insertions(+), 116 deletions(-) diff --git a/.circleci/base_config.yml b/.circleci/base_config.yml index 945901550a..c6b002c3a1 100644 --- a/.circleci/base_config.yml +++ b/.circleci/base_config.yml @@ -602,7 +602,7 @@ workflows: when: { equal: [ release, << pipeline.parameters.workflow >> ] } jobs: - plain-build: - url: https://docs.arangodb.com + url: https://docs.arango.ai - deploy: deploy-args: "--prod" requires: diff --git a/.circleci/generate_config.py b/.circleci/generate_config.py index 8548703ae6..c687e1546e 100644 --- a/.circleci/generate_config.py +++ b/.circleci/generate_config.py @@ -389,7 +389,7 @@ def workflow_commit_generated_download_data(config): def workflow_release_launch_command(config): shell = "\ export ENV=\"circleci\"\n \ -export HUGO_URL=https://docs.arangodb.com\n \ +export HUGO_URL=https://docs.arango.ai\n \ export HUGO_ENV=release\n \ export GENERATORS=''\n" diff --git a/CIRCLECI.md b/CIRCLECI.md index 9dcb087e32..fe30a414ff 100644 --- a/CIRCLECI.md +++ b/CIRCLECI.md @@ -48,7 +48,7 @@ improvements before the next ArangoDB release, follow the steps below. (The `release-type` is `docs` by default) The docs-only release workflow runs a **plain build** of the documentation and -deploys to production at <https://docs.arangodb.com> without approval step. +deploys to production at <https://docs.arango.ai> without approval step. ## Example generation @@ -181,7 +181,7 @@ The ArangoDB release workflow includes the following jobs: - a release branch and pull request is created with the generated content, which needs to be reviewed and merged on GitHub - once merged, the workflow in CircleCI needs to be approved to start - deploying to production at <https://docs.arangodb.com> + deploying to production at <https://docs.arango.ai> If any of the examples or generated content fails, the workflow fails as well. The build report can be found in the `generate-summary` check on GitHub. diff --git a/README.md b/README.md index 7f8a38db53..df7a7fc3a9 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # ArangoDB Documentation This repository contains the source files of the ArangoDB documentation as -published on [docs.arangodb.com](https://docs.arangodb.com/). +published on [docs.arango.ai](https://docs.arango.ai/). The ArangoDB documentation is licensed under Apache-2.0. See [LICENSE](LICENSE) for details. @@ -545,8 +545,8 @@ The following shortcodes also exist but are rarely used: - Avoid overly long link labels, such as entire sentences. - Use relative links for cross-references to other documentation pages, e.g. - `../drivers/js/_index.md` instead of `/3.12/drivers/js/_index.md` or - `https://docs.arangodb.com/3.12/drivers/js/`. + `../../data-platform/_index.md` instead of `/data-platform/_index.md` or + `https://docs.arango.ai/data-platform/`. - Avoid **bold** and *italic* markup in headlines. If you have to use it, then prefer `**bold**` and `*italic*` over `__bold__` and `_italic_` because the @@ -786,8 +786,8 @@ Start off by finding a file name. It should be: Note that the file name is independent of what will show in the navigation or what will be used as headline for that page. The file name will be used as -part of the final URL, however. For example, `3.12/aql/examples.md` will become -`http://docs.arangodb.com/3.12/aql/examples/`. +part of the final URL, however. For example, `arangodb/3.12/aql/examples.md` +will become `http://docs.arango.ai/arangodb/3.12/aql/examples/`. Create a new file with the file name and a `.md` file extension. Open the file in a text editor (Visual Studio Code is recommended). Add the following @@ -822,8 +822,9 @@ Otherwise, the following steps are necessary for moving content: The URL of a page is derived from the file name and the parent folders, with special handling for sections (folders with a `_index.md` file). -For example, `3.12/aql/operators.md` becomes the URL path `/3.12/aql/operators/`, -and `3.12/aql/functions/_index.md` becomes `/3.12/aql/functions/`. +For example, `arangodb/3.12/aql/operators.md` becomes the URL path +`/arangodb/3.12/aql/operators/`, and `arangodb/3.12/aql/functions/_index.md` +becomes `/arangodb/3.12/aql/functions/`. If you rename a file, from `section/old-name.md` to `section/new-name.md` for instance, make sure to add a redirect for the old URL by adding the following to @@ -1262,7 +1263,7 @@ db._document("collection/does_not_exist"); // xpError(ERROR_ARANGO_DOCUMENT_NOT_ ``` This will make the example generation continue despite the error. See -[Error codes and meanings](https://docs.arangodb.com/stable/develop/error-codes-and-meanings/) +[Error codes and meanings](https://docs.arango.ai/arangodb/stable/develop/error-codes/) for a list of all error codes and their names. If a unexpected error is raised, then the example generation will abort with an error. diff --git a/site/config/_default/config.yaml b/site/config/_default/config.yaml index 25e4930333..30157c7a3d 100644 --- a/site/config/_default/config.yaml +++ b/site/config/_default/config.yaml @@ -1,4 +1,4 @@ -baseURL: "https://docs.arangodb.com" +baseURL: "https://docs.arango.ai" languageCode: "en-us" title: "ArangoDB Documentation" theme: "arangodb-docs-theme" diff --git a/site/content/ai-suite/graph-to-ai.md b/site/content/ai-suite/graph-to-ai.md index f98f654237..f5a4730563 100644 --- a/site/content/ai-suite/graph-to-ai.md +++ b/site/content/ai-suite/graph-to-ai.md @@ -11,8 +11,8 @@ aliases: {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} ArangoDB provides a wide range of functionality that can be utilized for diff --git a/site/content/ai-suite/graphml/_index.md b/site/content/ai-suite/graphml/_index.md index af839ece48..e8ec422dd7 100644 --- a/site/content/ai-suite/graphml/_index.md +++ b/site/content/ai-suite/graphml/_index.md @@ -9,8 +9,8 @@ aliases: --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} Traditional Machine Learning (ML) overlooks the connections and relationships diff --git a/site/content/ai-suite/graphml/quickstart.md b/site/content/ai-suite/graphml/quickstart.md index e9d0cd164f..214e3ab5a8 100644 --- a/site/content/ai-suite/graphml/quickstart.md +++ b/site/content/ai-suite/graphml/quickstart.md @@ -36,8 +36,8 @@ GraphML functionalities in a scriptable manner. To get started, see the {{< tip >}} To get access to GraphML services and packages in Arango Managed Platform (AMP), -[get in touch](https://www.arangodb.com/contact/) -with the ArangoDB team. +[get in touch](https://arangodb.ai/contact-us/) +with the Arango team. {{< /tip >}} - **Accessible at all levels** diff --git a/site/content/ai-suite/graphrag/_index.md b/site/content/ai-suite/graphrag/_index.md index 1174402e92..b284f820e1 100644 --- a/site/content/ai-suite/graphrag/_index.md +++ b/site/content/ai-suite/graphrag/_index.md @@ -10,8 +10,8 @@ aliases: --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} ## Transform unstructured documents into intelligent knowledge graphs diff --git a/site/content/ai-suite/graphrag/technical-overview.md b/site/content/ai-suite/graphrag/technical-overview.md index df38361cf6..56415fb211 100644 --- a/site/content/ai-suite/graphrag/technical-overview.md +++ b/site/content/ai-suite/graphrag/technical-overview.md @@ -9,8 +9,8 @@ description: >- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} ## Introduction diff --git a/site/content/ai-suite/graphrag/tutorial-notebook.md b/site/content/ai-suite/graphrag/tutorial-notebook.md index fe587e4dc9..66d05f766b 100644 --- a/site/content/ai-suite/graphrag/tutorial-notebook.md +++ b/site/content/ai-suite/graphrag/tutorial-notebook.md @@ -7,8 +7,8 @@ weight: 25 --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} ## Tutorial overview diff --git a/site/content/ai-suite/graphrag/web-interface.md b/site/content/ai-suite/graphrag/web-interface.md index 80c1a4ae07..7438127d6f 100644 --- a/site/content/ai-suite/graphrag/web-interface.md +++ b/site/content/ai-suite/graphrag/web-interface.md @@ -8,8 +8,8 @@ description: >- --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} ## The GraphRAG workflow in the web interface diff --git a/site/content/ai-suite/notebook-servers.md b/site/content/ai-suite/notebook-servers.md index 8606108f1e..8f17158b9f 100644 --- a/site/content/ai-suite/notebook-servers.md +++ b/site/content/ai-suite/notebook-servers.md @@ -9,8 +9,8 @@ aliases: --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} ArangoDB Notebooks provide a Python-based, Jupyter-compatible interface for building diff --git a/site/content/ai-suite/reference/gen-ai.md b/site/content/ai-suite/reference/gen-ai.md index 4f59d38bdf..f545a7e255 100644 --- a/site/content/ai-suite/reference/gen-ai.md +++ b/site/content/ai-suite/reference/gen-ai.md @@ -8,8 +8,8 @@ weight: 5 --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} ## Overview diff --git a/site/content/ai-suite/reference/importer.md b/site/content/ai-suite/reference/importer.md index 263a3c77aa..e4cce5d200 100644 --- a/site/content/ai-suite/reference/importer.md +++ b/site/content/ai-suite/reference/importer.md @@ -8,8 +8,8 @@ weight: 10 --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} ## Overview diff --git a/site/content/ai-suite/reference/mlflow.md b/site/content/ai-suite/reference/mlflow.md index 0ec14ccd2a..f2b3d05031 100644 --- a/site/content/ai-suite/reference/mlflow.md +++ b/site/content/ai-suite/reference/mlflow.md @@ -8,8 +8,8 @@ weight: 25 --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} ## Overview diff --git a/site/content/ai-suite/reference/retriever.md b/site/content/ai-suite/reference/retriever.md index 0d9ac3bc11..5949d8a369 100644 --- a/site/content/ai-suite/reference/retriever.md +++ b/site/content/ai-suite/reference/retriever.md @@ -8,8 +8,8 @@ weight: 15 --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} ## Overview diff --git a/site/content/ai-suite/reference/triton-inference-server.md b/site/content/ai-suite/reference/triton-inference-server.md index 64c6d1fc79..458226743e 100644 --- a/site/content/ai-suite/reference/triton-inference-server.md +++ b/site/content/ai-suite/reference/triton-inference-server.md @@ -7,8 +7,8 @@ weight: 30 --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} ## Overview diff --git a/site/content/amp/organizations/credits-and-usage.md b/site/content/amp/organizations/credits-and-usage.md index dbee01504f..18891f6438 100644 --- a/site/content/amp/organizations/credits-and-usage.md +++ b/site/content/amp/organizations/credits-and-usage.md @@ -28,7 +28,7 @@ and do not have any backup storage, then none of your credits will be consumed. {{< tip >}} To purchase credits for your organization, you need to get in touch with the -ArangoDB team. [Contact us](https://www.arangodb.com/contact/) for more details. +Arango team. [Contact us](https://arango.ai/contact-us/) for more details. {{< /tip >}} There are a number of benefits that AMP credits provide: diff --git a/site/content/arangodb/3.10/aql/execution-and-performance/explaining-queries.md b/site/content/arangodb/3.10/aql/execution-and-performance/explaining-queries.md index 04c326256c..75e02e928c 100644 --- a/site/content/arangodb/3.10/aql/execution-and-performance/explaining-queries.md +++ b/site/content/arangodb/3.10/aql/execution-and-performance/explaining-queries.md @@ -193,7 +193,7 @@ directly, focusing on the most important information. ## Gathering debug information about a query If an explain provides no suitable insight into why a query does not perform as -expected, it may be reported to the ArangoDB support. In order to make this as easy +expected, it may be reported to the Arango support. In order to make this as easy as possible, there is a built-in command in ArangoShell for packaging the query, its bind parameters, and all data required to execute the query elsewhere. @@ -222,7 +222,7 @@ var query = "FOR doc IN mycollection FILTER doc.value > 42 RETURN doc"; require("@arangodb/aql/explainer").debugDump("/tmp/query-debug-info", query); ``` -Entitled users can send the generated file to the ArangoDB support to facilitate +Entitled users can send the generated file to the Arango support to facilitate reproduction and debugging. {{< tip >}} diff --git a/site/content/arangodb/3.10/components/tools/arangoinspect/_index.md b/site/content/arangodb/3.10/components/tools/arangoinspect/_index.md index 0860c93093..87ae1c2722 100644 --- a/site/content/arangodb/3.10/components/tools/arangoinspect/_index.md +++ b/site/content/arangodb/3.10/components/tools/arangoinspect/_index.md @@ -4,5 +4,5 @@ menuTitle: arangoinspect weight: 50 description: >- `arangoinspect` is a command-line client tool that collects information of any - ArangoDB server setup to facilitate troubleshooting for the ArangoDB support + ArangoDB server setup to facilitate troubleshooting for the Arango support --- diff --git a/site/content/arangodb/3.10/components/tools/arangoinspect/examples.md b/site/content/arangodb/3.10/components/tools/arangoinspect/examples.md index 5d47b6b260..bf5a5ec9a7 100644 --- a/site/content/arangodb/3.10/components/tools/arangoinspect/examples.md +++ b/site/content/arangodb/3.10/components/tools/arangoinspect/examples.md @@ -5,7 +5,7 @@ weight: 5 description: >- How to use the `arangoinspect` tool to collection information for troubleshooting --- -If you are asked by ArangoDB support to provide an inspector output, run +If you are asked by Arango support to provide an inspector output, run the _arangoinspect_ binary to generate a file in the current working folder. The resulting JSON file is a collection of meta data acquired from all diff --git a/site/content/arangodb/3.10/data-science/arangograph-notebooks.md b/site/content/arangodb/3.10/data-science/arangograph-notebooks.md index 833a0525f1..e8c778b63e 100644 --- a/site/content/arangodb/3.10/data-science/arangograph-notebooks.md +++ b/site/content/arangodb/3.10/data-science/arangograph-notebooks.md @@ -8,8 +8,8 @@ description: >- {{< tip >}} AMP Notebooks don't include the ArangoGraphML services. To enable the ArangoGraphML services, -[get in touch](https://www.arangodb.com/contact/) -with the ArangoDB team. +[get in touch](https://arango.ai/contact/) +with the Arango team. {{< /tip >}} The AMP Notebook is a JupyterLab notebook embedded in the diff --git a/site/content/arangodb/3.10/data-science/arangographml/deploy.md b/site/content/arangodb/3.10/data-science/arangographml/deploy.md index b3b5a6c13d..4ecd3f8d5b 100644 --- a/site/content/arangodb/3.10/data-science/arangographml/deploy.md +++ b/site/content/arangodb/3.10/data-science/arangographml/deploy.md @@ -22,8 +22,8 @@ Cloud Service via Jupyter Notebooks that run on the {{< tip >}} To get access to ArangoGraphML services and packages, -[get in touch](https://www.arangodb.com/contact/) -with the ArangoDB team. +[get in touch](https://arango.ai/contact-us/) +with the Arango team. {{< /tip >}} - **Accessible at all levels** diff --git a/site/content/arangodb/3.10/data-science/arangographml/getting-started.md b/site/content/arangodb/3.10/data-science/arangographml/getting-started.md index 1b0bcf83cc..886faec62c 100644 --- a/site/content/arangodb/3.10/data-science/arangographml/getting-started.md +++ b/site/content/arangodb/3.10/data-science/arangographml/getting-started.md @@ -18,8 +18,8 @@ The `arangoml` is a Python Package allowing you to manage all of the necessary {{< tip >}} To enable the ArangoGraphML services in the Arango Managed Platform (AMP), -[get in touch](https://www.arangodb.com/contact/) -with the ArangoDB team. Regular notebooks in AMP don't include the +[get in touch](https://arango.ai/contact-us/) +with the Arango team. Regular notebooks in AMP don't include the `arangoml` package. {{< /tip >}} diff --git a/site/content/arangodb/3.10/operations/troubleshooting/arangod.md b/site/content/arangodb/3.10/operations/troubleshooting/arangod.md index 18088fb80e..f14ec875a9 100644 --- a/site/content/arangodb/3.10/operations/troubleshooting/arangod.md +++ b/site/content/arangodb/3.10/operations/troubleshooting/arangod.md @@ -99,7 +99,7 @@ thus cannot be intercepted by the crash handler. In case the crash handler receives one of the mentioned interceptable signals, it will write basic crash information to the logfile and a backtrace of the -call site. The backtrace can be provided to the ArangoDB support for further +call site. The backtrace can be provided to the Arango support for further inspection. Note that backtaces are only usable if debug symbols for ArangoDB have been installed as well. diff --git a/site/content/arangodb/3.10/release-notes/version-3.0/whats-new-in-3-0.md b/site/content/arangodb/3.10/release-notes/version-3.0/whats-new-in-3-0.md index f9e16dea5f..3fb7c66594 100644 --- a/site/content/arangodb/3.10/release-notes/version-3.0/whats-new-in-3-0.md +++ b/site/content/arangodb/3.10/release-notes/version-3.0/whats-new-in-3-0.md @@ -395,7 +395,7 @@ longer-running operations are ongoing. It also keeps more state about user's cho windows sizes, whether the tree or the code view was last used in the document editor). Cluster statistics are now integrated into the web interface as well. Additionally, a -menu item "Help us" has been added to easily provide the ArangoDB team feedback about +menu item "Help us" has been added to easily provide the Arango team feedback about the product. {{< comment >}} NOTE: This feature doesn't work properly anymore! diff --git a/site/content/arangodb/3.10/release-notes/version-3.5/whats-new-in-3-5.md b/site/content/arangodb/3.10/release-notes/version-3.5/whats-new-in-3-5.md index 2a61e8a724..9875c19b12 100644 --- a/site/content/arangodb/3.10/release-notes/version-3.5/whats-new-in-3-5.md +++ b/site/content/arangodb/3.10/release-notes/version-3.5/whats-new-in-3-5.md @@ -712,7 +712,7 @@ In this message, the `cf3f4` is the message's unique ID value. ArangoDB users ca use this ID to build custom monitoring or alerting based on specific log ID values. Existing log ID values are supposed to stay constant in future releases of arangod. -Additionally the unique log ID values can be used by the ArangoDB support to find +Additionally the unique log ID values can be used by the Arango support to find out which component of the product exactly generated a log message. The IDs also make disambiguation of identical log messages easier. diff --git a/site/content/arangodb/3.10/release-notes/version-3.7/whats-new-in-3-7.md b/site/content/arangodb/3.10/release-notes/version-3.7/whats-new-in-3-7.md index 8925836baa..f366ab69c1 100644 --- a/site/content/arangodb/3.10/release-notes/version-3.7/whats-new-in-3-7.md +++ b/site/content/arangodb/3.10/release-notes/version-3.7/whats-new-in-3-7.md @@ -960,7 +960,7 @@ thus cannot be intercepted by the crash handler. In case the crash handler receives one of the mentioned interceptable signals, it will write basic crash information to the logfile and a backtrace of the -call site. The backtrace can be provided to the ArangoDB support for further +call site. The backtrace can be provided to the Arango support for further inspection. Note that backtaces are only usable if debug symbols for ArangoDB have been installed as well. diff --git a/site/content/arangodb/3.11/aql/execution-and-performance/explaining-queries.md b/site/content/arangodb/3.11/aql/execution-and-performance/explaining-queries.md index d8b3ce32fb..b51e33989d 100644 --- a/site/content/arangodb/3.11/aql/execution-and-performance/explaining-queries.md +++ b/site/content/arangodb/3.11/aql/execution-and-performance/explaining-queries.md @@ -225,7 +225,7 @@ var query = "FOR doc IN mycollection FILTER doc.value > 42 RETURN doc"; require("@arangodb/aql/explainer").debugDump("/tmp/query-debug-info", query); ``` -Entitled users can send the generated file to the ArangoDB support to facilitate +Entitled users can send the generated file to the Arango support to facilitate reproduction and debugging. {{< tip >}} diff --git a/site/content/arangodb/3.11/components/tools/arangoinspect/_index.md b/site/content/arangodb/3.11/components/tools/arangoinspect/_index.md index 0860c93093..87ae1c2722 100644 --- a/site/content/arangodb/3.11/components/tools/arangoinspect/_index.md +++ b/site/content/arangodb/3.11/components/tools/arangoinspect/_index.md @@ -4,5 +4,5 @@ menuTitle: arangoinspect weight: 50 description: >- `arangoinspect` is a command-line client tool that collects information of any - ArangoDB server setup to facilitate troubleshooting for the ArangoDB support + ArangoDB server setup to facilitate troubleshooting for the Arango support --- diff --git a/site/content/arangodb/3.11/components/tools/arangoinspect/examples.md b/site/content/arangodb/3.11/components/tools/arangoinspect/examples.md index 78c23e59ca..bdfe955d5f 100644 --- a/site/content/arangodb/3.11/components/tools/arangoinspect/examples.md +++ b/site/content/arangodb/3.11/components/tools/arangoinspect/examples.md @@ -5,7 +5,7 @@ weight: 5 description: >- How to use the `arangoinspect` tool to collection information for troubleshooting --- -If you are asked by ArangoDB support to provide an inspector output, run +If you are asked by Arango support to provide an inspector output, run the _arangoinspect_ binary to generate a file in the current working folder. The resulting JSON file is a collection of meta data acquired from all diff --git a/site/content/arangodb/3.11/data-science/arangograph-notebooks.md b/site/content/arangodb/3.11/data-science/arangograph-notebooks.md index 833a0525f1..74a64a5c78 100644 --- a/site/content/arangodb/3.11/data-science/arangograph-notebooks.md +++ b/site/content/arangodb/3.11/data-science/arangograph-notebooks.md @@ -8,8 +8,8 @@ description: >- {{< tip >}} AMP Notebooks don't include the ArangoGraphML services. To enable the ArangoGraphML services, -[get in touch](https://www.arangodb.com/contact/) -with the ArangoDB team. +[get in touch](https://arango.ai/contact-us/) +with the Arango team. {{< /tip >}} The AMP Notebook is a JupyterLab notebook embedded in the diff --git a/site/content/arangodb/3.11/data-science/arangographml/deploy.md b/site/content/arangodb/3.11/data-science/arangographml/deploy.md index b3b5a6c13d..4ecd3f8d5b 100644 --- a/site/content/arangodb/3.11/data-science/arangographml/deploy.md +++ b/site/content/arangodb/3.11/data-science/arangographml/deploy.md @@ -22,8 +22,8 @@ Cloud Service via Jupyter Notebooks that run on the {{< tip >}} To get access to ArangoGraphML services and packages, -[get in touch](https://www.arangodb.com/contact/) -with the ArangoDB team. +[get in touch](https://arango.ai/contact-us/) +with the Arango team. {{< /tip >}} - **Accessible at all levels** diff --git a/site/content/arangodb/3.11/data-science/arangographml/getting-started.md b/site/content/arangodb/3.11/data-science/arangographml/getting-started.md index c4bea56b50..de9d2ae042 100644 --- a/site/content/arangodb/3.11/data-science/arangographml/getting-started.md +++ b/site/content/arangodb/3.11/data-science/arangographml/getting-started.md @@ -18,8 +18,8 @@ The `arangoml` is a Python Package allowing you to manage all of the necessary {{< tip >}} To enable the ArangoGraphML services in the Arango Managed Platform (AMP), -[get in touch](https://www.arangodb.com/contact/) -with the ArangoDB team. Regular notebooks in AMP don't include the +[get in touch](https://arango.ai/contact-us/) +with the Arango team. Regular notebooks in AMP don't include the `arangoml` package. {{< /tip >}} diff --git a/site/content/arangodb/3.11/operations/troubleshooting/arangod.md b/site/content/arangodb/3.11/operations/troubleshooting/arangod.md index 2d44949255..8f11ecba42 100644 --- a/site/content/arangodb/3.11/operations/troubleshooting/arangod.md +++ b/site/content/arangodb/3.11/operations/troubleshooting/arangod.md @@ -98,7 +98,7 @@ thus cannot be intercepted by the crash handler. In case the crash handler receives one of the mentioned interceptable signals, it will write basic crash information to the logfile and a backtrace of the -call site. The backtrace can be provided to the ArangoDB support for further +call site. The backtrace can be provided to the Arango support for further inspection. Note that backtaces are only usable if debug symbols for ArangoDB have been installed as well. diff --git a/site/content/arangodb/3.11/release-notes/version-3.0/whats-new-in-3-0.md b/site/content/arangodb/3.11/release-notes/version-3.0/whats-new-in-3-0.md index f9e16dea5f..3fb7c66594 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.0/whats-new-in-3-0.md +++ b/site/content/arangodb/3.11/release-notes/version-3.0/whats-new-in-3-0.md @@ -395,7 +395,7 @@ longer-running operations are ongoing. It also keeps more state about user's cho windows sizes, whether the tree or the code view was last used in the document editor). Cluster statistics are now integrated into the web interface as well. Additionally, a -menu item "Help us" has been added to easily provide the ArangoDB team feedback about +menu item "Help us" has been added to easily provide the Arango team feedback about the product. {{< comment >}} NOTE: This feature doesn't work properly anymore! diff --git a/site/content/arangodb/3.11/release-notes/version-3.11/incompatible-changes-in-3-11.md b/site/content/arangodb/3.11/release-notes/version-3.11/incompatible-changes-in-3-11.md index 6a9949712f..a99cec9295 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.11/incompatible-changes-in-3-11.md +++ b/site/content/arangodb/3.11/release-notes/version-3.11/incompatible-changes-in-3-11.md @@ -15,7 +15,7 @@ read-only in rare cases. {{< warning >}} If you are a paying customer with a self-hosted deployment, contact the -ArangoDB support for direct assistance. +Arango support for direct assistance. Arango Managed Platform (AMP) customers do not need to take any action. {{< /warning >}} @@ -541,7 +541,7 @@ created with v3.11.11, v3.12.2, or any later version. ### If the deployment is affected {{< info >}} -If you are a customer, please contact the ArangoDB support to assist you with +If you are a customer, please contact the Arango support to assist you with the following steps. {{< /info >}} diff --git a/site/content/arangodb/3.11/release-notes/version-3.5/whats-new-in-3-5.md b/site/content/arangodb/3.11/release-notes/version-3.5/whats-new-in-3-5.md index 2a61e8a724..9875c19b12 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.5/whats-new-in-3-5.md +++ b/site/content/arangodb/3.11/release-notes/version-3.5/whats-new-in-3-5.md @@ -712,7 +712,7 @@ In this message, the `cf3f4` is the message's unique ID value. ArangoDB users ca use this ID to build custom monitoring or alerting based on specific log ID values. Existing log ID values are supposed to stay constant in future releases of arangod. -Additionally the unique log ID values can be used by the ArangoDB support to find +Additionally the unique log ID values can be used by the Arango support to find out which component of the product exactly generated a log message. The IDs also make disambiguation of identical log messages easier. diff --git a/site/content/arangodb/3.11/release-notes/version-3.7/whats-new-in-3-7.md b/site/content/arangodb/3.11/release-notes/version-3.7/whats-new-in-3-7.md index 8925836baa..f366ab69c1 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.7/whats-new-in-3-7.md +++ b/site/content/arangodb/3.11/release-notes/version-3.7/whats-new-in-3-7.md @@ -960,7 +960,7 @@ thus cannot be intercepted by the crash handler. In case the crash handler receives one of the mentioned interceptable signals, it will write basic crash information to the logfile and a backtrace of the -call site. The backtrace can be provided to the ArangoDB support for further +call site. The backtrace can be provided to the Arango support for further inspection. Note that backtaces are only usable if debug symbols for ArangoDB have been installed as well. diff --git a/site/content/arangodb/3.12/aql/execution-and-performance/explaining-queries.md b/site/content/arangodb/3.12/aql/execution-and-performance/explaining-queries.md index d8b3ce32fb..b51e33989d 100644 --- a/site/content/arangodb/3.12/aql/execution-and-performance/explaining-queries.md +++ b/site/content/arangodb/3.12/aql/execution-and-performance/explaining-queries.md @@ -225,7 +225,7 @@ var query = "FOR doc IN mycollection FILTER doc.value > 42 RETURN doc"; require("@arangodb/aql/explainer").debugDump("/tmp/query-debug-info", query); ``` -Entitled users can send the generated file to the ArangoDB support to facilitate +Entitled users can send the generated file to the Arango support to facilitate reproduction and debugging. {{< tip >}} diff --git a/site/content/arangodb/3.12/components/tools/arangoinspect/_index.md b/site/content/arangodb/3.12/components/tools/arangoinspect/_index.md index 0860c93093..87ae1c2722 100644 --- a/site/content/arangodb/3.12/components/tools/arangoinspect/_index.md +++ b/site/content/arangodb/3.12/components/tools/arangoinspect/_index.md @@ -4,5 +4,5 @@ menuTitle: arangoinspect weight: 50 description: >- `arangoinspect` is a command-line client tool that collects information of any - ArangoDB server setup to facilitate troubleshooting for the ArangoDB support + ArangoDB server setup to facilitate troubleshooting for the Arango support --- diff --git a/site/content/arangodb/3.12/components/tools/arangoinspect/examples.md b/site/content/arangodb/3.12/components/tools/arangoinspect/examples.md index eb1fa6ae27..6788389f6f 100644 --- a/site/content/arangodb/3.12/components/tools/arangoinspect/examples.md +++ b/site/content/arangodb/3.12/components/tools/arangoinspect/examples.md @@ -5,7 +5,7 @@ weight: 5 description: >- How to use the `arangoinspect` tool to collection information for troubleshooting --- -If you are asked by ArangoDB support to provide an inspector output, run +If you are asked by Arango support to provide an inspector output, run the _arangoinspect_ binary to generate a file in the current working folder. The resulting JSON file is a collection of meta data acquired from all diff --git a/site/content/arangodb/3.12/develop/integrations/arangodb-tinkerpop-provider.md b/site/content/arangodb/3.12/develop/integrations/arangodb-tinkerpop-provider.md index 04012366f9..a1a68550bf 100644 --- a/site/content/arangodb/3.12/develop/integrations/arangodb-tinkerpop-provider.md +++ b/site/content/arangodb/3.12/develop/integrations/arangodb-tinkerpop-provider.md @@ -325,7 +325,7 @@ Graph configuration properties are prefixed with `gremlin.arangodb.conf.graph`: Driver configuration properties are prefixed with `gremlin.arangodb.conf.driver`. All properties from `com.arangodb.config.ArangoConfigProperties` are supported. See -the [ArangoDB Java Driver documentation](https://docs.arangodb.com/stable/develop/drivers/java/reference-version-7/driver-setup/#config-file-properties) +the [ArangoDB Java Driver documentation](../drivers/java/reference-version-7/driver-setup.md#config-file-properties) for details. ### YAML Configuration @@ -393,7 +393,7 @@ To use TLS-secured connections to ArangoDB, follow these steps: 1. Enable SSL by setting `gremlin.arangodb.conf.driver.useSsl` to `true` in your configuration. -2. Configure SSL properties as needed (see [ArangoDB Java Driver documentation](https://docs.arangodb.com/stable/develop/drivers/java/reference-version-7/driver-setup/#config-file-properties) for all available options): +2. Configure SSL properties as needed (see [ArangoDB Java Driver documentation](../drivers/java/reference-version-7/driver-setup.md#config-file-properties) for all available options): ```yaml gremlin: diff --git a/site/content/arangodb/3.12/operations/troubleshooting/arangod.md b/site/content/arangodb/3.12/operations/troubleshooting/arangod.md index 2d44949255..8f11ecba42 100644 --- a/site/content/arangodb/3.12/operations/troubleshooting/arangod.md +++ b/site/content/arangodb/3.12/operations/troubleshooting/arangod.md @@ -98,7 +98,7 @@ thus cannot be intercepted by the crash handler. In case the crash handler receives one of the mentioned interceptable signals, it will write basic crash information to the logfile and a backtrace of the -call site. The backtrace can be provided to the ArangoDB support for further +call site. The backtrace can be provided to the Arango support for further inspection. Note that backtaces are only usable if debug symbols for ArangoDB have been installed as well. diff --git a/site/content/arangodb/3.12/release-notes/version-3.0/whats-new-in-3-0.md b/site/content/arangodb/3.12/release-notes/version-3.0/whats-new-in-3-0.md index f4e2392774..20472c4c35 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.0/whats-new-in-3-0.md +++ b/site/content/arangodb/3.12/release-notes/version-3.0/whats-new-in-3-0.md @@ -395,7 +395,7 @@ longer-running operations are ongoing. It also keeps more state about user's cho windows sizes, whether the tree or the code view was last used in the document editor). Cluster statistics are now integrated into the web interface as well. Additionally, a -menu item "Help us" has been added to easily provide the ArangoDB team feedback about +menu item "Help us" has been added to easily provide the Arango team feedback about the product. {{< comment >}} NOTE: This feature doesn't work properly anymore! diff --git a/site/content/arangodb/3.12/release-notes/version-3.11/incompatible-changes-in-3-11.md b/site/content/arangodb/3.12/release-notes/version-3.11/incompatible-changes-in-3-11.md index ba3354a686..52f1d26e71 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.11/incompatible-changes-in-3-11.md +++ b/site/content/arangodb/3.12/release-notes/version-3.11/incompatible-changes-in-3-11.md @@ -15,7 +15,7 @@ read-only in rare cases. {{< warning >}} If you are a paying customer with a self-hosted deployment, contact the -ArangoDB support for direct assistance. +Arango support for direct assistance. Arango Managed Platform (AMP) customers do not need to take any action. {{< /warning >}} @@ -541,7 +541,7 @@ created with v3.11.11, v3.12.2, or any later version. ### If the deployment is affected {{< info >}} -If you are a customer, please contact the ArangoDB support to assist you with +If you are a customer, please contact the Arango support to assist you with the following steps. {{< /info >}} diff --git a/site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md b/site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md index 9777ac3151..a84a141025 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md +++ b/site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md @@ -38,7 +38,7 @@ become read-only in rare cases. {{< warning >}} If you are a paying customer with a self-hosted deployment, contact the -ArangoDB support for direct assistance. +Arango support for direct assistance. Arango Managed Platform (AMP) customers do not need to take any action. {{< /warning >}} @@ -604,7 +604,7 @@ created with v3.11.11, v3.12.2, or any later version. ### If the deployment is affected {{< info >}} -If you are a customer, please contact the ArangoDB support to assist you with +If you are a customer, please contact the Arango support to assist you with the following steps. {{< /info >}} @@ -819,7 +819,7 @@ created with v3.12.4 or any later version. 1. Create a Hot Backup if you haven't done so already. -2. If the check result shows affected indexes, contact the ArangoDB support +2. If the check result shows affected indexes, contact the Arango support immediately. Do not continue and refrain from upgrading. 3. If no affected indexes are reported, restore the Hot Backup to a new @@ -892,7 +892,7 @@ created with v3.12.4 or any later version. ### If the deployment is in read-only mode {{< info >}} -If you are a customer, please contact the ArangoDB support to assist you with +If you are a customer, please contact the Arango support to assist you with the following steps. {{< /info >}} diff --git a/site/content/arangodb/3.12/release-notes/version-3.5/whats-new-in-3-5.md b/site/content/arangodb/3.12/release-notes/version-3.5/whats-new-in-3-5.md index 2a61e8a724..9875c19b12 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.5/whats-new-in-3-5.md +++ b/site/content/arangodb/3.12/release-notes/version-3.5/whats-new-in-3-5.md @@ -712,7 +712,7 @@ In this message, the `cf3f4` is the message's unique ID value. ArangoDB users ca use this ID to build custom monitoring or alerting based on specific log ID values. Existing log ID values are supposed to stay constant in future releases of arangod. -Additionally the unique log ID values can be used by the ArangoDB support to find +Additionally the unique log ID values can be used by the Arango support to find out which component of the product exactly generated a log message. The IDs also make disambiguation of identical log messages easier. diff --git a/site/content/arangodb/3.12/release-notes/version-3.7/whats-new-in-3-7.md b/site/content/arangodb/3.12/release-notes/version-3.7/whats-new-in-3-7.md index 4fbbd3e698..29bd20c8f4 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.7/whats-new-in-3-7.md +++ b/site/content/arangodb/3.12/release-notes/version-3.7/whats-new-in-3-7.md @@ -958,7 +958,7 @@ thus cannot be intercepted by the crash handler. In case the crash handler receives one of the mentioned interceptable signals, it will write basic crash information to the logfile and a backtrace of the -call site. The backtrace can be provided to the ArangoDB support for further +call site. The backtrace can be provided to the Arango support for further inspection. Note that backtaces are only usable if debug symbols for ArangoDB have been installed as well. diff --git a/site/content/arangodb/3.13/aql/execution-and-performance/explaining-queries.md b/site/content/arangodb/3.13/aql/execution-and-performance/explaining-queries.md index d8b3ce32fb..b51e33989d 100644 --- a/site/content/arangodb/3.13/aql/execution-and-performance/explaining-queries.md +++ b/site/content/arangodb/3.13/aql/execution-and-performance/explaining-queries.md @@ -225,7 +225,7 @@ var query = "FOR doc IN mycollection FILTER doc.value > 42 RETURN doc"; require("@arangodb/aql/explainer").debugDump("/tmp/query-debug-info", query); ``` -Entitled users can send the generated file to the ArangoDB support to facilitate +Entitled users can send the generated file to the Arango support to facilitate reproduction and debugging. {{< tip >}} diff --git a/site/content/arangodb/3.13/components/tools/arangoinspect/_index.md b/site/content/arangodb/3.13/components/tools/arangoinspect/_index.md index 0860c93093..87ae1c2722 100644 --- a/site/content/arangodb/3.13/components/tools/arangoinspect/_index.md +++ b/site/content/arangodb/3.13/components/tools/arangoinspect/_index.md @@ -4,5 +4,5 @@ menuTitle: arangoinspect weight: 50 description: >- `arangoinspect` is a command-line client tool that collects information of any - ArangoDB server setup to facilitate troubleshooting for the ArangoDB support + ArangoDB server setup to facilitate troubleshooting for the Arango support --- diff --git a/site/content/arangodb/3.13/components/tools/arangoinspect/examples.md b/site/content/arangodb/3.13/components/tools/arangoinspect/examples.md index eb1fa6ae27..6788389f6f 100644 --- a/site/content/arangodb/3.13/components/tools/arangoinspect/examples.md +++ b/site/content/arangodb/3.13/components/tools/arangoinspect/examples.md @@ -5,7 +5,7 @@ weight: 5 description: >- How to use the `arangoinspect` tool to collection information for troubleshooting --- -If you are asked by ArangoDB support to provide an inspector output, run +If you are asked by Arango support to provide an inspector output, run the _arangoinspect_ binary to generate a file in the current working folder. The resulting JSON file is a collection of meta data acquired from all diff --git a/site/content/arangodb/3.13/develop/integrations/arangodb-tinkerpop-provider.md b/site/content/arangodb/3.13/develop/integrations/arangodb-tinkerpop-provider.md index 04012366f9..a1a68550bf 100644 --- a/site/content/arangodb/3.13/develop/integrations/arangodb-tinkerpop-provider.md +++ b/site/content/arangodb/3.13/develop/integrations/arangodb-tinkerpop-provider.md @@ -325,7 +325,7 @@ Graph configuration properties are prefixed with `gremlin.arangodb.conf.graph`: Driver configuration properties are prefixed with `gremlin.arangodb.conf.driver`. All properties from `com.arangodb.config.ArangoConfigProperties` are supported. See -the [ArangoDB Java Driver documentation](https://docs.arangodb.com/stable/develop/drivers/java/reference-version-7/driver-setup/#config-file-properties) +the [ArangoDB Java Driver documentation](../drivers/java/reference-version-7/driver-setup.md#config-file-properties) for details. ### YAML Configuration @@ -393,7 +393,7 @@ To use TLS-secured connections to ArangoDB, follow these steps: 1. Enable SSL by setting `gremlin.arangodb.conf.driver.useSsl` to `true` in your configuration. -2. Configure SSL properties as needed (see [ArangoDB Java Driver documentation](https://docs.arangodb.com/stable/develop/drivers/java/reference-version-7/driver-setup/#config-file-properties) for all available options): +2. Configure SSL properties as needed (see [ArangoDB Java Driver documentation](../drivers/java/reference-version-7/driver-setup.md#config-file-properties) for all available options): ```yaml gremlin: diff --git a/site/content/arangodb/3.13/operations/troubleshooting/arangod.md b/site/content/arangodb/3.13/operations/troubleshooting/arangod.md index 2d44949255..8f11ecba42 100644 --- a/site/content/arangodb/3.13/operations/troubleshooting/arangod.md +++ b/site/content/arangodb/3.13/operations/troubleshooting/arangod.md @@ -98,7 +98,7 @@ thus cannot be intercepted by the crash handler. In case the crash handler receives one of the mentioned interceptable signals, it will write basic crash information to the logfile and a backtrace of the -call site. The backtrace can be provided to the ArangoDB support for further +call site. The backtrace can be provided to the Arango support for further inspection. Note that backtaces are only usable if debug symbols for ArangoDB have been installed as well. diff --git a/site/content/arangodb/3.13/release-notes/version-3.0/whats-new-in-3-0.md b/site/content/arangodb/3.13/release-notes/version-3.0/whats-new-in-3-0.md index f4e2392774..20472c4c35 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.0/whats-new-in-3-0.md +++ b/site/content/arangodb/3.13/release-notes/version-3.0/whats-new-in-3-0.md @@ -395,7 +395,7 @@ longer-running operations are ongoing. It also keeps more state about user's cho windows sizes, whether the tree or the code view was last used in the document editor). Cluster statistics are now integrated into the web interface as well. Additionally, a -menu item "Help us" has been added to easily provide the ArangoDB team feedback about +menu item "Help us" has been added to easily provide the Arango team feedback about the product. {{< comment >}} NOTE: This feature doesn't work properly anymore! diff --git a/site/content/arangodb/3.13/release-notes/version-3.11/incompatible-changes-in-3-11.md b/site/content/arangodb/3.13/release-notes/version-3.11/incompatible-changes-in-3-11.md index ba3354a686..52f1d26e71 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.11/incompatible-changes-in-3-11.md +++ b/site/content/arangodb/3.13/release-notes/version-3.11/incompatible-changes-in-3-11.md @@ -15,7 +15,7 @@ read-only in rare cases. {{< warning >}} If you are a paying customer with a self-hosted deployment, contact the -ArangoDB support for direct assistance. +Arango support for direct assistance. Arango Managed Platform (AMP) customers do not need to take any action. {{< /warning >}} @@ -541,7 +541,7 @@ created with v3.11.11, v3.12.2, or any later version. ### If the deployment is affected {{< info >}} -If you are a customer, please contact the ArangoDB support to assist you with +If you are a customer, please contact the Arango support to assist you with the following steps. {{< /info >}} diff --git a/site/content/arangodb/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md b/site/content/arangodb/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md index 9777ac3151..a84a141025 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md +++ b/site/content/arangodb/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md @@ -38,7 +38,7 @@ become read-only in rare cases. {{< warning >}} If you are a paying customer with a self-hosted deployment, contact the -ArangoDB support for direct assistance. +Arango support for direct assistance. Arango Managed Platform (AMP) customers do not need to take any action. {{< /warning >}} @@ -604,7 +604,7 @@ created with v3.11.11, v3.12.2, or any later version. ### If the deployment is affected {{< info >}} -If you are a customer, please contact the ArangoDB support to assist you with +If you are a customer, please contact the Arango support to assist you with the following steps. {{< /info >}} @@ -819,7 +819,7 @@ created with v3.12.4 or any later version. 1. Create a Hot Backup if you haven't done so already. -2. If the check result shows affected indexes, contact the ArangoDB support +2. If the check result shows affected indexes, contact the Arango support immediately. Do not continue and refrain from upgrading. 3. If no affected indexes are reported, restore the Hot Backup to a new @@ -892,7 +892,7 @@ created with v3.12.4 or any later version. ### If the deployment is in read-only mode {{< info >}} -If you are a customer, please contact the ArangoDB support to assist you with +If you are a customer, please contact the Arango support to assist you with the following steps. {{< /info >}} diff --git a/site/content/arangodb/3.13/release-notes/version-3.5/whats-new-in-3-5.md b/site/content/arangodb/3.13/release-notes/version-3.5/whats-new-in-3-5.md index 2a61e8a724..9875c19b12 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.5/whats-new-in-3-5.md +++ b/site/content/arangodb/3.13/release-notes/version-3.5/whats-new-in-3-5.md @@ -712,7 +712,7 @@ In this message, the `cf3f4` is the message's unique ID value. ArangoDB users ca use this ID to build custom monitoring or alerting based on specific log ID values. Existing log ID values are supposed to stay constant in future releases of arangod. -Additionally the unique log ID values can be used by the ArangoDB support to find +Additionally the unique log ID values can be used by the Arango support to find out which component of the product exactly generated a log message. The IDs also make disambiguation of identical log messages easier. diff --git a/site/content/arangodb/3.13/release-notes/version-3.7/whats-new-in-3-7.md b/site/content/arangodb/3.13/release-notes/version-3.7/whats-new-in-3-7.md index 4fbbd3e698..29bd20c8f4 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.7/whats-new-in-3-7.md +++ b/site/content/arangodb/3.13/release-notes/version-3.7/whats-new-in-3-7.md @@ -958,7 +958,7 @@ thus cannot be intercepted by the crash handler. In case the crash handler receives one of the mentioned interceptable signals, it will write basic crash information to the logfile and a backtrace of the -call site. The backtrace can be provided to the ArangoDB support for further +call site. The backtrace can be provided to the Arango support for further inspection. Note that backtaces are only usable if debug symbols for ArangoDB have been installed as well. diff --git a/site/content/data-platform/_index.md b/site/content/data-platform/_index.md index 57bb0980c1..5b68886243 100644 --- a/site/content/data-platform/_index.md +++ b/site/content/data-platform/_index.md @@ -9,8 +9,8 @@ description: >- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} The Arango Data Platform is a **Kubernetes-native** technical infrastructure that acts as the umbrella diff --git a/site/content/data-platform/get-started.md b/site/content/data-platform/get-started.md index de721b874e..f59466e2db 100644 --- a/site/content/data-platform/get-started.md +++ b/site/content/data-platform/get-started.md @@ -8,8 +8,8 @@ description: >- --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} The Arango Data Platform is a technical infrastructure that acts as the umbrella @@ -40,7 +40,7 @@ to provide automated deployment, scaling, and management capabilities. ### Requirements for self-hosting - **Early access to the Arango Data Platform**: - [Get in touch](https://arangodb.com/contact/) with the ArangoDB team to get + [Get in touch](https://arango.ai/contact-us/) with the Arango team to get exclusive early access to the pre-release of the Arango Data Platform & AI Suite. - **Kubernetes**: Orchestrates the selected services that comprise the @@ -76,7 +76,7 @@ to provide automated deployment, scaling, and management capabilities. 1. Obtain a zip package of the Arango Data Platform for the offline installation. It includes helm charts, manifests, and blobs of the container image layers. - You also receive a package configuration file from the ArangoDB team. + You also receive a package configuration file from the Arango team. 2. Create a Kubernetes namespace for ArangoDB and a secret with your Enterprise Edition license key. Substitute `<license-string>` with the actual @@ -178,7 +178,7 @@ to provide automated deployment, scaling, and management capabilities. ``` 8. Install the package using the package configuration you received from the - ArangoDB team (`platform.yaml`) and the configuration generated by the + Arango team (`platform.yaml`) and the configuration generated by the previous command (`platform.imported.yaml`). These configurations are merged, allowing for targeted upgrades and user-defined overrides. diff --git a/site/content/data-platform/graph-visualizer.md b/site/content/data-platform/graph-visualizer.md index 971b3ad818..fd06fd3258 100644 --- a/site/content/data-platform/graph-visualizer.md +++ b/site/content/data-platform/graph-visualizer.md @@ -7,8 +7,8 @@ description: >- --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} The **Graph Visualizer** is a browser-based tool integrated into the web interface diff --git a/site/content/data-platform/release-notes.md b/site/content/data-platform/release-notes.md index 006c949cdb..cc3c53b7a2 100644 --- a/site/content/data-platform/release-notes.md +++ b/site/content/data-platform/release-notes.md @@ -7,8 +7,8 @@ description: >- --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arangodb.com/contact/) with -the ArangoDB team. +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. {{< /tip >}} ## Arango Data Platform diff --git a/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-codeblock-openapi.html b/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-codeblock-openapi.html index 43a210e7d4..24624c3e13 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-codeblock-openapi.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-codeblock-openapi.html @@ -8,7 +8,7 @@ {{- $url := index $match 2 }} {{- $isRemote := ne (urls.Parse $url).Scheme "" }} {{- if not $isRemote }} - {{- $absUrl := printf "https://docs.arangodb.com%s" (urls.RelRef $page $url) }} + {{- $absUrl := printf "https://docs.arango.ai%s" (urls.RelRef $page $url) }} {{- $newLink := printf "[%s](%s)" (index $match 1) $absUrl }} {{- $linkMap = merge $linkMap (dict (index $match 0) $newLink) }} {{- end }} diff --git a/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html b/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html index 70df3678d4..a9b871f509 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html @@ -11,7 +11,7 @@ {{- $isRemote := ne $url.Scheme "" }} {{- if $isRemote }} - {{- $isProduction := eq site.BaseURL "https://docs.arangodb.com" }} + {{- $isProduction := eq site.BaseURL "https://docs.arango.ai" }} {{- if and (not $isProduction) (eq .Destination "https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic") }} {{- $permalink = "https://dashboard.arangodb.cloud/home" }} {{- else }} diff --git a/site/themes/arangodb-docs-theme/layouts/_default/baseof.html b/site/themes/arangodb-docs-theme/layouts/_default/baseof.html index 150c1d0578..bdfb2d3954 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/baseof.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/baseof.html @@ -1,5 +1,5 @@ {{ partial "shortcodes/version.html" (dict "page" .Page) -}} -{{ $isProduction := eq site.BaseURL "https://docs.arangodb.com" -}} +{{ $isProduction := eq site.BaseURL "https://docs.arango.ai" -}} <!DOCTYPE html> <html lang="{{ .Page.Language | default "en" }}"> diff --git a/site/themes/arangodb-docs-theme/layouts/partials/head.html b/site/themes/arangodb-docs-theme/layouts/partials/head.html index 4b61964b1e..b197f74205 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/head.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/head.html @@ -6,7 +6,7 @@ <link href="{{ "/images/favicon.png" | relURL }}" rel="icon" type="image/png"> {{ partialCached "javascript.html" . -}} - {{ $isProduction := eq site.BaseURL "https://docs.arangodb.com" -}} + {{ $isProduction := eq site.BaseURL "https://docs.arango.ai" -}} {{ if $isProduction -}} {{- partialCached "tracking/gtag.html" . -}} {{- partialCached "tracking/twitter.html" . -}} diff --git a/site/themes/arangodb-docs-theme/layouts/partials/inkeep-widget.html b/site/themes/arangodb-docs-theme/layouts/partials/inkeep-widget.html index 829d0bd7da..e3a07f1705 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/inkeep-widget.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/inkeep-widget.html @@ -50,7 +50,7 @@ filters: { UrlMatch: { ruleType: "PartialUrl", - partialUrl: "docs.arangodb.com", + partialUrl: "docs.arango.ai", }, }, searchTabLabel: "Official Docs", diff --git a/toolchain/arangoproxy/internal/service/service.go b/toolchain/arangoproxy/internal/service/service.go index fbda00d06b..ebe52214b3 100644 --- a/toolchain/arangoproxy/internal/service/service.go +++ b/toolchain/arangoproxy/internal/service/service.go @@ -182,7 +182,7 @@ func init() { "tags": tags, "externalDocs": map[string]interface{}{ "description": "ArangoDB Documentation", - "url": "https://docs.arangodb.com", + "url": "https://docs.arango.ai", }, } } From aa716cca5160918670903c896e1de67566898feb Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Wed, 29 Oct 2025 13:23:59 +0100 Subject: [PATCH 39/69] Whitespace control and typo --- .../arangodb-docs-theme/layouts/_default/home.html | 2 +- .../layouts/partials/shortcodes/cards.html | 12 ++++++------ .../layouts/shortcodes/cards.html | 4 ++-- toolchain/arangoproxy/internal/service/service.go | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/site/themes/arangodb-docs-theme/layouts/_default/home.html b/site/themes/arangodb-docs-theme/layouts/_default/home.html index 56c371097e..2fc261c235 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/home.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/home.html @@ -7,7 +7,7 @@ <h1>{{ .Title | markdownify }}</h1> {{ with .Params.Description }}<p class="lead">{{ . | markdownify }}</p>{{ end }} </hgroup> - {{ .Content | safeHTML }} + {{- .Content | safeHTML -}} </article> {{- end -}} {{ end -}} diff --git a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/cards.html b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/cards.html index f09e6fba70..3fb17b374b 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/cards.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/cards.html @@ -1,9 +1,9 @@ -{{ $cardsPerRow := .cardsPerRow | default "3"}} -{{ $gap := "0rem" }} +{{ $cardsPerRow := .cardsPerRow | default "3" -}} +{{ $gap := "0rem" -}} -{{ if eq $cardsPerRow "2" }} - {{ $gap = "3rem"}} -{{ end }} +{{ if eq $cardsPerRow "2" -}} + {{ $gap = "3rem" -}} +{{ end -}} <div class="cards" style="column-gap: {{ $gap }}"> - {{ .Inner }} + {{- .Inner -}} </div> \ No newline at end of file diff --git a/site/themes/arangodb-docs-theme/layouts/shortcodes/cards.html b/site/themes/arangodb-docs-theme/layouts/shortcodes/cards.html index eff1c34d6a..c05034d206 100644 --- a/site/themes/arangodb-docs-theme/layouts/shortcodes/cards.html +++ b/site/themes/arangodb-docs-theme/layouts/shortcodes/cards.html @@ -1,3 +1,3 @@ <div class="cards"> - {{ .Inner }} -</div> + {{- .Inner -}} +</div> \ No newline at end of file diff --git a/toolchain/arangoproxy/internal/service/service.go b/toolchain/arangoproxy/internal/service/service.go index fe50f0af78..7a10462477 100644 --- a/toolchain/arangoproxy/internal/service/service.go +++ b/toolchain/arangoproxy/internal/service/service.go @@ -45,7 +45,7 @@ type JSService struct{} func (service JSService) Execute(request models.Example, cacheChannel chan map[string]interface{}, exampleChannel chan map[string]interface{}, outputChannel chan string) (res models.ExampleResponse) { repository, err := models.GetRepository(request.Options.Type, request.Options.Version) - models.Logger.Debug("[%s] Choosen Repository: %s", request.Options.Name, repository.Version) + models.Logger.Debug("[%s] Chosen repository: %s", request.Options.Name, repository.Version) if err != nil { responseMsg := fmt.Sprintf("A server for version %s has not been used during generation", request.Options.Version) res = *models.NewExampleResponse(request.Code, responseMsg, request.Options) @@ -70,7 +70,7 @@ func (service CurlService) Execute(request models.Example, cacheChannel chan map commands := curlFormatter.FormatCommand(request.Code) repository, err := models.GetRepository(request.Options.Type, request.Options.Version) - models.Logger.Debug("[%s] Choosen Repository: %s", request.Options.Name, repository.Version) + models.Logger.Debug("[%s] Chosen repository: %s", request.Options.Name, repository.Version) if err != nil { responseMsg := fmt.Sprintf("A server for version %s has not been used during generation", request.Options.Version) res = *models.NewExampleResponse(request.Code, responseMsg, request.Options) @@ -101,7 +101,7 @@ func (service AQLService) Execute(request models.Example, cacheChannel chan map[ commands := AQLFormatter.FormatRequestCode(request.Code, request.Options.BindVars) repository, err := models.GetRepository(request.Options.Type, request.Options.Version) - models.Logger.Debug("[%s] Choosen Repository: %s", request.Options.Name, repository.Version) + models.Logger.Debug("[%s] Chosen repository: %s", request.Options.Name, repository.Version) if err != nil { responseMsg := fmt.Sprintf("A server for version %s has not been used during generation", request.Options.Version) res.ExampleResponse.Input, res.ExampleResponse.Options, res.ExampleResponse.Output = request.Code, request.Options, responseMsg From c39f6de09cba4e79d741c660d6647cf0f76cfde9 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 30 Oct 2025 17:17:26 +0100 Subject: [PATCH 40/69] Simplify logic for in-development warning with a flag in versions.yaml --- site/data/versions.yaml | 4 +++ .../layouts/partials/in-development.html | 32 ++++++++----------- .../layouts/partials/shortcodes/version.html | 21 +----------- 3 files changed, 19 insertions(+), 38 deletions(-) diff --git a/site/data/versions.yaml b/site/data/versions.yaml index 00457f1de5..d1d468b951 100644 --- a/site/data/versions.yaml +++ b/site/data/versions.yaml @@ -4,18 +4,22 @@ version: "3.13.0" alias: "devel" deprecated: false + inDevelopment: true - name: "3.12" version: "3.12.6" alias: "stable" deprecated: false + inDevelopment: false - name: "3.11" version: "3.11.14" alias: "3.11" deprecated: true + inDevelopment: false - name: "3.10" version: "3.10.14" alias: "3.10" deprecated: true + inDevelopment: false diff --git a/site/themes/arangodb-docs-theme/layouts/partials/in-development.html b/site/themes/arangodb-docs-theme/layouts/partials/in-development.html index a8f2fc426e..582eb1b5f1 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/in-development.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/in-development.html @@ -1,20 +1,16 @@ -{{- $isInDevelopment := $.Page.Store.Get "underDevelopment" }} -{{ $shortVersion := $.Page.Store.Get "versionShort" }} +{{ $inDevelopment := $.Page.Store.Get "inDevelopment" -}} +{{ $shortVersion := $.Page.Store.Get "versionShort" -}} - -{{ if $isInDevelopment }} - <div class="box notices cstyle warning"> - <div class="box-content-container"> - <div class="box-content"> - <i class="fas fa-exclamation-triangle"></i> - <div class="box-text"> - <p> - ArangoDB v{{ $shortVersion }} is under development and not released yet. - - This documentation is not final and potentially incomplete. - </p> - </div> - </div> - </div> +{{ if $inDevelopment -}} +<div class="box notices cstyle warning"> + <div class="box-content-container"> + <div class="box-content"> + <i class="fas fa-exclamation-triangle"></i> + <div class="box-text"> + <p>ArangoDB v{{ $shortVersion }} is under development and not released yet.</p> + <p>This documentation is not final and potentially incomplete.</p> + </div> </div> -{{ end }} \ No newline at end of file + </div> +</div> +{{ end -}} \ No newline at end of file diff --git a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html index 3466579da1..5b0e27b060 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html @@ -8,27 +8,8 @@ {{- $page.Store.Set "versionShort" $version.name }} {{- $page.Store.Set "alias" $version.alias }} {{- $page.Store.Set "deprecated" $version.deprecated }} - {{- if ne $version.name "platform" }} - {{- template "checkVersionIsInDevelopment" dict "page" $page "pageVersion" $version.name "versions" $versions }} - {{- end }} + {{- $page.Store.Set "inDevelopment" $version.inDevelopment }} {{- break }} {{- end }} {{- end }} {{- end }} - -{{- define "checkVersionIsInDevelopment" }} - {{- $page := .page }} - {{- $pageVersion := .pageVersion }} - {{- $versions := index (where .versions "alias" "stable") 0 }} - {{- $page.Store.Set "stableVersion" $versions.name }} - {{- $stableVersion := split $versions.name "." }} - {{- $currentVersion := split $pageVersion "." }} - {{- range $j, $elem := $stableVersion }} - {{- $intStable := int $elem }} - {{- $currentVersionElement := index $currentVersion $j }} - {{- $intCurrent := int $currentVersionElement }} - {{- if gt $intCurrent $intStable }} - {{- $page.Store.Set "underDevelopment" true }} - {{- end }} - {{- end }} -{{- end -}} From 93bc5ac57901adf80476f5b0f72f3be607fcc8e0 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 30 Oct 2025 17:37:25 +0100 Subject: [PATCH 41/69] Fix and refactor breadcrumbs Make long version numbers for core work and switch from Microdata to RDFa --- .../layouts/partials/breadcrumbs.html | 54 ++++++++----------- 1 file changed, 21 insertions(+), 33 deletions(-) diff --git a/site/themes/arangodb-docs-theme/layouts/partials/breadcrumbs.html b/site/themes/arangodb-docs-theme/layouts/partials/breadcrumbs.html index cc19ff682d..7de905ca93 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/breadcrumbs.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/breadcrumbs.html @@ -1,38 +1,25 @@ <nav class="breadcrumbs"> - <ol class="links" itemscope itemtype="http://schema.org/BreadcrumbList"> - <meta itemprop="itemListOrder" content="Descending" /> - {{ range .Ancestors.Reverse -}} + <ol class="links" vocab="http://schema.org/" typeof="BreadcrumbList"> + {{ $position := 0 -}} + {{ range .Ancestors.Reverse | append . -}} {{ if not .IsHome -}} - <li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement"> - <meta itemprop="position" content="{{ .Params.menuTitle | markdownify }}" /> - <a itemprop="item" class="link" href="{{ .RelPermalink }}"> - <span itemprop="name" class="breadcrumb-entry"> - {{ if eq .Path "/arangodb/" -}} - {{ $coreVersion := index (split .Path "/") 2 }} - {{ template "getVersionLong" dict "coreVersion" $coreVersion -}} - {{ else -}} - {{ .Params.menuTitle | markdownify -}} - {{ end -}} - </span> - </a> - <i class="fas fa-chevron-right fa-fw"></i> - </li> + {{ $position = add $position 1 -}} + <li typeof="ListItem" property="itemListElement"> + <meta property="position" content="{{ $position }}" /> + {{ if gt $position 1 }}<i class="fas fa-chevron-right fa-fw"></i>{{/* TODO <svg style="height: 12px; width: 12px" viewBox="0 0 7 7"><path fill="none" stroke="currentColor" stroke-width="1" d="m 2,6.5 3,-3 -3,-3"></path></svg> */}}{{ end -}} + <a property="item" class="link" href="{{ .RelPermalink }}">{{/* White-space control */ -}} + <span property="name" class="breadcrumb-entry"> + {{- $splitPath := split .Path "/" -}} + {{ if and (hasPrefix .Path "/arangodb/") (eq ($splitPath | len) 3) -}} + {{ $coreVersion := index $splitPath 2 -}} + {{ template "getVersionLong" dict "coreVersion" $coreVersion -}} + {{ else -}} + {{ .Params.menuTitle | markdownify -}} + {{ end -}} + </span> + </a> + </li> {{ end -}} - {{ end -}} - {{ if not .IsHome -}} - <li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement"> - <meta itemprop="position" content="{{ .Params.menuTitle | markdownify }}" /> - <a itemprop="item" class="link" href="{{ .RelPermalink }}"> - <span itemprop="name" class="breadcrumb-entry"> - {{ if eq .Path "/arangodb/" -}} - {{ $coreVersion := index (split .Path "/") 2 }} - {{ template "getVersionLong" dict "coreVersion" $coreVersion -}} - {{ else -}} - {{ .Params.menuTitle | markdownify -}} - {{ end -}} - </span> - </a> - </li> {{ end -}} </ol> </nav> @@ -41,8 +28,9 @@ {{ $coreVersion := .coreVersion -}} {{ $versions := index site.Data.versions "/arangodb/" -}} {{ range $i, $version := $versions -}} - {{ if eq $coreVersion $version.name -}} + {{ if or (eq $coreVersion $version.name) (eq $coreVersion $version.alias) -}} {{ $version.version -}} + {{ break -}} {{ end -}} {{ end -}} {{ end -}} From d8b0e6aa8ae1f0cfdfc920ea9dff9095ad036612 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 30 Oct 2025 17:38:50 +0100 Subject: [PATCH 42/69] Set metadata for search engines noindex for deprecated and in-development versions, canonical link from stable version (e.g. 3.12) to stable alias --- .../arangodb-docs-theme/layouts/partials/meta.html | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/site/themes/arangodb-docs-theme/layouts/partials/meta.html b/site/themes/arangodb-docs-theme/layouts/partials/meta.html index a94a868890..552e226b38 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/meta.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/meta.html @@ -17,11 +17,20 @@ {{- with $versionShort }} <meta name="docsearch:version" content="{{ . }}"> {{- end }} -{{- if eq .Path "/arangodb/" }} +{{- if (hasPrefix .Path "/arangodb/") }} + {{- if or (.Page.Store.Get "deprecated") (.Page.Store.Get "inDevelopment") }}<meta name="robots" content="noindex">{{ end }} + {{- if and (eq (.Page.Store.Get "alias") "stable") (not (hasPrefix .RelPermalink "/arangodb/stable/")) }} + {{- $splitLink := split .RelPermalink "/" }} + {{- $s := slice "/arangodb" "stable" }} + {{- range $i, $e := $splitLink }} + {{- if gt $i 2 }}{{ $s = $s | append $e }}{{ end }} + {{- end }} + <link rel="canonical" href="{{ delimit $s "/" }}"> + {{- end }} {{- $shortVersions := slice }} {{- $versions := index site.Data.versions "/arangodb/" }} {{- range $version := $versions }} - {{- $shortVersions = $shortVersions | append $version.name }} + {{- $shortVersions = $shortVersions | append (cond (eq $version.name $version.alias) $version.name $version.alias) }} {{- end }} <meta name="docsearch:version" content="{{ delimit $shortVersions "," }}"> {{- end }} From 78dfbbe6c785ec73b69ab07d622288bf64f445c7 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Fri, 31 Oct 2025 10:55:13 +0100 Subject: [PATCH 43/69] Toolchain: Adjust oasisctl generator for new docs structure and improve output --- toolchain/scripts/generators/oasisctl.py | 23 +++++++++++++++-------- toolchain/scripts/toolchain.sh | 21 ++++++++++----------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/toolchain/scripts/generators/oasisctl.py b/toolchain/scripts/generators/oasisctl.py index 418c2c8e44..02bdd4e890 100644 --- a/toolchain/scripts/generators/oasisctl.py +++ b/toolchain/scripts/generators/oasisctl.py @@ -36,7 +36,8 @@ 'tandc': 'Terms & Conditions', 'arangodb': 'ArangoDB', 'cpusizes': 'CPU Sizes', - 'nodesizes': 'Node Sizes' + 'nodesizes': 'Node Sizes', + 'scheduled-root-password-rotation': 'Scheduled Root Password Rotation' } @@ -115,7 +116,12 @@ def create_filename(filename): def rewrite_content(data, section, filename, weight): title = "" content = "" - flags = {"inFrontMatter": False, "endFrontMatter": False, "inHeader": False, "firstHeaderContent": False} + flags = { + "inFrontMatter": False, + "endFrontMatter": False, + "inHeader": False, + "firstHeaderContent": False, + } for i, line in enumerate(data): @@ -128,8 +134,8 @@ def rewrite_content(data, section, filename, weight): if flags["inFrontMatter"] and not flags["endFrontMatter"]: if line.startswith("description: "): - if filename.endswith("/options.md"): - content = content + "description: Command-line client tool for managing the Arango Managed Platform (AMP)\n" + #if filename.endswith("/options.md"): + # content = content + "description: Command-line client tool for managing AMP\n" continue if line.startswith("layout: "): @@ -137,15 +143,15 @@ def rewrite_content(data, section, filename, weight): if line.startswith("title: "): if filename.endswith("/options.md"): - content = content + f"title: Arango Managed Platform (AMP) Shell oasisctl\nmenuTitle: Options\nweight: {weight}\n" + content = content + f"title: The `oasisctl` command\nmenuTitle: Options\nweight: {weight}\n" continue menuTitle = "" title = line.rstrip().replace("title: ", "") - for word in title.split(" "): + for word in title.split(" ")[1:]: menuTitle = menuTitle + f" {TITLE_CASE.get(word.lower(), word)}" - content = content + f"title:{menuTitle}\nmenuTitle:{menuTitle.replace('Oasisctl ', '')}\nweight: {weight}\n" + content = content + f"title:{menuTitle} with `oasisctl`\nmenuTitle:{menuTitle}\nweight: {weight}\n" continue if line.startswith("###### Auto generated"): @@ -169,7 +175,8 @@ def rewrite_content(data, section, filename, weight): continue if line.startswith("## "): - content = content + line + # The command as a headline, e.g. ## oasisctl add group + #content = content + line continue if line == "---\n": diff --git a/toolchain/scripts/toolchain.sh b/toolchain/scripts/toolchain.sh index 4836f82571..17b43cad13 100755 --- a/toolchain/scripts/toolchain.sh +++ b/toolchain/scripts/toolchain.sh @@ -114,6 +114,11 @@ function main() { process_server "$server" done + ## Independent of ArangoDB versions/servers + if [[ $GENERATORS == *"oasisctl"* ]]; then + generate_oasisctl + fi + run_arangoproxy_and_site ## Start arangoproxy and site containers to build examples and site @@ -434,10 +439,6 @@ function generators_from_source() { if [[ $GENERATORS == *"metrics"* ]]; then generate_metrics "$version" fi - - if [[ $GENERATORS == *"oasisctl"* ]]; then - generate_oasisctl "$version" - fi } @@ -575,8 +576,6 @@ function generate_metrics() { function generate_oasisctl() { echo "<li><strong>OasisCTL</strong>" >> /home/summary.md - version=$1 - log "[generate_oasisctl] Generate OasisCTL docs" if [ ! -f /tmp/oasisctl.zip ]; then @@ -587,8 +586,8 @@ function generate_oasisctl() { mkdir -p /tmp/oasisctl mkdir -p /tmp/preserve - cp ../../site/content/$version/arangograph/oasisctl/_index.md /tmp/preserve/oasisctl.md > /dev/null - rm -r ../../site/content/$version/arangograph/oasisctl/* > /dev/null + cp ../../site/content/amp/oasisctl/_index.md /tmp/preserve/oasisctl.md > /dev/null + rm -r ../../site/content/amp/oasisctl/* > /dev/null log "[generate_oasisctl] oasisctl generate-docs --link-file-ext .html --replace-underscore-with - --output-dir /tmp/oasisctl)" res=$(oasisctl generate-docs --link-file-ext .html --replace-underscore-with - --output-dir /tmp/oasisctl) @@ -597,14 +596,14 @@ function generate_oasisctl() { echo "<error code=8><strong> ERROR: </strong>$res</error>" >> /home/summary.md fi - log "[generate_oasisctl] "$PYTHON_EXECUTABLE" generators/oasisctl.py --src /tmp/oasisctl --dst ../../site/content/$version/arangograph/oasisctl/" - res=$(("$PYTHON_EXECUTABLE" generators/oasisctl.py --src /tmp/oasisctl --dst ../../site/content/$version/arangograph/oasisctl/) 2>&1 ) + log "[generate_oasisctl] "$PYTHON_EXECUTABLE" generators/oasisctl.py --src /tmp/oasisctl --dst ../../site/content/amp/oasisctl/" + res=$(("$PYTHON_EXECUTABLE" generators/oasisctl.py --src /tmp/oasisctl --dst ../../site/content/amp/oasisctl/) 2>&1 ) if [ $? -ne 0 ]; then log "[generate_oasisctl] [ERROR] Error from oasisctl.py: $res" echo "<error code=8><strong> ERROR: Error: </strong>$res</error></li>" >> /home/summary.md fi - cp /tmp/preserve/oasisctl.md ../../site/content/$version/arangograph/oasisctl/_index.md + cp /tmp/preserve/oasisctl.md ../../site/content/amp/oasisctl/_index.md echo "✓" >> /home/summary.md echo "</li>" >> /home/summary.md From f644e1725b06843f4cd8c486ed93385343647daf Mon Sep 17 00:00:00 2001 From: Paula Mihu <97217318+nerpaula@users.noreply.github.com> Date: Mon, 3 Nov 2025 12:44:00 +0100 Subject: [PATCH 44/69] Move drivers & integrations under Ecosystem (#816) * rename data science adapters * Move 3.12 drivers and integrations under ecosystem, fix links * remove drivers and integrations from 3.13, add aliases * fix broken link due to double slash * fix more broken links * Revert links to drivers and integrations in 3.10 and 3.11 * Fix link * Fix driver headline * EOL support for Spark 3.3 --------- Co-authored-by: Simran Spiller <simran@arangodb.com> --- site/content/amp/deployments/_index.md | 2 +- .../x-509-certificates.md | 2 +- .../3.10/develop/javascript-api/_index.md | 2 +- .../arangodb/3.11/develop/drivers/_index.md | 2 +- .../arangodb-datasource-for-apache-spark.md | 4 +- .../3.11/develop/javascript-api/_index.md | 2 +- .../3.12/aql/functions/document-object.md | 2 +- .../3.12/aql/how-to-invoke-aql/_index.md | 4 +- .../3.12/components/tools/arango-datasets.md | 2 +- .../3.12/develop/drivers/java/_index.md | 480 ------ .../3.12/develop/drivers/javascript.md | 224 --- .../arangodb/3.12/develop/http-api/_index.md | 2 +- .../arangodb-datasource-for-apache-spark.md | 422 ----- .../arangodb-tinkerpop-provider.md | 841 --------- .../_index.md | 283 ---- .../mapping/computed-values.md | 58 - .../repositories/queries/query-methods.md | 132 -- .../3.12/develop/javascript-api/_index.md | 2 +- .../how-to-interact-with-arangodb.md | 2 +- .../3.12/operations/administration/_index.md | 2 +- .../3.13/aql/functions/document-object.md | 2 +- .../3.13/aql/how-to-invoke-aql/_index.md | 4 +- .../3.13/components/tools/arango-datasets.md | 2 +- .../arangodb/3.13/develop/drivers/_index.md | 53 - .../arangodb/3.13/develop/drivers/go.md | 735 -------- .../java/reference-version-7/_index.md | 7 - .../changes-in-version-7.md | 448 ----- .../java/reference-version-7/driver-setup.md | 300 ---- .../java/reference-version-7/serialization.md | 247 --- .../arangodb/3.13/develop/drivers/python.md | 678 -------- .../arangodb/3.13/develop/http-api/_index.md | 2 +- .../3.13/develop/integrations/_index.md | 58 - .../configuration.md | 244 --- .../integrations/spring-boot-arangodb.md | 1507 ----------------- .../spring-data-arangodb/_index.md | 237 --- .../spring-data-arangodb/migration.md | 109 -- .../reference-version-4/_index.md | 6 - .../reference-version-4/mapping/_index.md | 282 --- .../reference-version-4/mapping/auditing.md | 148 -- .../reference-version-4/mapping/converter.md | 53 - .../reference-version-4/mapping/document.md | 97 -- .../reference-version-4/mapping/edge.md | 95 -- .../reference-version-4/mapping/events.md | 42 - .../reference-version-4/mapping/indexes.md | 123 -- .../reference-version-4/mapping/reference.md | 65 - .../reference-version-4/mapping/relations.md | 34 - .../repositories/_index.md | 47 - .../repositories/queries/_index.md | 125 -- .../repositories/queries/derived-queries.md | 218 --- .../repositories/queries/named-queries.md | 34 - .../reference-version-4/template.md | 15 - .../3.13/develop/javascript-api/_index.md | 2 +- .../how-to-interact-with-arangodb.md | 2 +- .../3.13/operations/administration/_index.md | 2 +- site/content/ecosystem/_index.md | 37 +- site/content/ecosystem/adapters/_index.md | 4 +- .../develop => ecosystem}/drivers/_index.md | 7 +- .../3.12/develop => ecosystem}/drivers/go.md | 3 + .../drivers/java/_index.md | 5 +- .../java/reference-version-6/_index.md | 0 .../java/reference-version-6/driver-setup.md | 0 .../java/reference-version-6/serialization.md | 0 .../java/reference-version-7/_index.md | 0 .../changes-in-version-7.md | 0 .../java/reference-version-7/driver-setup.md | 0 .../java/reference-version-7/serialization.md | 0 .../drivers/javascript.md | 6 +- .../develop => ecosystem}/drivers/python.md | 5 +- .../integrations/_index.md | 5 +- .../arangodb-datasource-for-apache-spark.md | 8 +- .../arangodb-tinkerpop-provider.md | 3 + .../_index.md | 5 +- .../configuration.md | 0 .../integrations/spring-boot-arangodb.md | 9 +- .../spring-data-arangodb/_index.md | 3 + .../spring-data-arangodb/migration.md | 0 .../reference-version-3/_index.md | 0 .../reference-version-3/mapping/_index.md | 0 .../reference-version-3/mapping/auditing.md | 0 .../reference-version-3/mapping/converter.md | 0 .../reference-version-3/mapping/document.md | 0 .../reference-version-3/mapping/edge.md | 0 .../reference-version-3/mapping/events.md | 0 .../reference-version-3/mapping/indexes.md | 4 +- .../reference-version-3/mapping/reference.md | 0 .../reference-version-3/mapping/relations.md | 0 .../repositories/_index.md | 0 .../repositories/queries/_index.md | 0 .../repositories/queries/derived-queries.md | 0 .../repositories/queries/named-queries.md | 0 .../repositories/queries/query-methods.md | 4 +- .../reference-version-3/template.md | 0 .../reference-version-4/_index.md | 0 .../reference-version-4/mapping/_index.md | 0 .../reference-version-4/mapping/auditing.md | 0 .../mapping/computed-values.md | 2 +- .../reference-version-4/mapping/converter.md | 0 .../reference-version-4/mapping/document.md | 0 .../reference-version-4/mapping/edge.md | 0 .../reference-version-4/mapping/events.md | 0 .../reference-version-4/mapping/indexes.md | 4 +- .../reference-version-4/mapping/reference.md | 0 .../reference-version-4/mapping/relations.md | 0 .../repositories/_index.md | 0 .../repositories/queries/_index.md | 0 .../repositories/queries/derived-queries.md | 0 .../repositories/queries/named-queries.md | 0 .../repositories/queries/query-methods.md | 4 +- .../reference-version-4/template.md | 0 109 files changed, 114 insertions(+), 8497 deletions(-) delete mode 100644 site/content/arangodb/3.12/develop/drivers/java/_index.md delete mode 100644 site/content/arangodb/3.12/develop/drivers/javascript.md delete mode 100644 site/content/arangodb/3.12/develop/integrations/arangodb-datasource-for-apache-spark.md delete mode 100644 site/content/arangodb/3.12/develop/integrations/arangodb-tinkerpop-provider.md delete mode 100644 site/content/arangodb/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md delete mode 100644 site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md delete mode 100644 site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md delete mode 100644 site/content/arangodb/3.13/develop/drivers/_index.md delete mode 100644 site/content/arangodb/3.13/develop/drivers/go.md delete mode 100644 site/content/arangodb/3.13/develop/drivers/java/reference-version-7/_index.md delete mode 100644 site/content/arangodb/3.13/develop/drivers/java/reference-version-7/changes-in-version-7.md delete mode 100644 site/content/arangodb/3.13/develop/drivers/java/reference-version-7/driver-setup.md delete mode 100644 site/content/arangodb/3.13/develop/drivers/java/reference-version-7/serialization.md delete mode 100644 site/content/arangodb/3.13/develop/drivers/python.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/_index.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-boot-arangodb.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/_index.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/migration.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/_index.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md delete mode 100644 site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/template.md rename site/content/{arangodb/3.12/develop => ecosystem}/drivers/_index.md (92%) rename site/content/{arangodb/3.12/develop => ecosystem}/drivers/go.md (99%) rename site/content/{arangodb/3.13/develop => ecosystem}/drivers/java/_index.md (98%) rename site/content/{arangodb/3.12/develop => ecosystem}/drivers/java/reference-version-6/_index.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/drivers/java/reference-version-6/driver-setup.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/drivers/java/reference-version-6/serialization.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/drivers/java/reference-version-7/_index.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/drivers/java/reference-version-7/changes-in-version-7.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/drivers/java/reference-version-7/driver-setup.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/drivers/java/reference-version-7/serialization.md (100%) rename site/content/{arangodb/3.13/develop => ecosystem}/drivers/javascript.md (96%) rename site/content/{arangodb/3.12/develop => ecosystem}/drivers/python.md (99%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/_index.md (96%) rename site/content/{arangodb/3.13/develop => ecosystem}/integrations/arangodb-datasource-for-apache-spark.md (98%) rename site/content/{arangodb/3.13/develop => ecosystem}/integrations/arangodb-tinkerpop-provider.md (99%) rename site/content/{arangodb/3.13/develop => ecosystem}/integrations/kafka-connect-arangodb-sink-connector/_index.md (97%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/kafka-connect-arangodb-sink-connector/configuration.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-boot-arangodb.md (99%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/_index.md (98%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/migration.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/_index.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/mapping/document.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/mapping/events.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md (93%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md (97%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-3/template.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/_index.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md (100%) rename site/content/{arangodb/3.13/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md (92%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/mapping/document.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/mapping/events.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md (93%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md (100%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md (100%) rename site/content/{arangodb/3.13/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md (97%) rename site/content/{arangodb/3.12/develop => ecosystem}/integrations/spring-data-arangodb/reference-version-4/template.md (100%) diff --git a/site/content/amp/deployments/_index.md b/site/content/amp/deployments/_index.md index d8e67ac5ec..b331ed8163 100644 --- a/site/content/amp/deployments/_index.md +++ b/site/content/amp/deployments/_index.md @@ -273,7 +273,7 @@ attached to your role. Read more about [roles and permissions](../security-and-a ## How to connect a driver to your deployment -[ArangoDB drivers](../../arangodb/3.12/develop/drivers/_index.md) allow you to use your AMP +[ArangoDB drivers](../../ecosystem/drivers/) allow you to use your AMP deployment as a database system for your applications. Drivers act as interfaces between different programming languages and ArangoDB, which enable you to connect to and manipulate ArangoDB deployments from within compiled programs diff --git a/site/content/amp/security-and-access-control/x-509-certificates.md b/site/content/amp/security-and-access-control/x-509-certificates.md index 21e1e8493b..f17cf87e97 100644 --- a/site/content/amp/security-and-access-control/x-509-certificates.md +++ b/site/content/amp/security-and-access-control/x-509-certificates.md @@ -152,7 +152,7 @@ unique ID that is part of your AMP deployment endpoint URL. ## How to connect to your application -[ArangoDB drivers](../../arangodb/3.12/develop/drivers/_index.md), also called connectors, allow you to +[ArangoDB drivers](../../ecosystem/drivers/_index.md), also called connectors, allow you to easily connect AMP deployments to your application. 1. Navigate to **Deployments** and click the **View** button to show the diff --git a/site/content/arangodb/3.10/develop/javascript-api/_index.md b/site/content/arangodb/3.10/develop/javascript-api/_index.md index ac10a520f7..3ad9a70302 100644 --- a/site/content/arangodb/3.10/develop/javascript-api/_index.md +++ b/site/content/arangodb/3.10/develop/javascript-api/_index.md @@ -26,7 +26,7 @@ It communicates with the server via the HTTP API. {{< tip >}} The JavaScript API cannot be used in browsers, Node.js, or other JavaScript -environments. You can use the [arangojs driver](../drivers/nodejs.md) instead. +environments. You can use the [arangojs driver](../../develop/drivers/nodejs.md) instead. Note that it has a different interface. {{< /tip >}} diff --git a/site/content/arangodb/3.11/develop/drivers/_index.md b/site/content/arangodb/3.11/develop/drivers/_index.md index cba7ac5de0..6fc7ee3507 100644 --- a/site/content/arangodb/3.11/develop/drivers/_index.md +++ b/site/content/arangodb/3.11/develop/drivers/_index.md @@ -37,7 +37,7 @@ language. - [Tutorial](go.md#tutorial) - Repository: [github.com/arangodb/go-driver](https://github.com/arangodb/go-driver/tree/master/v2) -## Node.js driver +## JavaScript driver The [**ArangoJS driver**](javascript.md) lets you work with ArangoDB in Node.js, using the JavaScript scripting language. You can also use it in web browsers. diff --git a/site/content/arangodb/3.11/develop/integrations/arangodb-datasource-for-apache-spark.md b/site/content/arangodb/3.11/develop/integrations/arangodb-datasource-for-apache-spark.md index 2cbf5ac7ca..01f39ce044 100644 --- a/site/content/arangodb/3.11/develop/integrations/arangodb-datasource-for-apache-spark.md +++ b/site/content/arangodb/3.11/develop/integrations/arangodb-datasource-for-apache-spark.md @@ -25,8 +25,6 @@ This library works with all the non-EOLed [ArangoDB versions](https://www.arango There are several variants of this library, each one compatible with different Spark and Scala versions: -- `com.arangodb:arangodb-spark-datasource-3.3_2.12` (Spark 3.3, Scala 2.12) -- `com.arangodb:arangodb-spark-datasource-3.3_2.13` (Spark 3.3, Scala 2.13) - `com.arangodb:arangodb-spark-datasource-3.4_2.12` (Spark 3.4, Scala 2.12) (compatible with Spark `3.4.2+`) - `com.arangodb:arangodb-spark-datasource-3.4_2.13` (Spark 3.4, Scala 2.13) (compatible with Spark `3.4.2+`) - `com.arangodb:arangodb-spark-datasource-3.5_2.12` (Spark 3.5, Scala 2.12) @@ -39,6 +37,8 @@ The following variants are no longer supported: - `com.arangodb:arangodb-spark-datasource-3.1_2.12` (Spark 3.1, Scala 2.12) - `com.arangodb:arangodb-spark-datasource-3.2_2.12` (Spark 3.2, Scala 2.12) - `com.arangodb:arangodb-spark-datasource-3.2_2.13` (Spark 3.2, Scala 2.13) +- `com.arangodb:arangodb-spark-datasource-3.3_2.12` (Spark 3.3, Scala 2.12) +- `com.arangodb:arangodb-spark-datasource-3.3_2.13` (Spark 3.3, Scala 2.13) Since version `1.7.0`, due to [breaking changes](https://github.com/apache/spark/commit/ad29290a02fb94a958fd21e301100338c9f5b82a#diff-b25c8acff88c1b4850c6642e80845aac4fb882c664795c3b0aa058e37ed732a0L42-R52) in Spark `3.4.2`, `arangodb-spark-datasource-3.4` is not compatible anymore with Spark versions `3.4.0` and `3.4.1`. diff --git a/site/content/arangodb/3.11/develop/javascript-api/_index.md b/site/content/arangodb/3.11/develop/javascript-api/_index.md index fb7146ff1b..d797cb71f1 100644 --- a/site/content/arangodb/3.11/develop/javascript-api/_index.md +++ b/site/content/arangodb/3.11/develop/javascript-api/_index.md @@ -26,7 +26,7 @@ It communicates with the server via the HTTP API. {{< tip >}} The JavaScript API cannot be used in browsers, Node.js, or other JavaScript -environments. You can use the [arangojs driver](../drivers/javascript.md) instead. +environments. You can use the [arangojs driver](../../develop/drivers/javascript.md) instead. Note that it has a different interface. {{< /tip >}} diff --git a/site/content/arangodb/3.12/aql/functions/document-object.md b/site/content/arangodb/3.12/aql/functions/document-object.md index a7272366aa..70496ccca7 100644 --- a/site/content/arangodb/3.12/aql/functions/document-object.md +++ b/site/content/arangodb/3.12/aql/functions/document-object.md @@ -477,7 +477,7 @@ Only [`HAS()`](#has) can differentiate between an attribute being absent and hav a stored `null` value. An empty object `{}` will match all documents. Be careful not to ask for all -documents accidentally. For example, the [arangojs](../../develop/drivers/javascript.md) driver +documents accidentally. For example, the [arangojs](../../../../ecosystem/drivers/javascript.md) driver skips attributes with a value of `undefined`, turning `{attr: undefined}` into `{}`. {{< info >}} diff --git a/site/content/arangodb/3.12/aql/how-to-invoke-aql/_index.md b/site/content/arangodb/3.12/aql/how-to-invoke-aql/_index.md index b44a6ed75a..1276ab8755 100644 --- a/site/content/arangodb/3.12/aql/how-to-invoke-aql/_index.md +++ b/site/content/arangodb/3.12/aql/how-to-invoke-aql/_index.md @@ -11,8 +11,8 @@ You can execute AQL queries using different interfaces: - The web interface - The `db` object of the JavaScript API (either in arangosh or in a Foxx service) - The raw HTTP REST API -- Through a [driver](../../develop/drivers/_index.md) or - [integration](../../develop/integrations/_index.md) as an abstraction over the +- Through a [driver](../../../../ecosystem/drivers/_index.md) or + [integration](../../../../ecosystem/integrations/_index.md) as an abstraction over the HTTP REST API There are always calls to the server's API under the hood, but the web interface, diff --git a/site/content/arangodb/3.12/components/tools/arango-datasets.md b/site/content/arangodb/3.12/components/tools/arango-datasets.md index a24903550f..10a4626f48 100644 --- a/site/content/arangodb/3.12/components/tools/arango-datasets.md +++ b/site/content/arangodb/3.12/components/tools/arango-datasets.md @@ -27,7 +27,7 @@ You can find the source code repository of the module on GitHub: Once you have installed the `arango-datasets` package, you can use it to download and import datasets into your deployment with `arango_datasets.Datasets`. -The `Datasets` constructor requires a valid [python-arango](../../develop/drivers/python.md) +The `Datasets` constructor requires a valid [python-arango](../../../../ecosystem/drivers/python.md) database object as input. It defines the target deployment, database, and credentials to load a dataset. diff --git a/site/content/arangodb/3.12/develop/drivers/java/_index.md b/site/content/arangodb/3.12/develop/drivers/java/_index.md deleted file mode 100644 index dc7d37d9fd..0000000000 --- a/site/content/arangodb/3.12/develop/drivers/java/_index.md +++ /dev/null @@ -1,480 +0,0 @@ ---- -title: ArangoDB Java driver -menuTitle: Java driver -weight: 10 -description: '' ---- -The official ArangoDB Java Driver. - -- Repository: <https://github.com/arangodb/arangodb-java-driver> -- [Code examples](https://github.com/arangodb/arangodb-java-driver/tree/main/test-non-functional/src/test/java/example) -- [Reference](reference-version-7/_index.md) (driver setup, serialization, changes in version 7) -- [JavaDoc](https://www.javadoc.io/doc/com.arangodb/arangodb-java-driver/latest/index.html) (generated reference documentation) -- [ChangeLog](https://github.com/arangodb/arangodb-java-driver/blob/main/ChangeLog.md) - -## Supported versions - -Version 7 is the latest supported and actively developed release. - -The driver is compatible with all supported stable versions of ArangoDB server, see -[Product Support End-of-life Announcements](https://arangodb.com/subscriptions/end-of-life-notice/). - -The driver is compatible with JDK 8 and higher versions. - -{{< warning >}} -Version 6 reached End of Life (EOL) and is not actively developed anymore. -Upgrading to version 7 is recommended. - -The API changes between version 6 and 7 are documented in -[Changes in version 7](reference-version-7/changes-in-version-7.md). -{{< /warning >}} - -## Project configuration - -To use the ArangoDB Java driver, you need to import `arangodb-java-driver` as a -library into your project. This is described below for the popular Java build -automation systems Maven and Gradle. - -### Maven - -To add the driver to your project with Maven, add the following code to your -`pom.xml`: - -```xml -<dependencies> - <dependency> - <groupId>com.arangodb</groupId> - <artifactId>arangodb-java-driver</artifactId> - <version>7.x.x</version> - </dependency> -</dependencies> -``` - -Substitute `7.x.x` with the latest driver version. - -### Gradle - -To add the driver to your project with Gradle, add the following code to your -`build.gradle` (substitute `7.x.x` with the latest driver version): - -```groovy -repositories { - mavenCentral() -} - -dependencies { - implementation 'com.arangodb:arangodb-java-driver:7.x.x' -} -``` - -## Tutorial - -### Connect to ArangoDB - -Let's configure and open a connection to ArangoDB. The default connection is to -`127.0.0.1:8529`. Change the connection details to point to your specific instance. - -```java -ArangoDB arangoDB = new ArangoDB.Builder() - .host("localhost", 8529) - .user("root") - .password("") - .build(); -``` - -For more connections options and details, see -[Driver setup](reference-version-7/driver-setup.md). - -### Create a database - -Let's create a new database: - -```java -ArangoDatabase db = arangoDB.db("mydb"); -System.out.println("Creating database..."); -db.create(); -``` - -### Create a collection - -Now let's create our first collection: - -```java -ArangoCollection collection = db.collection("firstCollection"); -System.out.println("Creating collection..."); -collection.create(); -``` - -### Create a document - -Let's create a document in the collection. Any object can be added as a document -to the database and be retrieved from the database as an object. - -This example uses the `BaseDocument` class, provided with the driver. The -attributes of the document are stored in a map as `key<String>`/`value<Object>` pair: - -```java -String key = "myKey"; -BaseDocument doc = new BaseDocument(key); -doc.addAttribute("a", "Foo"); -doc.addAttribute("b", 42); -System.out.println("Inserting document..."); -collection.insertDocument(doc); -``` - -Some details you should know about the code: - -- The document key is passed to the `BaseDocument` constructor -- The `addAttribute()` method puts a new key/value pair into the document -- Each attribute is stored as a single key value pair in the document root - -### Read a document - -Read the created document: - -```java -System.out.println("Reading document..."); -BaseDocument readDocument = collection.getDocument(key, BaseDocument.class); -System.out.println("Key: " + readDocument.getKey()); -System.out.println("Attribute a: " + readDocument.getAttribute("a")); -System.out.println("Attribute b: " + readDocument.getAttribute("b")); -``` - -After executing this program, the console output should be: - -```text -Key: myKey -Attribute a: Foo -Attribute b: 42 -``` - -Some details you should know about the code: - -- The `getDocument()` method reads the stored document data and deserializes it - into the given class (`BaseDocument`) - -### Create a document from Jackson JsonNode - -You can also create a document from a Jackson -[JsonNode](https://fasterxml.github.io/jackson-databind/javadoc/2.13/com/fasterxml/jackson/databind/JsonNode.html) -object: - -```java -System.out.println("Creating a document from Jackson JsonNode..."); -String keyJackson = "myJacksonKey"; -JsonNode jsonNode = JsonNodeFactory.instance.objectNode() - .put("_key", keyJackson) - .put("a", "Bar") - .put("b", 53); -System.out.println("Inserting document from Jackson JsonNode..."); -collection.insertDocument(jsonNode); -``` - -### Read a document as Jackson JsonNode - -You can also read a document as a Jackson -[JsonNode](https://fasterxml.github.io/jackson-databind/javadoc/2.13/com/fasterxml/jackson/databind/JsonNode.html): - -```java -System.out.println("Reading document as Jackson JsonNode..."); -JsonNode readJsonNode = collection.getDocument(keyJackson, JsonNode.class); -System.out.println("Key: " + readJsonNode.get("_key").textValue()); -System.out.println("Attribute a: " + readJsonNode.get("a").textValue()); -System.out.println("Attribute b: " + readJsonNode.get("b").intValue()); -``` - -After executing this program, the console output should be: - -```text -Key: myKey -Attribute a: Bar -Attribute b: 53 -``` - -Some details you should know about the code: - -- The `getDocument()` method returns the stored document as instance of - `com.fasterxml.jackson.databind.JsonNode`. - -### Create a document from JSON String - -You can also create a document from raw JSON string: - -```java -System.out.println("Creating a document from JSON String..."); -String keyJson = "myJsonKey"; -RawJson json = RawJson.of("{\"_key\":\"" + keyJson + "\",\"a\":\"Baz\",\"b\":64}"); -System.out.println("Inserting document from JSON String..."); -collection.insertDocument(json); -``` - -### Read a document as JSON String - -You can also read a document as raw JSON string: - -```java -System.out.println("Reading document as JSON String..."); -RawJson readJson = collection.getDocument(keyJson, RawJson.class); -System.out.println(readJson.get()); -``` - -After executing this program, the console output should be: - -```text -{"_key":"myJsonKey","_id":"firstCollection/myJsonKey","_rev":"_e0nEe2y---","a":"Baz","b":64} -``` - -### Update a document - -Let's update the document: - -```java -doc.addAttribute("c", "Bar"); -System.out.println("Updating document ..."); -collection.updateDocument(key, doc); -``` - -### Read the document again - -Let's read the document again: - -```java -System.out.println("Reading updated document ..."); -BaseDocument updatedDocument = collection.getDocument(key, BaseDocument.class); -System.out.println("Key: " + updatedDocument.getKey()); -System.out.println("Attribute a: " + updatedDocument.getAttribute("a")); -System.out.println("Attribute b: " + updatedDocument.getAttribute("b")); -System.out.println("Attribute c: " + updatedDocument.getAttribute("c")); -``` - -After executing this program, the console output should look like this: - -```text -Key: myKey -Attribute a: Foo -Attribute b: 42 -Attribute c: Bar -``` - -### Delete a document - -Let's delete a document: - -```java -System.out.println("Deleting document ..."); -collection.deleteDocument(key); -``` - -### Execute AQL queries - -First, you need to create some documents with the name `Homer` in the -collection called `firstCollection`: - -```java -for (int i = 0; i < 10; i++) { - BaseDocument value = new BaseDocument(String.valueOf(i)); - value.addAttribute("name", "Homer"); - collection.insertDocument(value); -} -``` - -Get all documents with the name `Homer` from the collection using an AQL query -and iterate over the results: - -```java -String query = "FOR t IN firstCollection FILTER t.name == @name RETURN t"; -Map<String, Object> bindVars = Collections.singletonMap("name", "Homer"); -System.out.println("Executing read query ..."); -ArangoCursor<BaseDocument> cursor = db.query(query, BaseDocument.class, bindVars); -cursor.forEach(aDocument -> System.out.println("Key: " + aDocument.getKey())); -``` - -After executing this program, the console output should look something like this: - -```text -Key: 1 -Key: 0 -Key: 5 -Key: 3 -Key: 4 -Key: 9 -Key: 2 -Key: 7 -Key: 8 -Key: 6 -``` - -Some details you should know about the code: - -- The AQL query uses the placeholder `@name` that has to be bound to a value -- The `query()` method executes the defined query and returns an `ArangoCursor` - with the given class (here: `BaseDocument`) -- The order of is not guaranteed - -### Delete documents with AQL - -Delete previously created documents: - -```java -String query = "FOR t IN firstCollection FILTER t.name == @name " - + "REMOVE t IN firstCollection LET removed = OLD RETURN removed"; -Map<String, Object> bindVars = Collections.singletonMap("name", "Homer"); -System.out.println("Executing delete query ..."); -ArangoCursor<BaseDocument> cursor = db.query(query, BaseDocument.class, bindVars); -cursor.forEach(aDocument -> System.out.println("Removed document " + aDocument.getKey())); -``` - -After executing this program, the console output should look something like this: - -```text -Removed document: 1 -Removed document: 0 -Removed document: 5 -Removed document: 3 -Removed document: 4 -Removed document: 9 -Removed document: 2 -Removed document: 7 -Removed document: 8 -Removed document: 6 -``` - -### Learn more - -- Have a look at the [AQL documentation](../../../aql/) to lear about the - query language -- See [Serialization](reference-version-7/serialization.md) for details about - user-data serde -- For the full reference documentation, see - [JavaDoc](https://www.javadoc.io/doc/com.arangodb/arangodb-java-driver/latest/index.html) - -## GraalVM Native Image - -The driver supports GraalVM Native Image compilation. -To compile with `--link-at-build-time` when `http-protocol` module is present in -the classpath, additional substitutions are required for transitive dependencies -`Netty` and `Vert.x`. See this -[example](https://github.com/arangodb/arangodb-java-driver/tree/main/test-functional/src/test-default/java/graal) -for reference. Such substitutions are not required when compiling the shaded driver. - -### Framework compatibility - -The driver can be used in the following frameworks that support -GraalVM Native Image generation: - -- [Quarkus](https://quarkus.io), see [arango-quarkus-native-example](https://github.com/arangodb-helper/arango-quarkus-native-example) -- [Helidon](https://helidon.io), see [arango-helidon-native-example](https://github.com/arangodb-helper/arango-helidon-native-example) -- [Micronaut](https://micronaut.io), see [arango-micronaut-native-example](https://github.com/arangodb-helper/arango-micronaut-native-example) - -## ArangoDB Java Driver Shaded - -A shaded variant of the driver is also published with -Maven coordinates: `com.arangodb:arangodb-java-driver-shaded`. - -It bundles and relocates the following packages: -- `com.fasterxml.jackson` -- `com.arangodb.jackson.dataformat.velocypack` -- `io.vertx` -- `io.netty` - -Note that the **internal serde** internally uses Jackson classes from -`com.fasterxml.jackson` that are relocated to `com.arangodb.shaded.fasterxml.jackson`. -Therefore, the **internal serde** of the shaded driver is not compatible with -Jackson annotations and modules from package`com.fasterxml.jackson`, but only -with their relocated variants. In case the **internal serde** is used as -**user-data serde**, the annotations from package `com.arangodb.serde` can be -used to annotate fields, parameters, getters and setters for mapping values -representing ArangoDB documents metadata (`_id`, `_key`, `_rev`, `_from`, `_to`): -- `@InternalId` -- `@InternalKey` -- `@InternalRev` -- `@InternalFrom` -- `@InternalTo` - -These annotations are compatible with relocated Jackson classes. -Note that the **internal serde** is not part of the public API and could change -in future releases without notice, thus breaking client applications relying on -it to serialize or deserialize user-data. It is therefore recommended also in -this case either: -- using the default user-data serde `JacksonSerde` - (from packages `com.arangodb:jackson-serde-json` or `com.arangodb:jackson-serde-vpack`), or -- providing a custom user-data serde implementation via `ArangoDB.Builder.serde(ArangoSerde)`. - -## Support for extended naming constraints - -The driver supports ArangoDB's **extended** naming constraints/convention, -allowing most UTF-8 characters in the names of: -- Databases -- Collections -- Views -- Indexes - -These names must be NFC-normalized, otherwise the server returns an error. -To normalize a string, use the function -`com.arangodb.util.UnicodeUtils.normalize(String): String`: - -```java -String normalized = UnicodeUtils.normalize("𝔸𝕣𝕒𝕟𝕘𝕠𝔻𝔹"); -``` - -To check if a string is already normalized, use the -function `com.arangodb.util.UnicodeUtils.isNormalized(String): boolean`: - -```java -boolean isNormalized = UnicodeUtils.isNormalized("𝔸𝕣𝕒𝕟𝕘𝕠𝔻𝔹"); -``` - -## Async API - -The asynchronous API is accessible via `ArangoDB#async()`, for example: - -```java -ArangoDB adb = new ArangoDB.Builder() - // ... - .build(); -ArangoDBAsync adbAsync = adb.async(); -CompletableFuture<ArangoDBVersion> version = adbAsync.getVersion(); -// ... -``` - -Under the hood, both synchronous and asynchronous API use the same internal -communication layer, which has been reworked and re-implemented in an -asynchronous way. The synchronous API blocks and waits for the result, while the -asynchronous one returns a `CompletableFuture<>` representing the pending -operation being performed. -Each asynchronous API method is equivalent to the corresponding synchronous -variant, except for the Cursor API. - -### Async Cursor API - -The Cursor API (`ArangoCursor` and `ArangoCursorAsync`) is intrinsically different, -because the synchronous Cursor API is based on Java's `java.util.Iterator`, which -is an interface only suitable for synchronous scenarios. -On the other side, the asynchronous Cursor API provides a method -`com.arangodb.ArangoCursorAsync#nextBatch()`, which returns a -`CompletableFuture<ArangoCursorAsync<T>>` and can be used to consume the next -batch of the cursor, for example: - -```java -CompletableFuture<ArangoCursorAsync<Integer>> future1 = adbAsync.db() - .query("FOR i IN i..10000", Integer.class); -CompletableFuture<ArangoCursorAsync<Integer>> future2 = future1 - .thenCompose(c -> { - List<Integer> batch = c.getResult(); - // ... - // consume batch - // ... - return c.nextBatch(); - }); -// ... -``` - -## Data Definition Classes - -Classes used to exchange data definitions, in particular classes in the packages -`com.arangodb.entity.**` and `com.arangodb.model.**`, are meant to be serialized -and deserialized internally by the driver. - -The behavior to serialize and deserialize these classes is considered an internal -implementation detail, and as such, it might change without prior notice. -The API with regard to the public members of these classes is kept compatible. diff --git a/site/content/arangodb/3.12/develop/drivers/javascript.md b/site/content/arangodb/3.12/develop/drivers/javascript.md deleted file mode 100644 index 5161b596b2..0000000000 --- a/site/content/arangodb/3.12/develop/drivers/javascript.md +++ /dev/null @@ -1,224 +0,0 @@ ---- -title: ArangoDB JavaScript driver -menuTitle: JavaScript driver -weight: 25 -description: >- - arangojs is the JavaScript driver to access ArangoDB from outside the - database system, primarily with Node.js -aliases: - - nodejs # 3.12 -> 3.12 ---- -The official ArangoDB low-level JavaScript client. - -- Repository: <https://github.com/arangodb/arangojs> -- Reference: <http://arangodb.github.io/arangojs/> -- [Changelog](https://github.com/arangodb/arangojs/blob/main/CHANGELOG.md) - -{{< info >}} -If you are looking for the ArangoDB JavaScript API in -[Foxx](https://www.arangodb.com/community-server/foxx/) or the `arangosh` -interactive shell, please refer to the documentation about the -[`@arangodb` module](../javascript-api/@arangodb/_index.md) instead. - -The JavaScript driver is **only** meant to be used when accessing ArangoDB from -**outside** the database. -{{< /info >}} - -## Compatibility - -The arangojs driver is compatible with the latest stable version of ArangoDB -available at the time of the driver release and remains compatible with the two -most recent Node.js LTS versions in accordance with the official -[Node.js long-term support schedule](https://github.com/nodejs/LTS). -Versions of ArangoDB that have reached their [end of life](https://arangodb.com/subscriptions/end-of-life-notice/) -by the time of a driver release are explicitly not supported. - -The [_arangoVersion_ option](https://arangodb.github.io/arangojs/latest/types/configuration.ConfigOptions.html) -can be used to tell arangojs to target a specific -ArangoDB version. Depending on the version this will enable or disable certain -methods and change behavior to maintain compatibility with the given version. -The oldest version of ArangoDB supported by arangojs when using this option -is 2.8.0 (using `arangoVersion: 20800`). - -## Versions - -The version number of this driver does not indicate supported ArangoDB versions! - -This driver uses semantic versioning: - -- A change in the bugfix version (e.g. X.Y.0 -> X.Y.1) indicates internal - changes and should always be safe to upgrade. -- A change in the minor version (e.g. X.1.Z -> X.2.0) indicates additions and - backwards-compatible changes that should not affect your code. -- A change in the major version (e.g. 1.Y.Z -> 2.0.0) indicates _breaking_ - changes that require changes in your code to upgrade. - -If you are getting weird errors or functions seem to be missing, make sure you -are using the latest version of the driver and following documentation written -for a compatible version. If you are following a tutorial written for an older -version of arangojs, you can install that version using the `<name>@<version>` -syntax: - -```sh -# for version 9.x.x -yarn add arangojs@9 -# - or - -npm install --save arangojs@9 -``` - -You can find the documentation for each version by clicking on the corresponding -date on the left in -[the list of version tags](https://github.com/arangodb/arangojs/tags). - -## Install - -{{< tabs "js-install" >}} - -{{< tab "Yarn" >}} -```sh -yarn add arangojs -``` -{{< /tab >}} - -{{< tab "NPM" >}} -```sh -npm install --save arangojs -``` -{{< /tab >}} - -{{< tab "From source" >}} -```bash -git clone https://github.com/arangodb/arangojs.git -cd arangojs -npm install -npm run build -``` - -Building natively on Windows is not supported but you can use a virtual Linux -or Linux container. -{{< /tab >}} - -{{< tab "For browsers" >}} -When using modern JavaScript tooling with a bundler and compiler (e.g. Babel), -arangojs can be installed using NPM or Yarn like any other dependency. - -You can also use [jsDelivr CDN](https://www.jsdelivr.com/) during development: - -```js -<script type="importmap"> - { - "imports": { - "arangojs": "https://cdn.jsdelivr.net/npm/arangojs@10.1.0/esm/index.js?+esm" - } - } -</script> -<script type="module"> - import { Database } from "arangojs"; - const db = new Database(); - // ... -</script> -``` -{{< /tab >}} - -{{< /tabs >}} - -## Basic usage example - -Modern JavaScript/TypeScript with async/await and ES Modules: - -```js -import { Database, aql } from "arangojs"; - -const db = new Database(); -const Pokemons = db.collection("my-pokemons"); - -async function main() { - try { - const pokemons = await db.query(aql` - FOR pokemon IN ${Pokemons} - FILTER pokemon.type == "fire" - RETURN pokemon - `); - console.log("My pokemans, let me show you them:"); - for await (const pokemon of pokemons) { - console.log(pokemon.name); - } - } catch (err) { - console.error(err.message); - } -} - -main(); -``` - -Using a different database: - -```js -const db = new Database({ - url: "http://127.0.0.1:8529", - databaseName: "pancakes", - auth: { username: "root", password: "hunter2" }, -}); - -// The credentials can be swapped at any time -db.useBasicAuth("admin", "maplesyrup"); -``` - -Old-school JavaScript with promises and CommonJS: - -```js -var arangojs = require("arangojs"); -var Database = arangojs.Database; - -var db = new Database(); -var pokemons = db.collection("pokemons"); - -db.query({ - query: "FOR p IN @@c FILTER p.type == 'fire' RETURN p", - bindVars: { "@c": "pokemons" }, -}) - .then(function (cursor) { - console.log("My pokemons, let me show you them:"); - return cursor.forEach(function (pokemon) { - console.log(pokemon.name); - }); - }) - .catch(function (err) { - console.error(err.message); - }); -``` - -For AQL, please check out the -[aql template tag](https://arangodb.github.io/arangojs/latest/functions/aql.aql.html) -for writing parametrized AQL queries without making your code vulnerable to -injection attacks. - -## Error responses - -If the server returns an ArangoDB error response, arangojs throws an `ArangoError` -with an `errorNum` property indicating the -[ArangoDB error code](../error-codes.md) and expose the response body -as the response property of the error object. - -For all other errors during the request/response cycle arangojs throws a -`NetworkError` or a more specific subclass thereof and expose the originating -request object as the `request` property of the error object. - -If the server responded with a non-2xx status code, this `NetworkError` is an -`HttpError` with a code property indicating the HTTP status code of the response -and a response property containing the `response` object itself. - -If the error is caused by an exception, the originating exception is available -as the `cause` property of the error object thrown by arangojs. -For network errors, this is often a `TypeError`. - -**Example** - -```js -try { - const info = await db.createDatabase("mydb"); - // database created -} catch (err) { - console.error(err.stack); -} -``` diff --git a/site/content/arangodb/3.12/develop/http-api/_index.md b/site/content/arangodb/3.12/develop/http-api/_index.md index e42c7b49f3..e52e55ee54 100644 --- a/site/content/arangodb/3.12/develop/http-api/_index.md +++ b/site/content/arangodb/3.12/develop/http-api/_index.md @@ -13,7 +13,7 @@ world wide web. All interactions with a server are ultimately carried out via this HTTP API. You can use the API by sending HTTP requests to the server directly, but the -more common way of communicating with the server is via a [database driver](../drivers/_index.md). +more common way of communicating with the server is via a [database driver](../../../../ecosystem/drivers/_index.md). A driver abstracts the complexity of the API away by providing a simple interface for your programming language or environment and handling things like authentication, connection pooling, asynchronous requests, and multi-part replies diff --git a/site/content/arangodb/3.12/develop/integrations/arangodb-datasource-for-apache-spark.md b/site/content/arangodb/3.12/develop/integrations/arangodb-datasource-for-apache-spark.md deleted file mode 100644 index aeaf9d379d..0000000000 --- a/site/content/arangodb/3.12/develop/integrations/arangodb-datasource-for-apache-spark.md +++ /dev/null @@ -1,422 +0,0 @@ ---- -title: ArangoDB Datasource for Apache Spark -menuTitle: Datasource for Apache Spark -weight: 10 -description: >- - ArangoDB Datasource for Apache Spark allows batch reading and writing Spark DataFrame data -aliases: -- arangodb-spark-connector -- arangodb-spark-connector/getting-started -- arangodb-spark-connector/reference -- arangodb-spark-connector/reference/java -- arangodb-spark-connector/reference/scala ---- -ArangoDB Datasource for Apache Spark allows batch reading and writing Spark DataFrame data from and to ArangoDB, by implementing the Spark Data Source V2 API. - -Reading tasks are parallelized according to the number of shards of the related ArangoDB collection, and the writing ones - depending on the source DataFrame partitions. The network traffic is load balanced across the available DB Coordinators. - -Filter predicates and column selections are pushed down to the DB by dynamically generating AQL queries, which will fetch only the strictly required data, thus saving network and computational resources both on the Spark and the DB side. - -The connector is usable from all the Spark supported client languages: Scala, Python, Java, and R. - -This library works with all the non-EOLed [ArangoDB versions](https://www.arangodb.com/subscriptions/end-of-life-notice/). - -## Supported versions - -There are several variants of this library, each one compatible with different Spark and Scala versions: - -- `com.arangodb:arangodb-spark-datasource-3.3_2.12` (Spark 3.3, Scala 2.12) -- `com.arangodb:arangodb-spark-datasource-3.3_2.13` (Spark 3.3, Scala 2.13) -- `com.arangodb:arangodb-spark-datasource-3.4_2.12` (Spark 3.4, Scala 2.12) (compatible with Spark `3.4.2+`) -- `com.arangodb:arangodb-spark-datasource-3.4_2.13` (Spark 3.4, Scala 2.13) (compatible with Spark `3.4.2+`) -- `com.arangodb:arangodb-spark-datasource-3.5_2.12` (Spark 3.5, Scala 2.12) -- `com.arangodb:arangodb-spark-datasource-3.5_2.13` (Spark 3.5, Scala 2.13) - -The following variants are no longer supported: - -- `com.arangodb:arangodb-spark-datasource-2.4_2.11` (Spark 2.4, Scala 2.11) -- `com.arangodb:arangodb-spark-datasource-2.4_2.12` (Spark 2.4, Scala 2.12) -- `com.arangodb:arangodb-spark-datasource-3.1_2.12` (Spark 3.1, Scala 2.12) -- `com.arangodb:arangodb-spark-datasource-3.2_2.12` (Spark 3.2, Scala 2.12) -- `com.arangodb:arangodb-spark-datasource-3.2_2.13` (Spark 3.2, Scala 2.13) - -Since version `1.7.0`, due to [breaking changes](https://github.com/apache/spark/commit/ad29290a02fb94a958fd21e301100338c9f5b82a#diff-b25c8acff88c1b4850c6642e80845aac4fb882c664795c3b0aa058e37ed732a0L42-R52) -in Spark `3.4.2`, `arangodb-spark-datasource-3.4` is not compatible anymore with Spark versions `3.4.0` and `3.4.1`. - -In the following sections the `${sparkVersion}` and `${scalaVersion}` placeholders refer to the Spark and Scala versions. - -## Setup - -To import ArangoDB Datasource for Apache Spark in a Maven project: - -```xml - <dependencies> - <dependency> - <groupId>com.arangodb</groupId> - <artifactId>arangodb-spark-datasource-${sparkVersion}_${scalaVersion}</artifactId> - <version>x.y.z</version> - </dependency> - </dependencies> -``` - -Substitute `x.y.z` with the latest available version that is compatible. - -To use in an external Spark cluster, submit your application with the following parameter: - -```sh ---packages="com.arangodb:arangodb-spark-datasource-${sparkVersion}_${scalaVersion}:x.y.z" -``` - -## General Configuration - -- `user`: db user, `root` by default -- `password`: db password -- `endpoints`: list of Coordinators, e.g. `c1:8529,c2:8529` (required) -- `acquireHostList`: acquire the list of all known hosts in the cluster (`true` or `false`), `false` by default -- `protocol`: communication protocol (`vst`, `http`, or `http2`), `http2` by default -- `contentType`: content type for driver communication (`json` or `vpack`), `json` by default -- `timeout`: driver connect and request timeout in ms, `300000` by default -- `ssl.enabled`: ssl secured driver connection (`true` or `false`), `false` by default -- `ssl.verifyHost`: whether TLS hostname verification is enabled, `true` by default -- `ssl.cert.value`: Base64 encoded certificate -- `ssl.cert.type`: certificate type, `X.509` by default -- `ssl.cert.alias`: certificate alias name, `arangodb` by default -- `ssl.algorithm`: trust manager algorithm, `SunX509` by default -- `ssl.keystore.type`: keystore type, `jks` by default -- `ssl.protocol`: SSLContext protocol, `TLS` by default -- `ssl.trustStore.path`: trust store path -- `ssl.trustStore.password`: trust store password - -### SSL - -To use TLS-secured connections to ArangoDB, set `ssl.enabled` to `true` and -configure the certificate to use. This can be achieved in one of the following ways: - -- Provide the Base64-encoded certificate as the `ssl.cert.value` configuration entry: - - ```scala - val spark: SparkSession = SparkSession.builder() - // ... - .config("ssl.enabled", "true") - .config("ssl.cert.value", "<Base64-encoded certificate>") - .getOrCreate() - ``` - -- Set the trust store to use in the `ssl.trustStore.path` configuration entry and - optionally set `ssl.trustStore.password`: - - ```scala - val spark: SparkSession = SparkSession.builder() - // ... - .config("ssl.enabled", "true") - .config("ssl.trustStore.path", "<trustStore path>") - .config("ssl.trustStore.password", "<trustStore password>") - .getOrCreate() - ``` - -- Start the Spark driver and workers with a properly configured trust store: - - ```scala - val spark: SparkSession = SparkSession.builder() - // ... - .config("ssl.enabled", "true") - .getOrCreate() - ``` - - Set the following in the Spark configuration file: - - ```properties - spark.executor.extraJavaOptions=-Djavax.net.ssl.trustStore=<trustStore path> -Djavax.net.ssl.trustStorePassword=<trustStore password> - spark.driver.extraJavaOptions=-Djavax.net.ssl.trustStore=<trustStore path> -Djavax.net.ssl.trustStorePassword=<trustStore password> - ``` - - Alternatively, you can set this in the command-line when submitting the Spark job: - - ```sh - ./bin/spark-submit \ - --conf "spark.driver.extraJavaOptions=-Djavax.net.ssl.trustStore=<trustStore path> -Djavax.net.ssl.trustStorePassword=<trustStore password>" \ - --conf "spark.executor.extraJavaOptions=-Djavax.net.ssl.trustStore=<trustStore path> -Djavax.net.ssl.trustStorePassword=<trustStore password>" \ - ... - ``` - -### Supported deployment topologies - -The connector can work with a single server and cluster deployments of ArangoDB. - -## Batch Read - -The connector implements support for batch reading from an ArangoDB collection. - -```scala -val df: DataFrame = spark.read - .format("com.arangodb.spark") - .options(options) // Map[String, String] - .schema(schema) // StructType - .load() -``` - -The connector can read data from: -- a collection -- an AQL cursor (query specified by the user) - -When reading data from a **collection**, the reading job is split into many Spark tasks, one for each shard in the ArangoDB source collection. The resulting Spark DataFrame has the same number of partitions as the number of shards in the ArangoDB collection, each one containing data from the respective collection shard. The reading tasks consist of AQL queries that are load balanced across all the available ArangoDB Coordinators. Each query is related to only one shard, therefore it will be executed locally in the DB-Server holding the related shard. - -When reading data from an **AQL cursor**, the reading job cannot be partitioned or parallelized, so it will be less scalable. This mode can be used for reading data coming from different tables, i.e. resulting from an AQL traversal query. - -**Example** - -```scala -val spark: SparkSession = SparkSession.builder() - .appName("ArangoDBSparkDemo") - .master("local[*]") - .config("spark.driver.host", "127.0.0.1") - .getOrCreate() - -val df: DataFrame = spark.read - .format("com.arangodb.spark") - .options(Map( - "password" -> "test", - "endpoints" -> "c1:8529,c2:8529,c3:8529", - "table" -> "users" - )) - .schema(new StructType( - Array( - StructField("likes", ArrayType(StringType, containsNull = false)), - StructField("birthday", DateType, nullable = true), - StructField("gender", StringType, nullable = false), - StructField("name", StructType( - Array( - StructField("first", StringType, nullable = true), - StructField("last", StringType, nullable = false) - ) - ), nullable = true) - ) - )) - .load() - -usersDF.filter(col("birthday") === "1982-12-15").show() -``` - -### Read Configuration - -- `database`: database name, `_system` by default -- `table`: datasource ArangoDB collection name, ignored if `query` is specified. Either `table` or `query` is required. -- `query`: custom AQL read query. If set, `table` will be ignored. Either `table` or `query` is required. -- `batchSize`: reading batch size, `10000` by default -- `sampleSize`: sample size prefetched for schema inference, only used if read schema is not provided, `1000` by default -- `fillBlockCache`: specifies whether the query should store the data it reads in the RocksDB block cache (`true` or `false`), `false` by default -- `stream`: specifies whether the query should be executed lazily, `true` by default -- `ttl`: cursor time to live in seconds, `30` by default -- `mode`: allows setting a mode for dealing with corrupt records during parsing: - - `PERMISSIVE` : win case of a corrupted record, the malformed string is put into a field configured by - `columnNameOfCorruptRecord`, and sets malformed fields to null. To keep corrupt records, a user can set a string - type field named `columnNameOfCorruptRecord` in a user-defined schema. If a schema does not have the field, it drops - corrupt records during parsing. When inferring a schema, it implicitly adds the `columnNameOfCorruptRecord` field in - an output schema - - `DROPMALFORMED`: ignores the whole corrupted records - - `FAILFAST`: throws an exception in case of corrupted records -- `columnNameOfCorruptRecord`: allows renaming the new field having malformed string created by the `PERMISSIVE` mode - -### Predicate and Projection Pushdown - -The connector can convert some Spark SQL filter predicates into AQL predicates and push their execution down to the data source. In this way, ArangoDB can apply the filters and return only the matching documents. - -The following filter predicates (implementations of `org.apache.spark.sql.sources.Filter`) are pushed down: -- `And` -- `Or` -- `Not` -- `EqualTo` -- `EqualNullSafe` -- `IsNull` -- `IsNotNull` -- `GreaterThan` -- `GreaterThanOrEqualFilter` -- `LessThan` -- `LessThanOrEqualFilter` -- `StringStartsWithFilter` -- `StringEndsWithFilter` -- `StringContainsFilter` -- `InFilter` - -Furthermore, the connector will push down the subset of columns required by the Spark query, so that only the relevant documents fields will be returned. - -Predicate and projection pushdowns are only performed while reading an ArangoDB collection (set by the `table` configuration parameter). In case of a batch read from a custom query (set by the `query` configuration parameter), no pushdown optimizations are performed. - -### Read Resiliency - -The data of each partition is read using an AQL cursor. If any error occurs, the read task of the related partition will fail. Depending on the Spark configuration, the task could be retried. - -## Batch Write - -The connector implements support for batch writing to ArangoDB collection. - -```scala -import org.apache.spark.sql.DataFrame - -val df: DataFrame = //... -df.write - .format("com.arangodb.spark") - .mode(SaveMode.Append) - .options(Map( - "password" -> "test", - "endpoints" -> "c1:8529,c2:8529,c3:8529", - "table" -> "users" - )) - .save() -``` - -Write tasks are load balanced across the available ArangoDB Coordinators. The data saved into the ArangoDB is sharded according to the related target collection definition and is different from the Spark DataFrame partitioning. - -### SaveMode - -On writing, `org.apache.spark.sql.SaveMode` is used to specify the expected behavior in case the target collection already exists. - -The following save modes are supported: -- `Append`: the target collection is created, if it does not exist. -- `Overwrite`: the target collection is created, if it does not exist, otherwise it is truncated. Use it in combination with the - `confirmTruncate` write configuration parameter. - -Save modes `ErrorIfExists` and `Ignore` behave the same as `Append`. - -Use the `overwriteMode` write configuration parameter to specify the document overwrite behavior (if a document with the same `_key` already exists). - -### Write Configuration - -- `database`: database name, `_system` by default -- `table`: target ArangoDB collection name (required) -- `batchSize`: writing batch size, `10000` by default -- `byteBatchSize`: byte batch size threshold, only considered for `contentType=json`, `8388608` by default (8 MB) -- `table.shards`: number of shards of the created collection (in case of the `Append` or `Overwrite` SaveMode) -- `table.type`: type (`document` or `edge`) of the created collection (in case of the `Append` or `Overwrite` SaveMode), `document` by default -- `waitForSync`: specifies whether to wait until the documents have been synced to disk (`true` or `false`), `false` by default -- `confirmTruncate`: confirms to truncate table when using the `Overwrite` SaveMode, `false` by default -- `overwriteMode`: configures the behavior in case a document with the specified `_key` value already exists. It is only considered for `Append` SaveMode. - - `ignore` (default for SaveMode other than `Append`): it will not be written - - `replace`: it will be overwritten with the specified document value - - `update`: it will be patched (partially updated) with the specified document value. The overwrite mode can be - further controlled via the `keepNull` and `mergeObjects` parameter. `keepNull` will also be automatically set to - `true`, so that null values are kept in the saved documents and not used to remove existing document fields (as for - default ArangoDB upsert behavior). - - `conflict` (default for the `Append` SaveMode): return a unique constraint violation error so that the insert operation fails -- `mergeObjects`: in case `overwriteMode` is set to `update`, controls whether objects (not arrays) will be merged. - - `true` (default): objects will be merged - - `false`: existing document fields will be overwritten -- `keepNull`: in case `overwriteMode` is set to `update` - - `true` (default): `null` values are saved within the document (by default) - - `false`: `null` values are used to delete the corresponding existing attributes -- `retry.maxAttempts`: max attempts for retrying write requests in case they are idempotent, `10` by default -- `retry.minDelay`: min delay in ms between write requests retries, `0` by default -- `retry.maxDelay`: max delay in ms between write requests retries, `0` by default - -### Write Resiliency - -The data of each partition is saved in batches using the ArangoDB API for -[inserting multiple documents](../http-api/documents.md#multiple-document-operations). -This operation is not atomic, therefore some documents could be successfully written to the database, while others could fail. To make the job more resilient to temporary errors (i.e. connectivity problems), in case of failure the request will be retried (with another Coordinator), if the provided configuration allows idempotent requests, namely: -- the schema of the dataframe has a **not nullable** `_key` field and -- `overwriteMode` is set to one of the following values: - - `replace` - - `ignore` - - `update` with `keep.null=true` - -A failing batch-saving request is retried once for every Coordinator. After that, if still failing, the write task for the related partition is aborted. According to the Spark configuration, the task can be retried and rescheduled on a different executor, if the provided write configuration allows idempotent requests (as described above). - -If a task ultimately fails and is aborted, the entire write job will be aborted as well. Depending on the `SaveMode` configuration, the following cleanup operations will be performed: -- `Append`: no cleanup is performed and the underlying data source may require manual cleanup. - `DataWriteAbortException` is thrown. -- `Overwrite`: the target collection will be truncated. -- `ErrorIfExists`: the target collection will be dropped. -- `Ignore`: if the collection did not exist before, it will be dropped; otherwise, nothing will be done. - -### Write requirements - -When writing to an edge collection (`table.type=edge`), the schema of the Dataframe being written must have: -- a non nullable string field named `_from`, and -- a non nullable string field named `_to` - -### Write Limitations - -- Batch writes are not performed atomically, so sometimes (i.e. in case of `overwrite.mode: conflict`) several documents in the batch may be written and others may return an exception (i.e. due to a conflicting key). -- Writing records with the `_key` attribute is only allowed on collections sharded by `_key`. -- In case of the `Append` save mode, failed jobs cannot be rolled back and the underlying data source may require manual cleanup. -- Speculative execution of tasks only works for idempotent write configurations. See [Write Resiliency](#write-resiliency) for more details. -- Speculative execution of tasks can cause concurrent writes to the same documents, resulting in write-write conflicts or lock timeouts - -## Mapping Configuration - -Serialization and deserialization of Spark Dataframe Row to and from JSON (or Velocypack) can be customized using the following options: -- `ignoreNullFields`: whether to ignore null fields during serialization, `false` by default (only supported in Spark 3.x) - -## Supported Spark data types - -The following Spark SQL data types (subtypes of `org.apache.spark.sql.types.Filter`) are supported for reading, writing and filter pushdown. - -- Numeric types: - - `ByteType` - - `ShortType` - - `IntegerType` - - `LongType` - - `FloatType` - - `DoubleType` - -- String types: - - `StringType` - -- Boolean types: - - `BooleanType` - -- Datetime types: - - `TimestampType` - - `DateType` - -- Complex types: - - `ArrayType` - - `MapType` (only with key type `StringType`) - - `StructType` - -## Connect to the Arango Managed Platform (AMP) - -To connect to SSL-secured deployments using X.509 Base64-encoded CA certificate (AMP): - -```scala -val options = Map( - "database" -> "<dbname>", - "user" -> "<username>", - "password" -> "<passwd>", - "endpoints" -> "<endpoint>:<port>", - "ssl.cert.value" -> "<base64 encoded CA certificate>", - "ssl.enabled" -> "true", - "table" -> "<table>" -) - -// read -val myDF = spark.read - .format("com.arangodb.spark") - .options(options) - .load() - -// write -import org.apache.spark.sql.DataFrame -val df: DataFrame = //... -df.write - .format("com.arangodb.spark") - .options(options) - .save() -``` - -## Current limitations - -- For `contentType=vpack`, implicit deserialization casts don't work well, i.e. - reading a document having a field with a numeric value whereas the related - read schema requires a string value for such a field. -- Dates and timestamps fields are interpreted to be in a UTC time zone. -- In read jobs using `stream=true` (default), possible AQL warnings are only - logged at the end of each read task (BTS-671). -- Spark SQL `DecimalType` fields are not supported in write jobs when using `contentType=json`. -- Spark SQL `DecimalType` values are written to the database as strings. -- `byteBatchSize` is only considered for `contentType=json` (DE-226) - -## Demo - -Check out our [demo](https://github.com/arangodb/arangodb-spark-datasource/tree/main/demo) -to learn more about ArangoDB Datasource for Apache Spark. diff --git a/site/content/arangodb/3.12/develop/integrations/arangodb-tinkerpop-provider.md b/site/content/arangodb/3.12/develop/integrations/arangodb-tinkerpop-provider.md deleted file mode 100644 index a1a68550bf..0000000000 --- a/site/content/arangodb/3.12/develop/integrations/arangodb-tinkerpop-provider.md +++ /dev/null @@ -1,841 +0,0 @@ ---- -title: ArangoDB TinkerPop Provider -menuTitle: TinkerPop Provider -weight: 10 -description: >- - Build graph applications using TinkerPop API with ArangoDB's high-performance backend, combining Gremlin traversals and native AQL queries ---- -ArangoDB TinkerPop Provider is an implementation of the [Apache TinkerPop OLTP Provider](https://tinkerpop.apache.org/docs/3.7.4/dev/provider) API for -ArangoDB. - -It allows using the standard TinkerPop API with ArangoDB as the backend storage. It supports creating, -querying, and manipulating graph data using the Gremlin traversal language, while offering the possibility to use native -AQL (ArangoDB Query Language) for complex queries. - -- Repository: <https://github.com/arangodb/arangodb-tinkerpop-provider> -- [Code examples](https://github.com/arangodb/arangodb-tinkerpop-provider/tree/main/src/test/java/example) -- [Demo](https://github.com/arangodb/arangodb-tinkerpop-provider/tree/main/demo) -- [JavaDoc](https://www.javadoc.io/doc/com.arangodb/arangodb-tinkerpop-provider/latest/index.html) (generated reference documentation) -- [ChangeLog](https://github.com/arangodb/arangodb-tinkerpop-provider/blob/main/CHANGELOG.md) - -## Compatibility - -This Provider is compatible with: - -- Apache TinkerPop 3.7 -- ArangoDB 3.12+ -- ArangoDB Java Driver 7.22+ -- Java 8+ - -## Installation - -### Maven - -1. Check the [latest version](https://search.maven.org/artifact/com.arangodb/arangodb-tinkerpop-provider) available. -2. Add the following dependency to your `pom.xml` file: - -```xml -<dependencies> - <dependency> - <groupId>com.arangodb</groupId> - <artifactId>arangodb-tinkerpop-provider</artifactId> - <version>x.y.z</version> - </dependency> -</dependencies> -``` - -### Gradle - -1. Add the following dependency to your `build.gradle`: - -```groovy -implementation 'com.arangodb:arangodb-tinkerpop-provider:x.y.z' -``` - -### Gremlin Console - -1. Install the TinkerPop Provider in the Gremlin Console: - -```text -:install com.arangodb arangodb-tinkerpop-provider x.y.z -``` - -2. Restart the console to load the provider. - -3. Create a configuration for your ArangoDB connection. - -```text -gremlin> conf = [ -......1> "gremlin.graph":"com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph", -......2> "gremlin.arangodb.conf.graph.enableDataDefinition":"true", -......3> "gremlin.arangodb.conf.driver.hosts":"172.28.0.1:8529", -......4> "gremlin.arangodb.conf.driver.password":"test", -......5> ] -==>gremlin.graph=com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph -==>gremlin.arangodb.conf.graph.enableDataDefinition=true -==>gremlin.arangodb.conf.driver.hosts=172.28.0.1:8529 -==>gremlin.arangodb.conf.driver.password=test -``` -4. Open the graph using the configuration. - -```text -gremlin> graph = GraphFactory.open(conf) -==>arangodbgraph[ArangoDBGraphConfig{...}] -``` - -5. Create a traversal source and start using it: - -```text -gremlin> g = graph.traversal() -==>graphtraversalsource[arangodbgraph[...], standard] - -gremlin> g.addV("person").property("name", "marko") -==>v[4586117] - -gremlin> g.V().hasLabel("person").values("name") -==>marko -``` - -### Server Plugin - -Follow the steps below to set up the provider as a Gremlin Server plugin. - -1. Install the provider in the Gremlin Server: - - ```bash - ./bin/gremlin-server.sh install com.arangodb arangodb-tinkerpop-provider x.y.z - ``` - -2. Create a graph configuration file (e.g., `conf/arangodb.yaml`): - - ```yaml - gremlin: - graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" - arangodb: - conf: - graph: - enableDataDefinition: true - driver: - hosts: - - "172.28.0.1:8529" - password: test - ``` - -3. Create a server configuration file to load the plugin and graph configuration (e.g., `conf/gremlin-server-arangodb.yaml`): - -```yaml -host: 0.0.0.0 -port: 8182 -graphs: { - graph: conf/arangodb.yaml} -scriptEngines: { - gremlin-groovy: { - plugins: { org.apache.tinkerpop.gremlin.server.jsr223.GremlinServerGremlinPlugin: {}, - org.apache.tinkerpop.gremlin.tinkergraph.jsr223.TinkerGraphGremlinPlugin: {}, - com.arangodb.tinkerpop.gremlin.jsr223.ArangoDBGremlinPlugin: {}, - org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin: {classImports: [java.lang.Math], methodImports: [java.lang.Math#*]}, - org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: {files: [scripts/empty-sample.groovy]}}}} -serializers: - - { className: org.apache.tinkerpop.gremlin.util.ser.GraphSONMessageSerializerV3, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3] }} # application/json - - { className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1 } # application/vnd.graphbinary-v1.0 - - { className: org.apache.tinkerpop.gremlin.util.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }} # application/vnd.graphbinary-v1.0-stringd -processors: - - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }} - - { className: org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor} -``` - -4. Start the Gremlin Server with your configuration: - - ```bash - ./bin/gremlin-server.sh conf/gremlin-server-arangodb.yaml - ``` - -5. Connect to the server using the Gremlin Console: - - ```text - gremlin> :remote connect tinkerpop.server conf/remote.yaml - - gremlin> :remote console - ==>All scripts will now be sent to Gremlin Server - [localhost/127.0.0.1:8182] - type ':remote console' to return to local mode - ``` - -6. Start using the graph: - - ```text - gremlin> g.addV("person").property("name", "marko") - ==>v[4587713] - - gremlin> g.V().hasLabel("person").values("name") - ==>marko - ``` - -You can find the reference documentation [here](https://tinkerpop.apache.org/docs/3.7.4/reference/#_configuring_2). - - -## Quick Start - -Follow the steps below to get started with creating vertices, edges, and querying the graph. - -### Step 1: Configure and Create the Graph - -[//]: <> (@formatter:off) -```java -// Create a configuration -Configuration conf = new ArangoDBConfigurationBuilder() - .hosts("localhost:8529") - .user("root") - .password("test") - .db("myDatabase") - .name("myGraph") - .enableDataDefinition(true) // Allow creating database and graph if they don't exist - .build(); - -// Create a graph -ArangoDBGraph graph = (ArangoDBGraph) GraphFactory.open(conf); - -// Get a traversal source -GraphTraversalSource g = graph.traversal(); -``` -### Step 2: Add Vertices and Edges - -```java -// Add vertices with properties -Vertex person = g.addV("person") - .property("name", "Alice") - .property("age", 30) - .property("country", "Germany") - .next(); - -Vertex software = g.addV("software") - .property("name", "JArango") - .property("lang", "Java") - .next(); - -// Create relationships between vertices -Edge created = g.addE("created") - .from(person) - .to(software) - .property("year", 2025) - .next(); -``` - -### Step 3: Query the Graph - -```java -// Query the graph -List<String> creators = g.V() - .hasLabel("software") - .has("name", "JArango") - .in("created") - .<String>values("name") - .toList(); - -System.out.println("Creators: " + creators); - -// Query: Find all software created by Alice -List<String> aliceSoftware = g.V() - .hasLabel("person") - .has("name", "Alice") - .out("created") - .<String>values("name") - .toList(); - -System.out.println("aliceSoftware: " + aliceSoftware); - -``` - -### Step 4: Update Data - -```java -// Update a property -g.V() - .hasLabel("person") - .has("name", "Alice") - .property("age", 31) - .iterate(); - -// Remove a property -g.V() - .hasLabel("person") - .has("name", "Alice") - .properties("country") - .drop() - .iterate(); - -// Check the updated vertex -Map<?, ?> alice = g.V() - .hasLabel("person") - .has("name", "Alice") - .valueMap() - .next(); - -System.out.println("alice: " + alice); -``` - -### Step 5: Delete Data and Clean Up - -```java -// Remove an edge -g.E() - .hasLabel("created") - .where(__.outV() - .has("name", "Alice")) - .where(__.inV() - .has("name", "JArango")) - .drop() - .iterate(); - -// Remove a vertex (and its incident edges) -g.V() - .hasLabel("person") - .has("name", "Alice") - .drop() - .iterate(); - -// Close the graph when done -graph.close(); -``` -[//]: <> (@formatter:on) - -## Configuration - -The graph can be created using the methods from `org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(...)` -(see [javadoc](https://tinkerpop.apache.org/javadocs/3.7.4/full/org/apache/tinkerpop/gremlin/structure/util/GraphFactory.html)). -These methods accept a configuration file (e.g., YAML or properties file), a Java Map, or an Apache Commons Configuration object. - -The property `gremlin.graph` must be set to: `com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph`. - -Configuration examples can be found [here](https://github.com/arangodb/arangodb-tinkerpop-provider/tree/main/src/test/java/example). - -### Graph Configuration Properties - -Graph configuration properties are prefixed with `gremlin.arangodb.conf.graph`: - -| Property | Description | Default | -|----------------------------------------------------|---------------------------------------|-------------| -| `gremlin.arangodb.conf.graph.db` | ArangoDB database name | `_system` | -| `gremlin.arangodb.conf.graph.name` | ArangoDB graph name | `tinkerpop` | -| `gremlin.arangodb.conf.graph.enableDataDefinition` | Flag to allow data definition changes | `false` | -| `gremlin.arangodb.conf.graph.type` | Graph type: `SIMPLE` or `COMPLEX` | `SIMPLE` | -| `gremlin.arangodb.conf.graph.labelField` | Label field name | `_label` | -| `gremlin.arangodb.conf.graph.orphanCollections` | List of orphan collections names | - | -| `gremlin.arangodb.conf.graph.edgeDefinitions` | List of edge definitions | - | - -### Driver Configuration Properties - -Driver configuration properties are prefixed with `gremlin.arangodb.conf.driver`. All properties from -`com.arangodb.config.ArangoConfigProperties` are supported. See -the [ArangoDB Java Driver documentation](../drivers/java/reference-version-7/driver-setup.md#config-file-properties) -for details. - -### YAML Configuration - -```yaml -gremlin: - graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" - arangodb: - conf: - graph: - db: "testDb" - name: "myFirstGraph" - enableDataDefinition: true - type: COMPLEX - orphanCollections: [ "x", "y", "z" ] - edgeDefinitions: - - "e1:[a]->[b]" - - "e2:[a,b]->[c,d]" - driver: - user: "root" - password: "test" - hosts: - - "172.28.0.1:8529" - - "172.28.0.1:8539" - - "172.28.0.1:8549" -``` - -Loading from a YAML file: - -[//]: <> (@formatter:off) -```java -ArangoDBGraph graph = (ArangoDBGraph) GraphFactory.open("<path_to_yaml_file>"); -``` -[//]: <> (@formatter:on) - -### Programmatic Configuration - -1. Build the configuration using the configuration builder: - - [//]: <> (@formatter:off) - ```java - Configuration conf = new ArangoDBConfigurationBuilder() - .hosts("172.28.0.1:8529") - .user("root") - .password("test") - .database("testDb") - .name("myGraph") - .graphType(GraphType.SIMPLE) - .enableDataDefinition(true) - .build(); - ``` - [//]: <> (@formatter:on) - -2. Create the graph using the configuration: - - [//]: <> (@formatter:off) - ```java - ArangoDBGraph graph = (ArangoDBGraph) GraphFactory.open(conf); - ``` - [//]: <> (@formatter:on) - -### SSL Configuration - -To use TLS-secured connections to ArangoDB, follow these steps: - -1. Enable SSL by setting `gremlin.arangodb.conf.driver.useSsl` to `true` in your configuration. - -2. Configure SSL properties as needed (see [ArangoDB Java Driver documentation](../drivers/java/reference-version-7/driver-setup.md#config-file-properties) for all available options): - - ```yaml - gremlin: - graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" - arangodb: - conf: - driver: - hosts: - - "172.28.0.1:8529" - useSsl: true - verifyHost: false - sslCertValue: "MIIDezCCAmOgAwIBAgIEeDCzXzANBgkqhkiG9w0BAQsFADBuMRAwDgYDVQQGEwdVbmtub3duMRAwDgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAwDgYDVQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMRIwEAYDVQQDEwlsb2NhbGhvc3QwHhcNMjAxMTAxMTg1MTE5WhcNMzAxMDMwMTg1MTE5WjBuMRAwDgYDVQQGEwdVbmtub3duMRAwDgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAwDgYDVQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMRIwEAYDVQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1WiDnd4+uCmMG539ZNZB8NwI0RZF3sUSQGPx3lkqaFTZVEzMZL76HYvdc9Qg7difyKyQ09RLSpMALX9euSseD7bZGnfQH52BnKcT09eQ3wh7aVQ5sN2omygdHLC7X9usntxAfv7NzmvdogNXoJQyY/hSZff7RIqWH8NnAUKkjqOe6Bf5LDbxHKESmrFBxOCOnhcpvZWetwpiRdJVPwUn5P82CAZzfiBfmBZnB7D0l+/6Cv4jMuH26uAIcixnVekBQzl1RgwczuiZf2MGO64vDMMJJWE9ClZF1uQuQrwXF6qwhuP1Hnkii6wNbTtPWlGSkqeutr004+Hzbf8KnRY4PAgMBAAGjITAfMB0GA1UdDgQWBBTBrv9Awynt3C5IbaCNyOW5v4DNkTANBgkqhkiG9w0BAQsFAAOCAQEAIm9rPvDkYpmzpSIhR3VXG9Y71gxRDrqkEeLsMoEyqGnw/zx1bDCNeGg2PncLlW6zTIipEBooixIE9U7KxHgZxBy0Et6EEWvIUmnr6F4F+dbTD050GHlcZ7eOeqYTPYeQC502G1Fo4tdNi4lDP9L9XZpf7Q1QimRH2qaLS03ZFZa2tY7ah/RQqZL8Dkxx8/zc25sgTHVpxoK853glBVBs/ENMiyGJWmAXQayewY3EPt/9wGwV4KmU3dPDleQeXSUGPUISeQxFjy+jCw21pYviWVJTNBA9l5ny3GhEmcnOT/gQHCvVRLyGLMbaMZ4JrPwb+aAtBgrgeiK4xeSMMvrbhw==" - ``` - -3. Alternatively, use system properties for truststore configuration. If no `sslCertValue` is provided, the default SSL context is used. In such cases, you can specify the truststore using system properties: - - `javax.net.ssl.trustStore` - - `javax.net.ssl.trustStorePassword` - -### Data Definition Management - -The provider follows this process when instantiating a graph: - -1. **Validation**: The provider compares existing data definitions in ArangoDB with the structure expected by your configuration. It checks whether: - - The database exists - - The graph exists - - The graph structure has the same edge definitions and orphan collections - -2. **Error handling**: If there's a mismatch, an error is thrown and the graph is not instantiated. - -3. **Automatic creation** (optional): To automatically create missing data definitions, set `gremlin.arangodb.conf.graph.enableDataDefinition` to `true`. This allows: - - Creating a new database if it doesn't exist - - Creating a new graph if it doesn't exist (along with vertex and edge collections) - -{{< info >}} -Existing graphs are never modified automatically for safety reasons. -{{< /info >}} - -## Graph Types - -The ArangoDB TinkerPop Provider supports two graph types, which can be configured with the property -`gremlin.arangodb.conf.graph.type`: `SIMPLE` and `COMPLEX`. - -### SIMPLE Graph Type - -From an application perspective, this is the most flexible graph type that is backed by an ArangoDB graph composed of only one vertex collection and one edge definition. - -The `label` of each element is stored in a database document field. The label field name is configurable by setting the configuration property `graph.labelField`, `_label` by default. - -The `SIMPLE` graph type is the default graph type. - -It has the following advantages: - -- It closely matches the TinkerPop property graph -- It is simpler to get started and run examples -- It imposes no restrictions about element IDs -- It supports arbitrary labels, i.e., labels not known at graph construction time - -It has the following disadvantages: - -- All vertex types will be stored in the same vertex collection -- All edge types will be stored in the same edge collection -- It could not leverage the full potential of ArangoDB graph traversal -- It could require an index on the label field to improve performance - -Example configuration: - -```yaml -gremlin: - graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" - arangodb: - conf: - graph: - db: "db" - name: "myGraph" - type: SIMPLE - edgeDefinitions: - - "e:[v]->[v]" -``` - -If `edgeDefinitions` are not configured, the default names are used: - -- `vertex` will be used for the vertex collection -- `edge` will be used for the edge collection - -Using a `SIMPLE` graph configured as in the example above and creating a new element like: - -[//]: <> (@formatter:off) -```java -graph.addVertex(T.label, "person", T.id, "foo"); -``` -[//]: <> (@formatter:on) - -would result in creating a document in the vertex collection `v` with `_key` equals to `foo` (and `_id` equals -to `v/foo`). - -### COMPLEX Graph Type - -The `COMPLEX` graph type is backed by an ArangoDB graph composed potentially of multiple vertex collections and multiple -edge definitions. - -The `label` of each element is used as name for the related database collection. - -It has the following advantages: - -- It closely matches the ArangoDB graph structure -- It allows multiple vertex collections and multiple edge collections -- It partitions the data in a finer way -- It allows indexing and sharding collections independently -- It is more flexible to match pre-existing database graph structures - -But on the other side has the following constraints: - -- Element IDs must have the format: `<label>/<key>`, where: - - `<label>` is the element label - - `<key>` is the database document key -- Only labels corresponding to graph collections can be used - -Example configuration: - -```yaml -gremlin: - graph: "com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph" - arangodb: - conf: - graph: - db: "db" - name: "myGraph" - type: COMPLEX - edgeDefinitions: - - "knows:[person]->[person]" - - "created:[person]->[game,software]" -``` - -Using a `COMPLEX` graph configured as in the example above and creating a new element like: - -[//]: <> (@formatter:off) -```java -graph.addVertex(T.label, "person", T.id, "person/foo"); -``` -[//]: <> (@formatter:on) - -would result in creating a document in the vertex collection `person` with `_key` equals to `foo` (and `_id` -equals to `person/foo`). - -## Naming Constraints - -When using the ArangoDB TinkerPop Provider, be aware that Element IDs must be strings. - -## Persistent Structure - -The ArangoDB TinkerPop Provider maps TinkerPop data structures to ArangoDB data as follows: - -### Vertices - -Vertices are stored as documents in vertex collections. In a `SIMPLE` graph, all vertices are stored in a single -collection, by default named `vertex`. In a `COMPLEX` graph, vertices are stored in collections named -`<label>`. - -Each vertex document contains: - -- Standard ArangoDB fields (`_id`, `_key`, `_rev`) -- Vertex properties as document fields -- Meta-properties nested in the nested map `_meta` - -Additionally, in a `SIMPLE` graph: -- The label field (`_label` by default) - -For example, the following Java code: - -[//]: <> (@formatter:off) -```java -graph - .addVertex("person") - .property("name", "Freddie Mercury") - .property("since", 1970); -``` -[//]: <> (@formatter:on) - -creates a document like this: - -```json -{ - "_key": "4856", - "_id": "vertex/4856", - "_rev": "_kFqmbXK---", - "_label": "person", - "name": "Freddie Mercury", - "_meta": { - "name": { - "since": 1970 - } - } -} -``` - -### Edges - -Edges are stored as documents in edge collections. In a `SIMPLE` graph, all edges are stored in a single collection, by -default named `edge`. In a `COMPLEX` graph, edges are stored in collections named `<label>`. - -Each edge document contains: - -- Standard ArangoDB edge fields (`_id`, `_key`, `_rev`, `_from`, `_to`) -- Edge properties as document fields - -Additionally, in a `SIMPLE` graph: -- The label field (`_label` by default) - -For example, the following Java code: - -[//]: <> (@formatter:off) -```java -Vertex v = graph.addVertex("person"); -v.addEdge("knows", v) - .property("since", 1970); -``` -[//]: <> (@formatter:on) - -creates a document like this: - -```json -{ - "_key": "5338", - "_id": "edge/5338", - "_from": "vertex/5335", - "_to": "vertex/5335", - "_rev": "_kFq20-u---", - "_label": "knows", - "since": 1970 -} -``` - -## Element IDs - -Given a Gremlin element, you can get the corresponding ArangoDB document ID (`_id` field) using the -`ArangoDBGraph.elementId(Element)` method: - -[//]: <> (@formatter:off) -```java -Vertex v = graph.addVertex("name", "marko"); -String id = graph.elementId(v); -``` -[//]: <> (@formatter:on) - -This is useful when you need to reference the element directly in AQL queries. - - -## Query Optimization - -ArangoDB TinkerPop Provider includes an optimization strategy that can push certain Gremlin traversal steps down to -the database layer for improved performance. -This is applied by `com.arangodb.tinkerpop.gremlin.process.traversal.strategy.optimization.ArangoStepStrategy`. - -### HasStep Pushdown - -The optimizer analyzes the traversal steps and attempts to convert filter steps of type -`org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep` into AQL queries that execute directly on the -database. This reduces the amount of data transferred and processed in the client application. - -All Gremlin predefined predicate values from `org.apache.tinkerpop.gremlin.process.traversal.P` are supported: -- **comparison predicates**: `eq`, `neq`, `lt`, `gt`, etc. -- **collection predicates**: `within`, `without` -- **text predicates**: `containing`, `startingWith`, `endingWith`, `regex` -- **logical combinations**: `and`, `or`, `not` - -For example, the following traversal is optimized to execute the filtering logic in ArangoDB using AQL and transferring to the client only the matching -vertices, rather than retrieving all vertices and filtering them in the client. - -[//]: <> (@formatter:off) -```groovy -g.V().has("value", "foo") -``` -[//]: <> (@formatter:on) - -### Disabling Optimization - -If you need to disable the optimization strategy: - -1. **Create a traversal source** without the optimization strategy: - - [//]: <> (@formatter:off) - ```java - GraphTraversalSource g = graph.traversal().withoutStrategies(ArangoStepStrategy.class); - ``` - [//]: <> (@formatter:on) - -2. **Use the traversal source** as normal. All traversals will execute without AQL optimization. - -## AQL Queries - -For complex queries or performance-critical operations, you can use ArangoDB's native query language (AQL) directly: - -[//]: <> (@formatter:off) -```java -List<Vertex> alice = graph - .<Vertex>aql("FOR v IN vertex FILTER v.name == @name RETURN v", Map.of("name", "Alice")) - .toList(); - -// Query using document ID -Vertex v = graph.addVertex("name", "marko"); -String id = graph.elementId(v); -List<Vertex> result = graph - .<Vertex>aql("RETURN DOCUMENT(@id)", Map.of("id", id)) - .toList(); -``` -[//]: <> (@formatter:on) - -## Supported Features - -This library supports the following features: - -```text -> GraphFeatures ->-- Computer: false ->-- Persistence: true ->-- ConcurrentAccess: true ->-- Transactions: false ->-- ThreadedTransactions: false ->-- IoRead: true ->-- IoWrite: true ->-- OrderabilitySemantics: false ->-- ServiceCall: false -> VariableFeatures ->-- Variables: true ->-- LongArrayValues: true ->-- StringArrayValues: true ->-- BooleanValues: true ->-- ByteValues: false ->-- DoubleValues: true ->-- FloatValues: false ->-- IntegerValues: true ->-- LongValues: true ->-- MapValues: true ->-- MixedListValues: true ->-- SerializableValues: false ->-- StringValues: true ->-- UniformListValues: true ->-- BooleanArrayValues: true ->-- ByteArrayValues: false ->-- DoubleArrayValues: true ->-- FloatArrayValues: false ->-- IntegerArrayValues: true -> VertexFeatures ->-- DuplicateMultiProperties: false ->-- AddVertices: true ->-- RemoveVertices: true ->-- MultiProperties: false ->-- MetaProperties: true ->-- Upsert: false ->-- NullPropertyValues: true ->-- AddProperty: true ->-- RemoveProperty: true ->-- UserSuppliedIds: true ->-- NumericIds: false ->-- StringIds: true ->-- UuidIds: false ->-- CustomIds: false ->-- AnyIds: false -> VertexPropertyFeatures ->-- NullPropertyValues: true ->-- RemoveProperty: true ->-- UserSuppliedIds: false ->-- NumericIds: true ->-- StringIds: true ->-- UuidIds: true ->-- CustomIds: true ->-- AnyIds: false ->-- Properties: true ->-- LongArrayValues: true ->-- StringArrayValues: true ->-- BooleanValues: true ->-- ByteValues: false ->-- DoubleValues: true ->-- FloatValues: false ->-- IntegerValues: true ->-- LongValues: true ->-- MapValues: true ->-- MixedListValues: true ->-- SerializableValues: false ->-- StringValues: true ->-- UniformListValues: true ->-- BooleanArrayValues: true ->-- ByteArrayValues: false ->-- DoubleArrayValues: true ->-- FloatArrayValues: false ->-- IntegerArrayValues: true -> EdgeFeatures ->-- Upsert: false ->-- AddEdges: true ->-- RemoveEdges: true ->-- NullPropertyValues: true ->-- AddProperty: true ->-- RemoveProperty: true ->-- UserSuppliedIds: true ->-- NumericIds: false ->-- StringIds: true ->-- UuidIds: false ->-- CustomIds: false ->-- AnyIds: false -> EdgePropertyFeatures ->-- Properties: true ->-- LongArrayValues: true ->-- StringArrayValues: true ->-- BooleanValues: true ->-- ByteValues: false ->-- DoubleValues: true ->-- FloatValues: false ->-- IntegerValues: true ->-- LongValues: true ->-- MapValues: true ->-- MixedListValues: true ->-- SerializableValues: false ->-- StringValues: true ->-- UniformListValues: true ->-- BooleanArrayValues: true ->-- ByteArrayValues: false ->-- DoubleArrayValues: true ->-- FloatArrayValues: false ->-- IntegerArrayValues: true -``` - -## Current Limitations - -- This library implements the Online Transactional Processing Graph Systems (OLTP) API only. The Online Analytics Processing Graph Systems (OLAP) API is currently not implemented. -- Some generated queries might not be optimized, since the Process API is only partially implemented (see [Query Optimization](#query-optimization)). For optimal query performance is recommended to use [AQL queries](#aql-queries). - -## Logging - -The library uses the `slf4j` API for logging. To log requests and responses to and from the database, enable the `DEBUG` log level for the logger `com.arangodb.internal.net.Communication`. - -## Examples and Demo - -The [demo](https://github.com/arangodb/arangodb-tinkerpop-provider/tree/main/demo) project contains comprehensive usage examples of this library. - -For additional examples, check -the [Gremlin tutorial](https://tinkerpop.apache.org/docs/3.7.4/tutorials/getting-started/). - -## Acknowledgments - -This repository is based on and extends the original work of -the [arangodb-community/arangodb-tinkerpop-provider](https://github.com/arangodb-community/arangodb-tinkerpop-provider) -project. - -We gratefully acknowledge the efforts of [Horacio Hoyos Rodriguez](https://github.com/arcanefoam) and other contributors -of the community repository, see [AUTHORS.md](https://github.com/arangodb/arangodb-tinkerpop-provider/blob/main/AUTHORS.md). diff --git a/site/content/arangodb/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md b/site/content/arangodb/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md deleted file mode 100644 index 56fb0ba16f..0000000000 --- a/site/content/arangodb/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md +++ /dev/null @@ -1,283 +0,0 @@ ---- -title: Kafka Connect ArangoDB Sink Connector -menuTitle: Kafka Connector -weight: 20 -description: >- - The Kafka connector allows you to export data from Apache Kafka to ArangoDB - by writing data from one or more topics in Kafka to a collection in ArangoDB ---- -{{< info >}} -Check out the [connector demo](https://github.com/arangodb/kafka-connect-arangodb/tree/main/demo) -to learn more about the connector. -{{< /info >}} - -## Supported versions - -This connector is compatible with: - -- Kafka 3.4 and higher versions -- JDK 8 and higher versions -- ArangoDB 3.11.1 and higher versions - -## Installation - -Download the Jar file from [Maven Central](https://repo1.maven.org/maven2/com/arangodb/kafka-connect-arangodb) -and copy it into one of the directories that are listed in the Kafka Connect -worker's `plugin.path` configuration property. This must be done on each of the -installations where Kafka Connect will be run. - -Once installed, you can then create a connector configuration file with the -connector's settings, and deploy that to a Connect worker. -See the [configuration](configuration.md) documentation for -the available options. - -For more detailed plugin installation instructions, see the -[Confluent Documentation](https://docs.confluent.io/platform/current/connect/userguide.html#connect-installing-plugins). - -## Connection handling - -Task connections to the database are evenly distributed across all available -ArangoDB Coordinators. If a connectivity error occur, a connection is -re-established with a different Coordinator. - -Available Coordinators can be periodically monitored by setting -`connection.acquireHostList.enabled` to `true` and optionally configuring the -monitoring interval. - -Over time, due to connection failovers, the distribution of task connections -across the Coordinators may become uneven. To address this, connections are -periodically re-balanced across the available Coordinators. The rebalancing -interval can be configured via the `connection.rebalance.interval.ms` property. -The default is 30 minutes. - -## Delivery guarantees - -This connector guarantees that each record in the Kafka topic is delivered at -least once. For example, the same record could be delivered multiple times in -the following scenarios: - -- Transient errors in the communication between the connector and the - database system, leading to [retries](#retries) -- Errors in the communication between the connector and Kafka, preventing to - commit offsets of already written records -- Abrupt termination of connector task - -When restarted, the connector resumes reading from the Kafka topic at an offset -prior to where it stopped. As a result, at least in the cases mentioned above, -some records might get written to ArangoDB more than once. Even if configured -for idempotent writes (e.g. with `insert.overwriteMode=replace`), writing the -same record multiple times still updates the `_rev` field of the document. - -Note that in case of retries, [Ordering Guarantees](#ordering-guarantees) -are still provided. - -To improve the likelihood that every write survives even in case of a DB-Server -failover, consider configuring the configuration property `insert.waitForSync` -(default `false`), which determines whether the write operations are synced -to disk before returning. - -## Error handling - -The connector categorizes all the possible errors into two types, -data errors and transient errors. - -### Data errors - -Data errors are unrecoverable and caused by the data being processed. -For example: - -- Conversion errors: - - Illegal key type - - Illegal value type -- Server validation errors: - - Illegal `_key`, `_from`, `_to` values - - JSON schema validation errors -- Server constraints violations - - Unique index violations - - Key conflicts (in case of `insert.overwriteMode=conflict`) - -The configuration property `data.errors.tolerance` allows you to configure the -behavior for tolerating data errors: - -- `none`: data errors result in an immediate connector task failure (default) -- `all`: changes the behavior to skip over records generating data errors. - If DLQ is configured, then the record is reported - (see [Dead Letter Queue](#dead-letter-queue)). - -Data errors detection can be further customized via the `extra.data.error.nums` -configuration property. In addition to the cases listed above, the server errors -reporting `errorNums` listed by this configuration property are considered -data errors. - -### Transient errors - -Transient errors are recoverable and may succeed if retried with some delay -(see [Retries](#retries)). If all retries fail, then the connector task fails. - -All errors that are not data errors are considered transient errors. - -## Retries - -In case of transient errors, the [`max.retries` configuration property](configuration.md#maxretries) -determines how many times the connector retries. - -The [`retry.backoff.ms` configuration property](configuration.md#retrybackoffms) -allows you to set the time in milliseconds to wait following an error before a -retry attempt is made. - -Data errors are never retried. - -## Dead Letter Queue - -This connector supports the Dead Letter Queue (DLQ) functionality. -For information about accessing and using the DLQ, -see [Confluent Platform Dead Letter Queue](https://docs.confluent.io/platform/current/connect/concepts.html#dead-letter-queue). - -Only data errors can be reported to the DLQ. Transient errors, after potential -retries, always make the task fail. - -You can enable DLQ support for data errors by setting `data.errors.tolerance=all` -and `errors.deadletterqueue.topic.name`. - -## Multiple tasks - -The connector can scale out by running multiple tasks in parallel as specified by the -[`tasks.max`](https://docs.confluent.io/platform/current/installation/configuration/connect/sink-connect-configs.html#tasks-max) -configuration parameter. In this case, each connector task handles the records -from different Kafka topics partitions. - -## Data mapping - -The sink connector optionally supports schemas. For example, the Avro converter -that comes with Schema Registry, the JSON converter with schemas enabled, or the -Protobuf converter. - -Kafka record keys and Kafka record value field `_key`, if present, must be a -primitive type of either: - -- `string` -- `integral numeric` (integer) - -The record value must be either: - -- `struct` (Kafka Connect structured record) -- `map` -- `null` (tombstone record) - -Record values are converted to JSON objects using Kafka Connect `JsonConverter`, -ensuring compatibility with Kafka Connect data types and support to schemas. -If the data in the topic is not of a compatible format, applying an -[SMT](https://docs.confluent.io/platform/current/connect/transforms/overview.html) -or implementing a custom converter may be necessary. - -## Key handling - -The `_key` of the documents inserted into ArangoDB is derived in the following way: - -1. Use the Kafka record value field `_key` if present and not null, else -2. Use the Kafka record key if not null, else -3. Use the Kafka record coordinates (`topic-partition-offset`) - -## Delete mode - -The connector can delete documents in a database collection when it consumes a -tombstone record, which is a Kafka record that has a non-null key and a null value. -This behavior is disabled by default, meaning that any tombstone records results -in a failure of the connector. - -You can enable deletes with `delete.enabled=true`. - -Delete operations are idempotent and do not throw errors if the target document -does not exist. - -Enabling delete mode does not affect the `insert.overwriteMode`. - -## Write modes - -The `insert.overwriteMode` configuration parameter allow you to set the write -behavior in case a document with the same `_key` already exists: - -- `conflict`: the new document value is not written and an exception is thrown (default) -- `ignore`: the new document value is not written -- `replace`: the existing document is overwritten with the new document value -- `update`: the existing document is patched (partially updated) with the new document value - -## Idempotent writes - -All the write modes supported are idempotent, with the exception that the -document revision field (`_rev`) changes every time a document is written. See -[Document revisions](../../../concepts/data-structure/documents/_index.md#document-revisions) -for more details. - -If there are failures, the Kafka offset used for recovery may not be up-to-date -with what was committed as of the time of the failure, which can lead to -re-processing during recovery. In case of `insert.overwriteMode=conflict` (default), -this can lead to constraint violations errors if records need to be re-processed. - -## Ordering guarantees - -Kafka records in the same Kafka topic partition that are mapped to documents with the -same `_key` (see [Key handling](#key-handling)) are written to ArangoDB in the -same order as they are in the Kafka topic partition. - -The order of the writes for records in the same Kafka partition that are mapped -to documents with different `_key` is not guaranteed. - -The order between writes for records in different Kafka partitions is not guaranteed. - -To guarantee documents in ArangoDB are eventually consistent with the records in -the Kafka topic, it is recommended deriving the document `_key` from Kafka -record keys and using a key-based partitioner that assigns the same partition to -records with the same key (i.e. Kafka default partitioner). - -Otherwise, in case the document `_key` is assigned from Kafka record value field -`_key`, the same could be achieved using a field partitioner on `_key`. - -When restarted, the connector may resume reading from the Kafka topic at an offset -prior to where it stopped. This can lead to reprocessing of batches containing -multiple Kafka records that are mapped to documents with the same `_key`. -In such case, it is possible to observe the related document in the database -being temporarily updated to older versions and eventually to newer ones. - -## Monitoring - -The Kafka Connect framework exposes basic status information over a REST interface. -Fine-grained metrics, including the number of processed messages and the rate of -processing, are available via JMX. For more information, see -[Monitoring Kafka Connect and Connectors](https://docs.confluent.io/current/connect/managing/monitoring.html) -(published by Confluent, but equally applies to a standard Apache Kafka distribution). - -## SSL - -To connect to ArangoDB using an SSL connection, you must set the `ssl.enabled` -configuration property to `true`. - -### Certificate from file - -The connector can load the trust store to be used from file. The following -configuration properties can be used: - -- `ssl.truststore.location`: the location of the trust store file -- `ssl.truststore.password`: the password for the trust store file - -Note that the trust store file path needs to be accessible at the same given -location from all Kafka Connect workers. - -### Certificate from configuration property value - -The connector can accept the SSL certificate value from configuration property -encoded as Base64 string. The following configuration properties can be used: - -- `ssl.cert.value`: Base64-encoded SSL certificate - -See [SSL configuration](configuration.md#ssl) for further options. - -## Limitations - -- Record values are required to be object-like structures (DE-644) -- Auto-creation of ArangoDB collection is not supported (DE-653) -- Batch writes are not guaranteed to be executed serially (FRB-300) -- Batch writes may succeed for some documents while failing for others (FRB-300) - This has two important consequences: - - Transient errors might be retried and succeed at a later point - - Data errors might be asynchronously reported to the DLQ diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md deleted file mode 100644 index 59bf728d9a..0000000000 --- a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Computed Values -menuTitle: Computed Values -weight: 27 -description: '' -archetype: default ---- -Spring Data ArangoDB provides annotations to allow mapping computed values to -entity properties and to include computed values data definitions during -collection creation. - -For reference, see the [computed values](../../../../../concepts/data-structure/documents/computed-values.md) -documentation. - -## Mapping - -Computed values can be mapped to entity properties by annotating the related -fields with `@ArangoComputedValue`. - -If the property is mutable, then the field is automatically updated in place -with the value coming from the server in the following methods: -- `ArangoOperations#repsert(Object)` -- `ArangoOperations#repsertAll(Iterable, Class)` -- `ArangoRepository#save(Object)` -- `ArangoRepository#saveAll(Iterable)` - -## Data Definitions - -Computed values data definitions can be specified through parameters of the -following annotations: -- `@ArangoComputedValue` on fields -- `@ArangoComputedValueDefinition` on classes (optionally within `@ArangoComputedValueDefinitions`) - -**Example** - -```java -@Document -@ArangoComputedValueDefinition( - name = "username", - expression = "RETURN \"unknown\"", - computeOn = ComputedValue.ComputeOn.insert -) -class MyEntity { - - @ArangoComputedValue - String username; - - @ArangoComputedValue("RETURN 0") - int age; - - // ... - -} -``` - -On database collection creation, the computed values metadata is included. -Note that the data definitions are not updated in case the database collection -already exists. diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md b/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md deleted file mode 100644 index 90f1fa74b9..0000000000 --- a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Query methods -menuTitle: Query methods -weight: 10 -description: '' ---- -Queries using [ArangoDB Query Language (AQL)](../../../../../../aql/_index.md) -can be supplied with the `@Query` annotation on methods. - -## Passing collection name - -Instead of writing the collection name statically into the query string, the -placeholder `#collection` can be specified. - -```java -public interface MyRepository extends ArangoRepository<Customer, String>{ - - // FOR c IN customer RETURN c - @Query("FOR c IN #collection RETURN c") - ArangoCursor<Customer> query(); - -} -``` - -## Passing bind parameters - -There are three ways of passing bind parameters to the query in the query annotation. - -### Number matching - -Using number matching, arguments will be substituted into the query in the order -they are passed to the query method. - -```java -public interface MyRepository extends ArangoRepository<Customer, String>{ - - @Query("FOR c IN #collection FILTER c.name == @0 AND c.surname == @1 RETURN c") - ArangoCursor<Customer> query(String name, String surname); - -} -``` - -### @Param - -With the `@Param` annotation, the argument will be placed in the query at the -place corresponding to the value passed to the `@Param` annotation. - -```java -public interface MyRepository extends ArangoRepository<Customer, String>{ - - @Query("FOR c IN #collection FILTER c.name == @name AND c.surname == @surname RETURN c") - ArangoCursor<Customer> query(@Param("name") String name, @Param("surname") String surname); - -} -``` - -### @BindVars - -In addition you can use a method parameter of type `Map<String, Object>` -annotated with `@BindVars` as your bind parameters. You can then fill the map -with any parameter used in the query (also see [AQL Bind Parameters](../../../../../../aql/fundamentals/bind-parameters.md)). - -```java -public interface MyRepository extends ArangoRepository<Customer, String>{ - - @Query("FOR c IN #collection FILTER c.name == @name AND c.surname = @surname RETURN c") - ArangoCursor<Customer> query(@BindVars Map<String, Object> bindVars); - -} -``` - -A mixture of any of these methods can be used. Parameters with the same name -from an `@Param` annotation will override those in the `bindVars`. - -```java -public interface MyRepository extends ArangoRepository<Customer, String>{ - - @Query("FOR c IN #collection FILTER c.name == @name AND c.surname = @surname RETURN c") - ArangoCursor<Customer> query(@BindVars Map<String, Object> bindVars, @Param("name") String name); - -} -``` - -## Query options - -`AqlQueryOptions` can also be passed to the driver, as an argument anywhere in -the method signature. - -```java -public interface MyRepository extends ArangoRepository<Customer, String>{ - - @Query("FOR c IN #collection FILTER c.name == @name AND c.surname == @surname RETURN c") - ArangoCursor<Customer> query(@Param("name") String name, @Param("surname") String surname, AqlQueryOptions options); - -} -``` - -## Spring Expression support - -SpEL expressions can be embedded in the query string to -dynamically customize it depending on the invocation parameters and/or invoking -methods on Spring Beans. In particular: -- SpEL expressions must be wrapped within `#{}` -- SpEL variables can be set annotating method parameters with - `@SpelParam("varName")` and referenced with `#varName` -- Spring Beans can be referenced with `@myBean` (factory beans with `&myBean`) -- the SpEL variable `#collection` is automatically set - -```java -public interface MyRepository extends ArangoRepository<Customer, String> { - - @Query("FOR c IN #{#collection} FILTER #{@filterGenerator.allEqual('c', #kv)} RETURN c") - List<Customer> findByAllEqual(@SpelParam("kv") Map<String, Object> kv); - -} - -@Component("filterGenerator") -public class FilterGenerator { - - public String allEqual(String col, Map<String, Object> kv) { - return kv.entrySet().stream() - .map(it -> col + "." + it.getKey() + " == " + escape(it.getValue())) - .collect(Collectors.joining(" AND ")); - } - - private Object escape(Object o) { - if (o instanceof String) return "\"" + o + "\""; - else return o; - } - -} -``` diff --git a/site/content/arangodb/3.12/develop/javascript-api/_index.md b/site/content/arangodb/3.12/develop/javascript-api/_index.md index 1871086f86..349a0946b7 100644 --- a/site/content/arangodb/3.12/develop/javascript-api/_index.md +++ b/site/content/arangodb/3.12/develop/javascript-api/_index.md @@ -26,7 +26,7 @@ It communicates with the server via the HTTP API. {{< tip >}} The JavaScript API cannot be used in browsers, Node.js, or other JavaScript -environments. You can use the [arangojs driver](../drivers/javascript.md) instead. +environments. You can use the [arangojs driver](../../../../ecosystem/drivers/javascript.md) instead. Note that it has a different interface. {{< /tip >}} diff --git a/site/content/arangodb/3.12/get-started/how-to-interact-with-arangodb.md b/site/content/arangodb/3.12/get-started/how-to-interact-with-arangodb.md index ffceaf99dd..754709fc11 100644 --- a/site/content/arangodb/3.12/get-started/how-to-interact-with-arangodb.md +++ b/site/content/arangodb/3.12/get-started/how-to-interact-with-arangodb.md @@ -34,7 +34,7 @@ interact with the server. You can also use it for automating tasks. ### Drivers and Integrations When you start using ArangoDB in your project, you will likely use an official -or community-made [driver](../develop/drivers/_index.md) written in the same language as your project. +or community-made [driver](../../../ecosystem/drivers/_index.md) written in the same language as your project. Drivers implement a programming interface that should feel natural for that programming language, and do all the talking to the server. diff --git a/site/content/arangodb/3.12/operations/administration/_index.md b/site/content/arangodb/3.12/operations/administration/_index.md index ea48d0f8bb..74cb6fb8e3 100644 --- a/site/content/arangodb/3.12/operations/administration/_index.md +++ b/site/content/arangodb/3.12/operations/administration/_index.md @@ -26,7 +26,7 @@ Deployments of ArangoDB servers can be managed with the following tools: - **RESTful API**: _arangod_ has an [HTTP interface](../../develop/http-api/_index.md) through which it can be fully managed. The official client tools including _arangosh_ and the Web interface talk to this bare metal interface. It is also relevant for - [driver](../../develop/drivers/_index.md) developers. + [driver](../../../../ecosystem/drivers/_index.md) developers. - [**ArangoDB Starter**](../../components/tools/arangodb-starter/_index.md): This deployment tool helps to start _arangod_ instances, like for a Cluster setup. diff --git a/site/content/arangodb/3.13/aql/functions/document-object.md b/site/content/arangodb/3.13/aql/functions/document-object.md index a7272366aa..70496ccca7 100644 --- a/site/content/arangodb/3.13/aql/functions/document-object.md +++ b/site/content/arangodb/3.13/aql/functions/document-object.md @@ -477,7 +477,7 @@ Only [`HAS()`](#has) can differentiate between an attribute being absent and hav a stored `null` value. An empty object `{}` will match all documents. Be careful not to ask for all -documents accidentally. For example, the [arangojs](../../develop/drivers/javascript.md) driver +documents accidentally. For example, the [arangojs](../../../../ecosystem/drivers/javascript.md) driver skips attributes with a value of `undefined`, turning `{attr: undefined}` into `{}`. {{< info >}} diff --git a/site/content/arangodb/3.13/aql/how-to-invoke-aql/_index.md b/site/content/arangodb/3.13/aql/how-to-invoke-aql/_index.md index b44a6ed75a..1276ab8755 100644 --- a/site/content/arangodb/3.13/aql/how-to-invoke-aql/_index.md +++ b/site/content/arangodb/3.13/aql/how-to-invoke-aql/_index.md @@ -11,8 +11,8 @@ You can execute AQL queries using different interfaces: - The web interface - The `db` object of the JavaScript API (either in arangosh or in a Foxx service) - The raw HTTP REST API -- Through a [driver](../../develop/drivers/_index.md) or - [integration](../../develop/integrations/_index.md) as an abstraction over the +- Through a [driver](../../../../ecosystem/drivers/_index.md) or + [integration](../../../../ecosystem/integrations/_index.md) as an abstraction over the HTTP REST API There are always calls to the server's API under the hood, but the web interface, diff --git a/site/content/arangodb/3.13/components/tools/arango-datasets.md b/site/content/arangodb/3.13/components/tools/arango-datasets.md index a24903550f..10a4626f48 100644 --- a/site/content/arangodb/3.13/components/tools/arango-datasets.md +++ b/site/content/arangodb/3.13/components/tools/arango-datasets.md @@ -27,7 +27,7 @@ You can find the source code repository of the module on GitHub: Once you have installed the `arango-datasets` package, you can use it to download and import datasets into your deployment with `arango_datasets.Datasets`. -The `Datasets` constructor requires a valid [python-arango](../../develop/drivers/python.md) +The `Datasets` constructor requires a valid [python-arango](../../../../ecosystem/drivers/python.md) database object as input. It defines the target deployment, database, and credentials to load a dataset. diff --git a/site/content/arangodb/3.13/develop/drivers/_index.md b/site/content/arangodb/3.13/develop/drivers/_index.md deleted file mode 100644 index 6fc7ee3507..0000000000 --- a/site/content/arangodb/3.13/develop/drivers/_index.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Official ArangoDB drivers -menuTitle: Drivers -weight: 285 -description: >- - ArangoDB drivers allow you to connect ArangoDB to your applications and manage - the database system via a language-specific interface ---- -Database drivers, also called connectors, adapters, or client libraries, let you -access and manage database systems. ArangoDB drivers are interfaces between -programming languages and ArangoDB, which enable software developers to connect -to and manipulate ArangoDB deployments from within compiled programs or using -scripting languages. - -From a language perspective, documents and database structures can be integrated -with data types and their methods. The precise mapping of concepts and methods -depends on the capabilities and practices of each language. - -Programming is a powerful way of automating interactions and control of the -database, as well as to integrate database operations into your own software. -The drivers listed below are officially maintained and supported by ArangoDB. -If your programming language or environment is not listed, - -## Java driver - -The [**ArangoDB Java driver**](java/_index.md) lets you work with ArangoDB in the -Java programming language. - -- [Tutorial](java/_index.md#tutorial) -- Repository: [github.com/arangodb/arangodb-java-driver](https://github.com/arangodb/arangodb-java-driver) - -## Go driver - -The [**Go driver**](go.md) lets you work with ArangoDB in the Go programming -language. - -- [Tutorial](go.md#tutorial) -- Repository: [github.com/arangodb/go-driver](https://github.com/arangodb/go-driver/tree/master/v2) - -## JavaScript driver - -The [**ArangoJS driver**](javascript.md) lets you work with ArangoDB in Node.js, using -the JavaScript scripting language. You can also use it in web browsers. - -- Repository: [github.com/arangodb/arangojs](https://github.com/arangodb/arangojs) - -## Python driver - -The [**Python-Arango**](python.md) driver lets you work with ArangoDB in the -Python scripting language. - -- Online course: [Python Driver Tutorial](https://www.arangodb.com/tutorials/tutorial-python/) -- Repository: [github.com/ArangoDB-Community/python-arango](https://github.com/ArangoDB-Community/python-arango) diff --git a/site/content/arangodb/3.13/develop/drivers/go.md b/site/content/arangodb/3.13/develop/drivers/go.md deleted file mode 100644 index be7559eca1..0000000000 --- a/site/content/arangodb/3.13/develop/drivers/go.md +++ /dev/null @@ -1,735 +0,0 @@ ---- -title: ArangoDB Go driver -menuTitle: Go driver -weight: 15 -description: '' ---- -The official Go driver in version 2 is the recommended client for interacting -with ArangoDB using the Go programming language. - -- Reference: <https://pkg.go.dev/github.com/arangodb/go-driver/v2> -- Repository: <https://github.com/arangodb/go-driver/tree/master/v2> -- [Changelog](https://github.com/arangodb/go-driver/blob/master/v2/CHANGELOG.md) - -## Tutorial - -### Install the driver - -To use the driver, fetch the sources into your `GOPATH` first. - -```sh -go get github.com/arangodb/go-driver/v2 -``` - -Import the driver in your Go program using the `import` statement. -Two packages are necessary: - -```go -import ( - "github.com/arangodb/go-driver/v2/arangodb" - "github.com/arangodb/go-driver/v2/connection" -) -``` - -You may want to additionally import the following packages: - -```go - "github.com/arangodb/go-driver/v2/arangodb/shared" - "github.com/arangodb/go-driver/v2/utils" -``` - -The former provides a `shared.IsNoMoreDocuments` function that makes it easy to -check whether to stop iterating over the results of functions that return a reader, -like multi-document operations and listing graphs. The latter provides a -`utils.NewType` function that lets you conveniently create a pointer to a boolean -value, for instance. - -If you use Go modules, you can also import the driver and run `go mod tidy` -instead of using the `go get` command. - -### Connect to ArangoDB - -Using the driver, you always need to create a `Client`. The following example -shows how to create a `Client` for an ArangoDB single server running on localhost. -You need to set `InsecureSkipVerify` to `true` if the ArangoDB server is not -configured for TLS encryption to establish an unencrypted HTTP/2 connection. -For more options, see [Connection management](#connection-management). - -```go -import ( - "context" - "log" - - "github.com/arangodb/go-driver/v2/arangodb" - "github.com/arangodb/go-driver/v2/arangodb/shared" - "github.com/arangodb/go-driver/v2/connection" - "github.com/arangodb/go-driver/v2/utils" -) - -/*...*/ - -endpoint := connection.NewRoundRobinEndpoints([]string{"http://localhost:8529"}) -conn := connection.NewHttp2Connection(connection.DefaultHTTP2ConfigurationWrapper(endpoint, /*InsecureSkipVerify*/ true)) - -// Add authentication -auth := connection.NewBasicAuth("root", "") -err := conn.SetAuthentication(auth) -if err != nil { - log.Fatalf("Failed to set authentication: %v", err) -} - -// Create a client -client := arangodb.NewClient(conn) -``` - -Once you have a `Client` object, you can use this handle to create and edit -objects, such as databases, collections, documents, and graphs. These database -objects are mapped to types in Go. The methods for these types are used to read -and write data. - -### Asynchronous client - -The driver supports an asynchronous client that can be used to run multiple -operations concurrently. - -```go -import ( - "context" - "log" - - "github.com/arangodb/go-driver/v2/arangodb" - "github.com/arangodb/go-driver/v2/connection" -) - -/*...*/ - -// Create an HTTP connection to the database -endpoint := connection.NewRoundRobinEndpoints([]string{"http://localhost:8529"}) -conn := connection.NewHttp2Connection(connection.DefaultHTTP2ConfigurationWrapper(endpoint, false)) - -auth := connection.NewBasicAuth("root", "password") -err := conn.SetAuthentication(auth) -if err != nil { - log.Fatalf("Failed to set authentication: %v", err) -} - -// Create ASYNC wrapper for the connection -conn = connection.NewConnectionAsyncWrapper(conn) - -// Create a client -client := arangodb.NewClient(conn) - -// Trigger async request -info, errWithJobID := client.Version(connection.WithAsync(context.Background())) -if errWithJobID == nil { - log.Fatalf("Error object should not be nil but be an async job id") -} -if info.Version != "" { - log.Printf("Expected empty version if async request is in progress, got %s", info.Version) -} - -// Fetch an async job id from the error -id, isAsyncId := connection.IsAsyncJobInProgress(errWithJobID) -if !isAsyncId { - log.Fatalf("Expected async job id, got %v", id) -} - -// Wait for an async result -time.Sleep(3 * time.Second) - -// List async jobs - there should be one, till the result is fetched -jobs, err := client.AsyncJobList(context.Background(), arangodb.JobDone, nil) -if err != nil { - log.Fatalf("Failed to list async jobs: %v", err) -} -if len(jobs) != 1 { - log.Fatalf("Expected 1 async job, got %d", len(jobs)) -} - -// Fetch an async job result -info, err = client.Version(connection.WithAsyncID(context.Background(), id)) -if err != nil { - log.Fatalf("Failed to fetch async job result: %v", err) -} -log.Printf("Async job result: %s", info.Version) -``` - -### Important types for Go - -Key types you need to know about to work with ArangoDB using the Go driver: - -- `Database` – to maintain a handle to an open database -- `Collection` – as a handle for a collection of records (node, edge, or document) within a database -- `Graph` – as a handle for a graph overlay containing nodes and edges -- `EdgeDefinition` – a named collection of edges used to help a graph in distributed searching - -These are declared as in the following examples: - -```go -var err error -var client arangodb.Client -var conn connection.Connection -var db arangodb.Database -var col arangodb.Collection -``` - -The following example shows how to open an existing collection in an existing -database and create a new document in that collection. - -```go -// Setup a client connection -endpoint := connection.NewRoundRobinEndpoints([]string{"https://abcdef123456.arangodb.cloud:8529/"}) -conn := connection.NewHttp2Connection(connection.DefaultHTTP2ConfigurationWrapper(endpoint, false)) - -// Add authentication -auth := connection.NewBasicAuth("root", "password") -err := conn.SetAuthentication(auth) -if err != nil { - log.Fatalf("Failed to set authentication: %v", err) -} - -// Create a client -client := arangodb.NewClient(conn) - -// Open the "mydb" database -db, err := client.GetDatabase(nil, "mydb", nil) -if err != nil { - // Handle error -} - -// Open the "coll" collection -col, err := db.GetCollection(nil, "coll", nil) -if err != nil { - // Handle error -} - -// Define a structure for (de)serializing documents -type Book struct { - Title string `json:"title"` - NoPages int `json:"number_pages,omitempty"` -} - -// Create a document -book := Book{ - Title: "ArangoDB Cookbook", - NoPages: 257, -} - -meta, err := col.CreateDocument(nil, book) -if err != nil { - // Handle error -} -log.Printf("Created document in collection '%s' in database '%s'\n", col.Name(), db.Name()) -``` - -### Relationships between Go types and JSON - -A basic principle of the integration between Go and ArangoDB is the mapping from -Go types to JSON documents. Data in the database map to types in Go through JSON. -You need at least two types in a Golang program to work with graphs. - -Go uses a special syntax to map values like struct members like Key, Weight, -Data, etc. to JSON fields. Remember that member names should start with a capital -letter to be accessible outside a packaged scope. You declare types and their -JSON mappings once, as in the examples below. - -```go -// A typical document type -type IntKeyValue struct { - Key string `json:"_key"` // mandatory field (handle) - short name - Value int `json:"value"` -} - -// A typical node type must have field matching _key -type MyNode struct { - Key string `json:"_key"` // mandatory field (handle) - short name - // other fields … e.g. - Data string `json: "data"` // Longer description or bulk string data - Weight float64 `json:"weight"` // importance rank -} - -// A typical edge type must have fields matching _from and _to -type MyEdge struct { - Key string `json:"_key"` // mandatory field (handle) - From string `json:"_from"` // mandatory field - To string `json:"_to"` // mandatory field - // other fields … e.g. - Weight float64 `json:"weight"` -} -``` - -When reading data from ArangoDB with, say, `ReadDocument()`, the API asks you to -submit a variable of some type, say `MyDocumentType`, by reference using the -`&` operator: - -```go -var variable MyDocumentType -mycollection.ReadDocument(nil, rawkey, &variable) -``` - -This submitted type is not necessarily a fixed type, but it must be a type whose -members map (at least partially) to the named fields in the database's JSON -document representation. Only matching fields are filled in. This means you could -create several different Go types to read the same documents in the database, as -long as they have some type fields that match JSON fields. In other words, the -mapping need not be unique or one-to-one, so there is great flexibility in making -new types to extract a subset of the fields in a document. - -The document model in ArangoDB does not require all documents in a collection to -have the same fields. You can choose to have ad hoc schemas and extract only a -consistent set of fields in a query, or rigidly check that all documents have -the same schema. This is a user choice. - -### Working with databases - -#### Create a new database - -```go -ctx := context.Background() -options := arangodb.CreateDatabaseOptions{ /*...*/ } -db, err := client.CreateDatabase(ctx, "myDB", &options) -if err != nil { - // handle error -} -``` - -#### Open a database - -```go -ctx := context.Background() -db, err := client.GetDatabase(ctx, "myDB", nil) -if err != nil { - // handle error -} -``` - -### Working with collections - -#### Create a collection - -```go -ctx := context.Background() -options := arangodb.CreateCollectionProperties{ /* ... */ } -col, err := db.CreateCollection(ctx, "myCollection", &options) -if err != nil { - // handle error -} -``` -#### Check if a collection exists - -```go -ctx := context.Background() -found, err := db.CollectionExists(ctx, "myCollection") -if err != nil { - // handle error -} -``` - -#### Open a collection - -```go -ctx := context.Background() -col, err := db.GetCollection(ctx, "myCollection", nil) -if err != nil { - // handle error -} -``` - -### Working with documents - -#### Create a document - -```go -type MyDocument struct { - Name string `json:"name"` - Counter int `json:"counter"` -} - -doc := MyDocument{ - Name: "jan", - Counter: 23, -} -ctx := context.Background() -meta, err := col.CreateDocument(ctx, doc) -if err != nil { - // handle error -} -fmt.Printf("Created document with key '%s', revision '%s'\n", meta.Key, meta.Rev) -``` - -#### Read a document - -```go -var result MyDocument -ctx := context.Background() -meta, err := col.ReadDocument(ctx, "myDocumentKey (meta.Key)", &result) -if err != nil { - // handle error -} -``` - -#### Read a document with an explicit revision - -```go -var doc MyDocument -ctx := context.Background() -options := arangodb.CreateDatabaseOptions{ - IfMatch: "mySpecificRevision (meta.Rev)", -} -meta, err := col.ReadDocumentWithOptions(revCtx, "myDocumentKey (meta.Key)", &doc, &options) -if err != nil { - // handle error -} -``` - -#### Delete a document - -```go -ctx := context.Background() -meta, err := col.DeleteDocument(ctx, myDocumentKey) -if err != nil { - // handle error -} -``` - -#### Delete a document with an explicit revision - -```go -ctx := context.Background() -options := arangodb.CollectionDocumentDeleteOptions{ - IfMatch: "mySpecificRevision (meta.Rev)", -} -meta, err := col.DeleteDocumentWithOptions(ctx, myDocumentKey, &options) -if err != nil { - // handle error -} -``` - -#### Update a document - -```go -ctx := context.Background() -patch := map[string]interface{}{ - "name": "Frank", -} -meta, err := col.UpdateDocument(ctx, myDocumentKey, patch) -if err != nil { - // handle error -} -``` - -### Working with AQL - -#### Query documents, one document at a time - -```go -ctx := context.Background() -query := "FOR d IN myCollection LIMIT 10 RETURN d" -cursor, err := db.Query(ctx, query, nil) -if err != nil { - // handle error -} else { - defer cursor.Close() - for cursor.HasMore() { - var doc MyDocument - meta, err := cursor.ReadDocument(ctx, &doc) - if err != nil { - // handle error - } else { - fmt.Printf("Got doc with key '%s' from query, name = %s\n", meta.Key, doc.Name) - } - } -} -``` - -#### Query documents, fetching the total count - -```go -ctx := context.Background() -options := arangodb.QueryOptions{ - Count: true, -} - -query := "FOR d IN myCollection RETURN d" -cursor, err := db.Query(ctx, query, &options) -if err != nil { - // handle error -} else { - defer cursor.Close() - fmt.Printf("Query yields %d documents\n", cursor.Count()) -} -``` - -#### Query documents, with bind variables - -```go -ctx := context.Background() -options := arangodb.QueryOptions{ - Count: true, - BindVars: map[string]interface{}{ - "myVar": "Some name", - } -} - -query := "FOR d IN myCollection FILTER d.name == @myVar RETURN d" - -cursor, err := db.Query(ctx, query, &options) -if err != nil { - // handle error -} -defer cursor.Close() -fmt.Printf("Query yields %d documents\n", cursor.Count()) -``` - -### Full example - -```go -package main - -import ( - "context" - "flag" - "fmt" - "log" - "strings" - - "github.com/arangodb/go-driver/v2/arangodb" - "github.com/arangodb/go-driver/v2/arangodb/shared" - "github.com/arangodb/go-driver/v2/connection" -) - -type User struct { - Name string `json:"name"` - Age int `json:"age"` -} - -func main() { - // Create an HTTP connection to the database - endpoint := connection.NewRoundRobinEndpoints([]string{"http://localhost:8529"}) - conn := connection.NewHttp2Connection(connection.DefaultHTTP2ConfigurationWrapper(endpoint, true)) - - auth := connection.NewBasicAuth("root", "") - err := conn.SetAuthentication(auth) - if err != nil { - log.Fatalf("Failed to set authentication: %v", err) - } - - // Create a client - client := arangodb.NewClient(conn) - ctx := context.Background() - - flag.Parse() - - var db arangodb.Database - var dbExists, collExists bool - - dbExists, err = client.DatabaseExists(ctx, "example") - - if dbExists { - fmt.Println("That db exists already") - - db, err = client.GetDatabase(ctx, "example", nil) - - if err != nil { - log.Fatalf("Failed to open existing database: %v", err) - } - } else { - db, err = client.CreateDatabase(ctx, "example", nil) - - if err != nil { - log.Fatalf("Failed to create database: %v", err) - } - } - - // Create collection - collExists, err = db.CollectionExists(ctx, "users") - - if collExists { - fmt.Println("That collection exists already") - } else { - var col arangodb.Collection - col, err = db.CreateCollection(ctx, "users", nil) - - if err != nil { - log.Fatalf("Failed to create collection: %v", err) - } - - // Create documents - users := []User{ - { - Name: "John", - Age: 65, - }, - { - Name: "Tina", - Age: 25, - }, - { - Name: "George", - Age: 31, - }, - } - reader, err := col.CreateDocuments(ctx, users) - if err != nil { - log.Fatalf("Failed to create documents: %v", err) - } - - meta1, err := reader.Read() - if err != nil { - log.Fatalf("Failed to read document: %v", err) - } - meta2, err := reader.Read() - if err != nil { - log.Fatalf("Failed to read document: %v", err) - } - meta3, err := reader.Read() - if err != nil { - log.Fatalf("Failed to read document: %v", err) - } - - keys := []string{meta1.Key, meta2.Key, meta3.Key} - - fmt.Printf("Created documents with keys '%s' in collection '%s' in database '%s'\n", strings.Join(keys, ","), col.Name(), db.Name()) - } - PrintCollection(db) -} - -func PrintCollection(db arangodb.Database) { - var err error - var cursor arangodb.Cursor - - querystring := "FOR doc IN users LIMIT 10 RETURN doc" - - cursor, err = db.Query(nil, querystring, nil) - - if err != nil { - log.Fatalf("Query failed: %v", err) - } - - defer cursor.Close() - - for { - var doc User - var meta arangodb.DocumentMeta - - meta, err = cursor.ReadDocument(nil, &doc) - - if shared.IsNoMoreDocuments(err) { - break - } else if err != nil { - log.Fatalf("Reading document failed: %v", err) - } else { - fmt.Printf("Metadata and document:\n%+v\n%v\n", meta, doc) - } - } -} -``` - -## API Design - -### Concurrency - -All functions of the driver are strictly synchronous. They operate and only -return a value (or error) when they are done. - -If you want to run operations concurrently, use a `go` routine. All objects in -the driver are designed to be used from multiple concurrent go routines, -except `Cursor`. - -All database objects (except `Cursor`) are considered static. After their -creation, they don't change. For example, after creating a `Collection` instance, -you can remove the collection, but the (Go) instance will still be there. Calling -functions on such a removed collection will, of course, fail. - -### Structured error handling & wrapping - -All functions of the driver that can fail return an error value. If that value -is not `nil`, the function call is considered to have failed. In that case, all -other return values are set to their zero values. - -All errors are structured using error-checking functions named -`Is<SomeErrorCategory>`. For example, `IsNotFound(error)` returns true if the -given error is of the category "not found". There can be multiple internal error -codes that all map onto the same category. - -All errors returned from any function of the driver (either internal or exposed) -wrap errors using the `WithStack` function. This can be used to provide detailed -stack traces in case of an error. All error-checking functions use the `Cause` -function to get the cause of an error instead of the error wrapper. - -### Context-aware - -All functions of the driver that involve some kind of long-running operation or -support additional options are not given as function arguments have a -`context.Context` argument. This enables you to cancel running requests, pass -timeouts/deadlines, and pass additional options. - -## Connection management - -### Secure connections (TLS) - -The driver supports endpoints that use TLS using the `https` URL scheme. -Supplying endpoints that start with `https://` instead of `http://` is all you -need to do to use an encrypted connection. - -If you want to connect to a server that has a secure endpoint using a -**self-signed certificate**, you need to skip the certificate verification. - -```go -endpoint := connection.NewRoundRobinEndpoints([]string{"https://localhost:8529"}) -conn := connection.NewHttp2Connection(connection.DefaultHTTP2ConfigurationWrapper(endpoint, /*InsecureSkipVerify*/ true)) -``` - -### Endpoints management - -The driver supports multiple endpoints to connect to. -Currently, Maglev and RoundRobin approaches are supported. - -The following example shows how to connect to a cluster of three servers -using RoundRobin: - -```go -endpoint := connection.NewRoundRobinEndpoints([]string{"http://server1:8529", "http://server2:8529", "http://server3:8529"}) -conn := connection.NewHttp2Connection(connection.DefaultHTTP2ConfigurationWrapper(endpoint, false)) -``` - -Note that a valid endpoint is a URL to either a standalone server or a URL to a -Coordinator in a cluster. - -#### Exact behavior - -The driver monitors the request being sent to a specific server (endpoint). -As soon as the request has been completely written, failover will no longer -happen. The reason for that is that several operations cannot be (safely) retried. -For example, when a request to create a document has been sent to a server, and -a timeout occurs, the driver has no way of knowing if the server did or did not -create the document in the database. - -If the driver detects that a request has been completely written but still gets -an error (other than an error response from ArangoDB itself), it wraps the error -in a `ResponseError`. The client can test for such an error using `IsResponseError`. - -If a client receives a `ResponseError`, it can do one of the following: - -- Retry the operation and be prepared for some kind of duplicate record or - unique constraint violation. -- Perform a test operation to see if the "failed" operation did succeed after all. -- Simply consider the operation failed. This is risky since it can still be the - case that the operation did succeed. - -#### Timeouts - -To control the timeout of any function in the driver, you must pass it a context -configured with `context.WithTimeout` (or `context.WithDeadline`). - -In the case of multiple endpoints, the actual timeout used for requests is -shorter than the timeout given in the context. The driver divides the timeout by -the number of endpoints with a maximum of `3`. This ensures that the driver can -try up to 3 different endpoints (in case of failover) without being canceled due -to the timeout given by the client. Examples: - -- With 1 endpoint and a given timeout of 1 minute, the actual request timeout is 1 minute. -- With 3 endpoints and a given timeout of 1 minute, the actual request timeout is 20 seconds. -- With 8 endpoints and a given timeout of 1 minute, the actual request timeout is 20 seconds. - -For most requests, you want an actual request timeout of at least 30 seconds. diff --git a/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/_index.md b/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/_index.md deleted file mode 100644 index 52f8726704..0000000000 --- a/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: ArangoDB Java Driver version 7 -menuTitle: Reference version 7 -weight: 5 -description: >- - The official ArangoDB Java Driver version 7 ---- diff --git a/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/changes-in-version-7.md b/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/changes-in-version-7.md deleted file mode 100644 index f960b5b5a0..0000000000 --- a/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/changes-in-version-7.md +++ /dev/null @@ -1,448 +0,0 @@ ---- -title: Changes in version 7 -menuTitle: Changes in version 7 -weight: 15 -description: >- - Various detailed have changed, like the setup, transport, configuration, - serialization, and some of the APIs ---- -## Maven Setup - -```xml -<dependencies> - <dependency> - <groupId>com.arangodb</groupId> - <artifactId>arangodb-java-driver</artifactId> - <version>7.x.x</version> - </dependency> -<dependencies> -``` - -Substitute `7.x.x` with the latest available driver version. - -## Gradle Setup - -```groovy -repositories { - mavenCentral() -} - -dependencies { - implementation 'com.arangodb:arangodb-java-driver:7.x.x' -} -``` - -## HTTP client - -The HTTP client has been changed to [Vert.x WebClient](https://vertx.io/docs/vertx-web-client/java/). - -`HTTP/2` is now supported. -`HTTP/2` supports multiplexing and uses `1` connection per host by default. - -Cookies are not supported anymore: cookies received in the response are ignored. - -## Configuration changes - -The default communication protocol is now `HTTP2_JSON` (`HTTP/2` with `JSON` content type). - -The default host configuration to `127.0.0.1:8529` has been removed. - -Configuration properties are not read automatically from properties files anymore. -A new API for loading properties has been introduced: -`ArangoDB.Builder.loadProperties(ArangoConfigProperties)`. -Implementations can supply configuration properties coming from different sources, -like system properties, remote stores, frameworks integrations, etc. -An implementation for loading properties from local files is provided by -`ArangoConfigProperties.fromFile()` and its overloaded variants. - -Example of how to read config properties prefixed with `arangodb` from -`arangodb.properties` file (as in version `6`): - -```java -// ## src/main/resources/arangodb.properties -// arangodb.hosts=172.28.0.1:8529 -// arangodb.password=test -// ... - -ArangoConfigProperties props = ArangoConfigProperties.fromFile(); -``` - -To read config properties from `arangodb-with-prefix.properties` file, where the -config properties are prefixed with `adb`: - -```java -// ## src/main/resources/arangodb-with-prefix.properties -// adb.hosts=172.28.0.1:8529 -// adb.password=test -// ... - -ArangoConfigProperties props = ArangoConfigProperties.fromFile("arangodb-with-prefix.properties", "adb"); -``` - -See the related reference documentation about -[Config File Properties](driver-setup.md#config-file-properties) -for details. - -Examples showing how to provide configuration properties from different sources: -- [Eclipse MicroProfile Config](https://github.com/arangodb-helper/arango-quarkus-native-example/blob/master/src/main/java/com/arangodb/ArangoConfig.java) -- [Micronaut Configuration](https://github.com/arangodb-helper/arango-micronaut-native-example/blob/main/src/main/kotlin/com/example/ArangoConfig.kt) - -## Modules - -Support for different serdes and communication protocols is offered by separate modules. -Default modules are transitively included, but they could be excluded if not needed. - -The main driver artifact `com.arangodb:arangodb-java-driver` has transitive dependencies on default modules: -- `com.arangodb:http-protocol`: `HTTP` communication protocol (HTTP/1.1 and HTTP/2) -- `com.arangodb:jackson-serde-json`: `JSON` user-data serde module based on Jackson Databind - -Alternative module for user-data serde: -- `com.arangodb:jackson-serde-vpack`: `VPACK` user-data serde module based on Jackson Databind - -The modules above are discovered and loaded using SPI (Service Provider Interface). - -In case a non-default communication protocol or user serde are used, the related module(s) -must be explicitly included and the corresponding default module(s) can be excluded. - -For example, to use the driver with `VPACK` over `HTTP`: - -- You must include `com.arangodb:jackson-serde-vpack` -- You can exclude `com.arangodb:jackson-serde-json` -- You don't need to include `com.arangodb:http-protocol` because the driver - includes it automatically - -For example in Maven: - -```xml -<dependencies> - <dependency> - <groupId>com.arangodb</groupId> - <artifactId>arangodb-java-driver</artifactId> - <exclusions> - <exclusion> - <groupId>com.arangodb</groupId> - <artifactId>jackson-serde-json</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>com.arangodb</groupId> - <artifactId>jackson-serde-vpack</artifactId> - </dependency> -</dependencies> -``` - -## Transitive dependencies - -`com.arangodb:arangodb-java-driver` has transitive dependencies on `jackson-core`, -`jackson-databind`, and `jackson-annotations`, using by default version `2.14`. - -The versions of such libraries can be overridden. -The driver is compatible with Jackson 2 (at least `2.10` or greater). - -To do this, you might need to include [jackson-bom](https://github.com/FasterXML/jackson-bom) -to ensure dependency convergence across the entire project, for example in case -there are in your project other libraries depending on different versions of Jackson: - -```xml -<dependencyManagement> - <dependencies> - <dependency> - <groupId>com.fasterxml.jackson</groupId> - <artifactId>jackson-bom</artifactId> - <version>x.y.z</version> - <scope>import</scope> - <type>pom</type> - </dependency> - </dependencies> -</dependencyManagement> -``` - -Substitute `x.y.z` with the latest stable version. - -The module `http-protocol` has transitive dependency on `io.vertx:vertx-web-client`, -which in turn depends on packages from `io.netty`. - -If these dependency requirements cannot be satisfied, i.e. they cause convergence -conflicts with other versions of same packages in the classpath, you might need -to use the [shaded version](#arangodb-java-driver-shaded) of this driver, which -bundles all modules together with relocated external dependencies. - -The dependency on `com.arangodb:velocypack` has been removed from core module and -is now only used as internal dependency by `com.arangodb:jackson-serde-vpack`, -thus transitively imported only when using `VPACK` content type. - -## User Data - -Before version 7.0, the driver always parsed raw strings as JSON, but unfortunately -this did not allow to distinguish it from the case when the intent is to use the -raw string as such, without parsing it. From version 7.0 onward, strings are not -interpreted as JSON anymore. To represent user-data as raw JSON, the wrapper -class `com.arangodb.util.RawJson` has been added: - -```java -RawJson rawJsonIn = RawJson.of(""" - {"foo":"bar"} - """); -ArangoCursor<RawJson> res = adb.db().query("RETURN @v", RawJson.class, Map.of("v", rawJsonIn)); -RawJson rawJsonOut = res.next(); -String json = rawJsonOut.get(); // {"foo":"bar"} -``` - -To represent user-data already encoded as byte array, the wrapper class `RawBytes` -has been added. The byte array can either represent a `JSON` string (UTF-8 encoded) -or a `VPACK` value. The format used should match the driver protocol configuration -(`JSON` for `HTTP_JSON` and `HTTP2_JSON`, otherwise `VPACK`). - -The following changes have been applied to `com.arangodb.entity.BaseDocument` -and `com.arangodb.entity.BaseEdgeDocument`: -- new method `removeAttribute(String)` -- `getProperties()` returns an unmodifiable map - -Before version 7.0, when performing write operations, the metadata of the input -data objects was updated in place with the metadata received in the response. -From version 7.0 onward, the input data objects passed as arguments to API methods -are treated as immutable and the related metadata fields are not updated anymore. -The updated metadata can be found in the returned object. - -## Serialization / Deserialization - -Up to version 6, the (de)serialization was always performed to/from `VPACK`. -In case the JSON format was required, the raw `VPACK` was then converted to `JSON`. -From version 7 onward, the serialization module is a dataformat-agnostic API. -Implementations can serialize and deserialize directly to the target dataformat, -without intermediate conversion to `VPACK`. The default implementation uses the -`JSON` format. - -Support for data type `VPackSlice` has been removed in favor of Jackson type -`com.fasterxml.jackson.databind.JsonNode` and its subclasses -(`ArrayNode`, `ObjectNode`, ...), for example: - -```java -JsonNode jsonNodeIn = JsonNodeFactory.instance - .objectNode() - .put("foo", "bar"); - -ArangoCursor<JsonNode> res = adb.db().query("RETURN @v", JsonNode.class, Map.of("v", jsonNodeIn)); -JsonNode jsonNodeOut = res.next(); -String foo = jsonNodeOut.get("foo").textValue(); // bar -``` - -The dependency on `com.arangodb:velocypack` has been removed. Since version 3.0, -`com.arangodb:velocypack` does not include databind functionalities anymore. -It only offers a lower level API to deal with primitive `VPACK` types. -`VPACK` databind functionalities are now offered by -[`jackson-dataformat-velocypack`](https://github.com/arangodb/jackson-dataformat-velocypack), -which is a Jackson backend for `VPACK` dataformat. - -The user-data custom serializer implementation `ArangoJack` has been removed in -favor of `com.arangodb.serde.jackson.JacksonSerde`. This allows using Jackson API -to serialize and deserialize user-data, compatible with both `JSON` and `VPACK`. - -See the detailed documentation about [Serialization](serialization.md) -for more information. - -## ArangoDB Java Driver Shaded - -From version 7 onward, a shaded variant of the driver is also published with -Maven coordinates: `com.arangodb:arangodb-java-driver-shaded`. - -It bundles and relocates the following packages: -- `com.fasterxml.jackson` -- `com.arangodb.jackson.dataformat.velocypack` -- `io.vertx` -- `io.netty` - -Note that the **internal serde** internally uses Jackson classes from -`com.fasterxml.jackson` that are relocated to `com.arangodb.shaded.fasterxml.jackson`. -Therefore, the **internal serde** of the shaded driver is not compatible with -Jackson annotations and modules from package`com.fasterxml.jackson`, but only -with their relocated variants. In case the **internal serde** is used as -**user-data serde**, the annotations from package `com.arangodb.serde` can be -used to annotate fields, parameters, getters and setters for mapping values -representing ArangoDB documents metadata (`_id`, `_key`, `_rev`, `_from`, `_to`): -- `@InternalId` -- `@InternalKey` -- `@InternalRev` -- `@InternalFrom` -- `@InternalTo` - -These annotations are compatible with relocated Jackson classes. -Note that the **internal serde** is not part of the public API and could change -in future releases without notice, thus breaking client applications relying on -it to serialize or deserialize user-data. It is therefore recommended also in -this case either: -- using the default user-data serde `JacksonSerde` (from packages `com.arangodb:jackson-serde-json` or -`com.arangodb:jackson-serde-vpack`), or -- providing a custom user-data serde implementation via `ArangoDB.Builder.serde(ArangoSerde)`. - -## Removed APIs - -The following client APIs have been removed: - -- client APIs already deprecated in Java Driver version `6` -- client API to interact with deprecated server APIs: - - `MMFiles` related APIs - - `ArangoDatabase.executeTraversal()` - - `ArangoDB.getLogs()` - - `minReplicationFactor` in collections and graphs - - `overwrite` flag in `DocumentCreateOptions` - - `hash` and `skipList` indexes - -The user-data custom serializer implementation `ArangoJack` has been removed in -favor of `com.arangodb.serde.jackson.JacksonSerde`. - -Support for interpreting raw strings as JSON has been removed -(in favor of `com.arangodb.util.RawJson`). - -Support of data type `com.arangodb.velocypack.VPackSlice` has been removed in -favor of Jackson type `com.fasterxml.jackson.databind.JsonNode` and its subclasses -(`ArrayNode`, `ObjectNode`, ...). Raw `VPACK` data can now be used with -`com.arangodb.util.RawBytes`. - -Support for custom initialization of cursors -(`ArangoDB._setCursorInitializer(ArangoCursorInitializer cursorInitializer)`) -has been removed. - -## Async API - -From version 7.2 onward, the driver provides a new asynchronous API. -Unlike in version 6, the asynchronous API is based on the same underlying driver -instance and therefore supports all the communication protocols and configurations -of the synchronous API. The asynchronous API is accessible via `ArangoDB#async()`, -for example: - -```java -ArangoDB adb = new ArangoDB.Builder() - // ... - .build(); -ArangoDBAsync adbAsync = adb.async(); -CompletableFuture<ArangoDBVersion> version = adbAsync.getVersion(); -// ... -``` - -Under the hood, both synchronous and asynchronous API use the same internal -communication layer, which has been reworked and re-implemented in an -asynchronous way. The synchronous API blocks and waits for the result, while the -asynchronous one returns a `CompletableFuture<>` representing the pending -operation being performed. -Each asynchronous API method is equivalent to the corresponding synchronous -variant, except for the Cursor API. - -### Async Cursor API - -The Cursor API (`ArangoCursor` and `ArangoCursorAsync`) is intrinsically different, -because the synchronous Cursor API is based on Java's `java.util.Iterator`, which -is an interface only suitable for synchronous scenarios. -On the other side, the asynchronous Cursor API provides a method -`com.arangodb.ArangoCursorAsync#nextBatch()`, which returns a -`CompletableFuture<ArangoCursorAsync<T>>` and can be used to consume the next -batch of the cursor, for example: - -```java -CompletableFuture<ArangoCursorAsync<Integer>> future1 = adbAsync.db() - .query("FOR i IN i..10000", Integer.class); -CompletableFuture<ArangoCursorAsync<Integer>> future2 = future1 - .thenCompose(c -> { - List<Integer> batch = c.getResult(); - // ... - // consume batch - // ... - return c.nextBatch(); - }); -// ... -``` - -## API methods changes - -Before version 7.0, some CRUD API methods inferred the return type from the type -of the data object passed as input. Now, the return type can be explicitly set -for each CRUD API method. This type is used as deserialization target by the -user-data serde. In particular, no automatic type inference is performed anymore in: -- `ArangoCollection.insertDocuments()` -- `ArangoCollection.replaceDocuments()` -- `ArangoCollection.updateDocuments()` -- `ArangoCollection.deleteDocuments()` - -Unless specified explicitly, the target deserialization type is `Void.class`, -thus allowing only `null` values. - -CRUD operations operating with multiple documents have now an overloaded variant -which accepts raw data (`RawBytes` and `RawJson`) containing multiple documents. - -CRUD operations operating with multiple documents with parametric types are now covariant: -- `ArangoCollection.insertDocuments(Collection<? extends T>, DocumentCreateOptions, Class<T>)` -- `ArangoCollection.replaceDocuments(Collection<? extends T>, DocumentReplaceOptions, Class<T>)` - -`com.arangodb.Request` and `com.arangodb.Response` classes have been refactored -to support generic body type. `ArangoDB.execute(Request<T>, Class<U>): Response<U>` -accepts now the target deserialization type for the response body. - -`com.arangodb.ArangoDBException` has been enhanced with the id of the request -causing it. This can be useful to correlate it with the debug level logs. - -Graph API has been updated (#486): -- added `com.arangodb.ArangoEdgeCollection.drop()` and overloads -- added `com.arangodb.ArangoVertexCollection.drop(VertexCollectionDropOptions)` -- updated `com.arangodb.ArangoGraph.replaceEdgeDefinition()` - -`ArangoDatabase.getDocument()` has been removed, in favor of `ArangoCollection.getDocument()`. - -`ArangoDatabase.query()` overloaded variants have now a different order of parameters: -- `query(String query, Class<T> type)` -- `query(String query, Class<T> type, AqlQueryOptions options)` -- `query(String query, Class<T> type, Map<String,Object> bindVars)` -- `query(String query, Class<T> type, Map<String,Object> bindVars, AqlQueryOptions options)` - -The class `com.arangodb.DbName` has been removed. The database names can now be -passed as `String`. Support to UTF-8 characters in data definition names -(databases, collections, Views, indexes) has been added, see -[Support for extended naming constraints](../_index.md#support-for-extended-naming-constraints). - -The name of `ArangoCollection` and `ArangoView` API classes are now final. -The related rename methods: -- `com.arangodb.ArangoCollection.rename(String)` -- `com.arangodb.ArangoView.rename(String)` - -Do not change anymore the collection or view name of the instance of the related -API class on which it is invoked. To interact with the renamed collection, a new -instance of `ArangoCollection` with the new name must be created. - -## API entities - -All entities and options classes (in packages `com.arangodb.model` and -`com.arangodb.entity`) are now `final`. - -The replication factor is now modeled with a new interface -(`com.arangodb.entity.ReplicationFactor`) with implementations: -`NumericReplicationFactor` and `SatelliteReplicationFactor`. - -Cursor statistics are now in `com.arangodb.entity.CursorStats`. - -## GraalVM Native Image - -The driver supports GraalVM Native Image compilation. -To compile with `--link-at-build-time` when `http-protocol` module is present in -the classpath, additional substitutions are be required for its transitive -dependencies (`Netty` and `Vert.x`). See this -[example](https://github.com/arangodb/arangodb-java-driver/tree/main/test-functional/src/test-default/java/graal) -for reference. Such substitutions are not required when compiling the shaded driver. - -### Framework compatibility - -The driver can be used in the following frameworks that support -GraalVM Native Image generation: - -- [Quarkus](https://quarkus.io), see [arango-quarkus-native-example](https://github.com/arangodb-helper/arango-quarkus-native-example) -- [Helidon](https://helidon.io), see [arango-helidon-native-example](https://github.com/arangodb-helper/arango-helidon-native-example) -- [Micronaut](https://micronaut.io), see [arango-micronaut-native-example](https://github.com/arangodb-helper/arango-micronaut-native-example) - -## Migration - -To migrate your existing project to Java Driver version 7.0, it is recommended -first updating to the latest version of branch `6` and make sure that your code -does not use any deprecated API. This can be done by checking the presence of -deprecation warnings in the Java compiler output. - -The deprecation notes in the related JavaDoc contain information about the -reason of the deprecation and suggest migration alternatives to use. diff --git a/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/driver-setup.md b/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/driver-setup.md deleted file mode 100644 index 6972a542de..0000000000 --- a/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/driver-setup.md +++ /dev/null @@ -1,300 +0,0 @@ ---- -title: Driver setup -menuTitle: Driver Setup -weight: 5 -description: >- - How to connect your Java application to an ArangoDB server, as well as - important configuration settings and information about the driver ---- -The driver can be configured and instantiated using `com.arangodb.ArangoDB.Builder`: - -```java -ArangoDB arangoDB = new ArangoDB.Builder() - // ... - .build(); -``` - -To customize the configuration properties can be set programmatically in the builder: - -```java -ArangoDB arangoDB = new ArangoDB.Builder() - .host("127.0.0.1",8529) - // ... - .build(); -``` - -or providing an implementation of `com.arangodb.config.ArangoConfigProperties` -to the builder: - -```java -ArangoConfigProperties props = ... -ArangoDB arangoDB = new ArangoDB.Builder() - .loadProperties(props) - // ... - .build(); -``` - -Implementations of `com.arangodb.config.ArangoConfigProperties` could supply -configuration properties coming from different sources, eg. system properties, -remote stores, frameworks integrations, etc. -An implementation for loading properties from local files is provided by -`ArangoConfigProperties.fromFile()` and its overloaded variants. - -To read config properties prefixed with `arangodb` from `arangodb.properties` -file: - -```java -// ## src/main/resources/arangodb.properties -// arangodb.hosts=172.28.0.1:8529 -// arangodb.password=test -// ... - -ArangoConfigProperties props = ArangoConfigProperties.fromFile(); -``` - -To read config properties from `arangodb-with-prefix.properties` file, where the -config properties are prefixed with `adb`: - -```java -// ## src/main/resources/arangodb-with-prefix.properties -// adb.hosts=172.28.0.1:8529 -// adb.password=test -// ... - -ArangoConfigProperties props = ArangoConfigProperties.fromFile("arangodb-with-prefix.properties", "adb"); -``` - -Here are examples to integrate configuration properties from different sources: -- [Eclipse MicroProfile Config](https://github.com/arangodb-helper/arango-quarkus-native-example/blob/master/src/main/java/com/arangodb/ArangoConfig.java) -- [Micronaut Configuration](https://github.com/arangodb-helper/arango-micronaut-native-example/blob/main/src/main/kotlin/com/example/ArangoConfig.kt) - -## Configuration - -`ArangoDB.Builder` has the following configuration methods: - -- `host(String, int)`: Adds a host (hostname and port) to connect to, multiple hosts can be added -- `protocol(Protocol)`: Communication protocol, possible values are: `HTTP_JSON`, `HTTP_VPACK`, `HTTP2_JSON`, `HTTP2_VPACK`, `VST` (unsupported from ArangoDB v3.12 onward), (default: `HTTP2_JSON`) -- `timeout(Integer)`: Connection and request timeout (ms), (default `0`, no timeout) -- `user(String)`: Username for authentication, (default: `root`) -- `password(String)`: Password for authentication -- `jwt(String)`: JWT for authentication -- `useSsl(Boolean)`: Use SSL connection, (default: `false`) -- `sslContext(SSLContext)`: SSL context -- `sslCertValue(String)`: SSL certificate value as Base64-encoded String -- `sslAlgorithm(String)`: Name of the SSL Trust manager algorithm (default: `SunX509`) -- `sslProtocol(String)`: Name of the SSLContext protocol (default: `TLS`) -- `verifyHost(Boolean)`: Enable hostname verification, (HTTP only, default: `true`) -- `maxConnections(Integer)`: Max number of connections per host, (default: `1` for `HTTP/2`, `20` for `HTTP/1.1`) -- `connectionTtl(Long)`: Time to live of an inactive connection (ms), (default: `30_000`) -- `acquireHostList(Boolean)`: Acquire the list of available hosts, (default: `false`) -- `acquireHostListInterval(Integer)`: The interval for acquiring the host list (ms), (default: `3_600_000`, 1 hour) -- `loadBalancingStrategy(LoadBalancingStrategy)`: Load balancing strategy, possible values are: `NONE`, `ROUND_ROBIN`, `ONE_RANDOM`, (default: `NONE`) -- `responseQueueTimeSamples(Integer)`: Amount of samples kept for queue time metrics, (default: `10`) -- `compression(Compression)`: The `content-encoding` and `accept-encoding` to use for HTTP requests, possible values are: `NONE`, `DEFLATE`, `GZIP`, (default: `NONE`) -- `compressionThreshold(Integer)`: The minimum HTTP request body size (in bytes) to trigger compression, (default: `1024`) -- `compressionLevel`: Compression level between 0 and 9, (default: `6`) -- `serde(ArangoSerde)`: Serde to serialize and deserialize user-data -- `serdeProviderClass(Class<? extends ArangoSerdeProvider>)`: Serde provider to be used to instantiate the user-data serde -- `protocolConfig(ProtocolConfig)`: Configuration specific for the used protocol provider implementation -- `pipelining(Boolean):`: Use HTTP pipelining, (`HTTP/1.1` only, default `false`) - -### HTTP Protocol Provider Configuration - -The `ProtocolConfig` for the default HTTP protocol provider can be created via: - -```java -HttpProtocolConfig.builder() - // ... - .build(); -``` - -and configured using the following builder methods: - -- `vertx(Vertx)`: Vert.x instance to use. If not set, a new instance is created. - -For example, to reuse the existing Vert.x instance: - -```java -HttpProtocolConfig.builder() - .protocolConfig(HttpProtocolConfig.builder() - .vertx(Vertx.currentContext().owner()) - .build() - ) - .build(); -``` - -### Config File Properties - -`ArangoConfigProperties.fromFile()` reads config properties prefixed with `arangodb` -from `arangodb.properties` file. Different prefix and -file name can be specified using its overloaded variants. - -The properties read are: -- `hosts`: comma-separated list of `<hostname>:<port>` entries -- `protocol`: `HTTP_JSON`, `HTTP_VPACK`, `HTTP2_JSON`, `HTTP2_VPACK`, or `VST` (unsupported from ArangoDB v3.12 onward) -- `timeout` -- `user` -- `password` -- `jwt` -- `useSsl` -- `sslCertValue`: SSL certificate as Base64-encoded string -- `sslAlgorithm`: SSL trust manager algorithm (default: `SunX509`) -- `sslProtocol`: SSLContext protocol (default: `TLS`) -- `verifyHost` -- `chunkSize` -- `maxConnections` -- `connectionTtl` -- `keepAliveInterval` -- `acquireHostList` -- `acquireHostListInterval` -- `loadBalancingStrategy`: `NONE`, `ROUND_ROBIN` or `ONE_RANDOM` -- `responseQueueTimeSamples` -- `compression`: `NONE`, `DEFLATE` or `GZIP` -- `compressionThreshold` -- `compressionLevel` -- `serdeProviderClass`: fully qualified name of the provider class -- `pipelining` - -## SSL - -To use SSL, you have to set the configuration `useSsl` to `true`. -By default, the driver uses the default `SSLContext`. -To change this, you can provide the `SSLContext` instance to use: - -```java -ArangoDB arangoDB = new ArangoDB.Builder() - .useSsl(true) - .sslContext(sc) - .build(); -``` - -Alternatively, the driver can create a new `SSLContext` using the provided -configuration. In this case, it is required to set the configuration `sslCertValue` -with the SSL certificate value as Base64-encoded String: - -```java -ArangoDB arangoDB = new ArangoDB.Builder() - .useSsl(true) - .sslCertValue("<certificate>") // SSL certificate as Base64-encoded String - .sslAlgorithm("SunX509") // SSL Trust manager algorithm (optional, default: SunX509) - .sslProtocol("TLS") // SSLContext protocol (optional, default: TLS) - .build(); -``` - -See the [example code](https://github.com/arangodb/arangodb-java-driver/blob/main/test-functional/src/test-ssl/java/com/arangodb/SslExampleTest.java) -for more details on SSL configuration. - -## Connection Pooling - -The driver keeps a pool of connections for each host, the max amount of -connections is configurable. - -Inactive connections are released after the configured connection time-to-live -(`ArangoDB.Builder.connectionTtl(Long)`) or when the driver is shut down: - -```java -arangoDB.shutdown(); -``` - -## Thread Safety - -The driver can be used concurrently by multiple threads. All the following -classes are thread safe: -- `com.arangodb.ArangoDB` -- `com.arangodb.ArangoDatabase` -- `com.arangodb.ArangoCollection` -- `com.arangodb.ArangoGraph` -- `com.arangodb.ArangoVertexCollection` -- `com.arangodb.ArangoEdgeCollection` -- `com.arangodb.ArangoView` -- `com.arangodb.ArangoSearch` - -Any other class should not be considered thread safe. In particular classes -representing request options (package `com.arangodb.model`) and response entities -(package `com.arangodb.entity`) are **not** thread safe. - -## Fallback hosts - -The driver supports configuring multiple hosts. The first host is used to open a -connection to. When this host is not reachable the next host from the list is used. -To use this feature just call the method `host(String, int)` multiple times. - -```java -ArangoDB arangoDB = new ArangoDB.Builder() - .host("host1", 8529) - .host("host2", 8529) - .build(); -``` - -The driver is also able to acquire a list of known hosts in a cluster. For this the driver has -to be able to successfully open a connection to at least one host to get the -list of hosts. Then it can use this list when fallback is needed. To enable this -feature: - -```java -ArangoDB arangoDB = new ArangoDB.Builder() - .acquireHostList(true) - .build(); -``` - -## Load Balancing - -The driver supports load balancing for cluster setups in -two different ways. - -The first one is a round robin load balancing where the driver iterates -through a list of known hosts and performs every request on a different -host than the request before. - -```java -ArangoDB arangoDB = new ArangoDB.Builder() - .loadBalancingStrategy(LoadBalancingStrategy.ROUND_ROBIN) - .build(); -``` - -The second load balancing strategy picks a random host from host list -(configured or acquired) and sticks to it as long as the -connection is open. - -```java -ArangoDB arangoDB = new ArangoDB.Builder() - .loadBalancingStrategy(LoadBalancingStrategy.ONE_RANDOM) - .build(); -``` - -## Connection time to live - -The driver supports setting a TTL (time to live) for connections: - -```java -ArangoDB arango = new ArangoDB.Builder() - .connectionTtl(5 * 60 * 1000) // ms - .build(); -``` - -In this example, inactive connections are closed after 5 minutes. - -The default connection TTL is `30` seconds. - -If set to `null`, no automatic connection closure is performed. - -## Proxy configuration - -The driver allows configuring the underlying Vert.x WebClient to work -with HTTP proxies. The configuration is specific to the HTTP protocol -and uses the `io.vertx.core.net.ProxyOptions` class of -[Vert.x Core](https://www.javadoc.io/doc/io.vertx/vertx-core/4.5.7/io/vertx/core/net/ProxyOptions.html): - -```java -ArangoDB arango = new ArangoDB.Builder() - // ... - .protocolConfig(HttpProtocolConfig.builder() - .proxyOptions(new ProxyOptions() - .setType(ProxyType.HTTP) - .setHost("172.28.0.1") - .setPort(8888) - .setUsername("user") - .setPassword("password")) - .build()) - .build(); -``` diff --git a/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/serialization.md b/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/serialization.md deleted file mode 100644 index af4dfd27f1..0000000000 --- a/site/content/arangodb/3.13/develop/drivers/java/reference-version-7/serialization.md +++ /dev/null @@ -1,247 +0,0 @@ ---- -title: Serialization -menuTitle: Serialization -weight: 10 -description: >- - The Java driver uses Jackson internally for serialization and deserialization - but you can use a custom implementation for user data ---- -The driver functionalities related to serialization and deserialization (serde) -are implemented by 2 different components: -- `internal serde` -- `user-data serde` - -The **internal serde** is based on [Jackson](https://github.com/FasterXML/jackson) -API and is responsible for serializing/deserializing data definition classes -(in packages `com.arangodb.model` and `com.arangodb.entity`). -This includes all the classes that are not user-data, such as metadata properties -for databases, collections, graphs, etc. - -Furthermore, it is used to serialize and deserialize user-data of the following managed types: -- `com.fasterxml.jackson.databind.JsonNode` and its subclasses (`ArrayNode`, `ObjectNode`, ...) -- `com.arangodb.util.RawJson` -- `com.arangodb.util.RawBytes` -- `com.arangodb.entity.BaseDocument` -- `com.arangodb.entity.BaseEdgeDocument` - -Note that in `arangodb-java-driver-shaded`, due to dependencies relocation, the -fully-qualified class name of first entry above (`JsonNode`) is: -`com.arangodb.shaded.fasterxml.jackson.databind.JsonNode`. -The same relocation rule is also applied to its subclasses (`ArrayNode`, `ObjectNode`, ...). - -The **user-data serde** is used to serialize and deserialize the user-data, -namely the data representing: -- documents -- nodes -- edges -- AQL bind variables -- transactions parameters -- bodies of custom requests and custom responses (`com.arangodb.Request<T>` and `com.arangodb.Response<T>`). - -A `user-data serde` implements the `com.arangodb.serde.ArangoSerde` interface, -which is an abstract API with no dependencies on specific libraries. -The `user-data serde` can be explicitly registered via `ArangoDB.Builder#serde(ArangoSerde)`. -If no serde is registered, then the driver will use SPI (Service Provider Interface) to automatically -discover and load serde service providers (instances of `com.arangodb.serde.ArangoSerdeProvider`). -In case no `user-data serde` is explicitly registered and no serde service provider can be discovered via SPI, then the -**internal serde** will be used to serialize and deserialize user-data. In this case, please note that the -**internal serde** is not part of the public API and could change in future releases without notice, thus breaking -client applications relying on it to serialize or deserialize user-data. - -Examples of custom `user-data serde` implementations can be found here: -- [JSON_B serde](https://github.com/arangodb/arangodb-java-driver/tree/main/jsonb-serde/src/main/java/com/arangodb/serde/jsonb): - a custom serde implementation based on `JSON-B` (supporting `JSON` format only) -- [Micronaut Serialization serde](https://github.com/arangodb-helper/arango-micronaut-native-example/blob/main/src/main/kotlin/com/example/ArangoService.kt): - a custom serde implementation based on - [Micronaut Serialization](https://micronaut-projects.github.io/micronaut-serialization/latest/guide/index.html) - -## JacksonSerde (default user-data serde) - -The default `user-data serde` is `com.arangodb.serde.jackson.JacksonSerde`. -It is implemented delegating [Jackson](https://github.com/FasterXML/jackson) -`ObjectMapper`, thus compatible with Jackson Streaming, Data Binding and Tree Model API. - -It supports both `JSON` and `VPACK` data formats, while offering the same API to the user. - -The `JSON` implementation is provided by the -[`com.arangodb:jackson-serde-json` module](https://github.com/arangodb/arangodb-java-driver/tree/main/jackson-serde-json) -and transitively imported by `arangodb-java-driver`. This implementation is -used by default. - -The `VPACK` implementation is provided by the optional -[`com.arangodb:jackson-serde-vpack` module](https://github.com/arangodb/arangodb-java-driver/tree/main/jackson-serde-vpack), -which uses the [jackson-dataformat-velocypack](https://github.com/arangodb/jackson-dataformat-velocypack) -implementation internally. - -### Mapping API - -`JacksonSerde` is fully compatible with [Jackson Databind](https://github.com/FasterXML/jackson-databind) -API. To customize the serialization and deserialization behavior using the -Jackson Data Binding API, entities can be annotated with -[Jackson Annotations](https://github.com/FasterXML/jackson-annotations). -For more advanced customizations refer to [Custom serializer](#custom-serializers) section. - -### Document Annotations - -The annotations from package `com.arangodb.serde.jackson` can be used to annotate -fields, parameters, getters and setters for mapping values representing ArangoDB -documents metadata (`_id`, `_key`, `_rev`, `_from`, `_to`): -- `@Id` -- `@Key` -- `@Rev` -- `@From` -- `@To` - -### Renaming Properties - -To use a different serialized name for a field, use the annotation `@JsonProperty`. - -```java -public class MyObject { - @JsonProperty("title") - private String name; -} -``` - -### Ignoring properties - -To ignore fields use the annotation `@JsonIgnore`. - -```java -public class Value { - @JsonIgnore - public int internalValue; -} -``` - -### Custom Configuration - -Create an instance of `JacksonSerde`, configure the underlying `ObjectMapper` -and register it in the driver: - -```java -JacksonSerde serde = JacksonSerde.of(ContentType.JSON); -serde.configure((ObjectMapper mapper) -> { - // ... -}); - -ArangoDB adb = new ArangoDB.Builder() - .serde(serde) - // ... - .build(); -``` - -See also [Jackson Databind](https://github.com/FasterXML/jackson-databind/wiki/JacksonFeatures) -configurable features. - -### Custom serializers - -The serialization and deserialization can be customized using the lower level -Streaming API or the Tree Model API, creating and registering respectively -`JsonSerializer<T>` and `JsonDeserializer<T>`, as specified by the Jackson API -for [CustomSerializers](https://github.com/FasterXML/jackson-docs/wiki/JacksonHowToCustomSerializers). - -```java -static class PersonSerializer extends JsonSerializer<Person> { - @Override - public void serialize(Person value, JsonGenerator gen, SerializerProvider serializers) throws IOException { - // example using the Streaming API - gen.writeStartObject(); - gen.writeFieldName("name"); - gen.writeString(value.name); - gen.writeEndObject(); - } -} - -static class PersonDeserializer extends JsonDeserializer<Person> { - @Override - public Person deserialize(JsonParser parser, DeserializationContext ctxt) throws IOException { - // example using the Tree Model API - Person person = new Person(); - JsonNode rootNode = parser.getCodec().readTree(parser); - JsonNode nameNode = rootNode.get("name"); - if (nameNode != null && nameNode.isTextual()) { - person.name = nameNode.asText(); - } - return person; - } -} - -// registering using annotation -@JsonSerialize(using = PersonSerializer.class) -public static class Person { - public String name; -} - -// registering programmatically -JacksonSerde serde = JacksonSerde.of(ContentType.JSON); -serde.configure(mapper -> { - SimpleModule module = new SimpleModule("PersonModule"); - module.addDeserializer(Person.class, new PersonDeserializer()); - mapper.registerModule(module); -}); - -ArangoDB adb = new ArangoDB.Builder() - .serde(serde) - // ... - .build(); -``` - -### Jackson datatype and language modules - -The `JacksonSerde` can be configured -with [Jackson datatype modules](https://github.com/FasterXML/jackson#third-party-datatype-modules) -as well as [Jackson JVM Language modules](https://github.com/FasterXML/jackson#jvm-language-modules). - -### Kotlin - -[Kotlin language module](https://github.com/FasterXML/jackson-module-kotlin) -enables support for Kotlin classes and types and can be registered in the following way: - -```kotlin -val arangoDB = ArangoDB.Builder() - .serde(JacksonSerde.of(ContentType.JSON).apply { - configure { it.registerModule(KotlinModule()) } - }) - .build() -``` - -### Scala - -[Scala language module](https://github.com/FasterXML/jackson-module-scala) -enables support for Scala classes and types and can be registered in the following way: - -```scala -val serde = JacksonSerde.of(ContentType.JSON) -serde.configure(mapper => mapper.registerModule(DefaultScalaModule)) - -val arangoDB = new ArangoDB.Builder() - .serde(arangoJack) - .build() -``` - -### Java 8 types - -Support for Java 8 features is offered by -[jackson-modules-java8](https://github.com/FasterXML/jackson-modules-java8). - -### Joda types - -Support for Joda data types, such as DateTime, is offered by -[jackson-datatype-joda](https://github.com/FasterXML/jackson-datatype-joda). - -### Metadata fields - -Metadata fields `_id`, `_key`, `_rev`, `_from`, `_to` can be mapped using -respectively the annotations (from package `com.arangodb.serde.jackson`): -`@Id`, `@Key`, `@Rev`, `@From`, `@To`. - -```java -public class MyObject { - - @Key - private String key; - - // ... -} -``` diff --git a/site/content/arangodb/3.13/develop/drivers/python.md b/site/content/arangodb/3.13/develop/drivers/python.md deleted file mode 100644 index 4b028a616c..0000000000 --- a/site/content/arangodb/3.13/develop/drivers/python.md +++ /dev/null @@ -1,678 +0,0 @@ ---- -title: ArangoDB Python driver -menuTitle: Python driver -weight: 30 -description: >- - Python-Arango is the official ArangoDB driver that provides Python - applications with the complete range of features exposed by the server API ---- -The Python-Arango driver is the recommended driver for using ArangoDB as the -database backend from Python. It is maintained by ArangoDB and the community. - -- Repository: <https://github.com/arangodb/python-arango> -- Reference: <https://docs.python-arango.com/> -- [Tutorial](https://university.arangodb.com/courses/python-driver-tutorial/) -- [Releases](https://github.com/arangodb/python-arango/releases) - -There is also an asyncio counterpart called `python-arango-async`. -It has a similar API and features type wrappers. - -- Repository: <https://github.com/arangodb/python-arango-async> -- Reference: <https://python-arango-async.readthedocs.io/> -- [Tutorial](https://github.com/arangodb/python-arango-async/wiki/Tutorial) -- [Releases](https://github.com/arangodb/python-arango-async/releases) - -## Installation - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -The `python-arango` library can be used in any Python project that targets -Python version 3.8 or later. - -To install the library using PIP, run the following command in a terminal: - -```sh -pip install python-arango --upgrade -``` - -You can then import the library in your project as follows: - -```python -from arango import ArangoClient -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -The `python-arango-async` library can be used in any Python project that targets -Python version 3.10 or later. - -To install the library using PIP, run the following command in a terminal: - -```sh -pip install python-arango-async --upgrade -``` - -You can then import the library in your project as follows: - -```python -from arangoasync import ArangoClient -``` -{{< /tab >}} - -{{< /tabs >}} - - - -## Get started - -The following example shows how to use the driver from connecting to ArangoDB, -over creating databases, collections, indexes, and documents, to retrieving -data using queries: - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -from arango import ArangoClient - -# Initialize the client for ArangoDB. -client = ArangoClient(hosts="http://localhost:8529") - -# Connect to "_system" database as root user. -sys_db = client.db("_system", username="root", password="passwd") - -# Create a new database named "test". -sys_db.create_database("test") - -# Connect to "test" database as root user. -db = client.db("test", username="root", password="passwd") - -# Create a new collection named "students". -students = db.create_collection("students") - -# Add a persistent index to the collection. -students.add_index({'type': 'persistent', 'fields': ['name'], 'unique': True}) - -# Insert new documents into the collection. -students.insert({"name": "jane", "age": 39}) -students.insert({"name": "josh", "age": 18}) -students.insert({"name": "judy", "age": 21}) - -# Execute an AQL query and iterate through the result cursor. -cursor = db.aql.execute("FOR doc IN students RETURN doc") -student_names = [document["name"] for document in cursor] -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python -from arangoasync import ArangoClient -from arangoasync.auth import Auth - -# Initialize the client for ArangoDB. -async with ArangoClient(hosts="http://localhost:8529") as client: - auth = Auth(username="root", password="passwd") - - # Connect to "_system" database as root user. - sys_db = await client.db("_system", auth=auth) - - # Create a new database named "test". - await sys_db.create_database("test") - - # Connect to "test" database as root user. - db = await client.db("test", auth=auth) - - # Create a new collection named "students". - students = await db.create_collection("students") - - # Add a persistent index to the collection. - await students.add_index(type="persistent", fields=["name"], options={"unique": True}) - - # Insert new documents into the collection. - await students.insert({"name": "jane", "age": 39}) - await students.insert({"name": "josh", "age": 18}) - await students.insert({"name": "judy", "age": 21}) - - # Execute an AQL query and iterate through the result cursor. - cursor = await db.aql.execute("FOR doc IN students RETURN doc") - async with cursor: - student_names = [] - async for doc in cursor: - student_names.append(doc["name"]) -``` - -You may also use the client without a context manager, but you must ensure to -close the client when done. - -```python -from arangoasync import ArangoClient -from arangoasync.auth import Auth - -client = ArangoClient(hosts="http://localhost:8529") -auth = Auth(username="root", password="passwd") -sys_db = await client.db("_system", auth=auth) - -# Create a new database named "test". -await sys_db.create_database("test") - -# Connect to "test" database as root user. -db = await client.db("test", auth=auth) - -# List all collections in the "test" database. -collections = await db.collections() - -# Close the client when done. -await client.close() -``` -{{< /tab >}} - -{{< /tabs >}} - -The following example shows how to create a [named graph](../../graphs/_index.md), -populate it with nodes and edges, and query it with a graph traversal: - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -from arango import ArangoClient - -# Initialize the client for ArangoDB. -client = ArangoClient(hosts="http://localhost:8529") - -# Connect to "test" database as root user. -db = client.db("test", username="root", password="passwd") - -# Create a new graph named "school". -graph = db.create_graph("school") - -# Create a new EnterpriseGraph -eegraph = db.create_graph( - name="school", - smart=True) - -# Create node collections for the graph. -students = graph.create_vertex_collection("students") -lectures = graph.create_vertex_collection("lectures") - -# Create an edge definition (relation) for the graph. -edges = graph.create_edge_definition( - edge_collection="register", - from_vertex_collections=["students"], - to_vertex_collections=["lectures"] -) - -# Insert node documents into "students" (from) node collection. -students.insert({"_key": "01", "full_name": "Anna Smith"}) -students.insert({"_key": "02", "full_name": "Jake Clark"}) -students.insert({"_key": "03", "full_name": "Lisa Jones"}) - -# Insert node documents into "lectures" (to) node collection. -lectures.insert({"_key": "MAT101", "title": "Calculus"}) -lectures.insert({"_key": "STA101", "title": "Statistics"}) -lectures.insert({"_key": "CSC101", "title": "Algorithms"}) - -# Insert edge documents into "register" edge collection. -edges.insert({"_from": "students/01", "_to": "lectures/MAT101"}) -edges.insert({"_from": "students/01", "_to": "lectures/STA101"}) -edges.insert({"_from": "students/01", "_to": "lectures/CSC101"}) -edges.insert({"_from": "students/02", "_to": "lectures/MAT101"}) -edges.insert({"_from": "students/02", "_to": "lectures/STA101"}) -edges.insert({"_from": "students/03", "_to": "lectures/CSC101"}) - -# Traverse the graph in outbound direction, breath-first. -query = """ - FOR v, e, p IN 1..3 OUTBOUND 'students/01' GRAPH 'school' - OPTIONS { bfs: true, uniqueVertices: 'global' } - RETURN {node: v, edge: e, path: p} - """ -cursor = db.aql.execute(query) -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python -from arangoasync import ArangoClient -from arangoasync.auth import Auth - -# Initialize the client for ArangoDB. -async with ArangoClient(hosts="http://localhost:8529") as client: - auth = Auth(username="root", password="passwd") - - # Connect to "test" database as root user. - db = await client.db("test", auth=auth) - - # Get the API wrapper for graph "school". - if await db.has_graph("school"): - graph = db.graph("school") - else: - graph = await db.create_graph("school") - - # Create vertex collections for the graph. - students = await graph.create_vertex_collection("students") - lectures = await graph.create_vertex_collection("lectures") - - # Create an edge definition (relation) for the graph. - edges = await graph.create_edge_definition( - edge_collection="register", - from_vertex_collections=["students"], - to_vertex_collections=["lectures"] - ) - - # Insert vertex documents into "students" (from) vertex collection. - await students.insert({"_key": "01", "full_name": "Anna Smith"}) - await students.insert({"_key": "02", "full_name": "Jake Clark"}) - await students.insert({"_key": "03", "full_name": "Lisa Jones"}) - - # Insert vertex documents into "lectures" (to) vertex collection. - await lectures.insert({"_key": "MAT101", "title": "Calculus"}) - await lectures.insert({"_key": "STA101", "title": "Statistics"}) - await lectures.insert({"_key": "CSC101", "title": "Algorithms"}) - - # Insert edge documents into "register" edge collection. - await edges.insert({"_from": "students/01", "_to": "lectures/MAT101"}) - await edges.insert({"_from": "students/01", "_to": "lectures/STA101"}) - await edges.insert({"_from": "students/01", "_to": "lectures/CSC101"}) - await edges.insert({"_from": "students/02", "_to": "lectures/MAT101"}) - await edges.insert({"_from": "students/02", "_to": "lectures/STA101"}) - await edges.insert({"_from": "students/03", "_to": "lectures/CSC101"}) - - # Traverse the graph in outbound direction, breath-first. - query = """ - FOR v, e, p IN 1..3 OUTBOUND 'students/01' GRAPH 'school' - OPTIONS { bfs: true, uniqueVertices: 'global' } - RETURN {vertex: v, edge: e, path: p} - """ - - async with await db.aql.execute(query) as cursor: - async for doc in cursor: - print(doc) -``` -{{< /tab >}} - -{{< /tabs >}} - -## Work with databases - -### Connect to a database - -To connect to a database, create an instance of `ArangoClient` which provides a -connection to the database server. Then call its `db` method and pass the -database name, user name, and password as parameters. - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -from arango import ArangoClient - -# Initialize a client -client = ArangoClient(hosts="http://localhost:8529") - -# Connect to the system database -sys_db = client.db("_system", username="root", password="passwd") -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python -from arangoasync import ArangoClient -from arangoasync.auth import Auth - -# Initialize the client for ArangoDB. -async with ArangoClient(hosts="http://localhost:8529") as client: - auth = Auth(username="root", password="passwd") - - # Connect to "_system" database as root user. - sys_db = await client.db("_system", auth=auth) -``` -{{< /tab >}} - -{{< /tabs >}} - -### Retrieve a list of all databases - -To retrieve a list of all databases on an ArangoDB server, connect to the -`_system` database and call the `databases()` method. - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -# Retrieve the names of all databases on the server as list of strings -db_list = sys_db.databases() -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python - # Retrieve the names of all databases on the server as list of strings - db_list = await sys_db.databases() -``` -{{< /tab >}} - -{{< /tabs >}} - -### Create a database - -To create a new database, connect to the `_system` database and call -`create_database()`. - - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -# Create a new database named "test". -ok = sys_db.create_database("test") - -# Connect to "test" database as root user. -test_db = client.db("test", username="root", password="passwd") -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python - # Create a new database named "test". - ok = await sys_db.create_database("test") - - # Connect to "test" database as root user. - test_db = await client.db("test", auth=auth) -``` -{{< /tab >}} - -{{< /tabs >}} - -### Delete a database - -To delete an existing database, connect to the `_system` database and call -`delete_database()` passing the name of the database to be deleted as a -parameter. The `_system` database cannot be deleted. Make sure to specify -the correct database name when you are deleting databases. - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -# Delete the 'test' database -sys_db.delete_database("test") -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python - # Delete the 'test' database - ok = await sys_db.delete_database("test") -``` -{{< /tab >}} - -{{< /tabs >}} - -## Work with collections - -### Retrieve a list of collections - -To retrieve a list of collections in a database, connect to the database and -call `collections()`. - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -# Connect to the database -db = client.db(db_name, username=user_name, password=pass_word) - -# Retrieve the list of collections -collection_list = db.collections() -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python - # Connect to the database - db = await client.db(db_name, auth=Auth(username=user_name, password=pass_word)) - - # Retrieve the list of collections as CollectionInfo objects - collection_list = await db.collections() -``` -{{< /tab >}} - -{{< /tabs >}} - -### Create a collection - -To create a new collection, connect to the database and call `create_collection()`. - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -# Create a new collection for doctors -doctors_col = db.create_collection(name="doctors") - -# Create another new collection for patients -patients_col = db.create_collection(name="patients") -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python - # Create a new collection for doctors - doctors_col = await db.create_collection(name="doctors") - - # Create another new collection for patients - patients_col = await db.create_collection(name="patients") -``` -{{< /tab >}} - -{{< /tabs >}} - -### Delete a collection - -To delete a collection, connect to the database and call `delete_collection()`, -passing the name of the collection to be deleted as a parameter. Make sure to -specify the correct collection name when you delete collections. - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -# Delete the 'doctors' collection -db.delete_collection(name="doctors") -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python - # Delete the 'doctors' collection - ok = await db.delete_collection(name="doctors") -``` -{{< /tab >}} - -{{< /tabs >}} - -## Work with documents - -### Create a document - -To create a new document, get a reference to the collection and call its -`insert()` method, passing the object/document to be created in ArangoDB as -a parameter. - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -# Get a reference to the 'patients' collection -patients_col = db.collection(name="patients") - -# Insert two new documents into the 'patients' collection -meta1 = patients_col.insert({"name": "Jane", "age": 39}) -meta2 = patients_col.insert({"name": "John", "age": 18}) -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python - # Get a reference to the 'patients' collection - patients_col = db.collection(name="patients") - - # Insert two new documents into the 'patients' collection - meta1 = await patients_col.insert({"name": "Jane", "age": 39}) - meta2 = await patients_col.insert({"name": "John", "age": 18}) -``` -{{< /tab >}} - -{{< /tabs >}} - -In this example, John's patient record is as follows: - -```json -{ - "_id": "patients/741603", - "_rev": "_fQ2grGu---", - "_key": "741603", - "name": "John", - "age": 18 -} -``` - -### Update a document - -To patch or partially update a document, call the `update()` method of the -collection and pass the object/document as a parameter. The document must have -a property named `_key` holding the unique key assigned to the document. - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -# Patch John's patient record by adding a city property to the document -meta = patients_col.update({ "_key": "741603", "city": "Cleveland" }) -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python - # Patch John's patient record by adding a city property to the document - meta = await patients_col.update({ "_key": "741603", "city": "Cleveland" }) -``` -{{< /tab >}} - -{{< /tabs >}} - -After the patching operation, John's document is as follows for example: - -```json -{ - "_id": "patients/741603", - "_rev": "_fQ2h4TK---", - "_key": "741603", - "name": "John", - "age": 18, - "city": "Cleveland" -} -``` - -Notice that the record was patched by adding a `city` property to the document. -All other properties remain the same. - -### Replace a document - -To replace or fully update a document, call the `replace()` method of the -collection and pass the object/document that fully replaces thee existing -document as a parameter. The document must have a property named `_key` holding -the unique key assigned to the document. - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -# Replace John's document -meta = patients_col.replace({ "_key": "741603", "fullname": "John Doe", "age": 18, "city": "Cleveland" }) -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python - # Replace John's document - meta = await patients_col.replace({ "_key": "741603", "fullname": "John Doe", "age": 18, "city": "Cleveland" }) -``` -{{< /tab >}} - -{{< /tabs >}} - -After the replacement operation, John's document is as follows: - -```json -{ - "_id": "patients/741603", - "_rev": "_fQ2uY3y---", - "_key":"741603", - "fullname": "John Doe", - "age": 18, - "city": "Cleveland" -} -``` - -Notice that the `name` property is now gone from John's document because it was -not specified in the request when the document was fully replaced. - -### Delete a document - -To delete a document, call the `delete()` method of the collection and pass an -document containing at least the `_key` attribute as a parameter. - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -# Delete John's document -patients_col.delete({ "_key": "741603" }) -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python - # Delete John's document - meta = await patients_col.delete({ "_key": "741603" }) -``` -{{< /tab >}} - -{{< /tabs >}} - -## Work with AQL - -### Run AQL queries - -To run a query, connect to the desired database and call `aql.execute()`. -This returns a cursor, which lets you fetch the results in batches. You can -iterate over the cursor to automatically fetch the data. - -{{< tabs "python-driver" >}} - -{{< tab "python-arango" >}} -```python -# Run a query -cursor = db.aql.execute('FOR i IN 1..@value RETURN i', bind_vars={'value': 3}) - -# Print the results -for doc in cursor: - print(doc) -``` -{{< /tab >}} - -{{< tab "python-arango-async" >}} -```python - # Run a query - cursor = await db.aql.execute('FOR i IN 1..@value RETURN i', bind_vars={'value': 3}) - - # Print the results - async with cursor: - async for doc in cursor: - print(doc) -``` -{{< /tab >}} - -{{< /tabs >}} diff --git a/site/content/arangodb/3.13/develop/http-api/_index.md b/site/content/arangodb/3.13/develop/http-api/_index.md index e42c7b49f3..e52e55ee54 100644 --- a/site/content/arangodb/3.13/develop/http-api/_index.md +++ b/site/content/arangodb/3.13/develop/http-api/_index.md @@ -13,7 +13,7 @@ world wide web. All interactions with a server are ultimately carried out via this HTTP API. You can use the API by sending HTTP requests to the server directly, but the -more common way of communicating with the server is via a [database driver](../drivers/_index.md). +more common way of communicating with the server is via a [database driver](../../../../ecosystem/drivers/_index.md). A driver abstracts the complexity of the API away by providing a simple interface for your programming language or environment and handling things like authentication, connection pooling, asynchronous requests, and multi-part replies diff --git a/site/content/arangodb/3.13/develop/integrations/_index.md b/site/content/arangodb/3.13/develop/integrations/_index.md deleted file mode 100644 index 3469808d73..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/_index.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Integrations -menuTitle: Integrations -weight: 290 -description: >- - Integrations for third-party tools and frameworks let you use ArangoDB as the - database backend for these products ---- -Database integrations allow applications to work with different database systems -using a common interface. They are higher-level than database drivers because -they abstract away the details of specific database systems, especially the -low-level network communication. - -## Spring Data - -The [**Spring Data integration**](spring-data-arangodb/_index.md) for ArangoDB -lets you use ArangoDB as a database system in Spring-based Java applications. - -- [Tutorial](spring-data-arangodb/_index.md#get-started) -- Repository: [github.com/arangodb/spring-data](https://github.com/arangodb/spring-data) -- [Changelog](https://github.com/arangodb/spring-data/blob/main/ChangeLog.md) - -## Spring Boot Starter - -The [**Spring Boot Starter**](spring-boot-arangodb.md) simplifies the use of the -Spring Data integration for ArangoDB so you get started quickly. It is a set of -convenient dependency descriptors that you can include in your application. - -- [Tutorial](spring-boot-arangodb.md#get-started) -- Repository: <https://github.com/arangodb/spring-boot-starter> -- [Changelog](https://github.com/arangodb/spring-boot-starter/blob/main/Changelog.md) - -## Apache Spark - -The [**ArangoDB Datasource for Apache Spark**](arangodb-datasource-for-apache-spark.md) is a -library that lets you use Apache Spark with ArangoDB for data processing. -Apache Spark has first-party support for the Scala, Java, Python, and R language. - -- Repository: [github.com/arangodb/arangodb-spark-datasource](https://github.com/arangodb/arangodb-spark-datasource) -- [Changelog](https://github.com/arangodb/arangodb-spark-datasource/blob/main/ChangeLog.md) - -## Apache Kafka - -The [**Kafka Connect ArangoDB Sink Connector**](kafka-connect-arangodb-sink-connector/_index.md) -allows you to export data from Apache Kafka to ArangoDB. - -- Repository: [github.com/arangodb/kafka-connect-arangodb/](https://github.com/arangodb/kafka-connect-arangodb/) -- [Demo](https://github.com/arangodb/kafka-connect-arangodb/tree/main/demo) -- [Changelog](https://github.com/arangodb/kafka-connect-arangodb/blob/main/ChangeLog.md) - -## TinkerPop Provider - -The [**ArangoDB TinkerPop Provider**](arangodb-tinkerpop-provider.md) is an implementation of -the [Apache TinkerPop OLTP Provider](https://tinkerpop.apache.org/docs/3.7.3/dev/provider) API -for ArangoDB. - -- Repository: [github.com/arangodb/arangodb-tinkerpop-provider](https://github.com/arangodb/arangodb-tinkerpop-provider) -- [Changelog](https://github.com/arangodb/arangodb-tinkerpop-provider/blob/main/CHANGELOG.md) diff --git a/site/content/arangodb/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md b/site/content/arangodb/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md deleted file mode 100644 index e6d003325d..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md +++ /dev/null @@ -1,244 +0,0 @@ ---- -title: ArangoDB Sink Connector Configuration Properties -menuTitle: Configuration -weight: 5 -description: '' ---- -## Connection - -### connection.endpoints - -- type: _list_ - -Database connection endpoints as comma separated list of `host:port` entries. -For example: `coordinator1:8529,coordinator2:8529`. - -### connection.user - -- type: _string_ -- default: `root` - -Database connection user. - -### connection.password - -- type: _string_ - -Database connection password. - -### connection.database - -- type: _string_ -- default: `_system` - -Target database name. - -### connection.collection - -- type: _string_ - -Target collection name. - -### connection.acquireHostList.enabled - -- type: _boolean_ -- default: `false` - -Periodically acquire the list of all known ArangoDB hosts in the cluster and -trigger tasks reconfiguration in case of changes. - -### connection.acquireHostList.interval.ms - -- type: _int_ -- default: `60_000` - -Interval for acquiring the host list. - -### connection.rebalance.interval.ms - -- type: _int_ -- default: `1_800_000` (30 min) - -Interval for re-balancing the connections across the endpoints. - -### connection.protocol - -- type: _string_ -- default: `HTTP2` - -Communication protocol: - -- `VST` (not supported from ArangoDB v3.12.0 onward) -- `HTTP11` -- `HTTP2` - -### connection.content.type - -- type: _string_ -- default: `JSON` - -Communication content type: - -- `JSON` -- `VPACK` - -## SSL - -### ssl.enabled - -- type: _boolean_ -- default: `false` - -SSL secured driver connection. - -### ssl.cert.value - -- type: _string_ - -Base64 encoded SSL certificate. - -### ssl.cert.type - -- type: _string_ -- default: `X.509` - -Certificate type. - -### ssl.cert.alias - -- type: _string_ -- default: `arangodb` - -Certificate alias name. - -### ssl.algorithm - -- type: _string_ -- default: `SunX509` - -Trust manager algorithm. - -### ssl.keystore.type - -- type: _string_ -- default: `jks` - -Keystore type. - -### ssl.protocol - -- type: _string_ -- default: `TLS` - -SSLContext protocol. - -### ssl.hostname.verification - -- type: _boolean_ -- default: `true` - -SSL hostname verification. - -### ssl.truststore.location - -- type: _string_ - -The location of the trust store file. - -### ssl.truststore.password - -- type: _string_ - -The password for the trust store file. - -## Writes - -### insert.overwriteMode - -- type: _string_ -- default: `conflict` - -The overwrite mode to use in case a document with the specified `_key` value -already exists: - -- `conflict`: the new document value is not written and an exception is thrown. -- `ignore`: the new document value is not written. -- `replace`: the existing document is overwritten with the new document value. -- `update`: the existing document is patched (partially updated) with the new - document value. The behavior can be further controlled with the - `insert.mergeObjects` setting. - -### insert.mergeObjects - -- type: _boolean_ -- default: `true` - -Whether objects (not arrays) are merged, in case `insert.overwriteMode` is set -to `update`: - -- `true`: objects are merged -- `false`: existing document fields are overwritten - -### batch.size - -- type: _int_ -- default: `3_000` - -Specifies how many records to attempt to batch together for insertion or deletion -into the destination collection. - -### insert.timeout.ms - -- type: _int_ -- default: `30_000` - -Connect and request timeout in ms. - -### insert.waitForSync - -- type: _boolean_ -- default: `false` - -Whether to wait until the documents have been synced to disk. - -### delete.enabled - -- type: _boolean_ -- default: `false` - -Whether to enable delete behavior when processing tombstones. - -## Error handling - -### data.errors.tolerance - -- type: _string_ -- default: `none` - -Whether data errors are tolerated during connector operation. - -- `none`: data errors result in an immediate connector task failure -- `all`: changes the behavior to skip over records generating data errors. - If DLQ is configured, then the record is reported. - -### extra.data.error.nums - -- type: _list_ - -Additional server `errorNums` to be considered data errors. - -## Retries - -### max.retries - -- type: _int_ -- default: `10` - -The maximum number of times to retry transient errors. - -### retry.backoff.ms - -- type: _int_ -- default: `3_000` - -The time in milliseconds to wait following an error before a retry attempt is made. diff --git a/site/content/arangodb/3.13/develop/integrations/spring-boot-arangodb.md b/site/content/arangodb/3.13/develop/integrations/spring-boot-arangodb.md deleted file mode 100644 index 4633df80a8..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-boot-arangodb.md +++ /dev/null @@ -1,1507 +0,0 @@ ---- -title: Spring Boot Starter ArangoDB -menuTitle: Spring Boot Starter -weight: 7 -description: >- - The Spring Boot Starter for ArangoDB is a set of convenient dependency descriptors - that you can include in your application based on the Spring framework ---- -- [Repository](https://github.com/arangodb/spring-boot-starter) -- [Demo](https://github.com/arangodb/spring-boot-starter/tree/main/demo) - -## Supported versions - -Spring Boot Starter ArangoDB is compatible with all supported versions of ArangoDB. -For more information, see the [End-of-life announcements](https://www.arangodb.com/subscriptions/end-of-life-notice/). - -This integration has multiple versions released, and each one is compatible with -the corresponding versions of Spring Boot, Spring Framework, Spring Data ArangoDB, -and ArangoDB Java Driver: - -| Spring Boot Starter ArangoDB | Spring Boot | Spring Framework | Spring Data ArangoDB | ArangoDB Java Driver | -|------------------------------|-------------|------------------|----------------------|----------------------| -| 3.3-x | 3.3 | 6.1 | 4.2 | 7.7 | -| 3.2-x | 3.2 | 6.1 | 4.2 | 7.7 | - -Note that the adopted versioning scheme does not honor the semantic versioning -rules, i.e. minor or patch releases may introduce new features or breaking -changes. Please refer to [releases](https://github.com/arangodb/spring-boot-starter/releases) -for details. - -## Get started - -This is an extensive demo on how to use -[Spring Data ArangoDB](https://github.com/arangodb/spring-data) with an example -dataset of **Game of Thrones** characters and locations. - -### Build a project with Maven - -First, you have to set up a project and add every needed dependency. -This demo use Maven and Spring Boot and adds `arangodb-spring-boot-starter` to -auto-configure Spring Data ArangoDB. - -Create a Maven `pom.xml`: - -```xml -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-parent</artifactId> - <version>x.y.z</version> - <relativePath/> <!-- lookup parent from repository --> - </parent> - - <groupId>com.arangodb</groupId> - <artifactId>spring-data-arangodb-tutorial</artifactId> - <version>1.0.0</version> - - <name>demo</name> - <description>Demo project for Spring Boot</description> - - <properties> - <java.version>17</java.version> - </properties> - - <dependencies> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter</artifactId> - </dependency> - <dependency> - <groupId>com.arangodb</groupId> - <artifactId>arangodb-spring-boot-starter</artifactId> - <version>x.y.z</version> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - </plugin> - </plugins> - </build> - -</project> -``` - -Substitute `x.y.z` with the latest available versions that are compatible. -See the [Supported versions](#supported-versions) for details. -You may also adjust the Java version. - -### Monitor the server health - -ArangoDB health monitoring can be applied to your application by adding -`spring-boot-starter-actuator` to your project and calling the -`GET /actuator/health` endpoint against your application. - -```xml -<dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-actuator</artifactId> -</dependency> -``` - -### Create an Application class - -After you have ensured that you can fetch all the necessary dependencies, you -can create your first classes. - -The `DemoApplication` class is the main class where you later add certain -`CommandLineRunner` instances to be executed. - -```java -package com.arangodb.spring.demo; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class DemoApplication { - public static void main(final String... args) { - Class<?>[] runner = new Class<?>[]{}; - System.exit(SpringApplication.exit(SpringApplication.run(runner, args))); - } -} -``` - -### Application configuration - -You need to provide the configuration for the database connection. -You can do this by adding to `src/main/resources/application.properties` -with the properties of -[ArangoProperties](https://github.com/arangodb/spring-boot-starter/blob/main/src/main/java/com/arangodb/springframework/boot/autoconfigure/ArangoProperties.java). - -``` -arangodb.spring.data.database=spring-demo -arangodb.spring.data.user=root -arangodb.spring.data.password=test -arangodb.spring.data.hosts=localhost:8529 -``` - -## Data modeling - -Create your first bean representing a collection in your database. With the -`@Document` annotation, you define the collection as a document collection. -In this case, the alternative name characters for the collection are also defined. -By default, the collection name is determined by the class name. `@Document` -also provides additional options for the collection, which is used at the -creation time of the collection. - -Because many operations on documents require a document handle, it's recommended -to add a field of type `String` annotated with `@Id` to every entity. The name -doesn't matter. It's further recommended to **not set or change** the id by hand. - -```java -package com.arangodb.spring.demo.entity; - -import com.arangodb.springframework.annotation.Document; -import org.springframework.data.annotation.Id; - -@Document("characters") -public class Character { - - @Id // db document field: _key - private String id; - - @ArangoId // db document field: _id - private String arangoId; - - private String name; - private String surname; - private boolean alive; - private Integer age; - - public Character() { - super(); - } - - public Character(final String name, final String surname, final boolean alive) { - super(); - this.name = name; - this.surname = surname; - this.alive = alive; - } - - public Character(final String name, final String surname, final boolean alive, final Integer age) { - super(); - this.name = name; - this.surname = surname; - this.alive = alive; - this.age = age; - } - - // getter & setter - - @Override - public String toString() { - return "Character [id=" + id + ", name=" + name + ", surname=" + surname + ", alive=" + alive + ", age=" + age + "]"; - } - -} -``` - -## CRUD operations - -### Create a repository - -Now that you have your data model, you want to store data. For this, you create -a repository interface which extends `ArangoRepository`. This gives you access -to CRUD operations, paging, and query by example mechanics. - -```java -package com.arangodb.spring.demo.repository; - -import com.arangodb.spring.demo.entity.Character; -import com.arangodb.springframework.repository.ArangoRepository; - -public interface CharacterRepository extends ArangoRepository<Character, String> { - -} -``` - -### Create a CommandLineRunner - -To run your demo with Spring Boot, you have to create a class implementing -`CommandLineRunner`. In this class, you can use the `@Autowired` annotation to -inject your `CharacterRepository` – created one step earlier – and also -`ArangoOperations` which offers a central support for interactions with the -database over a rich feature set. It mostly offers the features from the -[ArangoDB Java driver](https://github.com/arangodb/arangodb-java-driver) -with additional exception translation. - -To get the injection successfully running, you have to add `@ComponentScan` to your -runner to define where Spring can find your configuration class `DemoConfiguration`. - -```java -package com.arangodb.spring.demo.runner; - -import com.arangodb.spring.demo.repository.CharacterRepository; -import com.arangodb.springframework.core.ArangoOperations; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; -import org.springframework.context.annotation.ComponentScan; - -@ComponentScan("com.arangodb.spring.demo") -public class CrudRunner implements CommandLineRunner { - - @Autowired - private ArangoOperations operations; - @Autowired - private CharacterRepository repository; - - @Override - public void run(final String... args) throws Exception { - - } -} -``` - -### Save and read an entity - -It's time to save your first entity in the database. Both the database and the -collection don't have to be created manually. This happens automatically as soon -as you execute a database request with the components involved. You don't have -to leave the Java world to manage your database. - -After you saved a character in the database, the id in the original entity is -updated with the one generated from the database. You can then use this id to -find your persisted entity. - -```java -package com.arangodb.spring.demo.runner; - -import com.arangodb.spring.demo.entity.Character; -import com.arangodb.spring.demo.repository.CharacterRepository; -import com.arangodb.springframework.core.ArangoOperations; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; -import org.springframework.context.annotation.ComponentScan; - -import java.util.Optional; - -@ComponentScan("com.arangodb.spring.demo") -public class CrudRunner implements CommandLineRunner { - - @Autowired - private ArangoOperations operations; - @Autowired - private CharacterRepository repository; - - @Override - public void run(String... args) throws Exception { - // first drop the database so that we can run this multiple times with the same dataset - operations.dropDatabase(); - - // save a single entity in the database - // there is no need of creating the collection first. This happen automatically - final Character nedStark = new Character("Ned", "Stark", true, 41); - repository.save(nedStark); - // the generated id from the database is set in the original entity - System.out.println(String.format("Ned Stark saved in the database with id: '%s'", nedStark.getId())); - - // let us take a look whether we can find Ned Stark in the database - final Optional<Character> foundNed = repository.findById(nedStark.getId()); - assert foundNed.isPresent(); - System.out.println(String.format("Found %s", foundNed.get())); - } -} -``` - -### Run the demo - -The last thing you have to do before you can successfully run your demo -application is to add your command line runner `CrudRunner` to the list of -runners in your main class `DemoApplication`. - -```java -Class<?>[]runner = new Class<?>[]{CrudRunner.class}; -``` - -After executing the demo application, you should see the following lines within -your console output. The id will of course deviate. - -``` -Ned Stark saved in the database with id: '346' -Found Character [id=346, name=Ned, surname=Stark, alive=true, age=41] -``` - -### Update an entity - -As everyone probably knows, Ned Stark died in the first season of Game of Thrones. -So, you should to update his 'alive' flag. Thanks to the `id` field in the -`Character` class, you can use the `save()` method of the repository to perform -an upsert with the variable `nedStark` in which `id` is already set. - -Add the following lines of code to the end of our `run()` method in `CrudRunner`: - -```java -nedStark.setAlive(false); -repository.save(nedStark); -final Optional<Character> deadNed = repository.findById(nedStark.getId()); -assert deadNed.isPresent(); -System.out.println(String.format("The 'alive' flag of the persisted Ned Stark is now '%s'",deadNed.get().isAlive())); -``` - -If you run the demo a second time, the console output should look like this: - -``` -Ned Stark saved in the database with id: '508' -Found Character [id=508, name=Ned, surname=Stark, alive=true, age=41] -The 'alive' flag of the persisted Ned Stark is now 'false' -``` - -### Save and read multiple entities - -What you can do with a single entity, you can also do with multiple entities. -It's not just a single method call for convenience purpose, it also requires -only one database request. - -The following code is for saving a bunch of characters but only the main cast of -Game of Thrones – that's already a lot. After that, you can fetch all of them -from your collection and count them. - -Extend the `run()` method with these lines of code: - -```java -Collection<Character> createCharacters = createCharacters(); -System.out.println(String.format("Save %s additional characters",createCharacters.size())); -repository.saveAll(createCharacters); - -long count = repository.count(); -System.out.println(String.format("A total of %s characters are persisted in the database", count)); -``` - -You also need the `createCharacters()` method which looks as follow: - -```java -public static Collection<Character> createCharacters(){ - return Arrays.asList( - new Character("Robert","Baratheon",false), - new Character("Jaime","Lannister",true,36), - new Character("Catelyn","Stark",false,40), - new Character("Cersei","Lannister",true,36), - new Character("Daenerys","Targaryen",true,16), - new Character("Jorah","Mormont",false), - new Character("Petyr","Baelish",false), - new Character("Viserys","Targaryen",false), - new Character("Jon","Snow",true,16), - new Character("Sansa","Stark",true,13), - new Character("Arya","Stark",true,11), - new Character("Robb","Stark",false), - new Character("Theon","Greyjoy",true,16), - new Character("Bran","Stark",true,10), - new Character("Joffrey","Baratheon",false,19), - new Character("Sandor","Clegane",true), - new Character("Tyrion","Lannister",true,32), - new Character("Khal","Drogo",false), - new Character("Tywin","Lannister",false), - new Character("Davos","Seaworth",true,49), - new Character("Samwell","Tarly",true,17), - new Character("Stannis","Baratheon",false), - new Character("Melisandre",null,true), - new Character("Margaery","Tyrell",false), - new Character("Jeor","Mormont",false), - new Character("Bronn",null,true), - new Character("Varys",null,true), - new Character("Shae",null,false), - new Character("Talisa","Maegyr",false), - new Character("Gendry",null,false), - new Character("Ygritte",null,false), - new Character("Tormund","Giantsbane",true), - new Character("Gilly",null,true), - new Character("Brienne","Tarth",true,32), - new Character("Ramsay","Bolton",true), - new Character("Ellaria","Sand",true), - new Character("Daario","Naharis",true), - new Character("Missandei",null,true), - new Character("Tommen","Baratheon",true), - new Character("Jaqen","H'ghar",true), - new Character("Roose","Bolton",true), - new Character("The High Sparrow",null,true)); - } -``` - -After executing the demo again, the console should print the following -additional lines: - -``` -Save 42 additional characters -A total of 43 characters are persisted in the database -``` - -### Read with sorting and paging - -Next to the normal `findAll()` method, `ArangoRepository` also offers the -ability to sort the fetched entities by a given field name. Adding the following -source code at the end of your `run()` method gives you all characters sorted by -field `name`: - -```java -System.out.println("## Return all characters sorted by name"); -List<Character> allSorted = repository.findAll(Sort.by(Sort.Direction.ASC, "name")); -allSorted.forEach(System.out::println); -``` - -Furthermore, it's possible to use pagination combined with sorting. With the -following code, you get the first 5 characters sorted by name: - -```java -System.out.println("## Return the first 5 characters sorted by name"); -Page<Character> first5Sorted = repository.findAll(PageRequest.of(0, 5, Sort.by(Sort.Direction.ASC, "name"))); -first5Sorted.forEach(System.out::println); -``` - -Your console output should include Arya Stark, Bran Stark, Brienne Tarth, Bronn -and Catelyn Stark. - -``` -## Return the first 5 characters sorted by name -Character [id=1898, name=Arya, surname=Stark, alive=true, age=11] -Character [id=1901, name=Bran, surname=Stark, alive=true, age=10] -Character [id=1921, name=Brienne, surname=Tarth, alive=true, age=32] -Character [id=1913, name=Bronn, surname=null, alive=true, age=null] -Character [id=1890, name=Catelyn, surname=Stark, alive=false, age=40] -``` - -## Query by example - -Since version 1.12, Spring Data provides the `QueryByExampleExecutor` interface -which is also supported by ArangoDB Spring Data. It allows execution of queries -by `Example` instances. - -Create a new `CommandLineRunner` for this: - -```java -package com.arangodb.spring.demo.runner; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.data.domain.Example; -import org.springframework.data.domain.ExampleMatcher; - -import com.arangodb.spring.demo.entity.Character; -import com.arangodb.spring.demo.repository.CharacterRepository; - -@ComponentScan("com.arangodb.spring.demo") -public class ByExampleRunner implements CommandLineRunner { - - @Autowired - private CharacterRepository repository; - - @Override - public void run(final String... args) throws Exception { - System.out.println("# Query by example"); - } - -} -``` - -Add it to your `DemoApplication`: - -```java -Class<?>[]runner = new Class<?>[]{ - CrudRunner.class, - ByExampleRunner.class -}; -``` - -### Single entity - -First, find Ned Stark again. But this time without knowing the id of the -persisted entity. Start with creating a Character with the same property values -as the searched one. Then create an `Example` instance of it with `Example.of(T) -and search for it with `findOne(Example)` from your `CharacterRepository`: - -```java -final Character nedStark = new Character("Ned", "Stark", false, 41); -System.out.println(String.format("## Find character which exactly match %s",nedStark)); -Optional<Character> foundNedStark = repository.findOne(Example.of(nedStark)); -System.out.println(String.format("Found %s", foundNedStark.get())); -``` - -If you did everything right, the console output should be as follows: - -``` -# Query by example -## Find character which exactly match Character [id=null, name=Ned, surname=Stark, alive=false, age=41] -Found Character [id=1880, name=Ned, surname=Stark, alive=false, age=41] -``` - -### Multiple entities - -Now find more than one entity. A lot of Starks die in Game of Thrones, so take a -look who is already dead. For this, you create a new instance of Character with -`surname` `"Stark"` and `alive` `false`. Because you only need these two fields -in your entity, you have to ignore the other fields in your `ExampleMatcher`. - -```java -System.out.println("## Find all dead Starks"); -Iterable<Character> allDeadStarks = repository.findAll(Example.of(new Character(null, "Stark", false))); -allDeadStarks.forEach(System.out::println); -``` - -After executing the application, the console output should be as follows: - -``` -## Find all dead Starks -Character [id=1887, name=Ned, surname=Stark, alive=false, age=41] -Character [id=1890, name=Catelyn, surname=Stark, alive=false, age=40] -Character [id=1899, name=Robb, surname=Stark, alive=false, age=null] -``` - -In addition to searching for specific values of the example entity, you can -search for dynamically depending values. In the next example, search for a Stark -who is 30 years younger than Ned Stark. Instead of changing the age of Ned Stark -in the previously fetched entity, you use a transformer within the `ExampleMatcher` -and subtract 30 from the age of Ned Stark. - -```java -System.out.println("## Find all Starks which are 30 years younger than Ned Stark"); -Iterable<Character> allYoungerStarks = repository.findAll( - Example.of(foundNedStark.get(), ExampleMatcher.matchingAll() - .withMatcher("surname", GenericPropertyMatcher::exact) - .withIgnorePaths("id", "arangoId", "name", "alive") - .withTransformer("age", age -> age.map(it -> (int) it - 30)))); - allYoungerStarks.forEach(System.out::println); -``` - -Because you are using the entity `foundNedStark` – fetched from the database – -you have to ignore the `id` field which isn't `null` in this case. - -The console output should only include Arya Stark. - -``` -## Find all Starks which are 30 years younger than Ned Stark -Character [id=1898, name=Arya, surname=Stark, alive=true, age=11] -``` - -Aside from searching for exact and transformed values, you can – in case of type -`String`, also search for other expressions. In this last case, search for every -character whose `surname` ends with `"ark"`. The console output should include -every Stark. - -```java -System.out.println("## Find all character which surname ends with 'ark' (ignore case)"); -Iterable<Character> ark = repository.findAll(Example.of(new Character(null, "ark", false), -ExampleMatcher.matchingAll().withMatcher("surname", GenericPropertyMatcher::endsWith) - .withIgnoreCase() - .withIgnorePaths("name", "alive", "age"))); -ark.forEach(System.out::println); -``` - -## Derived queries - -Spring Data ArangoDB supports queries derived from method names by splitting it -into its semantic parts and converting into AQL. The mechanism strips the prefixes -`find..By`, `get..By`, `query..By`, `read..By`, `stream..By`, `count..By`, -`exists..By`, `delete..By`, `remove..By` from the method and parses the rest. -The `By` acts as a separator to indicate the start of the criteria for the query -to be built. You can define conditions on entity properties and concatenate them -with `And` and `Or`. - -You can find the complete list of part types for derived queries in the -[reference documentation](spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md). - -### Simple findBy - -Start with an easy example and find characters based on their `surname`. - -The only thing you have to do is to add a method `findBySurname(String)` to your -`CharacterRepository` with a return type which allows the method to return -multiple instances of `Character`. For more information on which return types are -possible, see the [reference documentation](spring-data-arangodb/reference-version-4/repositories/queries/_index.md#return-types). - -```java -public interface CharacterRepository extends ArangoRepository<Character, String> { - Collection<Character> findBySurname(String surname); -} -``` - -After extending your repository, create a new `CommandLineRunner` and add it to -your `DemoApplication`: - -```java -Class<?>[]runner=new Class<?>[]{ - CrudRunner.class, - ByExampleRunner.class, - DerivedQueryRunner.class -}; -``` - -In the `run()` method, call your new `findBySurname(String)` method and try to -find all characters with the `surname` `"Lannister"`. - -```java -package com.arangodb.spring.demo.runner; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; -import org.springframework.context.annotation.ComponentScan; - -import com.arangodb.spring.demo.entity.Character; -import com.arangodb.spring.demo.repository.CharacterRepository; - -@ComponentScan("com.arangodb.spring.demo") -public class DerivedQueryRunner implements CommandLineRunner { - - @Autowired - private CharacterRepository repository; - - @Override - public void run(final String... args) throws Exception { - System.out.println("# Derived queries"); - - System.out.println("## Find all characters with surname 'Lannister'"); - Iterable<Character> lannisters = repository.findBySurname("Lannister"); - lannisters.forEach(System.out::println); - } -} -``` - -After executing the demo application, you should see the following lines in -your console output: - -``` -# Derived queries -## Find all characters with surname 'Lannister' -Character [id=238, name=Jaime, surname=Lannister, alive=true, age=36] -Character [id=240, name=Cersei, surname=Lannister, alive=true, age=36] -Character [id=253, name=Tyrion, surname=Lannister, alive=true, age=32] -Character [id=255, name=Tywin, surname=Lannister, alive=false, age=null] -``` - -### Create an index - -Indexes allow fast access to documents, provided the indexed attribute(s) are -used in a query. To make `findBySurname` queries faster, you can create an index -on the `surname` field, adding the `@PersistentIndex` to the `Character` class: - -```java - -@Document("characters") -@PersistentIndex(fields = {"surname"}) -public class Character { -``` - -Next time you run the demo, the related queries benefit from the index and -avoid performing a full collection scan. - -### More complex findBy - -Create some methods with more parts and have a look at how they fit together. -You can use different return types. Again, simply add the methods in your -`CharacterRepository`: - -```java -List<Character> findTop2DistinctBySurnameIgnoreCaseOrderByAgeDesc(String surname); -Collection<Character> findBySurnameEndsWithAndAgeBetweenAndNameInAllIgnoreCase( - String suffix, - int lowerBound, - int upperBound, - String[]nameList); -``` - -Also add the method calls in `DerivedMethodRunner`: - -```java -System.out.println("## Find top 2 Lannnisters ordered by age"); -List<Character> top2 = repository.findTop2DistinctBySurnameIgnoreCaseOrderByAgeDesc("lannister"); -top2.forEach(System.out::println); - -System.out.println("## Find all characters which name is 'Bran' or 'Sansa' and it's surname ends with 'ark' and are between 10 and 16 years old"); -Collection<Character> youngStarks = repository.findBySurnameEndsWithAndAgeBetweenAndNameInAllIgnoreCase("ark", 10, 16, new String[]{"Bran", "Sansa"}); -youngStarks.forEach(System.out::println); -``` - -The new methods produce the following console output: - -``` -## Find top 2 Lannnisters ordered by age -Character [id=444, name=Jaime, surname=Lannister, alive=true, age=36] -Character [id=446, name=Cersei, surname=Lannister, alive=true, age=36] -## Find all characters which name is 'Bran' or 'Sansa' and it's surname ends with 'ark' and are between 10 and 16 years old -Character [id=452, name=Sansa, surname=Stark, alive=true, age=13] -Character [id=456, name=Bran, surname=Stark, alive=true, age=10] -``` - -### Single entity result - -With derived queries, you can not only query for multiple entities, but also for -single entities. If you expect only a single entity as the result, you can use -the corresponding return type. - -Because you have a unique persistent index on the fields `name` and `surname`, -you can expect only a single entity when querying for both. - -For this example, add the method `findByNameAndSurname(String, String)` in -`CharacterRepository`, whose return type is `Optional<Character>`. - -```java -Optional<Character> findByNameAndSurname(String name, String surname); -``` - -Call it from `DerivedMethodRunner`: - -```java -System.out.println("## Find a single character by name & surname"); -Optional<Character> tyrion = repository.findByNameAndSurname("Tyrion", "Lannister"); -tyrion.ifPresent(c -> System.out.println(String.format("Found %s", c))); -``` - -The console output should look like this: - -``` -## Find a single character by name & surname -Found Character [id=974, name=Tyrion, surname=Lannister, alive=true, age=32] -``` - -### countBy - -Aside from `findBy`, there are other supported prefixes like `countBy`. -In comparison to the previously used `operations.collection(Character.class).count();`, -the `countBy` is able to include filter conditions. - -With the following lines of code, you are able to only count characters that -are still alive. - -`CharacterRepository`: - -```java -Integer countByAliveTrue(); -``` - -`DerivedMethodRunner`: - -```java -System.out.println("## Count how many characters are still alive"); -Integer alive = repository.countByAliveTrue(); -System.out.println(String.format("There are %s characters still alive", alive)); -``` - -### removeBy - -The last example for derived queries is `removeBy`. Here, remove all characters -except those whose surname is 'Stark' and who are still alive. - -`CharacterRepository`: - -```java -void removeBySurnameNotLikeOrAliveFalse(String surname); -``` - -`DerivedMethodRunner`: - -```java -System.out.println("## Remove all characters except of which surname is 'Stark' and which are still alive"); -repository.removeBySurnameNotLikeOrAliveFalse("Stark"); -repository.findAll().forEach(System.out::println); -``` - -Only Arya, Bran, and Sansa are expected to be left. - -``` -## Remove all characters except of which surname is 'Stark' and which are still alive -Character [id=1453, name=Sansa, surname=Stark, alive=true, age=13] -Character [id=1454, name=Arya, surname=Stark, alive=true, age=11] -Character [id=1457, name=Bran, surname=Stark, alive=true, age=10] -``` - -## Relations - -ArangoDB is a graph database system and Spring Data ArangoDB also supports -features for graphs. - -With the `@Relations` annotation, you can define relationships between the -entities. - -To demonstrate this, use the previously created `Character` entity. -Add a `children` field of type `Collection<Character>` annotated with -`@Relations(edges = ChildOf.class, lazy = true)`. - -```java -@Document("characters") -@PersistentIndex(fields = {"surname"}) -public class Character { - - @Id // db document field: _key - private String id; - - @ArangoId // db document field: _id - private String arangoId; - - private String name; - private String surname; - private boolean alive; - private Integer age; - @Relations(edges = ChildOf.class, lazy = true) - private Collection<Character> children; - - // ... - -} -``` - -Then create an entity for the edge you stated in `@Relations`. Other than a -normal entity annotated with `@Document`, this entity is annotated with -`@Edge`. This allows Spring Data ArangoDB to create an edge collection in -the database. Just like `Character`, `ChildOf` also gets a field for its -`id`. To connect two `Character` entities, it also gets a field of type -`Character` annotated with `@From` and a field of type `Character` annotated -with `@To`. `ChildOf` is persisted in the database with the ids of these -two characters. - -```java -package com.arangodb.spring.demo.entity; - -import com.arangodb.springframework.annotation.Edge; -import com.arangodb.springframework.annotation.From; -import com.arangodb.springframework.annotation.To; -import org.springframework.data.annotation.Id; - -@Edge -public class ChildOf { - - @Id - private String id; - - @From - private Character child; - - @To - private Character parent; - - public ChildOf(final Character child, final Character parent) { - super(); - this.child = child; - this.parent = parent; - } - - // setter & getter - - @Override - public String toString() { - return "ChildOf [id=" + id + ", child=" + child + ", parent=" + parent + "]"; - } - -} -``` - -To save instances of `ChildOf` in the database, create a repository for it the -same way you created `CharacterRepository`. - -```java -package com.arangodb.spring.demo.repository; - -import com.arangodb.spring.demo.entity.ChildOf; -import com.arangodb.springframework.repository.ArangoRepository; - -public interface ChildOfRepository extends ArangoRepository<ChildOf, String> { - -} -``` - -Implement another `CommandLineRunner` called `RelationsRunner` and add it to -your `DemoApplication` like with all the runners before. - -```java -Class<?>[] runner = new Class<?>[]{ - CrudRunner.class, - ByExampleRunner.class, - DerivedQueryRunner.class, - RelationsRunner.class -}; -``` - -In the newly created `RelationsRunner`, inject `CharacterRepository` and -`ChildOfRepository` and built your relations. First, save some characters -because you removed most of them earlier. To do so, use the static -`createCharacter()` method of the `CrudRunner`. After you have successfully -persisted your characters, save some relationships with the edge entity `ChildOf`. -Because `ChildOf` requires instances of `Character` with the `id` field set by -the database, you first have to find them in your `CharacterRepository`. -To ensure you find the correct `Character`, use the derived query method -`findByNameAndSurename(String, String)` that gives you one specific `Character`. -Then create instances of `ChildOf` and save them through `ChildOfRepository`. - -```java -package com.arangodb.spring.demo.runner; - -import com.arangodb.spring.demo.entity.ChildOf; -import com.arangodb.spring.demo.repository.CharacterRepository; -import com.arangodb.spring.demo.repository.ChildOfRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; -import org.springframework.context.annotation.ComponentScan; - -import java.util.Arrays; - -@ComponentScan("com.arangodb.spring.demo") -public class RelationsRunner implements CommandLineRunner { - - @Autowired - private CharacterRepository characterRepo; - @Autowired - private ChildOfRepository childOfRepo; - - @Override - public void run(final String... args) throws Exception { - System.out.println("# Relations"); - characterRepo.saveAll(CrudRunner.createCharacters()); - - // first create some relations for the Starks and Lannisters - Character ned = characterRepo.findByNameAndSurname("Ned", "Stark").get(); - Character catelyn = characterRepo.findByNameAndSurname("Catelyn", "Stark").get(); - Character robb = characterRepo.findByNameAndSurname("Robb", "Stark").get(); - childOfRepo.saveAll(Arrays.asList(new ChildOf(robb, ned), new ChildOf(robb, catelyn))); - Character sansa = characterRepo.findByNameAndSurname("Sansa", "Stark").get(); - childOfRepo.saveAll(Arrays.asList(new ChildOf(sansa, ned), new ChildOf(sansa, catelyn))); - Character arya = characterRepo.findByNameAndSurname("Arya", "Stark").get(); - childOfRepo.saveAll(Arrays.asList(new ChildOf(arya, ned), new ChildOf(arya, catelyn))); - Character bran = characterRepo.findByNameAndSurname("Bran", "Stark").get(); - childOfRepo.saveAll(Arrays.asList(new ChildOf(bran, ned), new ChildOf(bran, catelyn))); - Character jon = characterRepo.findByNameAndSurname("Jon", "Snow").get(); - childOfRepo.save(new ChildOf(jon, ned)); - - Character tywin = characterRepo.findByNameAndSurname("Tywin", "Lannister").get(); - Character jaime = characterRepo.findByNameAndSurname("Jaime", "Lannister").get(); - childOfRepo.save(new ChildOf(jaime, tywin)); - Character cersei = characterRepo.findByNameAndSurname("Cersei", "Lannister").get(); - childOfRepo.save(new ChildOf(cersei, tywin)); - Character joffrey = characterRepo.findByNameAndSurname("Joffrey", "Baratheon").get(); - childOfRepo.saveAll(Arrays.asList(new ChildOf(joffrey, jaime), new ChildOf(joffrey, cersei))); - Character tyrion = characterRepo.findByNameAndSurname("Tyrion", "Lannister").get(); - childOfRepo.save(new ChildOf(tyrion, tywin)); - } -} -``` - -### Read relations within an entity - -After you add `@Relations(edges = ChildOf.class, lazy = true) Collection<Character> children;` -in `Character` you can load all children of a character when you fetch the -character from the database. Use the `findByNameAndSurname(String, String)` -method again to find one specific character. - -Add the following lines of code to the `run()` method of `RelationsRunner`: - -```java -Character nedStark = characterRepo.findByNameAndSurname("Ned", "Stark").get(); -System.out.println(String.format("## These are the children of %s:", nedStark)); -nedStark.getChildren().forEach(System.out::println); -``` - -After executing the demo again, you can see the following console output: - -``` -## These are the children of Character [id=2547, name=Ned, surname=Stark, alive=false, age=41]: -Character [id=2488, name=Bran, surname=Stark, alive=true, age=10] -Character [id=2485, name=Arya, surname=Stark, alive=true, age=11] -Character [id=2559, name=Robb, surname=Stark, alive=false, age=null] -Character [id=2556, name=Jon, surname=Snow, alive=true, age=16] -Character [id=2484, name=Sansa, surname=Stark, alive=true, age=13] -``` - -### findBy including relations - -The `children` field is not persisted in the character entity itself, it is -represented by the `ChildOf` edge. Nevertheless, you can write a derived method -which includes properties of all connected `Character`. - -With the following two methods – added in `CharacterRepository` – you can query -for a `Character` which has a child with a given name or an age between two -given integers. - -```java -Collection<Character> findByChildrenName(String name); -Collection<Character> findByChildrenAgeBetween(int lowerBound, int upperBound); -``` - -Call these methods in `RelationsRunner` and search for all parents of 'Sansa' -and all parents that have a child between 16 and 20 years old. - -``` -System.out.println("## These are the parents of 'Sansa'"); -Iterable<Character> parentsOfSansa = characterRepo.findByChildrenName("Sansa"); -parentsOfSansa.forEach(System.out::println); - -System.out.println("## These parents have a child which is between 16 and 20 years old"); -Iterable<Character> childrenBetween16a20 = characterRepo.findByChildrenAgeBetween(16, 20); -childrenBetween16a20.forEach(System.out::println); -``` - -The console output shows us that Ned and Catelyn are the parents of Sansa and -that Ned, Jamie, and Cersei have at least one child in the age between 16 and -20 years. - -``` -## These are the parents of 'Sansa' -Character [id=2995, name=Ned, surname=Stark, alive=false, age=41] -Character [id=2998, name=Catelyn, surname=Stark, alive=false, age=40] -## These parents have a child which is between 16 and 20 years old -Character [id=2995, name=Ned, surname=Stark, alive=false, age=41] -Character [id=2997, name=Jaime, surname=Lannister, alive=true, age=36] -Character [id=2999, name=Cersei, surname=Lannister, alive=true, age=36] -``` - -## Query methods - -You can have repository methods with self-written AQL queries. - -When it comes to more complex use cases where a derived method would get way too -long and become unreadable, queries using the [ArangoDB Query Language (AQL)](../../aql/_index.md) -can be supplied with the `@Query` annotation on methods in your repositories. - -AQL supports the usage of [bind parameters](../../aql/fundamentals/bind-parameters.md), -thus allowing to separate the query text from literal values used in the query. -There are three ways of passing bind parameters to the query in the `@Query` -annotation that are described below. - -### Param annotation - -To pass bind parameters to your query, you can use the `@Param` annotation. -With the `@Param` annotation, the argument is placed in the query at the place -corresponding to the value passed to the `@Param` annotation. - -To demonstrate this, add another method to `CharacterRepository`: - -```java -@Query("FOR c IN characters FILTER c.surname == @surname SORT c.age ASC RETURN c") -List<Character> getWithSurname(@Param("surname") String value); -``` - -Here, the bind parameter is named `surname` and the method parameter `value` is -annoated with `@Param("surname")`. Only the value in the `@Param` annotation has -to match with your bind parameter, the method parameter name does not matter. - -Note that this uses the collection name `characters` and not `character` in your -query. Normally, a collection would be named like the corresponding entity class. -However, you used `@Document("characters")` in `Character` which set the -collection name to `characters`. - -Create a new `CommandLineRunner` and add it to our `DemoApplication`: - -```java -package com.arangodb.spring.demo.runner; - -import com.arangodb.spring.demo.entity.Character; -import com.arangodb.spring.demo.repository.CharacterRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; - -public class AQLRunner implements CommandLineRunner { - - @Autowired - private CharacterRepository repository; - - @Override - public void run(final String... args) throws Exception { - System.out.println("# AQL queries"); - } - -} -``` - -`DemoApplication`: - -```java -Class<?>[]runner=new Class<?>[]{ - CrudRunner.class, - ByExampleRunner.class, - DerivedQueryRunner.class, - RelationsRunner.class, - AQLRunner.class -}; -``` - -Add the following lines to `AQLRunner`: - -```java -System.out.println("## Find all characters with surname 'Lannister' (sort by age ascending)"); -List<Character> lannisters = repository.getWithSurname("Lannister"); -lannisters.forEach(System.out::println); -``` - -The console output should give you all characters with `surname` Lannister. - -``` -## Find all characters with surname 'Lannister' (sort by age ascending) -Character [id=7613, name=Tywin, surname=Lannister, alive=false, age=null] -Character [id=7611, name=Tyrion, surname=Lannister, alive=true, age=32] -Character [id=7596, name=Jaime, surname=Lannister, alive=true, age=36] -Character [id=7598, name=Cersei, surname=Lannister, alive=true, age=36] -``` - -### BindVars annotation - -In addition to number matching and the `@Param` annotation, you can use a method -parameter of type `Map<String, Object>` annotated with `@BindVars` as your -bind parameters. You can then fill the map with any parameter used in the query. - -Add the following to `CharacterRepository`: - -```java -@Query("FOR c IN @@col FILTER c.surname == @surname AND c.age > @age RETURN c") -ArangoCursor<Character> getWithSurnameOlderThan(@Param("age") int value, @BindVars Map<String, Object> bindvars); -``` - -This query uses three bind parameters `@@col`, `@surname`, and `@age`. -One of the bind parameter is written with two `@`. This is a special type of -bind parameter that exists for injecting collection names. This type of -bind parameter has a name prefixed with an additional `@` symbol. - -Furthermore, `@Param` is used for the `@age` bind parameter but not for `@@col` -and `@surname`. These bind parameters have to be passed through the map annotated -with `@BindVars`. It is also possible to use both annotations within one query method. - -The method call looks as expected. An integer is passed for the `age` -bind parameter and a map with the keys `surname` and `@col` to your new method. - -```java -System.out.println("## Find all characters with surname 'Lannister' which are older than 35"); -Map<String, Object> bindvars = new HashMap<>(); -bindvars.put("surname", "Lannister"); -bindvars.put("@col", Character.class); -ArangoCursor<Character> oldLannisters = repository.getWithSurnameOlderThan(35, bindvars); -oldLannisters.forEach(System.out::println); -``` - -One additional special handling for collection bind parameter is that you do not -have to pass the collection name as a String to the method. You can pass the type -(`Character.class`) to your method. Spring Data ArangoDB determines the -collection name. This is very convenient if you have used an alternative -collection name within the `@Document` or `@Edge` annotations. - -The console output should be as follows: - -``` -## Find all characters with surname 'Lannister' which are older than 35 -Character [id=8294, name=Jaime, surname=Lannister, alive=true, age=36] -Character [id=8296, name=Cersei, surname=Lannister, alive=true, age=36] -``` - -### QueryOptions annotation - -Sometimes, you want to be able to configure the query execution on a technical -level. Spring Data ArangoDB provides the `@QueryOptions` annotation for this. -With this annotation, you are able to set something like a batch size to control -the number of results to be transferred from the database server in one roundtrip -and some other things. - -For example, you can return the number of found results. To achieve that you -have to change the return type in the previously created `getWithSurnameOlderThan(int, Map)` -method from `Iterable<Character>` to `ArangoCursor<Character>`. `ArangoCursor` -provides a `getCount()` method that gives you the number of found results. -But this value is only returned from the database when you set the `count` flag -in the query options to `true`, so you also have to add the `@QueryOptions` -annotation to the method with `count = true`. - -```java -@Query("FOR c IN @@col FILTER c.surname == @surname AND c.age > @age RETURN c") -@QueryOptions(count = true) -Iterable<Character> getWithSurnameOlderThan(@Param("age") int value, @BindVars Map<String, Object> bindvars); -``` - -If you change the type of our `oldLannisters` local variable in `AQLRunner` -to `ArangoCursor`, you can get the count value from it. - -```java -ArangoCursor<Character> oldLannisters = repository.getWithSurnameOlderThan(35, bindvars); -System.out.println(String.format("Found %s documents", oldLannisters.getCount())); -oldLannisters.forEach(System.out::println); -``` - -The new console output should look like this: - -``` -## Find all characters with surname 'Lannister' which are older than 35 -Found 2 documents -Character [id=9012, name=Jaime, surname=Lannister, alive=true, age=36] -Character [id=9014, name=Cersei, surname=Lannister, alive=true, age=36] -``` - -### Graph traversal - -To finish the query method topic, add a [graph traversal](../../aql/graphs/traversals.md) -written in AQL to this demo where the `ChildOf` edges are involved. - -The following query searches for every `Character` connected (through `ChildOf`) -with the character to whom the passed `id` belongs to. This time, specify the -edge collection in the query that you pass as a bind parameter with the -`@Param` annotation. - -`CharacterRepository`: - -```java -@Query("FOR v IN 1..2 INBOUND @arangoId @@edgeCol SORT v.age DESC RETURN DISTINCT v") -List<Character> getAllChildrenAndGrandchildren(@Param("arangoId") String arangoId, @Param("@edgeCol") Class<?> edgeCollection); -``` - -Like before with `Character.class` in your map, use the type of `ChildOf` as -the parameter value. To find all children and grandchildren of Tywin Lannister, -you first have to find him to get his `id` which you can then pass to the -query method. - -`AQLRunner`: - -```java -System.out.println("## Find all children and grantchildren of 'Tywin Lannister' (sort by age descending)"); -List<Character> children = repository.findByNameAndSurname("Tywin", "Lannister").map(tywin -> - repository.getAllChildrenAndGrandchildren(tywin.getArangoId(), ChildOf.class)).get(); -children.forEach(System.out::println); -``` - -After executing the demo again, you can see the following console output: - -``` -## Find all children and grantchildren of 'Tywin Lannister' (sort by age descending) -Character [id=11255, name=Tyrion, surname=Lannister, alive=true, age=32] -Character [id=11242, name=Cersei, surname=Lannister, alive=true, age=36] -Character [id=11253, name=Joffrey, surname=Baratheon, alive=false, age=19] -Character [id=11240, name=Jaime, surname=Lannister, alive=true, age=36] -``` - -## Geospatial queries - -Geospatial queries are a subsection of derived queries. To use a geospatial -query on a collection, a geo index must exist on that collection. A geo index -can be created on a field which is a two element array, corresponding to latitude -and longitude coordinates. - -As a subsection of derived queries, geospatial queries support the same -return types, and also these additional three return types: `GeoPage`, -`GeoResult`, and `GeoResults`. These types must be used in order to get the -distance of each document as generated by the query. - -### Geo data modeling - -To demonstrate geospatial queries, create a new entity class `Location` with a -`location` field of type `org.springframework.data.geo.Point`. You also have to -create a geo index on this field. You can do so by annotating the field with -`@GeoIndexed(geoJson = true)`. As you probably remember, you have already used -an index in the `Character` class, but you annotated the type and not the -affected fields. - -Spring Data ArangoDB offers two ways of defining an index. With the -`@<IndexType>Indexed` annotations, indexes for single fields can be defined. -If the index should include multiple fields, the `@<IndexType>Index` annotations -can be used on the type instead. See the [reference documentation](spring-data-arangodb/reference-version-4/mapping/indexes.md) -for more information. - -Create a new `Location` class: - -```java -package com.arangodb.spring.demo.entity; - -import com.arangodb.springframework.annotation.Document; -import com.arangodb.springframework.annotation.GeoIndexed; -import org.springframework.data.annotation.Id; -import org.springframework.data.geo.Point; - -import java.util.Arrays; - -@Document("locations") -public class Location { - - @Id - private String id; - private final String name; - @GeoIndexed(geoJson = true) - private final Point location; - - public Location(final String name, final Point location) { - super(); - this.name = name; - this.location = location; - } - - // getter & setter - - @Override - public String toString() { - return "Location{" + - "id='" + id + '\'' + - ", name='" + name + '\'' + - ", location=" + location + - '}'; - } - -} -``` - -Create the corresponding `LocationRepository` repository: - -```java -package com.arangodb.spring.demo.repository; - -import com.arangodb.spring.demo.entity.Location; -import com.arangodb.springframework.repository.ArangoRepository; - -public interface LocationRepository extends ArangoRepository<Location, String> { - -} -``` - -After that, create a new `CommandLineRunner`, add it to your `DemoApplication`, -and perform some insert operations with some popular locations from -Game of Thrones with the coordinates of their real counterparts: - -```java -package com.arangodb.spring.demo.runner; - -import com.arangodb.spring.demo.entity.Location; -import com.arangodb.spring.demo.repository.LocationRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; - -import java.util.Arrays; - -public class GeospatialRunner implements CommandLineRunner { - - @Autowired - private LocationRepository repository; - - @Override - public void run(final String... args) throws Exception { - System.out.println("# Geospatial"); - - repository.saveAll(Arrays.asList( - new Location("Dragonstone", new Point(-6.815096, 55.167801)), - new Location("King's Landing", new Point(18.110189, 42.639752)), - new Location("The Red Keep", new Point(14.446442, 35.896447)), - new Location("Yunkai", new Point(-7.129532, 31.046642)), - new Location("Astapor", new Point(-9.774249, 31.50974)), - new Location("Winterfell", new Point(-5.581312, 54.368321)), - new Location("Vaes Dothrak", new Point(-6.096125, 54.16776)), - new Location("Beyond the wall", new Point(-21.094093, 64.265473)) - )); - } -} -``` - -`DemoApplication`: - -```java -Class<?>[]runner=new Class<?>[]{ - CrudRunner.class, - ByExampleRunner.class, - DerivedQueryRunner.class, - RelationsRunner.class, - AQLRunner.class, - GeospatialRunner.class -}; -``` - -There are two kinds of geospatial query: `Near` and `Within`. - -### Near - -`Near` sorts entities by distance from a given point. -The result can be restricted with paging. - -`LocationRepository`: - -```java -GeoPage<Location> findByLocationNear(Point location,Pageable pageable); -``` - -In this example, search for locations sorted by distance to a given point, -matching the coordinates of Winterfell. Use pagination to split the results in -pages of five locations. - -```java -System.out.println("## Find the first 5 locations near 'Winterfell'"); -GeoPage<Location> first5 = repository.findByLocationNear(new Point(-5.581312, 54.368321), PageRequest.of(0, 5)); -first5.forEach(System.out::println); - -System.out.println("## Find the next 5 locations near 'Winterfell' (only 3 locations left)"); -GeoPage<Location> next5 = repository.findByLocationNear(new Point(-5.581312, 54.368321), PageRequest.of(1, 5)); -next5.forEach(System.out::println); -``` - -Because you use the coordinates of Winterfell, the distance in the output to -Winterfell is `0`. - -``` -## Find the first 5 locations near 'Winterfell' -GeoResult [content: Location [id=14404, name=Yunkai, location=[31.046642, -7.129532]], distance: 3533.2076972451478 KILOMETERS, ] -GeoResult [content: Location [id=14405, name=Astapor, location=[31.50974, -9.774249]], distance: 3651.785495816579 KILOMETERS, ] -GeoResult [content: Location [id=14403, name=The Red Keep, location=[35.896447, 14.446442]], distance: 4261.971994059222 KILOMETERS, ] -GeoResult [content: Location [id=14402, name=King's Landing, location=[42.639752, 18.110189]], distance: 5074.755682897005 KILOMETERS, ] -GeoResult [content: Location [id=14407, name=Vaes Dothrak, location=[54.16776, -6.096125]], distance: 6049.156388427102 KILOMETERS, ] -## Find the next 5 locations near 'Winterfell' (only 3 locations left) -GeoResult [content: Location [id=14406, name=Winterfell, location=[54.368321, -5.581312]], distance: 6067.104268175527 KILOMETERS, ] -GeoResult [content: Location [id=14401, name=Dragonstone, location=[55.167801, -6.815096]], distance: 6165.650581599857 KILOMETERS, ] -GeoResult [content: Location [id=14408, name=Beyond the wall, location=[64.265473, -21.094093]], distance: 7350.229798961836 KILOMETERS, ] -``` - -### Within - -`Within` both sorts and filters entities, returning those within the given -distance, range, or shape. - -Add some methods to `LocationRepository` that use different filter criteria: - -```java -GeoResults<Location> findByLocationWithin(Point location,Distance distance); -Iterable<Location> findByLocationWithin(Point location,Range<Double> distanceRange); -``` - -With these methods, you can search for locations within a given distance or -range to our point – Winterfell. - -```java -System.out.println("## Find all locations within 50 kilometers of 'Winterfell'"); -GeoResults<Location> findWithing50kilometers = repository - .findByLocationWithin(new Point(-5.581312, 54.368321), new Distance(50, Metrics.KILOMETERS)); -findWithing50kilometers.forEach(System.out::println); - -System.out.println("## Find all locations which are 40 to 50 kilometers away from 'Winterfell'"); -Iterable<Location> findByLocationWithin = repository.findByLocationWithin(new Point(-5.581312, 54.368321), - Range.of(Range.Bound.inclusive(40000.), Range.Bound.exclusive(50000.))); -findByLocationWithin.forEach(System.out::println); -``` - -As you can see in the console output, both _Winterfell_ and _Vaes Dothrak_ are -located within a 50 kilometers radius around your point. But only _Vaes Dothrak_ -is obviously more than 40 kilometers away from it. - -``` -## Find all locations within 50 kilometers of 'Winterfell' -GeoResult [content: Location [id=14843, name=Winterfell, location=[54.368321, -5.581312]], distance: 0.0 KILOMETERS, ] -GeoResult [content: Location [id=14844, name=Vaes Dothrak, location=[54.16776, -6.096125]], distance: 40.186277071065994 KILOMETERS, ] -## Find all locations which are 40 to 50 kilometers away from 'Winterfell' -Location [id=14844, name=Vaes Dothrak, location=[54.16776, -6.096125]] -``` - -You cannot only implement geo functions going from a single point but it is also -possible to search for locations within a polygon. - -Add a method using `Polygon`: - -`LocationRepository`: -```java -Iterable<Location> findByLocationWithin(Polygon polygon); -``` - -`GeospatialRunner`: -```java -System.out.println("## Find all locations within a given polygon"); -Iterable<Location> withinPolygon = repository.findByLocationWithin( - new Polygon(Arrays.asList(new Point(-25, 40), new Point(-25, 70), new Point(25, 70), new Point(-25, 40)))); -withinPolygon.forEach(System.out::println); -``` - -The console output should be as follows: - -``` -## Find all locations within a given polygon -Location [id=16922, name=Beyond the wall, location=[64.265473, -21.094093]] -``` diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/_index.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/_index.md deleted file mode 100644 index 716ef19ff7..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/_index.md +++ /dev/null @@ -1,237 +0,0 @@ ---- -title: Spring Data ArangoDB -menuTitle: Spring Data -weight: 5 -description: >- - The Spring Data ArangoDB integration is a library for accessing data stored in - ArangoDB from Spring-based Java application ---- -Spring Data provides a consistent interface for -accessing various types of data sources. Spring Data ArangoDB implements this -for ArangoDB and provides mapping of Java objects to ArangoDB documents (ODM). - -- [Repository](https://github.com/arangodb/spring-data) -- [Demo without Spring Boot Starter](https://github.com/arangodb/spring-data/tree/main/tutorial/src/main/java/com/arangodb/spring/demo) -- [Demo with Spring Boot Starter](https://github.com/arangodb/spring-boot-starter/tree/main/demo) -- [Reference (version 4)](reference-version-4/_index.md) -- [JavaDoc](https://www.javadoc.io/doc/com.arangodb/arangodb-spring-data/latest) -- [Changelog](https://github.com/arangodb/spring-data/blob/master/ChangeLog.md#changelog) -- [Migration](migration/_index.md) - -## Supported versions - -Spring Data ArangoDB is compatible with: -- all the still supported Spring Boot 3.x [versions](https://spring.io/projects/spring-boot#support) - and related Spring Framework versions -- all the still supported ArangoDB [versions](https://arangodb.com/subscriptions/end-of-life-notice/) - -## Get started - -This tutorial is about how to configure [Spring Data ArangoDB](https://github.com/arangodb/spring-data) -without using Spring Boot Starter ArangoDB. - -For a more extensive tutorial about the features of Spring Data ArangoDB and -Spring Boot support, see the [Spring Boot Starter](../spring-boot-arangodb.md) -documentation. - -### Build a project with Maven - -Set up a project and add every needed dependency. This demo uses Maven and -Spring Boot. - -Create a Maven `pom.xml`: - -```xml -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <relativePath/> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-parent</artifactId> - <version>x.y.z</version> - </parent> - - <groupId>com.arangodb</groupId> - <artifactId>spring-data-arangodb-tutorial</artifactId> - <version>1.0.0</version> - - <name>spring-data-arangodb-tutorial</name> - <description>ArangoDB Spring Data Tutorial</description> - - <properties> - <java.version>21</java.version> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - </properties> - - <dependencies> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter</artifactId> - </dependency> - <dependency> - <groupId>com.arangodb</groupId> - <artifactId>arangodb-spring-data</artifactId> - <version>x.y.z</version> - </dependency> - </dependencies> - -</project> -``` - -Substitute `x.y.z` with the latest available versions that are compatible. -See the [Supported versions](#supported-versions) for details. -You may also adjust the Java version. - -### Entity classes - -For this tutorial we will model our entity with a Java record class: - -```java -@Document("characters") -public record Character( - @Id - String id, - String name, - String surname -) { -} -``` - -### Create a repository - -Now that we have our data model, we want to store data. For this, we create a repository interface which -extends `ArangoRepository`. This gives us access to CRUD operations, paging, and query by example mechanics. - -```java -public interface CharacterRepository extends ArangoRepository<Character, String> { -} -``` - -### Create a Configuration class - -We need a configuration class to set up everything to connect to our ArangoDB instance and to declare that all -needed Spring Beans are processed by the Spring container. - -- `@EnableArangoRepositories`: Defines where Spring can find your repositories -- `arango()`: Method to configure the connection to the ArangoDB instance -- `database()`: Method to define the database name -- `returnOriginalEntities()`: Method to configures the behavior of repository save methods to either return the - original entities (updated where possible) or new ones. Set to `false` to use java records. - -```java -@Configuration -@EnableArangoRepositories(basePackages = {"com.arangodb.spring.demo"}) -public class AdbConfig implements ArangoConfiguration { - - @Override - public ArangoDB.Builder arango() { - return new ArangoDB.Builder() - .host("localhost", 8529) - .user("root") - .password("test"); - } - - @Override - public String database() { - return "spring-demo"; - } - - @Override - public boolean returnOriginalEntities() { - return false; - } -} -``` - -Note that, in case the driver is configured to use a protocol with `VPACK` -content type (i.e. `HTTP_VPACK` or `HTTP2_VPACK`), then the -`ArangoConfiguration#contentType()` method must be overridden to return -`ContentType.VPACK` as shown in the following example: - -```java -@Override -public ArangoDB.Builder arango() { - new ArangoDB.Builder() - // ... - .protocol(Protocol.HTTP2_VPACK); -} - -@Override -public ContentType contentType() { - return ContentType.VPACK; -} -``` - -### Create a CommandLineRunner - -To run our demo as command line application, we have to create a class implementing `CommandLineRunner`: - -```java -@ComponentScan("com.arangodb.spring.demo") -public class CrudRunner implements CommandLineRunner { - - @Autowired - private ArangoOperations operations; - - @Autowired - private CharacterRepository repository; - - @Override - public void run(String... args) { - // first drop the database so that we can run this multiple times with the same dataset - operations.dropDatabase(); - - System.out.println("# CRUD operations"); - - // save a single entity in the database - // there is no need of creating the collection first. This happen automatically - Character nedStark = new Character(null, "Ned", "Stark"); - Character saved = repository.save(nedStark); - System.out.println("Ned Stark saved in the database: " + saved); - } -} -``` - -### Run the application - -Finally, we create a main class: - -```java -@SpringBootApplication -public class DemoApplication { - public static void main(final String... args) { - System.exit(SpringApplication.exit( - SpringApplication.run(CrudRunner.class, args) - )); - } -} -``` - -And run it with: - -```shell -mvn spring-boot:run -``` - -This should produce a console output similar to: - -``` -Ned Stark saved in the database: Character[id=2029, name=Ned, surname=Stark] -``` - -## Using the underlying Java Driver - -The underlying Java driver can be obtained via `ArangoOperations.driver()`. -This driver instance is configured by default to use `ArangoConverter` bean to -serialize and deserialize user data, therefore keeping the same -Spring Data ArangoDB serialization behavior. - -## Limitations - -- GraalVM Native Image (available with Spring Boot 3) is not supported (DE-677) -- Spring Data REST is not supported (DE-43) -- Spring Data Reactive is not supported (DE-678) diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/migration.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/migration.md deleted file mode 100644 index cd5f8dfea5..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/migration.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Spring Data ArangoDB - Migration -menuTitle: Migration -weight: 10 -description: '' ---- -## Migrate from Spring Data ArangoDB 3.x to 4.0 - -### JDK 17, Spring Framework 6 and Spring Boot 3 - -Spring Data ArangoDB 4.0 requires: - -- [JDK 17](https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-JDK-17) -- [Spring Framework 6](https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-6.x) - -[Spring Boot Starter ArangoDB](https://github.com/arangodb/spring-boot-starter) provides integration with -[Spring Boot 3](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide). - -### Java Driver 7 - -The implementation is now based on -[Java Driver 7](../../drivers/java/reference-version-7/changes-in-version-7.md). - -### Exception Translation - -- exceptions in `ArangoOperations.query()` and repository queries (derived queries and `@Query` annotated methods) are - now translated to Spring Data exceptions (`DataAccessExceptions` and subclasses) -- `OptimisticLockingFailureException` is now thrown in case of `_rev` conflict - -### Serialization - -- support for data type `VPackSlice` has been removed in favor of Jackson type `com.fasterxml.jackson.databind.JsonNode` - and its subclasses (`ArrayNode`, `ObjectNode`, ...) - -- the underlying Java driver (accessible via `com.arangodb.springframework.core.ArangoOperations#driver()`) uses - now the `ArangoConverter` bean to serialize and deserialize user data - -### API changes - -- `CrudRepository.deleteById()`now silently ignores an unknown id (as defined by API contract) -- renamed `ArangoOperations` methods operating on multiple documents with `All` suffix (e.g. `insert(Iterable)` has been - renamed to `insertAll(Iterable)` -- `ArangoOperations` methods for single document manipulation have now specific return - types (, `DocumentDeleteEntity<T>`, `DocumentUpdateEntity<T>`, `DocumentCreateEntity<T>`) -- `ArangoOperations` methods for multiple documents manipulation have now specific return types as for single documents, - wrapped by `MultiDocumentEntity<>` -- `ArangoOperations` methods for documents manipulation accepting options `returnNew(boolean)` or `returnOld(boolean)` - return now the deserialized entity in the response (accessible via `getNew()` or `getOld()`) -- changed the arguments order of some `ArangoOperations` methods for better API coherence -- changed the arguments type of some `ArangoOperations` methods to be covariant -- return updated entity from `ArangoOperations.repsert()` - -### Removed - -- removed deprecated `AbstractArangoConfiguration` in favor of `ArangoConfiguration` -- removed support for Joda-Time -- removed `ArangoOperations.insert(String collectionName, ...)` methods -- removed previously deprecated API classes and methods - -## Migrate from Spring Data ArangoDB 2.x to 3.0 - -### Annotations @Key - -The annotation `@Key` is removed. Use `@Id` instead. - -### Annotations @Id - -The annotation `@Id` is now saved in the database as field `_key` instead of `_id`. -All operations in `ArangoOperations` and `ArangoRepository` still work with `@Id` -and also now supports non-String fields. - -If you - for some reason - need the value of `_id` within your application, you -can use the annotation `@ArangoId` on a `String` field instead of `@Id`. - -**Note**: The field annotated with `@ArangoId` will not be persisted in the -database. It only exists for reading purposes. - -### ArangoRepository - -`ArangoRepository` now requires a second generic type. This type `ID` represents -the type of your domain object field annotated with `@Id`. - -**Examples** - -```java -public class Customer { - @Id private String id; -} - -public interface CustomerRepository extends ArangoRepository<Customer, String> { - -} -``` - -### Annotation @Param - -The annotation `com.arangodb.springframework.annotation.Param` is removed. Use `org.springframework.data.repository.query.Param` instead. - -### DBEntity - -`DBEntity` is removed. Use `VPackSlice` in your converter instead. - -### DBCollectionEntity - -`DBCollectionEntity` is removed. Use `VPackSlice` in your converter instead. - -## Migrate from Spring Data ArangoDB 1.x to 3.0 - -The steps are the same as for [Migrating from Spring Data ArangoDB 2.x to 3.0](#migrate-from-spring-data-arangodb-2x-to-30). diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/_index.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/_index.md deleted file mode 100644 index c72a332853..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/_index.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Spring Data ArangoDB - Reference (version 4) -menuTitle: Reference version 4 -weight: 5 -description: '' ---- diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md deleted file mode 100644 index be79122db1..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md +++ /dev/null @@ -1,282 +0,0 @@ ---- -title: Mapping -menuTitle: Mapping -weight: 20 -description: >- - The features and conventions for mapping Java objects to documents and how to - override those conventions with annotation based mapping metadata ---- -## Conventions - -- The Java class name is mapped to the collection name -- The non-static fields of a Java object are used as fields in the stored document -- The Java field name is mapped to the stored document field name -- All nested Java object are stored as nested objects in the stored document -- The Java class needs a constructor which meets the following criteria: - - in case of a single constructor: - - a non-parameterized constructor or - - a parameterized constructor - - in case of multiple constructors: - - a non-parameterized constructor or - - a parameterized constructor annotated with `@PersistenceConstructor` - -## Type mapping - -As collections in ArangoDB can contain documents of various types, a mechanism -to retrieve the correct Java class is required. The type information of -properties declared in a class may not be enough to restore the original class -(due to inheritance). If the declared complex type and the actual type do not -match, information about the actual type is stored together with the document. -This is necessary to restore the correct type when reading from the DB. -Consider the following example: - -```java -public class Person { - private String name; - private Address homeAddress; - // ... - - // getters and setters omitted -} - -public class Employee extends Person { - private Address workAddress; - // ... - - // getters and setters omitted -} - -public class Address { - private final String street; - private final String number; - // ... - - public Address(String street, String number) { - this.street = street; - this.number = number; - } - - // getters omitted -} - -@Document -public class Company { - @Key - private String key; - private Person manager; - - // getters and setters omitted -} - -Employee manager = new Employee(); -manager.setName("Jane Roberts"); -manager.setHomeAddress(new Address("Park Avenue", "432/64")); -manager.setWorkAddress(new Address("Main Street", "223")); -Company comp = new Company(); -comp.setManager(manager); -``` - -The serialized document for the DB looks like this: - -```json -{ - "manager": { - "name": "Jane Roberts", - "homeAddress": { - "street": "Park Avenue", - "number": "432/64" - }, - "workAddress": { - "street": "Main Street", - "number": "223" - }, - "_class": "com.arangodb.Employee" - }, - "_class": "com.arangodb.Company" -} -``` - -Type hints are written for top-level documents (as a collection can contain -different document types) as well as for every value if it's a complex type and -a sub-type of the property type declared. `Map`s and `Collection`s are excluded -from type mapping. Without the additional information about the concrete classes -used, the document couldn't be restored in Java. The type information of the -`manager` property is not enough to determine the `Employee` type. -The `homeAddress` and `workAddress` properties have the same actual and defined -type, thus no type hint is needed. - -### Customizing type mapping - -By default, the fully qualified class name is stored in the documents as a type -hint. A custom type hint can be set with the `@TypeAlias("my-alias")` annotation -on an entity. Make sure that it is an unique identifier across all entities. -If we would add a `TypeAlias("employee")` annotation to the `Employee` class -above, it would be persisted as `"_class": "employee"`. - -The default type key is `_class` and can be changed by overriding the `typeKey()` -method of the `ArangoConfiguration` class. - -If you need to further customize the type mapping process, the `arangoTypeMapper()` -method of the configuration class can be overridden. The included -`DefaultArangoTypeMapper` can be customized by providing a list of -[`TypeInformationMapper`](https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/convert/TypeInformationMapper.html)s -that create aliases from types and vice versa. - -In order to fully customize the type mapping process you can provide a custom -type mapper implementation by extending the `DefaultArangoTypeMapper` class. - -### Deactivating type mapping - -To deactivate the type mapping process, you can return `null` from the `typeKey()` -method of the `ArangoConfiguration` class. No type hints are stored in the -documents with this setting. If you make sure that each defined type corresponds -to the actual type, you can disable the type mapping, otherwise it can lead to -exceptions when reading the entities from the DB. - -### Security considerations - -The default polymorphic type handling strategy used by Spring Data ArangoDB uses -the type hint stored in the `_class` field, which is the fully qualified class -name by default. - -In particular, when reading a property of type `java.lang.Object`, any class -referenced by the `_class` field could be instantiated. - -In addition, the framework instantiates deserialized objects by invoking -constructors with arguments and setting properties invoking the related setters. - -This represents a security vulnerability when dealing with untrusted data, which -could cause deserialization to arbitrary target classes, trigger gadget chain -attacks, and potentially lead to remote code execution. See -[Insecure deserialization](https://learn.snyk.io/lesson/insecure-deserialization) -for details. - -Therefore, using the type `java.lang.Object` for persistent entities properties -is strongly discouraged, in particular when used for modeling untrusted data, -i.e. arbitrary JSON data coming from web users. Note that this also applies to -generics type parameters, i.e. `Map<String, Object>`, `List<Object>`, and so on. - -As work-around, it is recommended to use specific user-defined types for -persistent entities properties. - -Properties containing arbitrary JSON data can be safely typed using Jackson types -like the following: -- `com.fasterxml.jackson.databind.JsonNode` -- `com.fasterxml.jackson.databind.node.ObjectNode` -- `com.fasterxml.jackson.databind.node.ArrayNode` - -## Annotations - -### Annotation overview - -| annotation | level | description | -|--------------------------------| ------------------------- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| @Document | class | marks this class as a candidate for mapping | -| @Edge | class | marks this class as a candidate for mapping | -| @Id | field | stores the field as the system field \_key | -| @ArangoId | field | stores the field as the system field \_id | -| @Rev | field | stores the field as the system field \_rev | -| @Field("alt-name") | field | stores the field with an alternative name | -| @Ref | field | stores the \_id of the referenced document and not the nested document | -| @From | field | stores the \_id of the referenced document as the system field \_from | -| @To | field | stores the \_id of the referenced document as the system field \_to | -| @Relations | field | nodes which are connected over edges | -| @Transient | field, method, annotation | marks a field to be transient for the mapping framework, thus the property is not persisted and not further inspected by the mapping framework | -| @PersistenceConstructor | constructor | marks a given constructor - even a package protected one - to use when instantiating the object from the database | -| @TypeAlias("alias") | class | set a type alias for the class when persisted to the DB | -| @ArangoComputedValueDefinition | class | describes a computed value data definition | -| @ArangoComputedValue | field | marks the field for the mapping framework so that the property is updated with the value coming from the server and optionally describes a computed value data definition | -| @PersistentIndex | class | describes a persistent index | -| @PersistentIndexed | field | describes how to index the field | -| @GeoIndex | class | describes a geo index | -| @GeoIndexed | field | describes how to index the field | -| @FulltextIndex | class | describes a fulltext index | -| @FulltextIndexed | field | describes how to index the field | -| @TtlIndex | class | describes a TTL index | -| @TtlIndexed | field | describes how to index the field | -| @MDIndex | class | describes a Multi Dimensional index | -| @MDPrefixedIndex | class | describes a Multi Dimensional Prefixed index | -| @CreatedBy | field | Declares a field as the one representing the principal that created the entity containing the field. | -| @CreatedDate | field | Declares a field as the one representing the date the entity containing the field was created. | -| @LastModifiedBy | field | Declares a field as the one representing the principal that recently modified the entity containing the field. | -| @LastModifiedDate | field | Declares a field as the one representing the date the entity containing the field was recently modified. | - -## Invoking conversion manually - -In order to invoke entity serialization and deserialization to and from Jackson -`JsonNode` manually, you can inject an instance of `ArangoConverter` and -respectively call the methods `write` and `read` on it, e.g.: - -```java -// ... - -@Autowired -ArangoConverter arangoConverter; - - // ... - JsonNode jn = converter.write(entity); - - // ... - MyEntity entity = converter.read(MyEntity.class, jn); -``` - -## Object Mapping - -Spring Data ArangoDB delegates object mapping, object creation, field and property access to -[Spring Data Commons](https://docs.spring.io/spring-data/commons/reference/object-mapping.html). - -Methods in `ArangoOperations` try modifying the domain objects accepted as parameters, -updating the properties potentially modified by the server side, if the related fields -are mutable. This applies to the fields annotated with: -- `@ArangoId` -- `@Id` -- `@Rev` - -In addition, the following methods also try to update the fields annotated with -`@ArangoComputedValue`: -- `ArangoOperations#repsert(Object)` -- `ArangoOperations#repsertAll(Iterable<Object>, Class<?>)` - -## Object Identity - -The most of the methods in `ArangoOperations` and `ArangoRepository` return new -entity instances, except the following: -- `ArangoRepository#save(Object)` -- `ArangoRepository#saveAll(Iterable<Object>)` - -These methods return by default the same instance(s) of the domain object(s) -accepted as parameter(s) and update the properties potentially modified by the -server side, if the related fields are mutable. -This applies to the fields annotated with: -- `@ArangoId` -- `@Id` -- `@Rev` -- `@ArangoComputedValue` - -This behavior can be changed by overriding `ArangoConfiguration#returnOriginalEntities()`, -which by default returns `true`. For example: - -```java -@Configuration -@EnableArangoRepositories -public class MyConfiguration implements ArangoConfiguration { - - // ... - - @Override - public boolean returnOriginalEntities() { - return false; - } - -} -``` - -Note that also in this case, input parameters properties are still updated, if mutable. - -## Working with immutable objects - -Spring Data ArangoDB can work with immutable entity classes, like Java Records, -Kotlin data classes and final classes with immutable properties. In this case, -to use `ArangoRepository#save(Object)` and `ArangoRepository#saveAll(Iterable<Object>)` -is required overriding `ArangoConfiguration#returnOriginalEntities()` to make it -return `false`, see [Object Identity](#object-identity). diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md deleted file mode 100644 index 5bd5fbd07c..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: Auditing -menuTitle: Auditing -weight: 40 -description: '' ---- -Spring Data ArangoDB provides basic auditing functionality -where you can track who made changes on your data and when. - -To enable auditing you have to add the annotation `@EnableArangoAuditing` to -your configuration class. - -```java -@Configuration -@EnableArangoAuditing -public class MyConfiguration implements ArangoConfiguration { -``` - -We can now add fields to our model classes and annotate them with `@CreateDate`, -`@CreatedBy`, `@LastModifiedDate` and `@LastModifiedBy` to store the auditing -information. All annotation names should be self-explanatory. - -```java -@Document -public class MyEntity { - - @CreatedDate - private Instant created; - - @CreatedBy - private User createdBy; - - @LastModifiedDate - private Instant modified; - - @LastModifiedBy - private User modifiedBy; - -} -``` - -The annotations `@CreateDate` and `@LastModifiedDate` are working with fields of -any kind of Date/Timestamp type which is supported by Spring Data -(i.e. `java.util.Date`, `java.time.Instant`, `java.time.LocalDateTime`). - -For `@CreatedBy` and `@LastModifiedBy` we need to provide Spring Data the -information of the current auditor (i.e. `User` in our case). We can do so by -implementing the `AuditorAware` interface - -```java -public class AuditorProvider implements AuditorAware<User> { - @Override - public Optional<User> getCurrentAuditor() { - // return current user - } -} -``` - -and add the implementation as a bean to our Spring context. - -```java -@Configuration -@EnableArangoAuditing(auditorAwareRef = "auditorProvider") -public class MyConfiguration implements ArangoConfiguration { - - @Bean - public AuditorAware<User> auditorProvider() { - return new AuditorProvider(); - } - -} -``` - -If you use a type in your `AuditorAware` implementation, which will be also -persisted in your database and you only want to save a reference in your entity, -just add the [@Ref annotation](reference.md) to the fields annotated with -`@CreatedBy` and `@LastModifiedBy`. Keep in mind that you have to save the -`User` in your database first to get a valid reference. - -```java -@Document -public class MyEntity { - - @Ref - @CreatedBy - private User createdBy; - - @Ref - @LastModifiedBy - private User modifiedBy; - -} -``` - -To customize the behavior of deciding whether an entity instance is new or has -already been persisted previously, the entity can implement the -`org.springframework.data.domain.Persistable<ID>` interface which is defined as follows: - -```java -public interface Persistable<ID> { - /** - * Returns the id of the entity. - * - * @return the id. Can be {@literal null}. - */ - @Nullable - ID getId(); - - /** - * Returns if the {@code Persistable} is new or was persisted already. - * - * @return if {@literal true} the object is new. - */ - boolean isNew(); -} -``` - -For example, we might want to consider an entity instance new if the field -`createdDate` is `null`: - -```java -@Document -public class Person implements Persistable<String> { - - @Id - private String id; - private String name; - - @CreatedDate - private Instant createdDate; - - @LastModifiedDate - private Instant modifiedDate; - - @Override - public String getId() { - return id; - } - - @Override - @Transient - public boolean isNew() { - return created == null; - } - - // ... -} -``` diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md deleted file mode 100644 index 18ff53f945..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Converter -menuTitle: Converter -weight: 30 -description: '' ---- -## Registering a Spring Converter - -The `ArangoConfiguration` provides a convenient way to register Spring -`Converter` by implementing the method `customConverters()`. - -**Examples** - -```java -@Configuration -public class MyConfiguration implements ArangoConfiguration { - - @Override - protected Collection<Converter<?, ?>> customConverters() { - return Arrays.asList(new MyConverter()); - } - -} -``` - -## Implementing a Spring Converter - -A `Converter` is used for reading if the source type is of type `JsonNode` -or `DBDocumentEntity`. - -A `Converter` is used for writing if the target type is of type `JsonNode`, -`DBDocumentEntity`, `BigInteger`, `BigDecimal`, `java.sql.Date`, -`java.sql.Timestamp`, `Instant`, `LocalDate`, `LocalDateTime`, `OffsetDateTime`, -`ZonedDateTime`, `Boolean`, `Short`, `Integer`, `Byte`, `Float`, `Double`, -`Character`, `String`, `Date`, `Class`, `Enum`, `boolean[]`, `long[]`, -`short[]`, `int[]`, `byte[]`, `float[]`, `double[]` or `char[]`. - -**Examples** - -```java -public class MyConverter implements Converter<MyObject, JsonNode> { - - @Override - public JsonNode convert(final MyObject source) { - ObjectNode on = JsonNodeFactory.instance.objectNode(); - // map fields of MyObject to builder - // on.put("key", "value"); - // ... - return on; - } - -} -``` diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md deleted file mode 100644 index 9fe3562fca..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Document -menuTitle: Document -weight: 5 -description: '' ---- -## Annotation @Document - -The annotations `@Document` applied to a class marks this class as a candidate -for mapping to the database. The most relevant parameter is `value` to specify -the collection name in the database. The annotation `@Document` specifies the -collection type to `DOCUMENT`. - -```java -@Document(value="persons") -public class Person { - ... -} -``` - -## Spring Expression support - -Spring Data ArangoDB supports the use of SpEL expressions within -`@Document#value`. This feature lets you define a dynamic collection name which -can be used to implement multi tenancy applications. - -```java -@Component -public class TenantProvider { - - public String getId() { - // threadlocal lookup - } - -} -``` - -```java -@Document("#{tenantProvider.getId()}_persons") -public class Person { - ... -} -``` - -## Annotation @From and @To - -With the annotations `@From` and `@To` applied on a collection or array field in -a class annotated with `@Document` the nested edge objects are fetched from the -database. Each of the nested edge objects has to be stored as separate edge -document in the edge collection described in the `@Edge` annotation of the -nested object class with the _\_id_ of the parent document as field _\_from_ -or _\_to_. - -```java -@Document("persons") -public class Person { - @From - private List<Relation> relations; -} - -@Edge(name="relations") -public class Relation { - ... -} -``` - -The database representation of `Person` in collection _persons_ looks as follow: - -``` -{ - "_key" : "123", - "_id" : "persons/123" -} -``` - -and the representation of `Relation` in collection _relations_: - -``` -{ - "_key" : "456", - "_id" : "relations/456", - "_from" : "persons/123" - "_to" : ".../..." -} -{ - "_key" : "789", - "_id" : "relations/456", - "_from" : "persons/123" - "_to" : ".../..." -} -... -``` - -**Note**: The annotations `@From` and `@To` -also work on non-collection/non-array fields. If multiple edges are linked with -the entity, it is not guaranteed that the same edge is returned every time. -Use at your own risk. diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md deleted file mode 100644 index 984f6711c0..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Edge -menuTitle: Edge -weight: 10 -description: '' ---- -## Annotation @Edge - -The annotations `@Edge` applied to a class marks this class as a candidate for -mapping to the database. The most relevant parameter is `value` to specify the -collection name in the database. The annotation `@Edge` specifies the collection -type to `EDGE`. - -```java -@Edge("relations") -public class Relation { - ... -} -``` - -## Spring Expression support - -Spring Data ArangoDB supports the use of SpEL expressions within `@Edge#value`. -This feature lets you define a dynamic collection name which can be used to -implement multi tenancy applications. - -```java -@Component -public class TenantProvider { - - public String getId() { - // threadlocal lookup - } - -} -``` - -```java -@Edge("#{tenantProvider.getId()}_relations") -public class Relation { - ... -} -``` - -## Annotation @From and @To - -With the annotations `@From` and `@To` applied on a field in a class annotated -with `@Edge` the nested object is fetched from the database. The nested object -has to be stored as a separate document in the collection described in the -`@Document` annotation of the nested object class. The _\_id_ field of this -nested object is stored in the fields `_from` or `_to` within the edge document. - -```java -@Edge("relations") -public class Relation { - @From - private Person c1; - @To - private Person c2; -} - -@Document(value="persons") -public class Person { - @Id - private String id; -} -``` - -The database representation of `Relation` in collection _relations_ looks as follow: - -``` -{ - "_key" : "123", - "_id" : "relations/123", - "_from" : "persons/456", - "_to" : "persons/789" -} -``` - -and the representation of `Person` in collection _persons_: - -``` -{ - "_key" : "456", - "_id" : "persons/456", -} -{ - "_key" : "789", - "_id" : "persons/789", -} -``` - -**Note:** If you want to save an instance of `Relation`, both `Person` objects -(from & to) already have to be persisted and the class `Person` needs a field -with the annotation `@Id` so it can hold the persisted `_id` from the database. diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md deleted file mode 100644 index af728f23da..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Events -menuTitle: Events -weight: 35 -description: '' ---- -Spring Data ArangoDB includes several `ApplicationEvent` events that your -application can respond to by registering subclasses of -`AbstractArangoEventListener` in the ApplicationContext. - -The following callback methods are present in `AbstractArangoEventListener`: - -- `onAfterLoad`: Called in `ArangoTemplate#find` and `ArangoTemplate#query` after the object is loaded from the database. -- `onBeforeSave`: Called in `ArangoTemplate#insert`/`#update`/`#replace` before the object is converted and send to the database. -- `onAfterSave`: Called in `ArangoTemplate#insert`/`#update`/`#replace` after the object is send to the database. -- `onBeforeDelete`: Called in `ArangoTemplate#delete` before the object is converted and send to the database. -- `onAfterDelete`: Called in `ArangoTemplate#delete` after the object is deleted from the database. - -**Examples** - -```java -package my.mapping.events; - -public class BeforePersonSavedListener extends AbstractArangoEventListener<Person> { - - @Override - public void onBeforeSave(BeforeSaveEvent<Person> event) { - // do some logging or data manipulation - } - -} -``` - -To register the listener add `@ComponentScan` with the package of your listener -to your configuration class. - -```java -@Configuration -@ComponentScan("my.mapping.events") -public class MyConfiguration implements ArangoConfiguration { - ... -``` diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md deleted file mode 100644 index 7bd9a78c42..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Indexes -menuTitle: Indexes -weight: 25 -description: '' ---- -Indexes can be ensured using the following annotations. For reference see the -[indexing](../../../../../index-and-search/indexing/_index.md) documentation -and specific aspects that apply to -[indexes on shards](../../../../../deploy/architecture/data-sharding.md#indexes-on-shards). - -## Annotation @\<IndexType\>Indexed - -With the `@<IndexType>Indexed` annotations user defined indexes can be created -at a collection level by annotating single fields of a class. - -Possible `@<IndexType>Indexed` annotations are: - -- `@PersistentIndexed` -- `@GeoIndexed` -- `@FulltextIndexed` (deprecated) -- `@TtlIndexed` - -The following example creates a persistent index on the field `name` and a -separate persistent index on the field `age`: - -```java -public class Person { - @PersistentIndexed - private String name; - - @PersistentIndexed - private int age; -} -``` - -With the `@<IndexType>Indexed` annotations different indexes can be created on the same field. - -The following example creates a TTL index and also a persistent index on the field `name`: - -```java -public class Person { - @TtlIndexed - @PersistentIndexed - private String name; -} -``` - -## Annotation @\<IndexType\>Index - -If the index should include multiple fields the `@<IndexType>Index` annotations -can be used on the type instead. - -Possible `@<IndexType>Index` annotations are: - -- `@PersistentIndex` -- `@GeoIndex` -- `@FulltextIndex` (deprecated) -- `@TtlIndex` -- `@MDIndex` -- `@MDPrefixedIndex` - -The following example creates a single persistent index on the fields `name` and -`age`, note that if a field is renamed in the database with @Field, the new -field name must be used in the index declaration: - -```java -@PersistentIndex(fields = {"fullname", "age"}) -public class Person { - @Field("fullname") - private String name; - - private int age; -} -``` - -The `@<IndexType>Index` annotations can also be used to create an index on a nested field. - -The following example creates a single persistent index on the fields `name` and -`address.country`: - -```java -@PersistentIndex(fields = {"name", "address.country"}) -public class Person { - private String name; - - private Address address; -} -``` - -The `@<IndexType>Index` annotations and the `@<IndexType>Indexed` annotations -can be used at the same time in one class. - -The following example creates a persistent index on the fields `name` and `age` -and a separate persistent index on the field `age`: - -```java -@PersistentIndex(fields = {"name", "age"}) -public class Person { - private String name; - - @PersistentIndexed - private int age; -} -``` - -The `@<IndexType>Index` annotations can be used multiple times to create more -than one index in this way. - -The following example creates a persistent index on the fields `name` and `age` -and a separate persistent index on the fields `name` and `gender`: - -```java -@PersistentIndex(fields = {"name", "age"}) -@PersistentIndex(fields = {"name", "gender"}) -public class Person { - private String name; - - private int age; - - private Gender gender; -} -``` diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md deleted file mode 100644 index fd4fcaf1d1..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Reference -menuTitle: Reference -weight: 15 -description: '' ---- -With the annotation `@Ref` applied on a field the nested object isn't stored as -a nested object in the document. The `_id` field of the nested object is stored -in the document and the nested object has to be stored as a separate document in -another collection described in the `@Document` annotation of the nested object -class. To successfully persist an instance of your object the referencing field -has to be null or it's instance has to provide a field with the annotation `@Id` -including a valid id. - -**Examples** - -```java -@Document(value="persons") -public class Person { - @Ref - private Address address; -} - -@Document("addresses") -public class Address { - @Id - private String id; - private String country; - private String street; -} -``` - -The database representation of `Person` in collection _persons_ looks as follow: - -```json -{ - "_key" : "123", - "_id" : "persons/123", - "address" : "addresses/456" -} -``` - -and the representation of `Address` in collection _addresses_: - -```json -{ - "_key" : "456", - "_id" : "addresses/456", - "country" : "...", - "street" : "..." -} -``` - -Without the annotation `@Ref` at the field `address`, the stored document would look: - -```json -{ - "_key" : "123", - "_id" : "persons/123", - "address" : { - "country" : "...", - "street" : "..." - } -} -``` diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md deleted file mode 100644 index 08d7dedbc0..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Relations -menuTitle: Relations -weight: 20 -description: '' ---- -With the annotation `@Relations` applied on a collection or array field in a -class annotated with `@Document`, the nested objects are fetched from the -database over a graph traversal with your current object as the starting point. -The most relevant parameter is `edge`. With `edge` you define the edge collection - -which should be used in the traversal - using the class type. With the parameter -`depth` you can define the maximal depth for the traversal (default 1) and the -parameter `direction` defines whether the traversal should follow outgoing or -incoming edges (default Direction.ANY). - -**Examples** - -```java -@Document(value="persons") -public class Person { - @Relations(edge=Relation.class, depth=1, direction=Direction.ANY) - private List<Person> friends; -} - -@Edge(name="relations") -public class Relation { - -} -``` - -**Note**: The annotation `@Relations` also work -on non-collection/non-array fields. If multiple documents are linked with the -entity, it is not guaranteed that the same document is returned every time. -Use at your own risk. diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md deleted file mode 100644 index 4685be73ed..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Repositories -menuTitle: Repositories -weight: 15 -description: >- - Interact with ArangoDB using the high-level and consistent abstraction - provided by Spring Data repositories ---- -Spring Data Commons provides a composable repository infrastructure which -Spring Data ArangoDB is built on. These allow for interface-based composition of -repositories consisting of provided default implementations for certain -interfaces (like `CrudRepository`) and custom implementations for other methods. - -The base interface of Spring Data ArangoDB is `ArangoRepository`. It extends the -Spring Data interfaces `PagingAndSortingRepository` and `QueryByExampleExecutor`. -To get access to all Spring Data ArangoDB repository functionality simply create -your own interface extending `ArangoRepository<T, ID>`. - -The type `T` represents your domain class and type `ID` the type of your field -annotated with `@Id` in your domain class. This field is persisted in ArangoDB -as document field `_key`. - -**Examples** - -```java -@Document -public class MyDomainClass { - @Id - private String id; - -} - -public interface MyRepository extends ArangoRepository<MyDomainClass, String> { - -} -``` - -Instances of a Repository are created in Spring beans through the auto-wired mechanism of Spring. - -```java -public class MySpringBean { - - @Autowired - private MyRepository rep; - -} -``` diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md deleted file mode 100644 index 8d92f28ea7..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Queries -menuTitle: Queries -weight: 5 -description: '' ---- -Spring Data ArangoDB supports three kinds of queries: - -- [Derived queries](derived-queries.md) -- [Query methods](query-methods.md) -- [Named queries](named-queries.md) - -## Return types - -The method return type for single results can be a primitive type, a domain -class, `JsonNode`, `ObjectNode`, `Map<String, Object>`, `BaseDocument`, -`BaseEdgeDocument`, `Optional<Type>`, `GeoResult<Type>`. - -The method return type for multiple results can be `JsonNode`, `ArrayNode`, -`ArangoCursor<Type>`, `Iterable<Type>`, `Collection<Type>`, `List<Type>`, -`Set<Type>`, `Page<Type>`, `Slice<Type>`, `GeoPage<Type>`, `GeoResults<Type>` -where Type can be everything a single result can be. - -## AQL query options - -You can set additional options for the query and the created cursor over the -class `AqlQueryOptions` which you can simply define as a method parameter -without a specific name. AqlQuery options can also be defined with the -`@QueryOptions` annotation, as shown below. Aql query options from an annotation -and those from an argument are merged if both exist, with those in the argument -taking precedence. - -The `AqlQueryOptions` allows you to set the cursor time-to-live, batch-size, -caching flag and several other settings. This special parameter works with both -[query methods](query-methods.md) -and [derived queries](derived-queries.md). Keep in mind that some options, like -time-to-live, are only effective if the method return type is`ArangoCursor<T>` -or `Iterable<T>`. - -**Examples** - -```java -public interface MyRepository extends Repository<Customer, String> { - - - @Query("FOR c IN #collection FILTER c.name == @0 RETURN c") - Iterable<Customer> query(String name, AqlQueryOptions options); - - - Iterable<Customer> findByName(String name, AqlQueryOptions options); - - - @QueryOptions(maxPlans = 1000, ttl = 128) - ArangoCursor<Customer> findByAddressZipCode(ZipCode zipCode); - - - @Query("FOR c IN #collection FILTER c[@field] == @value RETURN c") - @QueryOptions(cache = true, ttl = 128) - ArangoCursor<Customer> query(Map<String, Object> bindVars, AqlQueryOptions options); - -} -``` - -## Paging and sorting - -Spring Data ArangoDB supports Spring Data's `Pageable` and `Sort` parameters for -repository query methods. If these parameters are used together with a native -query, either through `@Query` annotation or [named queries](named-queries.md), -a placeholder must be specified: - -- `#pageable` for `Pageable` parameter -- `#sort` for `Sort` parameter - -Sort properties or paths are attributes separated by dots (e.g. `customer.age`). -Some rules apply for them: - -- they must not begin or end with a dot (e.g. `.customer.age`) -- dots in attributes are supported, but the whole attribute must be enclosed by backticks (e.g. `` customer.`attr.with.dots` ``) -- backticks in attributes are supported, but they must be escaped with a backslash (e.g. `` customer.attr_with\` ``) -- any backslashes (that do not escape a backtick) are escaped (e.g. `customer\` => `customer\\`) - -**Examples** - -``` -just.`some`.`attributes.that`.`form\``.a path\`.\ is converted to -`just`.`some`.`attributes.that`.`form\``.`a path\``.`\\` -``` - -**Native queries example** - -```java -public interface CustomerRepository extends ArangoRepository<Customer> { - - @Query("FOR c IN #collection FILTER c.name == @1 #pageable RETURN c") - Page<Customer> findByNameNative(Pageable pageable, String name); - - @Query("FOR c IN #collection FILTER c.name == @1 #sort RETURN c") - List<Customer> findByNameNative(Sort sort, String name); -} - - // don't forget to specify the var name of the document - final Pageable page = PageRequest.of(1, 10, Sort.by("c.age")); -repository.findByNameNative(page, "Matt"); - -final Sort sort = Sort.by(Direction.DESC, "c.age"); - repository.findByNameNative(sort, "Tony"); -``` - -**Derived queries example** - -```java -public interface CustomerRepository extends ArangoRepository<Customer> { - - Page<Customer> findByName(Pageable pageable, String name); - - List<Customer> findByName(Sort sort, String name); -} - - // no var name is necessary for derived queries - final Pageable page = PageRequest.of(1, 10, Sort.by("age")); -repository.findByName(page, "Matt"); - -final Sort sort = Sort.by(Direction.DESC, "age"); - repository.findByName(sort, "Tony"); -``` diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md deleted file mode 100644 index 69e45bafd7..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md +++ /dev/null @@ -1,218 +0,0 @@ ---- -title: Derived queries -menuTitle: Derived queries -weight: 5 -description: '' ---- -## Semantic parts - -Spring Data ArangoDB supports queries derived from methods names by splitting it -into its semantic parts and converting into AQL. The mechanism strips the -prefixes - -- `find..By` -- `get..By` -- `query..By` -- `read..By` -- `stream..By` -- `count..By` -- `exists..By` -- `delete..By` -- `remove..By` - -from the method and parses the rest. The `By` acts as a separator to indicate -the start of the criteria for the query to be built. You can define conditions -on entity properties and concatenate them with `And` and `Or`. - -The complete list of part types for derived methods is below, where `doc` is a -document in the database - -| Keyword | Sample | Predicate | -| ------------------------------------------- | -------------------------------------- | -------------------------------------- | -| IsGreaterThan, GreaterThan, After | findByAgeGreaterThan(int age) | doc.age > age | -| IsGreaterThanEqual, GreaterThanEqual | findByAgeIsGreaterThanEqual(int age) | doc.age >= age | -| IsLessThan, LessThan, Before | findByAgeIsLessThan(int age) | doc.age < age | -| IsLessThanEqualLessThanEqual | findByAgeLessThanEqual(int age) | doc.age <= age | -| IsBetween, Between | findByAgeBetween(int lower, int upper) | lower < doc.age < upper | -| IsNotNull, NotNull | findByNameNotNull() | doc.name != null | -| IsNull, Null | findByNameNull() | doc.name == null | -| IsLike, Like | findByNameLike(String name) | doc.name LIKE name | -| IsNotLike, NotLike | findByNameNotLike(String name) | NOT(doc.name LIKE name) | -| IsStartingWith, StartingWith, StartsWith | findByNameStartsWith(String prefix) | doc.name LIKE prefix | -| IsEndingWith, EndingWith, EndsWith | findByNameEndingWith(String suffix) | doc.name LIKE suffix | -| Regex, MatchesRegex, Matches | findByNameRegex(String pattern) | REGEX_TEST(doc.name, name, ignoreCase) | -| (No Keyword) | findByFirstName(String name) | doc.name == name | -| IsTrue, True | findByActiveTrue() | doc.active == true | -| IsFalse, False | findByActiveFalse() | doc.active == false | -| Is, Equals | findByAgeEquals(int age) | doc.age == age | -| IsNot, Not | findByAgeNot(int age) | doc.age != age | -| IsIn, In | findByNameIn(String[] names) | doc.name IN names | -| IsNotIn, NotIn | findByNameIsNotIn(String[] names) | doc.name NOT IN names | -| IsContaining, Containing, Contains | findByFriendsContaining(String name) | name IN doc.friends | -| IsNotContaining, NotContaining, NotContains | findByFriendsNotContains(String name) | name NOT IN doc.friends | -| Exists | findByFriendNameExists() | HAS(doc.friend, name) | - -**Examples** - -```java -public interface MyRepository extends ArangoRepository<Customer, String> { - - // FOR c IN customers FILTER c.name == @0 RETURN c - ArangoCursor<Customer> findByName(String name); - ArangoCursor<Customer> getByName(String name); - - // FOR c IN customers - // FILTER c.name == @0 && c.age == @1 - // RETURN c - ArangoCursor<Customer> findByNameAndAge(String name, int age); - - // FOR c IN customers - // FILTER c.name == @0 || c.age == @1 - // RETURN c - ArangoCursor<Customer> findByNameOrAge(String name, int age); -} -``` - -You can apply sorting for one or multiple sort criteria by appending `OrderBy` -to the method and `Asc` or `Desc` for the directions. - -```java -public interface MyRepository extends ArangoRepository<Customer, String> { - - // FOR c IN customers - // FILTER c.name == @0 - // SORT c.age DESC RETURN c - ArangoCursor<Customer> getByNameOrderByAgeDesc(String name); - - // FOR c IN customers - // FILTER c.name = @0 - // SORT c.name ASC, c.age DESC RETURN c - ArangoCursor<Customer> findByNameOrderByNameAscAgeDesc(String name); - -} -``` - -## Property expression - -Property expressions can refer only to direct and nested properties of the -managed domain class. The algorithm checks the domain class for the entire -expression as the property. If the check fails, the algorithm splits up the -expression at the camel case parts from the right and tries to find the -corresponding property. - -**Examples** - -```java -@Document("customers") -public class Customer { - private Address address; -} - -public class Address { - private ZipCode zipCode; -} - -public interface MyRepository extends ArangoRepository<Customer, String> { - - // 1. step: search domain class for a property "addressZipCode" - // 2. step: search domain class for "addressZip.code" - // 3. step: search domain class for "address.zipCode" - ArangoCursor<Customer> findByAddressZipCode(ZipCode zipCode); -} -``` - -It is possible for the algorithm to select the wrong property if the domain -class also has a property which matches the first split of the expression. -To resolve this ambiguity you can use `_` as a separator inside your -method-name to define traversal points. - -**Examples** - -```java -@Document("customers") -public class Customer { - private Address address; - private AddressZip addressZip; -} - -public class Address { - private ZipCode zipCode; -} - -public class AddressZip { - private String code; -} - -public interface MyRepository extends ArangoRepository<Customer, String> { - - // 1. step: search domain class for a property "addressZipCode" - // 2. step: search domain class for "addressZip.code" - // creates query with "x.addressZip.code" - ArangoCursor<Customer> findByAddressZipCode(ZipCode zipCode); - - // 1. step: search domain class for a property "addressZipCode" - // 2. step: search domain class for "addressZip.code" - // 3. step: search domain class for "address.zipCode" - // creates query with "x.address.zipCode" - ArangoCursor<Customer> findByAddress_ZipCode(ZipCode zipCode); - -} -``` - -## Geospatial queries - -Geospatial queries are a subsection of derived queries. To use a geospatial -query on a collection, a geo index must exist on that collection. A geo index -can be created on a field which is a two element array, corresponding to -latitude and longitude coordinates. - -Alternatively, it can be created on a field of one of the following types: -- `org.springframework.data.geo.Point` -- `org.springframework.data.geo.Polygon` -- `com.arangodb.springframework.core.geo.GeoJsonPoint` -- `com.arangodb.springframework.core.geo.GeoJsonMultiPoint` -- `com.arangodb.springframework.core.geo.GeoJsonLineString` -- `com.arangodb.springframework.core.geo.GeoJsonMultiLineString` -- `com.arangodb.springframework.core.geo.GeoJsonPolygon` -- `com.arangodb.springframework.core.geo.GeoJsonMultiPolygon` - -These types will be serialized and deserialized to and from GeoJSON geometry -objects. Following the GeoJSON specification, the first coordinate in the point -coordinates list is the longitude and the second one is the latitude. -Note that to create a geospatial index on GeoJSON data field, the `geoJson` -option should be set to `true`, e.g. - -```java -class MyEntity { - // ... - @GeoIndexed(geoJson = true) - private Point location; - // ... -} -``` - -As a subsection of derived queries, geospatial queries support all the same -return types, but also support the three return types `GeoPage`, `GeoResult` and -`GeoResults`. These types must be used in order to get the distance of each -document as generated by the query. - -There are two kinds of geospatial query, Near and Within. Near sorts documents -by distance from the given point, while within both sorts and filters documents, -returning those within the given distance range or shape. - -**Examples** - -```java -public interface MyRepository extends ArangoRepository<City, String> { - - GeoResult<City> getByLocationNear(Point point); - - GeoResults<City> findByLocationWithinOrLocationWithin(Box box, Polygon polygon); - - //Equivalent queries - GeoResults<City> findByLocationWithinOrLocationWithin(Point point, int distance); - GeoResults<City> findByLocationWithinOrLocationWithin(Point point, Distance distance); - GeoResults<City> findByLocationWithinOrLocationWithin(Circle circle); - -} -``` diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md deleted file mode 100644 index bc5545f601..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Named queries -menuTitle: Named queries -weight: 15 -description: '' ---- -An alternative to using the `@Query` annotation on methods is specifying them in -a separate `.properties` file. The default path for the file is -`META-INF/arango-named-queries.properties` and can be changed with the -`EnableArangoRepositories#namedQueriesLocation()` setting. The entries in the -properties file must adhere to the following convention: -`{simple entity name}.{method name} = {query}`. -Let's assume we have the following repository interface: - -```java -package com.arangodb.repository; - -public interface CustomerRepository extends ArangoRepository<Customer, String> { - - Customer findByUsername(@Param("username") String username); - -} -``` - -The corresponding `arango-named-queries.properties` file looks like this: - -```properties -Customer.findByUsername = FOR c IN customers FILTER c.username == @username RETURN c -``` - -The queries specified in the properties file are no different from the queries -that can be defined with the `@Query` annotation. The only difference is that -the queries are in one place. If there is a `@Query` annotation present and a -named query defined, the query in the `@Query` annotation takes precedence. diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/template.md b/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/template.md deleted file mode 100644 index 48f46f0970..0000000000 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/template.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Template -menuTitle: Template -weight: 10 -description: >- - With `ArangoTemplate`, Spring Data ArangoDB offers a central support for - interactions with the database over a rich feature set ---- -`ArangoTemplate` mostly offers the features from the ArangoDB Java driver with -additional exception translation from the drivers exceptions to the Spring Data -access exceptions inheriting the `DataAccessException` class. - -The `ArangoTemplate` class is the default implementation of the operations -interface `ArangoOperations` which developers of Spring Data are encouraged to -code against. diff --git a/site/content/arangodb/3.13/develop/javascript-api/_index.md b/site/content/arangodb/3.13/develop/javascript-api/_index.md index 1871086f86..349a0946b7 100644 --- a/site/content/arangodb/3.13/develop/javascript-api/_index.md +++ b/site/content/arangodb/3.13/develop/javascript-api/_index.md @@ -26,7 +26,7 @@ It communicates with the server via the HTTP API. {{< tip >}} The JavaScript API cannot be used in browsers, Node.js, or other JavaScript -environments. You can use the [arangojs driver](../drivers/javascript.md) instead. +environments. You can use the [arangojs driver](../../../../ecosystem/drivers/javascript.md) instead. Note that it has a different interface. {{< /tip >}} diff --git a/site/content/arangodb/3.13/get-started/how-to-interact-with-arangodb.md b/site/content/arangodb/3.13/get-started/how-to-interact-with-arangodb.md index ffceaf99dd..754709fc11 100644 --- a/site/content/arangodb/3.13/get-started/how-to-interact-with-arangodb.md +++ b/site/content/arangodb/3.13/get-started/how-to-interact-with-arangodb.md @@ -34,7 +34,7 @@ interact with the server. You can also use it for automating tasks. ### Drivers and Integrations When you start using ArangoDB in your project, you will likely use an official -or community-made [driver](../develop/drivers/_index.md) written in the same language as your project. +or community-made [driver](../../../ecosystem/drivers/_index.md) written in the same language as your project. Drivers implement a programming interface that should feel natural for that programming language, and do all the talking to the server. diff --git a/site/content/arangodb/3.13/operations/administration/_index.md b/site/content/arangodb/3.13/operations/administration/_index.md index ea48d0f8bb..74cb6fb8e3 100644 --- a/site/content/arangodb/3.13/operations/administration/_index.md +++ b/site/content/arangodb/3.13/operations/administration/_index.md @@ -26,7 +26,7 @@ Deployments of ArangoDB servers can be managed with the following tools: - **RESTful API**: _arangod_ has an [HTTP interface](../../develop/http-api/_index.md) through which it can be fully managed. The official client tools including _arangosh_ and the Web interface talk to this bare metal interface. It is also relevant for - [driver](../../develop/drivers/_index.md) developers. + [driver](../../../../ecosystem/drivers/_index.md) developers. - [**ArangoDB Starter**](../../components/tools/arangodb-starter/_index.md): This deployment tool helps to start _arangod_ instances, like for a Cluster setup. diff --git a/site/content/ecosystem/_index.md b/site/content/ecosystem/_index.md index 578a53e1c4..e0a55de545 100644 --- a/site/content/ecosystem/_index.md +++ b/site/content/ecosystem/_index.md @@ -1,6 +1,39 @@ --- -title: Recommended Resources +title: Ecosystem menuTitle: Ecosystem weight: 5 layout: default ---- \ No newline at end of file +--- +The ArangoDB ecosystem includes official drivers, integrations, and adapters that +help you connect ArangoDB to your applications and data science tools. + +## Drivers + +Official [drivers](drivers/_index.md) for various programming languages allow you to +connect to and interact with ArangoDB from your applications: + +- [Java](drivers/java/_index.md) +- [Go](drivers/go.md) +- [JavaScript](drivers/javascript.md) +- [Python](drivers/python.md) + +## Integrations + +[Integrations](integrations/_index.md) for popular frameworks and tools: + +- [Spring Data & Spring Boot](integrations/spring-data-arangodb/_index.md) +- [Apache Spark](integrations/arangodb-datasource-for-apache-spark.md) +- [Apache Kafka](integrations/kafka-connect-arangodb-sink-connector/_index.md) +- [TinkerPop Provider](integrations/arangodb-tinkerpop-provider.md) + +## Adapters + +[Integrations for data science tools](adapters/_index.md) enable seamless integration +with popular data science and graph processing libraries: + +- [NetworkX](adapters/arangodb-networkx-adapter.md) +- [cuGraph](adapters/arangodb-cugraph-adapter.md) +- [PyTorch Geometric (PyG)](adapters/arangodb-pyg-adapter.md) +- [Deep Graph Library (DGL)](adapters/arangodb-dgl-adapter.md) +- [Resource Description Framework (RDF)](adapters/arangodb-rdf-adapter.md) +- [LangChain](adapters/langchain.md) \ No newline at end of file diff --git a/site/content/ecosystem/adapters/_index.md b/site/content/ecosystem/adapters/_index.md index 267bcebac3..26d456e16f 100644 --- a/site/content/ecosystem/adapters/_index.md +++ b/site/content/ecosystem/adapters/_index.md @@ -1,6 +1,6 @@ --- -title: ArangoDB integrations for data science -menuTitle: Integrations +title: ArangoDB Adapters for data science +menuTitle: Data Science Adapters weight: 50 description: >- ArangoDB offers multiple adapters that enable seamless integration with diff --git a/site/content/arangodb/3.12/develop/drivers/_index.md b/site/content/ecosystem/drivers/_index.md similarity index 92% rename from site/content/arangodb/3.12/develop/drivers/_index.md rename to site/content/ecosystem/drivers/_index.md index 6fc7ee3507..2902378770 100644 --- a/site/content/arangodb/3.12/develop/drivers/_index.md +++ b/site/content/ecosystem/drivers/_index.md @@ -1,10 +1,13 @@ --- title: Official ArangoDB drivers menuTitle: Drivers -weight: 285 +weight: 10 description: >- ArangoDB drivers allow you to connect ArangoDB to your applications and manage the database system via a language-specific interface +aliases: + - /3.12/develop/drivers/ + - /3.13/develop/drivers/ --- Database drivers, also called connectors, adapters, or client libraries, let you access and manage database systems. ArangoDB drivers are interfaces between @@ -50,4 +53,4 @@ The [**Python-Arango**](python.md) driver lets you work with ArangoDB in the Python scripting language. - Online course: [Python Driver Tutorial](https://www.arangodb.com/tutorials/tutorial-python/) -- Repository: [github.com/ArangoDB-Community/python-arango](https://github.com/ArangoDB-Community/python-arango) +- Repository: [github.com/arangodb/python-arango](https://github.com/arangodb/python-arango) diff --git a/site/content/arangodb/3.12/develop/drivers/go.md b/site/content/ecosystem/drivers/go.md similarity index 99% rename from site/content/arangodb/3.12/develop/drivers/go.md rename to site/content/ecosystem/drivers/go.md index be7559eca1..0f72362598 100644 --- a/site/content/arangodb/3.12/develop/drivers/go.md +++ b/site/content/ecosystem/drivers/go.md @@ -3,6 +3,9 @@ title: ArangoDB Go driver menuTitle: Go driver weight: 15 description: '' +aliases: + - /3.12/develop/drivers/go + - /3.13/develop/drivers/go --- The official Go driver in version 2 is the recommended client for interacting with ArangoDB using the Go programming language. diff --git a/site/content/arangodb/3.13/develop/drivers/java/_index.md b/site/content/ecosystem/drivers/java/_index.md similarity index 98% rename from site/content/arangodb/3.13/develop/drivers/java/_index.md rename to site/content/ecosystem/drivers/java/_index.md index dc7d37d9fd..632d62bf58 100644 --- a/site/content/arangodb/3.13/develop/drivers/java/_index.md +++ b/site/content/ecosystem/drivers/java/_index.md @@ -3,6 +3,9 @@ title: ArangoDB Java driver menuTitle: Java driver weight: 10 description: '' +aliases: + - /3.12/develop/drivers/java/ + - /3.13/develop/drivers/java/ --- The official ArangoDB Java Driver. @@ -341,7 +344,7 @@ Removed document: 6 ### Learn more -- Have a look at the [AQL documentation](../../../aql/) to lear about the +- Have a look at the [AQL documentation](../../../arangodb/3.12/aql/_index.md) to lear about the query language - See [Serialization](reference-version-7/serialization.md) for details about user-data serde diff --git a/site/content/arangodb/3.12/develop/drivers/java/reference-version-6/_index.md b/site/content/ecosystem/drivers/java/reference-version-6/_index.md similarity index 100% rename from site/content/arangodb/3.12/develop/drivers/java/reference-version-6/_index.md rename to site/content/ecosystem/drivers/java/reference-version-6/_index.md diff --git a/site/content/arangodb/3.12/develop/drivers/java/reference-version-6/driver-setup.md b/site/content/ecosystem/drivers/java/reference-version-6/driver-setup.md similarity index 100% rename from site/content/arangodb/3.12/develop/drivers/java/reference-version-6/driver-setup.md rename to site/content/ecosystem/drivers/java/reference-version-6/driver-setup.md diff --git a/site/content/arangodb/3.12/develop/drivers/java/reference-version-6/serialization.md b/site/content/ecosystem/drivers/java/reference-version-6/serialization.md similarity index 100% rename from site/content/arangodb/3.12/develop/drivers/java/reference-version-6/serialization.md rename to site/content/ecosystem/drivers/java/reference-version-6/serialization.md diff --git a/site/content/arangodb/3.12/develop/drivers/java/reference-version-7/_index.md b/site/content/ecosystem/drivers/java/reference-version-7/_index.md similarity index 100% rename from site/content/arangodb/3.12/develop/drivers/java/reference-version-7/_index.md rename to site/content/ecosystem/drivers/java/reference-version-7/_index.md diff --git a/site/content/arangodb/3.12/develop/drivers/java/reference-version-7/changes-in-version-7.md b/site/content/ecosystem/drivers/java/reference-version-7/changes-in-version-7.md similarity index 100% rename from site/content/arangodb/3.12/develop/drivers/java/reference-version-7/changes-in-version-7.md rename to site/content/ecosystem/drivers/java/reference-version-7/changes-in-version-7.md diff --git a/site/content/arangodb/3.12/develop/drivers/java/reference-version-7/driver-setup.md b/site/content/ecosystem/drivers/java/reference-version-7/driver-setup.md similarity index 100% rename from site/content/arangodb/3.12/develop/drivers/java/reference-version-7/driver-setup.md rename to site/content/ecosystem/drivers/java/reference-version-7/driver-setup.md diff --git a/site/content/arangodb/3.12/develop/drivers/java/reference-version-7/serialization.md b/site/content/ecosystem/drivers/java/reference-version-7/serialization.md similarity index 100% rename from site/content/arangodb/3.12/develop/drivers/java/reference-version-7/serialization.md rename to site/content/ecosystem/drivers/java/reference-version-7/serialization.md diff --git a/site/content/arangodb/3.13/develop/drivers/javascript.md b/site/content/ecosystem/drivers/javascript.md similarity index 96% rename from site/content/arangodb/3.13/develop/drivers/javascript.md rename to site/content/ecosystem/drivers/javascript.md index 5161b596b2..e35cd77db6 100644 --- a/site/content/arangodb/3.13/develop/drivers/javascript.md +++ b/site/content/ecosystem/drivers/javascript.md @@ -7,6 +7,8 @@ description: >- database system, primarily with Node.js aliases: - nodejs # 3.12 -> 3.12 + - /3.12/develop/drivers/javascript + - /3.13/develop/drivers/javascript --- The official ArangoDB low-level JavaScript client. @@ -18,7 +20,7 @@ The official ArangoDB low-level JavaScript client. If you are looking for the ArangoDB JavaScript API in [Foxx](https://www.arangodb.com/community-server/foxx/) or the `arangosh` interactive shell, please refer to the documentation about the -[`@arangodb` module](../javascript-api/@arangodb/_index.md) instead. +[`@arangodb` module](../../arangodb/3.12/develop/javascript-api/@arangodb/_index.md) instead. The JavaScript driver is **only** meant to be used when accessing ArangoDB from **outside** the database. @@ -197,7 +199,7 @@ injection attacks. If the server returns an ArangoDB error response, arangojs throws an `ArangoError` with an `errorNum` property indicating the -[ArangoDB error code](../error-codes.md) and expose the response body +[ArangoDB error code](../../arangodb/3.12/develop/error-codes.md) and expose the response body as the response property of the error object. For all other errors during the request/response cycle arangojs throws a diff --git a/site/content/arangodb/3.12/develop/drivers/python.md b/site/content/ecosystem/drivers/python.md similarity index 99% rename from site/content/arangodb/3.12/develop/drivers/python.md rename to site/content/ecosystem/drivers/python.md index 4b028a616c..631aee64a0 100644 --- a/site/content/arangodb/3.12/develop/drivers/python.md +++ b/site/content/ecosystem/drivers/python.md @@ -5,6 +5,9 @@ weight: 30 description: >- Python-Arango is the official ArangoDB driver that provides Python applications with the complete range of features exposed by the server API +aliases: + - /3.12/develop/drivers/python + - /3.13/develop/drivers/python --- The Python-Arango driver is the recommended driver for using ArangoDB as the database backend from Python. It is maintained by ArangoDB and the community. @@ -169,7 +172,7 @@ await client.close() {{< /tabs >}} -The following example shows how to create a [named graph](../../graphs/_index.md), +The following example shows how to create a [named graph](../../arangodb/3.12/graphs/_index.md), populate it with nodes and edges, and query it with a graph traversal: {{< tabs "python-driver" >}} diff --git a/site/content/arangodb/3.12/develop/integrations/_index.md b/site/content/ecosystem/integrations/_index.md similarity index 96% rename from site/content/arangodb/3.12/develop/integrations/_index.md rename to site/content/ecosystem/integrations/_index.md index 3469808d73..546b0fc84d 100644 --- a/site/content/arangodb/3.12/develop/integrations/_index.md +++ b/site/content/ecosystem/integrations/_index.md @@ -1,10 +1,13 @@ --- title: Integrations menuTitle: Integrations -weight: 290 +weight: 20 description: >- Integrations for third-party tools and frameworks let you use ArangoDB as the database backend for these products +aliases: + - /3.12/develop/integrations/ + - /3.13/develop/integrations/ --- Database integrations allow applications to work with different database systems using a common interface. They are higher-level than database drivers because diff --git a/site/content/arangodb/3.13/develop/integrations/arangodb-datasource-for-apache-spark.md b/site/content/ecosystem/integrations/arangodb-datasource-for-apache-spark.md similarity index 98% rename from site/content/arangodb/3.13/develop/integrations/arangodb-datasource-for-apache-spark.md rename to site/content/ecosystem/integrations/arangodb-datasource-for-apache-spark.md index aeaf9d379d..67e398fcd2 100644 --- a/site/content/arangodb/3.13/develop/integrations/arangodb-datasource-for-apache-spark.md +++ b/site/content/ecosystem/integrations/arangodb-datasource-for-apache-spark.md @@ -7,7 +7,9 @@ description: >- aliases: - arangodb-spark-connector - arangodb-spark-connector/getting-started +- /3.12/develop/integrations/arangodb-datasource-for-apache-spark - arangodb-spark-connector/reference +- /3.13/develop/integrations/arangodb-datasource-for-apache-spark - arangodb-spark-connector/reference/java - arangodb-spark-connector/reference/scala --- @@ -25,8 +27,6 @@ This library works with all the non-EOLed [ArangoDB versions](https://www.arango There are several variants of this library, each one compatible with different Spark and Scala versions: -- `com.arangodb:arangodb-spark-datasource-3.3_2.12` (Spark 3.3, Scala 2.12) -- `com.arangodb:arangodb-spark-datasource-3.3_2.13` (Spark 3.3, Scala 2.13) - `com.arangodb:arangodb-spark-datasource-3.4_2.12` (Spark 3.4, Scala 2.12) (compatible with Spark `3.4.2+`) - `com.arangodb:arangodb-spark-datasource-3.4_2.13` (Spark 3.4, Scala 2.13) (compatible with Spark `3.4.2+`) - `com.arangodb:arangodb-spark-datasource-3.5_2.12` (Spark 3.5, Scala 2.12) @@ -39,6 +39,8 @@ The following variants are no longer supported: - `com.arangodb:arangodb-spark-datasource-3.1_2.12` (Spark 3.1, Scala 2.12) - `com.arangodb:arangodb-spark-datasource-3.2_2.12` (Spark 3.2, Scala 2.12) - `com.arangodb:arangodb-spark-datasource-3.2_2.13` (Spark 3.2, Scala 2.13) +- `com.arangodb:arangodb-spark-datasource-3.3_2.12` (Spark 3.3, Scala 2.12) +- `com.arangodb:arangodb-spark-datasource-3.3_2.13` (Spark 3.3, Scala 2.13) Since version `1.7.0`, due to [breaking changes](https://github.com/apache/spark/commit/ad29290a02fb94a958fd21e301100338c9f5b82a#diff-b25c8acff88c1b4850c6642e80845aac4fb882c664795c3b0aa058e37ed732a0L42-R52) in Spark `3.4.2`, `arangodb-spark-datasource-3.4` is not compatible anymore with Spark versions `3.4.0` and `3.4.1`. @@ -311,7 +313,7 @@ Use the `overwriteMode` write configuration parameter to specify the document ov ### Write Resiliency The data of each partition is saved in batches using the ArangoDB API for -[inserting multiple documents](../http-api/documents.md#multiple-document-operations). +[inserting multiple documents](../../arangodb/3.12/develop/http-api/documents.md#multiple-document-operations). This operation is not atomic, therefore some documents could be successfully written to the database, while others could fail. To make the job more resilient to temporary errors (i.e. connectivity problems), in case of failure the request will be retried (with another Coordinator), if the provided configuration allows idempotent requests, namely: - the schema of the dataframe has a **not nullable** `_key` field and - `overwriteMode` is set to one of the following values: diff --git a/site/content/arangodb/3.13/develop/integrations/arangodb-tinkerpop-provider.md b/site/content/ecosystem/integrations/arangodb-tinkerpop-provider.md similarity index 99% rename from site/content/arangodb/3.13/develop/integrations/arangodb-tinkerpop-provider.md rename to site/content/ecosystem/integrations/arangodb-tinkerpop-provider.md index a1a68550bf..6998497dee 100644 --- a/site/content/arangodb/3.13/develop/integrations/arangodb-tinkerpop-provider.md +++ b/site/content/ecosystem/integrations/arangodb-tinkerpop-provider.md @@ -4,6 +4,9 @@ menuTitle: TinkerPop Provider weight: 10 description: >- Build graph applications using TinkerPop API with ArangoDB's high-performance backend, combining Gremlin traversals and native AQL queries +aliases: + - /3.12/develop/integrations/arangodb-tinkerpop-provider + - /3.13/develop/integrations/arangodb-tinkerpop-provider --- ArangoDB TinkerPop Provider is an implementation of the [Apache TinkerPop OLTP Provider](https://tinkerpop.apache.org/docs/3.7.4/dev/provider) API for ArangoDB. diff --git a/site/content/arangodb/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md b/site/content/ecosystem/integrations/kafka-connect-arangodb-sink-connector/_index.md similarity index 97% rename from site/content/arangodb/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md rename to site/content/ecosystem/integrations/kafka-connect-arangodb-sink-connector/_index.md index 56fb0ba16f..770275f212 100644 --- a/site/content/arangodb/3.13/develop/integrations/kafka-connect-arangodb-sink-connector/_index.md +++ b/site/content/ecosystem/integrations/kafka-connect-arangodb-sink-connector/_index.md @@ -5,6 +5,9 @@ weight: 20 description: >- The Kafka connector allows you to export data from Apache Kafka to ArangoDB by writing data from one or more topics in Kafka to a collection in ArangoDB +aliases: + - /3.12/develop/integrations/kafka-connect-arangodb-sink-connector/ + - /3.13/develop/integrations/kafka-connect-arangodb-sink-connector/ --- {{< info >}} Check out the [connector demo](https://github.com/arangodb/kafka-connect-arangodb/tree/main/demo) @@ -206,7 +209,7 @@ behavior in case a document with the same `_key` already exists: All the write modes supported are idempotent, with the exception that the document revision field (`_rev`) changes every time a document is written. See -[Document revisions](../../../concepts/data-structure/documents/_index.md#document-revisions) +[Document revisions](../../../arangodb/3.12/concepts/data-structure/documents/_index.md#document-revisions) for more details. If there are failures, the Kafka offset used for recovery may not be up-to-date diff --git a/site/content/arangodb/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md b/site/content/ecosystem/integrations/kafka-connect-arangodb-sink-connector/configuration.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/kafka-connect-arangodb-sink-connector/configuration.md rename to site/content/ecosystem/integrations/kafka-connect-arangodb-sink-connector/configuration.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-boot-arangodb.md b/site/content/ecosystem/integrations/spring-boot-arangodb.md similarity index 99% rename from site/content/arangodb/3.12/develop/integrations/spring-boot-arangodb.md rename to site/content/ecosystem/integrations/spring-boot-arangodb.md index 4633df80a8..ccbb6f9223 100644 --- a/site/content/arangodb/3.12/develop/integrations/spring-boot-arangodb.md +++ b/site/content/ecosystem/integrations/spring-boot-arangodb.md @@ -5,6 +5,9 @@ weight: 7 description: >- The Spring Boot Starter for ArangoDB is a set of convenient dependency descriptors that you can include in your application based on the Spring framework +aliases: + - /3.12/develop/integrations/spring-boot-arangodb + - /3.13/develop/integrations/spring-boot-arangodb --- - [Repository](https://github.com/arangodb/spring-boot-starter) - [Demo](https://github.com/arangodb/spring-boot-starter/tree/main/demo) @@ -1056,10 +1059,10 @@ Character [id=2999, name=Cersei, surname=Lannister, alive=true, age=36] You can have repository methods with self-written AQL queries. When it comes to more complex use cases where a derived method would get way too -long and become unreadable, queries using the [ArangoDB Query Language (AQL)](../../aql/_index.md) +long and become unreadable, queries using the [ArangoDB Query Language (AQL)](../../../arangodb/3.12/aql/_index.md) can be supplied with the `@Query` annotation on methods in your repositories. -AQL supports the usage of [bind parameters](../../aql/fundamentals/bind-parameters.md), +AQL supports the usage of [bind parameters](../../../arangodb/3.12/aql/fundamentals/bind-parameters.md), thus allowing to separate the query text from literal values used in the query. There are three ways of passing bind parameters to the query in the `@Query` annotation that are described below. @@ -1229,7 +1232,7 @@ Character [id=9014, name=Cersei, surname=Lannister, alive=true, age=36] ### Graph traversal -To finish the query method topic, add a [graph traversal](../../aql/graphs/traversals.md) +To finish the query method topic, add a [graph traversal](../../../arangodb/3.12/aql/graphs/traversals.md) written in AQL to this demo where the `ChildOf` edges are involved. The following query searches for every `Character` connected (through `ChildOf`) diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/_index.md b/site/content/ecosystem/integrations/spring-data-arangodb/_index.md similarity index 98% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/_index.md rename to site/content/ecosystem/integrations/spring-data-arangodb/_index.md index 568750e4ac..4a694d5c61 100644 --- a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/_index.md +++ b/site/content/ecosystem/integrations/spring-data-arangodb/_index.md @@ -5,6 +5,9 @@ weight: 5 description: >- The Spring Data ArangoDB integration is a library for accessing data stored in ArangoDB from Spring-based Java application +aliases: + - /3.12/develop/integrations/spring-data-arangodb/ + - /3.13/develop/integrations/spring-data-arangodb/ --- Spring Data provides a consistent interface for accessing various types of data sources. Spring Data ArangoDB implements this diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/migration.md b/site/content/ecosystem/integrations/spring-data-arangodb/migration.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/migration.md rename to site/content/ecosystem/integrations/spring-data-arangodb/migration.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/_index.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/_index.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/_index.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/_index.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/_index.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/auditing.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/converter.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/document.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/document.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/document.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/edge.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/events.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/events.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/events.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md similarity index 93% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md index 56cd6eb4e7..2e9c56af6d 100644 --- a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md +++ b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md @@ -10,9 +10,9 @@ developed anymore. Upgrading to version 4 is recommended. {{< /warning >}} Indexes can be ensured using the following annotations. For reference see the -[indexing](../../../../../index-and-search/indexing/_index.md) documentation +[indexing](../../../../../../arangodb/3.12/index-and-search/indexing/_index.md) documentation and specific aspects that apply to -[indexes on shards](../../../../../deploy/architecture/data-sharding.md#indexes-on-shards). +[indexes on shards](../../../../../../arangodb/3.12/deploy/architecture/data-sharding.md#indexes-on-shards). ## Annotation @\<IndexType\>Indexed diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/reference.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/relations.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/repositories/_index.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/repositories/queries/_index.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/repositories/queries/derived-queries.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/repositories/queries/named-queries.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md similarity index 97% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md index 231e9df1c8..61d85942ee 100644 --- a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md +++ b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/repositories/queries/query-methods.md @@ -9,7 +9,7 @@ Spring Data ArangoDB version 3 reached End of Life (EOL) and is not actively developed anymore. Upgrading to version 4 is recommended. {{< /warning >}} -Queries using [ArangoDB Query Language (AQL)](../../../../../../aql/_index.md) +Queries using [ArangoDB Query Language (AQL)](../../../../../../arangodb/3.12/aql/_index.md) can be supplied with the `@Query` annotation on methods. ## Passing collection name @@ -63,7 +63,7 @@ public interface MyRepository extends ArangoRepository<Customer, String>{ In addition you can use a method parameter of type `Map<String, Object>` annotated with `@BindVars` as your bind parameters. You can then fill the map -with any parameter used in the query (also see [AQL Bind Parameters](../../../../../../aql/fundamentals/bind-parameters.md)). +with any parameter used in the query (also see [AQL Bind Parameters](../../../../../../arangodb/3.12/aql/fundamentals/bind-parameters.md)). ```java public interface MyRepository extends ArangoRepository<Customer, String>{ diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/template.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/template.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-3/template.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/template.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/_index.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/_index.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/_index.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/_index.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/_index.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/auditing.md diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md similarity index 92% rename from site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md index 59bf728d9a..19347a9ffb 100644 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md +++ b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/computed-values.md @@ -9,7 +9,7 @@ Spring Data ArangoDB provides annotations to allow mapping computed values to entity properties and to include computed values data definitions during collection creation. -For reference, see the [computed values](../../../../../concepts/data-structure/documents/computed-values.md) +For reference, see the [computed values](../../../../../arangodb/3.12/concepts/data-structure/documents/computed-values.md) documentation. ## Mapping diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/converter.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/document.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/document.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/document.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/edge.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/events.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/events.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/events.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md similarity index 93% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md index 7bd9a78c42..a2700254e3 100644 --- a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md +++ b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md @@ -5,9 +5,9 @@ weight: 25 description: '' --- Indexes can be ensured using the following annotations. For reference see the -[indexing](../../../../../index-and-search/indexing/_index.md) documentation +[indexing](../../../../../arangodb/3.12/index-and-search/indexing/_index.md) documentation and specific aspects that apply to -[indexes on shards](../../../../../deploy/architecture/data-sharding.md#indexes-on-shards). +[indexes on shards](../../../../../arangodb/3.12/deploy/architecture/data-sharding.md#indexes-on-shards). ## Annotation @\<IndexType\>Indexed diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/reference.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/relations.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/repositories/_index.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/repositories/queries/_index.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/repositories/queries/derived-queries.md diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/repositories/queries/named-queries.md diff --git a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md similarity index 97% rename from site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md index 90f1fa74b9..13762b7e79 100644 --- a/site/content/arangodb/3.13/develop/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md +++ b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/repositories/queries/query-methods.md @@ -4,7 +4,7 @@ menuTitle: Query methods weight: 10 description: '' --- -Queries using [ArangoDB Query Language (AQL)](../../../../../../aql/_index.md) +Queries using [ArangoDB Query Language (AQL)](../../../../../../arangodb/3.12/aql/_index.md) can be supplied with the `@Query` annotation on methods. ## Passing collection name @@ -58,7 +58,7 @@ public interface MyRepository extends ArangoRepository<Customer, String>{ In addition you can use a method parameter of type `Map<String, Object>` annotated with `@BindVars` as your bind parameters. You can then fill the map -with any parameter used in the query (also see [AQL Bind Parameters](../../../../../../aql/fundamentals/bind-parameters.md)). +with any parameter used in the query (also see [AQL Bind Parameters](../../../../../../arangodb/3.12/aql/fundamentals/bind-parameters.md)). ```java public interface MyRepository extends ArangoRepository<Customer, String>{ diff --git a/site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/template.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/template.md similarity index 100% rename from site/content/arangodb/3.12/develop/integrations/spring-data-arangodb/reference-version-4/template.md rename to site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/template.md From 65d2717147d69a300ffbb887c774cd28f5af0f4a Mon Sep 17 00:00:00 2001 From: Simran <Simran-B@users.noreply.github.com> Date: Tue, 4 Nov 2025 11:08:45 +0100 Subject: [PATCH 45/69] Attribute-based theming (#821) --- .../content/data-platform/graph-visualizer.md | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/site/content/data-platform/graph-visualizer.md b/site/content/data-platform/graph-visualizer.md index fd06fd3258..d4f6a9e8e4 100644 --- a/site/content/data-platform/graph-visualizer.md +++ b/site/content/data-platform/graph-visualizer.md @@ -365,7 +365,8 @@ underlying data. if it's closed. 2. Select the **Nodes (#)** tab and click one of the node collections. You can filter by name if there are many. -3. You have the following theming options for nodes: +3. To change the appearance of all nodes from the selected collection, use the + following theming options while on the **Settings** tab: - **Color**: Select a fill color for the circles that depict nodes. This lets you distinguish between different types of nodes at a glance. - **Icon**: Select a pictogram to be drawn inside the circles that resembles @@ -376,6 +377,17 @@ underlying data. over a node (**Hover info**). These options let you view a part of the node properties more quickly without opening the full [properties dialog](#view-node-and-edge-properties). +4. To change the appearance based on conditions, go to the **Attribute-based** + tab. It lets you define rules for styling nodes based on the values of the + document attributes. The theming options are the same as above. +5. Click **New rule**, select a document attribute and a comparison operator + (like equals, not equals, in, not in, etc.), and enter a value to match. + For example, select `genre` as the attribute, `=` as the operator, and enter + `comedy` as the value to match. +6. Enable the toggle for the theming option you want to use (e.g. **Apply color**) + and adjust the styling as desired. If there are any matching nodes on the + canvas, their appearance updates accordingly. Note that the first rule wins + if the conditions of multiple rules match the same nodes. ![A screenshot of the Legend panel and a node styling dialog](../images/graph-visualizer-customization.png) @@ -385,7 +397,8 @@ underlying data. if it's closed. 2. Select the **Edges (#)** tab and click one of the edge collections. You can filter by name if there are many. -3. You have the following theming options for edges: +3. To change the appearance of all edges from the selected collection, use the + following theming options while on the **Settings** tab: - **Color**: Select a stroke color for the lines that depict edges. This lets you distinguish between different types of edges at a glance. - **Line Style**: Adjust the stroke **Thickness** and the arrowheads of lines @@ -396,6 +409,18 @@ underlying data. edge, and what information to show in the tooltip when hovering an edge (**Hover info**). These options let you view a part of the edge properties more quickly without opening the full [properties dialog](#view-node-and-edge-properties). +4. To change the appearance based on conditions, go to the **Attribute-based** + tab. It lets you define rules for styling edges based on the values of the + document attributes. The theming options are the same as above. +5. Click **New rule**, select a document attribute and a comparison operator + (like equals, not equals, in, not in, etc.), and enter a value to match. + For example, select `type` as the attribute, `in` as the operator, and enter + `Role,Roles` as the value to match (meaning the `type` must be either `Role` + or `Roles`). +6. Enable the toggle for the theming option you want to use (e.g. **Apply thickness**) + and adjust the styling as desired. If there are any matching edges on the + canvas, their appearance updates accordingly. Note that the first rule wins + if the conditions of multiple rules match the same edges. ### Save and manage themes From 17e9b62bfc48e5e330fb734047c15266ff7471e6 Mon Sep 17 00:00:00 2001 From: Simran <Simran-B@users.noreply.github.com> Date: Tue, 4 Nov 2025 20:20:11 +0100 Subject: [PATCH 46/69] Docs homepage content (#819) * WIP: Docs homepage content Reuses the Graph to AI page * add avocado icons to product cards, remove old images * Adjust card CSS to float an icon to the right of the title * Rework homepage and ArangoDB introduction - New and reworked sections for From Graph to AI for a full journey - Move knowledge graph definition to GraphRAG - Remove outdated ArangoDB diagram from overview and mention self-managed cloud deployments - Use card shortcode icon parameter --------- Co-authored-by: Paula <paula.mihu@arangodb.com> Co-authored-by: Paula Mihu <97217318+nerpaula@users.noreply.github.com> --- site/content/_index.md | 116 +++++++++++++++ site/content/ai-suite/_index.md | 6 + site/content/ai-suite/graph-to-ai.md | 132 ------------------ site/content/ai-suite/graphrag/_index.md | 52 ++++--- site/content/arangodb/_index.md | 10 +- site/content/images/avo-core.svg | 6 + site/content/images/avo-full.svg | 6 + site/content/images/avo-middle.svg | 6 + .../arangodb-docs-theme/static/css/theme.css | 14 +- 9 files changed, 183 insertions(+), 165 deletions(-) create mode 100644 site/content/_index.md delete mode 100644 site/content/ai-suite/graph-to-ai.md create mode 100644 site/content/images/avo-core.svg create mode 100644 site/content/images/avo-full.svg create mode 100644 site/content/images/avo-middle.svg diff --git a/site/content/_index.md b/site/content/_index.md new file mode 100644 index 0000000000..b95a8b3a4e --- /dev/null +++ b/site/content/_index.md @@ -0,0 +1,116 @@ +--- +title: Arango Documentation +menuTitle: Home +weight: 1 +description: >- + Arango provides the trusted data foundation for the next wave of AI grounded + in business context +#aliases: +# - data-science/overview +--- +## User manuals by product + +{{< cards >}} + +{{% card title="ArangoDB" link="arangodb/" icon="avo-core.svg" %}} +Native multi-model database system that unifies graph, document, +key-value, vector, and full-text search with one query language. +{{% /card %}} + +{{% card title="Arango Data Platform" link="data-platform/" icon="avo-middle.svg" %}} +Adds platform services for scalability, reliability, governance, and a graph exploration tool. +{{% /card %}} + +{{% card title="AI Suite" link="ai-suite/" icon="avo-full.svg" %}} +Supercharge your Data Platform with GraphRAG, GraphML, +and queries generated from natural language for AI-powered insights. +{{% /card %}} + +{{% card title="Arango Managed Platform (AMP)" link="amp/" %}} +Arango's fully-managed cloud offering for a faster time to value, +formerly known as ArangoGraph Insights Platform. +{{% /card %}} + +{{< /cards >}} + +## From graph to AI + +### Data Persistence + +ArangoDB is a scalable database system that you can use to store +[JSON documents](arangodb/3.12/concepts/data-structure/documents/_index.md), +which allows a flexible data structure for each record. ArangoDB natively supports +[graphs](arangodb/3.12/graphs/_index.md), letting you connect documents with +edges to express relationships between records and build complex +information networks. + +### Data Retrieval + +You can query your data in various ways using the core database system. +The native support for multiple data models lets you access information in +different ways with a single query language called [AQL](arangodb/3.12/aql/_index.md). +It has built-in support for aggregation, vector and full-text search, geo-spatial +queries, and more. + +### Data Exploration + +You can visually explore and interact with your ArangoDB graphs through an +intuitive web interface called the [Graph Visualizer](data-platform/graph-visualizer.md). +It is part of the [Arango Data Platform](data-platform/_index.md) that builds on +ArangoDB, extending it to a Kubernetes-native environment that unifies +data management, monitoring, and automation. + +### Graph Queries + +Utilizing connected data starts with running simple [graph queries](arangodb/3.12/aql/graphs/_index.md). +Using ArangoDB and its query language, you can determine the shortest paths between nodes as well as execute graph traversals. A traversal starts at a +given node of a graph and follows the directly connected edges. The edges indicate +what the next connected nodes are, and this discovery of neighbors can repeat. + +Graph queries can answer questions like **Who can introduce me to person X?** + +### Graph Analytics + +The next level of utilizing connected data in terms of complexity is to use +graph analytics or graph algorithms to aggregate information about a graph. +Unlike with graph queries, this involves the entire graph at once. + +Graph analytics can answer questions like **Who are the most connected persons?** + +Arango offers a [Graph Analytics](ai-suite/graph-analytics.md) solution as part +of the [Arango AI Data Platform](data-platform/features.md) to run algorithms +such as connected components, label propagation, and PageRank on your data. + +### GraphML + +For higher-level insights, you can use advanced graph-based data science. +Applying machine learning on graphs lets you predict connections, get better +product recommendations, and also classify nodes, edges, and graphs. + +GraphML can answer questions like: +- **Is there a connection between person X and person Y?** +- **Will a customer churn?** +- **Is this particular transaction anomalous?** + +Arango's enterprise-ready, graph-powered machine learning capabilities are +included in the [AI Suite](ai-suite/_index.md) as part of the +Arango AI Data Platform. See [Arango GraphML](ai-suite/graphml/_index.md). + +### GraphRAG + +Generative AI often struggle with hallucinations because the connectedness of +data is not properly or cleanly represented. GraphRAG is a technique that +turbocharges GenAI applications using the power of graph relationships and +vector embeddings. + +Arango's [GraphRAG](ai-suite/graphrag/_index.md) included in the +[AI Suite](ai-suite/_index.md) is a turn-key solution to transform your +organization's data into a knowledge graph and let everyone utilize the +knowledge by asking questions in natural language. + +It automatically creates a knowledge graph from raw text by identifying and +extracting entities and relationships within the data, groups and summarizes +semantically similar entities, and stores everything in ArangoDB. When you ask a +question, the large language model (LLM) is supplied with additional context +from the knowledge graph, using lexical and semantic search. This enables +accurate, context-aware intelligence grounded in enterprise data. diff --git a/site/content/ai-suite/_index.md b/site/content/ai-suite/_index.md index c149b1fea4..4f23bcaa4c 100644 --- a/site/content/ai-suite/_index.md +++ b/site/content/ai-suite/_index.md @@ -37,3 +37,9 @@ Alongside these components, you also get the following additional features: AI Suite and build your own integrations. See the [Protocol Documentation](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html) for more details. + +## Sample datasets + +If you want to try out ArangoDB's data science features, you may use the +[`arango-datasets` Python package](../arangodb/3.12/components/tools/arango-datasets.md) +to load sample datasets into a deployment. \ No newline at end of file diff --git a/site/content/ai-suite/graph-to-ai.md b/site/content/ai-suite/graph-to-ai.md deleted file mode 100644 index f5a4730563..0000000000 --- a/site/content/ai-suite/graph-to-ai.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: From Graph to AI -menuTitle: From Graph to AI -weight: 25 -description: >- - ArangoDB's set of tools and technologies enables analytics, machine learning, - and AI applications powered by graph data -aliases: - - data-science/overview ---- - -{{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arango.ai/contact-us/) with -the Arango team. -{{< /tip >}} - -ArangoDB provides a wide range of functionality that can be utilized for -data science applications. The core database system includes multi-model storage -of information with scalable graph and information retrieval capabilities that -you can directly use for your research and product development. - -ArangoDB also offers dedicated AI Suite, using the database core -as the foundation for higher-level features. Whether you want to turbocharge -generative AI applications with a GraphRAG solution or apply analytics and -machine learning to graph data at scale, ArangoDB covers these needs. - -<!-- -ArangoDB's Graph Analytics and GraphML capabilities provide various solutions -in data science and data analytics. Multiple data science personas within the -engineering space can make use of ArangoDB's set of tools and technologies that -enable analytics and machine learning on graph data. ---> - -## From graph to AI - -This section classifies the complexity of the queries you can answer with -ArangoDB and gives you an overview of the respective feature. - -It starts with running a simple query that shows what is the path that goes from -one node to another, continues with more complex tasks like graph classification, -link prediction, and node classification, and ends with generative AI solutions -powered by graph relationships and vector embeddings. - -### Graph Queries - -When you run an AQL query on a graph, a traversal query can go from a node to -multiple edges, and then the edges indicate what the next connected nodes are. -Graph queries can also determine the shortest paths between nodes. - -Graph queries can answer questions like _**Who can introduce me to person X**_? - -![Graph Query](../images/graph-query.png) - -See [Graphs in AQL](../arangodb/3.12/aql/graphs/_index.md) for the supported graph queries. - -### Graph Analytics - -Graph analytics or graph algorithms is what you run on a graph if you want to -know aggregate information about your graph, while analyzing the entire graph. - -Graph analytics can answer questions like _**Who are the most connected persons**_? - -![Graph Analytics](../images/graph-analytics.png) - -ArangoDB offers _Graph Analytics Engines_ to run algorithms such as -connected components, label propagation, and PageRank on your data. This feature -is available for the Arango Managed Platform (AMP). See -[Graph Analytics](graph-analytics.md) for details. - -### GraphML - -When applying machine learning on a graph, you can predict connections, get -better product recommendations, and also classify nodes, edges, and graphs. - -GraphML can answer questions like: -- _**Is there a connection between person X and person Y?**_ -- _**Will a customer churn?**_ -- _**Is this particular transaction Anomalous?**_ - -![Graph ML](../images/graph-ml.png) - -For ArangoDB's enterprise-ready, graph-powered machine learning offering, -see [Arango GraphML](graphml/_index.md). - -### GraphRAG - -GraphRAG is ArangoDB's turn-key solution to transform your organization's data into -a knowledge graph and let everyone utilize the knowledge by asking questions in -natural language. - -The overall process of GraphRAG involves the following: -- **Creating a Knowledge Graph** from raw text data. -- **Identifying and extract entities and relationships** within the data. -- **Storing the structured information** in ArangoDB. -- **Clustering each closely connected set of entities into semantic contexts** - via topology-based algorithms and summarization. -- **Using such semantically augmented structured representation** as the - foundation for efficient and accurate information retrieval via lexical and - semantic search. -- **Integrating retrieval methods with LLMs (privately or publicly hosted)** - to augment responses using both structured and unstructured data, providing - accurate responses with the desired format and degree of detail for each query. - -To learn more, see the [GraphRAG](graphrag/_index.md) documentation. - -## Knowledge Graphs - -A knowledge graph can be thought of as a dynamic and interconnected network of -real-world entities and the intricate relationships that exist between them. - -Key aspects of knowledge graphs: -- **Domain-specific knowledge**: You can tailor knowledge graphs to specific - domains and industries. -- **Structured information**: Makes it easy to query, analyze, and extract - meaningful insights from your data. -- **Accessibility**: You can build a Semantic Web knowledge graph or using - custom data. - -LLMs can help distill knowledge graphs from natural language by performing -the following tasks: -- Entity discovery -- Relation extraction -- Coreference resolution -- End-to-end knowledge graph construction -- (Text) Embeddings - -## Sample datasets - -If you want to try out ArangoDB's data science features, you may use the -[`arango-datasets` Python package](../arangodb/3.12/components/tools/arango-datasets.md) -to load sample datasets into a deployment. diff --git a/site/content/ai-suite/graphrag/_index.md b/site/content/ai-suite/graphrag/_index.md index b284f820e1..55b66214f3 100644 --- a/site/content/ai-suite/graphrag/_index.md +++ b/site/content/ai-suite/graphrag/_index.md @@ -3,7 +3,7 @@ title: GraphRAG menuTitle: GraphRAG weight: 5 description: >- - ArangoDB's GraphRAG solution combines graph-based retrieval-augmented generation + Arango's GraphRAG solution combines graph-based retrieval-augmented generation with Large Language Models (LLMs) for turbocharged AI solutions aliases: llm-knowledge-graphs @@ -14,9 +14,30 @@ exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} +## What are knowledge graphs? + +A knowledge graph can be thought of as a dynamic and interconnected network of +real-world entities and the intricate relationships that exist between them. + +Key aspects of knowledge graphs: +- **Domain-specific knowledge**: You can tailor knowledge graphs to specific + domains and industries. +- **Structured information**: Makes it easy to query, analyze, and extract + meaningful insights from your data. +- **Accessibility**: You can build a Semantic Web knowledge graph or using + custom data. + +LLMs can help distill knowledge graphs from natural language by performing +the following tasks: +- Entity discovery +- Relation extraction +- Coreference resolution +- End-to-end knowledge graph construction +- (Text) Embeddings + ## Transform unstructured documents into intelligent knowledge graphs -ArangoDB's GraphRAG solution enables organizations to extract meaningful insights +Arango's GraphRAG solution enables organizations to extract meaningful insights from their document collections by creating knowledge graphs that capture not just individual facts, but the intricate relationships between concepts across documents. This approach goes beyond traditional RAG systems by understanding document @@ -30,23 +51,22 @@ conceptual understanding. ## Key benefits for enterprise applications -- **Cross-document relationship intelligence**: -Unlike traditional RAG systems that treat documents in isolation, ArangoDB's GraphRAG -pipeline detects and leverages references between documents and chunks. This enables -more accurate responses by understanding how concepts relate across your entire knowledge base. - -- **Multi-level understanding architecture**: -The system provides both detailed technical responses and high-level strategic insights -from the same knowledge base, adapting response depth based on query complexity and user intent. +- **Cross-document relationship intelligence**\ + Unlike traditional RAG systems that treat documents in isolation, Arango's GraphRAG + pipeline detects and leverages references between documents and chunks. This enables + more accurate responses by understanding how concepts relate across your entire knowledge base. -- **Reference-aware knowledge graph**: -GraphRAG automatically detects and maps relationships between document chunks while -maintaining context of how information connects across different sources. +- **Multi-level understanding architecture**\ + The system provides both detailed technical responses and high-level strategic insights + from the same knowledge base, adapting response depth based on query complexity and user intent. -- **Dynamic knowledge evolution**: -The system learns and improves understanding as more documents are added, with -relationships and connections becoming more sophisticated over time. +- **Reference-aware knowledge graph**\ + GraphRAG automatically detects and maps relationships between document chunks while + maintaining context of how information connects across different sources. +- **Dynamic knowledge evolution**\ + The system learns and improves understanding as more documents are added, with + relationships and connections becoming more sophisticated over time. ## What's next diff --git a/site/content/arangodb/_index.md b/site/content/arangodb/_index.md index 56103ad6a4..c77041e771 100644 --- a/site/content/arangodb/_index.md +++ b/site/content/arangodb/_index.md @@ -9,15 +9,13 @@ aliases: - introduction - introduction/about-arangodb --- -![ArangoDB Overview Diagram](../images/arangodb-overview-diagram.png) - ArangoDB combines the analytical power of native graphs with an integrated -search engine, JSON support, and a variety of data access patterns via a single, -composable query language. +search engine, JSON support, vector indexes, and a variety of data access +patterns via a single, composable query language. ArangoDB is available in a community and a commercial [edition](3.12/features/_index.md). -You can use it for on-premises deployments, as well as a fully managed -cloud service, the [Arango Managed Platform (AMP)](../amp/_index.md). +You can use it for on-premises deployments, self-managed cloud deployments, +as well as a fully managed cloud service, the [Arango Managed Platform (AMP)](../amp/_index.md). ## What are Graphs? diff --git a/site/content/images/avo-core.svg b/site/content/images/avo-core.svg new file mode 100644 index 0000000000..5d7bc8c7ab --- /dev/null +++ b/site/content/images/avo-core.svg @@ -0,0 +1,6 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="32" height="44" fill="none" viewBox="0 0 32 44"> + <path fill="#F4FAF4" stroke="#044926" stroke-width=".5" d="M23.225.47c1.162-.284 2.308-.29 3.312-.028a7.12 7.12 0 0 1 1.213.44c.283.139.56.303.833.49l.27.193c.822.622 1.523 1.515 2.03 2.588l.025.051c.642 1.366.934 2.964.817 4.421l-.03.29c-.202 1.678-.29 3.403-.348 5.102l-.051 1.686a177.45 177.45 0 0 1-.095 2.786v.001l-.004.098c-.145 3.27-.296 6.621-.962 9.862l-.061.301h.004l-.027.118c-1.625 7.398-6.602 12.938-12.96 14.495a13.63 13.63 0 0 1-3.067.387c-1.911 0-4.012-.536-5.826-1.498-1.804-.957-3.8-2.175-5.172-4.063-.462-.635-.87-1.31-1.22-2.014l-.146-.305c-2.794-6-1.66-13.407 2.996-19.33 2.16-2.744 4.77-5.073 7.312-7.343l.001.001c.676-.602 1.375-1.208 2.052-1.794 1.685-1.459 3.437-2.975 4.996-4.6C20.163 1.707 21.663.854 23.225.47Zm-.808 7.005c-.772-.204-1.594-.207-2.394-.06l-.34.07h-.001c-1.2.29-2.347.909-3.2 1.724l-.166.166c-1.733 1.793-3.714 3.367-5.603 5.044-2.047 1.817-4.128 3.66-5.845 5.833-3.316 4.195-4.75 9.897-2.578 15.034l.222.496c.31.66.688 1.29 1.114 1.876l.001.001a9.434 9.434 0 0 0 2.298 2.19c2.024 1.379 4.472 2.428 7.01 2.33.54-.022 1.08-.082 1.612-.183l.53-.114c5.602-1.337 9.271-6.188 10.45-11.603l-.01-.004c.59-2.715.704-5.514.815-8.266.103-2.548.069-5.099.361-7.593.147-1.243-.091-2.638-.656-3.84v-.002c-.403-.85-.977-1.615-1.704-2.167h-.001l-.218-.157a6.001 6.001 0 0 0-.69-.407l-.007-.004a6.397 6.397 0 0 0-.998-.364h-.002Z"/> + <path fill="#F4FAF4" d="M26.445 14.383c.141-1.192-.088-2.541-.635-3.705-.387-.822-.937-1.552-1.628-2.075a5.742 5.742 0 0 0-.87-.54 6.18 6.18 0 0 0-.959-.35c-.835-.22-1.74-.194-2.613.013-1.236.298-2.413.959-3.244 1.82-1.744 1.803-3.742 3.394-5.617 5.057-2.05 1.82-4.113 3.648-5.814 5.8-3.38 4.276-4.76 10.112-2.327 15.27a11.4 11.4 0 0 0 1.09 1.836 9.155 9.155 0 0 0 2.239 2.13c1.998 1.362 4.395 2.383 6.858 2.287a10.605 10.605 0 0 0 2.093-.29c5.486-1.31 9.1-6.065 10.264-11.412h-.008c.584-2.693.7-5.472.81-8.23.103-2.53.069-5.106.363-7.613l-.002.002Z"/> + <path fill="#151D25" d="M17.81 20.803c-1.497-.982-3.51-1.038-5.67-.156-2.018.824-3.841 2.343-5.003 4.166-2.364 3.71-1.718 8.412 1.44 10.482a5.97 5.97 0 0 0 2.481.924 6.742 6.742 0 0 0 2.836-.244c1.885-.564 3.552-1.862 4.693-3.653 1.446-2.264 2.037-5.348 1.506-7.857-.348-1.644-1.139-2.91-2.284-3.66l.001-.002Z"/> + <path fill="#000" d="M17.255 21.567c-1.308-.859-3.066-.907-4.952-.137-1.763.72-3.355 2.046-4.37 3.638-2.065 3.241-1.5 7.347 1.257 9.155a5.214 5.214 0 0 0 2.168.808 5.887 5.887 0 0 0 2.477-.214c1.646-.492 3.102-1.626 4.099-3.19 1.262-1.977 1.779-4.671 1.315-6.862-.304-1.437-.995-2.541-1.995-3.197v-.002Z"/> +</svg> diff --git a/site/content/images/avo-full.svg b/site/content/images/avo-full.svg new file mode 100644 index 0000000000..0e11a25947 --- /dev/null +++ b/site/content/images/avo-full.svg @@ -0,0 +1,6 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="32" height="44" fill="none" viewBox="0 0 32 44"> + <path fill="#007339" d="M31.136 4.097c-.524-1.128-1.26-2.074-2.132-2.733a7.234 7.234 0 0 0-1.147-.708A7.142 7.142 0 0 0 26.6.199c-1.05-.275-2.238-.265-3.436.03-1.605.393-3.146 1.27-4.227 2.402-1.55 1.615-3.294 3.124-4.98 4.584-.677.586-1.377 1.192-2.054 1.796-2.54 2.267-5.167 4.61-7.343 7.374-4.706 5.986-5.867 13.492-3.027 19.591.388.83.854 1.62 1.39 2.36 1.408 1.937 3.449 3.178 5.258 4.137C10.03 43.453 12.17 44 14.124 44a13.877 13.877 0 0 0 3.126-.394c6.466-1.584 11.503-7.21 13.145-14.684l.094-.422h-.009c.671-3.264.822-6.636.967-9.902l.004-.099c.041-.927.068-1.874.094-2.79.065-2.232.13-4.54.398-6.766.19-1.58-.105-3.348-.808-4.846h.001Zm-5.854 26.13c-1.163 5.347-4.778 10.103-10.264 11.412-.687.165-1.388.262-2.093.29-2.464.096-4.859-.925-6.859-2.286a9.183 9.183 0 0 1-2.237-2.131 11.35 11.35 0 0 1-1.091-1.837C.304 30.518 1.685 24.682 5.065 20.407c1.7-2.153 3.764-3.982 5.814-5.802 1.875-1.664 3.875-3.255 5.617-5.056.831-.861 2.008-1.522 3.244-1.82.873-.207 1.778-.234 2.613-.013.329.09.65.207.96.35.304.154.595.334.869.54.69.523 1.24 1.254 1.628 2.075.547 1.164.776 2.512.635 3.705-.294 2.507-.26 5.084-.362 7.613-.111 2.758-.226 5.538-.81 8.23h.008l.001-.002Z"/> + <path fill="#B9FF38" d="M26.445 14.383c.141-1.192-.088-2.541-.635-3.705-.387-.822-.937-1.552-1.628-2.075a5.742 5.742 0 0 0-.87-.54 6.18 6.18 0 0 0-.959-.35c-.835-.22-1.74-.194-2.613.013-1.236.298-2.413.959-3.244 1.82-1.744 1.803-3.742 3.394-5.617 5.057-2.05 1.82-4.113 3.648-5.814 5.8-3.38 4.276-4.76 10.112-2.327 15.27a11.4 11.4 0 0 0 1.09 1.836 9.155 9.155 0 0 0 2.239 2.13c1.998 1.362 4.395 2.383 6.858 2.287a10.605 10.605 0 0 0 2.093-.29c5.486-1.31 9.1-6.065 10.264-11.412h-.008c.584-2.693.7-5.472.81-8.23.103-2.53.069-5.106.363-7.613l-.002.002Z"/> + <path fill="#151D25" d="M17.81 20.803c-1.497-.982-3.51-1.038-5.67-.156-2.018.824-3.841 2.343-5.003 4.166-2.364 3.71-1.718 8.412 1.44 10.482a5.97 5.97 0 0 0 2.481.924 6.742 6.742 0 0 0 2.836-.244c1.885-.564 3.552-1.862 4.693-3.653 1.446-2.264 2.037-5.348 1.506-7.857-.348-1.644-1.139-2.91-2.284-3.66l.001-.002Z"/> + <path fill="#000" d="M17.255 21.567c-1.308-.859-3.066-.907-4.952-.137-1.763.72-3.355 2.046-4.37 3.638-2.065 3.241-1.5 7.347 1.257 9.155a5.214 5.214 0 0 0 2.168.808 5.887 5.887 0 0 0 2.477-.214c1.646-.492 3.102-1.626 4.099-3.19 1.262-1.977 1.779-4.671 1.315-6.862-.304-1.437-.995-2.541-1.995-3.197v-.002Z"/> +</svg> diff --git a/site/content/images/avo-middle.svg b/site/content/images/avo-middle.svg new file mode 100644 index 0000000000..00c9d91cbd --- /dev/null +++ b/site/content/images/avo-middle.svg @@ -0,0 +1,6 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="32" height="44" fill="none" viewBox="0 0 32 44"> + <path fill="#F4FAF4" stroke="#044926" stroke-width=".5" d="M23.225.47c1.162-.284 2.308-.29 3.312-.028a7.12 7.12 0 0 1 1.213.44c.283.139.56.303.833.49l.27.193c.822.622 1.523 1.515 2.03 2.588l.025.051c.642 1.366.934 2.964.817 4.421l-.03.29c-.202 1.678-.29 3.403-.348 5.102l-.051 1.686a177.45 177.45 0 0 1-.095 2.786v.001l-.004.098c-.145 3.27-.296 6.621-.962 9.862l-.061.301h.004l-.027.118c-1.625 7.398-6.602 12.938-12.96 14.495a13.63 13.63 0 0 1-3.067.387c-1.911 0-4.012-.536-5.826-1.498-1.804-.957-3.8-2.175-5.172-4.063-.462-.635-.87-1.31-1.22-2.014l-.146-.305c-2.794-6-1.66-13.407 2.996-19.33 2.16-2.744 4.77-5.073 7.312-7.343l.001.001c.676-.602 1.375-1.208 2.052-1.794 1.685-1.459 3.437-2.975 4.996-4.6C20.163 1.707 21.663.854 23.225.47Zm-.808 7.005c-.772-.204-1.594-.207-2.394-.06l-.34.07h-.001c-1.2.29-2.347.909-3.2 1.724l-.166.166c-1.733 1.793-3.714 3.367-5.603 5.044-2.047 1.817-4.128 3.66-5.845 5.833-3.316 4.195-4.75 9.897-2.578 15.034l.222.496c.31.66.688 1.29 1.114 1.876l.001.001a9.434 9.434 0 0 0 2.298 2.19c2.024 1.379 4.472 2.428 7.01 2.33.54-.022 1.08-.082 1.612-.183l.53-.114c5.59-1.334 9.254-6.167 10.44-11.567l.015-.027v-.061l-.005-.001c.58-2.7.695-5.482.805-8.217.103-2.548.069-5.099.361-7.593.147-1.243-.091-2.638-.656-3.84v-.002c-.403-.85-.977-1.615-1.704-2.167h-.001l-.218-.157a6.001 6.001 0 0 0-.69-.407l-.007-.004a6.397 6.397 0 0 0-.998-.364h-.002Z"/> + <path fill="#B9FF38" d="M26.445 14.383c.141-1.192-.088-2.541-.635-3.705-.387-.822-.937-1.552-1.628-2.075a5.742 5.742 0 0 0-.87-.54 6.18 6.18 0 0 0-.959-.35c-.835-.22-1.74-.194-2.613.013-1.236.298-2.413.959-3.244 1.82-1.744 1.803-3.742 3.394-5.617 5.057-2.05 1.82-4.113 3.648-5.814 5.8-3.38 4.276-4.76 10.112-2.327 15.27a11.4 11.4 0 0 0 1.09 1.836 9.155 9.155 0 0 0 2.239 2.13c1.998 1.362 4.395 2.383 6.858 2.287a10.605 10.605 0 0 0 2.093-.29c5.486-1.31 9.1-6.065 10.264-11.412h-.008c.584-2.693.7-5.472.81-8.23.103-2.53.069-5.106.363-7.613l-.002.002Z"/> + <path fill="#151D25" d="M17.81 20.803c-1.497-.982-3.51-1.038-5.67-.156-2.018.824-3.841 2.343-5.003 4.166-2.364 3.71-1.718 8.412 1.44 10.482a5.97 5.97 0 0 0 2.481.924 6.742 6.742 0 0 0 2.836-.244c1.885-.564 3.552-1.862 4.693-3.653 1.446-2.264 2.037-5.348 1.506-7.857-.348-1.644-1.139-2.91-2.284-3.66l.001-.002Z"/> + <path fill="#000" d="M17.255 21.567c-1.308-.859-3.066-.907-4.952-.137-1.763.72-3.355 2.046-4.37 3.638-2.065 3.241-1.5 7.347 1.257 9.155a5.214 5.214 0 0 0 2.168.808 5.887 5.887 0 0 0 2.477-.214c1.646-.492 3.102-1.626 4.099-3.19 1.262-1.977 1.779-4.671 1.315-6.862-.304-1.437-.995-2.541-1.995-3.197v-.002Z"/> +</svg> diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index 1dd47fc6ef..8eeed2df74 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -478,24 +478,16 @@ a.section-link { } .card-head { - position: relative; z-index: 2; - display: flex; margin-bottom: 10px; - flex-flow: column; min-height: 40px; - justify-content: center; - align-items: flex-start; } .card-icon { - width: 40px; - height: 40px; - -o-object-fit: contain; + width: 30px; object-fit: contain; - position: absolute; - top: 0; - left: 0; + float: right; + margin-left: 10px; } .card-title { From bf4dd36f679431b0e1b3fcb4674bdb5a3feb4e5e Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Wed, 5 Nov 2025 12:55:20 +0100 Subject: [PATCH 47/69] Update Inkeep config --- .../layouts/partials/inkeep-widget.html | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/site/themes/arangodb-docs-theme/layouts/partials/inkeep-widget.html b/site/themes/arangodb-docs-theme/layouts/partials/inkeep-widget.html index e3a07f1705..6456ff0bd9 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/inkeep-widget.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/inkeep-widget.html @@ -26,23 +26,23 @@ { matchingRule: { ruleType: "Substring", - string: "Arangograph", + string: "Aql", }, - replaceWith: "ArangoGraph", + replaceWith: "AQL", }, { matchingRule: { ruleType: "Substring", - string: "Aql", + string: "Arangodb", }, - replaceWith: "AQL", + replaceWith: "ArangoDB", }, { matchingRule: { ruleType: "Substring", - string: "Arangodb", + string: "Amp", }, - replaceWith: "ArangoDB", + replaceWith: "AMP", }, ], customCardSettings: [ @@ -59,19 +59,10 @@ filters: { UrlMatch: { ruleType: "PartialUrl", - partialUrl: "developer.arangodb.com", - }, - }, - searchTabLabel: "Developer Hub", - }, - { - filters: { - UrlMatch: { - ruleType: "PartialUrl", - partialUrl: "arangodb.com", + partialUrl: "arango.ai", }, }, - searchTabLabel: "Home", + searchTabLabel: "Website", }, ], }); @@ -102,7 +93,7 @@ }, }, aiChatSettings: { - botAvatarSrcUrl: "/images/ArangoDB_Logo_White_small.png", + botAvatarSrcUrl: "/images/favicon.svg", quickQuestions: [ "What can you do with AQL that is not feasible with SQL?", "How do I search for objects within arrays?", @@ -119,7 +110,7 @@ searchSettings: { tabSettings: { isAllTabEnabled: false, - alwaysDisplayedTabs: ["Official Docs", "Developer Hub", "Home"], + alwaysDisplayedTabs: ["Official Docs", "Website"], }, }, }, From 6b33eb5f9235fd2368fadb3e29129cca5f45a09d Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Wed, 5 Nov 2025 13:05:30 +0100 Subject: [PATCH 48/69] Toolchain: generate-oasisctl workflow no longer needs arangodb-X_XX (upstream references) --- CIRCLECI.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/CIRCLECI.md b/CIRCLECI.md index fe30a414ff..1e5c965bc0 100644 --- a/CIRCLECI.md +++ b/CIRCLECI.md @@ -219,9 +219,6 @@ Invoke Args: | Parameter type | Name | Value | |:---------------|:-----|:------| | string | `workflow` | `generate-oasisctl` | -| string | `arangodb-3_10` | `arangodb/enterprise-preview:3.10-nightly` | -| string | `arangodb-3_11` | `arangodb/enterprise-preview:3.11-nightly` | -| string | `arangodb-3_12` | `arangodb/enterprise-preview:devel-nightly` | | string | `generators` | `oasisctl` | | boolean | `commit-generated` | `true` | | boolean | `create-pr` | `true` | From 86f1ed3f3030fb0c29274f0207be9bc37bd346ea Mon Sep 17 00:00:00 2001 From: Simran <Simran-B@users.noreply.github.com> Date: Wed, 5 Nov 2025 15:37:08 +0100 Subject: [PATCH 49/69] DOC-812 | New Query Editor & AQLizer feature page (#810) * Initial content about the new Query Editor * Describe how to work with/generate queries and adjust the viewport * Remembered/saved queries, product naming * Capitalize Query Editor, long page title * Add icons, update product name * Query management, AQLizer setup and feature overview * Remove Experimental tag * Add AQLizer to list of major AI Suite components * Add screenshot * AQLizer screenshot, hotkey, and Open in Editor button * Crop screenshot --- README.md | 2 +- site/content/ai-suite/_index.md | 26 ++-- site/content/ai-suite/aqlizer.md | 37 +++++ site/content/ai-suite/graph-analytics.md | 5 +- site/content/ai-suite/reference/_index.md | 4 +- .../reference/natural-language-to-aql.md | 1 - .../get-started/start-using-aql/_index.md | 2 +- .../get-started/start-using-aql/_index.md | 2 +- site/content/data-platform/query-editor.md | 128 ++++++++++++++++++ site/content/images/data-platform-aqlizer.png | Bin 0 -> 31854 bytes .../images/data-platform-query-editor.png | Bin 0 -> 73796 bytes site/content/images/icons/add.svg | 3 + site/content/images/icons/close.svg | 3 + site/content/images/icons/ellipsis.svg | 3 + 14 files changed, 196 insertions(+), 20 deletions(-) create mode 100644 site/content/ai-suite/aqlizer.md create mode 100644 site/content/data-platform/query-editor.md create mode 100644 site/content/images/data-platform-aqlizer.png create mode 100644 site/content/images/data-platform-query-editor.png create mode 100644 site/content/images/icons/add.svg create mode 100644 site/content/images/icons/close.svg create mode 100644 site/content/images/icons/ellipsis.svg diff --git a/README.md b/README.md index 0f4b22c560..7d34a4ad0d 100644 --- a/README.md +++ b/README.md @@ -454,7 +454,7 @@ To document hotkeys and key combinations to press in a terminal or graphical user interface, use the `kbd` shortcode: ```markdown -Hit {{< kbd "Ctrl Return" >}} respectively {{< kbd "Cmd Return" >}} to run the query. +Press {{< kbd "Ctrl Return" >}} respectively {{< kbd "Cmd Return" >}} to run the query. ``` #### Cards diff --git a/site/content/ai-suite/_index.md b/site/content/ai-suite/_index.md index 4f23bcaa4c..2a2521db9c 100644 --- a/site/content/ai-suite/_index.md +++ b/site/content/ai-suite/_index.md @@ -1,5 +1,5 @@ --- -title: AI Suite +title: The AI Suite of the Arango AI Data Platform menuTitle: AI Suite weight: 2 description: >- @@ -11,13 +11,15 @@ description: >- --- ## What's included -AI Suite are comprised of two major components: +The AI Suite is composed of three major components: -- [**GraphRAG**](./graphrag/_index.md): A complete solution for extracting entities +- [**GraphRAG**](graphrag/_index.md): A complete solution for extracting entities from text files to create a knowledge graph that you can then query with a natural language interface. -- [**GraphML**](./graphml/_index.md): Apply machine learning to graphs for link prediction, +- [**GraphML**](graphml/_index.md): Apply machine learning to graphs for link prediction, classification, and similar tasks. +- [**AQLizer**](aqlizer.md): Generate AQL queries from natural language to explore + your data and gain insights without having to learn the query language first. Each component has an intuitive graphical user interface integrated into the Arango Data Platform web interface, guiding you through the process. @@ -26,14 +28,14 @@ Alongside these components, you also get the following additional features: - [**Graph Analytics**](graph-analytics.md): Run graph algorithms such as PageRank on dedicated compute resources. -- [**Jupyter notebooks**](notebook-servers.md): Run a Jupyter kernel in the platform for hosting - interactive notebooks for experimentation and development of applications - that use ArangoDB as their backend. -- **Public and private LLM support**: Use public LLMs such as OpenAI - or private LLMs with [Triton Inference Server](reference/triton-inference-server.md). -- [**MLflow integration**](reference/mlflow.md): Use the popular MLflow as a model registry for private LLMs - or to run machine learning experiments as part of the Arango Data Platform. -- **Application Programming Interfaces**: Use the underlying APIs of the +- [**Jupyter notebooks**](notebook-servers.md): Run a Jupyter kernel in the + Data Platform for hosting interactive notebooks for experimentation and + development of applications that use ArangoDB as their backend. +- **Public and private LLM support**: Use public large language models (LLMs) + such as OpenAI or private LLMs with [Triton Inference Server](reference/triton-inference-server.md). +- [**MLflow integration**](reference/mlflow.md): Use the popular MLflow as a + model registry for private LLMs or to run machine learning experiments. +- **Application Programming Interfaces (APIs)**: Use the underlying APIs of the AI Suite and build your own integrations. See the [Protocol Documentation](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html) for more details. diff --git a/site/content/ai-suite/aqlizer.md b/site/content/ai-suite/aqlizer.md new file mode 100644 index 0000000000..1710edceeb --- /dev/null +++ b/site/content/ai-suite/aqlizer.md @@ -0,0 +1,37 @@ +--- +title: The AQLizer feature of the Arango AI Data Platform +menuTitle: AQLizer +weight: 17 +description: >- + Generate AQL queries from natural language with the AQLizer feature of the + AI Suite +--- +## Overview + +The AQLizer feature makes it very easy to query your data in the AI Data Platform. +It automatically translates your requests written in plain language to ArangoDB's +query language AQL using generative AI. You can start to explore your data and +gain insights without having to learn the query language first. + +For example, you can ask questions or use instructions like the following: +- List all distinct surnames in the database and sorted in descending order +- How many persons are there with the surname "Stark"? +- Find the parents of "Arya Stark" + +## Interfaces + +### Web interface + +The AQLizer feature is integrated into the AI Data Platform web interface. +You can access it directly from the **Query Editor**. You can generate, verify, +and refine queries in one place. To learn more about how to set up and generate +queries, see the [Query Editor](../data-platform/query-editor.md#generate-queries-aqlizer) +documentation of the Data Platform. + +![Screenshot of the AQLizer UI with a prompt and the generated query](../images/data-platform-aqlizer.png) + +### API + +You can also utilize the AQLizer feature programmatically using an API. +See the [Natural Language to AQL Translation Service](reference/natural-language-to-aql.md) +documentation for details. diff --git a/site/content/ai-suite/graph-analytics.md b/site/content/ai-suite/graph-analytics.md index 190c6ac1f2..fffeeb63af 100644 --- a/site/content/ai-suite/graph-analytics.md +++ b/site/content/ai-suite/graph-analytics.md @@ -2,9 +2,10 @@ title: Graph Analytics menuTitle: Graph Analytics weight: 15 -description: | +description: >- Graph analytics analyzes information networks to extract insights from data - relationships using algorithms like PageRank for fraud detection, recommendations, and network analysis + relationships using algorithms like PageRank for fraud detection, + recommendations, and network analysis aliases: - ../graphs/graph-analytics --- diff --git a/site/content/ai-suite/reference/_index.md b/site/content/ai-suite/reference/_index.md index e23683c4ba..ccfc8e1e50 100644 --- a/site/content/ai-suite/reference/_index.md +++ b/site/content/ai-suite/reference/_index.md @@ -1,6 +1,6 @@ --- -title: Reference +title: AI Suite Reference Documentation menuTitle: Reference description: '' +weight: 40 --- - diff --git a/site/content/ai-suite/reference/natural-language-to-aql.md b/site/content/ai-suite/reference/natural-language-to-aql.md index e73234d162..40d3ff9920 100644 --- a/site/content/ai-suite/reference/natural-language-to-aql.md +++ b/site/content/ai-suite/reference/natural-language-to-aql.md @@ -5,7 +5,6 @@ description: >- The Natural Language to AQL Translation Service is a powerful tool that allows you to interact with your ArangoDB database using natural language queries weight: 20 -draft: true # Not available in pre-release --- ## Overview diff --git a/site/content/arangodb/3.12/get-started/start-using-aql/_index.md b/site/content/arangodb/3.12/get-started/start-using-aql/_index.md index a475a90abd..12e74fa23b 100644 --- a/site/content/arangodb/3.12/get-started/start-using-aql/_index.md +++ b/site/content/arangodb/3.12/get-started/start-using-aql/_index.md @@ -32,7 +32,7 @@ ArangoDB's web interface has a **Queries** section for 4. Specify any needed bind parameters in the panel on the right-hand side on the **Bind Variables** tab, e.g. set `name` to a value of `AQL`. 5. Optionally set query options on the **Options** tab. -6. Click the **Execute** button or hit {{< kbd "Ctrl Return" >}} respectively {{< kbd "Cmd Return" >}}. +6. Click the **Execute** button or press {{< kbd "Ctrl Return" >}} respectively {{< kbd "Cmd Return" >}}. {{< /tab >}} {{< tab "arangosh" >}} diff --git a/site/content/arangodb/3.13/get-started/start-using-aql/_index.md b/site/content/arangodb/3.13/get-started/start-using-aql/_index.md index a475a90abd..12e74fa23b 100644 --- a/site/content/arangodb/3.13/get-started/start-using-aql/_index.md +++ b/site/content/arangodb/3.13/get-started/start-using-aql/_index.md @@ -32,7 +32,7 @@ ArangoDB's web interface has a **Queries** section for 4. Specify any needed bind parameters in the panel on the right-hand side on the **Bind Variables** tab, e.g. set `name` to a value of `AQL`. 5. Optionally set query options on the **Options** tab. -6. Click the **Execute** button or hit {{< kbd "Ctrl Return" >}} respectively {{< kbd "Cmd Return" >}}. +6. Click the **Execute** button or press {{< kbd "Ctrl Return" >}} respectively {{< kbd "Cmd Return" >}}. {{< /tab >}} {{< tab "arangosh" >}} diff --git a/site/content/data-platform/query-editor.md b/site/content/data-platform/query-editor.md new file mode 100644 index 0000000000..d2bda0e4e3 --- /dev/null +++ b/site/content/data-platform/query-editor.md @@ -0,0 +1,128 @@ +--- +title: The Query Editor of the Arango Data Platform +menuTitle: Query Editor +weight: 30 +description: >- + Write, run, and analyze AQL queries using an IDE-like interface +--- +## Features + +The Query Editor of the Arango Data Platform offers the following features: + +- **Tabbed interface**: + Work on multiple queries concurrently via tabs. + +- **Query and results side by side**: + View the results of running, explaining, and profiling a query in a separate + tab, with one results tab for each query tab. + +- **Result history**: + A results tab shows the previous run, explain, and profile outputs. + You can individually collapse and expand the entries, as well as clear the + entire history. + +- **Saved queries**: + You can save frequently used queries to add them to a sidebar for all users + in the current database. + +- **Remembered queries and results**: + The Query Editor remembers its state including unsaved queries as well as + results across sessions using your local browser storage. + +- **Re-organizable viewport**: + You can drag and drop tabs to re-order them and move them between existing + panels, as well as split panels vertically and horizontally into more panels. + +- **Ask AI for AQL Queries (AQLizer)**: + Describe what you want in natural language and generate AQL queries right + from the Query Editor. This feature is only available in the + Arango AI Data Platform. + +![Screenshot of the Query Editor with an AQL query for retrieving movie documents on the left and the results displayed on the right](../images/data-platform-query-editor.png) + +{{< info >}} +The Query Editor of the Data Platform is not feature-complete. It currently +lacks features like syntax highlighting and a way to set query options. +Use the query editor of ArangoDB instead if you need these features. +You can find it under **Management** in the Data Platform web interface, and +then **Queries** in the second-level navigation. +{{< /info >}} + +## Work with queries + +You can enter your AQL query code into the default tab, or open more query tabs +at any point by clicking the button at the top of a panel to the right of the +tabs ({{< icon "add" >}}). + +You can close tabs with the button next to the tab name ({{< icon "close" >}}). +When you close all tabs, the viewport opens the **Welcome** tab. + +A floating panel in the top right corner lets you enter values for +**Bind variables** if there are any such placeholders in the query. You can +minimize this panel to a button. + +The following buttons are available at the bottom of a query tab: + +- **Save**: Store the query and the bind variables under a name you provide. + The saved queries of the current database are listed in the sidebar on the + left-hand side under **Saved**, where you can also clone, rename, and delete them. +- **AQLizer**: This button is only visible if you use the AI Data Platform. + See [Generate queries (AQLizer)](#generate-queries-aqlizer). +- **Run query**: Execute the AQL query normally. +- **Explain**: Show the execution plan for the query. +- **Profile**: Run the query with detailed tracking of its performance. + +The sidebar on the left-hand side allows you to manage queries: + +- **Search queries**: Filter the list of **Saved** queries by name. +- **Saved**: Open previously saved queries by clicking the name, or click the + small button ({{< icon "ellipsis" >}}) to duplicate, rename, or delete + saved queries. +- **Running**: Open a tab with an overview over the currently executing queries. + You can also kill a query from this view. +- **Slow Queries**: Open a tab with a list of past queries that ran longer than + a server-configured threshold. + +## Generate queries (AQLizer) + +{{< tag "AI Data Platform" >}} + +For an introduction to the AQLizer, see +[The AQLizer feature of the Arango AI Data Platform](../ai-suite/aqlizer.md). + +Before you can generate AQL queries, you need to set up the AQLizer feature. + +1. Click the **AQLizer** button to open the panel for generating AQL queries + with AI. +2. On first use, you are asked for an **OpenAPI API Key** and you can select the + desired **OpenAI Model**. +3. Click **Start Service**. +4. You can check the status of the service as well as stop it from the + **Manage Services** dialog. + +Once the AQLizer service is ready, you can generate queries. + +1. In the AQLizer tab, enter a self-contained question or instructions in + natural language, like "List all distinct surnames of characters older than 30". +2. Click **Ask** or press {{< kbd "Return" >}} to use GenAI for generating an AQL query. +3. Click **Open in Editor** for a new query tab, where you can verify, refine, + and run the query. + +{{< warning >}} +Always verify AI-generated queries. +AI can make mistakes or produce unexpected results. +{{< /warning >}} + +![Screenshot of the AQLizer UI with a prompt and the generated query](../images/data-platform-aqlizer.png) + +## Adjust the viewport + +The following options for re-organizing how tabs and panels are arranged in the +Query Editor are available: + +- You can drag a tab with your mouse to a different place in the tab list to + change the order of the tabs or move a tab to a different panel. +- You can drag a tab to the left or right side of a panel to split it + horizontally, or to the top or bottom to split it vertically. + If you move or close the last remaining tab of panel elsewhere, the space is + automatically reclaimed. diff --git a/site/content/images/data-platform-aqlizer.png b/site/content/images/data-platform-aqlizer.png new file mode 100644 index 0000000000000000000000000000000000000000..abdb12c7ac584826dc500f9d2faef1a91ff65748 GIT binary patch literal 31854 zcmY(pbwE^6^EbY`EX&d>-CSB4X~_lYPzfpN5NQQLK)_uZsTGirkQS8&X(UCYyF-wc z?&h~V-{<?j@9&S@d+(f?IdjgP&zU)MZp7n<s>B3z1RxNISY1s?7X*SLK_Hwza2zZJ z_v0BO_R{=VOJ8|tXz1qV=JM+D=KAmX`Pu2|>Cw^Aztfw|lfMVYy}P@+<EJ;<+uQ5w z>nF=iQyY8B%gfcr*FQI|E+z|Srl%_=&yweFdV6~|erC0`w&wp_$MhamH@1$JCRSBd zB~^|r=R9r7P5%1zi$l$RVop<LdR9tGN=0m-Zsu%MRFqHbw^}c;z`)={&p<yvKjFx( zSFb#sot=f;zq=R&T3J~|Y4Dktn5Y>A^F2xB(+yHlQIV06G2!Fp7IYI97Q1`*?)M&C zFbMR<L0w5f-+O9v#>#ETlqPI%PI*{z>bH{mq;~>dTwU}tIR38|blb^|0cqnKqbk`6 z$UU`{qexfVR(cE5vy+57a1a9<Q5)(87o>^@1;yyXl;$w~dkX?`zd$4>$B?0Su><eG z2!t6BW`hPngK;4U1Qi^KGy*_iD>TRwU5W%jS|MOKoDd2Cd<YZ@OZfk>+{&PEu`CZM zFknJxa~U`Vnyt?&Ca@@(P_$b<{?Gp~_OB$_PTQt^JTBxC7fhSH>7$(+nBP)Mzc-Y^ z+arJWmiFEFYu8Q)c+L+AsklcQJ}!pV*C_I^;XW#=kUvQA_}2Fg<wv7^^9OP-6c>{A z49$)ckGIG{9<QGF{^`W%2Z||8iD;!I_k4OKoc;RBb|=O%WE9r?&-mf&Qc~}lf=pM{ zsPxTS{0_3<s@rAUx>QTYc1XHebA3PVS4{zfhS#a{7GdXyb4jmnX8hxMrekFJO!yFg zqHtKxjx~jM$3>dPULQQ0*KW(k(R_VyIQ(lR5>=V>?VEL0LI<nWd|mX}2e~&=L(B%9 zV=2crSIrP`-+kb#Q(c{kd;GX*OH{X1c<#fdGxJy1)QBeJ4{2$>Y^xpl{0i-W!?MO5 zGtInu&-|-DL{P~al&u^CT0OUQdB`hQCqdC(_3)LI&1<NV*yXae&YhdCA53+jte*5r z7cJO6<baOk%rrn(q2$RS9lI|jLSlvy@%C}thR4x|>*b^Ev8mV~s&F4PcFx!VGn<~w z>uB5P_w`4Hd~%$5-RVg}*F8(|0TqN#f^&B|%EQ8rq~ZyRrm(LVMGj@}?CD_N(TF}C z@~LM1a`YZkY9=#t2P5?TIDa#|+6{Sl`QVW*sSJ*~_*+p%e0!i-eGV^sWBbpK4P-?P zp~&Gc=A3LoX-M|TYeL_@9S7hqJ7F0?FJO?gm&iC**M_>MHNL>cg{Aa#cl=0SlcR<? zp3*1z=nOpNIn_5XrHiZ+>l#9wG#BJ0Z0|@dSJ%-neapDh=;Y_6RKgFEI7YCK1P?)u zD8~=v1vK}&H{t`o5zu@FQ{qUu$C)JMo40=$ApDlyx_dr<7?og<E)0A*V9Hti63Hx| zc;4err4~6K0`8Ls%(JUs^2&aqxxRcrHy`Q8N9AQij!5UFAI?8TZAP4+L95J&-@QsC z)S>QoRIjUC(@$P9?D+uAPyKl>$`l<=0x^%+ajvIO?3@cCI$#EB#QJ_p0q9iU>;D1K ze^I4I^dIotqUqYE$@S@UaI0jL$3LCli^lzQb<Tw~e6+3@YnHoC?7df4O`}mQD_Q*h za5Db!oe%g>D5>E!+5aNb=zoFu{~{B_hpG8LKn2NhLLev<2mnBEI0ym(L7^Zp7<mg_ zEXe;a9n126>Ck5Uz==Ah(w9giD(2o;sETiM@E9Eg@=E=W;(GJ|E)=>(@;5MGxetNJ z6mh=WNM?d<Q?|^rcfJ(}f3Th+#0el(jo4&u_`qPPR`s2lcpTxCS{&$7IyhxT<~0h{ zAOiSs|I&R3K_boDzC3eprcX+PV#%F(wFX_U_}&QH1%jYU%EMYtc06x1_?I1m*wu?| zyQAWl6#Lo_nz+W_k9bvk$R?!szb)Tfu^;hsbiE9}`N!EEVDaK`?>)qN<@JO6LMFW? zJ|Qo^IBvH~(*Wl)(3Ec*SC1V7vZUh2yvwfG`{|1gue%4SzrKBacDJ(XN3^X?b{$6b zveuPf@cyNw1+qa>s^;TmeVm@wm^{<9fuLPms$iH4RH?x<-MJ<#Q`Ai?mWZIJXNp9P zJh*<17@YDv?=0lRB`;d)=UhCPmSW22?egJYXE1FM)rDa|R&{xQ`}+p81z+{&fT9n| z{$|=30|={w0R7*>>rCn4o6R&Aw<#gSFUq#WJxs#jJ>kciQ?707Ihh5c5KX`No2UF| z77u}V>Pep5AG?jsKMq8OuKeWKWuCH5h#Xym0%t)uLmHg5_=qsuA4-7Bo~k$@r_%%d zI-2(1Z@}Ty9D4OvSQPkuVWMhbw<Dzi@fd<SgB8l;t?v$f4M$E{2)&VX<wb_J44m6g z-k9Ei8XI+@f4%DlQ4#{ya?#(xkgE@LuHO;{zHS)B^puN1!1_J$Q5^$Rv|U5l=Y85~ zmx9P+`Fap^ABH-#selUqVZBP&c|u_bQe#t%lju$>`1-9|ASkda#j*{irVo6;kU1PG zdoA>9i1D2!XehQiMn$}87qzVT?Z<~Zc<C8#+zQKaLA5K@!*?k8;Er%j;ZZvDA&7xC zX5IEgQP4BYe`$E-@Y6q%t9<IZowQ-ebs~&?wmKIo_*53DJiWT}M7ekT=R$^dwezCf z!tuDMa~wmX8{yt0Q#{*Dac0LM`_CiLzS<$H$Pcxn{f@pX8WJBcLh`;2$!Z{8`EzCs zyRc1}`g@!j1T}6pFx-cr7Afmv{hXBE`^bp~h6Z5??;MDDj|+~H5Std$A0a9vl3DG( z4Qiw=ah*3(GaYLVV%KJl9}>}Pc*fGq*FU$4Q|#bX8~r7!T6y~chkxDr<Px_Zz|_)X zhy(BQN;qE;zG6wLU8xSjMLcV@I<j;5V<l-XN4!nYa0eN>c@0i0rGI~Ud39<tqUm(- ztFGdBM3U!j6TY9MXDw3P=5uC>E!C5$`^eI7@0Fmsii+N~#0Z6MHHx%e2z*ZR8=wUy z5-QSSqB=@2qQ4XCLC5uWQf!_|0u4l+h$|ve0b+dcv~_=+vmoOBo2qD)lZ&_CHliMR ziTq}CPun^6$w{3o<du|P={Nbwc6yHrsCbZC;Oh5I;MjO_!-q66DtwR_l1I`D(+M+* z#%<+Wm!d>Q4cA9USGH2766YaIAWC@;xJ2zxxu$jco8j$H^Jd%Da7Ac(=PBc)JD0Hz ze;!Rv{Setl=4}YO8a^!&QuVx=8_fEbLfH$9DP4lINhXW0gA^McHw1K0Z~1q0>s-nO z944RkO<91*G6+Xg#|YGr31u=8cVIQe&%L<z3mGhKu8kI=6eT&3OkZC3(l%za5K)6M zykFM>I(5i>WNDBrTAa~F59MGWE74tTm{R8R1>NkY<oA0dQO>hm^EjP}<znKF5H&@Q zN#w-|ZB){?Q^rdql++BQEAHeZ*oh8xlM}=52h+?D;9&wwn)vha)J!8fiV{Mg3zlpk zNWUHRW>|i)ug*#b$jXK@s@NW{`^saKjv7d-7})H~bf}7RnfW%rMh#jhYGg$J`2+#D znat?*YA9n7rkATvh0Xthvb|cHYzZnXUGAU<@JwX=b%N4OV|1V8<Mu1Ou``InDZL9p z2fD3#iSQ%6R7DD=e!3}^KWmaO0YUq4QIaw)P-O0)?=ck&jNpx)gaAq@A7#x9v<y!i z0eAcX9SGDN97vso>8y_$pP*Qwh6@+NhUSwxlBH@d=@M}uRVp?l(e6SIiaU<09uI?| zs*kdg#?6O3KkKpUCa1!4)u{^mH9$%<X6(ts{f`a~VSw+w=P~EMgIYg^!wZF{eZG7R zUW`(Mv~M*OUhAKw(Kms@`THr32dRKVRGP5Rj<9)7WI?!s3M81~T2jJ^9xW;iX{psq zGfVnS5US^C<@KRf$1}l+HTCPAfoggkCFOaxSB?M%6fV?S(GprOh6o=790AeiPD}Sg zvdxxEFE6{Q$pF-B#AG&U6m5fwqcbrSf_(gAGDG^?Yub|cAO#{}CV&UTXUW_b$Xy2k zuFMvhM3hxIiz*2*BWtmEYL}<h!P^-M%Ii1_0RmGs+z&Wj)C;x8uYOj$9VhB}1{9T+ z&3k?+Tg=>AZ$>kPkvy`hnYUZRdu6=DJ4joGs$k!ay0YIPNuH`|5sLZMI_6qjIc(&s zuF;>96`XJD+KF4kF>-x9?-=t6(#t*GQ~$X3^6l%N?J!lmBfZA*rE~h;1+(O(%VIxj zXt=DI=L6iJHk|eog`O6$aMjx{A*2W^(kTT@nKqOfC~osxT`7Ju{^8r3AJ^M`yFYhi zy7Z4HrL<y?8Ah&HR1GOlLHO^&FZQ#(GOeO#nnwRVt8n}vv=wB95>5Xe|LiYLt~upr zSCjKkQ>OCDZI1ga$#{#dq@P0UBD#Yejpa7QsjoNl4vsA<=D%LJn@v-S1Q7SSpFJLJ zkwJJo5gS~9u=g<W&@j*ebC<hJo!gM7ls~^S3)b9Ra^C6v7W?zbC<8Gh*HeBV_WeW( zYxm;DSg(Q9{Z<niRjB3*f8R>{H*duoEX`1rI}eIx?gl<Lm$G>Dltb%ZCL!hp@V8@B zpxENYogSqkfsB+0-)m7et%<aXMs_!jnSg$YDX#G4hbz)-qkPYUj=1@(OhuAAVr=;G z55S9wUZ=J1nri1tB}-=7xGu*fSBo6a+oP-Ml-Eb?FKW#!Ul&f-WEZ}UGYF{UO@7hd zh8O;Nf5Fw`=3xy8fBgF<u9~+H9AWrE|I_84uwIm4tdrG7(>%<{N?`MT+sf(Y(H29! zdees;^d?@oo4SqD8{m4=qQCXKke8|xQG5DM6d_F2KNCYVmbS7jlC@d<_)Ur?jldU! zR<ltrlHY@zanTzpDKeVjOQ2SJrJCTXBLC7xOGB9qJ{R-*wa1^%Km7*l7I}P{;onL; zJ$kv2V>ad1C{LQ<uo?a*!q#=5veEvid+(DPmB}<mO?rCN&H2(lOa(jVTfVN?CcmaD z!{tTM`=(u@UP@#@6V>>|=&P^ob1^os@Z?E?{EEFGe^meJ*c|QE?})v9FNwwOqd;Z` zAb@r}mHKUgduo}}dY$xJj(*r-kiaV>LY-7;{Zdu-gRCuc^i(=?rD-~+d}I9d*6}r? zA>nCkUWQip(p$23zpl_ApFFU2{^dCs(vAmj(nf(;kf<L64nrbeIFTr|yD5iJ`cOC` zLW@f_M+5>54@p!nQA<YvNIu<o4%xVr1Q2-fJ#ETisHm|b3Uo*Pd!mCN9nbfN<XB$K z{K|E3Q8_yc67)(5o3~;!SZqp*O=98y_XYy}F9mx8hM+)T(Er}-R^Ww$Q8zJ6aFjrg zrR7~K(5voPm@EQhM#Kk!BCA2PcL2~D8sxqHpSwC*Q5CFW4H}T3qYx_+^tct284PYV zqsf$Jq2wK5&B@Kg3zS226_`E?*C>u6i$VjwLw5zn?{c%%5(aguYp=2y=xS=vV3^l3 z0KWVO?ZGVa)|}B;A#d&u`NjMZi4LSL1ge7w)f9DCdE5#Z#F40NCgcVy6zca;($$*Y zBd090hKu<Q3B4!6-mnLRlEI+xI^iBATyS9VT`MFCbxSbMSP&qBBL;B5U`Pjce;!;f z1OhAK;~)U<46A#L|I-pkZSTzlKPLmG)arYqkEQpuCe!D$x^(UO<5cV$Sw5%w+LX)I z{+<o<-?kSuBfV?2`w_?1fZFSgv0Ioin}x)*u~=6_W6hq*6EPpT`#sN6jymkjW_#?a zJ{J(4Sbe&pU9b05zz;HH0M>KMlTZy`{zcU9j&GcSjA3|7%XvM=(O>Q6Axd-3c#{&j z^Mn}Za-kljpWg(m#9vRjZun-1arUm1g7(gt0Y}C$!LSo#vKkDglQf;R6`qj#-O;@7 zUqqwiNM%~Au;#;+WoN_r<i+BTlsP>+8EW;$33}<W+i6c;D`&Z&qE?pm&#ofN9~(ED zCPvQU@BhA-;doT$lseZ~(nHs#NV*!i;&11XaVF#us{K^!dQO~`u`h!pSo{0T^uKH$ zhyFX2`+KQ)$N%zEw<>9>9+4d*r;5D5*3%Q0FXz8TMjW~+;RlVA0mHtIVTzpM>h2e@ zdxaleH#!ur+vX-K)k=h|BqPU^g)kuqNOU9;$`T9>B*gu9bMwuxyJ~tb#foWVnSo^3 zQ&5W8@kwuMBu_7U*_SrG0S6uqMm|l`2uZT1SC<X=I#wE>dx+&1F<yCwcO+0ngUhg! zGy;x(Csct`JFO$cq#RRuuqsqCvseC-Lf}c3N(2sL0j9V-y0larB|;*X5oE$fiJU69 z1Dvv5g+NWM{O@OT>8QIw5bGyB(YX3`Qa-H_7PzUVAK7vU3GIhMzi?Y2fGb)Gd&Y;? z`N8;xzuIAVu?F$Pa`of7K`>rg3q|Mj)<mbz-j7>46r|GpH^?ggn3`HDwW3?q>B8{; z4u*y5m0QLBeXLzDc+ec$7W6PnMX#{JZnT=tZ~tqsLzF(qA*UGBN;>~xbTx^M$4YGn zjA@zDf01T-9$h9~D5*mfsq3(R^!lff<G@=``#VuYMMA_47$K;~mAaDuo7_=FKXXZ{ zyr)Q&x+?5TS~>B*y92eSMgu|eaXMVXML01^c@>Yu`<CEO!lrz92i`tRHwYCk{&D)+ zz*h5w0Em810Jw}$A_t^koldIyt(Z9o;7mxKYNd^&Nmfu?6QZV~=v8=|h$iauEF9w} z<*{wK6V%uq^d$RLn?->2B!uUv8j?<7-^-JCh*!M3aty`bavlFWWf_@%_rX}o@zsHQ zST(g#H>W;W%_$eGM(&A=n5k)P%Jx#K7s@>Wg$HtYw0TD$T6}cCwvVTm7Y>Mmi$D)G zuSW%lVrbH*<4JBl8u|@|9sKD?GhG@{Z3$s~B*}vcufK1G!dcyq<fMDJ>1SnIz%wH3 zOCY7PLAtr|PTg4`jTht)B?@xLE(Qg{J1TR%lxX4W{2=%E>$UgvB78$Tg<!Y@s3m=6 zn26o84uWcu@Ab#}Ku~wN&3E1PqL!5IM_iK&^$7yrN#7e+PCss1bTG%7=F!Y&q#Gta z39EYoqBY&K7|I)pntT9Ov&n^F2Zn>WpWG0qC!H;Z7?K7-HP3&$`Izt+nV{~LlJ(2? zA|L;y^E>f`>2{@Pw1$3vR3zy^Sule;o3jDTv@;)5tS#n@7=Pb*ECvj}fUi6$m@c9T zJNwWLAWhiBupUc~f;-`=V6~gk47~v@<p+U3@SY5JQvsZx`geU`tv-{jmr^+E-O%OH zcQA7soLGPA$KG$cuf77hnzTAzT4H|!JI`C5GdiA6mcD#Mox1a}SR}bM34$3@!^Mbi zz<|9M)dr<qcVzJteW_8U_fbi-I16O_NYR=1RB#M`53?|$XD$bWygLJT1(6Xu#l#%H zYBpd;6Zoub&n>9GeRjcFV2>aeBMQWMtIfRST~KBF&?3_yjHkHtMMn}!6kpYyORq6b z%!onEWS$Zws$zl~(WwTlH~fSac`4m!srtqf*}g!L2YG^toWMgqC8O4ieF$9FrneIz zWu?5HC~T<~Jxs(59<q4B??}kh`-~|~!=*F2fL6#tt*^B>apI{=5RIA8ULqmhLvMIr zm>6x-mp?X<A$T7?KF-70X|Nc^oo_DExX3hmPf)glt-t;6(5ZmSKxp>V9XlZRH3+@| zivHEodWnaen8j&Md2LinvK3#zmAleaSc%Aw1z9!XgDj;(dHN%KJ!|&XX*dMKr^3jT ze1u0HPMS9v*{_D}^+AwAvJb?vgtLmI>$!h5=2E@37t|(Uv&038-qT^x#*dr`gcmam zULe&D6|=%lB}qnc?Z3NfMQss^gf8f@1&)&a9oBU!Zj{fwInF{jxAeIbe1A4zQ8{B$ zVL^W;=jioKbr>rQ#oS~sbqy<^t>(Wx-OaShGNg;c5(};aACw2|{kZTVlM-Shm#TUH zLrazQ4l*v3Jnk~xpVxuqx96c1H(3N|AETd|asR?xLLkXMU9#~*x)LkuQcL1kF!ELc zg$dxpu18SBP^>ZsQ3OcwyzDu3s1k@p2d0Qs_nbKRmYo^vkXTiU97Nz?Y}=sx@OwDG z-i5UeF(l9B%M4#91`88yGJnu_T!g~0`kKgq)0nbP1<W_kX1o;=;+1ZRP)w35!J)<D zm0<tPq(24kZWrYya=@VU(^?5g7}w9O04>cD$i&We#e~}Rnf~By3k+?Z584|Y`+ZUu zQ>#$F3?2E=dpYTv?>#q9%&;*xo<C90F}P_)=j;_9>Q(RC9EwojAX*;><$5f0SS*%H zfsoA%R>a=&Z=I*1aPq&fxHP}-)9<56++rT-iMY3VgMOZpsB=CD6Gr%weK`DvT{;B# z(&ig?l4}A}?^^^>o}T5#luds2AXXsk`#Y%7k@RAB#Pu&6$Nr{=r~J$0nZPW;1x;9C zDL!Y6P(|V7Fdh7ZQ0{y@n&xqdTj!$8>M4KH%XOoXj6P3itvDyT40$EDd!!3r8bR&0 zT0K^p)g*n{B(Wd*%@PC+FCyT#wpW8}OT7xHboNYxtd;Yx1BUqZ{=8yK4RUyG1$z?_ zrrt8r)&c9jnUD^mGPJrI<rUAzu1JM@hshXD5U575$cmo1xha_&o{-r4o_^GJ-(IY@ zvhSI1&3xnF+K>U^5uP4RO$^d`_cON^3+9b{iH-*P?ktg<623U$qD)8`OAoyqRa294 zgvV3a8=A8a0;m8x!ap_-nJ9>!c)}h!`FX{!%hvQ4f9v7mbrEv=UPzA#yyKw`d$iOe zcl$#mDOBJIns2n8K<N!_v=lSgX>7#J?f6Z|V3Pqrdi7l&-f?MiP(MA8gO@M#f(5<C zL2BnTp2mam?G;WTK+ojJ%UM@{I{LBVOw~DPIy>-2#~q&ArSR+v0_P5_SR!QIcFdUW zGeNs8z33i7O{b`aqHrj7DM2dqo{QYKsw9OSy<}rvuHv=9s^2>$p;WRjL>Nugfl*ec z)ds$m864WGWtLDyz&A0>LyxFsdv<Wra{(^6eow!Pul$v(M%fv?)nT$=JYGZmfKna= zt%<Lc!W|J_GHML?YO#J1d;@fO--+nMyO8k{Ka!G=@DkIXwzqAhl*KqsBr3kqmyT>9 zl_7-|vtpvEs&q^A-4dg}pKnD@$q3q+mzaMGdiNQPutIUgf$zW&@KSP05W4g|5eN<X z?;`?^umU0AcVHm2P{_hOH3I$^4T6Au0TdF&O$36lw1NP{pJ!4?0Er8ML$Mj{e`&1P zMzB{l1OgV114F>Kk5*hfAcz8>M1y4x216lQx0)%j0$F&F-Ff`n^6v(p?wS3{s=_wR z5h|SwKOePs9Udv@PyQ(479q6jfjjhYo={2p^Qis#ddGN1>iQq-w8y+H-FS1W2S6N! zx;h3_cy#bo1Pf7AO&E2;_28_RMo?C0--Y}<N1aG(dG&-l@OePHwSC*>p^Dd9aW0*; zoq&>kQbxqxF}hV<qw5vX+)C%^NrH5j%xX)kYjTqJ`2>X2Q}3*}3McyYx3YW)s8>U8 zn8W|2fbjp=tQDv6KtM&4U(stce@jD3pq>-wj%y>9aVet2|0rlVV_pxJk$)@DUM2zL z@;nLu`m!R+H_pI_PIbxwI`RjLxQORj?KJBU_>)5ytEs}1*XiVpff|~>yt(L%U#5-0 z-EmV`<ic+S0i+b2KgbrwsHGI<_ycU6ruLwp9&o{F_g$)HVU3$)9sesX^cEHlF>WtU zFnX~eY4DhlF@SvZND@V%b_oqPwahZE1!ez&D4h~uESpNw_m1kd%f=|R@(EZRPxLm| zb|Y<zKZDtc`45SKJsiL(>t~EC&Lqfz#+nYnhO6(GU8L`Gmr8_gvQ61e%p|NX>?PJJ z1|%osM-%#z8L+Si7|*Gml6Np=_wi%~QHxB;g}I@Km~+mx^~c*lag>e_{q9F@z$dDe zQ7Y=Hn6CyI1Oo`ee}+#d4V!b-8%aE0)r7p1B?cZyAOn1Hz8t4YAPersbH{PN&l6e+ zm`=>L?(Xv1M2BZ}4lYo29Cd!%Z0bkSvERYX9JYHfRN9-ZVk{OvYA2m{(WYtpg7vGT zf&sK#`${0?Emkc#fMqUMv_lSXG3xW^=%_i}Ow<RBc39md$Sf=Sjv#w(->{ecIH=|3 z#y_Y-#LmDjZY+8u11BUmxNx)k%}_=8w$oSc^4^2;o#E-%+kyuTV?C0gT~#g?Rp-y9 zPVCIZal;9Mnf1^k{0TM&p7-TUf>;=a^Gj+I*);uYwf|Z)$v4f#IKMlnE7H3^H&b=~ z+xUeM&VoI|UD1&ymgVyeggebQefQIYevBsF%?C}U`CuD`rPC_?{ctmyG__-ku6wrP zsf@#|0CJmh{Jc;*?e)KWru+w}8UCj251%dc0XRlA;mj^2s#uy73f_lLW`!uAGO<5P zGD>K;f-nMrC=mvMTG)9YP=4&*^!8UTw9EGsZul>dAoy9{8i~s^B3=w(LdoDiS4Xkg zI`DOlRqdZfNl2ElI{r{qf)wfSVBwsw<FMkoG$nkCz&NmycWJ=04@V(z_j$l`tLG+n z#}uX#G<r$-iCq5asq4@VB`0fa)OWG-ME`rhQ^^tXLz;#ihbcP*EZ5G?^Fp4VC^H0{ z(IP;U2>}<PL0(oMexl}j87;g5B#P?=6CB%GDTGqjZw6>lR4}0kg6Fp!C^H)DN@Iir z7Qh~2=5L<7s!2#wd3`lrDfFN(zycGAe{Z$L{|1+IIGUqwrY6&ff@ReZc%b9|LOZKK z;h{V!`#1TTugSA#T-8E0UMVk)jmbUS3F9dMQ$sD+D-SN63Q9yV@0!&^CU#x{VS&P$ zBl%xNWB?q&^fDC+|37nw*{LLCLn43zBoc+S1#C?XgN9RKxBffOPWJ!OWtL?S;6RW9 zAr5xxaUj?+!x2HY0CJ!e1-chO@E_uT8U%U-kNYgYdosc^O=QXuYy*mxL@k6t#1J+< z#KFy{<Hza8U4r<zOS5Cz{l=Bs`Z^M$Rw{8EQ0#i!iLJME?yVpnauM#5-%m$$R+qHy zy20g>$suQBWTBfl0peWH{qKUq3#8uM58+FiB8UxYZ~kiqz`}<Kjt_63!Zx31(A?^} z{zVo_05d0o?i)gfSP)2Hw_Qc}wgFp~L3AcrOa1RXoa1&er^JQ?3>v`lH8Wt>UT7;1 zmYNj|MgoGY7?Rr{A&e~p?enkxhX;v|gF@aaf=law5peq7r}H>aNP-Xw`CrPd&i_ak zw%+PQ!XPMQz#xNK=O6^YSX2{;I5x>@-Jj5r$o5nhTtc`zf2;~Ns?2?uaVPw+wi*Oq zQcV<UtEXHvL!Z8Z+)vVs{49*oxdR6<pU#BS4}E{YZI6zgmgF@4(IwILXT4!u&tGFu z>e;;Im`_4iwqlZJ7|}Dok=S5f^?8b2Y1EFqFYU>A#YilLO<dySR+~Ycz9^~nn?}q( z)!F3l?Jv~B&!2SP-C3}ukwYO#yqLn1g-x0sj^))u@Fj3r<=mR)J}wo0t&_aaxgv6d zq-gqQ*ik3y@c!JyU0i%qLtq==woO&U{_9i$fG=6DqLYQE&EsElPu0_go3FV%Fsx$n zchL2{SDXA5-SU)H<HPTQI=c0)jn@l55?a)gd*(EQIxJ_6vW+eh`<;8WjT=6=s$gSs zj6v(jp|wfH-aj*R@HFIJG*Yqe3C!c(Th?`Lpki9ev5m~L^uyK2yQc;gIQK4iFgjn8 z<G!Vzv`&Db?#<~1EUHNzo<u(7vHj>uh{MOIpU#o>Pk#^k<r0s_T#d3j#;=c<Ti@Gq ze3U{=f|aO=ww3$rDt17&|6IPBfPCscMg_<(Fel6<uCF|&r&X)rLi`JR;<*>a3=Kq* z7_`<TbS$0w3H;>}K~%5Zl@P|L=ah&~VA(bKW<6m;zINnlk+D)j0SGwc{=`H5q<yJL zOw!O>VVp91mlL!foPC4cI(r*;DAaDi&ui>a$JF@)0_GTecYcf<-IrdK4pMA-fyZmb z{`EMir1#+no-l&<;1_{2FUH(0QOIRN&}5RqYCn&he(XfPiMo@D-x+#4i0YR%jP=6L z*XhtQ323AB#B95DTP_5xJF&nUv>N$bRj7kpWYMcH&XBTzE(z#j=#%g5&AV8^fdgc_ zT#Jo=**ge4_yCJUxCgfO36=c7h|Q92^CE$97!t6>(y*-vEJm=!N+ggVgndq3$8yvE z#{OX$|C1*H2y9ssiY*eNkVYX2*jM={PZ*I@V@HDMbm~FZj4;@&eLi{m{DHx2ak+o+ zRGqHYmY|Q5OG%^4q*RHl90vyTj1Ue*GuTn)Q>qz#*X?_oAoR{3)I=UmQVkti){OrQ zwbrnuVL?FM6Ug!zd&xZU$6`6cwjk6e$ETqERrs?c4fC1r$kwlscksy}VCX)p;P4i% zb(h!ut->}=j3bWCNvF>fvp2OHs}{$7Mo+8};n`zt*bIxM)Chhj7(o$wcJt^Bjl{o? zv(!}@V$?(71<_%(Dh-0DgysV-WME;{qjgrzxiGIX27})(GCRv_|8gIf5AagPv!!Dl zJ>hTJvHnb22+r6u3%n6gGu-fv6@vE2u&)ur<Uqn?bG1<Nq5#O+y;TIc*)jZd+^bb_ zR^f~hxW~Mu;KeaB&i2F#8m=uX!1-Z9Wu0(@0*+M>dV<_Mo{B?%HVh89LS+|H!Em`n zvLjxB5!4gSmmKQVkA5>bIMM7v*J}H0YO2Fz4~t8`P{gmH8kqTreAP*u|8ym@m)D6C zeAonOkFej`L_+8R$_=|eNP_s%Me-*HGZEcNi8PJyhQNtI3wWT@xtvky&<c98-Klpg z24Nr)P?^)g(=U&4)takZGoxi4iJ~D&p7kNdp#(~{TJ1a1jq4DghQdP!UCCW`^djQv z;<7i=@qq)(4%GFO`CPF3El;b1ZoplnzQl}@Kc1RoI(kBxwH4s`M+ySBb=N|E%cSSe zyrH2wgCOePnc}ox;UP+6KXCk`4afHLOSzl`6H&cF5Yr^&6^}=hZ8}2=YDu_)BckGV z36WIl`VK-6D3<{2ljUytA1>r(B0lWf0cU;qoP-{#U>kdC62FAXw)J&guVu0OgUmq8 z9<eyu4N5_vMBN(*>~=4Q^4CiaqHkfdKM))PA<ghWL8v%9sx-48l4-5s=4rZ3cTD!H z&s@W@soI|o-cqL)>gf~?T<2>TuuBxE06H*MN<k5X;BQBI?>j+VGDa@P3i`*&TtP~z zZn)Xj_M$#o)M#Wg<Fjl7^vFe?@rN`^O%=KsQ^lF1FPoD^ZWJZ-kZ}wTLeK^Oph`ho z!JyT#RGsQ_U5niuZhJu!`;8a^KH;_6h$>pElD_BZI=L)pqN}>qqKSUqM3|eM*b)C( z1sJhk_>%e+Nx&1aBv)viDNwd+*{!N90O7XZR{@ri{-`fl2O*oAPMl1KPC(U9!O*}X zBnXAXpg|zCB@q;Y4Q9<>H$g}M8{AOH(pqsWrm=w!K<s+SBH&OY0K!H#1RM))0D(Ow z06|)mgfF+ia42>$z_tfszef76EOsRTq5lZ<+$11p(#i^HZabNI*Ujo)Ra_1wz73_n zuqd*vmggU@N_s4~+v?7~J-B?jO2zSA8Mt{2TND{H4n;PnZ?_JVKo!Sv%Ujd0p#s0& zKCjg$fS{4UA9D^Z%RF9l#e=2&7q+7e9`Q;;O|iW?HxG~i0$wv6yIyby?t|YO4>6+* z-<G7k@_GP|d01U@FR}-(t`pf>#jQ2_RJw5MYXrwh?pty}_e7mCU3G8K?w1zTRhgI& zw&V8TTa)>5YRv!vH_yjG>g7XjaX!3=r{W*)4e$Rkrc!Y{8lcd_HDHF@E)8k0A@t_D zYEE#_ma-UmF&LR!57L$+g%zP&aah-)CCn`xwy^kOvnW4<OHTwt7!vZG`zM=&^Z{Be z&kGe&Oqk1W<v9LKnX&)a6d2KbH3f~C_zHt4;2(r-x3;GWV+?>daRZr>#{R@f)qX#J zupz!ralCka-Vie$)*pk0(rQn(pO^yAK6Z~SPCA0nnZdOOG-|0Nhq=6Bhx`Kj`57P4 zmG(%@zv3KE3k@2Nf7c5g8H>QIE8vbaaHxn5vn5eGhuj*KU}FH@&vJJ$9B%%^+`k`@ zt^!sBJA~~D*g55llU0O~Q3=|PSB*EyR|%<A<^|V&L_bgE6tNvQT3fk?`A4g^g<7?( zR2OlihC?}e9?XPf>A+?!?P(d`3x>`1pvNS-khzOTM7c5t2WsCe_FLBa2Q}SyY=Pf8 z{c$}T!eM)Qx5nJOf(`X4@dv8_TUsNJ1w22~llU3<1?yIh9LIh6<YE5kG%iVN=EI5q zkFLkHeT7F)oc^_lf!z=0v~LG~W)0g{Mz8H2%k{Lk4t}SF9~paZ<dfnm=4d_p7EJb5 z7pT)T#VyZywy<U`Y?n_Dh1?1mG<7HsV!gT$5BvFAAQASE4{C!QGztkau*1V{^zm`9 z<lgV#|AGY-d4%;dY-Ir(0RQXpLfCQx97_Isw;B&XU{B6&{qR{f<klqY86j2y6FvQv zEM1K}0>0gfl0FS0J=d&Bk-iE?0yh=3aK>lvWhVR$r*o&2KXmtLox7{Ik(pQ3N4vXx zhW;d5clMZ>Ngd|A_dDLp*w!Vdee4N^wtVF7+Ssbz88W_4y!h3b2XE>atO*|7I(xQ~ zA;9&t-%)y+L5qC$@W+*u7_r4sSb*1kX*hJoji~)$IoZQ+#0LxF=z<2#zja8(j4FvY za{K`r=<2n27(@)>KrLs$kawd8`9d6UNBWUWVeHeAH~4jwon30HgW5ZS(8b#J0Q~;< z0OCdUlS$RzcsVZfPVa>8yWrTrHUpmAaZOaeQ>!3WBAQI$U#m}<v^H2Gfb{~pCzE$O z5@PikoZgkDk3Qxb>3uKoutQ+ylIVMjphAZKB)bQu)UD9)+`}t>MC9ASTK>sa(zAC? zO>pIHY*!^@DlZLu(UpsnRC$NhaQ05yR|{W}6ej|zLm#cp8fNpw79@vJ>V?=3xK=qr z)#D>3&C;UkSrHP6b&gxAwE{^U+MVSXtzqEInCci2v%Ny-S!MOjic{}6S11W$EWPdY zYWSjCu(x|4;X}n|O?wUj`-$UU%2XsO)KW1}G)np^S)lWA$yC4%VS@s|`SSBy4oveq zYp<>2dyHJu+f^>B2Ed3u&AXuEq4_xUNNbk7nfklGj`51Z+Cg}UW&o#a|C~z+O_8E_ zY_0}zypaoK4<&kJtqMCx@r)mjMZ}qni7U#V&y8TehFG%QSXBi6Jfu~luqZh$HXmV* zMYHRD*hM3?OrCCZHx1cg+Wwh$xZm64Zep|(_9SYj&PuL~ei1C@D%|^fWRQH;(%Mbz zNG7F`9ln^<|A}%kOKBYDvY63%u-}lhR*BEB4nrr*dTD<ZBPy~$71@8!_(Ci*eLLkx z|M+Ap#J~qij+J#Ss>)M&k=Mx)L4(Coum6x>gOD+4E<r9&^YuOSD~76(In9xJWMHre zy0dljFa@bGU5|9u$T!V!f$e7?r`kEyO2)gZTyv;Bhb;#?KeDGdL_E!S>W{-wM%TV0 zrseR}(Z!JTn|R&v4@x!dFOKf2JF8JY)?@#^uUh3Di3~$F%W5PW0ByvyYNNqdkAd$$ z-M{!oRNfrzJkgWEw=JJ;d|$QYp8Gdz#84sztt2pRJJ@#YC0M~G-IbXN+v>r~#_2bh zo}aF4BHDT-<BILD#Ke-ib8`wi%w_rLL%9vQBaeH|!_0#87pXE($hJW%ktY%R<rqzP z`rG?3>v)QDVPrjid$;XZWZb==s1bNO`yLmXNH@8M-v)U1Z&ZnmSJs)k**vV0`1mvZ zcrn3JB3XV?t8=%6p?g&KJ;cWSNlxtG?x+p3q-v^ZGM?;ezik+~E(CDEC#ew|9Q9r= z;up1FTRl%uV<ybC;nu<?KzAW8Q?6=}mFn(y>k3R#weIWkw{Ij8*<zkQ67*u&WQa^# z*`m@M&P<U^nr6%!;hq5y@5&d($GASQHBxqxQGZ;Ux=;anu|vS_SH@lsol}Zm>By`> zI*`q?TyZJvlSw`Rr~0d@7~yFP!rY$C7tDP)wC$g^bB<esMk^Vz6>6$i4>)DGrs3^& zDHKJukH3(0O|)QNK>}Lsr;Dk(#t+kCbR&PA6P><{q~7RXwfRoDf`4|oN4c=|)QYKo z{pHP%YZY@A^@I;{dKll+ZzXywy{Y@_dclW%v)T-W#mV@ut(vd$%fCr&R@)I7f3H7C z)xRN*IdVwX@lgi6GPc%r^C~W<U5lI{-0F{{$w%G#|GKgic?-M1%2h>ApCL0>xhE^$ zvEez=&Co48PyJoel%G_Z{?njM&8ydV%U&ahXhdmzPQqf9Glx>*6QhBj#*f@T{TIVM zd;EKBD_9`+D$Twfj0@t&!EgxvPzFrCame`8v0`FWzmCg!k`wl~WIR*Ko7;rw$V~HK z&bw0v)A?-4zH#FC7y?TER2g;LDT_k*98&7$smvc?4hVBnuBSi3>2Vc5&#COK%Ab`L zAq^aCN3k|kTi9<+dGUP7;lvqqwf?;TTsO#fe}42&FE*v%&&_LDgzpJp_C|S_e{0~{ zs0(L<Bjo_mk5gn!^Q|P!CFIAsNMb6T)5Y+jPrI8HXbk5pr>1A_xqFUM9nHNmlhh1m z>j{(!{^5t~1RngR4qPMBrGCYDigMqRXMA{9@QL=Y{-e)TC~T4^jFFEaHa>pxh(}4T z46d5Tj6+}FfBac|HyH`g;9vt(i`i{bmmu_?m?u6C!-gyvHWcm?kKv$^ASmQN3Eh7} zS&NoFmQ#zpZJr4m9<jL~HXTcjAi%~)G8i@j{wG7+ZpG$`5O6F8UBjm<o+D>5I>A2K z={mp9S1J{0t{8W<DX#J?Zc`Lni#cJ!`68_}B!-?)0p1+a4ZSr0-sK$9VT&NC^C8^Q z(zt!au02DpcolX4g;Ba{YP*l{CknOBSq60+5ZZ5^EPp!~`)ZsZ4#F5Z7hRIg`8(nC z9$(y_CtO#SC5W?hD>_&TmsLItNDPq;X49a@%A_(6Q*unCjB3-WMT>KPyFZkNd^q~3 z$+cWF&)nFBl?#2BWQw|;p=Miz_QW29%{G7Nz^qkMv>0*r#zio6jSUP&jg)Ht$>l2C z%4rhAW9*f^FppC|Qc-hkN5~{a7v~If3OU|(6@P?0wi=vVR{?hH0kOJ<&3!fV%TesA z*aRJG^wNAP&Y>s%dRkQRp0rCohpUh4OE5Oo>inA|bR^JY`~8Olk!`Gi;4o&C9$nL! zr$2c(u$M`V?upsF+kN1kn-owKN}`09vE|EIV1<2Ey(?&T8yM~SJLEguW1?J@q$Enx zB#4gbFRACYd0|iB6#oQDgD5m+%bW3v7@^ool$$8|_ZW0Cdl;!OW^(&P*EHJPB46@^ z8bZrH)fha;h$sDv^|MdYPisA~kQB+to&d3-s3}||Fz>`_TstJo^+p?bW|Clur+zF` z*D$m9iUo5Q=l#35p7Xh-$s|bUQ>m?~66!!`k@t)IufMD=DX@}mOmO9Or=vS`=(S>o zm4{A-Io;h9%Zh-x!8_!ue!X)0`hgXs@5Ee|xA4>1R;MxHZjBM76C4UT6Bp4D<IdO; zLqC@&+s&n#9a-D5d&`2zmLq&Ls}HqaEfPy*FX<)4t{%tW!sl2>3Vtkm5Q=r(ec5rG zEPC^->741CtoQZHSxL5i4`fLH!PPrDxv{$(rcN=_XKtdkI;>_<$wo!m{iiPl{)hZL zPSM~z&76P%>!)yG4DSR+nVq!ih~TW9l|iQ&>+4Rp`JLqxum2zin+SqZop9h#?Ai{3 zoQ;oTfrCUx`BOhI{L4)C;C9>e!oD+kwJBq6p~T*1&Eyhi-{!u>En;f8Y(IS}-gjQt zxD3+ir-oo5_Cmh%`sxt;_Ng!ZP58(`2on31)(r7Mq~GFXL&V$X8N|16n;{f_)YLqn zd>Lc|zZKdA;j1l7nzqYJ_TO$EaJGZ5mah_;Hn9u`Ng>F`*u3*4_QYfQGz{-QfJf^C z2wULK0`9)eQc|=nvm$Wt(v+D65rsyDQLA~=)<<{Vq#<XzzuoYoFOy?xqh@$A0K`lP zIF=hha&r}H{!;#v8+oV4rH@~FcNx77b}J-Pe98-<jTN~yPbME}UiW!>xu$IehMpk1 z*<a?ZpzK_5!N)=W`St3yTj332jRRsxN{ryPdLzSUuD59ypME8|c54KXycHb3kZfR@ z{Gk(Uk$rk3#BA}`!jR~t(X6Ok%JTb9pAxxvOE%Vj=a2vGKb;TS_`uC%fpeR=U;cv( zs$NwNH(r_mhwht6E%AQ|&;E8jI?6q(5xSZ<h&cO|ha~xijN!csK|0QOq9^tfj#x1- z?~f?}Mx;=gIOJss?ta^q-;+ou^S4rOWuCF#@A!NzIUMhMwoZlL(|@)1Q|5_*$Lanq z-StBk9pUYFFXUtQ&VF4oA8%WVy}V1*Tp;nBDjTD$09jOgZi!T4vCYC<T)T-qe`Rf7 zSt&Jjch#B4rI~Nz*W37HQO#tT#PzTreAXX0d>B7x8M=L)EREWMSmU=<XakLP+l&EA zWprC|3;$Yp#P=VIinRVjQD~F(;o4G3<RJQ>xr}~so~FU(jE4TdkbG9&#rV0zY9eUc z-mr%7<r*3MP98rh%%v96;1{*sITtY81QDLwocE$MtVb=8WY>{>Se1k65~rg07VDZ~ z4hCvifCHnvPujrn6?EU}lMwhN3oRpD?Pv?1-I%ejm4YR9R48TaCDXf_-|<gzgundz zof&=u&7}+Vm+In689h?M+OVd9d}nvvi_d;o^=p{LN9KoA2CMos%CF$pLJ2jbJc+q# zdb|78rP*`y@y5T?0vC`)4Sgvx4Exg#!G}OmwWo)I%E9CuRlT}Z<;)xn#sO|j`_I~o z472V^y_)KeY<+6{tM>wchjS2_!PVHJb4u`XN3j(edW-yu;H(2M{<6C}CMnVlmz^3j zeV?$+1JAZ$ih(~6A4(24oPXR24YUDj*iulEgl+w^`uBaxQ+c?s(;f6nDs9&Y&mzAq zD6e>>MVAvHGqrER<gy+Bc-I_%moc3t3l*SdC#KGuT$?#&9N8{G8MW>rbM_>+!bHy3 zy=Ceu{eM+n@B+n3%Y*p8`{-f?T<7m?T@!>8{{EwZ?EnYj-u0mX01|}&z^D}fX3qGu zHa^9EP9o^^=R|-Nkf-y%kcC#>-2PynHDemwg%7znV4qF04%Se^jWCqVY4@vV2=fAF z$UYmn8n0N$Zrac*Ap}O1St%rm1vrV@G7w5Z0obD-j5!q)3SKaQ1Y#cn00M!q{?8>4 zg+jsM@bLe=z~NYy|Ca>+zr6nuVFj=(|0CWsS^tsB*pqWJJ3d6|1xxsVEej1i{H_`m ze(v>6ldqd@dhx{6PFn41U+rqf?~1kU2z7r4CSJQopAl*b3M`l%ZJ>bz-tjS%g!rO4 zfL84u+Sz$xKJ5AZi~c{ZEl-l}c+-d06-|yWUgaS<DIjP0&><6V#d~Ettc(lv&S_V4 zm_^=7FIls)K>u)9%7e3vD?=ggCjLcX$f<jWcA)Lf-a)0GKlgwSlAHkThuydC=xQuS zUlKBs*WcmG`pA16iJ*8JiexWfMmS90(4n8#RG=Oq;1~53)hE0c3IlmB{F$(VPa#=O z>r!`4WkoR4pELm8$@5X#&S?130Wka376?JQL+)h{N4_&Np`DldzLp^pNJBkaacwR# z_8a!bYayESfc2-%^KVICnYP7vFu4i7_vZd7zxII*K_}A^B+6q&@bEU2J?}XUm39Fi zgVTw&RQ{<<Dnk?^Kk@tuO=BtZ!%WQmj*(LF^p_Q2GYOlD(E%#(XDfT!ayV2D1-T#b zN~<)t;KaU*HYBUp!D2mlNe%N|$!@8azJlA*FWkZYphJ(v0iF?k8iy+^O<Idj5v>T! zhaz2lVA(RD(+iP%PY|U9Uk_>rG7Y9XeygWA+qHou+F@HD_SAbEZiUKuBfOQ>FbLIk z50aCaPAjtO{nU$<Ty&=HY)4f}S49@jkwHLI<Fjl1b=5?qwHvwCOOwrFsaMWhRXBye zrN*0-SQsZn;zkgb^{e(=TN-$G)0Pf~aY8e9)9~4o*sR_$O1yvL;UcbVu{qduJvBVX zao~_bK{09j7?d711AV80b(CbZxAY4+A2ue#-apleqjdQr)$ZGUXR~#Nko7|5`^<&k z6oV{G`iys0C8sT)-T5*;TgzkGW+GG;s6`uom~XAvX7CBS2;vyq`+cHV;pq<@!p2E< zBR7BME4{!c9i&9>BeyoqRq;;F2g<%%@(3g!im$y?k;(bf;1WOC<>ndpwfR+4Y`}7q z_Cm!#U&&tcSlKh5jv!d-N=@+ZHV;ljLIvzT+00C7AF8LZRy;NP)5G(;&qbd8G=U^{ z(31Q{c2_UHqA~bBqF8@wBVspalrin}9xa#vw)+)C`ke8Vur=~AZ!2Os^AX<IFJTe! z-pBsBdBZP$ddu%iT8*p1Sc&G!spqkS_|biriK3`ceK{mc36O$EKVaA5dkJMF?;bye zdP00QCrl#$h2LXX8BCEOXwA%~g_$&0-b*TTq3bm?YJ<iMf1NY^h3IXw#~mg_Klbi} z4jHq>MUsifyqEI!u<~NMQUWf!hP!@Yh#C7g_|yj(55K?^IhO|SLiZV+0OE&IX8;EO zRj;rp?2YI#2aZFJ023pW#Gk;i=+4<Ln-n{OZQ_roqs$$();~`^g7H4suGNN1v8($< zYM*8xt#>jP3wKBubz~JTGQ<+I5gl<v?OVqTvZ#(6G_qrjvXSk~isJaZJbcRRPA8mA znLxhUi@H|A@R{DB-t!XKt+e%rk9;5Bp;Ox0_!%ri7lQm@L#)JrpDXsqfcxPirPJd$ zbmf=;_*(`49kqtHBtpw=_>097|E!dMit>cZkgKt+&VucLTdS7!XcE}Hss+G_oIDXf z@gLWwFiOYu&Q{XkO(^MLN(I667`Fz)Z=R?ufc0@HKUlgT=aUxAFn~^L^I%8pN3bK% z7>S+U{P^n*J-HwWy<ag>8SlpQ{?A;AV5lKh(dGI_-P`gd$|HR~kwT(Qy8$tpICL3F zq_f4JXgi_%{;*atRCQ`T(NaMizVIO<T2!34^!cCy-&`K$%w(30{-<{z`vku2#OfqB z8@Hz!K1&~bBf}FRwQ4`Uo}#H%PKCcjks*TaF>dlZUYTo<NPT!t|A@AU9#s0IIEW%$ z1R=~4i-k`dT505p<Uk~3!fDf|3n`v4U$!>X#wMCpY&m@}phVkwD2MajvTg!NtHyci zyygkBrZcgDz96Hw5cB#iHKeyhS&8&n_lhM9(E8&c+VSWp$b3M5<Wr&^^zc4^8wT08 zaNiyfGJOUt^-5R#Yg2DJq-c@ea=Cadj4AUY&9wzywY+E$b&mI)Akm9Z15T3-f?D6P zydeT0>znT+jJwo^PNYlI9f1Y%SpM?7H}riBJtVsRh*+j4aalX~!M(-V;5+P8vrRUP zp;9VGqCfYxEq1&cNIeQYJOo5*gO7hM!a^yiJywflQeLwo2>Mfyx>k8ftW8&|bEc`< zgR0T?kJuzXORaH<U?`&ZWwG;t(&{Ias*Y5h=MEr630h7M*nRt34bzv*^ybUpmnnJ1 z*Ef}@A8jSc)0`@3ks*fo;S*7P6mv9Ji4Mqs2AXnsJr+f)==umJ?9F<XK!s1g#}p>| zGX5<8O~0A$8MP6C@ul`vV|G1C$JZ&4kO!!L+hlOyH12X3yvC!JabSwI6;BF>_^Z(3 zL27kwF_?TevtmUJsFkp<I9LmN>~gv3@O3cT;cA*FID9i1eG5NbVT5=f<Ff5RiD9!` zOnvmYol}cIs)d3qN#|sJ#xm3$&-BT_3z06$#pR9f46px<=hnEFb`HWEj$p2{m&c~9 z`hDE@>Hbj$fNk|WvD=EfdX`BWYJeY1T77wKk+aOZ9<PVGfUTE?lFzX3oJo_bucdrS zymL2_;We;rVj1tQvf)hZ{qK?@Pi?1?ftW9iXji0)0YA9agB5f4m(zXR0}`m>f95;( zlf<m4?^JC8UDbII5w!n-tK$FH)?3F#@r7^0yUPMgFDcE^f^>rjL$}f$(jg#?q%5F- zfGi=PGy>8ojg)jFAuT0HcSt_#@B2LO=XpQxJAcfnIdjgOIdPwR?&}(Q^peAhVd?Az zT4p(Ooi?<H)`{?DqmB8vTQ*G(QvWaoRH}-uH+9kamuXxX=WS&P!^yCN-))^@Et5|H zhs{|uQgkf@6rsV|ewKx);K_J^GVa@M1}n;N2%7|~rQ|P?6U4{UZ&H@AtwiPn3dv`j zdhr!AZu)bT9l%j9<*)oKJ#qA14KsSidkPH&125z1UmtJ8&XV00&RnEqE)_dWa7p>& zhHb6@2(sAfa1QB*rw?3PTxfiN#X3m}7>4}!SLbU?q2B<?#JNI)j2TP?d$^2`_IIQA z3n-cw&>~41e{N)6%gY9{+QhZlp)Z_6u|raS-Tm(-$KrJ?Aa6FQMI|qD0&LF3uSy-u zdr%)3kRuq33ZKce@Q^na2xMT)<A>*)IrNWPHb1=$3h`NOz#S{ihAT6oM&U39#T|+B zO-smQH}j8ivs$~AKBe>-B?AjQP;J<{4)lk(o9{Vx=rekV&^=%OOA(mcg+MJHk_;k# z^L!aQ8}otz#_zyQbI$x{y%fvb&W8~ti@?Nu1K=Xb$jBfZ=&q%y3CsIWB>VrQ!1B<w z_$RFWzf%6ovdqAU@<(|T8i8KYoL9(vrL~ZfZFU@yibe}<&%mtsXrT^w9he9ni7ss6 zlV?QziUt~vK_K&~%K#mVvr%sbxxe%lJTf;utPSsju%w$KBvqDaoNsjUm`9Feu)AF6 zFI>%+wZ(CH(Lfg1x&;%wHAF`*pVnpV#<%k7t^_AM_*?Bb^R-a$J3v`h*dUAMbEk<S zML*c7+2;gbJD4z-@x3hKo)GzPhNh*<@@n{BhO-`cn-s?18%icrOUB$%lOMWgz5#;S z(Q?EdeO5YgJmCK=X0`Frs^lT+3%*>CMJH#(h5xu2b=jfkqgaD#B8}mOKbgH@)mx_v zZ#qr{L}F0hvQ$%e$Yn~ZGT?(X>0FYiwn%B~#b3?IDRmoz%EI3B8QtzOI~(q>$2Oe+ zTef)Nj?E)u5*BEOOTqxPxZ67jlE_~xC%^TD;qPzz|AfCM-zjM$p+BBTu%%qORV1dd zztH?UZjO7WBgQaRVJ<?pgMJqlGKhL&GPy&?eF)M)d7j#X0F1Qka@CJa<EMlfiqTnM zCSI;oF*3I=DN2pe2aZb6d|CjEs}dbmdf47WwQa36^Rr|Vpg>v+eZ*5j(AdXa_D+MD zOY1mFoWzbhUN*inw=l2Rin=DLYxm=?CX+6q9B~jxtdhyxWq%zmO{Qg_bFV#nTqa$e zyNYXOsm$+>-y+FwSWI`DmHlus{`D4%c;rxUAL-8Y)i*1vw;y`B6(o9;+K%~r_u3U+ z{S1vdb7y=>_d-9FBRY9WSN&nz)Jmm6=!ySHLd}3x>(dM&XYYin_8!mwBj9zWAFEal zT!Eu89P8*JLTSX?(3rETw-PU`JL=*zl2{rVEzukgvyRj~SZ%eX(|k|7siaY5NHuJG z`MM{#7N0Zyed#{(lluORuNk?#)5TD+41`De787RnV<1^XD@ws1=L1YT$HWEX5ni(B zp%Dm1cKInfxZIeeiX9Y)?3p2aSYS(Ww7!eIvE#=<ITH<EALT;29q{J2KPrl1UD%rh zX4xE)?~5ZH(gnk^Cdj%}K9KggKm3!*)2>`JMG57SNeJg?ahB{SCL$$MckDHGe_3Vi z^|C?-=t+$pZe@o=-SXk4dy5QdEPN-@`ei%!{5T&gp)(Z*_4?tXfVi<C*Z^!^K1Hxd z4g$xd+OWLkEOvOS(N&t=WAlW1lkHI7+7z>=ij)>RuNq`XTfaCdh6SvUVpSM*!bsJ0 zWzdU^SzfG}`0!9V@Ki2B$kCJZ15IhLGw6|}`inF%Hbl7s+nBII*plZT3}iN31etex zc0?z`FJ_BSw1I~H)jmB`N7%p66rWAQ&I;e8QV#x~R#L&zro*ur=22NHnUbjFUYcU+ zGJ84w{nHa(#-4bz7-bS12&pV?o@-{fW?5x|IF^|~^zG-<n_T4)59B6VPhqX|1xvnF zdyv0>8X{WM=goyn(ZXC*f09WGD0)?!aaODkC;YtFbq&`JX9ii|fR^AoY_Y0Ik<V#d z#{!s8iNa(O)uKdFIHQ87-Ej1Db_s!u^R+O-xv(TY`wjq=Y@0rN`swnp;u&O3q&RbG z@Ws~(ncxaVDo0~dq}PZ^xMP~zdOFgSfE6O67BRvh(pY}+i4MlHK`3PLrrI#cc~_2? zRig~-=3_(z4K>nbm`MG*b=(Cv#dy`c6(<Ovkc7#b!~14G<+Z4s2cy?&cJx%*@c`Zj z5|o=P*&>88#bj+CiVp(*F9R~QL6jp@eaaesZ+|>p8s|zaB*Oo?tPD+{&~|(;nnH!{ zF2u02sUJk87oU&653*G|K+5CC{su>UED$PRs_e|gypn~67DY!|QMKAFlc-13-8{$2 zy>*j8znC%X>Whf~1g>Q~9C^y0UxcsCH=!i<Y~)(8*}GsOf^2?n6a+i`oQhrRDI$GM z)-HD&8h20~G=R#E1T<|yUs&>6i6ln>^S2~Ol>N06&2%aO$3u3M4P;<##+8OEIWIZg zl2Ad{YyW)&R;mMRO05$~BnWS)(e-=!SjU73RU=%OzWWUgPf0ntJqb@bKo24UB;S?` z!_twsBU+8KxHE$kK+!BU{e?WTCh#DVBIxMtINQKZmm^^po>CX?vtOB3OBXdu7^gO{ zg?gj`M`B(p$Qk)LQxT~+g-0hj_7Is^clr^K;A1<41LRX$W|kKZg~3mWCNjMrHoJ?D zkh&w;<vnve669qntg*^O?-+;k*;~KhLsu=BhgRa?js7{kBfB;PSE$)E>1g&9=QsRP zmdCe8;V|KUJx2)#T0(7Sgnzk}kJb5LCNDi>SO7Kc&)vItC9EC&)5F7^N40YB$<U*= zKK>zme_ZS5@gA7hx~AfW>kcvsR8RXk0@=_M0>T5c5i0%ml`A!SR@VhIUj=CVH4qr> zkuMYI1W^u~TuK;tM5HtCWk$lA*ot!1V3>AE1G5H@B41e78#@QGGp|v!phn}eRr*Vp zZha<SVhZpPeB0;6FLyF;6<g)vabiQjIl8Ct{7_3wTVyx7w&$XkR3OX+z2e_|hkBIY zgF=d)D(F^0LK1h-HsGJ9MUbG7HNMIAtt#e+wt3G2U}Wdoupoz=TQm_sp*MS!<3K7= zP1`S>WW^n`?JUpQy=z>SU$%d}L|aNPk0e{3UwvG<YdjZPD5O47G5Z>Ks}ol<Ixj^a z`dt53>EKw(19*3Mc(s{Yymr_?S3l&NyP=VSLDCywtj*Al*6e!0dYu}00{XvG(o6qJ zN!(tkm7ZMl1Kwr5{K7Z#Yq7FqwqF0h;_B$`)sxoI@v(4=moIxy$oq<(#4@KT{+-Fp zoDdp{{!G=2it|OWzh3w&l>MddHPH!;K;Hf&40g|kFw%OPR9yX#SNIltq>Jn%x#qR5 zBdoJqWKGA?z1J^ds`J;BOEP`0p`G6Zs{;K*g!QB1qzHb=OgxS^-5HzTdL=)##7Qa* zH)P#>sv#zu(6>AfG?n}`xR&wku6t85Ku-2I307M?K2#n604Vf-95@`UOap_7;c)o> zIA}#3+WVg$j;bI*{W&PCHq-O^Q9*-ZyX3U4kzLEP5JlLY>h;)l|4?aD1*#ozI`uIP z_)4(zl<yvdyA*4$q+4(xj6Rmi%;cg>+e;syN+bCV-&AtzMUG!tPlednl9D>BICDu) z<3{?S$&}!5004o}ylMaAK%tkbVD~hp!w01RD1{GAssw?+VE@}eApYs|{+&Vhe!%uV zi0|iA7G7WZ&iNVPbGu*O&Cj5DQoF<CZkDeLUt-yOVQ9}ih**pb3EVlwFswUph34(6 zlej4uyrzZY!Iz7JF5Cga)_aJl4udPSiwtal^WVMEB}V>NE&|d1(r2h#NsBV3)7)je zIELY21HzpagK-Dd{^s=lzKZT@yJe3DC!9(kK7A8{tovdSfk6z0fPfGL0Qv`||A(Is zLBr_(1<{ClbOPuf+WsHt9)z|y|1W_V51tY)%Vo-QG{|;ac-U3hP)<q6-k<MadBy%A zS5%N*I^z~!k}6-@QowhMk9v;o>+@(|7onE!9%96Vc2ENDrtx75iNXVl5xsnj$E`yO zq)D!~%hPFTPG-Uudd>9azo$!j)p5mj-;bEidcQ6i%GA)^`*XO!wcvwY<#>?(c;59@ zbSyKFj==x^(}Xy9c@|tf)KXAnUy_B3${WqCiTcwh)m>e?%}POMv~+y`EyrV)1QC?v za`RrimGL7#ChWle0#vlBS+nolyuvN=4pcR)3jQ&0g4I`F<A@LUzVi=pZly$+5`nEI z=_COO!8y>Zd9^6rBroG_i`~YTzT|yZ-YcFHkD=<YZ<$^ZNgGP#qwlaz5QA2Jzxw<0 zrR>Q`{0tob%wA=t(&oVfw(VuDNqspy)90;?x^tBD(y)6wkxCIywkBhpa$em&%n#7s zJ*%I;%2E>HEuq7PUD)z53VVLlPbnSp&R9kq)OdwP56Crrg*ukXoGU6kRX%$)z6V+v zsn7BKS-_AiVqox6y6kaWkjt}Dp1l5{_p`H0go7Ywe)iMTzg*eZ=a_1hTnArV*j<*A zL5wBFY}GD5XRRdD=qaoxq+f?P$AH8aC$Vd*D=hNji~IA>?yf!*Qr|H<_-G4nNGTW> z8an2GWg#yfc-I5>y3SbYC(W4WloDRU)=SA#sr}K|oAq!|TlAiL$X)TgO>#JFEhS!x zMTqqqm(t?0dOnekgaQ3S8UMSo?1x{kuWYW$m17mv@Law72NV~T^CkB1#BT@7YPs0U z<vMmr+&CNIZmBQm75ZYLqVbcA`mXL7Xm*4?Nhz^99a3<Ia;t4ll_^q)Tbnw;;lX|k zw1b8*a^vF~;2h7uh~;oRqz<{E+0cBYF|+<B_dYq5jpjB1x9oWB>{PLo7b?c4X*6$D zYKWi7v77p)m4?_9sygHEVQI$9;ulb^a2z;dGwIDX(Tim_|KXJz_VvM7_{oG{-WSDZ z{rmLFbu(^sJYoJp(3I_s2!2p8BPN%FL4P_^rNB@Z$Qb;Jb7K(Sew?5{w(`K9#-4@v z?M9dyRDSj5T!|x^G_6$t(mBA&OW<u95yeX{|NV1Aj%`!8?fWOU8kSrt$5UPSa|$pE zZ=rT<1>T2<IY0GHF6xsF2T5}H!TX6`qXSLTJ!oW96vkr6cso*2H6OA{`MJ?DRVX@y zI|KFmWV*RDBu|(1TT9L&;vIk53K{d(fdh6Z?F$R@F*B9k2@fY|o??DOL}nQ~bYK}T zlNJv}Rf0RJ#%-Csdu=*E?PByuA8>MexuWA$-wM%)<9r&nf40okMB3Q%X{lFYkqOa9 zSTsl0P{=Rp(<URaMe?k%%U|cP%`IS#4~w6ne3)52G*^!dzD8?n;$@*3wcQjVf5}!w zQsYM}9y~*qK)GYT3^3=T=#C)?>+~-Lgqb?XGFEHc_bTXev6xWBmtjLfdvE`H5h||@ z>=8Q8TcRPI7i74RNg@+Hh19}0AWw2yX8Xgxr*h9T1|c7}=OCOf-atB)k<GHA=4*-W zPF@w*_7;{XlBl<7CQz1yCueW4jI4Fn`AmNZ^qvR7L3#F=&^O?!__kOqaR@nXr2Bg_ zrN!3fMb;3bo5fDtNW;#}$a!256KOnbYK{-Pz<G?}qK#A6fTM&8ZbR$2plhmZv6bvw zAB=}R&TqA2^4cl{QL=b2bI-K<XnDXq{U9%8Z{@Q)4--pb6vS1t_QT7xF~VSmm|oA= zxoaOm4U~|6ObAN3Rzb9VQQ31b+@0F%q{9|7{JcuG`IrLS!O7^C3W-)XaNm28BAL`+ zLpselR+#jFI!0kLHnt#U{~?;lu<p;}%+|P+JMv`Hq7pT=+qp!>#mxo!H}{fa2S(Bu z|5e;4Mr(21NnVmXV~9m0CZkPNP`5igCImm5vW7~XKjALZ2cZwh{)|u~()!+b%-btB z`KoyR6NVuKugmB`<@x@Pt5$=~t2Jno6H6@l>6j(`B0Ng&1$)dy_KP7x64X>IBs8UC zT>Pw?m$jh7-xg|fDoV3%e(jUnGWL9T2oJ^?5l;r+Gi_;YG`j>8GMPn6c{YlCM<Osr zNX|MMUq~DMpB6rbSbhHrvD*4N0E6|~6*djv^}*4-x8q;$eTB{Baua;0#EiJC7Vido zxKgl9H_|D`?*iqDPp)xP*c0Y({ZDf{NTbUwiPnVvP}kJMV4~yoxXQ17JW1EFSl4Yj zuWucK!7jLOjGkAtj4ikMAoP5&Wj6)<SZyjIt@iQrs_*Wv;Vu|)Zv9s)-$k@J+c5l8 zTm^)!e!P8}p7a2&HnsB@#Yko?@|{ER$FDuY@V`E!xUeslU!U-02b#Ff93%&p1m(vI z>5o~9Bl{vv4Yn!0(y7g?&qcsTwq97~D_2b+&pm_cT2pQRqNxgjulyM?A%D{2pZCR^ zJMa;XWFa+u9wK_ggApIX(r#xB$ELbVjO00Iojv3_u6{2g^5H~;+=tj3L$L&cud!sQ zt+mYo?P4a)o0o|Ni@-bgA>dv7=|wXd!m_x~U9a<W?F6&i%k(;9dHs<NK>q>bVFI5I zCrd54j$>sWT(pDst;-V*o{lZCUU`GGZ(2YXmAZ64m)LtrKXU`0{#?k?l~rTDvElG| zwY$n79{Z@)vWxVZg2q#Vw{bBcAr~ua^<<H+|Iof%55SpJ4K!XX4`+L3jc>w=0OI>8 z#m30;L#g6<V38H8+LNMxsln(;_9htLQ-)mXiyxR#52;bS^c(bU%Na`tJ#^;jBH?y5 zH)8Df*wtq)zjgu@-q#NP=Kc9uHm%jD{8=cHV>y)QYv}c@N6?{*Wqcm_iv3Sr76pdy zS7UVHFGuQ!i|}?Zh^`Es(-Ty5nB-i}dkj)_Uj7-h@EQJA;~B8c<~FTfRXUWQ@HC27 zzXXq15o7%L4^e>q*9A60%rU7CPu<)GDH14}=^}OwZGU)UONZRu_fmMpAM{zjT;Fe4 z`{7A%74?FJYn>E~^_R2O=3;5{h<ValB~c;oa6^0wa;qf84R<{Ka*NVJLO%>{a*|fS zSe+MZgQ{Yk<4(3!^@+}{Dh!&xFEUDA@%#=AI{6`d{IY55Mg;4lj?4Om{Y-|y-=w`@ zQAhb}Rc2io13H75*hgv0@QnnX0t?h&bE?mk3AwVd?irw$CoK*+k}llYVS)E8_HdVV z;@SG2mbR%1IeILFybPv=3@F|2e|}PwuUyt#InYX5l9Y(y!dSw!&{Jzm;<{;7B27AJ z#f<r*X)p1F_@(G#YSL@b*~%7m0pTyWHZz5lJPLJVWz{o=7S;Mitk-m!{bNc>q(lKF z-UDfKOycY)mig<&LI@7$g#o#O4tTD~_1kcc%CFZyr)rbWW#)Nj=t6xs+DK!i_f{aT zjdoA#;`c|hAFJFp$4#&jl6sLx9DP)!F>=CbG7Ee#@yyfj!Nk+oX%Lm@CXrgry!)Lf zMq;&tKy#x%xu^gfc`iwwZuVN$gVJlEnFifNwV->gD&j(egW4e*)$Jz>zAEi62y#pc z9Tn81rY5PMj*?MM{5jfjG+UCoa__OZa^g1bZOjl5mwOy<_mm>1#3|!bFeZmsE`w=f z^w!2w0pKwn@sUfL#Z&%#|4b8k=v5L1l!u5h_uX)q?doG{PuBkV-bRMTI-x;_B+PKC z*M(B1oJxp)5vYgA$t5}kW54LUe*8v@y98CuUOf|8h989=#b&Mzh?VtdsF3(CIc{?B ziQKW5i+1@TMPbB|AITCXa?#dvdPp+=4LLq0Qe!d@vV{{)=M`Aa7DxHs5(HOH0=g)3 zV|0}e!rZtafE9EVo6b?YVG?bz2OzW{{J~>dmsv^t|3VMm1L_?xC<tl#ilmlM5y4|C z7KP4|%d_^$KUWo(my~A>ZAb<~a@`sc>8z`mHx7YBy+8<5YF71*t!ckI6b%8h!mO4w z?cv7i5yC)&C`n#FzK@jBihTU9A~8VtXsr}sI1M_`mmepTbW*qwh4(K@E?0EwCY98F zNhEfQ=}4&kA*jp!WI}>vb2c+AnQ3Q;JS(Waix(vN2=%IZBgXu$=`HZ}kS^fCvM)vC z@s1LL3Ia|I1C}a0F6@u;#bXqfZWaSIz5z=rzy@M^$bESWZW!qFY4j<gwKPzDA&4^} z!tUWKWob$8J*RFzvyfkAh&X}h{MmV=nSUy*(jp3&UbHms@V?jkMUIte)>DS+4-kp? z$l<-;UiRoRtRlw-8)HZgk)e|4EUgjRHW+d6%071Jz?daEHjUTYrJ3>g=sGIoQQpqr zIH|S7JQ3AqZq))qod;5cA!S!A9Gsd0+?-z6eKIv_y<W5UsB8bCWSmq^KA8?XCM#k7 zON|yn`?8Q!bmy+2=kUh{4EkIVGR}K7@}(PkrybK$P85G7rpdY_Z9+V_c+q-Fb+OIH zlG2V1h44uu`+Ngk)bzf8c1eqWK%@8`5+rU`KW>B&4HCDx>KQ-FCzGmFK!DKu@H*Zz zf&IC;kre@Iabh<ss&}c-YM+tHMKmtxQce*uMaD;R2t}Lx#{f54(KN`fegbIA&<$Sr z`1igZYVk+8nW;=BCU3xW$QYTFV9^W=4q{k)7BlMTnMKn|xbQ02p0u%DKw(Z2{|~Io zY)NDBxRqA0nUT3yI0q;g`Y!lP9FiIjyj8bPo6`B|r6~EMw6(?XZ)0zC^vu=6Y-V`l z<Aa@TllwAWvx3*j!Vo0>U6o5B5q;I$Z}@x+$Viz|VI%v6>IaW22Y)Nu3g!hAiQxZP z6!fKetf?_LongTYS5COKb`kdvZ*&4}_y{iE3QP@IHBRc#C5*RoEMX0%46+j8gHua@ zRU^*}To6R&AN~;uYCm8`1&kPj&~Og`JucCffd6^X04X%Y>3?GX^P+dMId9NWXcvq& zm_=tsU;Cd|lof7g3kk_0SB{^M2f4j%xqOMt!*qdy>>vIhg;>HMpehXbZwsHj22u1z zdQD6h+x|!_jFq3V#yKbGp7&_OX}{yq8^r?m!HW|MCA{B`fAgd8FyucdkwDv1Hw+aa z^13Xrknx+s<5`fF?Yzhh1;+D2r@6YJH87Lz6g~KPVVMUndas?T5b|%Ijox0P1OI=l zb|LHp@Na@tApBh~;}EhQXA77C2!q$e`dv6^d^Xt%409HILW58!;2;YjmUy%Q>2kXR z@wvXRgUHjogCaWrY=LIoL16evfG8b;strxU>Bm0-?tJ|L9H~tOhAiu&%S3PY!T)&k zfRO*E8vi?r5opcI&BnUC16L1J3lJ6QowK)PO{KZ87ue|DVLJKM^v=w;s%NI}xmIL~ zKltPH#%bQbPr|lZ8<#GbyA|-*qROX`Un0Z9usJXly}S5%6YTWZ{o1(oyTa4*VS6&; z--Bh|?ta-W+Jehuv%egV=2Py=#yT2Be#bB~jw$DaRrf<MyA#y5Y=a~@lmq?mG^)6O z$^OPx|5qV}au!cyLM{&+7>o37msr{VBpkc40P7kO<Y;|0KHMn#d5ozl*Up-X%<2R) z(E1P%nQm=9M}nDx%|r5ZIu<C>0VaJs$ohtr$|yS!vcM1699Xz?$?lw8DlyVco-+J2 zPVwWUdPFe$^My1`qp`e+>UDvT&1+?YkJ--ovln;_9QE<W3I|MUof9&KXc~ws92Q#6 zQP>x9A~;8yX7D~vxAD%aXN}P)_cyvs`VeVzk#He4RW|F-V3P8!PaqW-yeR(#HceTu zCxf}#y_Ttjm+E#vW$X7T_m!W1NqcvTM{>XLDYlnyFrJpvlv|4VoXk4hwzdk5THku< zx9-@A1YFN@^3qtoysx%bC~^M|z}H{IsWEcXVqJ?}S4N%PXBk!~j__qrCrX+S5qtR9 z8$4bsa)iHo=}bG_OZ~2CQM&>jGIUI+D&_R(y@>Cq?GqL_E6P;n{%9|6ZMFK2s13NB zn#OOOT>V}CG?OYaMFHf|P85;9AbudFpWCPDzMZSGlApaouWJZ0$KnJgI|6oqz^fli zD1(CWS|Ah4<2gdYF8Jv$&&;e_60XqYygTBWtX^WUd}^|Lx~J<SY&ChPHMy9>%Pn>x z_;4(<$Mte%Z-VzIgH9&%>4)d4XI|U_wBrW-Y8b&6?~bXdy?dXfs<jowtdXWv5z6np zBaP=T7N0zqN`72V9qBrD=|fOXXwJFTX?4#qQI0$vy{Azob-Sf?(~!0^9qISPsH$Q_ z5FqO}B*nNkBo4G@dp||4VpSKE=5*q{dN@PG=^Qn(v6oXEb|HdMwI%BOvTqbq{Z_kg z0wBbfe-lWgfqd&T4^&<$jcIK;sgRi`O@1h&3i0Mm2UzMc({;+p_&kkD2eW!Bv&yfG z5Xng*B9*4rojHirI-jV-2oarhNP!etl`?j&H*eHNC1X2=1>bLjcYW2CVCuiL50cN? znil{jayLGl5D7m!gnlv@j3kJwJUCjiRh(vh=!y{I<W=c8rq6spBP(GLv1Ee1I$<AB zNXYd@l3;xX5F3yf`^vGe#LBEV(3leW%NB2*QA=50Wp!<>u3a%xN75{6yz>(tIW$ZM z>jGBM7VeKAY1d(s!%=vnTtUKpJf;~5#X^71po^TQ!;X?>HYZpQ1(u|OSI_uyb{Z;Y z?tc>Gkt8mi-UI29mV<*#A*@RzX+5pquWhrlw@Jw8I6pG;&fJ@pkywfA7t8IJVa#Sp z5$ACHt6U#&*%KmMtvuZ=z1yr1$&|>gp!56dUF4G^R$_28?u_0$TK#DIoB2+Hs6JgS z+2=ReKQy~ACcoy=iE+8ty=E4FR1t^QTN5snQu!WF?drbg0nEc_Jeejk<%6%mC#lsD z3mKX5oa4Nf2Gu{@4ar5{%iopWZq+>K;#_w`yq;~I`>p7X_ye;VSt`w_*7%rbRoK9^ zbWhB?M*Mi{qc&Mfn)K6)MJ&87M6CP^%Am$UdVMw;KZ~zNQMb7tml$0lz-Mb!(!Kn0 z2&TibHelD68~5mPuXj2nr>$OtNvW3HzkBv3k)vF<-<+5Z8L1h7WOPCTe3%a@eizEz z)>WEQ21*4pSY<^D&p$PTDBr6?w4{3nDFQ45SCDs$*5lX$Jt-~^NnkAGQ%>3&aAj|} zLH8e+e9fC$jAMeo{CjBN<|A61F0+yI4*3p-w(*`T==sJpmh`vuC-yLT=p8bBsVm3t z-nagp9Os}UvX6ljC--d}w3>l{TURx@=nMb$CNz`-sCw8ddHxsy4-6K?^mIWK4<2>W zLORS-H?cDR;1Qk0{fGeqM>UFe$tdMHY$5#J>DE1vjydq(bLg=!9#kO#SoR<csHnag z>*W`xGxnCGlyFq0t~?4<`)Xd!d(V5eUcqC;plw`({tbbk)(FHe!0<~+&T}L%xx)=l z`b==8LniRi68ZdG%WQ<KaFaB0xy^ceu#(+sWw;W6PE|edZ(f4Ppi3TqyLXAm|4;=~ z`T(sJwSXoIPM5_w%$Q}Q*GrZAi^P=snDRKbm4T35z`FycrkU1(s$C2%>E^#G<0hYf zZC~|j9wH4V(GU?_b!U4kVi_J`Du&3VgE?RgOOu7=NR<I5Mz<Wr=8{Y#pR;IUa18*s z4~69r#&l{@@G*k*YgIgXc@Gw+kAUW{T)h$@yc-hK$<>n86yX;xq;tV#gj~j_<DWV4 zYvKd^&k#MtTRDr9>0EU(JjUHGO5LZaiU0(;7dtRXg1jViP=5cAo%X%ViG8`mFFaD; z87%)z(qcTvZ)v~qY9#Iig33dxa}H^dVzrLp+YLIckBIy1hAujxD2VDXvGR{iPCG7m zDIMzI1vi{b1;Rn9{3G>NclE*Tr>(L!v*wSC@UjOQPA;dVUA3Q?;l8{v7*%$dy-4+M zO*x)+Rpt{c4TXkUW!jv4m{;UqvVMM75`Xl8IfLJ>-L?nWATl<R+f=OMEF9e#Z#G%# z;|?RSt>Pw$ObGK)rDVPAJb|uGvJoeh=@6$@2hOgD!N2IEtW<|d`#7Ic4;dm1A0yCH zj6AC!gg<__hnocUsqYH+PoxZ8>X+jB2h)nh181eAQ;IB47rdx@PYb%ukboQQLqesb z^~?Ce?Q$^0U5=BHQ(t#DKIqeP+@v!r+F$S2LOl3TOdE>1Ry2_e_=V-eUTU<MqeY7h zdwZD5bL4WLi^*{8^^8;_Opo7ObjKH>Bz2N`A5%tcPvU9=MMmsS#gY8>$me?@fhk;Y zHF^?Q<T^XPIS+3mNqEq(3E}$=-LE1vdBcB!Q?a>l%ok*Ni#%{;J05lC6HiNdF_OqL zQT*8Sp2F7V%IIY2lu*?#&m#>{%zwDDi6e$gDIGBQ?+bYZFN(i-?)oNhPozTyc-*4+ zzF`yyjEAv}J;-E->zcfK-rp=}Ydb*5b{1kRgYH<r@I0Gf^BaNx(_ol*(1Zx671I_* z$DknGjk>7!>JZiVzDA&;>)R80c@+(}8uwcveQDtuTJOeFj>=4U1JQ3TcRPoNLtEX4 z!GY)7xEGoUMZv$;Hg9S7BD@7ZA8NXoXBs5OQ6UNvtyH<Q?}GXyIiYY|q-5x$GiUlg z^52lcT5YfW5)Lfl*SEVR=xLlk=mhe#DWL#-=`^5IYQ8(6)o44B-UUZ56oI4+rbZ&R z_w)O?ALK2myN&FkNpxf&{5P5qj?YrvTGu%E7Yk7Ib#RL=4~<TQG6E`t0$~3l{x1)N z5f%!Sg+p<|(dRA#lD-7%&#+arRk|^4DD7Y&Vf2Qpl)lH$%zzxyu2{IT-*&GDoj}dl z=4YCDFJ2kAs2bw;huR8u_}@W}E$C4qPTmy_#7KeXog7?L0ikBt@hnsr4&yp4pooON zNJ5!xJi|~$FeOAA!_jw(EMuBygW%LTxv@StwSPzEn~3>i>s?2KV-B~=BXA-&NfK~L zAP28kKr}=n%Xcc8B_^wD-G8+yZ}xwk2`Zsbu81$N9TXN4a$E~ZVaG{zX3f-)-eVkm zNg3LJ0~vRLhVFg-N@blkQgA>JBP2x9BwuZoxa33abXI|>s~Xfe42!<ygC60?-tNI( zt002ed$06f>zbH68Kb3Gsp=r;aJFap)_rcG=Wi&I2tN&|WKKayDc!!metG-s@Sv_P zP?1dwfm}9sdL+J6_nwFer>+B^JvJgZj{I98G+v=$thZiPoaKfF@=>h){MB91?x_2X zGGb~~Wds+QN-%yqx<s|liHo7tFi*BnS*Vc=<u^=>3c5Ei?Ui#R6YU8{(TM%h%a+@# z80>d1sD)$g9K{QIAox?iKJf-6K*Mb*Wu-3Ttiag05#mr5>5-zCXeRX}E<`1P92w!d z3b4x&w4PqVC+eK^#3LVrab0kPdkr`hMr%wdBX_DMPtL@n`~^Q`vJ=V^RY~uUy;}an zx1VLKm)|;&AP$$6vO0Rjy9%Ud2xEtS8{?4^#Df_-uB|u{LNQY$wVOO|ZO?o{_0UyV zrSL>tWtQM#SZ6=jC&3o(gFsxAc~}iBvoYs3iL?u-z1a@pE5d;FA!7T56;mJCrLZpn zjM%GopRhd^E$Nkg5a)0`&=~ET?@QO6$aOzN7(oYUbKC;3cAG?aJyapRe+KhYt3qLP zSl)dsoFggw<Um3$Ox}R6F8@Jn9e6sY#)=&zj}6zu3mDH#?f=w6@qr?n?lKw?Uiuxm zj;p5r!je$SWK#%xH{9>f!@`ANB5~Bbt0`VsXDp!`bwNf?zi}$89|#xMm7QKi1I}u{ zV%U0mO)xNenMVs+i$?3!wd-qSU{~f7ikfxd-Fa}+F+Orf3|jN1W6JjV5_a9|VpmH> zC}YU>84#kaG3U;b>H3Q72~toMw8{*$pp2|Rq?-k$to}aWL@FP8WZfR+_u`S)z=cp? z+}%&4CIB;P#&DEqBvmI=cGG!R{Q&2TWhrWR3xLfQW4M>^cYjf$f17vWy2{bA;K;V3 zZ}SXWwvUYt#-kycY!wqS*7E6{{&%y#Bn23ZHuHpeZfA1bp}u^GvACc3%Ba@F%81LP zR+nLOUPi>5m!C{qa?qDOCWQL0=KHEHMomWApVm<ZeI|wmv*1J$JK{;eW$XR`xHfVa zJdd_a-)%|{d+UOKS?=3A-dFizmyCx!Cwr@L>BUIc01t(mreC-9-M@6H6#7WWE%#vU zT5~SS{X_SPuAoX$!Zi%VG}TTG<Fm%tG8$+38FB6rL-gda2*-tp_R!6==_?`>*B(+B z{(K2bn?-nsVKh#omaB2C-Zpk>QiD^2y9y6OeGa(NFK79QeN%+IY@H-dGv>q7(=K66 zHJVBr;=$+J<B55(Z9Ht}<BBLM+A$)omwL<quEs`}X^WxqG)p+;J%?O8p~+~nZt-NU zo?}VEXCz2a1eLUt0uq;QSTv}my>Aw-bzt0ZyD`zZ-jAvF+s6Rg-H5nyUT<ElJkxRA zGZbFTb5`(JLeu(QiR^1QMPWgPE+tV_kxk#|{_0><F@2Ci<vUfWI3+AJ#H)Y6f~d~` zH}Uv$*F`!QIC^{2n{Nv!xb;<>x*5PE#p@1;_B?{FguEZm%)Yhkuf1AVi&@!8%R@(( z5_F{}JtbJ@!@A|*eUH(Ke)f4FP`mb;psQ5~6<5U{jV^craOPFS03ViMS#{r3P)GVr z10nr1$`_xp1Xkam)0cpoI2z@9ISjA^LI@6ey$D<pq3!+%!m%LBqttz3qv(b~o*5C? ztao3I#kv{cz?U%}^^wx_rFys`@W7CkRQqyd%wdBuh7k<DJXJbsfzcQ&y001n;{DS| z&~<Z0-B%4qv_CS=ngz<)E6_QX>;F@OK%nh|SbfHlDX@0BoWNgz$0{|rf%*3V1`9<w zamZuU7JO8WrVPkb&DIZ&=uqGx4Z$0K(+n2a7?S~|vpz_P09S`=lLYXCq)v*GDkWhk zo{d$|^M~R*gWo}0`o|RQVVZxyox@*1^i2Pk@&&E+_&>#8_6C1DFT|0zq$MgW&7>Ri zckCK;nzHi+PY`fS+m4;ww&_uAV<obhB{|l_Z(h8`S@BpJvOrs?piLyux+dtdpo6h4 zgFY!3Jl6ZQ(46a^Cr{;ULLLBp<tuux4ut~P(c68p00{kU$4LX7j{)(s8V(QHE-e4| zlP<J{3jlagR@jBU6DO+Sfk3k9zOn0T50Kw_p1V0rC~Ziy>%MbKSUX*uU8+<n^67eZ z&yGl5eAHWqzjsV^%9+_He%HE1GbOyhbH2ij8SXRG@)@!gP82k7IrL1o8?idM6L~kF zB9`Y7NZ399?qYGGWhf%bxTu2{r%$qvYd=QqtFsA=Qw}!onz5){;GQw!qazgdv|BLk zWO=q(w3rIYY)$K2N%WEx(aB1!YL_hkl@kW5cqV-@1<9rNPD=QDC?k{HjPoH!yJqBz zE|_@saq3h=6zS1bX9$<+&sz#-_0N(e?1hr!HOD{wE<QnW?Z!%9ZS;KhuX-CIM1M6C zQBML-`HlBzc07M!c3Pdg(F(ZPU9(0V68*6LJDvNqOIxFe!qOn0S@%Ha3lDDJL+PZ+ z?I=87YqbDi62FOjbYYe!rg%sQF%wo#2JhdrkpT!TqU6~nFl}g$j=UKolikIXf10N# ze+}yYu|ukL&95T2(z~tQEA3IrqbH%IPssmzHa+wBh5R<hwVy}&Rn^>{i!|Y5t>B8E z!~2mFFYYBx%Gi?n@fed^MyIXPSrx=eK5E(%S(L*fYci-uPHgC3`6{mY2K>xTuOpPN z;P}0QE9br-5wZrP@5~Vs*t#YpN8H}O_V%9EPNql{aZDxD$?!S!H!4fU4`_Krm1-wI zlfzWRf{!oAL5lw0RhMT?l|9dfw%zR53I}XAGwZM#F<|qw!~4s&5gY0gWz&|j+LGi! zB3zXN<05}KmDo7>t9Xy7W2rn;vHHuTdzb}O5r1k{h(Y`82Ol}iJYh{<Mf4372jjPz zM!!&~z#|-^y29{T^u|$Pbt0h?3+iE{oe2D>Cs16-{TM<rJKu<O3cwCSeJ#WRx$Bf^ zWSg+_Dj1o{7(cS44K2{jH1!@fd_EhYG~?QPs9FB=&ofv?@mPDIRiKJZXzyVSEe`It zkl%wa8#GN}V%@;8;h7Ns?`wG#YeUw}2L;29XQr~8<g4Gf%EQb*1fIBavNOyRYIL}e zHg7h5``h++J#?l3&-N1)grDCHj`NJW2?3XQ?_{;DJ@lAUn&yth?jSHT{eB{w@{0gN zF=Y+c_#$k*-;YzKdM-P*jdhzs+y~)-8JgH5H29n%?2}D!aQyGO3UL_-`sX7ODS`=X z`#ciwfP!wH$aOQOnyPBx!3Cr8a^1n=io|Q9!qYPuKFge>C#Ch<!AuJeKY^fPmKoN+ z$W_mC6M_+(b0JtHJ;8KM#1!H@9h6UWDW#rvYgCb${?I)8{9Ya*YqaRF#7NlW4@QQc zVvWulhxO*H4f5w{eKy8AOg#5}aG%r{HZHD?$nE8h`53yvQW=ohjN6mdORK4^6C$sR zyZ?;9u8<L4XI=BfYJ;LDh5yL8H21d;RDk|OgbJ}tY)-gaL&>W(5yl9QxNHy~{*}Z2 z0_B^Q{zVD#HKYl_p;P3$v9E_X=%8A%d%PN}<%ONJ*ZkAZMv6ir=|>nP#aDUc>C)mG z4y&4=A8)LWnM}dt^nJ1CoIez}ijVH>uEF@MrXibxYK#c@C3pRik@0d=3Oo{?(Pt`N z#QEiGP6D)6d<%7f<$sog2?2k|Pi!2DaOFf&K6p)wYA)Jh>I%ULhlLfitMA@jH)`-j zRh>6LRw$G3Jo6|QU}rG+>QGnSBa)3ozNqZ;4H8(AEW<IJ&}&E?A>k&GS_egJBg*(g zawWRgbThyNZ1B`^$JB2Xl5=buWcBU`-oKdaW(LX_;VhfBjin^|@>vEuBv6PjzQZ8% zHv?5TYz~(UKTA`h)SyHUOaKnsbTCcQt1|8w{&2oZvN%?UTfq2MKq$v0n!i@*mq#jw z1pNWwR171WJO)7#fP(}%bbF5!pN@j49uF5K{roIKj(7a4|8Zi=+==z^04U12nzUM! zL588ZXrzY@vQkq1l-Fm}QxHk{A`**Mj)f!g{d@4I@JXOEMuylOlVku&_W2Q<79v4J zjwi#$hjc5=q20&IwOz%flOShC=F0w7B4si_^bkE|e$r0T=V*Y4t~ULthu~DO*5mrK zBun)q@GlbJ!Taz#OEeD3M2`c#PkM{o$g3bR+agZ|G~b&t9qquN=9APaFPk|1cne>M zn6wVt)ueem#yhPprjPB*G($#;$jc%AI{TE}VGk@dkL2Myxa(AqdmPuD`a^y@boFm< z21y)*O3J3wB2bFDtgPrEcmd1PdWPss5jaSr%#Lh;5SNd|bdbaJXvvaAiRf`ye%w45 z0QEkB@K-UN5Rvo=chlE9I(nDy_AEzz!_6yuhJG5J&zbbdNYA-|9AS8Z-8D4#*rQB) z-o__eFbM}b8hJ~Br6?KSW*qC@#W#kZ{j9b!&o#fKH@JPbCfgG`AB;=bTBBh=hZRXU zTKfmcp=U$c(IF|vH!19}7klp@1;XUYy)3*qlLUvI1sz1(>KYp0i^rbV>WG4hA~e}7 zrkD+y!UuRoAYU)=fv!>wadQ)S8Yec{IY|nuXA&dIQOSO+i_Csg<>*&T-dEd-X_NdR zy!0*537IXz2~Y5e1IkUmMH(m9hf-)oDLB|Cb7G|jmr+OOS9A7Ix-q2UhSQRdSy5B+ zULU^7_d}RI!T&rJ#>fk(Z9!&|x|w{QlqNi%dAWeyNv{0a|7XC11KO8ZIO2kDh^KWm zj*qGP%rRwE9)|y!BvC%kETE)*4MI11Bg8S!hHd}@%5=k3SO$2xnId8J$-rekEem`S zUm{cS2{ME<y8+fG7JassgA4t_?DS5NAT5Jk31NTnY!UkhBV=nK2QgNX_WS#4D;faW z6|4HIoBBn{<M{>$=T^p=UY-!0-Ogf9LvkVuTroaqsEYFLr>dO*%H@{JV+$jmqD#Yv zThn=XydDmslm!=w!)(KYIM4`5IDPeWii$<JfTNdAnSV889FKk}{j`=GW*Y2l{VoSq zHJUpy*09<55#Zc;IGDhx=Zzop#|<+y)oB_?1)A~{caB+*2oiA;dJ!{1IE)Ivz+?T8 zzPwt>6uHc{9L%2J^I${wK;Dd@g_Il`dTNS0vg`3UEExxiDQ6Vel=F_+xJVW$FFN;p z%CoDLUK($Lzqw2uq1uTMCW!0avtDm$vKSWC#_Y&I`B=ZjoGRXp_{9XL)f(F=kt(a8 z)?41KKz8x4S1bj0$h_ai$)i%CYR~e)M^C$HIMA)P0gaHznX_d|O#@V8lnfn*l^lYW zv;wK={1)h1JIDKro~a)udc~YUAsELRS3&`!X=-QWuv>02E0d6P1QN#o`He27x6R%2 zNIK$k`>^fHj9|BEU(Bt)pDXkBZx0<!DTxuC!yQyBB!njAA!R<5CRIDJR_L074K@GX zK3l7kH&NqZ`Mk=l`<5>Umb~MN?~DJ*<=jA&Iq%8xe2(8{iZ%SSoqv}W)8vLJyfFIX z_(HVvXnW9k^N%0BQQ15e<Goy$u_qpyGTMt^pTNk$slA-Y+hMsw7Nn32qAh9(kQ7~) z8TBK7Wz^13OCC9E7u)@;jfln50&LcFl-`uMCKoAv6Khk}Q6sG`>L6YLVbB2gy2&H# z(u6705xwDm6fR1pg18o>(O+U<AqPi(Jr~IKIX}7<$AfM+sOC@|s7g!%$p^i|xi~<e z>cciy%TAgA{N5guG$D#}d%E|>HH2jyo^COAAbwiXI%HL)G?#Y^L$d!o&5eY=5}MQe z?OKlg4iTP7Xg28YcZ=eM$Bn#tibHibm6g)vW*2L78rL<16clw)e}7~3+%?p_>E6j6 zznZ^Fd25Z+)wwz~=6tJhI_^cQhM=IJ;0<Sm<Kf}`k3SjULLW#&L&KX74#tqG%F0Ue h$Tx4gvk<6zaOrIX_4(BULJ;~;QFtm}F8e(6e*tMJKga+8 literal 0 HcmV?d00001 diff --git a/site/content/images/data-platform-query-editor.png b/site/content/images/data-platform-query-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..95da18a16463488e618b0324b55f98f35a182ea3 GIT binary patch literal 73796 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%0D$<0*n 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 CwzS*; literal 0 HcmV?d00001 diff --git a/site/content/images/icons/add.svg b/site/content/images/icons/add.svg new file mode 100644 index 0000000000..5cfb9f82cb --- /dev/null +++ b/site/content/images/icons/add.svg @@ -0,0 +1,3 @@ +<svg stroke="none" fill="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> + <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path> +</svg> \ No newline at end of file diff --git a/site/content/images/icons/close.svg b/site/content/images/icons/close.svg new file mode 100644 index 0000000000..2ef169245e --- /dev/null +++ b/site/content/images/icons/close.svg @@ -0,0 +1,3 @@ +<svg stroke="none" fill="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> + <path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path> +</svg> \ No newline at end of file diff --git a/site/content/images/icons/ellipsis.svg b/site/content/images/icons/ellipsis.svg new file mode 100644 index 0000000000..40ffc555d6 --- /dev/null +++ b/site/content/images/icons/ellipsis.svg @@ -0,0 +1,3 @@ +<svg fill="currentColor" stroke-width="0" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> + <path d="M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"></path> +</svg> \ No newline at end of file From b9fa610da0a86582b8015335c45e6811f8b77075 Mon Sep 17 00:00:00 2001 From: Paula Mihu <97217318+nerpaula@users.noreply.github.com> Date: Wed, 5 Nov 2025 16:44:56 +0100 Subject: [PATCH 50/69] Data Platform | Add dedicated K8s page and detailed descriptions (architecture/components) (#814) * data platform for amp is available upon request * Add new Kubernetes page; Add detailed descriptions of Data Platform's architecture and components * Apply suggestions from code review Co-authored-by: Simran <Simran-B@users.noreply.github.com> * apply review suggestions * Apply suggestion from @nerpaula * review * Fix link --------- Co-authored-by: Simran <Simran-B@users.noreply.github.com> Co-authored-by: Simran Spiller <simran@arangodb.com> --- site/content/data-platform/_index.md | 51 +++++++++++- site/content/data-platform/features.md | 99 ++++++++++++++--------- site/content/data-platform/get-started.md | 7 +- site/content/data-platform/kubernetes.md | 81 +++++++++++++++++++ 4 files changed, 192 insertions(+), 46 deletions(-) create mode 100644 site/content/data-platform/kubernetes.md diff --git a/site/content/data-platform/_index.md b/site/content/data-platform/_index.md index 5b68886243..dd77dd39b2 100644 --- a/site/content/data-platform/_index.md +++ b/site/content/data-platform/_index.md @@ -21,6 +21,53 @@ AI solutions for GraphRAG, graph machine learning, data explorations, and more. run it on-premises or in the cloud yourself on top of Kubernetes to access all of the platform features with enterprise-grade automation and reliability. +## What Makes Up the Arango Data Platform + +The Arango Data Platform is built on a layered architecture that combines powerful +components into a unified solution: + +- **ArangoDB Enterprise Edition**: The multi-model database foundation supporting + graphs, documents, key-value, vector search, and full-text search capabilities. + +- **Graph Visualizer**: A sophisticated web-based interface for graph exploration, + smart search, and visual layouts. + +- **Arango Platform Suite**: Enterprise-grade features including high availability + and monitoring, comprehensive APIs and connectors, centralized orchestration and + resource management. + +All components are orchestrated through Kubernetes, providing automated deployment, +scaling, and management with enterprise-grade reliability. + +For a detailed breakdown of each component, see [Features and Architecture](features/). + +## Extend the Arango Data Platform with AI capabilities + +Extend the Arango Data Platform with the [**AI Suite**](../ai-suite/_index.md) +that offers advanced AI and machine learning capabilities that integrate seamlessly +into the platform's unified web interface. + +What you get with the AI Suite: + +- [GraphRAG](../ai-suite/graphrag/): Generate knowledge graphs from documents and enable + conversational querying of your data. +- [GraphML](../ai-suite/graphml/): Apply machine learning algorithms that leverage graph + structure for better predictions. +- [Graph Analytics](../ai-suite/graph-analytics/): Run advanced algorithms like PageRank + to discover influential nodes and patterns. +- [AQLizer](../ai-suite/aqlizer.md): Generate AQL queries from natural language. +- [Jupyter notebooks](../ai-suite/notebook-servers.md): Run Jupyter Notebooks to build and + experiment with graph-powered data, AI, and machine learning workflows directly connected + to ArangoDB databases. +- Public and private LLM support: Use public LLMs such as OpenAI + or private LLMs with [Triton Inference Server](../ai-suite/reference/triton-inference-server.md). +- [MLflow integration](../ai-suite/reference/mlflow.md): Use the popular MLflow as a model registry + for private LLMs or to run machine learning experiments as part of the Arango Data Platform. + +{{< tip >}} +The AI Suite requires a separate license. +{{< /tip >}} + {{< cards >}} {{% card title="Get started with the Arango Data Platform" link="get-started/" %}} @@ -32,8 +79,8 @@ Optionally add AI Suite to turn data into an AI-powered knowledge engine. Explore the Kubernetes-native architecture, unified interface, and enterprise-grade capabilities of the Arango Data Platform. {{% /card %}} -{{% card title="ArangoDB Kubernetes Operator" link="../../arangodb/3.12/deploy/kubernetes/" %}} -Learn about the official ArangoDB Kubernetes Operator that powers the Arango Data Platform. +{{% card title="Kubernetes-Native Architecture" link="kubernetes/" %}} +Learn about the Kubernetes-native foundation that the Arango Data Platform is purpose-built on. {{% /card %}} {{% card title="Graph Visualizer" link="graph-visualizer/" %}} diff --git a/site/content/data-platform/features.md b/site/content/data-platform/features.md index dacda654fa..990e86821f 100644 --- a/site/content/data-platform/features.md +++ b/site/content/data-platform/features.md @@ -1,10 +1,10 @@ --- -title: Feature list of the Arango Data Platform -menuTitle: Features +title: Architecture and Features of the Arango Data Platform +menuTitle: Architecture and Features weight: 5 description: >- - The Arango Data Platform is a scalable Kubernetes-native architecture that gets you all features - of ArangoDB as a single solution with a unified interface + Discover how the Arango Data Platform combines database, visualization, and enterprise + features into a unified, Kubernetes-native architecture --- ## Architecture @@ -18,8 +18,15 @@ scaling, and management. Powered by the official enterprise-grade database management and high availability. {{< /tip >}} -- **Core Database**: The ArangoDB database system forms the solid core - of the Arango Data Platform. +### Kubernetes-Native + +At its core, the Arango Data Platform is purpose-built for Kubernetes environments, leveraging the +[official ArangoDB Kubernetes Operator](https://arangodb.github.io/kube-arangodb/docs/) +(`kube-arangodb`) to deliver enterprise-grade automation, scalability, and operational excellence. + +For detailed information about the Kubernetes foundation, see [Kubernetes Integration](kubernetes/). + +### Technical Infrastructure - **Helm**: A package manager for Kubernetes that enables consistent, repeatable installations and version control. @@ -27,48 +34,60 @@ enterprise-grade database management and high availability. - **Envoy**: A high-performance service proxy that acts as the gateway for the Arango Data Platform for centralizing authentication and routing. -- **Web interface**: The Platform includes a unified, browser-based UI that lets - you access its features in an intuitive way. Optional products like the - AI Suite seamlessly integrate into the UI if installed. +## Platform Components -## Kubernetes Integration +The Arango Data Platform consists of multiple integrated components that work together +to provide a complete, enterprise-ready solution. -At its core, the Arango Data Platform is purpose-built for Kubernetes environments, leveraging the -[official ArangoDB Kubernetes Operator](https://arangodb.github.io/kube-arangodb/docs/) -(`kube-arangodb`) to deliver enterprise-grade automation, scalability, and operational excellence. +### ArangoDB Enterprise Edition -## Features +At the foundation is [**ArangoDB Enterprise Edition**](../../arangodb/3.12/), the +powerful multi-model database that provides: -The Arango Data Platform provides these core capabilities out of the box: +- **Graph**: Native graph database capabilities with efficient traversals and pattern matching +- **Document**: Flexible JSON document storage with schema validation +- **Key-Value**: High-performance key-value operations +- **Vector**: Vector embeddings and similarity search for AI applications +- **Search**: Full-text search and complex query capabilities -- [**ArangoDB Core**](../arangodb/3.12/_index.md): The ArangoDB database system with support for - graphs, documents, key-value, full-text search, and vector search. +### Graph Visualizer -- [**Graph Visualizer**](graph-visualizer.md): - A web-based tool for exploring your graph data with an intuitive interface and - sophisticated querying capabilities. +The [**Graph Visualizer**](graph-visualizer/) provides an intuitive web-based interface +that brings your data to life with: -## Extend the Arango Data Platform with AI capabilities +- **Interactive Graph Exploration**: Visualize named graphs with node expansion, + shortest path discovery, and AQL-powered queries including Canvas Actions that + work with your selection to discover related data + +- **Visual Customization and Layouts**: Customize node colors, icons, and labels + with saveable themes, and apply automatic layout algorithms (force-directed, + hierarchical, circular) with zoom controls and minimap navigation + +- **Direct Graph Editing**: Create, modify, and delete nodes and edges directly + from the canvas with an intuitive properties dialog supporting both form and + JSON editing modes -Take your Arango Data Platform to the next level with the [**AI Suite**](../ai-suite/_index.md) that offers advanced AI and machine learning capabilities that integrate seamlessly into the platform's unified web interface. +The Graph Visualizer seamlessly integrates with the ArangoDB database and provides the +primary interface for data exploration and analysis. -What you get with the AI Suite: +### Arango Platform Suite -- [GraphRAG](../ai-suite/graphrag/): Generate knowledge graphs from documents and enable - conversational querying of your data. -- [GraphML](../ai-suite/graphml/): Apply machine learning algorithms that leverage graph - structure for better predictions. -- [Graph Analytics](../ai-suite/graph-analytics/): Run advanced algorithms like PageRank - to discover influential nodes and patterns. -- [Jupyter notebooks](../ai-suite/notebook-servers.md): Run Jupyter Notebooks to build and - experiment with graph-powered data, AI, and machine learning workflows directly connected - to ArangoDB databases. -- Public and private LLM support: Use public LLMs such as OpenAI - or private LLMs with [Triton Inference Server](../ai-suite/reference/triton-inference-server.md). -- [MLflow integration](../ai-suite/reference/mlflow.md): Use the popular MLflow as a model registry - for private LLMs or to run machine learning experiments as part of the Arango Data Platform. +The **Arango Platform Suite** adds enterprise-grade capabilities such as: -{{< tip >}} -The AI Suite integrate directly into the existing platform interface, no need for -separate systems to manage or learn. A separate license is required. -{{< /tip >}} +- **High Availability and Monitoring**: Comprehensive health checks, metrics collection, + alerting, and automatic failover mechanisms ensure your data platform stays operational. + Real-time monitoring dashboards provide visibility into cluster performance, + resource utilization, and query patterns. + +- **APIs, Drivers and Connectors**: Comprehensive programmatic access through + RESTful APIs, native drivers for popular programming languages (Java, Python, + JavaScript, Go, PHP, and more), and connectors for data integration tools + and BI platforms. + +- **Centralized Orchestration and Resource Management**: Unified control plane + for managing all platform resources, deployments, and configurations. + Kubernetes-powered orchestration handles scaling, updates, and resource + allocation automatically across all components. + +These enterprise features are orchestrated through Kubernetes and the ArangoDB +Kubernetes Operator, providing automated management and enterprise-grade reliability. \ No newline at end of file diff --git a/site/content/data-platform/get-started.md b/site/content/data-platform/get-started.md index f59466e2db..dbe94f2ff2 100644 --- a/site/content/data-platform/get-started.md +++ b/site/content/data-platform/get-started.md @@ -21,10 +21,9 @@ of the platform features. ## Use the Arango Data Platform as a managed service -The Arango Data Platform is not available as a managed service yet, but it will -become available for the [Arango Managed Platform (AMP)](../../amp/_index.md) -in the future. Until then, you can request early access to the self-hosted -Arango Data Platform for testing. +You can request the Arango Data Platform as a managed service for the +[Arango Managed Platform (AMP)](../../amp/_index.md). +[Get in touch](https://arango.ai/contact-us/) with the Arango team to learn more. ## Self-host the Arango Data Platform diff --git a/site/content/data-platform/kubernetes.md b/site/content/data-platform/kubernetes.md new file mode 100644 index 0000000000..e58769feef --- /dev/null +++ b/site/content/data-platform/kubernetes.md @@ -0,0 +1,81 @@ +--- +title: Kubernetes-Native Architecture +menuTitle: Kubernetes +weight: 15 +description: >- + The Arango Data Platform is purpose-built for Kubernetes, leveraging + container orchestration for automated deployment, scaling, and management +--- +The Arango Data Platform is **Kubernetes-native** by design, meaning it is built +from the ground up to run on [Kubernetes](https://kubernetes.io/) and requires +it to function. This is not an optional feature, Kubernetes is the foundation +that powers the entire platform architecture. + +{{< info >}} +**Kubernetes Required**: The Arango Data Platform cannot operate without Kubernetes. +It relies on Kubernetes orchestration and the +[ArangoDB Kubernetes Operator](https://arangodb.github.io/kube-arangodb/) for +all deployment, scaling, and management operations. +{{< /info >}} + +## Why Kubernetes? + +By building exclusively on Kubernetes, the Arango Data Platform delivers +enterprise-grade capabilities that would be difficult or impossible to achieve +with traditional deployment approaches: + +- **Automated Management and Self-Healing**: Kubernetes handles deployment, + scaling, node failures, and rolling updates automatically, with self-healing + capabilities that restart failed containers and maintain high availability + without manual intervention. + +- **Dynamic Scalability and Resource Optimization**: Scale your database cluster + up or down based on workload demands, with efficient resource allocation and + scheduling ensuring optimal utilization of CPU, memory, and storage. + +- **Declarative Configuration and Zero-Downtime Updates**: Define your desired + state using Kubernetes manifests and deploy updates with zero downtime through + controlled rolling updates and easy rollback capabilities. + +- **Cloud and On-Premises Flexibility**: Run on any Kubernetes-compatible + environment—public cloud providers (AWS, Azure, GCP), private cloud, or + on-premises infrastructure—with consistent deployment across all environments. + +## The ArangoDB Kubernetes Operator + +The Arango Data Platform is powered by the official +[ArangoDB Kubernetes Operator](https://arangodb.github.io/kube-arangodb/) +(`kube-arangodb`), which provides the following features: + +- **Custom Resource Definitions (CRDs)**: Extend Kubernetes with ArangoDB-specific + resources like `ArangoDeployment`, `ArangoBackup`, and more. + +- **Intelligent Orchestration**: The operator understands ArangoDB's architecture + and requirements, ensuring deployments follow best practices automatically. + +- **Backup and Restore**: Automated backup management integrated directly into + the Kubernetes workflow. + +- **High Availability**: Built-in support for multi-datacenter replication, + automatic failover, and disaster recovery scenarios. + +- **Enterprise Features**: Full support for ArangoDB Enterprise Edition features + including encryption, auditing, and advanced security controls. + +For detailed information about the operator, see the +[ArangoDB Kubernetes Operator documentation](https://arangodb.github.io/kube-arangodb/docs/). + +## Platform Services as Kubernetes Resources + +All components of the Arango Data Platform, from the core database to the optional +AI Suite, are deployed and managed as native Kubernetes resources. This +means you can do the following: + +- Use standard Kubernetes tools (`kubectl`, Helm, etc.) to manage your deployment +- Monitor platform health using Kubernetes-native observability tools +- Integrate with existing Kubernetes infrastructure and workflows +- Apply your organization's Kubernetes policies and security controls + +This Kubernetes-native approach ensures the Arango Data Platform fits naturally +into modern cloud-native environments and DevOps practices. + From bff23ac50ba6e3ef5985eef506420255466124ad Mon Sep 17 00:00:00 2001 From: Paula Mihu <97217318+nerpaula@users.noreply.github.com> Date: Wed, 5 Nov 2025 17:11:27 +0100 Subject: [PATCH 51/69] DOC-797 | Natural language to AQL service (txt2aql / AQLizer) (#794) * initial draft * add process-text-stream * add info box and placeholder for external endpoint URL * clarify provider-specific parameters, add OpenRouter, genai project no longer needed, add aqlizer mode * remove grpc (only internal use) * remove triton * apply review suggestions * apply suggestion Co-authored-by: maxkernbach <maximilian.kernbach@gmail.com> * Fix link * add missing https prefix in curl example URL --------- Co-authored-by: maxkernbach <maximilian.kernbach@gmail.com> Co-authored-by: Simran Spiller <simran@arangodb.com> --- .../reference/natural-language-to-aql.md | 446 ++++++++++++------ 1 file changed, 305 insertions(+), 141 deletions(-) diff --git a/site/content/ai-suite/reference/natural-language-to-aql.md b/site/content/ai-suite/reference/natural-language-to-aql.md index 40d3ff9920..2160ce0460 100644 --- a/site/content/ai-suite/reference/natural-language-to-aql.md +++ b/site/content/ai-suite/reference/natural-language-to-aql.md @@ -1,152 +1,320 @@ --- -title: Natural Language to AQL Translation Service (txt2aql) -menuTitle: txt2aql +title: Natural Language to AQL Translation Service +menuTitle: Natural Language to AQL description: >- - The Natural Language to AQL Translation Service is a powerful tool that allows - you to interact with your ArangoDB database using natural language queries + Query your ArangoDB database using natural language or get LLM-powered answers + to general questions weight: 20 --- ## Overview -This service translates your questions and commands into AQL (ArangoDB Query Language), -executes the queries, and provides responses in natural language. +The Natural Language to AQL Translation Service provides two distinct capabilities: -## Features +**1. [Process Text](#process-text)**: Ask general questions and get natural language responses without querying your database. Supports both standard and [streaming](#process-text-stream) responses. +Ideal for: +- General knowledge questions +- Text analysis and processing +- Real-time response generation with streaming -- Natural language to AQL query translation -- Support for multiple LLM providers (via OpenAI API or a self-hosted Triton Inference Server) -- RESTful and gRPC interfaces +**2. [Translate Query](#translate-query)**: Convert natural language questions into AQL queries and execute them against your ArangoDB database. +Ideal for: +- Querying your database using natural language +- Converting business questions into database operations +- Exploring data through intuitive interfaces +- Learning AQL by seeing translations + +The Natural Language to AQL Translation Service also includes the following features: +- Support for multiple LLM providers (via OpenAI API or a self-hosted OpenAI-compatible models) +- RESTful interfaces - Health monitoring endpoints -- Flexible output formats (Natural Language, AQL, JSON) +- Flexible output formats (Natural Language, AQL, JSON) for database queries + +## Installation and configuration -## Getting Started +Deploy the Natural Language to AQL service with a single API call. You provide configuration parameters in the request, and the platform automatically configures them as environment variables for the service runtime. ### Prerequisites -- ArangoDB instance -- OpenAI API key (if using OpenAI as provider) -- Triton URL and model name (if using Triton as provider) +Before deploying, have ready: +- An ArangoDB instance with database name and username credentials +- An API key from your chosen LLM provider (OpenAI, OpenRouter, or other OpenAI-compatible service) +- A Bearer token for API authentication + +### Obtaining a Bearer Token + +Before you can deploy the service, you need to obtain a Bearer token for authentication. Generate this token using the ArangoDB authentication API: + +```bash +curl -X POST https://<ExternalEndpoint>:8529/_open/auth \ + -d '{"username": "your-username", "password": "your-password"}' +``` +This returns a JWT token that you can use as your Bearer token in all subsequent API calls. For more details, see the [ArangoDB Authentication](../../arangodb/3.12/develop/http-api/authentication.md/#jwt-user-tokens) documentation. -### Configuration +### Start the service -The following environment variables are set at installation time and used at runtime: +{{< info >}} +Replace `<ExternalEndpoint>` in all examples below with your Arango Data Platform deployment URL. +{{< /info >}} + +Create the service instance with your configuration: ```bash -# Required Database Configuration -ARANGODB_NAME=<your_database_name> -ARANGODB_USER=<your_username> +curl --request POST \ + --url https://<ExternalEndpoint>:8529/ai/v1/graphrag \ + --header 'Authorization: Bearer <your-bearer-token>' \ + --header 'Content-Type: application/json' \ + --data '{ + "env": { + "db_name": "<your_database_name>", + "chat_api_provider": "<openai>", + "chat_api_key": "<your-openai-api-key>", + "chat_model": "<gpt-4o>", + } + }' +``` + +**Expected Response:** +```json +{ + "serviceInfo": { + "serviceId": "arangodb-graph-rag-xxxxx", + "description": "Install complete", + "status": "DEPLOYED", + "namespace": "<arangodb>", + "values": "<eyJhcGlfcHJvdmlkZXIi>..." + } +} +``` + +{{< info >}} +Save the `serviceId` from the above response as you will need it for all subsequent API calls. +{{< /info >}} + +### Configuration Parameters + +All parameters are provided in the `env` object of your deployment request. + +You can use OpenAI directly, or OpenAI-compatible services like OpenRouter or self-hosted models. + +**Required:** +- `db_name`: Database name +- `chat_api_provider`: Set to `openai` (supports OpenAI and OpenAI-compatible services) +- `chat_api_key`: Your LLM provider API key + +**Optional:** +- `chat_model`: Model name (default: `gpt-4o-mini`) +- `chat_api_url`: Base URL for OpenAI-compatible endpoints (only needed for OpenRouter, self-hosted models, etc.) +- `openai_max_retries`: Maximum retry attempts for failed requests + +#### Using OpenAI + +The [deployment example](#start-the-service) above uses OpenAI directly. Simply provide your OpenAI API key as `chat_api_key`. + +#### Using OpenRouter + +OpenRouter provides access to multiple LLM providers through an OpenAI-compatible API. To use it: +- Set `chat_api_provider` to `openai` (same as above) +- Set `chat_api_url` to `https://openrouter.ai/api/v1` +- Use your OpenRouter API key as `chat_api_key` +- Choose any model from [OpenRouter's catalog](https://openrouter.ai/models) + +#### Using Self-Hosted Models -# LLM Provider Configuration -API_PROVIDER=<provider> # "openai" or "triton" +For self-hosted OpenAI-compatible models: +- Set `chat_api_provider` to `openai` +- Set `chat_api_url` to your model's endpoint +- Configure `chat_api_key` according to your setup -# If using OpenAI -OPENAI_API_KEY=<your_api_key> -OPENAI_MODEL=<model_name> # Optional, defaults to GPT-4 -OPENAI_TEMPERATURE=<temperature> # Optional -OPENAI_MAX_RETRIES=<retries> # Optional +### Verify service status -# If using Triton -TRITON_URL=<triton_server_url> -TRITON_MODEL=<model_name> -TRITON_TIMEOUT=<timeout_seconds> # Optional +Check that the service is properly deployed: + +```bash +curl --request GET \ + --url https://<ExternalEndpoint>:8529/ai/v1/service/arangodb-graph-rag-<serviceID> \ + --header 'Authorization: Bearer <your-bearer-token>' ``` -### Starting the Service +**Expected Response:** +```json +{ + "serviceInfo": { + "serviceId": "arangodb-graph-rag-<serviceID>", + "description": "Install complete", + "status": "DEPLOYED", + "namespace": "<arangodb>", + "values": "<eyJhcGlfcHJvdmlkZXIi>..." + } +} +``` -To start the service, use AI service endpoint `CreateGraphRag`. Please refer to the documentation of AI service for more information on how to use it. +### Health check -### Required Parameters +Verify that the service is running and healthy: -These parameters must be provided in the install request sent to AI service. +```bash +curl --request GET \ + --url https://<ExternalEndpoint>:8529/graph-rag/<serviceID>/v1/health \ + --header 'Authorization: Bearer <your-bearer-token>' +``` -- `username`: Database username for authentication -- `db_name`: Name of the ArangoDB database -- `api_provider`: LLM provider selection (`openai`, `triton`) +**Expected Response:** +```json +{ + "status": "SERVING" +} +``` -### Provider-Specific Required Parameters +{{< info >}} +The `serviceID` in the URL is typically the last part of the full service ID (e.g., `xxxxx` from `arangodb-graph-rag-xxxxx`). +{{< /info >}} -#### OpenAI Provider +## Process Text -- `openai_api_key`: API key for OpenAI authentication -- `openai_model`: Model name (defaults to "gpt-3.5-turbo" if not specified) +The **Process Text** endpoint allows you to ask general questions to the LLM and receive natural language responses. -#### Triton Provider +```bash +POST /v1/process_text +``` -- `triton_url`: URL of the Triton inference server -- `triton_model`: Model name to use with Triton +{{< info >}} +**This endpoint does not query your database**, it is designed for general knowledge questions and text processing. +{{< /info >}} -## API Reference +**Example**: + +```json +{ + "input_text": "What are the advantages of graph databases?" +} +``` + +```bash +curl --request POST \ + --url https://<ExternalEndpoint>:8529/graph-rag/<serviceID>/v1/process_text \ + --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ + --header 'Content-Type: application/json' \ + --data '{ + "input_text": "What are the advantages of graph databases?" + }' +``` -### REST Endpoints - -1. **Process Text** - Ask general questions to the LLM and get a natural language response. This endpoint does not query the database. - ```bash - POST /v1/process_text - Content-Type: application/json - - { - "input_text": "What are the advantages of graph databases?" - } - ``` - -2. **Translate Query** - Convert natural language to AQL and query the database - ```bash - POST /v1/translate_query - Content-Type: application/json - - { - "input_text": "Find all users who are friends with John", - "options": { - "output_formats": ["NL", "AQL", "JSON"] - } - } - ``` - -3. **Health Check** - Monitor service health - ```bash - GET /v1/health - ``` - -### gRPC Endpoints - -The service also provides gRPC endpoints for more efficient communication: - -1. **Process Text** - ```bash - grpcurl -plaintext -d '{"input_text": "Hello world"}' \ - localhost:9090 txt2aql.Txt2AqlService/ProcessText - ``` - -2. **Translate Query** - ```bash - grpcurl -plaintext -d '{ - "input_text": "Find all characters from House Stark", - "options": { - "output_formats": ["NL","AQL","JSON"] - } - }' localhost:9090 txt2aql.Txt2AqlService/TranslateQuery - ``` - -3. **Health Check** - ```bash - grpcurl -plaintext localhost:9090 txt2aql.Txt2AqlService/HealthCheck - ``` - -## Output Formats - -The `translate_query` endpoint of the txt2aql service supports multiple output formats that can be specified in the `output_formats` field of your request. Each format serves a different purpose and can be used individually or in combination: - -### Natural Language (NL) +**Expected output:** + +```json +{ + "responseText": "Graph databases offer several key advantages: 1) Efficient relationship handling - they store relationships as first-class citizens, making traversals much faster than traditional SQL JOINs. 2) Flexible data modeling - schema-less design accommodates evolving datasets naturally. 3) High performance for connected data - query performance remains consistent even with large datasets. 4) Intuitive visualization - relationships can be easily visualized and understood. 5) Real-time capabilities - excellent for recommendation systems, fraud detection, and network analysis." +} +``` + +## Process Text Stream + +The **Process Text Stream** endpoint returns responses in real-time as they are generated, rather than waiting for the complete response, which is useful for showing progressive output. + +```bash +POST /v1/process_text_stream +``` + +The endpoint supports two modes described below. + +### Default Mode (General Text Processing) + +The default mode provides general LLM responses without querying your database. + +**Example**: + +```bash +curl --request POST \ + --url https://<ExternalEndpoint>:8529/graph-rag/<serviceID>/v1/process_text_stream \ + --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ + --header 'Content-Type: application/json' \ + --data '{ + "input_text": "What are the advantages of graph databases?" + }' +``` + +**Response:** +``` +Graph databases offer several key advantages: 1) Efficient relationship handling... +``` + +{{< info >}} +This mode does not access your database, it provides general knowledge responses. +{{< /info >}} + +### AQLizer Mode + +The AQLizer mode generates schema-aware AQL queries from natural language by streaming responses from an LLM. + +**Example:** + +```bash +curl --request POST \ + --url https://<ExternalEndpoint>:8529/graph-rag/<serviceID>/v1/process_text_stream \ + --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ + --header 'Content-Type: application/json' \ + --data '{ + "input_text": "Find all users who made purchases in the last month", + "mode": "aqlizer" + }' +``` + +**Response:** +```aql +FOR user IN users + FILTER user.purchases[*].date ANY >= DATE_SUBTRACT(DATE_NOW(), 1, 'month') + RETURN user +``` + +The generated AQL is based on your actual database schema, making it immediately usable. + +## Translate Query + +The **Translate Query** endpoint converts natural language questions into AQL queries and executes them against your ArangoDB database. **This endpoint queries your actual data** and returns results in multiple formats. + +```bash +POST /v1/translate_query +``` + +**Example**: + +```json +{ + "input_text": "Find all users who are friends with John", + "options": { + "output_formats": ["NL", "AQL", "JSON"] + } +} +``` + +```bash +curl --request POST \ + --url https://<ExternalEndpoint>:8529/graph-rag/<serviceID>/v1/translate_query \ + --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ + --header 'Content-Type: application/json' \ + --data '{ + "input_text": "Find all users who are friends with John", + "options": { + "output_formats": ["NL", "AQL", "JSON"] + } + }' +``` + +### Output formats + +The `translate_query` endpoint supports multiple output formats that can be specified in the `output_formats` field of your request. Each format serves a different purpose and can be used individually or in combination. + +#### Natural Language (NL) - **Format identifier**: `"NL"` - **Returns**: A human-readable explanation of the query results -- **Helpful for**: Understanding what the query found in plain English +- **Helpful for**: Understanding what the query found in plain English. - **Example**: - **Input**: `Find all users who are friends with John` - **Output**: `I found 3 users who are friends with John, including Alice, Bob, and Carol` -### AQL Query (AQL) +#### AQL Query (AQL) - **Format identifier**: `"AQL"` - **Returns**: The generated ArangoDB Query Language (AQL) query @@ -154,16 +322,16 @@ The `translate_query` endpoint of the txt2aql service supports multiple output f - Debugging query translation - Learning AQL syntax - Modifying queries for reuse -- **Shows**: Exactly how your natural language was translated into database operations +- **Shows**: Exactly how your natural language was translated into database operations. - **Example**: - **Input**: `Find all users who are friends with John` - **Output**: `FOR u IN users FILTER u.friends ANY == 'John' RETURN u` -### JSON Results (JSON) +#### JSON Results (JSON) - **Format identifier**: `"JSON"` - **Returns**: The raw query results in JSON format -- **Provides**: Direct access to the complete dataset +- **Provides**: Direct access to the complete dataset. - **Ideal for**: - Programmatic processing - Data integration @@ -172,7 +340,7 @@ The `translate_query` endpoint of the txt2aql service supports multiple output f - **Input**: `Find all users who are friends with John` - **Output**: `[{"name":"Alice","age":30},{"name":"Bob","age":25},{"name":"Carol","age":35}]` -### Example Response +#### Examples ```json { @@ -183,24 +351,30 @@ The `translate_query` endpoint of the txt2aql service supports multiple output f } ``` -### Usage Tips +#### Usage and default behavior -1. Request only the formats you need to minimize response size and processing time -2. Use `NL` for user interfaces, human consumption or when wrapped as an LLM-callable function (e.g. in LLM agent frameworks) -3. Use `AQL` for debugging and learning purposes -4. Use `JSON` for programmatic data processing such as API calls. +- Request only the formats you need to minimize response size and processing time. +- Use `NL` for user interfaces, human consumption, or when wrapped as an LLM-callable function (e.g., in LLM agent frameworks). +- Use `AQL` for debugging and learning purposes. +- Use `JSON` for programmatic data processing such as API calls. +- If no output formats are specified, the service defaults to `NL` format only. +- Multiple formats can be requested simultaneously. +- Formats are processed efficiently, with results cached where possible. -### Default Behavior +## Best Practices -- If no output formats are specified, the service defaults to `NL` format only -- Multiple formats can be requested simultaneously -- Formats are processed efficiently, with results cached where possible +1. Be specific in your queries to get more accurate translations. +2. Use appropriate output formats based on your needs. +3. Monitor the health endpoint for service status. +4. Implement proper error handling in your client applications. +5. Use connection pooling for better performance. +6. Consider rate limiting for production deployments. ## Error Handling The service provides clear error messages for common issues: -- Invalid or missing environment variables +- Invalid or missing configuration parameters - Database connection failures - Authentication errors - Invalid query formats @@ -208,31 +382,21 @@ The service provides clear error messages for common issues: Error responses include appropriate HTTP status codes and descriptive messages. -## Best Practices - -1. Be specific in your queries to get more accurate translations -2. Use appropriate output formats based on your needs -3. Monitor the health endpoint for service status -4. Implement proper error handling in your client applications -5. Use connection pooling for better performance -6. Consider rate limiting for production deployments - ## Troubleshooting Common issues and solutions: -1. **Connection Issues** - - Verify ARANGODB_ENDPOINT is accessible - - Check network/firewall settings - - Ensure proper authentication credentials +1. **Connection issues**: + - Verify that the ArangoDB endpoint is accessible. + - Check network/firewall settings. + - Ensure proper authentication credentials. -2. **Query Translation Issues** - - Make queries more specific - - Check LLM provider configuration - - Verify database schema matches query context +2. **Query Translation issues**: + - Make queries more specific. + - Check LLM provider configuration. + - Verify that the database schema matches the query context. - The quality of the generated AQL may vary depending on the LLM model used. - Therefore we recommend using an AQL-capable coding model (e.g. a frontier AQL-capable - LLM or a fine-tuned AQL-capable coding model) for better results. + Therefore, it is recommended to use an AQL-capable coding model (e.g., a frontier AQL-capable LLM or a fine-tuned AQL-capable coding model) for better results. ## API Reference From e7484d4d00bdd8c6dd23f7aa3ed2aa03c3a2f8b7 Mon Sep 17 00:00:00 2001 From: Paula Mihu <97217318+nerpaula@users.noreply.github.com> Date: Wed, 5 Nov 2025 17:18:04 +0100 Subject: [PATCH 52/69] DOC-800 | New GraphRAG UI steps (#805) * new graphrag ui * finalize content, remove unnecessary screenshots, apply to all versions * update screenshot, fix typo * Fix image reference --------- Co-authored-by: Simran Spiller <simran@arangodb.com> --- .../ai-suite/graphrag/web-interface.md | 123 +++++++++++------- site/content/images/graphrag-ui-chat.png | Bin 78639 -> 0 bytes .../graphrag-ui-configure-importer-openai.png | Bin 94582 -> 0 bytes ...phrag-ui-configure-importer-openrouter.png | Bin 102209 -> 0 bytes ...graphrag-ui-configure-importer-service.png | Bin 99107 -> 0 bytes .../graphrag-ui-configure-importer-triton.png | Bin 93329 -> 0 bytes ...graphrag-ui-configure-retriever-openai.png | Bin 119186 -> 0 bytes ...hrag-ui-configure-retriever-openrouter.png | Bin 127020 -> 0 bytes ...graphrag-ui-configure-retriever-triton.png | Bin 114566 -> 0 bytes .../graphrag-ui-explore-knowledge-graph.png | Bin 0 -> 657012 bytes .../images/graphrag-ui-upload-file.png | Bin 109366 -> 106720 bytes 11 files changed, 73 insertions(+), 50 deletions(-) delete mode 100644 site/content/images/graphrag-ui-chat.png delete mode 100644 site/content/images/graphrag-ui-configure-importer-openai.png delete mode 100644 site/content/images/graphrag-ui-configure-importer-openrouter.png delete mode 100644 site/content/images/graphrag-ui-configure-importer-service.png delete mode 100644 site/content/images/graphrag-ui-configure-importer-triton.png delete mode 100644 site/content/images/graphrag-ui-configure-retriever-openai.png delete mode 100644 site/content/images/graphrag-ui-configure-retriever-openrouter.png delete mode 100644 site/content/images/graphrag-ui-configure-retriever-triton.png create mode 100644 site/content/images/graphrag-ui-explore-knowledge-graph.png diff --git a/site/content/ai-suite/graphrag/web-interface.md b/site/content/ai-suite/graphrag/web-interface.md index 7438127d6f..927da744a2 100644 --- a/site/content/ai-suite/graphrag/web-interface.md +++ b/site/content/ai-suite/graphrag/web-interface.md @@ -3,8 +3,7 @@ title: How to use GraphRAG in the Arango Data Platform web interface menuTitle: Web Interface weight: 20 description: >- - Learn how to create, configure, and run a full GraphRAG workflow in four steps - using the Platform web interface + Learn how to create, configure, and run a full GraphRAG workflow in just a few steps --- {{< tip >}} The Arango Data Platform & AI Suite are available as a pre-release. To get @@ -17,9 +16,10 @@ the Arango team. The entire process is organized into sequential steps within a **Project**: 1. Creating the importer service -2. Uploading your file and exploring the generated Knowledge Graph -3. Creating the retriever service -4. Chatting with your Knowledge Graph +2. Adding data sources +3. Exploring the generated Knowledge Graph +4. Creating the retriever service +5. Chatting with your Knowledge Graph ## Create a GraphRAG project @@ -33,12 +33,22 @@ To create a new GraphRAG project using the Arango Data Platform web interface, f a description for your project. 5. Click the **Create project** button to finalize the creation. +## Project Settings + +The **Project Settings** dialog allows you to configure and manage your +Importer and Retriever services. + +You can open the **Project Settings** dialog in two ways: +- In the **Data Sources** section, click **Add data source** and then click on + the **Open project settings** button. +- In the **Graph** section, click on the gear icon. + ## Configure the Importer service -Configure a service to import, parse, and retrieve all the needed data from a +Configure a service to import, parse, and extract all the needed data from a file. This service uses the LLM API provider and model of your choice. -After clicking on a project name, you are taken to a screen where you can +After opening the **Project Settings**, you are taken to a dialog where you can configure and start a new importer service job. Follow the steps below. {{< tabs "importer-service" >}} @@ -49,24 +59,20 @@ configure and start a new importer service job. Follow the steps below. the service is using **O4 Mini**. 3. Enter your **OpenAI API Key**. 4. Click the **Start importer service** button. - -![Configure Importer service using OpenAI](../../images/graphrag-ui-configure-importer-openai.png) {{< /tab >}} {{< tab "OpenRouter" >}} 1. Select **OpenRouter** from the **LLM API Provider** dropdown menu. 2. Select the model you want to use from the **Model** dropdown menu. By default, - the service is using **Mistral AI - Mistral Nemo**. -1. Enter your **OpenAI API Key**. -2. Enter your **OpenRouter API Key**. -3. Click the **Start importer service** button. + the service uses **Mistral AI - Mistral Nemo**. +3. Enter your **OpenAI API Key**. +4. Enter your **OpenRouter API Key**. +5. Click the **Start importer service** button. {{< info >}} -When using the OpenRouter option, the LLM responses are served via OpenRouter -while OpenAI is used for the embedding model. +When using OpenRouter, you need both API keys because the LLM responses are served +via OpenRouter while OpenAI is used for the embedding model. {{< /info >}} - -![Configure Importer service using OpenRouter](../../images/graphrag-ui-configure-importer-openrouter.png) {{< /tab >}} {{< tab "Triton LLM Host" >}} @@ -78,39 +84,59 @@ while OpenAI is used for the embedding model. Note that you must first register your model in MLflow. The [Triton LLM Host](../reference/triton-inference-server.md) service automatically downloads and loads models from the MLflow registry. {{< /info >}} - -![Configure Importer service using Triton](../../images/graphrag-ui-configure-importer-triton.png) {{< /tab >}} {{< /tabs >}} -See also the [GraphRAG Importer](../reference/importer.md) service documentation. +See also the [Importer](../reference/importer.md) service documentation. -## Upload your file +## Add data source -1. Upload a file by dragging and dropping it in the designated upload area. - The importer service you previously launched parses and creates the - Knowledge Graph automatically. -2. Enter a file name. -3. Click the **Start import** button. +To add your first data source: + +1. In the **Data Sources** section, click the **Add data source** button. +2. Upload a file by dragging and dropping it in the designated upload area. + The importer service you previously configured will automatically parse the file + and create the Knowledge Graph. +3. Enter a descriptive name for your file. +4. Click the **Start import** button. {{< info >}} -You can only import a single file, either in `.md` or `.txt` format. +Currently, you can import one file at a time in either Markdown (`.md`) or +plain text (`.txt`) format. Additional files can be added to update the Knowledge Graph. {{< /info >}} ![Upload file in GraphRAG web interface](../../images/graphrag-ui-upload-file.png) ## Explore the Knowledge Graph -You can open and explore the Knowledge Graph that has been generated by clicking -on the **Explore in visualizer** button. +After your file is processed, you can view and explore the generated Knowledge Graph +in the **Graph** section. + +![Explore Knowledge Graph in GraphRAG web interface](../../images/graphrag-ui-explore-knowledge-graph.png) + +For a more detailed exploration, click the **Explore** button to open the Knowledge Graph in the dedicated Graph Visualizer. For more information, see the [Graph Visualizer](../../data-platform/graph-visualizer.md) documentation. +## Update the Knowledge Graph + +Once you have created your initial Knowledge Graph, you can update it by uploading +additional files using the same process described in the [Add data source](#add-data-source) section. +The importer service will automatically update the existing Knowledge Graph and +underlying collections with the new data. + +To update your Knowledge Graph: + +1. In the **Data Sources** section, click the **Add data source** button again. +2. Upload a new file by dragging and dropping it in the designated upload area. +3. The importer service will process the new file and update the existing Knowledge Graph along with the underlying collections. + ## Configure the Retriever service -Creating the retriever service allows you to extract information from -the generated Knowledge Graph. Follow the steps below to configure the service. +The retriever service enables you to query and extract information from +the generated Knowledge Graph. To configure the retriever service, open the +**Project Settings** and follow the steps below. {{< tabs "retriever-service" >}} @@ -120,8 +146,6 @@ the generated Knowledge Graph. Follow the steps below to configure the service. the service uses **O4 Mini**. 3. Enter your **OpenAI API Key**. 4. Click the **Start retriever service** button. - -![Configure Retriever Service using OpenAI](../../images/graphrag-ui-configure-retriever-openai.png) {{< /tab >}} {{< tab "OpenRouter" >}} @@ -132,11 +156,9 @@ the generated Knowledge Graph. Follow the steps below to configure the service. 4. Click the **Start retriever service** button. {{< info >}} -When using the OpenRouter option, the LLM responses are served via OpenRouter -while OpenAI is used for the embedding model. +When using OpenRouter, the LLM responses are served via OpenRouter while OpenAI +is used for the embedding model. {{< /info >}} - -![Configure Retriever Service using OpenRouter](../../images/graphrag-ui-configure-retriever-openrouter.png) {{< /tab >}} {{< tab "Triton LLM Host" >}} @@ -148,27 +170,28 @@ while OpenAI is used for the embedding model. Note that you must first register your model in MLflow. The [Triton LLM Host](../reference/triton-inference-server.md) service automatically downloads and loads models from the MLflow registry. {{< /info >}} - -![Configure Retriever Service using Triton](../../images/graphrag-ui-configure-retriever-triton.png) {{< /tab >}} {{< /tabs >}} -See also the [GraphRAG Retriever](../reference/retriever.md) documentation. +See also the [Retriever](../reference/retriever.md) documentation. ## Chat with your Knowledge Graph -The Retriever service provides two search methods: -- [Local search](../reference/retriever.md#local-search): Local queries let you - explore specific nodes and their direct connections. -- [Global search](../reference/retriever.md#global-search): Global queries uncover - broader patters and relationships across the entire Knowledge Graph. - -![Chat with your Knowledge Graph](../../images/graphrag-ui-chat.png) +The chat interface provides two search methods: +- **Instant search**: Instant queries provide fast responses. +- **Deep search**: This option will take longer to return a response. In addition to querying the Knowledge Graph, the chat service allows you to do the following: -- Switch the search method from **Local Query** to **Global Query** and vice-versa +- Switch the search method from **Instant search** to **Deep search** and vice-versa directly in the chat -- Change the retriever service +- Change or create a new retriever service - Clear the chat -- Integrate the Knowledge Graph chat service into your own applications + +## Integrate the Knowledge Graph chat service into your application + +To integrate any service into your own applications, +go to **Project Settings** and use the copy button next to each service to +copy its integration endpoint. You cam make `POST` requests to the endpoints +with your queries, the services accept `JSON` payloads and return structured +responses for building custom interfaces. \ No newline at end of file diff --git a/site/content/images/graphrag-ui-chat.png b/site/content/images/graphrag-ui-chat.png deleted file mode 100644 index 4d8af2709460b72c446080c73af321f1fcb56438..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78639 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 diff --git a/site/content/images/graphrag-ui-configure-importer-openai.png b/site/content/images/graphrag-ui-configure-importer-openai.png deleted file mode 100644 index cfb29fce88eb35f61c7a0e9d6fe9df1b11bb03e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94582 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�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 StSFCwKP@%AOQouIxBd@&FP<j= diff --git a/site/content/images/graphrag-ui-configure-importer-openrouter.png b/site/content/images/graphrag-ui-configure-importer-openrouter.png deleted file mode 100644 index 3d01059d2417395c036bd19be1efddb36e9ae4a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102209 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%0DOuj0#bIAE|*Lvw3RO9 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 Cgd~Kp;&8?futQjl)fToU0vL>Ih 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 JGtL>@{U2v_znK64 diff --git a/site/content/images/graphrag-ui-configure-importer-service.png b/site/content/images/graphrag-ui-configure-importer-service.png deleted file mode 100644 index 818fd35709f06d1cd7cfab358695d27abf0b75ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99107 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 DAN#PL diff --git a/site/content/images/graphrag-ui-configure-importer-triton.png b/site/content/images/graphrag-ui-configure-importer-triton.png deleted file mode 100644 index 7b48f166fc5b848a0c863dfecc7ed07640ccbcc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93329 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�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%0D66E4r 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 diff --git a/site/content/images/graphrag-ui-configure-retriever-openai.png b/site/content/images/graphrag-ui-configure-retriever-openai.png deleted file mode 100644 index 9e0b892f462ef22dbd282554517161ab0fc715cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119186 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%0DxUtI7H^ZKR|X!BgZ@57%K&fniE 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%0D&U`rghvRC%*=d&|LcQ&><p0Yes zwwBV1y^#HdlTU1}9dBS4%SE;FZ%Wg}g<T9*UEFf!@Vh+|uiBTWA6e)OKEOz?QW$RE zj&dp1dIn7?D6F`#-tUN1KS=2ctli(ITk)*oX54utYAg5xsI63P1e9JX?@c~WW<CYa zI6(ku16dxwxpIv?QXLAGc}!hUVCSX&ycvCcv%DEpeHn#^l)L2?4N;!oZl#Ly<?VhZ z@!F{SeHc=3@|gs$x~vUtfKIr1o!I94hKlA@vC5@WB#Z!Z$5yuw?MeMxh9&=wmm6`F zJnI8tA)F9|0RyB=-sU4eP;(>+R1Dm2r*IShb=Qk`>?MBrdT>{%3*<e!Vb$7O5DMvc zUy5$lcc7<aOXb3DEI~-e{CcE<s@wq5bst1ZJ&4F;Vet6f4PCWNE6K~4fg4Oz_xW>) zEU|W~d>t`#qz!!B`3gD+O;S!=vh~;gaGs*xDccd(>b<!?nWbW@ZV#bnQxvzz3q-wh zbX(v3H7>Em<4RQ*!+wiN&d9~jEy>Q_&REE#jkZu7^GuaZib8L$A#Nvqc?xT3j7{04 zWsB6q23M4#_YbHan<^tLhu98Q`iEG&M#X;Z_C99Gg1*qS>Ye4y^G_j|O-4Sy47ifz z5}qH3dS{|1t8Lx2zo_3Vu^4%xyD)jmpN@^oWHs7nJV_g<HN9s38d8Uki`tu>^1KFC zm+2Lvz@>!6lv0bOm%LQ8453QamrJ0&)FNH?=E4}J_z7FOEuk4<61LtxK~IF9;zkEA zi#3e5|B%-^n^g1eBU))Cp5em`dU$$teGeOpZ>)Ty!S8rZHW6|CU{Y&2CY}jc{t)9H z*>{ava#V)!I+*D>`4j)V$0MZh2083O8CT^uwV1P+BTO3<me`%EKrFVn5|Nx6rbs}~ zJ7qdg?NiF&gFQGX`h{~L#Y}EOl4n-+XX_`=PvzacLGc%(t;sOe(`fQ#N>q;Im)D$n z6_(g5vF`f!A;q68J_;;E$ctuU?T1_R#~xiT2=g5N>7(Y8$W#hk8qq|2udxkTwt0wk z1Vs19oFV#U(n`E6ttmdF%xkv}aUq;P+>$xpb$iIpz1;9Te7dH*cCR23qv|*$Z%22V zD;#ajV@+VsNCMgz;z33D6L<fxLFFU>U5YlbzC0C+I+`ILX83W5fJttd>rH$8n}XUN zYQwsRf!h0#ZU|v{Pea&Klh3cAUD@OW9EcpH)1(j#R1%s#tid48mk}nq;N(0#TfP=f z@+we@+fGw~j;M61I24bVFy3%2XL%uJ4ogNhD;8AtncQ%jReR~IBl0cOh#a259Vp@| zm<lWhyLegF4c~tIg|?+6b8Rr+&edDZ%Is*pL69-NR$9pgBdO>>3lyi~3yyQb&0+6? z(w7D?uJF@H$A>lym&J1@jy9`8Z3f|dpH=DwlGO1RZj*PSSK11Qa|SLpqH&g!2DzO0 z+~#}GY5ca=@lY=O>>+j>|8$h_!rlFFzMjea5mzbQE`fMkh81s^!sodoXr`w7d0MnM z5FeF&s`;b`?ZE1V=oRE0=LU$NJy9|;I1XT_Va9*)1XWQW<&1-a<_@>p$B(%SRnj>M zZQp4G%l3vTAo+b{Lz+Bt0hlbIbW#Ox0$>GO*G0!I+O()R8LuB7KOQdd&A+#9z|jo@ zV~0)B;wwVEZlOTA9@Gf0&{7tmsaJaLxrAM}qWBq&(((ovA8%mI#xnLf3_nerii)>k zyXsmCjfp=^QE0mr^3k+6`$=cHL;T&=Qgwn*3%CcGezJC+pJYll%{b1|=UuE$H4ID# zflBo2h^*}5dF>3|)Bv386Ix4jYVsa2+tMwc3$Elg@h%+3eY61IZv12P-zjxWy^x9C zki$j7kUfjOPy-EPwRjN+4Ox}Vdwv3{<GIVIwktA4;i{*c6;YUd!03&Fgs6vhr4ydS zVglnH+L`<+=4Y@U$-o(}z%w3)Uq&DeAGB~+{A*&hA?H0x551?M7FveKp>#;hSZG?a zPHR3YlJYe#$|%!o(&HSG_%cU*Xe|GbIxi!!=`QNMU2^d;rI<Gt?eVn-twXv7&-4oK z32<VEiRxdZ=5ILX?f5<Fc*f%rM8GjkVV<P~*(ZkE7_bdf=>tU-xsE|A%or?j<GT_G zN*1*~6U7iYL>ca(t*7ceRS0^n>ql9i+j#Kt*Tw7l$klJ3gSl{ZV8`V%&)7g6W-(+D zR8I?p@2<UtruE;-BySo%i@#)X_K<zjzSl26ue6o&Jqbn$k3ZCh7;O#0LS!hyQ%bWf zS((<(DzyZ1ZIrg|%J(Sq?K!;bYlDSjV|7a8Mv<ex?1J)hPUsdcCzO4?PH*+DT&{ZR zvaV1NR2o2Rs5mSm6qKD(Eokmm;2>5l>Bnjb=~URrE)saODsQrzs}~;1gLBLQ4@Pi4 z|59L5*)>AvrXQDArL)8nrj(h7y+@WE>NOjxy@$~js=vQD58tI~w9HlB3&@)n`mran z(i~rlz0`OgXEv`nS+V2=DLf{7KItV{luO%-+Ppcx$5aQvO{z&B(shZ^hb~s3x+kmI zG6=G7j+*C9Sntf5zS-++F`%069rO(}hsP#R;oIWU2-nWDnzryeq3<?nk6SliwR&8} zt`bD4zrE9>`sh;-$LwbDyh%*x$*QZaOjvUxg2(@4_GO3R>^O1c8E#%!m%9=BX(-uF zzszonTJYe-3MzWDmpqs7;5sD&e2QJGtu>ql*7j83w~2bHzd}D#K;hdtSp@dCsRgfD zO7MWO#+RRjtoOA@oQ%s6j}N-_=ZBQdCnRjJr~zNvv{!ImTe?b2PnFzx5$aU`6P^fk zv7hQ}a|()Tr%#2RrrGTAB$7%bimfn--|?)I=eo7+ck&3g`Rdl!dEABtp%cU`ZHLX# zd2AP0nNS&4VO^4S-)gG7S`NU50OyJh_iV4MEt{ghNPQ22EOu#pT42=MQgX<A>T$Z6 z$a#*@j3&I+mUmxaU8sDF%k%pN$pmMf=h!4uVkqkhv>r_my|qyxlf%)n=$!iM%SpKf z5yN@-N&EYctB<jj+wdJk9VB;0Uymfc4>tCdgBqUIOavjaPTD`r3uD5a?X#!rV#!Bf zLvC3CZV3&-0Z-YD*q*OGO!{<M>#Y2clLoMjkxS*fEN6!L6`2V=boEvI21Xny^ZYKY z(AE-*5A#%*D#OwfKDJ*g62sZ-hf2`c3rk!Fe<>SZ_0%uEUaNL7%rThf)>Y}zP`fE^ z&r0R{EFT*hbg)6^Ubfl35>*{yYgpAPZ~|QXSYS#cxpM2oP`{xd7gWn`E(?(j&Bjg> z8GPOt^o>I?zwjGoj@t8b2b8h>-&j1sunaDoR;I)w5*CvJr8+)d2uEd$d05^WsCdHs zItHUJWQE)NEn=;o`HrRX#|svR1yE?iC+7#kRU7?N?5c_PaHVY|PkQteUh;&s_2#G~ zk&QYKYrlFhKb5!W>><PSjhj1BtF&)6v7%HyfIs1rYyYRYA|r{#*8}ovU^Vmg7^MRm zpCkIm?|;EzS*XO~H!Z9&qrAYUQwAj*AMx3+K!CMvvSFS#B#2fgD8YXl3hTmL3jY1| z_ZNq#NOwg`W$A&L$Ri8wHwU(yv94jRwG47PXXYHflum3={6gMnJC8h=&60`IokTQZ zF}XmPKF*_SO?_IC>kW3O@1{PLL7Zs_R;4q_mPof9ad<del7ThT^&?<lcARlYrj$8e zDPS=3AM`NeLlg@w5Yo`duRY$HMMy)l%06ZH@s+Df5{ecFtfaei#ut*C$Go15<v@i} zv>`KTTRM9D04nW*N-uTyxX!SIVYib;*c{RGhyCdO19oY~8-WiFO9~rFGHAOt$C+vR zffV~37EE;G_tKK6#slY$<kfO23Yc&@82(a*P^aAD5L|q&k#Ow4`+cy)#GD#sZ3;^4 z(uGmTB;>pIkw<5?ZT1MhB&kAqyXt9`?a$XmN`L@TGag_ZbhvBreftECt&`4v7TB)l zDLhjgfOPhk&?7DSZ$Otf77Xx&U!cL_s7Q1F+uSlT|JB^zR0DXr@U6(!{`U|06CNM& z0p7Qc-k+KOy4?S9TK|6MZW8#Nh!4(4cbI>K&Z&|9x0u19690fkA}6i3*x;~gUGn4q ztI_WNV>|So$p(nD8k%pec6R{j;{;4sn<)is^n$-CGuO8GVKyl6O|%!)Z+t;gG)_qS z@HomwV1-I|d587u{4Y%tYG;6X)B`4ryzLT@2|Hlkg*V0l00t{SG&unZNC$BVv^m?= zz~CEuaRwj=(|{7AX-$xu8!t1Q0Uo$JwMg)4NAbxD3DUIIVEX9A4Skd_QHI;;-a-fL z==r~{Mb<UauvbjAgZY0~G65zHX=5#Nb@<Z?NpS#=-LIQtCAzieNb60&os@q7w*S+3 zz=IVDo7Di{yZ|MXJ-5Q5YCEJK9VWFyv=*RxkY2U(f2@OvNcDi7oYh}mJ{Xe3cSHho zloq8=IlmK`j(mQ(FbfqnbOAn>NVz8&UV<#Gtu-*K+yTdeC#43d1SYUrut2b=!2Wh@ z`jEIA_!KSyFW6su;dCljO#j;Vq5Ej{x$QmS#ea4%|IuXMgx>1x0p?J1)WF@h802*9 zfNz|E{jK313euIl&5|GFt<)gd9{|g7!=gli0lyXSSKs-Z6KMzX7#wRo!9{VR^*DTq z<%J}_l5||VwcWO>thyPJAYGisNX%yk03ObOPBRur+}Gvv0G9Vj;5WvmfeZcuFxs9V z=l~AtMB%x>Rz45_)AkiVm2!oJbiP1C8U6-<*`@DwznHYEQSbZvt-rq56Y>Gk0gs?B z&H{oMJBM$hV${-lo@NJ|0_e^OI4-_B6*=hR5fT=}7vB4(m-f~j(a~n-iW5%g2sl7{ zKsY2*+X34<8-FB?7}llI+`jGx@U&?FIq5u(Ch7w4&=$Z2$;R@PXitD0XT!ug(*Q^g zczB7>1_Hdlcyl|@U@V_hhid+-3H^DN@5P9Z6>HA`f<gz<Kbr#!DXtur?JzvfbKad@ z*aTS3Z@eeV1kPZ~L3z8-XI!t4cEfm4!@%}`WMSqB@E{z|Td1&}YtqN|jPpyOt$sI) zXYx~e8XQqnI$mbFpraiQd!_QJPShcP$Xl_$OVFEmq(yhAdd&Y(IYuOIarCo%N^ULt znx3~=*52$w_%l*yXAR~<Je$w<qig9W`~{b>@d_ZloPR3tYaiPn_%jOGO1k8#(vUG0 z9w0}7IPDssWPT^_MTRqZcNA@SsQ<=VKU4aAnv|OP`1;xZd6krfe4ebP@vv3UavAu4 z0OpdRUPy<?hTo~?676heV!-GZcpWkvVN%(MBNX-kqmoCDH~a1e+#Gx|-wR8cHpt%E zwAg$#8O&JV!8-u1?|j(08<;w|TON0t9W#=Y%1&6^Vu6A<Z>P}k?~Sudf=(lG;fu!e zEN$X%tP)-ZS=|5rr)*APiu>FIc;q@Yx*plBrrAeQKC#RFBM1a=dkX-={J6;NoH$Z3 za{cLpl^r~tW_J)7M~`%wwCbcVaR5v4j^pHqpsC<lSKR;)#p$!v%w17HXU=={*b`vN zt-Hh!cdE|5_gantqNjw6IQ}Um!S&o7q@(5f(wm(&&s?^;66y0g<bm!058uM*-?HmJ zp8QLK;`5tu$nN4d;^*l7Ax<<X8lBk9Wd+dD>ArQ!EDCfXV0iVf_6AJ4OVOy7^uTJq zgy48k1%rRyG5K2?pD6%jBCWbf;m<W&J&^|gj$_*Vz`45TWOr_k8hF%O4P`xj+SMW+ zx)AGtgxgw5dt7urw{s<K07*GEo#K7)qnC%sY8%)O4p9`U%mr5?f@=+eYBS#`JI$%7 zA3!<{4D@MtRHF{<y%G<_fKeYFYRTW_CTj&N>qq>YY5vMiVKP`a_;ODVW8mQ<GotuS zuF#Kfd7|}|+olZueY4+JX7>S3=DhOtA9YJPm;$>Jx#MH`9FnsogX%$aQUjm}>HxoL z=lcL@*l#sns=x4uzu2rEEv5vfE9eeDhQxvKd_)^(j69WnAD1*1d1m2Z`k@Cneyc=H zV{Eq=<2KM(CIpUv1?!);>VMRHM<(UMn33Wod*GPgqUzfczI-zwgn!EX<x%Kd^pM*w zfh*?v$NR7A(b1oa6B3XRAS7E9D^SS9#Z$e}l|zRcygzy$GHL@b^+CM#K!kO=g;U(j zJ5|0XNpr@=vv8Lcv5MZll#3nu+eG*NeEB33dG7^JtS-!$JyWR&H=7X7Kzrf+*K0BL zmSJosuk9~s6kGXQC@jMCdqWaFk0Tc<1poT`7wu>^x;_^;(<aH}6(O|^TX(UeZ~gHS zzt1Ed^Ef6`&xvE5=v!Op**y#v^x<4L_R`e{;wZ=$ffkyLm(K;ne(-78<LVa`Z~xw> zaYh2`r`Uw}Wv>cU1cgm@XB+Kyrt8LcSbLd#9!P!@&eC%^+0nk@#4w9}a<#?$*CyL3 zZcpnbyWz?QqYbJ|d)bV8q@|;%J^N!@U~}{ID7HH?se+F0Dfq3@Fm&eX9SgteG`<<g z5Mi}n9T>g0F1nGFll->MPUdK1lzNIw(<eGCg==O4ke`%0?1EMVg!yKmqz;1^GgzJG zvqmV&bGdr7aJ^Iq?7xpm9HmUb`-HMgA$cY4&+~8#yPeNR;ON0~<r8oRsfxU~INoMG z_}w2z!lLp5{GSK5T@FJS6lj!veB0<cYI5ZXIPK+%LD8Ss=I&~y574u>2^b?*zQ;(W z@>xCv6u4@c9cUfK<Vg<*3eomTeevN!rhlDM<XQcIX48CINoCq?DC{wxOohe2&+2`G z{QK*mH@#2#@KrRULh5&4bQ~&=$x?m4t?@ER@Wz9gddD~)R7}C+v#C4AXK4bq2DQds zpo`c)ne&nZinxILW&)3=gV9ks<Jy9AjfKd*7{vU0(^+U+C)8ASgJHh^YC_*=vD+tX z+@{&U8I|({gD@ME0v|r39+IQeO1BscOw8V|nib23>p$(5zY_wi_3OKVv<a&F$idB> z!snqRF`ybh$D<Wx>rLWF0+`*41M&C{CQeS}M0PDkUh`k^tpPZjf{WRBcOSp_Rjj?q z3=(5p_dy82_m$oxqt$`*eZVZOmqkK;ylsiT0M6?&P3~t@49ned(#TPgX0vDG)@-9z z$Ip7lO~GU7QT{kCKqqp$pW2Y>*H}#4_rt_bd~7zHJo7g8Usv<5=KUYvK6`p^;Mp)3 zJ;?p~s_FQmv5;?Jo9EdGA-&X^RdDbgCzyZFHoEna>$=l{2qI-d9+&;))O>Lt6v24v zR>o%|bdrIe2}1NQ3GOVU-zg(DYO_BAJ1F?_73gE%ff%RZDs%OTTHBn&06Ih%8G9_) zsUA6w#s|R2I0<C)^a8eW`%9fpUiKV;_|4fWZI^9@$zbB~_Ec}$6Z=<Gk96R*Y;S9o zL&?~`xP088<j#{%QBf;;!(cg8JvxLA*#De6T?C<JQHhn<^YvXr{A_0bzNDZv!R81* zIB4?yeP6#N2(DN--aGbhnfgiW2F!Oy!wzDkX>8k>waedy{4c)V0xHV&{Q?z435lUY zx)G4>4rxTXTe?AD=x&e{kQ5xcLrOqm5D97N?q=wQ`*F_EbAI=~?p@2}nuWvo%^Oed zy&v0|Iz<ET!&hP8k8Gw=z___EqY-KX+8}XZaAb#9EpWR=8k|f|E1|x&&-=1PzUehM zimlKZhu=ryGO9UpUMpqt=T%8kw2C{PLRr~xr%h3_N|0C{4P$lg8&B0(;KMAZs`Hri zo76_hhe-L~$rP)X<Qo*oM3*{%;xN-b*-llfRKJxymFi+kee?{K6o?LSJ>#Y1JrU@m zX<J+dNdLK&qT&?(*P!n-iu4vid;ge1I4oF_zpj!BnCfh2f<>H9rc>Bq?|aO1Pb3pJ zPZPA~+-fYc*Rboonfks6Y&wYbuj2QVj@Y4E`QJg;*yfVjiTlkrKy;u+{>l?DwZJN~ zV>aut#pBq+iq(piy&Goiz?J9(tZj!@qxmtw)=24mvCgA_b0n|B<bDKi1%RkIUo#%H zv&Mg@D!c-s-Podf=G0Hb-sH8Uwavyru<sDL#2$hD$tVrV^2jaww~h9HbilLxh`r>` zw+L5<w-=IS8=DQ!kz(q?su?kDXsWMsKQIu27_|r5V}!7#z0~K&#b%qG^?;`)4xh{d zamDC2I=`}CXtm>}p{ACczzpML=P-G3g!4j8rp9EmY3}S`p+e%r-s#l&R~-@e{S42@ zrfCZ$oB8I(liexRm4e*cv&lkQLp7fuP&98r%1eFrFy7>|$+Gv7<^T7>{P~F_`Jx7O z*N_YFp!8kwQsiC24rt<}v_^qpD-T)6k|V0Lw1Oh4KsK9cXxj>>X1N~bkuiag$$KJ+ z{;pJjVlh#Rv~eYuM4yudfsLKyQS5IHirkk{z_V82Ea!`lwfNq8HeAFjpQ2H|5P$Y= zcalx~IC{fAm_*^vV*TG2NYZV4j$W(m;tbH?R3u2gltM3p!!WQ{AE~>mCBo1X7*uJc ziGS*Ub(7tj{z7tH1s^*I9J`);#q^H6?st#pi-1{k5pT$rgF3wR4R^-N)IlMlk%U`I zw>mlEPs;kzFBFY}xy7MfQ1uJZaNrDE);9ZmfxD6T?Wq3tj{o^vHd+)y$)H7$gJY1V z6&vv&#SU+bQPTj>&UaLbRA_Di11cSgK~_$ho2pLwG^gU-)(HQopm|L<>S5}|=5kjQ zyKx6XY<fV%$H2fqi22X7K-mv^Q-F#5(hsb&#<5r-)b==45GAV?#O`AS(#QOYWAMdN zH-?Do!TxN&ihQSJ2k>e58%KdGm$^tKF985MDy`ITTaU?@e(=;mKaT&8J^Zu14=+Sj zXcyfYT1ey+x|CJ%1ZkghT7H5r^!Xt)!uD0LSv^KEOHkXwjtmHX2Usz3PJncII|4;{ zRP`E22h9evgpPn@y$?wDXlS{Mj}HOYn+)6>>sDZ-<Cg6Sqh>h{QbB9o<?%+}?o`b$ z8$7XniW^|SK-5T`oi1+F66SV98Q|jiUAG~E?dTF`OSn<Klvyuge*352fzF?ZM~2)Q z9!?|KOWESs=RK2lbzuQLf)aEU6%EZ*8~Nx1qvq?^fPsRi3+<BbK3eUeqEpIBDqQw9 z>7WOq4mM!G;OF6@-W5~ljREG(h4&-^#8ooN=Kv#i?#NM{m-cIiqfaH^bbJ~jO7+$( z((W-~=HIneyAUV%%aIjOL-8>)`upw&1auYtISY59kErTZATl{r5ZH*YcJ*7LiG_4l zmAfIOy7=GUf!ql@oF|^s$<*vXrmY@<KH(~vPX14T2P1)tgtVIWB>ee`%dw(KY_cmA zR;3?*f5iV?27d&T>_@LgCN27j{`}(qeSyUad^qyOYUO`C#(&Q3-)^KzsqORBp6NHj z(t!W>|JQ*8#*WSG|M!F2UXwQ^N~=(RQC;Q#?Qs4+S)$D#){f0G-Fj-kJ^{fXHp`w- z-XA}8Cr=Ip1;9d4FsSB_y#`aIs!*RU91kS_3Bvw5i@D^F0&sFSf2Q+1!QikOfy93z z7cQobOzeC8&zTh^#%l1nu3HS*0c;Dkda)Y(@R({&k~^srI9Chzf1jw$4<Y)TKAFdU zHV$ytJCA?*@ij>Odxx{I+vGL8VavGZc!0fkB_{r$)f<scT-YG~?|UAeA2fkL9@had z1zy4~KK*-*L=})1v*6G18oF6o%s#(Jq_k2CZuo8U|5>oM4Fp)5iEy}>T)@~yxHkDe z&qr+q-%#Hs6xz5DF2|H7lLleIcl%FJ5B&0SmcNHg`w=i#>&h5)q(KCu^!I7P;((jg zO}$3FZVCG;tV-=F9lG^rk^kAw*KLBeP|sJTe+~_~EEep<Ac)c`p;>U!>UX&LS9%d{ z2oE-DM<gZX{P)M<%<v5ptmh>0zr^A>+4*Os|93qWRpGy<cM6uK+GT5Wbo_fX77gJC z&WZQ;h3FHG5-9%UFaPI-%m{D=XtzcO2mW{OZ$SR|VT5;hBFsi*f4-7zfPcX`F^+6v z$FDZw{|WI#;VBpGQ-LAMl<9vqEDi}-(hWmAo)a_6(JkVC4)aZj=vxfNyAi~?#NR(B zU;1ZRI)uV(3IF%({MTBF5`#X;5Fy5CKl%T8PX`T<Of6+SuZ#Zu@qd>8&kJ&Nq&L(t zkAIZ@3BUjR)1Mc>Lw%A-a~wp|{m)VTvmF1t03jj-E`LJT5c_v$e3gtYzi(AL{&aVS zLD3s6Za>G1iqnAr@0sznmb2;Jqe!*rmAJ#png8tOp&WTzF`%4s=!v4mhb*bMI4?B# zE&oT<Ai%F#17!N0ug~m|k&)y3KXORxW4io(1trNHw{MIu&Fu}Rn$ORXu2V(f@5C2d zO)%uU&2MQelHr9NjzXT{Qv=BX77h+|KtMnOlQugtQYE#{&Pp%1VmT6J^v|I&3G(MT zXCSsGdv4)x_Gf#kiQsW$uzwaQjF1HUh_(6n-<4QQ6KzJT?@nK%d=)7JL}YJg>g=$H zh_;(T6lne&wE!@sKgHPzc?{h}>G%eMBlAky>lYFS6=7M4^7ZJtE9-(}@hdKyOsvMB z$}Ay{d?s?M1PeuiJ!8hdpA3sSfcKob3ziOKmbyTAPVaTT{{e_E|4LeZ6|1WN)0(xy zP5|D^=9|?#`IM&865t(8WboxRze=@L&p%R#?<cnsj0>86N7b&ijCa9qQ2f1BpfChb zP?8jUM1-hHQ$9l+Z9XGUs83a}a|@}77AgkaUtdCI7GZfd@!i$Q)=0C53n4J4?V+sg zyz(6l;QB~IfIO-CZ4XwF;kQ;GJ)<2jthbxdFy#aiEM4cdUK+sXoivm`BvU|~M|?@K z{ZMr}0_ropK$V1e3n)svm%4=fKBsMd$VLgYM99>%@Uq)!`G{5~P47(S@eMH8EPh}; ztOt2KcDQPMEnp;H#I*vfX7+cRZxE+rp7ZnqDU}(JA&=BpD0u)e56QK6V*-zZL6K^~ z`v->e2v8O+vj9pkq?%64P-H?b>m(`>1cPu0$ae|zUk@mwhrk=<v&^5pi)L=SHgr7M zgwD#pzk6Aez-+_a6DKTTtBzehTQX5D_r@p=BKP5iUei<?LKdA;HjWJubI%8kl-H$Z zXHK$zRya#EBl2O5J^(|x3h}Kj%)@VhqU90LUQp^yVX5FSHlY__0@6r;XPaHv5OKeX z&tkwt-wn1wC+2<gP;Hp0cSr#;LiweR5cSGkAdE#|8GeYvfQdge01^D-18QlcSe@}u zirUq_=Ih?#q7iPul2zmt-b=kgyUu8x?}9z1M<&{pMq*n-IYG6yQz{ODz?3zffJyJI z5gIS<^8Yb?kB}S4hwfMIs;zctKc4)g)~<KTL?vXCbUEFeme>~5lb*QtGg+IemhFNP zCYt}aQrubV3?So|lmEc}L9JX%JB`zp(oF8d@Ci1Z(vQlDu%3ZA0g}t!<d=+dhWju1 zTvo?wdFDMN&h{2ICdqJ;^p4hhs0Kx@o0DE>%jwiR>`hu2%BItnDG-VDWI=Xx>m5D} zuSoY*t#qGEF(~Z|jx_pM6ul`Aq&nzt<S^^4Ww;UygpL)d$fs-AL9{=cr&(NVE>*wt z&_b%N>g<*~vz=N49M^PmdcD21_U*zR3$|Y>J$;{6a=$jj^TYNL^s|!X{m}a-QTRVT zVIayL=5{Fp(owV3%1^!7$@S8vQemeERttG8Q>gWvxBIsS4pTJ_N)0}f;M^(fBk>u0 z$o2ENwI9P&?{5h?%oB)y?WdgC&B*sAF_3KO{q{RbNYIZmky;R-kn%>UU%-98!S;FR z;tbk-6@`Y?-OZ&LP@sX2uL7dfBVfwk4kA3Y<gWx8dAT%BD>ay;5HR~B*&C>a@JBBg zkcLionx6K4U<^#ne*6>_6#fAbgS6HnYS@!>#~jfh4-`Z(O)1O(?FY)gqQE3K;ml9H ziGpWR)Jj=;5||kR?ysMs5mD2~CB4DW2xhdLZKx7roRIxv@c()tNbSE7Gw0=AB7;JQ zhU6?0<Ptj9n^H!O+nb#7Eal~oYTUlnwwxgLqdv^QjWnfi7i#Z``Eom!9{(bX`%t3M z8~XG4TUcEC3*zNV1Uv!)`ZC?nh#bvwgLuAY>p$995PJ$K4CPDk$~ZBC$C+p9w8Rb3 z7_>fpTI6e+BJcHOg+0dQBrCcOhbW~O_}<!m6kQ~_Su$c!X$Y@_TQ(nO($4#(TDA(D zDt3n@K|&s<jMX2>62<C8>-6KS{xY60m>4oLnv=FekS7|o#aV{)>LjLi<=cSqg}hO} zoFBwbnzR@ksu=aF-!%vosT3R)F7&`B^o%NnkXdO}gJq?)LFKyK4n;n*en#Jz^s3*W zlkqW;onKGJhcW)+@D`B+c(G-l;n0&as6fKWWhjNM1~QBtv=oCj`ae<ubuU#h;F49p z2;2vXMeY)-vq0%k@M`lje?LhCfs|ps0%0Z+%FIRV9iXVtRon?|W&tI0urfjD4^xtP zNI1hb<3pX~^eK{)22h|X?xGyuuCtq21ym!FD!$$60Jqse3COA-T2&@TKn0-}nBTZe zUjt0qn$`^O;=~HafCt0*gPUO&QuHXzrL3Wqcwl1~Q2Or$$nzEnxAs<7#tz^*+bM|U zaPBmZH&0^1()rU3VwMV(g4cUa6PTlfEHTyQXzA*B-@bt@y@7_M;LA>YLSPgp-6deU z%%I_zt@Q8B{`SBZd;uNpA!g@Ul^dvFGlQ>gigF+5aofEx;TKeu1oK)#SWyOhTJCpo zk&?sE$r5xhekI(u9Er>smY6eNt{y9`R=E20OrzPX-4&nPcp6oUN)yWPx~|uj-r0P} z;B)^@fp^Egk-{2Z>xt%Z(H?fnyCEX-^Fo${WwA)7!cAySze@ZSA-{9s8pT(GS0fCn z1(sJ~KEg?}jm|rsA0pLPzwj6)_NdZ@VauWgg;@(yd!6ma-&`K`edMsnDETE!bTH+I zenaI~dMCl}zDZ1xU4jq}Va~F|G)}<`quSxw$5&`YdZL94KI7PUdL7dZoA>d`(;9}j zX0JzL{1Z9|(gAe|{Z{WrBN?7x-mk`AfpQuD&0H4gFMdg!Ng#dbGz+n?1UxktnuF$O zz9J(?k|N=uLHVMZ9M3Wo)!4}g=IA?gbOS|D0`VIIvxQS6$h){h_dmB1^Ev<68ZC&Y zhEcxC_yi=bJ7+*B^n?tx{X9<wD8)*g`f|ZDypW)ObOLu9EVC_3YPb5$kF`<F(z5Vj zo+c3VKqwF&%AXfQGUOB>e|K(#8*aO4>frT@X0(s&X3j`0VAhTUY}(Y$XBffAVwN!w zlMCj~XU}g)m!7;Y2)!2ots_uK7=hvNK%m8~rG9C6-&f>z+tCUAKTk=pJmu{}=EI%* z;L8YttyJ<8hh`|8IaWQR`;Ke<O9`E|&nX#Jck@<~5%s}J0!n@1OomsSAE_0KQJpWR zJsO=Dcg<YhUYa(sm>rEJP<qIjAthJMeM_yYH=83>p>1fwOJwkI<MX?Opr$T<W1%$d z?ZoevkWBw-R4)9v?K4gw5FBjH;>CC!eeQnGf7WS=X->9Y4$QY_kW@i^!b8ch+-}f7 zfam*+qQ*_z;4=X{My#^K?x(dbl+HL`)3x5DL?^26TeQ>QqcPc@c%d+0)zQa-w2Hc4 z6Jujfqiz{h+MK^EE!JcX?a!`5&~taY>@{mg;z9k{eVk5L=XR?j^nH~XM^9$)<90+& z*6>0!ddiozMCK=*clv~aR+t(~ZA*`FWcA@p{%&*l>%xoepPd{m7?LM-z#MIo!x1BU zVw=AJ>{ID`j!@~MIdV6mpmQ3N_i2b54-q9$eb)Ov7c8Anbqpwxsq2RZ2XBtt6vWiW z0-3EwMZxX$xxi5_Dgqyiep4+_l<$luox>dqx>L;HWfRAQ<py?_(0OEFgbqD(S^@+d z;($<SyD|$X;Yt7#>zRO9$z@=`4l5iV9`?v#1QOx-?7RG9lPVSPkMS~H9z8T>o!X%V zspgA9pw}>ijNL&3MMH!G6O77`S78y1xz@cMOd2#h_r0?VzG*mlmU7)J+g!2Pd1O9Q zb<{mR#cr#UdY;D9EzNVFI~bD~*eKU?AIg<vYH{|eo}j*4Nd4<q&Z5J>==4!(yo$_K z?(7OTLHz?RkCS$Mvy)QywTV*^IoorV{JpF?+rnLXHT``?4SCXvOBIEvl|#G$%Jx@D zkDJ9Q62!@yeW?JVXyf?M1ukPsUtV7dLSntR0@_PZsl-=h(e|6AkOBD1&Mc1s!;1sH zC(CBnDKj=c>llJUY<jcL1>Em4geOwL1q0m%&F_@==f6JBQ3QV%|5|r2S-#ZW@6;8E zlXw}0x5?@S{>ANA+UOaPc58llSvlzXcJX74#fb;R?dP<)W|Dj`TV*$1nQ;gWOpE%< zRp8RCo6YQ}D&2S-D&OA?7Z3@&{i_jNMvX!O>tGcedjyr;<8jvE5ujH{g@ktIoY9i7 zm>HV0O(Nh{Ycc9Nn?cYy)Aa*2s{*9^4VZ&@D$eD>#`##Bs#$iy@7^boc#mcpPH76L zlE0#V>=X29OEwD$Q5X3c9@7xUas?$i1FcgUmrZgc2SKkARlo(c{{dF0G1Y5(06t-= z+TQn^wBUl--<`L719+D;FLEte=cmK=sAt}>$uISbS!5TBkd?8PxHZaw!53UW?GDBk zx)3azNNdH5Ui+kTkpgPW&SQE}Zj{S2D@cVPt$=Dk3%(3Y!G~>!ilTPP$2hHgFOn8q z4i^)(0~%qx6*$2ZZO<^k5K1*96TB676mH)eFs`0*9UHi>^BE~ig%N<u$P|Wra=6fM z1Rv%K0y-Z@K>xWXi9z)(&=G1P`-Tg?e2W?lsvw--0~-hN_FUX{UIqp1U7hZ5p|N<u zoS$vL*|j?m7|`bUR05)M#nK{IG5G4KpX`Cr(^re(!b{D8Y}>&T49UFNi$RzOmUN`! zpd*A(mouQLZA}P+vH;DGT89OLuv1f!@{ho-^gZ;yI4lN|04r_-4g+GRLU-XK$!?em znm7+C_T5rOyBArsGF`cHv~?S+Pjjhw>JuVlu$<9UXp!^Q_LSq4JF(Vt`<Vr9yz)x} z_WV9`56`Tq5BUzWEqX07=cIGQjBC>BmcThLzN%UPM<v%m-<XajV_+jeSdm~L8H+Mv z=B}eTi)u$gMR><l`nU>z6bMN6`IsGfdi|^BJJ`Ljc^HdML!nx0MYUR)p8EaZ5Bsk3 z;Jx{J-LS@Va{@8Ye8%_1w&A5l^kk7OA+g<lGYw*8)XaLX;I!s=W)6#9rm$GjWYq#C zKHAVg3wr1<PLFCKIGpfc_$lN$B2IK@JF7={wRsZRc7TlMwOgU>e3SP3Y(Y}vBbre> zuzjG!lRo)6>kq|EoY%QJbskNM4HSp@ipnHmw~O3+*H%l_%fjC?m+qak4k^3l%#49L zohTNK<6gI{v+E53@>Ja~N=KFm6&aa1^f;WgUU`1Tck((mChfsS_ODbp2ej!!5Ut)J zsEjH@nQnm2{z-t_aPBKw?G)J9HqhT`s0HfkMTL<|nY3Vj()B~fn88}BrTZFG_e#6R z5_<rk7C964biy7$sniNXuEnWeHCnm=W%xaHnH=#DwWO(9tHgY-gl>aJy`6CeNW#2$ z*}&*>ZFC)D#24ztki*w|myNICofIFL5JUOHjX+6@Tzj@aa{Vg>vq4*WG8~XRvPwn0 z!Se>1o`J|eVftbI;0u^BF2~O|tYCkMPaF#rNoeg%09cBDjAUU4=r$H@hWj)eh7uqS zmn&rpzj#MMVi&v!27>!;E$UYuAW^54_Xm`y-#CCkuj%Yb2R&36JV_ahbQRtVOr8D( zBKuXMIkCWV;tueoUg(Hx2|6zNhms7#-`@sN*nzlXa)g6P+dI((_1KhWfimM0(sj@+ zYa>ZVL^Ls<ik~0(ZUCn5V+t$@EvN)~u%=_z0XtL-N){v&*)WJ9eDNvr7g+2u1-K&^ zd7B0m?)fqUR02v9B8Jcf^`z&KPi7)2eiFD3z+v*f`2fXjji(JS`}<h+FxKG^Hwaml z90y<mVOj-1pP>Yh)Oy}a3v@OD@$HQK<IxK1wQJ0KvF<C{f)<i&2t2Bx_l!vO@L8d7 zTAvM&wu~OJ;W??YF=1_lNx{#9v?|vH_})2N1WTw;E71t)pjQP)*0Ou85lmG(<Z+gc zYZQO5qQ8D`AI~5!oS0P>s@pj*s@pNi>am+MkPy5U_Vc$E0FRgPRHfI)wUDbu^s3l5 zg&*RWO-Zd5YAbO148`C}{pf9On&F(+mz96sS@*HfxLjqhJGJ5_wiqZ)T@8{2a*JDf zoyGG|8@|tVUY-@xZnBRoon`M+$JLlRmn|=SQg+L+)_eNwXat)~{(b+Y+0{`6Q*8hH z1Oc1M(wRoJ^)e!sl#F1t8}4&^4k;DgTT+3qv7OjoyrKqaY`)K?CDZ8|GZ>zT@i}|e z6Z6`KC{>3pOq7qQkkZenbw0Bdsr+ue@RrY!(iQ>4YbKNaN;rGum-XPQo&<`5PuT@5 z#2?~C&c}t-SmxfO2@V;|c$}OVOtt!b>A!W!czv`yE9-S%ZPrV*NAztcqsw~6;L`lH zp{#uf3AkzBMkVj9kN$$IWsCRMMF~5^>EJpN-c|`W5(9_K&exv(cPsa|$<p+b$*}YG zZ;*wHdxPYU`d=7@Y4o#+AwHcRc{0{Nptjo0T27h6q=_uXn~jX|wQfK8HT3!|DAm*o zjVkl)rkiEcIFY=JBN33^vx3u!Bos#SW75(T+fh%yp6#O0z2$e4s>ZVYg&dFL%2~Sb z#-&`RM(!yF2@{LEw>FW`h|EePDepVcE-h4%FfoMh@_krca=gK+5Yy!X!N#K>8J8~a zE<{WcnySwRzu;phj{Um(F#@0Pg!gVCmMOc$=R%0%9JTyxW^}Q#+H=o(FYIvr%fZHj z`5B>hydDy3yf}OAY<f8YK_+iMyUL=`a)>{^-=XC(zo+~te5nw4ck9R1nnqkC6DdWQ zGgjIS$pI`wqi0CR<0HUXjE5Ns#)(_Dt<r;$zC3RhWUInHG9kfO18aqx6Oft+u{D!~ zA`%JCW;{_Lj@8~jjMK}L!^K4uWZ<Y41e${CN@W24P*$jXkr~kmA<F<nXq2^DH34Ug zG;ai=3`KjMPl*_8i1ZBXUl1?qjr}7_=xgNX3*mNEOp}b7b_tvbCa9P~X{ak0XW0t_ zLp2=o9p=;Sj$}em?txScgAcKw5JWx94Ez+@@Cn8qGKpBB07dU|K%hk=0*ZGi<sgio z!FKuHhRla;7|KHm_Wry*FuX9)@C8zWW-hOj%^ZWnaA{Ow5D{SN$}s3<g4&`8hUUW^ zVYS_>5=I!E4)B6xOEJiBIC@J?=xkV&4A9r%gNr7Twm196M`f-%<3&7-y#WLfvg-<3 z9{|)yF>6FMCj66JreMQb+zx6Jp-$7sK80^`;3J2G0UM#c6WVqOXt-ITTCKXH>-yio zyhGw_V_i@Js(}aCCb7M5K@@;=!oDK0Xof@QBO#zvM4*TPTBL}}&17x%?xYR^g)W%^ zP{YB^dombx7Z*^@b3hW!U`(s`ZjkV;hjzscr6<3smwWP)Y0Je@p=TV;Q$F%j($U@x z2A5w1{0C~)rrrBUBe)k#;-U)Kv^5epHTbAvr-?5)XiTR|Ul^Det|gp88q{CMQk<@B z$3*F93@|-ejT!$;T|i^I&)+O|w88Z9F~1^iI1lJPa-)Kp=9yYmUC`UEe8RIA?^<N$ zo%v^lLvZ`BH3SV`F@JuuKe7!M$-Vy5VC=}PpHZTqCEuf;%sZ@np_%f7{MZM%E}IgW zNa68PSg>A$v(EeMIhI&89}PKOHXcp8XV2)yR<?3fT7O8qpbndDExJBn8I@`BK8tfk zphNm57Qj%Oh9jmyK(ljkVpYBAR{5)ZBAcWrkX~}7!=p4pFlv14j^ZSsX6icSg$Gej zI<tbFxG*#g4MkzUuw*AOXszA(=j!y&zUhjv1Do=-Z(Q3>vi4sP_kMiL`@~r~uMzuL zRSA_%x_}wunCQz!{WAzJj~SDaYIsp?Dz-n}+Oi=&AP<}<pA#6;`~p-1H4VROirINP zInk*m3Ee#biBiy;h|{=-POT1R2{6`++k0@W-t}~6k4^1#D-e91&%N;5nZWHE3mQ{c z9jjB<y);@x<PR9b{+Ts&-^t2{g?gQVwhVLdyU8~w%R)&QFjKfUYie!d-um@IGqLTH z=$u}STa0IGnva(7{H{|^O1G;emY49XZVUnT-8G6bzA>B;50mk`j&tl%e3@jP-Q=G- zN~58QLU<Z`u1=Xiec1`?lV}=jumoi?IWE)Ad2&|b@Rv#K{y2HkRR?PZ7RER%tz*dD z6r7qZ<W<*vbJVxgOnJCC3(N<=#a%K(U}1uuLE}`sY?W2tm#hI=gT<YmOCH<3<kq6p zU2&@5H(g`oKScXO5b>cTU<<M401!MI+`25Omp~gLC3`R_xTswfm5J4=A4uAFwSnm4 zQ0mcwJUF346?=YQAQah)RgcgB0!t3Ae3FA<p1p}WgA^NZfQl+kDk#cUOKecgiWD1e z7)@wtOuLE@>LGCx=pQKv8wozA*bZ0>K@M~LOfr}5SJuCU(YgY&3|R_!+IlZV{)(uX z81tUMgof53XcEb3P`Dp8w|eW@`$K48P!I_`!%^okrcbaaibOgqW)`O7QaegKwp{=S zC8#YDd4G{FlH&gRVuW=+G(Hp*xsr*-66kxegs3RhXoRuP$^kFRLwWhw-bf=?5?T7C zt;9tz*qR4B`H>Zv9%$wiMAn`ODwnMgwcm?@!YC}C4-<4R@!+!T?{<PP1)ftf#2_@& z4CTH~{p28Gzc<h|9(2R3eKCP?^d_WRy<vC4xH|F^hX!g&XTjaq^~XRdPr*j!w144S zG9nWj`h39`CJOtJ+<-Gm*OtTE!4lCXvxS4BsU-Vxq-w8Z0{#&!1hVAsT+@7^)>Ox` zeY)>9$4Ixiu1sp~Uc~v<!%X|W9zAEk)l<B3&&ZuGDVH2U!o5$2^&NbEJ3waoq=Qwm zCpWpfi1FGb{WPI#+x;>ZqldUJy(aKWaM`@@g7wjyV;F)?XGkAjaZXl^X=!SX#Y@se zI#OS4a;SM7^p`6B`{2F<>(55z3DwsyDS%pYd=6iveki+T9+Cd)I0U~!pXBTD5dRh@ ztL+Z~=%nx-oz-(7Daf<)7e#S8|3z`CR_RkQC&{3>DkhImPUpo0M-&?IX-KJ3&|^QY z#9C0!1y9ClXaVtVBv$$ft11M6+_?h<5r4$%T!uqn4|=~*@$IT<fGKwA_@a$9exyX- zz_pjemqYctLYm{^A{>KyuG&RryluO{X<3#-&yOl9W~UR)pAi%n70oA+pKm`fY9!;& zw9t#(Tm(g5yJf7m%b<bNa_t75J_X65J=?g=vaOf{31`UEl}-_3)9uZCQ-W2^bYcka zew4Ak<z~{ZgZdUGz0{tjNC?%UJTCR9dFPik>#^3;ot3na<?~X{*B&S{QtQJLm?&WY zTy}uX&TDwccQQ{EKbFE9OD6J?U>QA@1&N3tH^MmQyF~XT1##8w;u91M8o^2NAGIQ2 z)6|NZ_Vk}fAQ%e!&cJ15jPd8QTLRL^Sh}aN%-*}9zDAqEf^(qQK~x5*nHY}*#K6S4 zMdK$*YDlcSq!Mo_q=33v4yY}L$AH`Df}<55DaV+{8xeN&D3_+W>98fJ&5~B9X5*Fi z_kMl^5mS(kF-Xw(BCGxG=2+==^ZPeHz%f5V2{$OjW+Cu4+eB<$qS(wOMM@|aq*=-f z&$(C^un8?ncWXPwC382wvRa5;c=J{4BE)EOfZRE^%x=0iBChMDN>F`fJjc#MZV%h+ zih6mI{FwxHcKY4%&M~?MjAjqkHs_&&Pv@*1#3id)_=R<vGq}kZe0#Lk3B__j&s>q4 zp+kA6PC6>nMiMZUY#Bb)y=QKo8%ECSxh}w7*=O66Sr+H1-gIOOeJkF;eLu@Dt@F!I zUr5wNTVgu1Z1Y<c!-TD&rAJ;!3zGKnIVG-aX4qR(OTp$B#!r|qF*S;fxRC2;-v-XL zcu9xNciP}eYztNW^wO~81{ZXw<RRVr`P1t7fpi`jl;xr591@o;ZLcv`ye7EXum!w- z@|-lc_56~MpDG-o_y+WntZ*aW#aDCYn_YDWcIKoNT0{k%gO0?l{8P<ew%?D(ez6T$ zg~LskoLbtkK;H&qH+)l=yxrInpcvU2hVztZ8Z-XZmsiFgEkoofAW6$i3Q@@HJAF6v zK@`P!?w6ytQlCQc<yGtG#IUOZ|J!V^<$5d!$@To+sbOl!3*3@$pKPi`yC>N6KC=g= znPbStc8e5|DdBF{yDNjc=}mX$gFI9aF2CBwMeGmi6*~HhU6I<mhqg&{?pcoaek&K| zG3i@F*FfuQQwT(xUVTr7p^QsL(D7(e0#4y0EIX*@nVliXdv;2m!~n~CR$J}HG2^Q* z#+75-R}-$=l0iW)`>0ybJ~bSc%-BO`c3lL)u{9w{#`-l{=&1M*3<_i2u`*EVjfxTk zNwRu#vmaB(-h!bvP#|wY{_seUn(c%n3nDekY1b9?80<|c#bS_TG|AcgInz)r^(Kqy z=QDJw4C5n84ux4?!BA*-XgfA0=@GawsIILBlf^d!jcs5NGwPOgMa<?%j6QVH8b9!- zFjGu}wUP@S&fc|N*^2j~88)r3Gxz9Ah?nk5-^8cr#D%kLP*Q_75Hp*?Tn5?3RYv_1 zmo=?+<-ubfi-3`tv#CCgokEQH%LY<5Om%?30Lafp`M~Du(;4s1ZuRKk+z~(%qv{GO ziDYb?Y{7!AM*O(9_PV*B=ExxiEr$!IV6>faRu9e2x)^$oweNo4#5C`5d4CG4)<q~s z+CdRR^5i~#C&D5<gGUjk?H@g0Ju>*_iu+7{2<-r^IHFDjBz!+zC9|#WD<!8R&Jfy~ zT_-3$r#QyBT0lC|A4#WE-^(%1dY^D*bta0qb!VoJt84da=S8Ue4BC8Fg$`*0sGwfw zR;S7-l=DmP@mSkNS)D1@{uUM^-iu~C<Iv~LJ`}W_FAapK(wV9*Rxj@br3UqdF{uJ@ z)+oK<mP@9Ey!I0LDKMCgK|fL{J}+Wxh91xd5B@-9!Jg|Ph}q@+3tb-o6(_e%$cK)k zLl<H%gbnu#o+#YxPDubb7&2^s|5Kp3Z&{Q|&_>YwslU>y-~4?<BKgbxg>Qy6Mt<-5 z1=}Q2gN%_xLZ?i{Ilzvh2oglWECkJ3np#T|pvPSKPb(Bq+e7P3t4z9Tc~NJiNZf)Z zC?%DHpNSfP9ow*H?Fo)zQh&077t@A_X)!vmp<_ebsFz`z;W?KVMl!<9r<pUmiu&PP zQOKv{aR3b4hWCj=Fv9UkbFLjoGV?m-EHJ$SEthY48X}907WU}C0=tID0D>f9#Is>{ zEnJ=`s(|#))7GD+E>9J%LhCLvkmA@a=#eI`lD49Fzw*i!vhwiM`^-z}#9oAjgUOK8 z)Jju}&a;msX9xL&@ORhihO3DO0=)$y@2=d#@9AUMtluB5IsY1O)R|r35-7R2*r=<t z+u&#YI2yE;-qUJ216iR{U%jnj{`DBIN(?gv$L(;NPv5-Kq^jd+gFZ+8xWM<<_=_|2 zkJI|X_f_c`{C<<Wk<K5Pv_CbUooEud;C38dG~N<-6WD`%+EI5~tIh_iX_v41juyGx z4i+#m%mw)SWTOy6v1LB1K8^jS$r}KXC-)polTFd|J{R;I)Xc!Bk9C+W1u$6TZph?W zRKjN;Hz~|1o1c!bGCeou>6d(M8B^bxm+9pn5wO^Z7AvA~@-*j}K^DjwGi5To2!Q#! z_S?svfvv;8SP6CxYal_w6H#*T6YmL>6#5(9r}hEZZY*dO)Cr~*97Z3yB=IPueh+9R zJ~5~OZL>xRNUAEBKMA4_*Xp?-=cbp`r(*S*Hqg9eMJ8SDq9jHh$9#^vB;)v+l_I&o zyjg#k7Rva_s~xUNaEUppVK|i-CG?#sFS-efpj~E*1REjQ09ps9(Fi?KPs3~0x0u-S zUCBA5&=#q19GFxCk{%0h7{D6D3wCLLtC?yWB?UiB0W+Ur!!*zB-dztzM8S~mk3=8d z-!Ys|@Fk(^s~LCnL|v=%@-zv32i+-Eu8UaPBB2jY^f()FIxVcNw>q4b<uAgdMV3pU z?N8imcaGiei+rVVqv{^2z1@dbPQkp>{DR;my73q5qN_mTy+THA)I_xQ9V~42c0IH& z()_*-Go0X2lzJTNi0rO+4K0^KJjRdSXHL<ja-x*BZyDQQ(SOaX7vwXB=_n?$w{Ut@ z2HET0GrzI|l`-N~<Xwu3JIJQ2KX$#nDq}pl?NC~SPCX`iv9v}fJP!V>$b|6=bv#(P zMT!&m^eU$Msd>07Jn!(ZH|FylJJTmlN^OZOzO(g_Tz^A|sLA1RWU+^Oj8uWX3CN#^ zL6YO^1+p=EVrqL7b`>MVBT8;MsLHDA`_3J-XJAT`BPt|a7;zWk_$RT)DQvtg49`6< zNfA0evW<mByl1Ul09ToiT?Gs0lE8)}qgkOuT~HTVDVwiudt;_p9mJ@CFQI(cw2wN7 zq5VLq9+@_SQMazN?HX@}jZGnP4B!R;`mhdTkMTC1x|*_={4n{*KM~QB^+L0}G>}%Z zADx7MGgu82Wek#FgODxnr?Q!jnc`w=h;fF}KMR;0!0P_ws~{H!9s(E^6BPF_IVryR z@G1H}-N%MV;}4XtERhTeq()F8K7c(*)HPNS178uvzIE6!x&!Wq?sq{<e!s14ZIZ0H zRx87~^Pn}FhE6Orw)E@AYiV*D-6C<Zt+xkVUDG5{dCI37T%@$-*<@VDdq`%KaM;3V z>GP`mB4_afc(I(QY-BtIvABsG&FB1Qgu1OxO<a$?;4%w~^j9i*qf<ea9nBaDc-btN z$L~(ho^10)2~W|LRBO5|^)j>vD_W*}M0nPDnWE#Q!v=?knyCMQN$XWx6YyUmIO%5> zO^hn{2XZYG!DeojUiLmtd}-|0O58=0m)=mcZnTmaX@}JP-4VTeaF50C<|Ohpyn2C( z{G2P}Noe%P+pIH0Z0;_o9RAfH)nsGFk2Agv#qAkFRlGR)dZq(olsws6710||`>E(Z zpxb~SNQ*+AH&@kC<NOc4;0^p)PP{UOn1MHWpm8-dl54of)@}>FI$zZnGKng-&rO(U zKH3;p(F7mEO;O>vxwm1Emcn~Lx13*$By<v}6Gh~#5rks2|N3BzMUQIgo^{c#Zs0It zKi^zLnhDF5WKw7PY-%a8oMCdrOc4C)1aUT|0Dn1JT#d`Mtp<N0|Lbw!4$cH37?(+F zNZIY(^hT6v8%hU#@Em|Q+FJD(z&5|kB~6a6L>9dDjR#vTZqAob1BKI(d_Sv9AK}kj z8MBE~vusq}S*0OrAYNa$Z>RU77rX`g{6P(QsiND<A2|3;zkc;TjL%~Cu<nVc`36Cf z%R7{h!7plI)@EO=ZRTNl7A$Ac>7bHj8^WbgSRk0u=U5+84V2hSk^*^Xts{#*FsSL1 z2Pa?h=mnM><uj8Jeg3#t;0qE)2rA)kmhHTUBTx^xNV)jgeZV`JdXJIOC%1Y2VqkCW zZ&r%`Jr-|*K;k{Oa73NpeMFS-ULyeeJE1;h@WcbaeIVR`#l^+KYDq5<(%#t!V2UXx z5uyoYQK29?g|8H?zqnpBTF|CuvDzf+I2*%4;~r=!GXxASp8n~<&T=hWx&rsSW>&g8 znMs>63O~#vxly3?RTQ2|i>Fq!l)HyiG(k?*0L+am>vL)}s*?gkT+`?8CzG^~V&8ZR zvW5G@22RG`+y$(##ZK(nwPdY^!8}&SvSezqzIpfV`64;fnwQKd49^Bs>vx66m^*nA z2znfT#7h(hGyR5xibf+-v#9F?20rT(>YJi^cdgOra;6a77i|ycG?)DLV~q^E4SLkq zje%bMK0?|ef>$FD=lm(92gEHv&jan?W~b@^AO$m^;}%$n1ZrYC#50*Y+Zv_Ie{~GT zf<?A{d9FF;lJMBKx#N5PzgSR^DSSY3jr6!OHnrI)(fjKCkl6&r&r(0~l*-~H$K^*p zb-bc>T`|XMT5)J>^e&>xuFw>;imKR=^dP*O&>eC2)PC7~+N5`TmOfcXDV8i7&ncFL z#~t|>E|6RpscqEbp(~*nIa&9``d0#gj<U9$y0FC9QD{Q&^!>%U<(4J%H(K$5q7eY5 zjx*b&$CatL<<z!kN@M9MRd)F}Pex8?u*cy3Iy0$crCa6*E022A>vnB=^}tk}`V_)k z6|lWt5j7UY`F7=Ml3uv|;UU_yh`9d-(E<-aK45)$w04S3c3SiLVZHwS6L3KlS1reN zir2yklW25VZs1-m=Nc3KxuPWJkL&fEG@r2Pbm%0B%SJZ;j;yb%^<dMj2|bfWe`kZH z@Qrb!56oZh`p~P9-7RTfUjJJT<lw4U@7gMXEBag9TEtZ$N_>j&?Hl_t-OnBw_maQx z5=Hhn%4qbjUt^^*)(6|pP^KXIQBvsg?Ch6PeYd^}IbTSMc4%ec(JYTs!<a~ZyEW1m z!s8{kIX`E785*11CV0uoTqwgPt6uUxc)yPJ(U;z!yy~m8obKmXTC7^)<F_<Ccr0-{ z92T3c{y5{_L@o2lV=-w+;|^u|%=p*MRPHPp6SsFqVU$JRG8q1YVIDx%QXSOd&~tv@ z$BQ_KVjA<P-0E-a0{~(6_kz#4-~E8I_Cn??+c$n^)Gr~OF}WuuFN#^&F^4p%SVLbn znZZ`P@R1Gs%-ivsCzYsk_jH5{TO~U=*Jm<EBWBd2{z^3D`cE5g*2ra(IZ_~{hoAE4 z<kMg8Yges4mP<<7<yimGGkxB-cZ*4<5naq&$Ta7&M|1p%WzE2{a8?)=D;lk+eGA8T z3zk5hYm`t?E6&ZetvgKSErH)4YII+#hIm8bA;st6k&pmBXSuY3EM+C_v5(^~u<cre zcP#dldaudifcZC+<Gaz$8<Wbiqs<|{@Jxt_Hlw~tOcK&^X>?f$UsG7Lv-=Y2UNOol z-wE^ms;rx>p@p8}%dfMbnF;)hwIeS_M%Z{sGNE2Aj0KRen)6L@S)ToaxJ5vC**c?3 z$0%n|8vNG#YwW6Ct@x4c6f>cLpL~KgHf;XJ?xWsK;kUDse431`gS%=`CdGx8g8WR6 zD<?kfnlvNipb0B~uEq*B1q9b-6)Qfcdmm?;(`@)0HlOa4{(Z;3!s)<%;L}uN`Q~a{ zGfG{*=@Fe&QOjo=jC|Q4C@-BsJnt)_Jzd>C$6mW)F(&;~WIgdq5JnWDpDm=iy05Qa zf8PU}e*PlPVD~tgxI#r^;2Y+;Z2EdnGJJ(95(Md$W3veZpK?p!?2S(dHH(3Y3Xi2N z3vGLaDzzf4ARG<IaR0tN;Vkem`+mZ$#pW&4AVvhRVmFEgp4?yP*|>0|+3L`QY=6+? z=P12<kF;4nA369Mvy^CuW-|{3-@WPrkQ#-;JfBAg(ZF5$dOOw(oYiQtktKR_m1EW{ zpUd>LyNYQVrBI=zQ;onZdvP6gUxGS3Gln|YCVyx4RkgQSmui`cdY_EPeb7>G)6FG0 z@>H$ZzClx=_`zHh{@4mm=Sqy0r_cI{V|QxIYF^*=cFdFGcOG^}?#{I`q<k~2F%Wv( zbu~v8YDspC8}Sx7%x>JL7;1j(k&wH0b(0#uEkpn>&6@(1XN?t;olZJ*j8p-Wl>Rn^ z6P$mTMQvOG{z*mDuey4%QUR7@I{&Ky*B!`wJV?QqpcfrTkKjij!;r5Vo!yI^Gd)Z> zW0P~o8~w#7$&*M(kpyU?iFF9(=+Cz?4wOoF&RV>jk0-j81-C}_sKSU(O)T$XJY1;B z)nCZ}C^haPD`Tw3Ad7U2=4%VaZ+qj(Rr20zqN0S?rupsT(wvKYG<RlWLc0bZqi+ly zEXkOIfrgyvF@Ls;JfMMMs7l-KH{`ydDDF#~C=<wEH1a>tco1^HTet+5eXO63%{m@2 z-;m){R^oN!p_nc1=dXj|?eA-p=)C0YJ=AGypmGXY!8CQoIY33yD8NWx$;psLe;H%h zw}bqR6f4Fwmgh<3cgm1SkEKilo!8Y0AHNuYBSSglCu?U;wK=Hm(l^R_Af7VSrBkch zkb~W?on;Gro@#WT<qUF@UbBCwws!3qJD_U(V*cUvVsJmmU{G*DE^G%8m!3Yr<G68O zvmpU{{OPNaU{~QuqCeY(AVm&v2aX1gvETlO$MAYRscir=eI@M?t(7>c3TjmWVv&v1 zAEdtk9Q0XBm1Qf}u{TH0?S^M#m1FDoX$Adn0pC}H&+}&Mf=6`gPbzWLOSVeSQx`X{ zX0;R6hv}#{0?o!t4@S#)Gsib${2!H|+JIZQcIUN<n_^|g*|5J5Lyv;>vkwzr?)eE? zNBu(YXU(oNW9(sn3z^ko)npy@IbvT^<LrVe?(eP_i*P3SQ;`;>=bZ7923m(sc*?G` zglZ>hD}LZqsv82qYtlt0#{En$l`S}veY2FCuvTLnI9ag8?;0;E4;Ios5R<obn+Oa} zc@6MKGO_Ezf8+9j%j*9_GKT>!i-7w-To!Mc#T%PB>d`MH33VRwxT0Sy`=W5fX`8u> z>&MIMply!>wIGC^%{et~hTt7nS#!mqq~g~;iW0&KNAGebY_wb_V=i5&Urilte`Ijq z|B=V?wCAUYUaZy;gc*OKo;ImE^tizO$THQUc#X}|b(y#Eth4?-zka!v>q07r>WFrt zRLK53O+0dOiZm)NI9^<E;9}fso6E~=cfxsZqiCDYvrbi@hu<~{;!{_q@g(59`PadZ z-gi^^;Mb^?z;$tWK8R*=3PdrO$g?iaQL(8j-*8sDHp)+_e7moPzuL8|p@=<N^LtEp zpOR?vpJ2xY9!PNF9ys}NxJt|bnJht@tp}cIkkDI?@IYNp`S2wgszjM_%p!Uxe?!nW z5yE|Sr@^$@w5h-8BUNIHGW!a{FY&P1jKjVCPiIiXPWIR2m-?#jvgMO0KIa>=Q=1Yr zk*cw3?Q2PF9%KlaCY0su?J+6!<v4p>fErJfMUYWmLa=$~zPkO4@1B!Ova3ReuBrrh z9O*cT-p7B{EN@_ZA+;4S<sxI$dgJW1kQMH#B^Y>w4}#LSv^ZqXK0`jPJFV-up}RBP z+N&x*@^Z=Uh)CDNeEY{=|7IOgzkwHU+l>Qsain02h+cpS$=eZ#EOPCa{d9m+&t$dG z+H#G0SP2N82tDvarYwXO>C_}<1~RW5mhlbiu_<o=Fw2Vvp%ia`mcj12t=4F-IE1y} zc5~sxXWjJ*5-+NU=|4npb<T}E)x?)88Y$Jr*MlX!2hWgjkR?!pO+NKR1tRb~SW^i> zg&5yVw^XoDX@*E1o?+T)qu&ZJ*%ZL<Wa42!HPGe`-D{ty;9zG<#d8X8)!6^O(Z9V7 zc>sb0dCMA~Mvb|mtc8a-jT%6d&SuiBV;WC82jJK}u%%8wJAul1Dy_#80P!DP?Ns!k z*<9FqPXqEKbf(?!V+Ls}?XkiM;reQ@0=HYzc}z9XW8ZVZN6Qk~SZcHWj>3O0UYx%O z=8sH)dVu#lnw_>gT1P72rjX2H__9pri;9C8POICV4lp@JiL(XB)`iPrL*hkMC>`yl zV*@dm|G&srpvUk8$<fB0={yb^gKg|)y)uBz!xM1=+n;G%M*!uv=Xg+r<$<UVkxi5` z@Z6%|^Sf();PeAi4h!d9c+uxW)_OmTuCT7UpKJ~T%2gFVfIi$8Z{iuC<iKpmq3!oN zOOOHPD{%*e*}Z@~745_1#0Q#*O0A{xPd8v7(}O0)gA{_Pi$<xIGQdf}A4qfp<RGez z+Tlq|^y_T3r3Dm(v`oTJ0J5?A4{^aOfGM-}<_u8in5ucD6<Ztwqm(RF1rUejWFD)S zMd~FQNzr)BI@F-qVvVvF4~hf;xYZ`x5YPtb0ft94xB+tnMc4rblUW>{5~&BE<pcpA zE~n8oovthvUg4Ev-rIlriA}2z2UIYSrmLOT<Sqg2E{I|}H@n?5CrPLwK&G~usVg%e z17NSJ4t)T;i{1emI@jn@aE6$JFjN7^8^}Ij;sNx+(ty6&#{A`#B&yB{GHE8DHib*P z03c%RE&(F{D!?$FI14xc@U--9VxuI|7Eghb{|j=o)+gX*OmfQ(aLd;veUOg*cSyPY z?z|sFBkB+@VYiPYyzjYfC&@!la1(&u?zU^B+p>T%L<VzfBroc1KLOt8A+QV66~Iz# zWuP>S19z^_HJX4;9Apm9X8VBm^Z@i?s9m?m-g7(u#h3CH^Y7gA5sUu^iT@8N6=;{y z!-M#*PqsdHJcr7LOO<F=;GwE>hc>(iRSI8iQcbn`d__P++$oP0xzp+*LGo4-JPans zGr7OJRVNUC3bl~*O$uQLAffrW>xIgn)yO4CArg`uRfW$bQWm@pgm7nvxCxR8zCVzM zaHWP{BQ=5iS&J}H4ZOpjAqVj`n)TrY7_HiZXaF|EXIB8QrUaZ3icRUa>$1-=$b?I0 z+mM#=p~6~f(T>E^tZ#pS81xz{Iqjy^&`Aa99a=B*C2S@50Ck`Q43V2RA(MdCMlT>T z@)j68$WMrSCSC8VbQOA(xtGQjfFdb`9R%Q#2au<Ok@MwJUNQq1wP6>8Dv-%bXmg{> z#x~-belu9PuMN<A#%6oX7Ef4*d5p8((<n{0J3$xx9jKQwmNa`D%K>zXS|&Z+hWF%> z5(LZ|rK!<mA_iUVKaFmkx`%gp<WE@2xa7GdJ;L`I(4F+fGJ;{~CHi0M48nl9WI^^4 zteLz{xvRY&<g3kpZeRGeUE|n!Ee0TRij)(wie5G(5A(P%f6fBN9lx-F0YXM$?`|Ii zTlj}20M!TN4hnxb+Q`rG{uT&&N|c*ZRsFc<2+QZ*hbc7sgS<BXhF*Uev2ZhZ02HGh zfC8U!=oZusZ~!{hKJ_NhMAbdYB|vx%%qTL&Vk1~8n<&v_3Fs!@1qKZz0+fMgy_^Px zGGU*_TD;s#i^FIHpHKvf4Fyb4AXEduKhY2pg<1p$bpU3tgZ*?+DO?F;6w^(&y$uL* zpg6%iLqJcIgu#PimO=gq?O5Vj42WhAvLH|BMm57_VQ)e-KVy!@4ccebVqQ|%iw6fe zJ~>Vr#<e+$1Ex627i(6Ocel@ANlY!}MftV?vJqvZsleV=+IQ;Wn-D^|!b>VQ#|{8k zULgIQC{wT|J=A^@I5z6d07<Pr50Fww3$=MX-{$u9{_gr0HkK8r+|X-}OX!|AMLF|Y zDu&2Pd0>JL%ZX`#LDGyski%(S`aN+GX|_xd4@2+>U{nel!Z|J8%eZhOwKv>7(4SyN z-?;}?fB|h~^PhfTV4e+2lc{4Y0knV1TYwg#5o_z^0peKth!)fqakj|oJz>OC)({OF z3t94(unp1VX=sP(x4F}Da;jZN;y(p#A1((<!DnH~D3><_x%je`+j^7*JkX}L!jWA` z6yBlz<9z<!KwNmxdNePh(oX<Ax&^aTdulvj4?_qMMd^#92trBJ3ge*&<&=mE<|9LN z`bB^+3@8{Bw?%S-y-hX+p>n3DI}@7m{k9I%wX$JV&jWC_o}l1>kY0o4$g#u(#l2+! z<S-M(`;XjKxu=Le06ApDkqNbf0KvGnTMM9?slPpj#PB|y50D~<))hpPR}x}kcIP+% zWesf9iu!aRjL?Qo@>IfjPX1G`5gyc?&_yfMz-)ma%_=seINpU&wvl0baOU*S@Lrjq zaI|5N#JRC@rWaKLWyS3kv~F%OAi@SNs|iFBBc>Jh2qV^F6y4%|`BkhbC=g!08JJ_D z0it7TCKKlt)G`KBzyK|pE%`^`g|ON$hTT6_`cbXc1tMHogBH;-i6#VFgTM^_P3?Gr zjmS;`Hvq8-J>VS)f8XVONJw7zz@Z?mJ@TS=SAjBhjM7zU`tL~fZ!R0T22$HKDrr<W zA#wl?B`yNLMQ5e{S9kg|Dm?0C%Z_K*RRoIO3LB=G7NP*-3%t05+>Y8AyZ4mhM{190 zGn^uSvL!~Ssl=xczHV4;%4fn-kpU}E&5#A^Z7BUEAU2U+`XEe$Yw_9oGvA}!VoWQ= zG`eVVA^|c)TFXQ>=!e=U8*>6KUZUeV-%f7!JNoAak)WIyLJX-IyJSl$NoCUp+P0Z2 z^Ruaxfm74xx#U+*&*C$^0LakJ=x!(0+9yHOi0<yGUCK%hY0cYik6Xa|ab@^p@*O6? zRlUVDUkt%F7<w_}4lV-Zj`W1e^&>vQNV%Sxv+7}&qZ-U3aj<zDy(JU`SNa|-GC!+O z29pD<jV6SVI%}#2gd<NfON>3H;LG<&kaAT+$JXUh`h@RvKI4CQ!GFs#0QvYLTG&zx z$d%mpK~bvZob_f-yP<~X5oz>eM06Z5u1UC1uzL6#f|m#08JNDi-KHd$<Tqk^)#;c* zilj)2K#*K%G3<)u4hoG1hjSZ;*RVlT-f?4Zj6tZfXqJ6CqHxS8eDm3oc4VI``flX? zKkR*VRF&@%t{^CE3?vklMgc)U1tf(HDAK(FX{8(KE<rE|MOsS9O?RgXDkaj=BAt>7 z0(Z87dCvXouKUkf>nzXKAMEdYYu=e>o_Pi~q!QoB+d+L-v>gt_1m#;^MOCM`-CBP- zz(=N4jaN8q)@Dri+G<{K<B+Ayqhp<=4i>k{&Douf+<vC3z+x!!Mb=>)z2i@ekiG6$ zdE%Dm9do=?(Nnk>@^KnrkS??dsTRGNQQS|sOhP3Ui@TsIwc%5e3{HkG3838^ev(9s zQOIQ3jGiLPYN3P<Q|p@!dvFvk$=*~+YK*GWnkeaiarsY|a#0qWQ2e|G8T+e~L81pP z`St2LnRw5&E>!Pi)g8up3)Q$W)b$~wW>+SeD)zy(c7nCn>EvK6*&%Z-$I2U@F5HgN z<-XuU-!yH`HKCgW3W{zc8z3jadI=|F3mN>(M{-=3U+0qX(@L%U`7?C>b@sBN&qI7v z((@;>&UCjYF<{QABku`%Ro;8Uu|*A<0#b>3T#vch*Hc?6w@O}i(dfK)^-iy3!z1+~ zOKN#vT6tDw%P;k=&27^+7A356Bjki&h3Ri>d#?hqn^cITh>EHc8r9rjs0iM3QtHO- zJ1seLP3O^hASdw{ABXfnm{~}QWEk63vAfp(oD|g|dwGi4rY!bPey(w<{aovG*YYWY zv1=Swm+X%U=x=*z*an;McsQGORxZnV4(F|n)g{={rk56TYz?^&Z60YSqKqJ<I-f{( zwD)Gq*mds{O|t^dD@GK9hZba|a&)<#M_s0Dk_vK6A}ku-LL?wWa%m)LpOS|3>D;zz zdU7cH((`=Vi+JMx6aLOL*3vP&sAo7O1f-s$FmX1Qde$Btd2S^22)Fk5V7d-g+cCF* zJ5CB7wwp&o?0Kj*o4JNkyU$)0^l|qj#2Yz$6t)#>V^zS+XpPt2Y2W*%Cqs0uPx5Eo zd|vxv)$97q;u^=3jIB>EyN<AvbkpG|AFylq_=$4liWgKk6y9DSB0I*Src`D>hu*5= z>`s<mx&8Y6<M(`ireq&cBh6(uULeeweB8-40?J0_OtoAm4{g(69mdyTbZ|X9v6hq8 zbW|1;De8$Gl_h_lKtdNBLI+}RS{!mb8~=u$Y;C~+2mju3n);Fp2be|AiZ;z3ymf9F zocUB8c7rCe)vjCXT1vOYEzUi1ufKnsDfqho=SH^bvlte$F4?7}nv;j$(*Ox5)pw*P zVqm~=PAG!cWi2B)flBPE>q{ujzrE~g25}xY4OyK6Nb1p<Co`DaqC6SEYvaFu-U%+R zm;y3?Uyzwa-`-<|%1SYg?VuW{a(cH<cIkRvI@CJg)2q~RE`y{f@9kU{>-m9BtOri- z3XH8G?j!9TvAbjX0qBu$O(_P$2|LPdr=Il9zrGoI=mBYWHv}%Wb@U<oiN%F_u4oT) z-aU6HLhgVvRL+uC(LC--m48P5zLTiit}%>7AEGoUjDEfj4t%Dw?bCBo$U=(&-nnC1 z++;yU*-SSKFbCG(XOHXsg)4b+<)9%zw8!h^Z66-4!%iP-n~zxBu*x?#xNqCiX#VqP z`=7zW^CD|GD8DyfQRL;b9DN6o@X-yeF;MJblDNTm;lTRUEc&z7<DTx<U*@{yopj6* zn!PModA^DFkgSBi8b%lopP1g?P2r@YJ4Sb`eYkZ0?UsG#NuPB}<L#N)GC28>x0X^Q zzA`uU-6T5WC0Q-q(by0|n<LSrR81BOlJ_#)H+k;L4BdF!0-jL%%k2S&p)|4kri4!l zE2WcNWm_s=nQFgRt8sYcKh?9peo^%{^-0ApMk@Ug9_*V=F%0|ii(iD#aHkCWnvxA& znm9)EY5Tp4@y_<AJom6G*r$R&;SD>yXx}7pen?-n+)DXVNakzY`bDzFNz?@o6^rLj z==<20MmCUr`09N!8mL@Xk`-jfYX9<ixpQypwPCNT<P{%j*&VMt-xxfQy_Ou1H4R72 zht)8*5#=<Pd_~zqYIEFNy??Bsv?18m0UU1!yNt-3S5=4aYc^l7Y#p8Aea$BS#3!ZK zEv&VZr|?+dLiX}{Lsi@i25TWChRnIHa8Sdp7RUDx$CCitKOHZq&VKG)+Mc_2EYCfV zj}vgy_z)O(%EL(4_SLEJsw?66LEjRr{*U+g^<8c8a}lQ&BCL@+A<L5Gm*ez~b^Lq& z71CahaVn12@52_K(mD-JU8VT?Z0}Rz;YVk$Dd+~$Co<C%z4OPnKlkP2dDhX!8|jvi zCI+nu;HF!oDQ8CAPVi?ET>mDa@SGCMa$XUR@1T>;t5d`5@cwSMAL8y#@23b)uESKR zyl3tt3Wzqp-&G!|I5phtCh^>VSWCHn_9x8r&2s+w=Wr`Vv1z$ix9?{j;hV$r%bz!- zJZX*ZAIaPEb3elo`2Bw#^vDMtajlenGQV4yUmpf3J(&Od!MMAT<=-DZv4f`5w(DAt z{T~nb<*#03#2{It>vQ&(cibKN_YXC3_;ROKC-NJL{t%=1^^wmbKxB%HP7mw9Owl$B zK20$0QW0>u|I_oR>oF#ljE3O%Ir-(4LEO&}2EX-rHh1p7JnTHoB1b*mwOzF5?+>1W zF!<?K!yxmY>B&DAgUJ6p%;I^`m)QUDl|6C3MDDqw;342*#`hP-wEI-Z{eq^?dEukK zF5@4cf7wFR2y84YEcp+^zu;tx2fZfy9WGCh4HbkX?N0uw)7Y{7Hgcz=B~)-WqxA5H z8-_tKQoLwqmix!sAZH0{wtN{5Q^<F=xP+$S-4y)sUp$L(Dk^0Y#HLxUk27Ei(&$jC zHZ6@eN4vkZzPPJ@RHKa-u}NT4eLXC;VCVy<q+%FD!-c~?zG4sl<tsHHHRW<J-`0Wr zih_e)gbcR3RL%B_24@hTIR(eI>97x#LxA+|EQ?Y9(3<5Qa=F}jdE!fj%ALDp-%l!x z%u$4zcm0gepi)f*Eb+F;p2JjYtsoiq0Yn^mX9Ymci-_cTcJ<C<>7qy9_Y%<|tOJ_t zhbc>{bA~K?UbLpF&AO5=pq|jyZ|&|9`6K?X+z_aTsgu@%_@8*N_&ss<?RyO(MxA|o z1<7b=Xh!%2zEs>Z6ZkPUP!aQtaGGeLs0<g2<u4sHbfgR9<q8GH!sTCtdNi@mm%<#L z(46KE#35qD;x`(;igi1|R22-$cmuY`XwIRLjt`uTIPX|4-utojsblfTut+4?3n=Ln z7Kx5hB}Tg?-x(*%H`l%qSGq7<c{k?3Pw|h6(>n7!O_g|IZQmBl?b~9xGd4Z*Grsut zV*=8|-|DBX4Jnq5w%6%-mix%Nr;9$GUni3f)nALg;FNvi*Po)m9*?C>UOz)3{!}Ec zA=s1ZNKFt9rOy3Gs)KhEZ{vmkGHq7wpU%}WhSf)NpfB{#O;q0HyCAi@nu|W3+4G9n z8L#W=$D9?Imtp;$6JW8QYL0&0d|ox`u#Y@lU=)X9@+-@t(q9l0!gGfy4Ji6PktKAP zMY|dtC%t5|aD84p=R>80QpZn$v>KTj_o3_640l@G5LXoVt^s8c`?L-vZH0L(Ps{e= z$m4O1<lcqHP%Qu5Vt6H9so8#W-PwXtAjiC``E6ok1(0jq_Aj9L6JGG|4(c}2tUtx7 zq%xuLH2$d@*y9a*B{!epm6;V0-(2tI{PAU2RD?N0vhmy#a}i3{*&6$!x!H6T1cG)I zq(FaZcAaQ4ZMle{GKC?H;ZcMi&ihEvWb?ORpKa*tmXBSwx1AZjx%=2V(Vk8{=PC;< z`?{OmEyLC}k8JY3wi;YZ))@c!r6+J6FI<`JTU&i;1UBRTq4ftyY?|SFez#t}_BYeU z7OFAWJ^jz=yk1hW()LYAhtQQ%-7$;fvOCANyM5o&5%yM!>1{q1mpf%gUuTYyX>#4t z8J<}pqQ3AmSwwvl-*LI-NQ}Xv)@j}j#{)lpe-GZ}bpc=6Guc!`i+izM<rZ&+Jg5Kj z#{X*JKCyV|x%XLLeEeg3|I5C+BEkM2rq09Lo!!4b?0`I4hes=g`hU6nhWBDF?>!H$ z?9Rg9A3m{RE<cy~9_zoKvHLGnpw~9N*Z=H)ky!)LE4ciIY#M$SAlx<U-$w5V_MZx= zcVu^&|NgKo34`B><tzFxQ&h7b<3jAAz4zZPKW)tAx89#S_V+V(|3!crW^q5^HJsg* z{Obcytzhug6M-zd2l?-(E@Htf3V6Px{co3FI1GO0l7kt~U(eW`CC|ekXt#=W`RFe~ zbh|J6{ljoIX7CH8x{d$EfBN4R`oC`>Z&$f}m>smpj;)fd6^hXmv0oTuVUT$oj8QHD zWto+b^SbqpGtD5mtOwHC)*s(rG49HUe8ea(TpvWm#$`G92-I!FfX4hj)BH~E`|6!- zb&M+6oEoIYR=zOQyVDm4fRc%PmUcBOMt$>`mLp99XVBaaRjnT<%<Ggm_`47J=Vomc z=yM?RgUOS8fa>=n=Mp8uWvad`Nv45JfR9^l%p!>YH~QcclXsFZD@$E@i;+{hqUc{j zB2M90mpKc3dQiJfGA86>MxjY8s>=gd)QcuR*Kb2&2GlM0ziyZUt-Xi9&BmmPU?WAa z+}n*Je%uU`M8j5_lMhF4o*MSUISN{C6uh>048frH+to(w7-0|fu7Jt&T~*V_fc_+O z8Zj^K9aCvzWu2BeV23<K0n)ba)UI#;c@`?@kg^I3j_0}XKe1rpJ-~DidAbD&t5DEe z*M<ZX11Ri0#Hdz)F76me#$jj6IG#ER$kqeFiz*;5iz&!&W18+rqr<dsQ7Xn@5sErG z@pJ*qRWuldC<z!|!MSqP`RKRT?($({ghWhvuU)80v2F1GQ`r+EMG9W@SGoU>m-p1s zy$`B8XG;<5C+c{a{4GYp97L=1ASKD9y1mrMw)D<4n@7zBV*lgNSOcRV51G1CkfS;3 z=xRUPBmX*#W#*+{D0ECPZo2ZE*Ozb|@S#Q+6mBdUvXvoOn&lFJU#~{Qxo?PrKFtL1 z8$d+RohgWa$zLf;<670mG;^u_T+|`ydB|GOQC-$vxqj&d%b6cq0FWcK9;w5HOwZkl z^+6Z!geD^@;r$25&LNjuqq$_=w^mg&uO4`b$>Y7Qwb}+paC&V&l`AzN!C`Xl_*L2? zbFHDw;Zkt|nxLc1hILFANRlC^CBr5^`bXZa0#c#`NT!?Qm1qh-5|vWz*srBiVAMv7 zQAG^%+FMILCo(IC*UN1Q;e0r}z9bUq8MXzL<kLLtqzQ2Vro3Io9vt3p(-{O>h9=cH zR0#(t9fz?p&|Yls@T&X{Q+1UTe$|h|=-->hf^aQ&3&o9>!j4=9hW<TyY?Uhydr!w& zsh8QNHN^>P2TgURherfszY1Xp4-(jTDId0s@j>+g3c6r3E@jSjyFevfSsIgU#R%hr z#L8{H=fw5gdxnBQZ;*hDALOYpsd_KNi&~626y4MZx>L8tyep}sqd3}@`5<doYCU$> zQx}qktK7@`yUE^F17?YT@L=Zx{<JB`%8hQCEWLLD+1yjj_ZBW>nfebp)(ZW3SipV+ zf?@x$rTsPQ-xXU@30c(&_}hu*oRy3Be8mdtNGTN?)9Kcqm-MfmxD3hQwbY#MVoPl& zXna7vISxriCrHt<K+d?!)qufA2+xVIhFXUO^4$y%E^Nxv3pg#0qaKiWAECEK96F?o zh4@S@1^}xJgVTiuP-mBYA^qI>xij!}$!X7k@_e)oXlou|cz7d^5%1YK$1dRlXw)l+ zqfjscs0VM`p(UZSm<Bu)A(S+800&{W9ie6NQS-Nc&^z6k9%`B_6^TPdzBgU|>222Y z2}GAo@M7wzmFozOOc;SCHg+xH4NT-DeU#Lirr^?Qha%JSD_udL(a*baXYIrT61Q4T z@2z@jdfHePA0esaP<BHZ^Wrm9a|QPjUmC6nsrooQJ6Ko9Qw53iciN6T&)T^!%=G4` zAW67@`#pT?q6ojwqN&y)$Jb=~2`ol}^cr=X(1pY~6B|f5@zUxvdZRDAa$!?2bD7aS z!aZ=K<c_$>F>%;ltZ+UQ*%X_NwrUISA3H#(PLp-w8Noda5ZHKc;b0c(IeC5Kp1;T; z!JZR1++D3U%1z?f?$R}^j-}B(`(xu4eV#Yq87wmTFvJ}Zi-txNgjWK%=q}UZU4q=) zotphxDJimX%C#V4Wf92zl#pgb2;l-beQ01qe!oa4!*?B0P7bGiWXW*qp*@2}B^S*h zVI^-Nxn*A=jax`Wt29&=66SX{Ar1$rIv(~WxGZTU+^_PC8GVtO%7;%C6!cFqGK%?f z<7pC7<{n%?;w2N_y-tV~;Kztl3dwg9-tC&b$0!RyLdGHS`U{j`oqmpa&C@O@WTE2T z8Fxkc-_kjBi_s(kX><r5|K=m_bNJ^DoY{X;)wa}a`}2geKrJog;nl*@1qqh}kcji7 z#9p;CB$Tb^9<$T=i_ES(%B^HwX~at;>}V5obUwk}ja&3_;99wT=DhGpiLkTAc~?~H z?)Bj%mK>tCz7>7MwvEk^<ymkyUgGf!dchNM9$HuAU5{A}JZ;ta?Z|u*baB8oT&>u- z`KA5Iqp)<JhXujHNj`}IrygiN5vJX&d|vovPC+coS~H8ejHa=(@U&^7t>goiI}!@- zj3{0+nrts`FI{rC8Gp=f$ZHd|9KF0DK-vCyxzD3@DDwTKxP|q5d$94SgDdugCcaY7 zJ&m0}DyK^PxLFJ3`RXF74({dG=I)>>*9X0yPWGZYqtNb(a_H9=?LvYq5bmyaiNdO= zjkL7Qf++8c0r${Z%O+8sRglq`x62SDu}F(9jw+Lx*(eCAqoJTvH9uy$^PW|4-Q2EF z0Hhl<sZ*CHwK{FxQGq5U*oEZ_Reb?78*m4dOI-79zQReNJ+M5MxPZ{@^wk>4i^5j% zePjYzg#2fR1^YqJ?n6uZu+l(3DLRdyJc>yerGIkZ$pW2orAM~KU<kdmwIvE``k5I@ zh^ZtR%J$PEP!1cAIWB#zfnu9xPhON8Df1ozK12`2Q;_G#y1`A#h5M9F^uE=47B#Py zBI82zZO`CP{#CU&Voo>Z&JUp(H?3ynPyy&ZS6jl&9F1y5xfexeZJQBus~H_69~ev! z+xm(2rrT`zdYQ=x)DHX8VMQ88EA>*_>5f<C%rh{qp~|jB!ZME&FyWq<S^xG2(i+<* z@fA-lDR#oq#ZIGb`Y)%%x80sBVA{;-+1aWXR;q}hkD4mm`8t4((Y@IP=8XdCo&f$l zAtE-VkyJtj>COOzSSQKt7}up&rzszzH!O#1yynR_L~5h5iBS3}Wuco#4=i?E;f)Md z+SIb^L_OGi<AO5XNS+p_@-&I8FYj>n9YiOi*5~!qR@|QVF*wdUuTGP47uP4C#L&r` ziel(RS(>zWus}1y3cgO;?DlWP8A|QaN{lNyST)N^Mo(=#^ZWQtG_<IdfBF9AeIs%e z)aJf)(_8D;G;~q#(BAAlO48^>jm`qJa%b!9?Bq^Ec2)Be{jJr?+;h>wszV${)9P(e z>1u`O&G~Fin#%g)YjKBhM?#rU*4^<FA|iXRa0rpRe~4*$26H$u7hR?<z(&ZBSQ%@G zbK)|?9V#>J&Vm2XvTf9iDPEBf{YIfLjY!5T*pk<9(e2#jl|GX7a(eqEX&U{UGaZU3 zbbZI!v~dwt5B>mx>F9bDRQQ~#v~Cf7A5qLRm7aQDWu^&#JAM{|!MJ+CPL+)D*33N$ zp|7IOO3+L}o2p~@`$?ybX_*R#Z{C|ZI!8R?Tp&gI6r9cgskcc8BRj?Ja4OpOw@+GF zJ)_0RPT{UE>z?#fnow4qWxhW~ctBh~G1q*Q6ZiGDP3BGKTOtU?nuFWcLPDuKuIUme z(#+f_dcO9eTBaV=zT5-9jUGA7g(a*YfRCql#}oSs)k72PSXG)SVD0qxgwo1~n@h_S zEVuAo^&vTn`;5|8t_rO<O0#dT{2a-afOR~H)+B$`=lQqWl~w8KHnx(s6ausN1{<o^ zHK(>*1oO)Wschc}Wo_nbAN!KkJ0D_R>+)8h)+SZ5(tA=>+RG}BWkcZo+%f)j=y0V# z9ZxVn%Al)&mvWtq5*S_WdXgLW&zw@?1Km?PFYU#W7j}|s@9boxJ(FIQkjzip%s;z| z`zZ=vtLwr+E!ms*M>X%EP1FmFM(PPVx7ajF&RNetDSOu_SB;dLOdB~x#A%+MD~D>% zc-=F6O1^FL^ZaI8qf^k&bA$OLr|KD8kb^Ht$QXh>U6;NnHV5qo?L+EPO`5svJUmv~ zt`21Msg0Mjnv%;`$Cb%%;=2|EXlHf5vvA?C<64*2)fxZr;c`7r=j>7xCx6*zi`QzD z<k6`7Q068k8O5HAHz=$}-kCaLNm*S2C8*%SOcpYobVM#Bo*sxm-w0kJsdR<nMD@jf z=-b0+<$-uKmYMv~$W0M1HCRb{RDb$Jr}xP4npJzo$0!o1)~ln=CK31n#Aqv}ICD<H zr*4Y^lCM?Q)5Swq8hs#iDp^jGte_v1=&-FsRIFZ85<|ydL$#Tl7+nER+Af<^P22j_ z>G@;iC-#X5rO}%sl#Q54x(pRbQ`?@ImE2m~ziU#yP7+eeYw3J=9w8Ra>&Kq;b}Iw+ zq#ukkUV=zoS#L3Ca$^1R3f9xIPUvFv_V{D>jj0EB-+;z+S3q&9mAoz^li4au??<k! zwZ08a(x@nMG3oB~V1@3ao3yQ$*83y;R=q-$O}>bt_?d#=`iNB#T^tWQe-w>w_X|7W zq7ZWSvyP<hJ#=(o)u78lC7BCDF(da#i+S;YfwtRf=*iJ#aD$7!nhsOiBvsP9>AQ0c zd!^^iaElc<6BlH%hTDVKcnw>~XTYW9D`vXvri!lQ98B9Wo4S^o_PTBVoOAW1euyb8 zp$BBhjQ93iNw%qiWc<*T-t|mK5zXr})o-h|4RM~VTo|0E=-8?TN>N+%QRnQ5=|0H) z&epj~TO^<N;C$p;#c@6)YA5Tp;z6qTyB1pyMV{^Z)aqAf@~4qr!d7}nZ}}n&&qoc3 z(s$^;={F;sEg={{leUMoEUjz>0=#=TR)`vo{Bnc+-R_1lc46wrW?!dIza7?NZ)-R^ zwZ60Nu``h+UK>n*e<?&Xjk$n{95fQuhaZ9Tqitt0VvU2+U{Q@U>a$fzjST+aOL@&E z(wsxbFFXfvC<8=b<(+zyP9MI$cO<M#kCopfpHpjCB3_z|KwJf7Boh1&YcSI<(<nW@ z+*IL7yVh2ml*U(9zo0bCJOnMEj&T<U_JRY=Rd2rd3H^i|G@(xJS8N<3)_fIV!KK;# z{0{MejofOIKm)>%vp3w*z3bEa6PsJaZr!bc*iv@I-H!1lwI=T_Z)!n@(0QkHHI>e+ zji!Ck^vLDvk`idAB8|#NY-&4>;JQE;M$NHFj6kuy{8#~#jPZ|q?)%AoMIa|0RY9sw zOX!RhK$j+N#t|u#!E_lF&ZI%mf}Itu+^vrrf|%}bB}>(1<k(uT-l14_v>4_1k}#}X z8_aZ((*Vsx<+3(ARj;^;a;f!{sht9!oK7>sPW+t(_}g6&VBXNa{_G3u`p)N8j|||0 zT4?(!4qhfLogSoUEaqld5=x4DepT~x=ZcxqNG~{~FGp-Ip_f)BluoBr$G#MO;g}HF z!^u~XU9&pTwXE`q%ruY5_sRAbUQ~wFxd99Gxhe=I>AEv5X3+IYI%(%L;zo5GHOWWy zK6|fcwi-ZS_wXI65B;PZq7dAo@U*}wKY}+Bm-hRPOuJ{VI(G?Bqk_>)YSQPf{B^O# zYiuVwy|Qcx1JiZ_I}JzcW0ndrc^Z*4%0BA8c&C5uO?utA6l&3dj?Pt;(d#B%H>uvg zc<1iIvYhY8Ol~$%Rv2Aj44RsSkcuWL!#T*A1Cc;`Px1-23!TZ-GJz*<DNP)Z!Fx2F zTUZ?%Qr4F)Sy<oJ!JSYg>9F##b4v|Xu=Ixg;Jz1aee}y(u^X<Fl3r=`F{?sO7d9E* z(Z^Vzr%~K!n@P%*YoVGI_&IlVA5X?g+=y}S;>=2oEzMFvy}BcyxN){MPH;$iBe7Nc zCj9~CJ2PWszwH6!wIkH0SeRuWZZfuGPvMC_LnObE)RkiDQ6P<BqI7exLG=y54LjeZ z<mLdz#%J|nsl~7N|5s0-ClL78WfZwQq}X_gtnt%gs2r2CqMUYd%AxV}vP<mU>1C*V z_x4}hhVKr9mmW^)DQVF==7fy;SWMys0(<N>yB(h(BsyR4_i!|p(a(PDOsci35Z(1R zc0G?9_=FGZ6|Nu0K2DDmJF)3yL~j+aAN`S+Q$B!6g7XgX!QU@x%oi{Q?x8WhS<rLT zOMwUmecDmxtH1q=`?m-C8jYL)^Zdi;%YQ%d>+8SAgU5PZKmWUV|8WuO`N0$H`3>iZ z{(d^<&Hwk?zdGB0&Dw=VT=&mo$NHd*p+6h2zaBvCW+5I6WKP;D)J!e{^H8?QoH;`f zEBHyRo36Z~qCz-4c@AjZaz;)U&j$O=UkbYy_JY0d=t&CZHbWQnz%;kIl`lk2mNQ#^ zZq-sdd@Qq78iK#9-F0H>QwRHqN1c!K?DM+*>~=3STqazffdDHX3NGqn9pB$6xmpc1 z`*Xkm2`H~BP;rIUp!TbsD&g<+aawnvX+#f7MRP1`46rb3kVwv8v^9r5%bC!wSl>6y z?|LoZuVw&}^tq-XSnL)+MU=(%J|Ks+k!~O|@7rbG=)JSOUcCnBAAR8ri1p0^OGwJ3 z@7$&8%Y)(rX8SA>gB3j(#>U6#?d;m(dNE^2i@rhk>ltJ`?{)XI{i#Dfd$5l)TRl6- zbva8qp$@bI%%HyDfj+=@`Ot(#bg;oW;f-ZVjQ!n0Cb}>{%wC`1G*L3?R(LltG{}|J z+UT*pOvMMPzmi`%046IgpD$~KQG^o-+RN{Me9=5A9c=+U6Xm1xsvhC45a4ZHDq5)8 zRD;0aZbj5&t6B0+jPi$rxmdqUFW#e6I1qQNt<T|HP(;$CT5cEa%!kjEmwmvr{kjPC z1nF`K-V`pgx%SW^q+A+PEnx~oA_~W0udJD+la>`DO!%l~yEj7ndjV~nU&E)Ag_Q8N zOM4Ntl72vN4X`z%nT|9?y?g*w`Y>&+(Y1%Thxa%<rf}$Qiy4h|na^c!<!{$=8Y4CB z$w_FAWN&a@n>B{bb$@mz$m7eim>pS<jSzs<Ua?lLC=|<d`Xg>lG)Ef(&$k$mB6Yyd z2g;zyY$v3p4bh)EN}<}q5c)v-lebr^LOYjq<d+%ko#`UQmrKyTy4=(Rl)RVApyS%W zCPYC;xvK?5FAPD6f;rk=18Nb@m;vUM%@?<(S!@x50ial)4}vQ;8=)I`v+p@?)@>2T zwO+#kn>2{OT(p(|NqGp3-CkEh)0WnO^E+QA1l8paVbn=lMLR<Qvq`aeJ0aAFx$HLq zTsH?@+Htq>);LS(tXJVOj>vFXoz{m~vAkSKGkX3baIOpC{rjK;<nfuK{TERC1fZ<M z9x#=1Q%qO47`v`(7CX?y=AD+y+*lXXLa>aV#~`~7Zh7s7SJsc4ZB$eO4Ln(*(`~J{ z0crybz@;p%ghnv)HfW0#3>eJkColvaM_#!_C5RrB#=sFuZjH9Q6RXWHGM7Hxa#`@| z9exyPnxPwX&lbJEwL0k{Kj>_KVf+0(whZW4)0H5ypKrv6m{#!FMn?LEvS`@^fX`(M zW!(U}MhFO2O&LA`ErhNl$zv{X4hKp>3&V0}b7)87O=hcC>?`QCtgpse4Fw`S3l<-@ z552KE@G-V>d%FxaYyWvl*F~Xq_Vxl}#dW8ERWn^TgIgXcQ%H1b_YfykYS_n}-y*+g z^rj|eG;Zfh%4Rt<1QE3LI6POe+|mUdY%tKOdMnkhS16&o*V0He?mU=x2?-rIAjvw5 z1?@66wNJchaUDz$JS4nnXTHewbXI$K9Lr$b;|8qyfwD<KCG%7(an1C@e6#0HLN8U8 zYkAMjliysvo>bQjD12lY+s>S&hs_L$5|pDbtT<P1t>r`a_1a|FI7%MhvYeSHQYA(b zRBB>!j><?<U6CYf>2qBDpi65J<p!DE=k2xtxT_%WhMjANf%Xc}NX13E!)|G3bUHYv z%A@8*7D#dSwJs<h9X;%eLZp32J9l*?E2`h3ddpt%MSrhh+}!*qwC^s4?ygOlLE9n; zVP#v)a!NIs6N%>(rMsD2eCwB#B|pS(V)6+Ddsk;kE^fmj*vEMRUU3aDM~&cgLgm)6 zXv?ZxXsO3{57TfRsey&w`7-&ABr9!6>3Uf8RR<b*55|s1x8}94$KAIZ;!SBud86!Q zngNhdcS7s^qE5H{es|=~Wwj>O8M$2~c{roC5^3D_#FwCf1ieYE9Y+vJ3GV;=amGZH z(FwDUvD&mEb8(Xssf@C?83^vxUjI%ar_H#-0V1w1NL5O5WLxWZ4nUWrdejorWLJLp zgF1<UpekGQ+T=Kqxu^6VxB<=v2u&MnYpG{$lb@U^H}o5-w^!NPxnG&w**+w;GD|v3 zY1bh?Plo7UWsjKbt>0*xKCv}qj1WYHqP5>^*fet{&n;9e%Q$TDzJgAUph^-UIC`J` z@g{7e*_Pioj@(6XeppVnJ}5`VU&c|Qz;t&nH_3+VMEM?tTKyao83qNigxA8pni~qp zgx3X=$-yF>aflryr!+Ry5vH2Ayr@j3CdEBT$!Heei-=Q@SQ-sWd##v|8HIf@AO`J* znnHUj2?a8py;U2KW!amjzXlHcK!=?R=v_OE1O%qL$WvQG_x946wwt6UjQP7lWO&ag zh^LGp`~XTDQ<6?un0}YOV1gjG+d+3oB^g(!Qe2fLO+%QH+=a%9ov4%0$@e9ba>gXu z5xRX&VH@K**TN*qBes=#)9DRyd#chl=IT#c+FI&Acqudz&9oOKosujei915&@g+AM z8^xKz6o|T(k&NcIlkd(~Rz&3po0>nJR>TceOF5@1O%u+f7h=v3=W3mZz9#BipBp92 zg?p`A%Oz7iQ%6fE&eFLHZKkB37$so1(ZoEd$c=7IsT0}ZH|ffliuDzC=Hy}aR3e;H zub5DIbp1)()621F`mWYEbgC|=rY^1JmN!zc8?kqFIU)ItLNy7`*dxVR2uN)O+c#eL zGF{Y9h-27k3{agoz#7u4y}fj-INM#>P6HJ?y`0eMTQ>q7Ir$bYd+h&I?Qr9g%NGCS zgqn0iCL|s<c>>qXNS#GJ3~qJvgUJ4|`<qr89@&gO%AL8}T5^hF*`w)Gl%!9XUdpac z3{eCN{^}UVci`fQOKu&p!ot%F^z=Sv=Z8|nOWSiLRJTnUE2ON9NmW5Cd9lV%qSoB* z0IoS)fT;u=sDM;+I}N*0l!F>7{!IL$^hhN3ajJ(*8LQHy!RU92pJ0GAab;~+xp0y1 zhV~=XvOQ&_g`O}`kq&O$mGhNA3@WWEgRw7;*%3(y6qffjMe{56JVlFQ;Lg=F0Qfvt zq-in&Gw<@Fa+vPRA2S%T4M0RZiH`NfKI6+*b!PEnLQohk3n>$WwcH{kx-3;n(~&6B zM+hU*ih7eWW#9f<!!&BiZuCULwA>~3A=k;tp<}C;9JLWHt4%jJHLouAAU=DK-g}MQ zlzGhE=H~9Udb46v!9UwYZZ-9Gpj-`E|HZatMaJ-#=h|B3X<Jp-DKwNH71zmJ8X9i( zW8z=Ezf#)n?6gV4vtr}g$WmOQ$T)l!ea38UlPRZbqG@L<{yKGs(paX&9Gv4t8sogy zs*={OA-~uZfuUL&F54|<_l?peY0;`F_S85<w=j~7-=Y=jFWA*dG$YlAzgl@DGBl)i z{8r%bg-T_zn|<cRrG!GG_*xDFcDQ96`-@e&l~7A*?<8~?!RrWR#X)gDN!F3YO4?CK zEt|<I7d>?3aqtzad)~^Zt4tcG2x8Os)D-HW`ngeEXDSp!;{;Q@v!G>G`B>X#s+#mj zYD<zX(`5U$vo;Y;T1!gK3oh+YdKb;OtY+<$s&tc!%I7jR-wJ%3S8q5hF!Y3+By8$h znzK^3?eim7dnjFIN7(Y;IKb6U=a`wNh&*FD;D@a}be9i5!n;T>swHU;bC0)fIFo8O z8G5=Ud(Jh~+G=yy)UKI|*EW@4byd<wCwRR0-ujoj7o=8f9=&Xj;~HFlQeii1^i*dt zef5sO)wYSw&)zJbc-pOfGn}{Eq~nANpMa%Y>piyKyD=j_mXk%ZaqLv>1loM7HF+p# z;n$l}t_WiQ)muZ#g>=gCQcoz7CQRSWWJ4WBzdNs5m`Wf|iY_BDEoG7+y=-JAVs}UR zm>Q>VY?VuiFg^vJyndLle1I-GvK4in?7(0@*7D99Uf*KgIP4Rgb~C84$4pWn@>73x zCDir=m*T+7EtleF3m&O=rLlqnQ%tyVAE4JdTqx90HfbEbiimcl-jrmd@<hAcw4^S* z$r96$5*E}DsO?-_(p*0)h@v*RK+EYXdZM~uX8~34AYfUWWGvoFNhq>xVlziWgy>Uu zt?pD|V9FjY$IJ^T&iFOh!dt7|5AF)%Hcc5>2Vc*b(ips~`KohE``Pi-G+t$vF1IP0 zC$DNaydK3Fi4A1mVrg4$S1rDCfOw1i^wNP?!7kI|r<S@}!v(5q;|{x7!1m^y%U-XV zvPpUcvN)mcLc<Njt20|4WVYS%hU|h&UTpDE4}QG2Y<8>R4cm<s0y5P7&ATd@;a;~l z<7s{gagp|TB&>5U12@N6k07aWv3xC|Y}ZPcYx*1_gyWUGt>R+51b_3z%=jxpkIH(P z2$dWYB}8zOr|r{qjSOsY<7=neCUrMh3lZ@ggL)bEFKPTrmI2mj&Qvx^o<XfXu3u6j zeOe|vqo(wLm)_$&rF081Gozwa;<UUSyD~RAd0H&s7<wkCFsLt;%wsYZ)ttO2J`yUd zdwg=6W5v^8U@ak>UR|Mkcruyks++OLwV5i8BeE6K#ZSmxOERdXwWB_3YHrz4nDA!B zM%L>owHKo6RJz`Y#vbNh^ektvd)6Hhj3C=8JmV^LRWUWm^bH{vZ+L9<VPQLgf$-}6 zn$>X`FWK7N&h)Rxsa*0HsE(>Lvup1z)A_l_6(^J(v#yP;<`WOxUFw>UT>rozq{!uh zTa?$n#e7*=C$%+FgG69DoMNN2)8<i-dr?6gz3~!hLR+_d$ENufUkz2aO2o8HT3A#5 zL3e|#n=6{tu5GQ6+cI*P)K~th?qr$o7q1_&FD4$=SM!v3dtuA5ln3W6T|8?;6tp;f z#@M8Yo1EQ55G#)|ME5A=q#&=-#MggbuD!)X&iVO1eXu<D)6q}I8=jUgZj74n;U*zI zxZ<L<C#ut(<wK^7>d1Tx5Q?_VXm?aOgj#b6ew5bT*}<~9-X@!l(xZVU4^wr-(4LH) zAI0nh7E*F$NUP5HD2zRcLQ_Gv4%?H^o-sO7iyo1~A!A^xsOmD}d#r4NR)iBbq3Q;g zvr7!ugIj11!<NTW^uujc=)?{mAq44I5}R)`ZwmTAp-e)QK|!~*uT`17b|jb8Fp?`U zGfR5LR<n&XuC2R-Wr5T_&3dIv-O`SjdrFN%$ul-QN?`wzQfPW?CH;H(VMl<PN@m(K z))6&@)wdtLNxTsyCMj|yHBDhHw}H|o&iInw<<@M*XAnzVabik!1yO{48~HKAoHISr zA2LnaFutbtq0~AxniO|dPLA7A?lK%UUoc?vZ6i4@TQ_=A6O&17x1)ND`?sDT1%vwD z5p7Y#Ym=WcaV|m&cj8DyF``oqPi{pXq*NzXKGV^CN~=s3H~WHu9mj9DQl1Eagyu)j z-g)))JmG~RZO7E;H7c00IMVKvl`~9JW}Bjh<HapGl9S>}UJTuumkxDDFDjf)^zM9U zf~Z%LPdhL3lv$uq1{H;nBb5rXSCmU4<lv@Eucp6dx<rkt6Ag-<EdDq&mUj25`3&>i zmon9%d)9B*yK=v9hagB+n@FEeX_U<mpTkvSvxyWHH1%Nhbw-rD?d3S-#lISP&wUMH zY^RNOS6)q+7wMieCmo+rBlSd2<)_gc{}POcP$3=0UEph5mef=2z}%}(zQCRb%ao+e z^vUHgrQ!^yfN@5grL<~dD^i@lL22huaAlTAYbi|54ExCn!>!rL*wxRSY<fn&8us8z zkVWlX&M0jsB$)J={S$Tm`lC}vbfn&{lvpeMie&7fdxUs*05}k%BniLs>q+_fkSTyI zrGuESUil|Z=M@Yv-R%!THzR-k#;>1(DY1nA_wavA-T$Wj|NVy3iN<x`{%qKnr{8#S zp*8T=efjmCmg9%b`Q9m)6ZjvKkaJs|AK)8VJys|!BNI3W!Ugj)V94$}Wi(K_G-X;s z%j2fiT3;t8Ck!G|yamy%cY6QKM63&|wSdPUAgF4P1TlkTOcCIlF9m>QQPOAs>fz}J z`fY4krQ=b;4W_^grEptmOWv}(G-U<^zcjv`+1`BO*kn*nT$@hMrtde1R-x?fG-Jk^ zy||f6_bb9j?TL&eNmZp^xEn3J$E$z<(|U+i<G#RyFor&XFN-4TMP`wxRJmGusR*5q z-kn0X_Vrqn&y6421T3l-Lc1Fn`3nGcTR@ue!R%DOJ%CPy02=V*wE|K#7vnIP3z{ke zAQ+-&`1q!%o~C&9r}nsQJ>a2nxDCzEc|9;F@8;YbJC={n7TLW0e73%}Z|ed#&F}BH z2Ro7xDHe4{*4I>+`WY?;B0P3>`yo}yT+XvY57IUB4Fb|=m1c-hwi^^*LC81pUKoTF zU@*?|spM!4o$2n)1*j{uA&uDHx@H)o4_)L6fD&6fUov_q9Y~GZs1NI)XVI6I604?D z4y``BomVEWL*p|^Q?W7#SxNaiSgaD#DyD3GdfR0qGSzk0-r?luw@Qu~&HkB&Kt>Y9 zm%BweKkh$(-FGz}K;x|RP3XCdcx?6l`5om-XFCi`n+c8QaJ#Nl%h#Y;$Iux{$h5mH zkPKsU&M#Sj|F`VEv<=ALy>jV1W|9)78u;m?zAK$M(D^2fMXRDGt71u_d@M|z*6*zq zc9{WgdCFt!yOoe*wuq@ea%tkRjnvGoIX^1*bG~JmZdh*M&R&F@97qE4dc-W{(0L;h zlrZKsKv_s%FUI2|Y|0+}a7}|4K8GR!w~Zbk!EQ0FZ$U0LADZFT0B&UgZJ0TITYcYQ zu{2wEMaMWs^-iM<%nvaY;1m2B0%PpbOJz6&W^POUT-ayuI<hqT)QT<4+cal5Wzw)a zo?t7)I4^y8mApsZ3p9Z!G&v^$HGjN<I-`Rsxdu&J6W8w)k3d^GO=LP+nG-h~Dsrv7 z#z8v9@<g%H90n8ysJMM#G?+$2N@(uNF-^U)c?@6-9ibO)V_BWt+4d7wqLAz?#K`!R zTe_)Wc%A7QF<h3h=@zKd7S--s?nBFv!-WJohUs(BVP2y+OTRJfBDBNi;`bb~0<J8p zPvx*Tff;N8<zfr>;*H6*cG3Lg&+9jzWg0ZZ7=?MT{*l*)o9+ue(!mAzB-C<dSkhLu zP3IeW0LU~#5O5}^V#}hu2R(MSvKrmw_oE7*(qDh;BV}@x{H9MDQD@M>6a72TqP9TO zVW5-cEq5Y10$65&F#ywAkhcvNU8z)lVVLty@fkK~p1indIcPR*zYsk?0eyc8X0odX zeRI(lF!^0`NCL!ZhNczq0Wd7Bn}}|#uG6Zl27uSR)*JW1rb2Lkvh>Mx=yvPQdhJ|< zD|8_5pXzAVCM`kmKw9JaNyuhbA6PGg9Dj>wiwWX3=_982Oy~iwo{UfmXhqNX_u8Wk z>_2OJsCVvsiHObtO2lt#?`1|B|BypHj(<G>c^7+{G7AChZ^JS=3__0^hDNZU&v<s| zi6cne+CRD`C25aWr@MRx$*6&Fg9MdxX*mj51~;RH6+F(mQ3<+NK-bqsmiDvjwaJ9a zooEwq;?mmIy8&TVuXHZVRL!lki|md_LAZ1(b@Bk+mTxLCq<<5zS$*gJn+>I&9oZPt zgNHE~v71;~*i-%e8eGq7fdh~MTe-+?Mp-d5-4X+@^M!e|f{y-A|K;l^AV*2O{gBxM z*+6V;w1F7_mowJcZ)7y*I1Q48>z+i>8!HT_N=W#|njmmGIU3z;RX-2yY;!3@PF<83 zIoy1f>cFv43JGEbPP3kKd1{)Yc9sAhYwJa78J$(+v}+501wj6k@LLS_OG2JL4W!{9 zyFQ$qHxU``al=bsJ9#cRb;3RKxDm2JQrc}S3=9l;VwyW4$H%Gj_Oku?zDR0X$fYI> z<6`5Hs31uL5eslZKo_b32XkoLE>0n=ITy`g{GOf$F&~eR!o7zk0ZyWc6)LSd3oIak zJqkDdwc-%;J)hLtuvkC`qLAqM&(kJDa51G{%TFHSU(zH+V~AuSB3F)%SHHO|BXDle zI3=c^Nt(8^++ktZVBQY09S9cP-;zjQbA}|^p7U!jxO5NW5Ps4`YJO13R2!?W>!1x_ zR#Q^6`vBM8EaYDtbnl`i%XfGIgEa$!_!@*5q;?T=RaMXoGmD9%3}Lr6+nYQsD|qc8 zpj_cmP2##SCK~Ok(x^CIgO!h87IEKQCDuEm)A=c#w`xZreDkD5NiFJ0J@3WFza}f* z5ojn!TkmBa!7KE{Ziake@|#Pk>Gp6V4=i2o`y?Lr1*@ae6&L_^n&YIw^om<khB@7; zkK5)Tso*ebV-ig)!%gFCmsZuSnuy?}a-O8&YVyRE4B!H~b#@v4qc4dP)5+P0K8*Q9 z-K9qa0$pAQR3Zwa#isAGw^${l+@@mG-VPelK1j~}M*21<h>mbkqM7VDg+j_^HnX;q z5YJv6`D0Hq?gigmf0)La0Phs@B2a(cNplS-87+f4lBn?8%Y6q<aHPJef&^C%FeXaH z?;$ep=OQ)dK&40rkgfqlCaNa&{3UJ3rx64eUo(29pc+rO0*L|#V$n1;CCxF;Ec7f# zqiarDBSvItrtGC@xudjD&g|_2$8TVmI(@TieU`<LHR8&<=dENnprVR4l~efwM4{f{ z+FNwG;i4DEVgLP+CpHT~mVT*RDl(R}2QOoeKK_-5Q6x=#ur;)!ECRg&QxG<2`Y3wO zB?&zUl2f@rs&9hK>rtC^_|yYw)qclRUbf$2x3B9dAp@MX4`+FZu#F)TEPaw?|39b( zv(VwG=8tLI{cD~a5FiPtc#H4<J5cd}NM!qZE%RT-;p;cN6ozZ=tm|a|g};XUbq2oB zAjLNPaI^o~d|!QcY68HD^A{6r8vmTHZ_~F3bc89YqZPvc@br;;yv~wPpK7l2Yhj`L z1t0o3iW(}|DITheh(9d!_rLys9ypW1$R!xJUQ!K|GJ{=fu(q+uU)nA;{x;EhLh&GZ zhtU~K2d@6be%5vWA0vAd0egvVEVQSMn-KUaSE$+83aJ!v6PZ=A3c#FQ1HbRBbpScZ z_i;*S>i{>u2*AKTNZI2{NbcOU!u>wqgtV}HgqO~;a=PFu925teq>nyJL)|>sO6U-X zc^*W<KxVN?gmg)-O?&^DAFCYvWRLE{WW1O2cs@eNou`+PCvG#m;H3S!4#8!f+s%fK zF&z{<*x!F%FC4=wxnwzi^xtdo1P4$2Dbn#zKl1yCdryPwtJxY|{vU#6Mi>Mm;o!HY z|G5>A_CT~T=w2ST_|uYnI|9@au>TQ0#lP%8lB+r!D^o9eADjRDl?#|-vX=@G4kU$N zesuSk_sMz&+iqU7p~n$s&e3~Cgu%*y^l*EPvc&4|qeC4F^TB^Sj4pT#8`JOfATaZI z?PrZ3C@6sBDNz0AW)nkX@}MwFkk0n2L*JX11Xl9g_$nB<myozVYC}Qr^YwPm7aLM+ z`t&DQyCYr@2)$x0{XldQ#1;v}t_D$>k2VAqLl9MJ&RVf3T+Es$a;7rk+;wkEcq8y> zcrW-Ac4stkQ~sJ}uN(q^Bew9Zx9}2$h5^CKKhAE@13d%gfJ<5kby{k$!{&ejked?g z{CaJ`LAx9X1m+NK7<0Q=`+WiPs(B?HEe7&MCYBW+MXmYrfN8ZmcRw~GEb|H6I(3{p zO&w5KT!Vg$Jzo1MC(&Y0FF~P^$#i{{aXURG8QedOA(!4hOf@gu*vMMm1W30@xVC#K zi*{8-&HRbJ6_BwhfE+|$=|t>I3vs{BbN?e3LDUBFyW56P-51*@GjSJn8goslB}s(N zKDKGOnJ@=#Bqcvd_TQ80l?Y}kB>9F2PM!!-D4FRpscpTfAGtNC`Hcn^fn;Uzt2$qT zxv_BVB8)2<#bt?!6be5tPn6%3;<D%`>rHl87+iz@{w~rm)_6a;m1nwWC8SblQ`!U& zMwl7l+MWU$^bNT3Z5jg1RyOacXgR&$b(lBfn=1&RfRybT&_|9U^q;PeT>3V1k+hi9 zeoyg`yXgjHw($VajAE^#9XIpHcaIoc@TB*OdDQ7Vk=Kr?LL6KE;?i0V-F#*kvr0>W z`-{7z56ru=wJqtc1{Tl-@xNsOCQ3*Quy>Q06j1>tnqWwzM*YLscKQ|!r@Jy|yx(H# z4uDc~tQc}}&{6yzrpd^<R%qt*dnz-8A%=Ex;v`Bsg#FTD&0cW1vr7>j!$sfOZ`8!N zB*DOtE{RvF=FX6RD(cm!gv9W2i=}3sbRX-9;QF~E&R}?*7ijh)<IV8Rdh=ck$br{I zG#F7QX;--}tvM9L{T^?p3s|a_rX8sdnq&C7ZKdoIR3g&E6M#%LTy^NuiX2z$Bsf*H zn}twDM-*(55ct#t`j>Qz7RkRsBi=$eW0^h>TrRquIhFJ+zd*Rp3)sl)){zL2Tck;~ zo=PV>Gp@1cvHap@zNJH+Hg?wFVFG9)6-x8U?X~4k%!p!&|I{Ho1%AWz2c7R^Nt0`n zcd#@dD4*Gv9d8TOiu24R0b1z~>x(CMj`Uymqv&U%8Z>!GA8-|YULHE8jyTxt*rW|B zYwm!5N_4G-;G4;~Add`9KvS=FKH11xH*t^DYCvD;wEh`&AzvW~ABJTxTos{S!JZ!1 zDz(<fIJ=q-pH;aypmc5%wp{-Q8TU%;*OP0YXZmiwd|@69XzjqLEO2)wn=^px@Ib$c z*<DYlg8&ud4!>*<^c^q+tF)$e+u-GNqe4uU7{5O<l9iB|@t_tvma*Ke?jNg#bjF>u zh||&z3`9=iaL|O%t48tKq1}LH=9{IhId(PR#2EH#ozp2yvbQvGJFjSI&aJ;QWlKk; zhs`jht|O$k!i!2*yVT7g)bVX0w)CPmQz)DwRnfTawy|=@b#-BA2-SD4(T$%c?CUkJ z_r&wC#I5dRj|n`nTeLr!m2biFMY-#?c*0xk13xoLY3j*6R%@?RgFtNvexVY$4SJ1D zY7JR8vM59M?w6HgV`HV)raBL54@_8=&t2pa3Nc7kQS|45`bL!ms6J9mmdb@g+G5wY z9>Q_u(9sFsvK|bT&cdwyE-AsWI@7RCsNXD!^c*Gke(`NK^d5V9zXjG+^zAfxWEl{R z*yR=LFP&z^`+g>0mmx<UC1ebpU-#RCeFc%aWCJz4z!%T22Z7ct3#tGf@B<ZH-rr&9 z_mQaGn|4Dfgv)MWaDc@ExL=q{0>hCQOn0d$dzH>yQHR1!f)dl50oUc`2fg#R8t$#C z)uPd|w@5Q;=Qz%HKvbz2?y_~5{+r+Ebq*hg!3NQ8XOp?RcGn2soMm>>9}z9tkMlau z6V0J$jLwoOQe)rXM-M(0^r(V6Obv`N!F{Uf;!3Cm(d_;LmS(V7I6HEZli4jJ*$#st z%y?5-MyqaquP*VDB8?DmD@(^|PMnb(8`_pCJDi34!z%S?LDXTvX54ZMDTd2&M-d9R zA67Y|5~i88+RH=^@thho`L@u%Uk`nnp6A7j`FI%qO>Fg&B7&$pBz9l7H+-#(z-K)S zt4=ICw(&22*vsq~xQ%PFd)9-H_;?%u9^wSn(d=HJyO*`s+amyCO_kUv|NN&5v~M8J zxM0oDzwgKW6<mqQ6>QFy+U)+=kD-3^kl|@#x_^2l-<^nSEU;-igW{sE{?o(7)aLB{ zu~xtP9l@RO*lSy#N}c}wSa>MAC-NvBIFB#DBnIO;yk`0CAc1$*UA@Jz`+Hs=FxOl0 z4M}ia<iO!nFSlnAGB%2%KK9iG^n{u+gxIQO)%IM<&qVAgHaS+0_KFW&hLS)`KIm0Z z(cvKlMfqktJUn61(ds9PYk0ojq&j?fsoqLh#&FXXJ?rJ(4UXjO!Ru>m$^RhpItM8Z zL0yEO`X3~A%nT}EutW*h+5ZrqT!;BRxJmqB<L`SLvkug!!8v^Nspt4_i}KC&gD<aR z1)pP$;pOVTLkOe<%<`F!x$Hky`}cM9(FCV(RyKI%-^=Iq2nMM5Ue|DUs(*V4ymD{? zd*Z0O|ENRy@r*OzxF$buX!-XBAhd^p<p>I8QT_I%yCcI;#HH^9#r%h9nT3H}_wfFW zO#I7(5>LU#B%<Q`57W{EJLcIoPO1C9M<yl?^Kx3i{;#w5^;LiICVxNU-=81+5a#9o z{elO3VMF<FAqX1s?9IL}`HvVA0bcLXi`Vh7^%dd`qZ94se`o=;#ufpsum`{g%H?g0 zKt!=tUsE&}+xW#-tdBWO!@%XJQ_fTion`GRGFNv2#bzQ)4-J+4Om!m5XKH`XS$qVn z#tR%>8`zJF&|ghWOG_)E&k?f12$seO+{5=dT;>H0s=wU0IC46lhRd)i=_buDi}h_5 z3Eg2sEDDOu?*V@mlOVu&B+bzJ{fz)Zyikip*<a1bZ>}`H{fGgTyH1fsK(8q=c+Nwy zh7%fpeVJT6tZ?I}z2j?ycnA)Q{+^Xpkh0%@tnbN{du9Nn+IPrbEgb`9_Pq>{&MSiy zPv0T_MdZw2W%(A+iSt<05%x}T9L5h1lAWsw<eTR{31YID+SLMi)&EA?(NC(W-n>1_ zuoJ-$Yf!{nP2drI>+YZ*%RlV$DU7-DxxtR}+S{|PSvQcUzGF<FXQc`xBa7h5g_i{J zj=6rD)<Qtg%X6g)7a;C6Ebh0K)GG%;=|<M7PdC=LeTZdpcD5Eg>>)33wQJ@D;8OaK z&dI|#lkj_nz_2cW>h*dGs=}HU=Vc7^-P~kR(m7i~+}!m+<<Z-JycrQus;Y3q$T>V} zLToI%rz)J281NgT56fve*sod0Bnfo4No<FBbKvq?U~(Wpk=<0+8(=M;eP7oMwN>g+ zY&;9aSB2n2^ntvk2^vYkZ56L+Rf~HOq$<UVw}6YP4vx7QCXoW7^bTiz^AHkjWs|h& zAgTG`(|PS#rRLeC>g^)*&gb)7*Z;~R;Zf&gVs7Ac@=Y2-1uw{#w64KiiG^<hAFvO^ zqBR^(R3yRswb<1zKn}zz*KYDnt#4eM+gc=s`fG90u3=qs1w&d+i3uBG*<MecM&Tx- zg`1n33qkszgbg<xbFLtC9kP7=H>Qk?R|2aj=^GP5D_4e%reDqPO)pdIOn_d+XRPEw ziNS6GeqB??>DIo38q{dQPRpn0H#!8$w^`MTngXu#LKxSc`$Z*)@=`x5+%>hDP65B) zj2QE2=73e!XX#)q<ByyoNJTFL%$y4)1Z8*M0`oeO33)3Mz?JzqP+Yim4-@y<hbAI~ z)0H!)yD*uh0QPAvjPK)NjETNn+@_Mk%kblAncY1gY6+OUQt=OSUzColRnjYujS8Xh zL>l88y-$RKi-A}uyWWI2O;hF5q-n2dcBO_Dug!Q9cDg}p?A)N~!xT&rx%rdwrv2-n zF;fKbM!Vfqwt8{aXEwX?>XF+grAX6$UevpWKAr=PfTUua4V|0>_6b2HV$J{xzAmL# zX|E!mMANIi?RkPBu!D9=BPxhht>C5f24tZ4FlkZ(L0O(L5|^=16*GW1vedUAD`y5y zCGMe=SC0*vBCdxp$lCV-S)9+l6Q$C7my}uR`q{r>M?ywvnBeeafeF!g5?l`YNeC`1 zF!jn!+*EEn-5NFlY2{m(SQo;!yyj>wb-<L(AqamUon1c9d(1x8riCX9T>#OCJ@9vX zp>qaBWRo#S^cR8t4%c#}L2<X93_@-HVM_A#{s+X1*t<jD^^?T%0R<bKNcv1pP6<u| z$;(FO0jhS)9)_+H8Gv$RMZ0J8wW%ge3lBj(P9FqaH_UIq9OU8>990F}Kf|~^`F!y| z4@f0UZ*ejAgow^b90|Tt1Ggm&j{R-5sW~uRJEE?>@cj?S6EAG^_Jr5x|HBo`0Y*Q; zNlAn8-_Av%2wb8RXmaAe$Bwz=h3UX^`QO9;y16`&yf{qBqw$z|yC91JlEOklbW2N1 zBOPvP9Qi)gkNlCaGc!P~Nf`uvh<GUX3;ozwc~^iE6)>*f*lZn#=Y#qOxLWtR#_qdc zggk<M@}gM|zzUeqT1HOIhcx}iYJ0_l8-t0H^-_^&nkhi@r9w~RBp%=JEIs>eGfBuH zh0>e@Ay7%d33{FI<3jPuW2uQq)ZhGU?SRLPwG~8!b%tu+x8DH#X=j|hLdKrobhkwB zXA0o&xd2n>g8?pm4hKm72WRXd<PBJOBm@5gu1NzJ`@s>B(T6{V_4{s&|9~;(Ef48_ zMh3t7bVxinNg|)#l<4gqAFrk(5F9#>YaCGV-Zk7g(r^~~p4ZF#a|qOO%J7uN*C8JS z2*sY(!1*?VEEq%?(e?ROM!Vm<`)2XBn3rmZ$)^qe_<x00M^-^D;7yC*j_W3PIHMNp zfU2p2F!Vq-&^9P+%E2dio7v6z3FFC~WH-3)q5feVG_v|={KyqP*qi-u)_=ZuFEhB# zm94RSSE;jVfQzUXu3>!#kfs*gM8t^(C^HAF)MiryYM(7MGxjoSRDvFqX7K-M?<>Qi z+@iK+6e$UnP#Oaf1XN18L@*E(h7JLxhmejT1ym#i0SO7|8DKzQKvF~n>F)0C8KmDm zN5vz0-rw)_UEld}uEB}t+51_0@3roAuX`1N9ZM~mQsbYDpGFFPPB?%J`$2&lrOlQa z2|$JPd;EO&=WG9}pH8Novc#_iOjs9uz?QxeeZ|1H-@1x{>m23;IE?dfxV;D7;W=QP z=)^#w8v6k!qw*g3UT66($o6w`WM68I#<>7Mc1XW`d&U1BI*B|eB{##>r<v@uB;P(; z>qo{w>-471AM^o<F8hrr_x(O3L_qE9=+|s|&r4KYB~H1bK##>9^e>?%loOQ&unw## zUK0HSy4}`a$K};{@G}6yne3vQrS%>%Yfy@7Vgu_dZ1#CqfdMYiJ8&}hRuC|mSBy^e zm3>t1-)IzG6rrgxH9ka2(gZTC5NOuP3wLch=|uSd2H5^wddv@^l1u;$-2ql;Aua8w zO%(%Z@I*p=9evN(85A0J0g3iZa1Oj2mnlsHh!k+F*iX1_&Qm=>KzL6DoA!gXc{VJW zSXCUr<4Ws$i{*O*;M_FeGi}Spv3fxDnSn!^W%*7A;3-Xz*Zy#Ku1ZN5*vt;H!Gk*U z764|dP$*vlSN|SO<DTI!hSVdS4-R32phwck0MhGrrf!bD%){v8XK$#1JJEV%^ib~v z_sYsj2Jncm4Z@3EKzpc<5y$DEYXx(XUzXNUWM{SoVC@B|7WeH@CKd2~ka@7bSDXV5 zMX;fG-an}*fj|LF>(enws$f%Xz`@#L&nFrG^wVG^!a;)1@T>O(|8Y5$4+LRAxAtbC zf6+K{wlvDHShdr|&WT&M?3;Tg+c9lW|A%ub7%TyI1#Fz>%|P!i7u`0d8N)?Q5DRE~ zAorG&zV8IV=@5X_8;!NR^}f#(yh(~HY0+I_*k7Z}@{rF8JT0~?^dKd4RXQGIJr<-~ zWlS=VEyu7Rlf?@|T3~U444{u}tzCs~nd^I?k<l}c22ZGyRIKBQS1o{~&2U({$+luX zfWdo(Y^NR&i-ejq@2#d0#e=MBR9%+2_djb!BAw9K@zhT5WHkA$#KZStiLifhI;W{X zq>SR0m1VYt0O<{@;W5C7pj+?ZOAj$j>>Rrbc6h7)1whj=tD?7gv9(#NyE}p{9eK`? z;l8(P9duGF!Sp_Z>gWs8WA{oG&@w@qQFCtQ0N(>MEMY?YiTD;(_~s3X?^&7ev!0|I zufM5KaT>rAcOX&0H+epZFMm2|asOOB7r@bF0Az}5pPS1l>Rk9NOviQk^AKx_`XpcF z4(Qfn4vL?+v$+Q7eBJ`wo;Tnk!dgz)ZidoQ=?844Xn4d`k@lEuyR=mQaym07Pf#S? zkJHVQ0!J$yVzGWkXm06=BN=y3;6jJi2*X?y@IT=|Z-F1QO%N#F1{K6+KrhZJqNC7y z6cUlf4)_{Xs*g;s%J=fYdfH;0XD-qNZ!X^r?T&zbKez~UJw7T1RL&a}D`06}=#?2| z?LX~mUJ#nzaXF(!4mr)N2<mijDXD(v*-Y$*!{l8%>w}9~xB7di9wKUN7faW<mO0ul zt*=ftI^_08e5(*-{(fkm=AwwHyI9E`R=W=p)x-cFP`HM}#^Ez5i{h6fZ95`i=!aiJ zk~oAC8xx;JQff_nhc7dMr`a66^kYqAQ2&4@&plDzoo`Iq8q(N5d*{zfoS(*qOo$LZ zQI_DTD*(xZB-O@8f5AayNG=z{n{Sx^Muq>mssJe-rzUeuT+8Aw-ZRdBdrl3`-JYj^ z32<?1B>ot{9>RzHYBPTwtiWnOT4`FG$Y>wrp^!rYCqu(Y@Y)Z@=HG`eu)v2!;O!J~ zmMrr9h4<6X`Der}?BJ|Y(INY_HSM1)xL=9{=vdUW!qeIP8UHy?-#3>$kbX!Bi}3!- z?BI+)1&qOP^W?}T1sk3xAV78j;?b=kIr^X8{8eq>&CCwE{VSod0{nm<(qU<Uag(WC z93Ib`rw~l?J>+5*#KTY86wuwn{;RwxgoZ7m+(c(3I`=$;@RhHGj?RpD3TSSJj)|eK zt*_?{&>V{S@m#VQjwnkaJo4@*-|8JUkNJ5c6l}uax{oH+A76N+7Jp8v<!W8!zb1Zv zQZEuU^^5&q$F+WYf<Nu?{{xwSpO*g{KxWqsPoU!3i(?amK&995i2Yv{T#YYS%iWHF zefW@@MBBhuwFh;AY9O$lPfHAZ2f#0N0AS$i@N+<N{+!(lTgx?o>vW54%^84fxqY3I zw)1py2T*K!J?llX3Y-dnwJfOR8rBnMJw^fL*O`uKtqK&b>>LM>DLtJ7G8U_S{DA(s z>Q4-h7#Ez3Q8L~DKV=Bm&gip&*FNHUHyXpAaTRU|<&s|=6%3z(TVFotj<;M=yi#8^ zxdgZ*ED&5HNRmB(Z;8@KFapLl8f5RgXmnlm09sUzOZDNW0UDZNy3X=#?$U?g{K*E~ z$sQ0oWdKLE*H#oKSqp%<ItDY)&7JF1pk4e)1(9YlP=a1?i)96uga@EQ4mjAlI8Y_} z!V8548T}y|DOMO98VH<e9H}=GKtMO=Rp$b97%Z{#Cvx-6>cncupXfRd%+;9Ho3?Xd z6T0vYY?q$qlpwuC7bmnH69&PRtjfoU^#lHag}{JgBE#cq7H~=$fXj`}ZA``$076eM zAV<J}!d~*kD!_r>KUaZ12A6Hufn(ZXWz;^Iz|Y7AUS9`}pACrgx9bdWk`eYmQJ@Gl zQ0mePT7+2wtP+W<s>jd2;&4lU7$C1&OIrD+P?wdj7hs@JUQQnc>l^#PZ#Z5PS?}67 z*B(*d<8T>S)XLBJqW`yz8jPk|3>?98E)#v$)WqfkCEd`gz$5>nEO@$~a!ecC)j$3@ zPPt(Q2!ZtANZ~XZIskS2N7v$(GSuj3ufU+IL4>w_q}@VaH*kVS8%}DugM@J}kc%@1 zU337GK)j&;e1z5r;<|V5GzKu5&2jJ#jxzwdK~As>CKlYB*a67Y2&4nZuxbDZPiqND z-1D#(7{olkHppJTE2iwatG&UeB>~6@Z)AZ$BS}W5;-N&@Aav_p;rc+46}jSxC^IcK zWB?@@(A8~Xbo(|8*<vdZo6X3b3lJD!%kC>pk8s~6-e5Q^WY>&W7qw`)aX#Cpz<}tF z6Y>)XZ3Di3lsZxq?%{RE$9zVg36);^z9<~&U)Y0FG67A}vO)Pg3JnBN-Y@fm_~^Dk z;55+D=;!}8ahk>hs5!Sl69<6&v_<J|)3WkSr}_L&jV<i_JfL(IfbhO(^alUtjt@ed zigp2LD_F#|;lv^-uTdAs$BJ}=F%SS<#O2$7>NNuCdKfgyp$2`X(T4?|QL%?|#Tqd3 zVT5{OP{J)8pDLVa29kdVYyfZk%Roo0f&M)l`bMk-2T@`ONe1SUK00po!cdX*l4bu~ z!Ii!MCoSrO2vsmXWFuJ?K#Od%5HaHyS;of(9Nup)^bpU3=CX|HB|z!P1!VBSO1H3x zWR<#qenv?_bR5CZZiiDp<F_8UE`Uwt2dx=nNpRrv+iJ(RGdECNiy-E-t-9y&4G?+X zckYt=q!a4_Wr38hNjC!Nrx7=~0q>|>{r(^o8fb2|$)l4Pz%6Ip8_r~hddr_w*~t2a zNZJ|lChyBWLVT87bggM9MW!q~f?W=%M`+?8Jgr9-Yj**HdPV+_9iVeYGVMV_#c&yN zA4HVeZE0p>5oMqiHKaZd*!+2*cVnRuCH&6%ZVQK-rt7DBS5$Kk(zSu65#XB84*K#D zzB-M^1VL!R-=+jBLSxFHSz6tJLNh^4@)e0+u0Weo4G<)yAL{^xx;I<Td+UCFTG0z2 z<+8PVxdUuaauNuinT9OWHa@eJ3$&Z17rT^)5X>r>pe^shZS5uhR%OXeTm%P1PMEso z@y5XOH%43zu+T`ktfGsPMUiihA--7k;`As&D6v3cO@}HUpxYLXcy{@!R9Qv41kvnL z`FGc+>mR0H(dRSFi1Ou1(<v<?vB&6yTHxwep<iZ1|8zBPsQ?Cd2xiQf@L`e%`}KBQ zgyr8>hZFkACSzE+u(MGLlq>*W1r16(a0<lzb<4!-l&muxMHerv&EuqH+^5U7Oz--n zn{H-ZUIV#*duW`6-Yyfd2vr|Kvz+Nd8_IuOn+l0gh667B9qo>GSGf%Jg+xF4!iA#Q zK1ICcK-HLWP_B?m=dFx~`f?hYKLu!54#hJF<Qc!_CyK;(ap8;lgl=2bPOtge$~{aL zLN_1v(Re;_8Tzj<?T0I)h;tFoTh<&uUVRM@KN>*{^+{eFVSv9R9;5tZ^7z6aCI1Zp z{D_(RiyU`>s`dTWjHTvG0JFc8p)~?*jP`Wao3xi7NO-Cb+3n)EaEI&wI`NF`xO(by zWuI43*V(&l-4P?oP{Vsv`4v0QSBn6Rc%iQ+73k1n!I~>3dd=HlI@^)ipD>p4Tpb_X z%vG^YtAGLfz60PvnW84|1D4x}7FqAXCFda#0(lnde~$d4Avg=WAyI{L32%zR8)F1> zn?56Y3yPu^0kaOj$QHT6t9Bg0wE{Ae?`MTjh$^sq7G<pyFK$N!+5ynw^%oX-^u?~W zoUF1<Q-PG!FPOFn!}p!nVrb)dBEeR474+2(k3RC1snT5>@W{2GGeA-%tS;gHzzwQG zP~;y$k_v?)ScuwqwLD+&ws{D&I>=ij=jgy&v+)skppP=xZ&F45nciZ?6-7>4kEann zjQId$riR!hK$WW&%~R6}NBPT1rd7EOLbYwAu2W43FNt2;9*)x1&TT=`m3_SL6Nj*G zyDn`CdOq6nWO2AcBkZ9Fgi9e>6$9eQ{%Jc>+FoS?yBh+Wx`6r|{fW(4d(B1ME&U5+ zfCVVvDWschwLDoW#<0kz<+)w9F+nE~UD{v`&Ptrr{~XiaH$RiNsW@l`lwb|B-(BxE zimQI43`mWUFM#wAv>X6qIWO%>enm|`UU`O4vBk)}np+kG5y-=*9_-=(o?G;~D}R5i z>M->4C@B3g19{$z=;LCJ?@3pU5<9=Wj*^oD5*atLwzjg07iPXwaX2nP(^BK}K>mZ@ zacKymhwQ!9z%&Cv)zl1Kzg;0u6#|-U_Sq?@LQUSLJa5B!SoUD=l8QD#JK4FYLQS)U z&`rMQOC<VtsUXPv%ApS~X23ztc<wnzmQ^RBNnLvh3ZvELM63feF^^6bTEYJ3LI;J{ zr`1<lY>We+AA+1eAOE}|#5{`G1eEbu_-=r6WYBBWZ*!GxO1ab3=lKk67I(b`6Vjv~ z9CKPe4@+SB^AYv6lx(x7x4(@B0S%zs*NqQAQ&+BdfI;Nh&2?RgeqZ=UE)PVH=f4M^ zkr%T^1BEpJq8M6s4VthS*=aDZ+_tH<^>FJdbinj&>U9_(!C7ppLgW5oSa6(S<&IZ_ z75;&r$e7RzSKK7;mYi_ZD|f)M6|bA<fIEhF<ODH@#8}8Vj#nS^3|X*<tJB8iZS8VW zqaChloG%VwEsFwaX}Zch0P&x9u?qYXI`sh<G0Ds9L!Naf*#d%jS1Ak69CTd)JR=Gj zZ?#dw&FRlb>bF-<a5)<K#%IX?U?uV5C>%uLm4EC7|NM%?HE<7=%Q1zw{=70SOqUA< z9)HvW!At)qFCMRdjVlxk-1Ee7wVb}W^2XQlZ_LqCv)j@WVbywqgg<WjRf>dQ?u~$Y zA^R)B^T%?FFt=9quL=Ad5ydS49ZPR?6&fEwOAdYBi+W>~*X^}o2>gypysn?5v8yT) zd+6Cg#~n?S`|7`rgwH3c_wsp?AAUYzU~uG?B*@i#ey*_7*m9OUa=s|Kn-NogcOKS( z$X6HKp_2F!Qh6$pOqHJ$+v%EnzxNtQxnp-63@3FT+P9b_lyP!>M~J}Ocf|su>{W`k zVaW~v5-~|L`Y1#QbtWK8@XYqQ)1kb6df3dP__6c`SnPFxYV*<Uv1%{!?0Q;z{xFx| zixAs_##a|A?3jbO@B$>A)%*t8<%r~3lk2R%XH=?>;elc4oZT$Y-6Q>ZlemYE<E39@ z<(Fdq1OXtnlUt`SFz+8|kVH34Q~AbUzS2D(st?5Vq%I8^<}{YO1xVidIqY}b@$RcM z?n>CjP~m-Ry#<m(c}K1YQbHmxE^Q?#+-Z3g8RUoj&V`9j!tX2JxOjI{t)=tR^3Q<6 z^B4`_WBH0RbNv^lgv)>6=%Bx?lzj~4G!9c5CV%=1#ryfo|15IPH5{hY8IkxOn369J zQ~GvzWaYPS{qt4a|Cn)XylKq%)L)k?bMP>D`}D3yp~#Vs=Po}UlLIi3&TFnnvp*>B zct>6Yzasy$jO(9qJj@3RQ$^g(V&7bTKU>(PaA*T4Pr@;@L9a&`*oM)duYE5F`7(g` zoeF4v@!Aikz6WApS&%!R12pD)buhL48jt<yB7B7gYWm4LN3MxOSdN2k_Q=wuk0fZv zWqq8^AP$NJohS5BrC5zR;U;?^g_7NG-y7h;n?mttbpW#x(5tEcZj8eaP?ehxn!j`d zkJJ(rCt9oa0x~x)e}rVuR7{W>BMax!HpTG>aBL=ktyApNlK(yRfYnWSlV>^IN}ljx zyaY)0$V*NEPQe{$GO^rxpN+ygRY@N%DG!4DVRkvtruBq+SZL@dyTXnaD38Vwjkh(+ z{_?Dofhwwo=~~PwPb(s}b5N>jz(qDfm8?7u0}+o;3;~0!qUXXIuGYI9v~yL-(lP<5 z{VP5RrhrIWimL*C8Ew&ypkgt(?oIQDEht7o##a<#RikJ=ygx1xZw%Orlx}y(2lfh1 zx-L02U%2&{#ICgSbt29Ko3;Z4Cvy<@=Da*B+XF&8BLp)XG%?5oCrbxXmD`~WC$0#J zcg`B60kUNuQQR52<)6SJTArD7Z`ZQdC!1z}$0NgIwIHst8DT%pW``HRBLoDtlpbgT zP}~eC?!K}5NR%~OintE%1#FQ!c*Y>@00YWrTypJ2fQ+F5(gJ67!#Gs2#Y_9>`Y+pK zgMuLc{`lk=;S<?-fS6d^xfgH~WEPJKsJDXp2osQ_;mP#30JRyYc9ia5%H1~_@m{>n z#g=6oUvTn}06=;UDB<m@Fc8nbT+cy2%NX0IYyJYzeii>b^aoB8h|?4WSf^!~;A3CT zL7^rf?ltgDdMr5d^z0na7qyj~ZkA<Y2*m*lkEv3DvflFykmvH5MJ&>M>iL2i75+Ij z|GEMKS6;+ky-R3L;CY8O)E1ynxH371&KY|Y(HrBv!GSj)I-%iC^zI=kx5K$^7T6}p zuj3onav>klT(^F8Px&a-DM>{<P&i?9{W?D8?94T;QOH#MW#TjOm)?bEz6%d;kt#@% z@3kFlfqxa*vvCfI?j4&L=<UT$^bHEfom-D}314?r=oxX3U5EcjeKR*6c^%5z$Vk}# zGo9i}15lyCIEo!<@Lo-At-LOXsDC|<@2{A-AayrsBQAV}|60`lekGv-_9XQjYf#Je z?|=Tedw!Au=KvSbH$M2g-+_G34B$iL>W?!2d12fKp8A8GN-Or<`hR38)N#d8pT9`{ z_0r4~G{Bw;MQ$z}-rrz<OCP)g9Mk&e0p1i-cOWtY>U*Z9Gk4ykpnm*VaHhnP<u0iB z&J`u7+D~KPvnt+yuwFZVM$r*+_D0lvw*hw3%up$it7L03@cT@&@#5`7i<f-Kc<uaD z%4MyO`^U^Y<o@6;_{g&AC7~^ur&4MZDWj=<WB;4P@-<MP{Lj2&6~1Q_b_5Rna*>%i z!6@=xcM*Bsy=2w=*^pbr44pSH*U&4x9MEL<W8S6|hZ=e--B&S|<-2qqzud*(a1T}v z{kI?U(!lqnFEr(quRa@CzmTiD(`WucB9}!+eZ`YJQeLbkmAzdT@8{#6YJ+Sp9wE(9 z#ZTXjd&{BvTH89Tdy8wPtw3h-Cy~O_`=W%L^X2^a)DU&zIR`n!EIZpy2dUwOSbcQe z9)YrUrsde4><HnH-xPZ9v3H?#g1Mc-1sd#zISOgHyL)|F?8ns5yW;uwGP&AhJ^hey zT#@hVPEb_9=~^i=zX>8M==UL##duJgw3IJz7Q_;_9G<L;{At!`KnMJSZGLQEeWLp2 zd6O84!oQK7{J^IsC_<I?ALMT)BQXhRB=fF~FBt!_mxE7Akbz^u=IPh;KbFTo1{J>w z?9jf<=tj`b+4<eznEk*S5&Sf!{M$u;E)nLY4X_A=2YC{!{{DWjG_U}A{m1NoUnEnm z;Md<QMm8J#{r&0$u!zX60Cn&;QV$v#b3f-B?l}%*xIK#;U_zh`iX+QHG?hZT(J+Q} zSZ9`1`Pe8%XR=-JEef5L>*BCgB?~v6?R(#cuG-4(--=x1?A&>^=!;<xA9Zy|a6fRz zITQet{A@7BN+G8-6kA-M68iwl&BVJkP*5+n;+D&Emv?J5u0=$W%t6W6X+e3<d9qA$ zdgYN}Dx(4aXjmIf$!?TYxjJgGcyK)8n^9F%>FT$oSxWbvXXMfSPJRS7jCT+_^PWrJ zmb7OVNoy+``32Aev9k_AqNeu4@864=Ei^{Vy47GZLhDtss^PkV2eeXvLNoEJhlS$B zpr*`->f2|9x`m?FIl93s!aEt^#ox9n4F%ll&Fk57ImFuE?MRe6&k*I-+{(3^txFLd z_f+?lO!$}|ks2K!E^<sbD5k_RNc?enH%9kZ!D62YzXQ5EUo|@2Yptag+rOu1E;!Dc z`%ISpIfs#beM3uQ-NN(IgXTd9JeqMDJWnYKwSta0cT0h-B!VZ;@X{A{<{Tp7bB}X{ z-C!v*W#|3tv#{%^Qgi!yD#OV*J?tCHJjU=WkCocaXzd}r*;Em8SL`(P=fT}CbL-`N zTW<g&xBePFC6&9i2-^^G#(aPqE;_}jzS|U3ZjLl*y;9{EHsx2UzqUvoX)*;zbmSwu zUn<qz2)v5aer?)_77wk3#$9$<$yr)u5Uz9krk%SUXKDXcX2C_XP#Z5}JJz`b<0Q6c zlIyqE;~YIuI$bfZU;*pqLUM>Rs&u&x=Q8S`EH*AJhs8FQyARBrCx0$(pVM7;dN`Fw zhZJ-#;i)fk)V`K4WgD}ZB8Gg7=|R@%I5y0^3yR9rKB*&%Qq6pU<#(B?Sn4*rtuLNi ziVZ5W#8#|F!6$Czs+R8k+@|)Al$Go8*AzA-1t=tjB#28keEniH;awZ2VY=fFQHE`k zcKL>y{C*X^1)`@)mk#SZ+psij6g9y1M}IWnt4jTtcY|EHe2gmXLL9BHHE~~CIM<b} z@kWt{nCt~1ar-8U+~~3aXSIAO6(5&Lr>D*hPK+HJ8=WpPCam)nTOuDYqp8lP3fs4K z`|<*VRGQK+FH<s&#NE_v9;%ppWN7du|4E(hDsj8fPE>@`ki+!29^p<dQ?%W*J`lj| z)?KuG|MBC74(C=<_mgLwy>C^C*%D3gC(7qpQV5<!IG)<dr>ktzz_ZhYRUVB~#o`Yx z-qw*9uE=l>?xrW#qB19^v%oS9^3IO$H02#emfljE@6Z$p#ty9}GJ%$Nz=*bH4RiaX zJyB(A&Z&DZq9CpK0}lD0+zf4C@{3l3qQk3Vo2SaLq!lI`zfO(so{WST;j1y}3sZ+7 zg!B*a>X+5$hPCbNdTD429f}du1jml8zn|eTG>Sc0#<k2|$L-!QXTw<Czh^|gC?dC0 z;T~-_JF#ki7h{#*Fc;*0S$KKOYEKMaSGJe96xEZmAwg4TCb&K*A`$c0_S78dsi6dY zOVm+#7l#78p~*JtqX>RxY8*^OgVr~e-06|YW5NtXqYTMM9`-J!r`NiqHSvq5`6IO) z^1Fra5-sXhmGV__+}g9Sj~-k-9{Q2T1TSL|UW>GY$0|c7-A0kaTFCw)KWK7dRU|3X z%S{BLIuo(7yOF<E^5q3AT?;l_E$^nVhq=AjdviFo!11zkowcFvdlpyJJgQV5TRr#@ z(eJW1#WJT*A1IzPZZ6;~o@)}RrKyM26=8;!D~o1yRL1p^Taf9l9`tKHr7wYV@+s4y z2-%@{!nAi+)ZX+Vk5I9*3P6bvm|3RXw)IbfVi)9zf^;<&E3-=3^L52}NRdHNUZ2=r zw4tp}ehgMXQDHIjvtduoFkI%erYNUtiNli!S7oax3pvE7U*~Jlo$HQb{c(YVd0!8A z#=3Bih}-r*ll5Kn_jgTOmlcr{?ay!t3Wp0h+s&ue&CqO>WHL@sZ3wpUu4xTV+M;6L z?79}phh@`==Dm_pPTvfgW;|2gy0wu+kUHtRmAvWZN$|9M*GITSAVUr6v-mk8&;7bd zBth(jJl8C@0L*2qs<>r$3bSUTVS>AfPRGTnJXdP`5>Cw)_pq<|P?q9a6kJP6_oQyB zI~2PgyZ<;zhdcnMhmk_%?sJJ)qGP9N?d95IVE6{PMox#+%=yPI=Z@d5gl{RM`<_g^ zQ|4GMze;(8daEpet`fE>X0CQ^Ot`1ztPElL@B*=>T~@)QuWTBz(&`hgER0S2bt99l zNi0mSJ$=)mcQ0=)@z83HY~Akk+i+ND;L3)ec>ju6wCX7Q>2}%`!-BrCRrCPWK=Co& zDw9ONclS7!FRN8{LG6%R;&!H|Mgr-Wj@Amm1$uIK;)v51H;|E1Lq;NMrK751$sPnL z8s^AMpajlh+t!8>mCuZ;C(_{)>e$Nu8W*vdhDx(rj~9TpUYXB-ku`r;d)rAB0~6Hb zMlq%wbVq_OKz7SD07gXN;z?8n*;XXKy0;{pYY9hT=GhPJv}%`mv~&;Chu@P!%zS;B zSP9p4`s(gXDA*?5R>4?knpHFFdbc6X<W#Y5d1@==p|a62t1gF;-9^z0G2FR{imP9% zDkawUN**gqK5Dc0W~wG1bt>dW+<aprs*mF63ymi;vBj09s-)eWuMRWqsphiX=_rXq zn71n*HZ>}*otv<9hGr7HBGw?c*$eF9QSehbqve*|cz#BgmL2u^ZPxp&M+h(F$)?=X zVkMZ|X00@0-ABovGsC%H)3>!@wcV5&NZ7jRXc}j_zmDBDPkTPqgGH<vl32a<Qrh&u zAJojTXC4vW%>Wg_LNxBk*}M>&u~8auO(bX19ij4bDRH*BcdavR;!^2KRL3#ecbUW8 zJ*va;zHUh8r4o|5iAEAtu}%s%XoA}~$uPRZsB2wY5q~q7dtek#|FQ7SCGp9_hVnW@ zkqDEDl-5RbhG5e@o^8j>xw1Ox4_f@Bt*UI!(~k_rckUH>yqr*no<bxnN7L2QhP!-o z_3j=G@(oKVDw_~(*H<gpc{jfWLk8uOxW+bUYN)&(Ec)zihAMpF)rAhc*=JuSPUlmN z=xEQq=U!$DF9hwm7WMe_;;6zcmTmS}_0-(<@C>QMV4f4<?NVwQYGyr3&x{myguv`j zcD^8X4_b3c9TdP{{oAQ`?&qmT65~>)uC89#QX-{5+N$y(nZ2r4H2Z#-v3{#oxKS+S z(c~!cwLvgI+m(BUoo-@UujM$x&8jzw;c|sip8|VM2Kh`z&#)LhRysesxOmxRCm)Ms z&9B+^Z-wWaA-@nBO?|P&6-h37N=1*=y{vpu+|4Hv(!=C@K5ODa`;t@UB>-D6`fgGl ziYnl<Rx6pfBs#xlW$Lk7Ld^FjB>|(MHSLw_I^&&?5QdP$Txv0)T|gb$S_$&?*GqR^ z&E3s-J0p)#NSIb<Twy<?T26UMc0N=!x_@RJW3*T~m19VwO|Rm9BQABbyE)%-&CI<a zRqUx-DrF5v-H+n;f5qMe5S=rR7+%4~CAp^|5PYttwtIGuQp6Bw<)Jj@OV$Zz-^g+l z=z@l&xnlGhR6d)uypDq$Z1mcBP38~mwh|`FWIvnL1~QZ}x45FRF%q^<RBy2s#P!jt z%)0GWeT~c8(}Bi5Zr7~`CwsXrLV*`k@qAnlW4N-~zA;Pf(<rZWRBOl+b2w<@@}A`I zX-o+p&9sMSdREh}QF<1GQ~K2i!JEATV<&(2)jhqrB+gGuUYPVE9P{*$Vu#zc@zxcW zCJa!C)(6J)HJ={YdCx8aeHPu9=Mgf&w&SlFIk4?Lrl3^b*%xmhQZf*i;*nb#tTfpv zrEE%kGc+1ujR}L@wwuS6yep;t6~6v(*MraEA_~dJv`6&M#&6uFdSRNwpkWUQ`qqak zU%rSZ=K8GrO4TEWKyT|;u{p7JS6Y>rj#*?K2*QKQA;$_D2aTi~DU7MBH>|cMcvgQR zNB@qKJXToT2>$&Kzk=}ico0{SY%bfZ9*84;{3#(<v$!87{d&f@SCn}ms*(I}5R>rc z2E)FC_}kSzy>Q&csj9~MzXyAVST2_TN7=Gs69~2N|JSl*hhL-n?G>>Gz^db!#0CDN zT=q%QHrd|*6cBt$;tDy}Mkgl@h7aGz=MnsB@b`Fg|H5p>;5mD_ZTE@%9i5>FSrPty zTK8`OpHuOElLMF|MGuG_sZFLH><z5vUDlz+SWT|$p0SU@RJ8f}d{u+EKlM(=9=Nd< z3bqw^R7+QoHt@(Ph<W+u_n2BUd+A^kUXz5f<ij>&Eq*EzdecewE@+ypKbP)3o^=3j z4|c%WR<W#<AH}uHkRwS1U&3<j8S$VBvyFJappoz6^n3^g`SAF_Sqf=9(i|g4_%WtS z1+Q{EcIl@Y5C8Gu>)^xJNp;RrDB;!P(hHu79^&NNto!5sZh7axl(YITF?yaNR+OQw z^sC`~#Q7o4FJt=J?+lEmnZOFonK%UwI?q3>b{cp$DT$xN{%+nBn&4)-#561pw6*;C z{914-yRy&VznSm;qh>|}W6Xi)^_}|r!%aG?7}9We4o4xs4mqz~q+zoDm}9!79&Isb z-fM3jD8~Le?z7Bi6|KI{8R=i`=ewbo*Wc6!*juNbS?_7hs{%zTZ|W~zJGy_tAJcsp zq(GcMJbQl#vP_}a#b-Emk3VUzntAQ{f@y2G9kydc)f_%LV;l;_&>DZ1(Ka8Q$VVG= zq9^9N%chz$>)3B?b!GJn?+78^iOScEI)`I&7PM<czQOY9d-+rP9OU-y@mq9V=_s`G zmXF&}tbvp4R94Ey7$0W$>j??7+*<sK^l7NrIk0xe(hpV6udY=zaUNNbf6x|uli&8k z6f<*wzKbjcD<Vj=mL0Y-)p|$Lu#JpqnJoJ11n(^L9u=$y6$f`AC2kO~=xW}wi&Z8d zN5xWT8OW8tOt&B9`F)QD^YAnQWHYX~ruChG5J*Y1hnnV-+L%l3+%a3(o9#vR1kwt( z7lqsAO2W;|n^y$LKP9g&#ME}S^+b`@db5l<b-ovwZR#tEfVu4)>z%F;`olO~0hhnN z^MZ6aMfF+F1?}6Jx2?Z*en!|~B!QG)W_Q;Ef7KG$c(N!wTK(A~kK4DLj`m3oD4m#9 zNthjq5Zg>2n|PGTBusP*)L@EwC48e5(k*}NX4926)B5)985iUN6;p?}5TV|zN?m@1 z*eBgg*@DNyACbzF+;66B5-f<&=iSU^zfD_;(a*h=P;GxZo?PnnUYY7Kmxh?|H}kco zuN|pxbqjUlD)=iVwcjYMhXi0}x?{(~(1pXC9P`bsN7osKdv%X(CLlEGzal6un^qnT z%=d&=dLw$iaL&TIqh!$f^CLr}$GurKn9A2Vd-?Ne?ZpQC<|9B?^Dwhn*z^p(=Wtp= zXrD=Z<Cca#9c`!M<((AR%4#}vZR(MMFT*2Y2a5uq+JWrj-elzH#;hILC7zAw6tPp& zTd%^fXxPA@U9^fuWlzt<s>z-*|7HoNpHHn}x1L+MDM>_`9vwf5NN1gE(d?`reZsT` ztix+^TQG2CYrzQF!I{4aUG;`P&!~?3>^R$L^wf@HnsLnp<NFA0y3;ab18-ft&+a$D z;B?>|1n3~Z?`%A(FH$@${(ya>2`k`MOp3Ras$WKb^1kPz(X)#U33p<pa)hokEYQo~ z-F(!DhqmbqWIp$XcjY1Z=c5F@`5uiPHI-i6^?aL#^Zpg~q)1gcp=MNbRZzPdasOI! z%5&(Oa<pDnd9T1Z*sLQ%D!ZyY9tD~;&LxkRP==3u`VRTZCWevzNZe*gpLDgwc~P(6 zJXNQ#MwA9j+tm$<k(KwSFfql`zHJk7L-D>}|Di*qW;d@(D$Bze`$UunQOz#F7z}sh zC3Qh=LOZ)V(8ihg6RIR)Cd(W?6-ARh<2J60o%+HSBZ87lA6NO+gAgl2B0LkK40T%? zBS(cA8?<{xKV%YPwdXx8H8T}t+=Y8M;206!PE#L(<f04s5v@kz^p}d-Uj{VvhF6l6 zyQ#0omOWLKp(wn;GA-erH52zyZKuIl=xC|xHTwLsvTrCwwx-~b1WhxoUdg#$LqZIG zQ)+Gpc?iKIcoXO9ea=iu#2-3hx=xm?+QgqQaZT86#mBzo_#!`4@5bs&_G>P4<Hg=f z%IA0{6jmu#x|#cwAEaSd`l{xisqRflXX}y=$o6^*xRhhCRtl0C)SHpB{!;bn@QdHB z`(K~l4$!Pb)O<2Hp?iUm>C!d3u2(~&pE(BJrRtPc8P-Kpm#8WtneX{?^JQd`tS=wJ zPM=<9jpZVgQ+3AAq)xlfXZUy)s?ts$T$Z!s<kEu5F;-Vg7Ba1VNFGt_c>WQbVw0UB zb8Y5se%Y?lB9scLxSWk=;N4_X)d0heL<e={op#S@pN(*O-P3-<naV<cc4ipKZV#2$ zSoA-W-~Mp}>VK#8u!z8{WHfdYj<&AtdC=)rD!SdSuf@=HE>>02`mOZCjz;OGGz{j0 zdZwQI)M;3dn~KUYV=_6aKyl&K-FWv+t*}DV$ZJOkmj2j}b^veKRvb@|-c#y$lWU@8 z3GKc15aOce{{He*9(-a?v@2%@)xLRUs?m^fD)4ugx<vTdl7FL^W1St5uFmgqQijr! z)+>nIsH}xTU&C&T=-{QWOV?jG(nPWKnA{2Klg_S)Uq*b3Z%!QAI!Wx(YZg}ekzHxS zn6Rv&*rJsfX%a<oEK-#Z;Tr-vk##CPN*<8Kv*tY~E))b&f@Xx<a~I@`C3|KdwrLSb z^5&M8oGZk2Ulyjf&(0U4@fV@}>6h)_EDDd#o1hIAv3Fo03@VNkh~Zr-otGR2J9mwR zyhY_*wjK0tBFnB@BAos3av+P3kTgf5Cpn!moeIkkVXfARK3D&k7A*kxPuvPwWmY@{ zAzoce9&ReF-NM(KjCbR!$hOWD8Pt(OG~JQzF*_=6%-E5Y&^4bgAKjV1eov$KWKgHo zQZ^O7|DE%3603>!Z6_K#JIa##KbjfuwvV#Lls0npuj@#+he^uKKx0gaZ@2TxrfIZw zf=$%bqE)W~9d0SZ7-DbfG>hW5AIh_B_j-W9ljl~Pw@IEci&4;vf3J}LO~qD}w5k)L z^_8=mwL8JO_eN_UlK7^#2~o*asJz}<mOZuU^Q`pCf<T@jYyBe8Tk84H8qZ+fmXQm; zdlC{{xQ#8LT9D%Ddk<<7+6k&eQ`*N_9yZ#eHAA<lJWtBTP+a<wq&Hk_zt|@$E!~qJ z9~$NBhtkkxdXgL}8`o1ps5~OMReZvEWVv~kmE6>b({TVv?{Gn<CiN&Gl2a3Q$NA)& zvnDpHy=)YHC3cDRNcT)9m$frd#mZqxEB6Sy25C5F1~S|DU7AjD)==WRlQLcx`1V%e zE37Iovw}Xg89P<fyfqdV<+tX<WQf8Kp}cSA$%-FG+mO{rTUu^9-IF&S&$6B<daiwG zM;`@&`uh$OSca6z3>Uhoz6E-*QST&&O@zprbG8oxQ_M6V?-@lR)8Hvlho4v7G~{;H z3zbmTq^RE-?7~N?r$8p>&$-RPsv)T3i2$wOy@-k0^IDvWI78uyHWtgE6@6uA{?toq z!4_2+lSkQJCB6<9_~#=`{6F3x<?DpV2$icOchbjdB<r*uOG|%iKR%#0W#H?(n#9`B ze;SjoAft==VounQTdA7UDd@a00(B;f%)7`ag_Kezc~GyzEBZQA84vJiH)T6-ccx^T z$$F---$c3wLVe<qCsooF#BNBwi=wuDo<gqpdFrOD&I8#X;j@JGiEiUHEbqzx(12i8 zkGB&F-oChqbLDB8K1z|6eN)Isok01x9d&w81fQgCy}ZhHE^`$>=xs{2vUG{;F)@)e ztv32-(<o$ait}5{ln(W=9Wwq+tw@G^HdoG7iu=em?j@Nx^n71WvtGsI%+^Y~zn54L zrcBk@D&37ONy+gP#-%eW8)7ffu6N7ATPCrk$YU|DWm3QY9qg^<8nM*Pew36nXw!5m zR#iN4Lz$S04`nt+?en5X5}uxgAVQc2F}NEl&Ud34n;z&WaSDZ*^v<t$HX<Es&728r z;uoxPYhri2Tg}b2=tMeg&F^cgmd(<sZb8&`y!zK%-p-;sZACeyl0DYG5ltTPw~}ck zo8rmW63*+SK_750nJI`K>RhE__^JRn=WL#WcHH>GVeI%+S3#%Vrc{<ejr20K-rd}) z6LGrtr3<O9BlN8+C-}sU2xmN?7qtz+EQ)@z72_k#@37idhSh%=Pa(cOFI?^21Dakp z)<@2$!BZ|m^5lYj9cLXew}%JJR%0!6J{i9!x9q%Z=~L{z88|idDpO3=XX?d9W0y0z zEZ-{~mNdwHPTRF2O9k^;{w&^19Td7*n|Dssl-60?rh=yeJ-{f${)%haCyTdW$}5>C zvA<<EeXC<Tp7<P;NQ=i<-^$&Y+CRLJtRXZ|UY6$0G3S%I1$HsMbLC?0QGRop>vx4O zxA{#wEDPS8B!GSqV(lb@VZ31nBbjr=X-_!l38D(afTUiqDx}$J-dq^dRqOD`WlF5- zViWtU$^zBfWXY!FU<DSv$4c?(R(GL3_s*xOyz7j4O<eKLgjkSIM2E#diQ3(6dXx49 zYBc`@Tr;zG;PcD8*NXh01y|WvNP}xCOk28@n9ZYO$6}y}WmFIQby9grv!_(#6c!~Y zp4dKra{YD{tM%RvoS{FFI?;5^v=^On;wkoPn6!ReqY!rFQ^7B_z3%}Pn-vJZAba>j zSYba2F`uM2(l2z*1cNx8H=jK2cVEMY^@G)xl*`C|GXFrlm<Ol?u+J5Ae?$!bgy?_~ zAl35!_P0kaHsxkqjTQK!%@XW$$er<>#3;pYlfgUzqSY(zANm*}C(^QL$&Nq>=ctAn z50?`ku&A%#b6?Mt$TIsvDv?!m?KW3jv-|FUfo$5ui<AEWf}Q{X(n&tY0Erj)tN}ui z@w{IeBQ$5#B=FLA>6;G5&2rRiE2Q#Y>6`!tvvIzu?NzaO$}en#tK1@FfZ5992xXw@ zQ&FlU0>am=zgxi-Tz0!cdW?F6JGeHOcUPnDFZx8mksuP~S=G1vZTLS!dWxr!05Paz zWGnby+WiN*6^Wy?One?VFe^X)q~HOT^jcKWg5W?@{^QT9fX7f@=l@5d`8!g?Y>0aX zF7bV2zn}9zZ{i_ftwlxBxE$R4zC%P3b-)`iz)HMl`1{DJ?|_xV!;Sq9rH<ENU|;4u z9}E9|WMJA@Obm7A{vwBjTWeRqzyi7tkJ}%7rawl8o0qzhF1o)@i#`|_Z7xC0{DEcr z<4+0PyhJ+X?DKkm$HYG224+b9s&`*y<+q#g#Ldh9_P{^v9hRiwGN|wNgC7F_-ITd| KJxl6=*Z%-go}1JF diff --git a/site/content/images/graphrag-ui-configure-retriever-openrouter.png b/site/content/images/graphrag-ui-configure-retriever-openrouter.png deleted file mode 100644 index 7c541cb44ee4eda3d10609fb19659316780c4054..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127020 zcmdRWbzD^2`?Vk{C^ZfW2ogh=ba#VvNQX#E_s}BU-3ZdCG)RY%(gI31(hbre@1Fau z`!nwU@BQHC&YYQZ&OSSyXFY4JJ;93dk{Gui+`e}08iur#nDVu2H>9s!yPl1D6C4SE z`mbEOh9qq+Dyk?gDoUbgZ)0L^X?*P(Uc7NsnM|u9c1QD53KAbRMcY+u;k4(`Z|5fN z)4UWdxUHrWQ<*1{A`lbgSnd8%+%CF~XXEwDE1#e_k_Ah<IOoCrhSAs3heVyn?!=vT zE-$|4v6^&V`$9O&aNmAi&0IU4H!4~zZ6?RsjsBgvh3ZS<hY>SS^2|twtkILhRx6s! z635}b{<ZJ!^WK+=Vexe7(r4nyOvxM9V?+ucp2+TE?)k}xLRdeleF%IR{vz@gJ3%|& zUi)i>CydZp?EJ7G8}S;Goz!UVxKH|)*{W%MPDA3|<ogA_nMk<qrHcMo_cZPCELDTl z=Rb%&pjkj)rb%pjcr`=yeckG5?VYenkpV8G;*<|x99H|%knAQ7_tV#kfAAK433aW% zll&r{km;=Zw3D8M80qr<N`_Vc`O2588#NA1NG|C54i2WB`Jivrj5VZ9<m9f=g4d|m zkOIxGp@3IN;NJuA4-7#}z_nZ8|98PZvDe7|`SgbL>+An{eLWlTMPU_DX)t8hR1EEn zjjbKbY#i^JLEeB%jhd@!IBLkr@)+7!Ju)z|d1m|wZe@!&<r*KH2fVa0b~GS?TUlB= z@WA<De|>`oyha>mgpvI96-Ntxn1-ApiKvaeF$u>brbkRLf!ib`Bz*QpCOpbw68}CO zyyJ(NIXc?%FfzKhxIA)UePm;A%E-*k&CSTf!pOqH0KUQC;A-t?0B5jvAp6%v{&O8M zV+TWfb6ZDq8*388bq$``I63meV2B(2_rHI&(-?04zdKnw{QI%M12Q5$VPt;9#Q5K9 zgH!nsM|l*@;l`GlV&+z$d%!&exLKL`{`&qepZxERe>+p-e`hkYva|mE)W3c7^Qli9 zjO|5jtiU}T1^zcQ|33NeAO8D9K1Rf&|E(+j)z5z&1syGLn~(9ogC=lW3F*A%+BKnT z(qh7@aHP#ww~}z$M*?JS+_*uGiYlduf<s0f#7%cowU?X3Eu7lqkqNUdE6k*XJM)<u zx;oQq<Sdexw^47F2l?b=T{QTc{+KWk8Q9$H@85PwH_daeqdT0OX8)?6@m8ygyV`MF zk`fuF=z~VD`*yMtIfLk)9EzCGFMqE;p%v<UTT<T>|Mj!~9(k>bLLQTFI|CN_0yXFl ze>l8I!8z?-H=lSxu#x`o=c5dXlG38}2%$%Yk^JFLaTDC@{yDzt=|8mSvA7V-{LL;+ z`5&7TBvb|k_u4d7T*CcRbC4j^_dug_Tk=2su{k8j?egGWWf{Wp`oDDE-#h4SJgsxc zCybOY_82K6_Er<4GJZ*1Ug`Q*XR*n_R$36B5Rs?Z;T-lJ6V*05p>1ccg?%s1aP>Xr zPd@!-SpK>)EtOAv!o!gv4<fBeh7sp;!l{Y()_Rld1=Vl0tGnzo9cOGpJveO8GnVyS zP0H!QHR^`tc_~8p99KWLxf$!CMRJZaQyNCeq#2p3A6W%u1`^r_;YtlZq=V69nP;{Q z<;onmrRMRfZb5(BLq4>UBqgvlflkZSqlt>#$#PFa^=h^7947Dd<}rSDBjtXPwWUP; z?ML;S<zf?bMQx<2)}cfW<=Kr3A#{ZEy$eCl2f6N7zop0G|E|awW#Z6)nyVmq>Byn9 zf0v{Gv{y#rvDojs^eu_clZ1x{OQ&4cd{P5E4l31Kc^fqk-sNq#4>U1Ma@sc+SGHY# zKgh7&4m;H}jue`B`{bQinn7zo?HiSRN-y=1c$?<S5&xM?c%=PQ$4k$koQ~Eu!%1Qc zEUJZF*VW8GTDq#Z&iGKF$IsyDEmaNtk42IAmW0g%|1h6~<Wcq)q@U|<R*#iNzf-Rd zNIjlh5Hs*fZ~j!Iv&A^OHB&cJG0gXvcw3N?E|YCtDe$EFpr4m&|6MPg^X8zTgb?e_ zgspzfLy65+Yzef1yLXOHG2$=oWU|JunoUB4htb~n(J5qp>Gz}%War`g{qmtk^@*2> zrGv5!wm0ckJelrprnfZ=2y<w@U>Yr&&5Ag_-)>mxbiiZ15a)0G<z#$&IGFYB_~1kD zNUN0ENA>IqmOYivknhjS;<0BkhRM{p%(znRk%n1Su#K4*V87O=_Do1<FSBh!Tcijz zv}2IR3-H)%b*?ZnFJ~xL>Q}thhm%<9_@1)|XQt&z0)=4|B`X)qBjrT8+O3MBLe-r7 z&O56=Eu(v>Lhmg@1DQffyT-Cnv$OTn=a%Iz$K_seO;a8AeWtM<CF7~n#oU?mUgUQh zOJ~32$~jnPuvanZm62U;6BsgBKIejRZ`CYD2=pn=8D58F1p8f3>QG<!Z#YUyp0Eta zv>5u$w;p}2h_T9~IG39-_<{P`fNP{^GvWTy2jzHwdm~m8Y6Av^1Or$40b6r}@dO%6 zyppleJ=hZTy&@sT@%WJ$p-d;rS0;JpLb4I><7pS`9~Y;^y7kV*TJH<ry?jZ${PM;f z!dAtL%j4N%*Mnv2KK4<1cyf2vHJJo@J1CXBBm46&yR8;uiVuvV)yvtgE)Eo$Yuygl zyPOj@z;w@%j@22?lhbVt!02JOF$S^urwFK6i&mJ{H}5q5zP5fLU~7t^k+*)Dr`pj5 z>*VvDoI$o3uV<C#v#}YJ9E<E)&D;C8EX9UCCw&WcWW~?YQypWqW2A+{>?QnFTeRSQ z(&us-Vu4Hzxso-CQ6%0A;=|RugxBo~(+o5wCGZxY5s~c}t#@x$c=mX=Uq#$5ZzK2a zfkH-ymTS7|-)g9CRxT0=dNmXkm&(3pe4<51uIR%-LOtU&s#|Q>8DU*L?d))i(Duco z$3fraXXFg8v#VoE&3mWgrWsCF6P0$IMDCVD^h91K2F=7sobe2L4P*Mvgsnf$cXsMr zcD8w(*1ySvK)`9*pQbt(W8J)x?mk7CY8f-eY21y&>AL@|ZO5Y+omgPX>it(Wy)WUh z+h92__wyg?RIlZw)?FS=4s4Zm5?S{!R6FLU*@v9(brLU<M<+6Ua~aVz&6V4TSJ&HH z33njys+w`LaJks)%r7*=-guK5#QOY8L7XdSHm6t2d(4MCHNIE^V^$S?96#EJpQ!6D z{W#kwiQ606s#!|Vp29axi+&U|>$1~$oWModUDtkJ`()AW$LR`dM@blxz}1BVr^QHN zA!fL{LvIpuFxQ|vW0@%3FXKvr{B>bDG|F{6SDUIqNEE`R`2aO{!@A+9Tmibn-%T!u zv0k(q?Dt~Ab@=9XyfM++HA=e$;R*CIMz*6pw040JQBtM{w=!ASj<io~-D~7i?lZ~? z(rZ&Ird%^$3dzf$rJpb2Z9+>m;I`L{T$X$A4Z0K~GZ9ZJe}1&3LL~9l^G%hu$h?!m zq()1lVgU8`<y4zG!wBw<t%?DG8Qwk61GWQv2VuP1HH(BWiY#-@@jHwSb84E#_l`lo zx(l=7+6c833H#oxP3L#7n|7I<{`&Sw52?_MZ7YTzwdZ~p)pR#q3E>9zh`zUH_3?~5 zRZGmxnGj><<ngN?$AX>gkbKMLA7}4yUqD0$cz5_1Z}+Ei4m4i<IFDH5T?it(;C^Q| zQ=y~3QCK1Wl4{9&EjMwh`NtvS@$A))QDVtwE9LPD0;g?qsT_U!P{!tqa$KL*%R;gl zvbQDgN3^!{QmyyX=k&cV-)H1RY}_le{_p~6&<x+(K|r2s-Y;yPUTC(-Q+I3P{pG;g zaQ?Z29T>oRaG4=p$3gM?g^%eWO$vN_VlETr`RxKT>iV8vb=|k#r{hLv9qVoS;VAx` zqPl~GETb!}&d+)%jo&6ycW`E0U7chFhezK-QMPOws}1I#|0Y)ju^HmfF5Fsf;_Kol zDn%C;Xo%c5$P9{q&aW#Fq-(&}641;VY+%<CAo9Gf+-O2lvoKW9U|#x1sn|)M>WJ(b zZqE-@!{EGi0h>t&Zh@14Q3mrQ+jJSX-0)Uz36jQ>h0sQl=WBLhI@hP`oE)(Dc3*7F zHaBl|Z`@_x$c_})7op6$pM}<9SrzcQepJt$8-<n?1(#12!oBvgdAn|7qPVh0*Ll2s zj|R*Ae5+bFL%{QyF}v-YP#|{T%2o$~O<ItzDJAS%Zlc~g_Pt1+^@6shkkS?>zZDC! zKw__&jiKDo=A+$f7#M>M;-UAg!3uIHX*^1){}v<D@btMsLB`qP#!CGN77-s8b54uf zM$t;0^Va%(2CZ+q&vNewj0)-aGKjou{2l_0OuU_05V^v#G7sW|i~DwMerwN@`x!#6 zGwypbxlunYrzgoDy2lCm^fF8~tjcw+y`P=GYgf7QwWqOS22Y?bGzT6Ei=u=|2dDP- zd>KM-7n{7VE74xC`eW6GkG)l)YA<_D+}o6lN1|22TXMMnJ1>qX1N}mpYi>DuyN?HP z{gNgmajgT}{|@VfA!S54Lp+4?6$E$N#2Itb#g!2vsQv!=QiQ<S>b>&3JIv|!PU~Ox zT54~6co$<&_ISH~rwMdz@j*-6*42RbkHyu9UUtd4pfh+P#l}&D<ow%r#q0b+oMTU~ zGg@o%*d+!%gKLfyo?bCp(m&E2T6<u9H03Z*8>=8N?sc|=C3rE{Xa@OII;!tI9a>d* zbv}D_q}$XPPO#EyyQx8WQ$R6*u><E7zkAiB*ZCH!pW}9-zL#Aj-+mD9?uY9#s5$rd zN?S1xmPBzl>bI&UryjaY&GSEp$U}(B$_zW*GQCE1T@Kgme&or&T0h=9Y=bJ)SQOWG zgpQU@I8RzlzsXNuZ{&sg{LmB*YrF0WE^*N7b+(po7M0Uno3}nvRNun>Q6nF9Nk?5r zKj(NpkT^lgcO%4b_3Jxz5fY5+w*7eaJ_jk`^Wq_$j*V`I<-uw&dZLf0hwqB2QoL)i zx7(n}iy{|Ge6Xm%D%*Jx@8*v&1~}NqTX?&&{tk|x(E3APsR#Ix^!lMer$9Vk3+(?8 znmGH#4*qEyJl7AsG~VMYeP!jFKlI_;AHBA5`MN|m2D1Z?W5h4~8D=Ip3XzVHPs`g< z34WM}2B6!SW_VULckHo=udZ-07n=&89}9Z~sG;ug%UqANEw<^$XgL6(P4^j>zoT&l zTP4m<kl05DO*NFjZhOGHCS!%snKF)r8A`n2Y?Gc_Pc-<^rHpD*o2<!6R3K^XXv+EF zXr|nAC3Y2jk!UtTvN$;EtIcW!LLbOp$Sxi-w%y6M9?^J52G0={eAl~=9&lW|lHHX} z(8Hq||FO!!YqDTWz?q_Ed={Q>PHQu~Y6rV(RIX@*G0NKBbL`cI)`nYWK0M8zOseO1 z)Jg0OAB1;=;p^4Bwm1gseqADhaIKvkWuT<#tUGc(_^D)~**0khUv4P8vWEv5YsS!` zuq@yhx#4g`yO9aUc>wc3p(=taq?2SO2elqmRxX9UM0-Tf-AXVZzdf6PbGlYk)Tli* zeouheufS#2bF_rD{~PGaWiD$Ja>|O3)(?{XyZ%xExMnPNoDc4mNbO_j8~GVvuk1cW z#~4gBtOY2TpE!x68x}DCCb*`pOz>#T5R<tl;6SKByg{PSs8FGUPn>Is=)*>mgMT;? z|3rlm`lLx;3U|lCw=}XG<8la@#0j%1z9<LVIthwRn;7NHOAKRSF1Cuj7b<0DUkak@ z_c{m|;F}aHzRa#N7E@3{+~WlNrP`gQ^9$_jI`2U8PRAv)X*xC8DeB{IxpQNiu1$<f z;PU%0=KTGgr%ATqDId(%>=`CcYGrFA@WlEP7_{AlqYnaJ%ev`Upr)nS_{p|OgdI44 zyn%bdlHoWc{UdG2DxH)b`z>=n?&#eGM#gY(-Uz7YZZ?JTAKw%unFBZSwc~%~x}5wY zg?}Z@p#eM6Oo0dWz}9TK?){aVM}YiXO1XO^TMZFjg3kt$z|^gvt6A@>#$!rK*}8J$ z;lqqdqo3j)44VR5oBVRMXlFXEb+VAed4m3^iriOe(X^g3;A(EU|9tpPj=SYBeTq%+ z?17i|H`5x%GUgM5^awsNag69;F@Y9}JJ4{$wKD$MmV2k#t{NRQSWBp_S{_xM%q=VS zvIz=PEFCm5;#j_`F<sZ$W;>&HEa(&W2OIGQ8Vg8HK}x78$j28kS?maJBndeQD3CZd zK`*-vxh@>I-H$iDx<(tGNE`40_ns6)1rlSKMYsTqS$Gx16cbLmN`g6vk%|RVTIqiU zg>o6ks^J~I_Ql*M@`iVjk{F;1Vh0K*$(K8car50?OmcM#SPAJ0#vaNFShc#TKW6L2 zBqs0o$d9GNsvWxyy9-+pf>)N|{bStya-KOziIJp~|HsK98fH+p&Mh^{Vl2Ok0woDC z;a)%2Hom&aMN+&6S+0{+R*hqQ&czJfVWTi)zMFTti6R<9YVe9GR&NrkfB$yDLitGd z{J<dSfU;vCje9t<G32R~i$|CNJvQIo*wU13AL}0E0vj+;^0muDu65@xq8a<|UHRal z7dM?f-w}UKluk%@Y7q1d1nWj(-$Zw;#dg%=Z(G%~>Dbca{h>H~Wwl;Re#&|zyQ%j3 zFcjfe?l*m@R>s;is+1V<a3f;RgA%=*Z6F=!^LQnWlpKarnyhWA#kbmw2;@nhjMGOX z{5&0^=zPXtG_kb&XBRHkZEg+^vrNaVh)R?!zno|`S@17VOAwk=WUv?>-krbfp9_6- z`i4IC1CFOgm80ynZ!V5H3JYUiLn|)SELsof8FXqG#+_TD<*6qYbPcgeyN0k@%V&pB zTPOA;dkiMIt86ot5(^vdKk6ncu71we_v|7ZHM&<NZfhC;xro10?FyGlJI(!@K@>^B zL~7Q2q7X|aKQ2EUzBcTS*hhF+P-ct)c63G&0mni1XdItT6y+8YlPKZ^x-7x~l7KPe zQ4&344@+fYV(MjF-9s7zU1yqG$QbFlX@Y(a{QB0vzU!1_@GPxCAIfd{Cf>Uqj(x8) z<`rE(1}p~u<?&AQ)i&PFaKi><1CMhUeQ?-Mq5lSvt8)pNQL3GsA2L}BMHW{pW>Q%n zigJ}*xUHPuO48OBS4vx$2Wf}08lQHn!^`R%SK_-^+3xH_MPIVvsD`CMdKD^pvNRuG zTHLqk-^KIzhNB-;qti-xk&k-cowZZD*~^nS-2zfIXmD>gLflAV&R7bG&ryzq0_Mb$ zMXuM}pcrH^53d7=^>9!GlaQ<xZ%#KPk!BP|l<h1C{n*`sjnA=6d+hw_VTsjtwW<kJ zoivOLM?sg;+Tqe~RP$|(rKF;G(AG?&d+^h^@QomzZm}WD9yOTo<<Hcb4;#v}(3~7* zyYIcmvljIw&8HLZb!}WZdutC81T9mUp1YDpc~x4%@-h+_^Z`jUxiUARr(^8Rh4dwr z*n8vH`x4DOk<IUeB9qwD`Bu?Ne5?tR%|)NvnM@BNw<sw|aIo)_>EMmn=p2dH`Q16z zJj;PD%Mf}kqKS{6_^oND3{uP&7W%C~mrY-q(qayNr}wUMXvp+m3z($wMJt{^>aL5p z*4^14El0?1z{Y2NhrpV(jBUJ$Nk?2;(qq1^J)5oaGXeHTNF+nO^D1rVT(qUg1F=V} z9jWMjVk{`oFp6i?A{e6u_~s<vjd|BF_x31TH^Q(aM%~1uD0#9bnRTyX@t+xT+)os) zW2@~%P;1!Ci%DqxX>@)@=y{HI9N8Njx*M%-7?7@Yt`<_od5mrVpL2QZb4}Mu#V*hn z%P@9yP}o@yc;3%a!Y8<^w&G~gYS3oj#Vl)g7ZQTq;6y3{b-9!5W-9@YRw!dykav`e zq0p_Q3mPMzz_+>;Y7veyel~QHb+&fL%t}dLslw<Ub92vTeuRpmf72o13ApLK@tD{e zYcyP;rcX?+iW&WS$LAYeVHWtTHrr-++mbSj<NUAay=AWZ#Ao8dm4tcVFGh-WC!I}o zCg6pGbsg&rHOa=>9HIHSKXX$?u&8*c=OQMl5vaL6{KGNEPmyWP=`nlM6Z)R&H%l{A zA6A7=k1i%EoC$M!wNSCP`4@~DvZc97_)oI7vnnyk5(wXo9;%AAu5%nq?8biisdcEl zG8Qdf?fy{tZXvXDUrHU5F5jQx(f!LtkBuwu{E*`-QrevdSo@UEKVJ$Y3q9a>tAkAD z$ZxWi44c)2oDuk-M?d0Wme<g0>;Am!YzWJ+C~4%F+8nh2X?o0LLH3!bk-r@ZL>nI$ ziY34*#!`0$dwsM$J;{-;3wzBhKM$a9@~$!k^4d^)QgJ&+gmJkawn|w|mX^-VuKjYW zAbZ&~oYCE(HZFCgNHG~Qw_;28nl|^u?NRvYd~R?)sa_nv`w=~92<5?%=qk&A*pMuH zgjJG$xzmE3wZ6xm_)eGE0=cnhDgXW_G8r*ZY-8$Mb@>1(l@p=%XxJ97mJ^Re-baf* zO0{W{hT~5hsmk~PMAgyL8%T<2?>XE^v?$<9b<tZNw<TNYM=D~!GpF=`opN&_DHcCH zBL~0HnswUUK#QY^zJ)FQqY|r6+}3!G41C+Lh9&3P^zI%>=K=n}9M?@wdYt9czS^ZE z85NG9=-{6Sbs<7z&EOpJps}v}Efz41nAk-((`qdBX$OZ<RQO~U@vw9~hBT>J0_N?5 z6Y1s4t-e9s+Wb!^+$wdtP=-_utm+wPMBmzLB(1WjoMz3x8?q5o5|eKb>0@OZhewh^ zQIzk<OmVe5$7_ZavU*Vv1)&-%?S((;aa6$yFRlwxfkRTH0<N{8kAzj2K^y(-Vv5Lu znDfY4eOU38&4Q>=Q|-i++wRuw+Y64tgA$00#n@QwuoO7zECTg{)=*SssB{t%kX)NV zc~8@L+|pqAP(i3|EkE6@JCYIqwwRy6rjlQqYyi{v8x<<S@d*F-XaOQ+7>oiaJOsy3 z6P;ND7u(Q`p1TT9`s*>sUMR|qTD46UbTX#<hH0LTXxr2R@`sW6fY(sBh1~6Oj=eYO ztsMrIYB40$mfE_(Xubv)J9F>tdjpIby{DnJ&s&wS6N|SG*S{XLV$O*_9`G%7=RL+> z^i{4-x<xttt*^Y%nnAB7#}d!bH{c~JBhBvSL#C%fczj1Zgh_AG4+8LPI^N&cGp*tu zzpJ3_rx`#OWKY)6_~r3^^~s-EdlG$=gyVr8Qg*0}e(f=<DRJ9?DzZ7ICXN*jit_o~ ztM2Q}GU#@Jk%grw*y4QzID4^9exG*@(wqd+dK5|e$P4ZteNtZOryoJJm38}$;66gF z91WMwzKzMHmEmCXCzS?DYhj;L$|lVv)u!OT!GFgV0l`ALF;7No3(44WRIjpAV$BU+ zl}yy(D_YZvlq6apSipq}4O)$N80GY^ruzc5p$u1zrV}teNgSbog*z#Al#`I9W4PWR zyhcQ*r*3{{cR;?o*Nzm03^puIAdi~gt6{UqnkN&wXqqOuK>9KkaBx$L*-YPk@I^-a zarIU;VF^cDlcRUkocpwEhUoX6kz1iFVczLfI3!5$B=xg@sD;;mYjo;UG}-iCPryr| zIny*16fVk>vgBa~uRMwcI;XPWAIU9&=e1tg7pJyYyF*BMsJVcwIS_U|eSz1-?~B*V z?l&sHcpclXD=~QzUtk^}(eKEN$h3NisBMn5D^swBeGy+zS+6#76^=GxjXcW{{GLQ+ zfxVWFig*j;=;W?}-HYB1_qc<XwxOSU$`nofZ2FmJUZZ<5dz{$rJh7Pm9^A?^-?9;D z__SdGK?i2I9689b9BqE^xqivj8mIdURckEwI!9Ywb4AU6h;u+mdm@u;`xEU=q&9iJ zWo%#UGL5{u0lnvyc>Ge~9M5hdqh+B^KkLKJUB&cTidRp-F2*K<yhzfm^S=6_xBGE1 zw7C0C2Y)4-Rd6SnuKymNoJmj)=aj8)Hi2gzGk$Pnl&EG+q-8mt3~pvX`8YfZeuo8u zzGwj0#{<1jA|6Izy{c7!b8}~ugOiNJB_Qc;Iqa=3Yt#rpI(Mho4L_j-FuX8b#V|W> zT~d;KxWw-R35Tq#&O}Jbj@m{zd|w?D;9B&ux6*KPw97wtbR-;N+Oizo3lI;J6caTP z+cdE+Eg(f1q9ERjE`?XKEK^UH;UD=Jc4D`36EzU8^rfz}FPdp}c{%W>JB?^|IU7%P zTpDyFrG|xv1QEFjwBY+-cLbH$whzZReC$CBlP<)*Lh!hPnot95##*Z2fxv@)_6Vtd zSHRUlFTNQico)m`(`B(5QxdmH?XM2!E2v2;E7+Hi8rc^EGJUCY*d*+!pFuG<ifa{_ zmpxWXs0D@{ck(FhF$FT+c{qXYu}$q#LSc8_hu<LP_ylo!?pB3j8X7$`WH@ok>IY0B zcwo10B}#V4_tpjp8YuFM;7qtonRWA>C(AX{YKsYxdl-8xVtyi)A@Wnuyw;N_cr@%S ziBWkWY5*=h3<HLvTUW$uS7{k!MQEdA;L;UCG1H1g+FKZfzMJ-q3sSHs|HEj>BzTm> zP#4y306&;t3R;1+5bLHv>Og=|DBq*?Y(w@YZJNIqdJIeVhf}Jl`ZBMeBjKiV#0hKY zwJ<GHF0N4$gyJw-28ak%_ILEK_L6<&NgvX=9+cp$n{zw$Id6J@8uUQO^p#u8#+QDK z^i_CxfT)Bmzk^LK4<#jiwnrR8;s*Z{*Y~<VQ<*G4j!g-UItmrKK@w#XU5QK>6QYQO z>IXBwK^+nDlRoj++Z$x1_8;xlI)3ilzke58;ZtlSavI7#VH9u&DsxJaiHti)0kN+` z`JtFyKgUfVb-t!WXtnVJO%aV|s8Zw%DJr=yLw-t&f4#*aMRKZUY>CbLCnfq@<O{K( zi!#;6|IkQrDIn@X(%J55{@f@3YaWR=P@<P3bCvJ@#0CBBEwu>pUFp!>oHzfZAfJ+v zM6-F*$H)AP;Qptj3qkIJ9`K`*6TknrtN(=dKM@19`qc1E-2dA6Uj_O<FG8Zg!^8N@ zY5z$Y{{cF=k60#`{1*}GzvHOrhmhgtrB$N;L5AO#1ikn}gO=j=f+eE)J}`2U=t@+D zlz-CvqXa=O9&{?x{EUVEHV44a2j_^xhg6OJ;bs?z2`!lLSo+VS`Wh7t%&`CerjX*2 z*w7O-&GxT_nylU^|2UVFpw#No-vMW8CzJSyVeb?W(^Ej}+2C>6PGkS{Rb7AD2_WpR z#k#!CQ`a%MK7jgPQN-Nx*=_1S&WCs);O+}FXjYiihCZtMWU5`H#a{jKCPB^ibbUQS zcL&_##GO35o-cWF1PC&?4p7ehp1U7!*=5tD{dwNMKqW_wtCu?KVQj9sMeM<(bWIJx zs2n5cCP1f8V&Jp1^<@Y)w|V_i`u=^L_>{vGi>J3#9=0{O9!w!biwA6Ga}hw&5-XK| z#Z&8Z{Z^fHEM+Yq6Ke>pYd+5NhgdaV9&I<BZy#(_&wADKE{3sQfc)}RcW0)tarLqK zkNga;iNn>w)}1@eyHCZVUa^`+oUdj_>WmiawoVtD59e(II^RB9BHUiz^Dw?1Az=a| zgfgu6<1OONn-~winGB?F@oVh`VT2o8yNQlB*L1RQhts4NPv0v5HR>NGx+)>^JrVL7 zw_Yv*l534)(vnr-R`h;R^~}Cu#0*d_^)~rdU;BD+A@>5J3ZbG2(Ccn@MiTFg0s%&A zv_xMJp`sq|cwbF2Xq0}K_P)B@9y5$QJm1=Q<uYSOS5z5Of3e>)oh2SR^{%98-FeDR za&k)#lt(TtXjC<cdTw3Q@Wt?AtI4YE!%=;gjgsajEC-;W)+0dtO3yBm!%F|5=nW<b z+Nz1??`r2;1J6lO@Inu}s4^TS3GMvI^pAcQ<o^?)Xm9#xOm6|XjY@waQ#3F^^9^_g z8&1zN$I)_QnT%UdZiHSOeO%J~W4(I5?DVrJmMh~xFqG=d`W!*xyMv}c4P#gYXo&KI zGQgAZFFTJJ+!C~2YsC`Wtlslaa=SbnJ)Z@jsO0=;(nc4^f0ttg7z7-SMcUQQf0<yO zqxl8N;C1_(ZUE_Ir2}XxVC+~jI<8~!%^gfQ4$C!~uCL{1Y;(-O4F#8J(+kGH1l{b2 zc(_sLw6UD-x{Ti}r~eP>#h)TdiCjFV?Hn@cy7Ed_^L8$%hw69g<n;ywuNtmOX9|?a zs%P9bY8#JdQZuZ-K2bmHG1AYZGJU63q!WnwQ0MaOP(2755qgGT`0c*b4G-UF)@yVV zI0dM^2FUO({tav03dd)u)^%NXs=-95<y|kxzAG*wcKIz<VJZxtmC*cYP@zh`yc1Av zQpJW)Xo~)qZT=Qk5eJ0~fb-yyJ5;KqX5n_{t+F^PV*_Ajumyr_1OdNWr9%3nHF&Um zI^TF-3VV;cqn7%y<EhK$*dYI28`Nt*A0ei?yA6d4Rsxxqj<jRK8Kn;>vpq%S-Lzg% z<W={b#+4+q5Ibq$s?fi)o(O-%GWZ3|md#FrR~%L;^+1b&E`Uzfwk-3HRCsVCT*Ho3 zCHC@+^pD{PrihJ9!!IrB^QEp>MZ^#A71ZK>M#^Muk2k>@b*`SW59QryH~?}Q|4Jj% z@sxvtpz|v5J9#FpjsmTE^ClM2W+&aW=kc_s7Kj6>=O>Gix_Gxp9k<?(9_ghgNYp!T zHQ0u{2*Hy{cib`+DL{i#!uK5KTl|9^@ixB4smR-b1z(IC0ePapyTvAm^C2^kX#LZ1 zALpziRXRM&I9h|{=3Ci+$U@JsrD$SUMkr^pGliaSZ1$K|yYop&$J$9q0s*J%v(qII zqYkIXG2-Rc+x%p@!uF)JE6wJURJ*!6EswV*tB*xY@$$j&df8J>R`qdA)&OVKmn%L% zY&?8Pjl6bodT`0H(P85{3q+fl`gpYDq@-Z11-b>609?B1<2CDMqprKn7&{sbI;ZFl z*gn||C;mA|gZYuOX&qTz5S(QI8SiM)3E$)1ySvmHcF-#n$<*y9cfQlyoME0`38Ckl zFeBUfTHEo!qNWv-w^tWF?=PUuCtn5(Gp7{Dra-H{lsyQur~{JpDgL+Q=yd#5V4+xR zRP~(mZaO>O*$Jv%PO+$S=;!XVs+kXHs^_ckO69}jt<-w|+<K#^+F7>OkMr$PANDoW z`fvVRk565uoksmWcYjmLna)=r?o>nu+)Zu9*c*${Vl<oaQa-JJa{r+t>9E8e>oWT8 z&smwrGHUMkUdUHFnxu0wDjzZDQOzXCHuzCd>dv@-U!AX>XXvg;?{!m1L5;tD6Wta_ zn)V=8zS+r&WO_X6YEmjGYy2`7+<kn2?+Q#po;E!J)TA75;5MKVQx;RGo7@38SP$>= zbR|P~Af3Ol)cv#YEm!75&GqEHbn7#C>IiUEFuOvb9L(HMiL^=U`o23=Io#$$<oX?; zyZUxULBUIbjfo54jA;2&{%9jpEQXmkz~a&U1F2x&j%U4hT;|4uM=7B^$?TS6pCgg# z;Cs)S(QFjz#>li5G(*^}CcfnRmOc-N3aO?=rZ)_eC<2MH*z59aM)a!~ZJV}9l_?8# z-99wK7Sv)cK>ayru}s2TplL-R8Dl|;b85tDHPZz+zjT99g=_0iz5OX&$RAg_LXf;2 z+ov0W8kczUd0@Xoay}uVBuhy-_ws{iga14wU!cZ41bEQ6Q;p`IJgG<s%xD{<D)zfO z{R=?&lmm2Lxj9B_{14xOkti0Sb{D`vQSvSL16d^B0;POf632T4AVc)vd$Ylo_m<;B z?=43Aiz@FrG<1o*zCgQJ5xla4Qp!phdCd9Ts<WQ1qwum2|4mTX7Y02dKuwDQp}va@ z3}Ox*<z-b?lXXA<sGoM8WJoo;t(}AN7l5#tX%Jh}uD0GvVKa|8c~ufW>vi52j?YRN ztpm`@w3@b6{D~DEA|W8q%4YtgeGdb4LkseEwDj)>_dtMU#+b*FD6}*_Alpv7a$A41 z{qNXjO~L>8VFIM)bUAez05J=}X@u1?0$~K%@hCzVsJ8u}@>1mLKnp?Ggs6W1WZkhZ zI>;FmCc0%%LXtk{x=b%^gG>k$K)&}&G5W8fCI$)$M*Bw-w8&3he!%42oI5+(O63~K zl}W5iW;Nw$kObLrJphY1eXO$^;b_1Vys)hX;U;dZm>8z0hO%pU2@HDBu2DcQmKERo z&6s||1(V_w_Qp{RlmaBq#UKw;JnqMf0}HN*7buAjW0$8u&<wr|BRlP79RQv~-bZB& z<J|~6;;+^=lEQ9r)|DaU0<38=_xYBp!1GLc0uN0@@i_2L<Y}9}a?$~?aH^XQw;$~X z$oJougk`NizxG+I;p!-0(5n0tPQckux?Tj5WdvH;!o>Hr;b~wyT8eZSmg95+qZmry z<Zml@vFn@4<Mh_o7=Z~YO!~@cdv2pqj=!i8Fzi4_K)hQS0JxkxJOR0iJhNi*OQ}KY zCXD{htCEcYmLCAMO?~T%eMoQd_3aY3{lo5GYerfuq`X2sEmurQNf>f`>@}FGK%wbC zIt8Wm1mNv;u6|q&Q#PJ&*SkmeA+y`eOf`Z$E$#o9Pl2)a+g*^#XEk@*?iy48L!cg< zBHS@x%z4~6u@;es0D!9zQ*5I_nIeneYPq8}-w%>vi>~M4*I+r&0k(j0f4)#%6b9t} zhwhtYN5hN|wmxhc1Uxuj^Oxtd$nZSUbOF6l%k8inH`b|9BuV6&GkepQz@}j^oLF#% zwD>Q8f~#Ze!@Hbhc(G%o9~7Dv3c%7-sD}Yw+kF2k-g9Py*kFgSEqwWxjsyJ1TpcHV z23%_pa}KaxUjeRa`^9xkYCB9U-c2S>?;jqVRugR1Pd~mCJNl+xZLNEC4(7WvFg4G1 z*q;Mq(sVnn{^lG$zd}$;&{j@8a5!q<9JkzI<mwJ|p+>I3AHDUA<)#e5ErgGTo>^@T zcn9Y@JKw|S%h^U}V<=?!7MU6mF1A@l9Tn8ROsCb)A2U?s$nPl+*8Lpia2S1BY7Or( zvc~J6yv6YW)492A4;D60`ryH{Ifm+~h4vmJWEz7#BSQA)ab%4^a^?@yd-hP_NsGtH zd>|dF4N4j?1>tG|Q<zYosfAhG^}Rj;?~6Uj8s0K_O?vbmGcGanAxy!){93D7p^s64 z+As=>B?u?v9!fj~_|dudlQp;lHg-wF{$ob!ectD>lydfjSc^?DdS7;*dTiIO5N2_- z*nPSGNJk^95bgv^lenS0KzdCd<a@mW^x^rmeY6|ON3D}b{`2~7YZRkJ+MI&qqN*em zgq;H@ilDZts|WZTs^opPMwOvQ9aSFd@a*&gps?WGwA5W4e;o$w$$h&^|CLlH${3!l z%3(EZsjkF>7fC(r48OY7sl5;^%oX7}s@Q8;G{^NX=KkLy6CwmmPhSvl*}e{4+zUBz zTuwH16K0n6b>c%h|Gu`k`Zm35mt$+X-ldR_H8<W|aOoqIE#7VlZVHQnt>%^^>Oaz; zfPfEyF5iH$3g243F5-n-H%)#GD1s@bZ3rM%*(;xp#_yIq31I%zE=BN>i?$%|ai{@- zh{CAqy!~`~$p&MJATlFS)0?n^h`BV`8o7ItlfSYlw3Hwo-8*O~P=zTPpcVq)Oc!@U zL7cTNUDCACW+*2ZfsdyFoLyYa3jd(d=;jo<kceuUS<uZhDPq|BC03rNi~sv)(I&bx z2?8se?IYbx{Q8PQj7;>s1CRoaI{i_*PSP_!B1Jx~GtdWkX}h0y#}OEtF?>%Jjip|E zM)-6EXL79!r_}rwKruY&jZL;zY!d*G&;Bs}vvm*+wgLs<0LU~_t$+mc1a`aAFFyx= zJ^&qmA#1u5Vmsd7SvMhgwwg`RV6zr8z%Eqn-p{?#1Tb4drG7b9t6@TARx2OVa^X^} zd9QZHXF>hbx*siURu3c4A$F}8oLqdSdusj`W^j4Q#%HaUzrk$On8*|v&s5@Sje8QB zLTPk)hR4_6m2CgT2%imaj;=|W>p!9T0FQ_3!5UN@4ehfE{L{mNbTe0|7S)H?`Eb-H z-&?G7rnU_ag)s|36xYhb2VY%=GB%Y?dj;cljU}4^t{{8TB-QFMoM|Z6!xw|2l*G7- z@9>LC<H}p(5Af8m(FYF<iv)nRF1SqDW!xAS^wjyObP_$G?n)o_6JStwK3_`=tDeY~ zjBMlR_$G#DOsK$$(g#2vFR9jqvo`GQ45&AXJ<pG-x=3RX9=7e33~zbMR)WzmH==AJ ztndT8S5u+$C?bmuF&rI6a$%V~mSaqu@ZC8vrearg<~S^(_DtpgbG8gy@3)5@y53zw z`FyfECQwDYS9TFt0w;5KKh7t~jLVQ`5&v47-k`viArIFUX+z?(N%}-~c8!n|!yoGN zR_JN09LL_YBSfFY^~U`a$?`-p$_GjuZKa=+uxW6ltY*P%*-U!lxj9x=)fK5}4l{SO zltgJ#B%!#AOoR+uj8D1T?_sRc%IkTgTNfuqte|XCoZrt1vgy`cWSYsOFtbpGDr(Z0 z04Fk{pn2fJ1ja^NnMY+t`(z!5Yy;YL^^thYEq5}4g+6uzeNR_}#8@4anT<(=5h^?m z%e^FO7f&cxZU^2gMN6c=(ZHMCdW*b1g5JYC0nDM8_<2AN$f4#`c`t@@9_bAla9-$e zYo%!Y${ypS3(bfr`(c{gB4RUBoR54=f$ei!{+a?G-x)k}7X-aCX$#ut(NywjH6nwB zJ<LQoN<OFx1F8YX#?&#O_T`4K@yx4ij1)o7TkbV{J&mhQ&Noi70g3r>P)--{6&ab$ zlPeA44?}dbMR7HB{MHnsa?jl=?=<>b4d;ayC1@<n<EI1{&sTA60BS`JB^8vu1U!xf zxZ)7cWRGAwbq6`#Xxp%O4?XX$a+wZDq<XP8B@-)Mq~ZI9U+jor>k<L7>pf|!-r91S zx61c?y2Y<W`wswX_jad!VS!|#Jh|~gMuE_mO7r2kz!r_%On>Mtaq%IeEF-+?hEYgo z*8S<K^|$XNd<%CcI}VK`zbEa57&i=XCG`7N0Yk5J?1u_=eGY>b6c<2F)JBs@F4J`t z4tK2_Cek15&n408Tm2>sdn3C-r6IROu-@zo;w(`kw@Y5z+2Cr?B8{X^mI}E=kzlE| z<0zuzNW2HpgkZLou}Ige6=~6Tw`H|hCmY4U1{KK}<ZvB}U#Z?-N~6^&o?LtE-OJor zV<f^bQ@T8V1|DxYMZ6Gx+VCUBSYw1RcInM;ww(BrMsY@0GPSE0gH>QG{i2K_xrmRg z;~u-sAYe{7r<O*OPn+x(JLoJ;uN#^NNO(XoAbLQ_N*sH5ST4IMRq@PRGs+0|;Jl?P zmfn&yA<W`|7J`#$_PT75qZ!@!`YzF4Uvq~GWF?R~;W|XF-=ZVzOs$Z~C{<}KqS-P= z^)*>l&VF5j_fi2jAL8ky$^)Us^FiRoSD?_P@RPaSYQ$j@7TZNGC-~ze+iHKh1Yd+C z8R4v_;7EPlA>qei(!d!SF={>uK&YFbdGw`3(qD|_fUO7(M=yeush6m4XEia&q{p#u zUCieTTf>hy)+}Jj>%q;Nho_Z#E(B8{Q0ZeaIxJEi(8A!BjbArA3B{8|H6yLRCFFTn zimED)4A*BFz7WUN{nnEFnOn<53PC2w5Y{*qRfU6a^IB#koY3d{Vx(ZzQ!o6EaCtYe zlY*q$ryr4zKaoYAbY&!63&EPM@5_oMXTI+0SaYo|2n*1;SvZdPhkh4;UYpXkX?!n| zj37#PXAq$lnt?!u{<g+tq!UHnU{3`_xiDe)?HnCZ1RxByP4*Hy=)##f3LM3rv~T=D z&(H8{I(>^sr%w(V)Vs1f78%x+G$@2oZiSn<eo>O75O7T1o~o@tY&w{l`{?T%)uRsZ zxyQfihnad88}*`zE8bkP)ra<<NcGGRmBgh+He=IC*2Z{+X)xT8ohl9AwHVNzN5hcg z!is+T)<7(mpjQY&6ndj<x=<qgK`~$+j)o~x!!I@~2AmP@(_=3WKr4B0?~WCscGSEB zh=Wln4)|gR_<@F-PS8Ty`j8}I$mt<cJl2AftDNN_U<eYE(&%t<X}DVH{90%Xd-PnF z;;p;mXec7+hPg@+n<-?L_;p~JpCUmTh&DP@`K73Q9RfM=HqH)tSc6%;4tbiD45-#+ z@-|g9E%>7dJZ9L)ywk==pTY<fBTOT(=4`hWi^|y(@TPiZ#tQ^>Tfi;!K~cwQtTdAs zr1fdg5gDlRJe?0+(q!T>TP#-FKWV%HER@S)XQV<7v+KUmC?f6IsD0v8A85aewzNyO zX|3=b<kzt~9~})lcN4_JC<$MFN6=D7yP;gDZN>%&UfCT$eyDWwZp)o*0Jo2zVWa`p zr5|t7r9}c-cO+6WB&zQ)ZZnO{F)%=?UnbOcY7DXcgm{!DKWzc*Ao|V(??xm-8rIL4 zzf^iYw8BE^IZqbYHb}%tT#$pD;D$4R*QS9A?;;3vwXqCY`geMbb+|VHKR9r&WjNOZ z5KMXo?&XfyLjYL37a7yGu5JHXqVMg$Rpqm2K<y)<sY>3?3atWN$Dl;c$C!;wv+xM{ zIm-wIEO7yp1e;|dmVUh;e7Z&|cLxLLjb5?~=tek}djGxH$FFQ#&<vvP1;{@&^D|R- zh0z0=+Z{78C~aP{skj+^+^qWNN+3vxf>JS4Ou5aswBCwhxmXnHb6e)cId+M>Nm*wq zVEE57^cVV)yYb$A2m1~jIHw(BL*>(PIt<YJfg9O%=d*2n5g8s!9=UFT%913m6QvCg zc-F@1-1herv82%*054Xy?B0e83mo*aZhyFrRXKO>*?6uD?rb=b!h~vPpWVl8kQpBh zv$%kI<xbh4^`SwYX}W73<E@u2W*0MHpTMOehEjA~a2jIc15?e$WOWIa{xd^N!F{L8 zrKtB=zjDs1caiBBcq4L?BmB3+Kz^6z!4GX0k9%64I3!E?lG<1DD^QQNS8wXvvjkPz zUe+fNb8ydXAu$kHyk@MOM}8SUF3)-WLWg!Ebzi_R;6M#fuh~9=o9Q`yeL^Q2g(IG3 z&ev&nBJ!gnHfnsJ_I@%O8d50!Bm)1nkJcD3PEZOE4=tw5g1Mmk&Um^~1ub~6a_{lQ zLMWpLuJgk1LqY2)Gp(h=)Zkn^lNVS-DIL~e`93Ovop|gLz2dY<FA2RmS;U&fNH0Fg z>_eD^B}1+~=KoS=DCynQ%49c!|Lg@%#-1!hi-6O5vr%cWEj*xW^bl80z4_N@Mazj4 zF0D0p(32Dr#*id;JPWMvwFv6ZeUkJV^E_H?{RNOPZU{UuW<>4}jcU-Ck1gDA){zK$ z*T6L&`_9hBs;vEftpuYKUtOll`j;;6+sZGzS&SP#Blvf3<@oFK9K;I@h9&#vGYzh9 z3!m9Yq6~B%;_`~#_<4f^5~KhJNWN+>hq-_h;{qO8?IqbD>8}I$?;}E|Q0fAyZY~c% zePkS~J{$QqAaHJZ134_Rv$xAJ{t|FP(|`?KO9z`q+BUnwGT@&`1L2YE9kfO!OQfO! zCy%PgodNc*0j{J$AcMFES0*nJGQI~JfI4mJ0SSDOL+02%ZJem<F{)$Yn8z2^^=T}i z!gS!M!aA_RWO1;oaNIG__zJKd9(oB7y)4I9x!M;98XhoX3-y=)oo_W+tZ}cT#o}>B z+v~Zl<u;x3O~>qgXuXcP^BHV`sYC4bLhLGY;WTM^5LRwinBlP>d_LOzV+ja@){@og zVcTzIU$)B5_R{j(f0IJ&1Ei#U*`>;n5!Cc6o$~J^uWw^Z@k3?si7$Y3xA>^}!am~; zw3P%E_8_36w-YYa53=<%*bi0Kwd(Po-vZEE6=T9MtrS?xiEU5}Mm+&*j;Ev75E&mu z!4mAO($1`>Hhci9OBsBXIGzINo^^qXT~XpDg$#iv8F!G?8?d`9`+#I5Ba0&H(hn+` z)|Eh11cAZRCgUf~O8G_@#e`!W!OS!sO<4T3Z4yD9V6j+FaS7feo?e2u;9oBVA;U{K z1%q?yGynN!#WskvPLnpxo-HbI%*erka!E`d5i}R39iEz_db^b2+y@`8DoZ~l%C|m@ z6<(~o90_kM1)`exkUChV>Ok4Fy3dt&k^Z{vhHgG9lmCBX2*CO^$?MCQm0xo2R?2 z(+K*=flUIJVPE||PC~F$#1vS?MEpK|^u6U?(u0ty5sK3`8039nY#n0n3p+tW7FOX- zcFJIb5wq@nAidUrLV1{ZEflR9?z^zoB_@L!ix6ZoRQ(s9W?_eQ6=6SySXeF4pvd^? zGzc+MQmoB1*6Smx2f}B}i<DZLdobe|M0RFmR=OXXOi~$he+@fwyp~(7gWR|!?sEj+ zzLel2^2IcJow3!y?8cQ%J@>68FuN$48Fa@zu6c5!IGw*RT>YF$rzlMFo~i4o1Y4Nk zPqT#<$LA$HW~4-aR-sTB*FN=qDur%mANKC<NDiH=*@c8qZYVFS?jnA0fq8&BC5)CR zX?zTjTxryI(%<3f<(l*shtF$v`%%gkiV&fu0X4VoisX#N{1ezr`)sfw@C{myrP$Nl zciupEff}^LBc$5m)86NDczll`5zGh37_C&=ofdHhNU|gp=rG0>hN<3Nuf9CX`z5pt z^BuQZQ{xoOD5J{dkj<qeHhu-Ph$D)8D7P1+L!?5OBTUVfJ-awknYjtC$8E8i^zJ?b zO@2wf@D?p;vlB?|^-FX#O%U$v`^#1>46YQc9p~g24cw<<ML?ntmK(%hNu<|YI956` z3dlFFww|6s>=*82YENZ%^XOU_=Rh$6LnfEqfuhi>W|d$yPOtYw8x+01{cVb%>JYOc z;5+F<{N}}fJuH8Jq3D5f8x}M4iqLQ&8-Pq&;cz>aKI~h}9mp8r+uNu<K`BAeg{+h- zU_U`RYJe$~?i@pSTZFe7HY6K46D@nNw99L8DVQJZUh)#jHA^}@SfS!Dj(rsEJnf`D zYn&mSJL7%jDM&=On52iGIoXDbqKKjF$=DAAtY#W&iO;`OAxzxr_Y##dE58a(?;4Q$ zRMP4}cuao5Er6Z(=@uiY<u$}7CN*?{Jqwr~>WV>&>)mxDM~5={n=IPMr?7Ro=$aBw zZ}%lN1TjCxe}|)8`qW3;p^x3FdS^X?OZ$Ogn4;JSpgK?Nq_~L$f+`x_kB<xkms12_ zYk+mwrqWK~cE~%9vjQ_it!rMIU@5@#5#bzVPxv*FH?E<um}hsT_-}gtUS<*k29qGE z5GqiPHLb1IO=XJSnzd>IJh0cYOSUv#2lX@%y&F+OI;r(?5Qcz^-Zk(|I}oV$7sZKy zSntK*UiT5~8ej9WCvRY47W)WXrNfBb{lx$~d5PrI7`kg|#xNwCnFF2SxT1UbFnxR} znfeVdnqc~H7L!)NCJ-#Hd%Ln;$Fn8Q#aGJPqFDT2s5)(W`JPOIO#qE%mmPDV(nVY& zo=4-Ik%l3i4A93AM#5wEpscS+D6%-lX+w%^;rO~A|F|+qd|o<M2eyJJxOJl)VAUD- zu!TKtutU}bYy=~xRICFj%hTl?A^5qFnl|)<g0dE|e=<9#{scr`#IItoFly|jb_Ep! zTgEZ)CY&$<Ij(tQv?K!olQKT7f~<E?(K5W$#C8OPhLb)1lDc);W5DO0GC%GN!(Rjx z3WqnJ-LT1iKHyeP_K6)o3wtfQHV6^xEWekkgZsmp^z6GRyqwQ~3+KE{M=}g=-tA~} z4WFgQ(+tSp5xCOsz%nUrC^l8=uu>=BdB#OROM+f<xQUv?Y3^KxqxDPK@Gq0b>#VyP z=9(W9OlS$y!yTy<s7guK=g09Qm{VwUj}{+3#y#zdrQ%KfLj3?sxB|$9UX({57&F&R zUUh`Vodo$Pu`;SshTQIa6dusC#L4=(bp<e}(!DR!t$5&7h}{i+sho_EdkTss`GLFv zpSzd?^xisVP=$r>r376J+%{+Fr(0tQ<!{ARH8#wmK#^|{q6>KiMiMjg68MZBYm<i) zr{0fr{*~nU%gyix6{k1$%VR5|j3eIhyLKR#rm|b8bx)(pj`w0`uw;_+;$_4sn4{Zq z;z&u~!5aF!ON#->YSP|3*1G-3hrArR*njv%6vWb`Rd`Ke7^CL8j{NuV^3!WT<Vukj zG3ATg_>J)PA1RI+1yrj3uZ#J9g@yl}m9*$SFC(S345SK3;?ohrqw-p$(yc%Fw4(UI z6~|ds!eA61zNxePF0}l0^PszmF6Y#c%YX117APaY;G5wh-+TXQ?@w+-@HPmT79UV# z&Hg^*{?#W>LICYH1Za)cqPq3BPj07Us-ZlVc@3!H2=_k+Yc2$l6o^5v%;UVNQA4KG z4^uQkN#V5FKJfrskj2&P@2UTO>eAx+Gz8~F@*gF&(rrhHV%h;kwpb_5kqs7Qikxa$ z9*o!`j97x&b&lrgD(d!sYWg@fSOIfkx8-^g7^c&>9j03R?+oWPo~^&D2R@uyM0r|N z*73l+^?5$3sxdOCgI%uQ!gOS8{H{!oeplJhK$+zC-Tx_ANKbqy?eS|VaBF<vMeGZb zLi+D`|DP8mrpT@v))@|HI7+{N+JAlfHp0t_G*4&o`y2k{!fZhpY)>3s-~A(=e}RgF zu#O_PsE_=qPrz}1Dj=5ct_V^5IvM_Zgqj4*!W(`ih5s<GZ!3T{&ky)K{%PU-{jH)9 zP<8I0>TCX!!k-S>+>&uU{y*-r|I>m0j%F_qR#xn$@_(4_)O?7wD0qw3=a(A%zh)^R zB!qL6#KV~34;TY9UJ;IHvp1$H@;?j)^4$Wp4-N6}f%6LZsZRz@w?l~oYP%{VYRv^b z*Su1$e6_!K+BC(ns~2spk7{+Yzialfn1;(#5AyKVJ@{(zq?An24m{{>X(1;m(lt68 z2(>lxTfva?i#Ok4ie|{b@mCGpLeb}dwwVTjc|HN)s<D8ghW&2vV>Ztbb~7i$F8p_z z6?wC2t1NWhAg+Z-KFu{2*GhS#!Ju8`2nut%JGhT}aa7O2D0aX2FqDgLGpxMCv$ztx z-N;DnLPm+vPy4EW!^LIN#x}=7xmr$b4@U!7x$Pl}50z{C^CKisfcU>2xt~+iAohA6 za&j;rIF0xjm*s(sjISRNKOq7fsFP1h^!VSwZ-XBM1HXR*V&>F}x}>@^YFw_=+0bh0 zbm<;eV#t?>tw^V7o^+MBY&gKL{hAA{0F$QwAWu0|NSp+_NN|E<ZDE3adgQ&1h018D zyi9e+b0<$`+>0L-sleU2JxSbISCZ#F*Ob1ely&mlmt4_I9OW&c4`L7TCHTFU;KgF4 z?11CD?S?peP%LHiNaZ$FKG{7E-3GWF3_w#So$0!sjg&SCgo9316AbXX%{QYyxKN*R zZ0Wrzxcy0PPu*9APj^C04mlkIZ5(nN9v_IP1P2MVQ@!TNS;!!ZS45$u^)b6FbD9*L z!XzMkFN<e&@7<^W$J|?oMcMs*yAl%8qA)Z_cS@&pr*sWSDMJY808-N3Al(WIN(l%< zm$V>CcL+!g-Mnk=XFu;g_I`iQee6H?e;(FcTytG(eb;xLpL2Qm=WNYiAMl?pO$5Jz zf0eU=>eG{y3SkmUf;G@zMQuV3voAkNPuUBf2V)VeJ~egvOiUAjvx@SO?QTEN$Lx=l zZBZO!uTgHo4$Do2xC&WecQlkpy=ok)m?^bwNiq-zZ|uW_z^#OPa6JPi6kGzmuF?uV z*$w38^{k+DNz>o_Fif$MOXt;m3EhQ%5LVH`d8mpR6?exrPT&Fkd_hDODmt|iv;LC4 z7$5+WymiZ7(_qD&{j;Arpc~9>rEt_Vf$%82AK7*f^ME~RxtV`Ime!kGrQ(NVadurV z#sS-7debObW=3!;l5%ut;&4(JgDP((5x;VGH+DXcsPD$N1Qc94ZxQpRd?ZLBF9uRD z4kk27S%;y_wYy^|TDbx=GrZaV#LL`l{IQZ_gUvQnNrF546x?C=`^M5L%I;}?p?X%J z6e8ruH9CLR6F3Yit$=EaX%_USVRtOHVLcbsqK;!ML>b_fTVn!O@-o+mCKV?I8|{<K z0ega;OPAr80adZ&aNz-QPzMPJD$o|6KTr{)1i#M&J3!&O1{Ub4YD^W4A9R&@(2+QN za!*=%=rz+By%W*_=lB15?0?aDR*j@%I~n_ffBseO35O|pP``YjYUVq5B+tqD0X@NH z0*g~Jwl@lt{m2q@k0Hs@|9ov10J>$F4zkMJ=xYjrJT4_U-O^cwN#x$^HUZbi>6c*3 za~2@5@0HYe?mScmuca*iF9tieGrLTtnr*$khspd|e6}5Z3iO2F4qM}oRST#$3Bic_ zdmy2V%5k2kOmm}eP5C5;1qmAyTI19V*GY_=siD17GWdw+DB|Rcy!~+Yrf*}|=3+(v zt-o}*KHg8>0k0l6?z$5-lY`RlPUM9!REr;w%<tZQB|7x-BQs}Gq;KA?9+=gV*fH3B z!p?Jy;^UH8wO@e_Z8C7_Oqc@`5$VK57?sP$&1viHH-Jgb9`7wIXl9F!N`cnn&FkJc znz;l9c@%i_2L)$R0<<Bbw}0MuZwD~Xnyt4WY~}_yB;UwufQ7DUE`l+LcaO`W&RZ`7 zWkz|G1*^-L0snfAA)I>oAHkIPCX=#l5n>yRJEto&sVuFi&JwJ;kEKMlP-BG$a5&LF zt}_0)S<ZWZM4jyKC2Qv9NW6Xp?(nNICeZA$oB%Mph;2_y@nteh5*Q=qa9OhxoQ>w| zb&U|967bfpFTalf&FeWbGv}ol*VU>~C8}=#WB=iB3L5I^j_T*J7atEWw=M0-E*p}C zMzLBC`Z;MPs7|pv?d=4>^Eh}g_<(ix7WB%R02}p7H;)?ZCAom|#m%D8(;cNHf|P4a zc%Qe)gPk3h8-Tx56}hBF%6b!5Ugnu>8=1krmRGNyFW3Im@<5dyJ@8^p+IMRi{CdQT zs4mHEJZOj1e37qP@b~?Kr&Iq9ncaRXO~_DERqZ$se(F_ybiNmGG^(twzx}p%?fd{N z!ORM%v(teYOLW*mc&Gc}eU7y-z?_T$%+jJnqx<|tIbu3(;mu)efJ^uS3U#lWvZtyC zj8x;N&y63=6+t^b@9slYP5Q5#cM4KOIJnepQ7CbrG(c%2pAN(x1KetW2EG`yTQ}q4 z@h9hX?iXU^Sjsh&JBqFpjJ7u{-hedl3%*6k#8B+AFS47wSvHDFIu%o74D6sgs5YVO zRn355Z^6Gk9|@p-h)>QYQmlb_PtF>dcQ_ZJ8ayEN;(%#Sw8yVQs^j_<AU`gABglz` zo}&ovIGG!`OukQctr}GrqG3VZcAOExRaSZeWDP#^R{rO9irj_$PlIqC$kXTrxjo$~ z)G<0dNWaLeTC74XCIN`=lX}tM<@Svf=WjfXuqcP&lZf5hi;33zQffR6i|F+L*Ju*G zHAzzzh7sRW%vwRg_a0Py;q5;P<mWU+=2op{QQgQjmXw1*w@GMt_p$+5(DJ%ARc|iP z$x*B6W5(RcO+Wm@8<1OS(NqVEYhLxH{!;?vRlQNR-U+PUy<c1WE*k-&d7jP*n4;p5 zL(sc^rGfPe?7<ix8_gncjL2Z;`z<`tM>S$C2l&y}L(%R>bVoTXnwcpMCyF@}0B+ej z0YhZ(s>7ATvI-pZ^?VCb$o~L#&2W^)>g$tKQI3SLwfw(Q9gMNb=3H^T6!%18x#xEg zsJuZIDhPnWuuw!7GbO7K8S!&I^K}rsBfACtR*x&;d0`s=vn79;Jp&G#F>#dROBnGK zDcf!P>PNnue^!e^z9jA&WM?J9;q}(;=|829NYDF#pNjKl<xSc>S9IR1Bn$AxPz=}H zL3oiWWA<gNOa)4e^y=xx8dzB`18HWy05Mybc(H&RPnhlEU4Dz5(uHk?x3A(gF!e|( zFN$EvJfERChGlP=>pcAC0I+xylseB0f%!^Gl4yTv+HF*re8#ydXK6KZ_PrYx%w^v2 z1LggikB&G|0h6BJ7=RECdC}k`ZC=9zLC=5PJ2^|)cEhXFJoRh;Ve~D=TP%DD)9%#X z90%+Hp7P29Us`H|?i<?GP;3tGFJNgvu_B-_`BPhF$F~)!*IWMdlVQtl2j?{y1WWgm zRgAhXGoer266AWlx2t-ok6XBC(Wt4t`F~VG<pc66zM(obyu+wo?_QpfrFXYxrcha_ z<;M!@z5PR~dn6Cq`Ep3G7#@>LfDN7N8Hah<aJn8gz8L_#UsII<#NvmrSYwVq$ltX1 zy4tK%r~Y`HC&B@-d|;38UhF6Zh2LIo4d?~?>ZXX0oOpxw=bP6;AhwZ@z@@ie|4FQ3 zCNeKznB;!&{%y$snZ;i~+6(0Wy^dtf-MB?e_E2#&cD$5%lpA)8%WJgpqzbU!4f<MQ z-3vd{2nWDc>18@K*ycR#wB8S!*h1U7BiU|p@T8M=I6}m0%iwhng~Qpw=v`iYqh!$R zm`hJ=fVd`<VT%r<#C|kh<GMGZU@|0E&gphf-UUt8bY<fcO_~U0&bh07j`o4v&*4JT zPm0jK`-fo_xHN&jqPi!n&FlumecV9!#PSFLmA$NTK9a<lB`c?(2KJT4*L?~0Hhs0< zM1QbbV<G+{Jsc+6@;AZxfW>*%ms2AhyM*&|Lq~M5=br+t!clV5#*6NbQRc|{t=UiG zRvD5jaLznu2-;RG*s%VU<mHJh`uwcnzE2+lTyUh{s@z-;v0MR)o{c=w$iBP;+n#PG z`y!}b5g6buR^f@%>*VY0K8-%il!mRGbfD+}<*M-S_R-Jl{+)u||7>)jvvk^a^A8Lh z3_rkj!0KUGvy6`7i{QL6T87%K?2olriw2_bMj4#UV5RIjbQt8IT{jrpW0zUMH0IV; z8vez7WUP~*$l}R$4GONmq%N2YVWgw)Gvcw+NDKHVOnxeLIXIS@NGnIJJ-PM{&Zrc# zKeKbrVL=%ZU+2*AhyP@NgB8s;?2m~ARZ-JFyZ+(Zi!Fq{srG8U2h|9{&<}p`*c_)8 z<E5?pO3Hi$u@^Cah_gEhMHd4fW|xh9WiO@D`?|&*526xhm(jN_f|6Ga<ghnJb%$>w z{$LL7{`K5Ee1yl!m+P=$=L_VS#YYW_^o%kHeEClHFyV;Ufy_-4ELP!Mt0$cjqT9lG z>esS!nndW9{z&KEZvyfdg*i$yxIB_(w0=jUkv>x$iCBO9z$)h8Se&+7asm1+8$*2} zEn`cuqua?0)ojiszpbd{E=zZc54&Y{zv(PD=R$Q9er^JOLoi5acBDq=d@6wHQtw)% z<kFSNa<<M_c!G74rRF8MDv6Buk9b=gy0-7X;X2lmZ5yoAZ@j@2cpNY;iyw=fyD@`- zP#zjw%f;i*`06q@?fSl|dk9LWfH#O0d?Iti49Yj_X>F@@ZdOvjZ+%}?RD17!uwH<% zR}5ltJWgUx<3GMH#p8m$R2mA?zM3(moTPHD3|i1K@{`nb`oR~+?ixfQ0CAm+A!o&j zhszyrPyN*H4-8br$dOUGxnrWIOdn!Bju-I}o~a)O=9F>YY{6kQjuoO*8AieWJ~~M+ zjCsCsPD!SvQ~?0CwuWG=)%irKGVZ@$DhRE2m!u}iTf!M6rrV(H$P-^<ppFgE5k<K# zX$rZW&x%TNZ4gv3Rkr0#<}Ch_UF|s@?OBFB3@J|u(A{@e8kqVE2_v)WL!&)hO^nlo zmYpJg2HN%o<DT9pdVJ!h-QanQcj?45c8Ey=_Sp$v0y;u-{KdAmJ=kmWl6<zfX{~hK z@k0jm08g`A5J;ul1o^oRD!*MP%7T-m^l*k<3sM`d926`&A#)Yy5%BZQ`{6c7eU7^& z|5jrq+P28eVQQHrZs+snm-oRyzh;`%BQ6_)N$dZuXYg#~naiD!Zc%%0llhG0eVNFJ z4tW;=+Zer@&LLk)w4iiM$q)Opvc8O3W<h`GZ#uo%)|Rr;DI-WDDj}zzrPP1WLhE4m z)6#&ayv8HQEr3&WR9e<513$`3cH8PJ{jc8|_IA3}-wV_M(jUcfPnbcy^L%&3dhs%W z+^|c0*wMFVSoz)i-{3WG8qV;RrYf=+ynZGnT@(4@pKE#v6BuSA)a#28m?VB&mzSP% zRll+!JK^8;xREET<b}SD2-AxJGxN0ZlB*H3FD7+Jd<EaY9mohZye(4+dg|49L=xgH z*FIpm+YaoSt;}JxN4U3#ic(ts_#P0-xk{2$@1E#GuHeb<0kV$cnoH5?&VR8L95MBV z`A1C0<qP<E*zH!X7B_m-xo@K3hJw&UAxFHi+!bblk(B-QH@qg*OdmXm(-`#U)Fwq? z>Xuu`*#UK#5ZH};L(2xgrdXBeEmYcizq^J%>_^_<yZUh9=cTvIm#+Os3o6s@GrLpf zd42tZb<fLQrTltzXDlCwZc%?Nb!aBnz^Qn8xKpzlS<{eMgmIk7m&sA#)<m#BIAc$V zp^JBSVnh0x3<Np%e_qiYBzdyA%%0ni7(4a!%}`E7pt;9}`_F42!|v%O%Wxv7zMT#> zMTw-t0}g&a2uc*GTeVv$P9P^Thr1sLR{%!zCO*Es+6hi?W9=CaH71~)E^i{VTMNQv zK-WGHReDWxlLE<#a1lWSt!X}9A%o%&rleyf<ED>4#VI<WZ=(}+Ey@^2t4ed>mmEhb z{fG%8AdtTq<ff7AgJTSIKKxw=Gdo?Zc8LbNCx<p})c$GG17JIVcay4<FXlHVQIP1V zdv+1`CvhgN`BA>jUG9+RAMn1mU_8sY6P+igW|nIEkAlfb-M7f8TB)_YXbIu&?RXYj z?+lb^;R(n<xlZaLo+m$`dMeWoCG+VKi_my?D@LE?Ip`^3f#i_$*Y(f<B<%hZ>cY<; z9deW#H1(U4Kl+2UqEg#de3+MM4~Liqt#?B&@hI`-jtmj+=6}Bq)xqJ5&bd->`ahP% zJAn*t&z^Jc%Z@1MtV_yC(jIA6TC?$ubxZW_o?_F&+gw+eW2Kt*CA*u4f_c3ZI0ous z`VN$ZBI~{to-YL{T5k5MG-1bkOtaPo6FZbnY%HOliaI5@)=H6bNBbK|qq8h4G$Ve} zus7E?w7~n`MVnZry>1k0NF(`J?w7#h+%RJ4TutB}`$}r=#G4|cOtbw~a)cdfCasa> zmCNsTR(TQHh}Da~#f8bbMS{>EaV+A^FAdf&u|mQ5lAVGiJA|0+m8|B*gj-zMCZgml zhDC|_^*`bknLTG6GWg~U{<{Cg&h{Wy@mB5prnSZ&Qx{zS<@(f(3&Hilh(^9+l=Myo z4y)8n6W_E_EeT29CiA<$V)PZF$2RZlm}9(^dMF~1b!D!|nC?C-BCEsop*3&v5&fIf zC%k&3>Fli(BmEII_M^A&HEv_cc(rDvvi|-Yi{<&GDDq&ro_z%8LqWfJn%xpsp?f=S z&1b>Y-mGN<5%27S1fCvEQlBqKopv*8Qj6u{623<Xyy($4-z6EhX|r;dYt+|hGNT*h z-nt*unQ*`;P8%wGF_%ch$~H*kVQ#PM4#Q=OaxSwk=P2)m6v%Z_J>mM5WkV?~Sx(<D zZ6@C#_<}AV3LbHw4CyUhfb+F!5EI_=Z7+pm#YAQarGQ;tT7r8DdX$gB&~@Va6#0@M z)^?pJ-h`5yhW2JGRgh3-0Ap`rf8<BqpK8gy(IJn>_o62E8;~0#)iJsP@a)Tm1TU4o zv7XD+-TA1f;)pOI|Dot4YWUg4WK~f>{?cmzAqf8F#lf5n7iPyqHsp;(7Q<ivSX7GP z9}NkYp>^ChUfPj3HabG<-D=s0wmQ&oI7hUujB~nM36yZuY$X^xJE)hkI_{<X^lPY5 z2kv;#+IP$Sg#EVnipXAIfKzKu(R4K#Mip}FN~*F__i!UJ$Xyb#xQIsDPXClDq;i}} z(r7W!c83aKbk3(?ES@NoE|BCPfHz}4dhOo-JsPIqYAMP<xoDvjFHvXfK1Of;{sbRd z&F`z5r%4?;6el|_&)YOPut&aZOeL=W263@Jz1pof88-ZYch=S0{foUo*OQPs^DSa^ zs*$I;1f`^vqOf~(e4XU9n~0R9Z+D<6;?b`n2p;!%;LnshsD-Uwxn!#kI)xA%wctrv z7dg>y90*VZ;f0e-3rZ^g(2{HDmKPeX(GZ$@*1GbW2rj#9@OFa1qC2B2>!PpAU7bp9 zbc?OdgotvBV9Rbgy!I|o%;Cqe)xsPx7?RS~sk_R^ag#s8BI`Mu^WC?r$b*0~&#H-V z`6k@`O@X^s(S+2n^wMOVq)aE<n{|TQEEV3}0Nd<3-?|A0xMZCrgMuC@J2CNDO8C;< zb_jmy7MHjBIG`Z+>|-HGpWFra_upO$(Apw0Sfu7NU#@hQIeHA4Ar<n4Fd??%(z?8( z=6A;$)|Oz*VWRK)&qzB2qdwC>0&K|Q7k+>5CKb#8|0^BYDXS$#M9Gz$LU)3rd4CsO zZ}0$u=Uic^Cp*$b`$XaaMmaLIO!q#_c&t<wB1c@eTT$R9-_o_Doe&mIVN-U^KV9cW z5uO)XkM;KYw;m?F^)dFq!DspJd10?PwC|A8cl42u&6yRGQ|4lgKU|VWyY#MHWR5Xu zya;6oXkgvB8`&*~8T<alrL*cvIu;YJZ$rE{q~P+tl9VjQSHR+v&GKp@aQ_C~M@zfT zcZoKY-rEyBRx{>R8UWi`f%N_1FH)IzoGioMU&;)GQtse(y*228mq<<?z8&u=$J<M7 zfZg4NN_y|Je6Z+{_c<G5GP#*m#`!pU>(h~>BtB3Q(>E3kMoj2(N}?q%H7_-ZsymC^ zvr6(V@bE2Y>|{7j9W`x{<e%QXMZ#e-HFqB|z+U+S@9D+DP#UFI#9AsBPv`c2A?t(L z!rOpZho#$>jlzo6l1VW62!+ay!$b!<>W&6-66}nXJ47uT>c5|DhRndBq^7mAOVYo~ zn!G8TdB2JB<o?;feK&-9&=OL2qRnJ}oOGxsFF`g~Mjroc4G56Y4k_tQdSwf*a4Uy+ z7yZ@9la^Yt+j@O<s7N(9ZB-(Mow3yoiUC_{*lE}w{@nm$cucv+oc@QOH^NmZw|zQ7 z4h`sshF{N?0!U|;Z$y;h8Q$>J)poAfn7#k|b2)SX^f$xqa(wZ6;DV4KQFqIz!^=V9 zZ5rxPc6wzXFW~Y)XKG-tE>z@!00|prQ0AxK!yBWKrBE9-by6{BD%*tVI_J0`gdhbG z4gsamJ}Dl*rP?^LsB;nqscI2a<0^ju&2_&}Nj@Z<%o7hhkDdPez2BQhAWzC@8@Mc% zb^DaLe@)7dx?KrFfqc+lMq{?>I)z;Oeh3+rfwVY8+!gO!FbZhfVxOr?40~QVTCdHh z{Vhn@J78;G#pLjzc~XXK#9;-6I4191%9R30;_m#tmFl?gJ5QX(8(6oc2Mk&hWO5&c z;Kg31UW(_8R?vQdG=9=GN+g^+;@d)tyIX~cW&f&GPnr^`TSUvCRl7t<V3fJwzLh#w ztZn{_p@iA^1X*!oyni_|EGhYOt$&{kZWOj-PpfxMWdD|gmU4$#_M_)_yy%};4Ai+g zh=`I;oXPY`u~1iH%8v9$P)O5n!LJY9hTFtK3iviM)n~#zDad(J6NTqjseQ-y17lyf z4?skk`OLEgUJ`mQ$xFQgEw)Q$()xGZs+}F{9u$5X!w%DGoHCe>GK?z7$e(FS39GG- zx8B$trtX*L^>vO@XDzSx>gt6rPQ^}Se;w&8Qf4ZSeKMj~qw}T)RyR2QzS1ot&6DWQ z8s>`ZL4jFovs=L_*UbK_!Je^H2@`RIaiOImwVk7UPfIP*B=#xKhyaf7w>l_Wc<k+9 z0^QY~n;)M;D00boEGOWE0bglAOLE%!)phDR^|O!UE4ADeyYXp)&J(8ZG;X2PW{&2k z*%&@pi|rJTcNupT|4u=`#?s1-NRLyKgRh?{MaSBKf8J8sBg;QK0z^a&ldOWYal~>% z``g8D6?WD;&+bONw?~*TNX=io<5%II>4=U(o0zh<aQB8lanN|MFll&bL+JiKvUPG| zM_*IS_pk7>u?xkCf<&=GmK~k$>IuYViI5U6a%T=E2Zxi=uK)C67u3e=5nXDjBMP_? zzInKkiIfeJ?WZGiO>>TjF$k!ZY}-$Z!WLFfW<C|1gKu*~x!S}qqoSmR9M3wPzHSfE z5Jg_e=^KTHDNCdcb*Z_Zg?c+SKPQRsr6aE<+#D}Urdx^XF?RI4yWAp|u-H1yHP>th zb?&>CE6U~Xc(P(ybIGND{batFv|^?3)b(9U#ZUhNWMo5IxNz8GN7dvD&P*P=PW`tR z{as6ySHhDmYr16Wzc}sWzMhTMUf2$QVYVVJ7Qa6|=}8nz_^^F|aJQ&5U8UNSi+4c6 z<eeK;uGTDXj1#S&Q~T|;zP8kwRonDqnjSkTu!stmpzYd(_8g+Q^G!39P1A3)YVSJ4 z%}g_NmB2cKoy?>4dm5Y+JG;3VZL1h>BtgE`ze7twzox;-7|#8P5G{nBD?3DNZghpY zubIsMY@{nO66U@|4Ei8i>2#OG)B6V9`jXEh>Lgc+ed8i~`o`Z!glQjViIZw8Sq|$E zPOIT0#{~4Rs>1KQ&#dHmn)%Jy;hnsssy9Q3;|uQ|zqA4xQt+6`w@mZ%H3CK%u^4Go z<|OVOm+Zqi9oOlRJdgcbnrlexy8&;KFtiZXR;h7h%4B|Y+tE1fk^SvPhVQo!@5cFv zmasps?YZF13-N*VR{pFy-$qHn9Zmp2$;x3YNE?1Pn1KbDaDBsVh#=N;6C3$}#0o<D zB`^0lZ<CXoBtkvk<eFd^>v+D9CFN1t`j*^tik_h?29DBI?@m>WV6}viKr{?$FAUd} zvBx~bQcjqBxc5(KPlX=}3QFlC8Ck|?QZKVbnk6wu9|rQ2U%7{z%FGvBA(t=W`3dO* zxP<s3dLe;>Dt#E{EUsiL34fEOs52a+f;y3b;dfnaDP}^0szF}ETBhu-7lg<J=(*h+ zA?-}58Q5IQB<P;h{$*ohC;i&=yMFkQI&9n{;vwYRLWplx-;|w-UykT~*gr_AUnwYQ zs_$?sKiuyOzE5iv@p+saf2LDim$tD|^cc@>iPkPKfL3EaVugV@=fhj=H&f&`=mgU! z;81nJSz>OrR3gKT@XI~R!pUG9Tbu)>ob)=x1DhoFF0#hirEch44_Cz--ltzyvmD*u zI~@1c%kTsQrEjtkbA1!eK;{Sw-FD9kMqt%q3?8ysh^M8m<?wJ_x}^X=T)ZnCb*uB3 z{1$PSq@|ipy_@S4{!!Uj|F~frMz(L_?TfAl2%ocnKe_7+qg^I9c_#G^q+=xnZBkmz za&ulFrg)a?>S;96BaoU{TX^29D&s;yV(%!zKg9$S-g5rm&*?4=*Op>h)SdZuIBpo- z4c@o;NwVIbgP<{{zh*bH*)u%L7}MM*$r)jYsI?RJ-Xiw#`oYQbx!Xx!VdkK0Y~4~m zd67AqfV{&4eFk#z2t)%l7+o%)*#>{{lb>ATqGg@L<ODa22<+!yKbeU>q0xE{P2V** z@0lY^2d8oTh{sho<Nb^bXjk{l6(hkV!OWN>f3;*T^es2|zg8@~IB?6ZDWV(m^!=4k zIY;*!x{m#FkL)Wt{&{XLI7J(z6meCQtNdnoRgv<vHSwz2sfkqD$n3_HWn!`<qBmGw zK>e$fi7_hG6`_2mz^1FX9f{717y7-OiL1-DSxAY}JqEiFJDos1$N}@=M~WE|9SRB2 z<fV_=ibL`b0$L)%uH=x5!Ap^f<WGCJ6(J=y9|oubC}R}mSAtx~G|W5lux+qvY!3c( z!mY2o6L^Stg?QlB)iUQAb^~5AbI#|aD{}W%2r9jM4zfgYB^~+S-~<Q=ZSB9aWx4cJ zdhG}QagAM--j^?cR8P-6dFq1RtrPyEO;H7U$A1g|aL{I(pVqX&L4Lr~H596v<r~!) zV#zjpij(CTu$J4kJkAT(UFvHepxUC1xuie}B<qSWjE_yOG1pMo75H1f^0j0!kqWFF zpudJ3vlX%(Q+qwK6pCnqZ>E1Ovt)nK@leL^lT1tIP0);cr>y|lJKRXP%39`Hqe!Q1 z=nK)fL~^ovf+xmd%S+4{-T)%+b3W)HmY(HYfB0;sXh0NpcZ(JC0iyJKbRXx&a^EXj z8*H$}>0AHx`LF)lFNcMYFZ#5NWt<SfcsNdMt^Q4X^WmNJ!tc{=LG<}HcRcRYl)lh< zH)>JyS?o{4)@QMDiX)NU#}1xDVt*blW_oD7d&pRb^A^qS#%DmvcFx|u(SCQ9FMV&{ z-2Q!2W8*~y$U~QHA^e73s4{-~yL{=e!gidsR#xV;%FH8agb-nLHzZXq6WTEDWo}Ed zmuz$otV|{0zOG%@biCwxKO5f|%RuHpgeW2Dp*kV+HGE&97NsS3`R>=6dUt#fA-`Yf zUaed$L+S}5_hZAwX;aK*40(ZJr<fWWRf>W9pL|ZCEg`)!n-0zq44*AK>M&xyO$zh- z_vw_JIgPjtGweAP@uwWv%nk4~af#MUe*L;Gr`GhY&<ur%7VOE=*=ze=2*z}503U|B z8lC+JX+ZTu!sPTWMQWV2TwL5~AH;K$SY1`U3#HFrlwN=FY(;qFya{|_NiS|=?>_Yj zm<=BNxWII-wECM9KzSN0v3#*0@!fQ#^tjPhBw*HSPh9b7`U<qYTHKyI!%xj(%SNPK z0`Ch^${YMVlL9H*_wfx*T_m67C@OvVXZmEB414yK7%jLs*}m>Mok$N|4{30!-NDkp zuk)0JyivoYg-K$JnDc0q{WWfUJIZW`et4D|rQ9nn9Hitd&!<$_nqO{TlG*ssDjJ&| zX+vK^5b-xQRNcu6CpeulH?7vAtRoPIw+a45sVS|GY8p31cg*lPUl=(hEyNikWx4se z`^1X=j+zvkusyZ=C32*7e*Jyc%ada4c9o!BylZ|xv;O-gk7%X07+;UkP=)x87Y6I3 zm*#26E|<{wO1x*1)Haf>w=TioN%nre#IAN}<4f&9hj4GG|Mj#73LoX;@37n&$|xRE zw=KK;An7YLW*jf7H};V)Rz6T%ejzk}LJ&ET)S>4)vm30c_bIsSw3x?Mw9_5ha=y;_ zw=CnnRg{*lTDo?m#AA)-Wrt&0(2lcU2af?UR*@wF+qbO2^b%rgbR<9RJbkiWJ5n;1 zJI3>VBkjmF#T8P0ao^VE)t8-=n*syMvJXc&#TeJWFY5K6>NEp?sb2h=Q=jA9gZxIL zP(5VZMBvo&2dz`8s@@Q2(^;g7I7!iZZ+;W;%sQqsjxS~D7hN8<F2u|acQL{g*P|MX z@QP+Wf`4CDZO_+ygdVHVHXU#GXKoyZI9lS)Jj%+G8kTx|q{K>7tjN##lEm>TI%I2~ z#m=Uxgy30)_ZP#^$uN;%_D>eZs=<GXioI|v?_+#1Fg&G)93Y3g^Rucm%e?f>E?g?g znqKqdVA23!a>EhRaNB4u3-2%T3g$lIQ*7oA*dYy-eC{m|vssT0R@WIucyrBmwA53R zN4ywLGwb2ImQ-k;1|YmLlsCP2x-X(DuAX)cNf9?Woc|DK1P?JArn4P+n4Y0xZ3?l- zsqA(xx7U|QX3I2d+v1hj14tuNg?6Cot2z&;Zy2D|88=c>JZ6$UAM1~|?1@Hd&*vkU zsx!oRT29jH5&Po20JpM2N0fi~Hdf>7dV2W9cCMFOR5bEu!vXrtH|BL?5$WQ+r}wQ_ zyidqu(-)pnguacIox|}g7A{WQB2%w}m!S`g3pJFQxf?1}XwbXJNYjapALlu&kg2w> z-Oeq<Ubr_T6OKKCKP<zkr9iuQV)z@{)y1MaWcc_OQzlH<IB8H1T33`Lly^tHX{tWS zkM+}BWB&PTBYfh;ZX?8Ca>WZS8F=EP&`*t@e1WF=uP0t!hOv{WZFFhm(+=#!E>N60 zZ%SXDa9>V6%BwlbT-d2U`O1C2{t>wMj%Mi3<)_nHcX`lbHNZEm=wQ_etLfMqxY;_E zG?Kc}K0Q!AmDr>|e)JKpkbh0GsQ7XFxNjBu_44i?DFQ4#>P|SC&Ew0<Ki!`W0Y4S1 zC_Au2#o3x-O5!LS#GNM5bNsH>p=O1h9L?Q>2q=nVdztcui*46G<*H$t1_yqng9!3J z|E)eK%Ry6Ysqio!r&b#s(D#J%5&!)MQ6Csj6Hw0s0`nPD4*bwkTRQRnJEtx0SuKoV zXA*h#VAADv+WP>?i&K?_sq_vSNu}b{Vg)r^x9MDb@vVRUo3><IPK~;YnWp&hOPy2V zpgQKZtevT_d$ufLdXnl{HOlN0_p#kcSpVw^+q%@j&%ip5m`D~O4)WotukXFFSp{3* ztnnXb#(dN2mlz&ll#%@YfaB>5?w$Cno2^ZSd}iEdGeq+~t$M8$bDsLcxt=piMba;C z{Vunb)iaBOnNYCW1|Q~Rx@T7e33OA6sGGI~;mH20t?w9c2s|ytk<2IXg!h&UP}wax zfH|?y(=%>js(8v`PSXXY@g+^`&z~=E?v9Flsmy!qcknjkm~5f-{R^)|a7%4Tb*RQB z&p(Vu%bMN)UPpI0Jiag_a(M80uNKcY*vU%7yS_~Rpyx_*jDYUA>hdhhXig$eW+}`c z>B&DeCKttaq=?BPj*fz!K<a=)T7<V`bF@f#(&$0(hh{d%t25+MsP?wQ1;{Qpf*e8_ zoPgJ9S@9RR<!B^<ficA#*pGhP!89FH>0enHMNZC4G&n3YedVB3A89Tyt6DHTpsk3? zM30v3WdvXS%34{j3Z`jv;B@@&M-`W-2O{D4o~B>_^JZ=Rm8YWMd+cGMXLPdtlcy(> zNbKmuSO&dvnkCweg~m6Yw))KTb_M{0P$%E%3U5)T)5*ow<L>gCimK~bb3v|6vTQHA ziRQl#UX@9sc-poy0$m1hm8GfR<4pTD#la=xEOJMsvt7n4^Mf6{)-c=b&Z1gi{%r58 z1)`|-nQ?@M81FwEIwL(}S>lfmIJLIu6?ROpUYr!6|BR_R@}v7S`9&8z?fMrMI966x zX-w%mbIHHZ$@$$l-&Lk<93NKw3s=iXoRC;c@>135|I8%*Z>Shtkw8)%#8mNLj*k6- z1KuZCh`Ao+zmUhKG2r{<4l^YA7phnY9ZWM+4CyIK|M~Wyt}2KO+)bzdpWPywX%%r` zGHnDA*(PvUUmc|FCCTgE*(sFB6r5F7W=>4=KN;G<&*X@WDPElD31YYIfEup41XR&1 zYPqijl!PGV_PGA<=cYQ!gOW7U{#Y7`-`oIwt9Ye7r}96;>G?kBG{Y*5AQ{>KhMNHb z8u9T85J7Yax=V(l`I;`l13QNj3;-16%NG0Qy??pigzAA`7ef&rP~jOW={NBGm_fXm zv_B5-pjcq<ZSNb95H7#~jphR0?(S93z4^IjATNXBUV)tc76^mZFMmrrs~!{>Xh5lb zxEnVLcYz|;DbkE>7=WY&31*tCk0^Z%{__=-@&*yEsrs~`VK)Gc+qYmM>4wOl2hRZD zsBi3YyBJJ_O4ndU0iDAKUm#(cyE+`%(~>@ab_yf_VJkqk;{`4t&lhOmW?A#zEW0!; zVbz1fdP6;~MAlODv0Q&WG&F9{0f$TN0>13tz`4428K5a^+k=n6N4fDL_TQpJqS46x zyS7{47k|PCsK}N@0a!(SnW6R{nD_t2;Z4J3n`(PN)Aak2m_tAr8vqrntSh_dP1I<8 zHW=ywjnD{SA-?QfuxOd%_*A}(f-k`_blRuj%MV*&&31b$0Wxp$|JWRXX0FEqkZT~9 zREPJ6zp#3569{7IPN=1TDRdTPNImP)p&CG)qq&~*+VV93_pnzu@<3_tj57wjw5I@d zXe@i5*^kmIw5#}nb9ftr3B}pso-F*^3!5ODP8QR&Udo^J84&EK;~k%N^MeyBH7aXq zv^8TsR4tC4g9Lwf_$&y^uA|ToH+-T|6poZgxC)S2VDYL=S~+`YWKI%?q~i@U1rDUn zv1`DEE}%TfOSnFu3-F+G7Tj0V$)<R%s6&cTfvpDc8ikXqRkU1e5eEN7v8YNQVZ~Qk z&3tEs;a`G1jx^{n7hpPc>QV81=5I?+Bk)Y+Y1kNeA;avB$%yh^RD3lw7I*D6=0Mp^ zg!q$|nV)0nbwIlmj2mS@^cI`(#TU!w+2Uj^%D9;Tk%c!N$<3OsfRv~QCy<J!A+u(| z<9zb#8a!ms^A-v@lm3x0AN(&6JFxUrMV({$u=8*9zl^s7q#Lsb^=tv*z^c|oKrQ+M z>GU=z#a5Zl&(rwch{Hz&xP{%<N;{Oxwqg<i0Acf+{8X#YI&X9wjsS<P1zhbfkXgNP zM`gsZzKj45l0>n?Y=gUI$NmbStz2IY`X8dRlOi;2&p{AwmMK}|J|WnrhM@!l`06Ln zKoR!KJf6xnbR_cy&;J~y`0*BVdQc@wm)KSJ1XJ;hhDzl;Zqnf_@o)jfQ9g?1THe3l zVg><0t6lZP{cY5VcEKVW&p%a=osg_`Yi-+R`gMxtzOT}dIv!tQr7dJZiC+D<&m;dh z0weGo@FM;hmcHDs9J<4sE+GHBFWU3}IO_BNezEdhFsHjzD5+FT^jyRA4(Tg;_$ZSb z0QzeYPb<~mau#v@<S@if8HmM5EsGVVmEvh>P6)c21pfv_^*V8F7e#&80Q43$9nWP> zvkCy&&lcw{#`U$uEbn^(Mz1NuKC^E~{BOD4m!G)*c>wxn%DEtM^kQ`SE&DwFZ9z(_ zDM4}9;s14PBMU?nIPT2r0TkN=)N}lBr|JMUr9qH%?RPObNG4~kdd=pWvCQ6|wdox# z)icq@l2zXK7<JgD86e9oPIu>Mc%joEI5L;vkURA(Z;XZfnLp~5x&ZTvI~a+QvuvW+ zsdGz#F(UC21V3j%3P7OXKZr;Ed*lHHBu;H(VoG=$Br4tBP>p6FtnacJ1go1+*{PlC z0iIoeJrlX+2cX7F05Jbevv_6l8VEs*V$d;|=W|fB_hj-B2mpAY#MYA%o`6y$<Tb9w z;b}Ru0S2!0Zy>}kenO6t2h4%9E$lvc$k6$06rjG*xC=0|bmkTpyU)PtHHB-}=N0~k zkkvoe%W;2^Kq)ke;Y#&nkQ&S_d|2zDFy22%bh}8&JQP^HPgubMgU7y<!UFYmBDhCl z5G?>_QX-^8rk*8RQ`^xQSW<S6U72FK{t{b%*NIZ;H3Oi^1xReZDipmC=L_2QZ=gBT zJ$C#L6;;a8*LVNz0stYRA6uB><%zY-s^Dy-CPyYaidF?o(@a#^qG^o$k7bL-Am;S5 zZ`WP;<|F_1Mzw%q%v9dLvfLkaUMp${B{2H?Ptp6o>#YCBFM>`Kz`|ih--V6)kxp1( z+DtlHQRjcSepK)Y8~uQ(0z*OZU!=`H8c_AwEJDBkUxxcFR8=W1Yw+Mdf6hMvu~>ER zcY1~-O3eSI^dJNu_W%8Y^6k-4<AW~%HvgH)K+R*~A-S{Dfl3J>o$r%4;-Vk(SfxB& zPKl5eLkAvQkE_R-wY}8@y{MyyM|J9aeEOO|p`%gWpFk)5rr{E3O!~87Go8n~Mbjrv z)2DO5b@(CDa)BBgtQ{=>V&EOW?JVaP#BymgjNzjLOwQu;LC|kzP*eUr_&ukPuZf#K zNDZ1`E{Td{?x67cJOi}kb9(CBYpBS%i1TEnq52H)bgqNh>68839vEKml`K=3lbO?u zJ1l?;<)mgvM!lrUpzzhaw?jRcgj2*HkJ2^);p6NRJnr$&xiVkg6x5Cgj!5o;cT7|5 z6s65i1InA?%CA^a17xI(#e3kl?u}ZwcRxf`Y^9I4+~yW;Z(gHtf3g*0khht;OKz@n zHK*HJ{Cj6z`W75CuzLcy{dFZ$tmKptAJsa40pr*e*Vt-{of;i2YywJy9lNKYw;&ub z2g)_8Uyr|H4gXcH@lJV}Co&K3<gOVMK+W&F;FVVYR{X2;8AUJ5T%85W!WI;zxUdsc za3rZ-Evm_YDrG{MS#dT9!)`#!gZAO|YOe1tJ4H88k>9_V2BVDY+e3iC!bHP|Ck#og zO)RY6DzMO^9EQQUzfF7k!FC9Jj2Wng`0K$?7}D4Pf*DP>m#w!io(6y2GO<C^<s)&l z21^cMw{`Z-M>+&(51z*qg6bd(b<bx}B3qZ{W5ar20mmvDMtN#Mw7^U=<#G6$<q*xY zH^54><UJ3j>CB&_W90AOC(5x0B+1|mf}lIfCUdhQi}5B40K=WD7<oI226d(^ta^W6 z4a_!Q7*h;_!%EkGSsAZKIbWB*zOr+f*(J(*+0VZF&Nj{|)pPy0Xi8E|bsR(?{@e?F zYm06N$`_6Qx?A;zRK2TXV1AUpL3xxaZf2*bgiWbZGy}}8hSPF>YjuK@!!8yf^@gFj zyJ9#RDji#q6B5=;ckBuP>DQ=W2N>*s&VqS-4>dblvz0V|?0sg_*`eD3UfM0KeDyh7 zgAnj;?j*ILPUYoeLq*WzGK`XCt~a&g+Q)&kfeyj<dIlyUQ8Hrqh<=^)Ey~P86A;S; za0@SoY<Hz5wd#Jurv5m><abKtc{Eu5%faJG$`E?{3_G%V5F}!mFWCwHYDk4m74lRR zoap9!iEVU`GU|>}Gbn~dA;-hO*(Cy8DZ&O9GXhl_v(!Mm<kGnL9&eaNU-R)(6+%)m zl!><!cNIL4g!6kb4os-Q<cB#JqF_977QE;LvUl#TfC`sT{jV)X88b~u9`g&JK{OE! z5$F{#m3+vTD{u%Cc=nyR9uVG5sfMO~RS%8;{9dWQbO@H%gkgm!O-cn2f$c^x#<^)r z9UF-DzWfTSpZkqO!SrDzx37?(o?5*@#s^?x?4qoh?o*QLZwP^@(~aFy0urb>slAi! zG3*|2{nu*F>gIqPbxgg)iKakMH&Byx>d{~&vQ?mjG&wxy;2>FtMu7HDNC7+RKN@s6 z2EAnOs50HoZ_^hQd~V`EixOPj^G(m`>gcC-=V1-?A*dc-g2|dhjs}?rY`04iw@=j= z)xSZ{fNJ1D=iwT7O$mDY1dH{iMXlK5#a!RM<~M^Ru;OQ<3P{{E==z#P8r^yFDL!0C z7fZ7ozlb=Qur3z(UCFmS&jvZO+!sL*hO;<mt%L>6oB$G(N>dD|10+Ha^%$xB<m&B{ zjc=L#SSq0=Gy^}7tF}q#q0(t6S8d8Qs0!y{U<QIxMV=x29Ap#`z2NI(kyxdDv)_(u zyv(g-@ub@B6CAos-cNOmI!fDv?MsS#F8kBTp5RyLuDl2bl=c~g_J<E3Sr)*0By-y@ z!a>4o40E0<86;1_cXW`+awO+=J$MpmE2w_xIAffyE3_4ievOZR8+W3_^qOhwz##2T z3aP(6%)1SFHM|@nqy7sfaSOy+618`oot|9#gC)wg!IXACw>q{-hjQZ{2uR^}OxJv_ z?6_B8iBcbFcIf1Rnq{Hwoxt1lqze3ezt#9x#FoV}ocOY~L@Fo6OxxhcwZ!jdqUuEn zyvZj<)Q}(2U`@DoSD*&MTg#TV2T?N@y?G}IRgAT$m#S3pMs(`NwguO=PErF!WdZxD ziE1z$KeE%f`k(m(g)(nIUQ0d;(=0c`t+>Ek!mKQ>)-x$!oc!R;@h_v-@OI>E*9)Y> zrEXK&h-mzo=FBy)>Ppl-X=9AO5wm=+Hn%Q$8d1MkW)L1JGSl)?##DNASnu<9)@dgH zpX+)b`mDAtBS;t{SX3-;e(pL@q(5Kb_$9AyW=T;kg!CTZuE%tF^C5SXHg&+Pqj<K} zRJiMfUKzp1apkGw)c$Xweg3F`AAwy?bucU4@twWq2AP4McMtmW=W6sW`ZsmW&B|!F zp1x{e(KdR7?<X;$b{nK+zH^UdIvkb#;BGz|gGywA6*dVh0VLN1yCP}T{PHdHv7Z4I z<h8NKrQZFd^w%K;v&rGLpT_^{?Fp%{v!))TUp~9*pCWRBA(+qu{chIJ>_u7jHKuZc z4@S2QIP%qm1xe1_k0z>R4pT3V%s^Vx9cO$<W%`@PhaT_eB?g$&BtcpgI<F^raqPm{ z4cSq^g~V!t{9BtI?-M*fFl`4{2O=x1TK$&<VtC=ON++=>1yC{vyB~u^A-B?Hed{$h zS4r=kzQqT@Bx(<Pnt-kY^KQZjs00}ycN-F#NBBO1F+Gcc0PN*fcDl9S`JAGGTHbGT ziJh=SImGc}3986v<T$<0=m?}Lio{hiOUawE&*H}K()Aaaajwb7G<&zrs=f_zJJ@C$ z?;6O}H}7qpY$cEvG=t>NzWi)JNpaNi@HY@zeKm7yzuQ@%bF&=ux<qIgEFPi6xsQwa zBINnEfxzEoy20t2<gm0v7#4zdvG33}p=0qGFSS}<6PL^ZzWkFC2kW-LYS>%dbFexg zQ1Xm%!LQ}V$_SDuaW*x7gPIZAzenk|g#=-p+x8fxETRt6(G(mKB4g4JPT{lyjo(*n zw{ISyVsv~d?J;QgFN1FWTHW5Wn|bssP}QPP%bLx0aWEtl`PJ>s{V>1K6~7;R>xt_q zy*DJ~rDz{ha>&9|^;7(m{k!snSoD_rN;LMD7+3`mQN57A{MJy+_I)ReRqndUM-Zhl zWsQ6tGGcrWNg{72UL}USK1PIRjR24;hCB4?P~%}xN;W%Ad?y-{0PTse6HG=4rBwJb z_BuEj+=W`Plx`{#2T$jti$~l+q%KXcfRgewb3aG$;>))rsXmW8@dX>eX)t^c0U{7^ zVVOXjEk{FT`){ghm&`rD!3__KnD(ZggjRRmp~c`%7PmiQq5<|DBb<>t*+&j`z}!jH zqtY+gQKSEv?Jo-mbQ(K;0#jd)&R)5HT6Ak>HS9ES2`DgW5AX=3e2#EPZJY^$b$C?B zz4C<d883l^e-q`}FVqckSQOpC3zMDf2z~RJ$s2}a7k-1^$$V-pBi9lD2A()v!kF30 zlIB3c<FEe=228OU_eRsLQ`+eJWpj>34Rt<q-!#w-Nt@LXl<?B6&Ujqh!#~q7*D-o0 zB+F(6f3EwQZ=KI6(<uBK&rFN{7w$Z^+ar=AI*2#iWsA`}Og9+O)do#Uzb%0{%rqc; z9GyNHgmFooM7CIa;RvUcz4XrVxqUumY<k8uf#uGljor`rrz`PcKf?v}^*t=t3&=rI z%XiDLv_ibqRJq-(^p=-C29^@WAGcRG-HWk1sr<+;;UEOkQy^31^8Ox-owQ{e+ArO{ zF;vC3sUQ<-sW_wdP2qL^=PWewFLW<ltTK~cAJu3qGl(+$;O+HFUtwQk;thyo<%}Un z0EaO!`*K{Ngmdz@(L8bErb=uBl|A%Y{zbR>4t!+Lm+WZ>AF}XYuTdR&#vdh?s=2OC zUyP40Z0*Y}ksP!n8ylGO{_8J9o_CFKU%azd$pjN`@?NkAO)w;d9?O^Q1>_@NiuHyZ z1hGW(7MpfH1uo*wJHr~m2ajKB?w7@q$Bv@oebrt=7)shMZy&|}9tZ2b;BJB;ehEGk zq@nw5Q1lDrOH<e8<ES3Pj!L>>ibx#|T^D`<dWh{lqW#hX46pdTlOIyisONR6mYA|* zZaO^zOU5DcBnVv!Y8#>I<{6zu(fGpef#O+8DLkb3geCS}`ePABBw_a-)C1>zIGV&g zF3ZpO`N*q5b*jzp>s2M(H>=W+MjbK|tcg{Ik+=L3kN2vt4ssc^I)Mj@7VD601CFFm z(ZpBUcW6s85?(nwi$jLWB~vI+?AsI<#YlsEp&Ui8Y;RzufU{oN8xzQ7myV+M`|_i$ zU!2rEcicfLDpcS*8b0?pe?R}*CG_8LiBzAm`%di}@kaFC+81R+#T4!EPW~8?p@)`T z!M%7`ep{?#O|SQ?_q*U7ZN*88Ln`9Pj{>}2F{+R^eA2cL?Aug)kO!;DKH9TyKFnDM z_VEkqbe$H>^9RXKeaK}Tr^Cvr)rVxhBMxHE)n<V}N+s}>R&dEA@=i@YUPE=Fv6*_* z4g*=VDax0Iw3=k+VnUB}1K{4Y^S`n`SQN%Vvug!{Msr@q6_B^flKR%Ql?L42DB6-k z*+%#j_7U%;+Ni=C&D7Y8R>{K@>a3ScbCcWIM`Ul@>9)*I#QM9fU{fp>@cjfO$uMH9 zl@!=mr$Q#KSGssSpGkKY-dd{vS`aoZ&h-#zjqZUq8Im~cRc`Ccq_I}r*X$yYubaN_ zDy<KQFnIi!cBFQgNuBurI7?)WX)lWnMrV9?IC}(XjU*4o%A4}9ovrEab&BUp%4DTV z#?W|6Uui$qA-OCTru$Wo#y%7+3AV7qYzg7sa3#5LzwnGHwl@!YIPx64t80*%WA@`8 z9fln8WIfVlMMp%%sj6HDSppeDGtYOexT)0f^2UeC{h@z2k9FDCW|yn9r`fkCz3Ajg zj_Kl+4-#=@hZ)NnWlIE%VHY-19A8j#w%(Cw)-&bT#RT~`w%e=ThnUUjsyHlCw(*<W zUbRS#xSuDCM=#!E^JU~t#E<Si{h8j=$aXp~AaS9=@&!IxoQgJ0Z~Wtn4whcO>eqAi zX<~%=sGLpCRLnqY_}O*9G$iJ%%0ORfTilcC;9a#ERX8%`CXqiLmaJ2jYa)38wuT(d z(Q~LoHr2j?4MGkyD&i@JEid>AA4FE?L??nj%to|Y=79s2Dg2WSj?H4=qi%03t#$72 zF@EgrrNK#|x+Hh|mzfE%9N@GDj1WT|XN~<@x%MY~mIspfTHDgIbR*!3IB*58Ag?tb z__i9d8PyGw1F@~!WSFmF{RE8TQ>7$^9n>iKi3{Ck%=(c%P+Y;@#OGsVf7}~H59zQt zB)Rw>6{RG(;G08KK7skP72yz(+}=h3Qa?}@wo*tEUsy?sW)sg%7Zo0cc)wH_1iyHd z|5TpMm%20hd$HbmHQz~OI~rpwg^E}l8bN0`0hbsV=W&WrSHJTa$#pn?^g-BYw0L+T z)(StC#TJng_i%66+{VGjmX56I?!}OUF#gcSsFY75NCHUq{*^ub+AQL5m@0;Ol_Hn` z|6MHwj<>Aulc}h~K-)D;`A6COb@cE;J*970@(eKjw7Y*6<4HbRcHE(1DcMzQQl0C& z*JB;C1kddWQ^vAIreW|2Vz9gGD1Eo3@?6Q#$|!7p_9Und-_~7?)+CcpAZf(ia#1Xd zAy?d{=XCpU>Ud516Z=e8yWxF^imF79c#K{xY|5dkF75>%VOuW?hSTl-v@ixcl&{01 zJiEA#K_djJ(M6T<ro;FdCwG7M5V9dhbCZ?*C;T)sC`HuKm(OjC<rl|MO%?4O(iKCF zVT8Ez#Iu>#62npVNiXg*@sMhGS_}0o#uTpy;FvGBKHq|t2pBxtst#X9RIK0ps%Fm$ z9E?=+Gk7i*UsRk^$TRlaR3bFa4oj-Tun5n9BluS_?<eJ7V}$QF)I#KV+hm{XIdyb* z?Du_zKN8SYvKmSwE5ZEi?p<3K)tE6B|M&y1W}k#1`)K;|&U3rKmY_(j<dm0snm4A1 zH)E~6J7m54TfK1S0F55&qqvga0&iCoB;%}SJ40}&H8_3=;uUG5W*}xA5$&-a#rzbo zkIWi4f%cYFK@7?l(o5Wr)?p^HBkn&V+kYayYRtt(Jh;5v9bDL9O~s6{m#+3CQ)g^{ zaEX_*E&zH0|F&SVC!8C6Mv{wWOVv|VzQ|ytx-TlYmf+SEI)T#@THaQe^bXyeLjyd! zT>LfhayYJ#I*B&x7qk^+P6O-iWk;1p9O@CUktbtuHZkO?kG<2^(ogZ-O?5P&dB-fZ z3-*h{V7Zt5rq?*^ZEQi*K~z<?XH`s;oCL;vxo)Z6dDKd;^<6rwkSgm4o2eY!Fk*zM z<~FR}(0-@EFKGmVrpjxVw)0SD5&5LuF)lGhvSX(5+gs>X=8Mm`SfU4ko|K1(h9PTm zqT(IO7)ksq;)B2)YU12T=Ij*MWak}Q_O&nB)=XgDSm9o93UKUvhhKHwSMBw{K800X zzN}#Y$@?(Pb~akh{P*PqzUk~hi~?CWK|}Qp8W!t~hFYrFa66>kIPNu3u2!woel+$G zgU)b3?Jsyy5;jC05-5PvWev1*0==@SS8A!x2ZWI}+aGSKnsL2lv+PN|kbW6Vk#`w` z)+o$t%5k$S5{a#}vm%RY8Q?X7=e>tZs;R6c(^CllB!};5c>T_^uU6;k$IsPftHDtL zd=qvvucJBb<8<#vvgUAQ`@LUp4IS}+KQ6DX{Ftlyv}$4MzaGvi-*vyV=e*@E2KvK0 z(!b-zTzc*=e4w<*zkix?WI|beT$J{TPuu8;71ys<H6=>U3N=D@GNS>b;TdeteD7cA zv*1?y+=Z!9Ta{x&ZV~?FzgvWu_qYhAUOndNBzvzXrrNh4s<qN*jOj-nZ!Va&tOAWg z59th~(w6op|1FT@hxNBNV_%4djpueYTC&Ec#}!4j*ph-x`Km+hGV&lMbo_VxrPdl9 z5^S6h`Rx)qd#0f<xk!0qpAZLqFp|Dw@70g9O9Yald;OSd7#K~HZ4fI^>CmWY8BR8p zQ${`<+V+~oV|+M(gylbjR=4iJziBVqY`U>yXuTRKd+DAco|~kUOEQ9$Mo}XIMHoGB z|1AiES5$4|tR+a5PFf{8DCs`Nu;%s#&m}(<yzt8APSn)0rn00YuU?sR4|3|YWE&qF zG-4%QN)Sf>_LREUS**-LA62bLvui_Ks(FR;r4w8PZAy9^+(~)Y;%aq2m|#UA#}K^8 zIIhRI))PjDkso*lY>__-EUW{&p523~e7kT)CTsQMtg&!HO0eOsE+OrYPTSN|?Ybn1 zV7T6W{46dI{8Um&9OV73jgVeKca*w?p@AZ=#;J`n>cHSRpZzIx@g2?oV(+b^s@(c_ zZ>5n%*Fs7}N<d0NT2PQiP(q}oq<hib-61I;BGL^Dkd{US=?3XobaUp~dq4Ym&iOt2 z{P~V?#(0No3}FH5u6cjwocH`(*JU$Nr;<4x<`mC;*A4IB>x%+6P0fKsLdapek)^H< zg+9v`L37mISy{G*+_!p{Q76Uh3BR|v_I-_R;@N8rK6lvkSog5@iY}S->SSJ}C+%3k z!tG$jDohg}eXwtD@b$i{SSeBgdiulXnk^UgX+FiNeEvo|%hXba)qMJAj=ZtMN<>~P zyM~OoT(!xBd8rpf)kHNGZwnj++_WznQZHV|-5^93cfoK$xU^74%RNeVZtDCxw@9V2 z@Kf59{Uq;%(+HyrmWjTKgOBVqdxoq>T~$G%=*8DO>SfP_Ljgw9wXTY7Y>yYAPa)R& zS~5QQ^l@Hr2NHZ2#tiv~Tr%5T@3-Y5T=L*;VI)4N^?}%yUqU+KR1_bslys1LeGD3= zttb!ZZumOn1e{H#R&x^x&*wDy5OjP*>R(I{Rmc^>p=31A%wLv$m8_%SIo@jmy*Vie zRbFCAMLRCTw{V@jkGveu<L~o@)QDjWRr51qJjQT_zTgt)iZ<*PQ5l&3=1pT1vyx55 zlnIR;S1*gLQ7>>%6YS&}=N>)P*{b^v@#2+u%SLU$H?g>=spoTFy)gGv3_~XK*IY_^ zIXJ0!<8Y@pRU2I(6NG$AA=EA`+sDM(YWB5jU~;Al>iiGmRvI0cVrgIU>hp&QfAsHr z5>(LS@f=n@0U{0^99ZJ7hq*$EJP191iEinFlGjj33SrV?`rNqN&<yXilAw8Z=}V{& zXDU~8FX+5IfS!#6XO<DZ)~WL*P#xn4Q&Kn+BB8;k;N~MuhoQ_v)`@7Jo7g2*QVI8s zSMBA2i@mVt!;RN&ANIb@c~K2>d-=>gQ+CcpZ8*(Rw~ky#T3AbMFA_WjV5c8>GUdka zrf|&f_XPfEf)!Vi&yk2Ov!|+VLST!31;d(6=PO|n>v7UM-&~!Qo}Hwt+^ur$Tf}0^ zbbeOHzByL~zcravY0uczU}VG?LlZ3x=}SCSxcVPswxu{7I4Qo1j!qZem04#p6Dl7R zZ}ugmvhMvA8!z~_q;iD*#=IctNLCC{d31G<!BCafg&3Oqscw99x7wf6toV^0VkB0y zxTxySMwRh_bHYhvDqrKA)q}gmKbs`|*YSE0$?QPhv0>G59*av*Ol(snQ4r{K&9BRY zL@vkYMuE49`zaiNBuvTCk%I?~sob%ahAvi}JY_MDDVsgPx|stTc%bj}^>XBAu(&43 zI(+_A|JJ~;eEh9z&Plxys(F!yhZHhgt_I4Bc|3i~6*qLD*uAAM%ayY<-iMNtxY=>{ z4yZukL&}dW2f2uXf1uL);~GrdqCuxJBppK}s?1u1Gexl5cZ()dC~}fbuvzoTAM?}5 zFuxJz34DI6Y!Dsh(+RPiFz>ly><579!`9?Z93_|^x7?RKZ;3bD5q-bg0?CJ?IiNxE zD#OP5tR9m@TJYiT91v1SIH$uz`Qn@XfgR0t3N}clFzsybGI4L!-u_bm409v%Ad3-C zB*(Sl^cHFuA&%r9C2+jw8(e(RT%}ocjB`NGziTsm#b9gueQ%5EQg<MIKQ!(;F%MR( zakwRCOSB3;T@>P83slLY>moo{eDVD4j*ieNIlcb;$8<eC$@Dh!c-N=ej~86_0;^5* zKL!|uE<X*`kKD$X4||!=jdHN}%{;A$j#HK^Me@vu;)$C~YnYwiUK%7`^H^!(cYqdx zTU5^EGNouLH|{v$*n2;Oa2isxrD<vwx^&M2?toPcsZWW|vSg&)Mz^&+RhdKBwE`!S zC0B?KTmavY#;66J{(@r;Tm8{4bh*5ba{veOOBe_7x(B$;%H@fPcG~X=+t6<>lU~Hd z&f1wpmelM*!?{E&ZfNCA^IazN3WQ6|RltlRl?(K(h>x5)qW*MAhQ{pysGSOv1$M-A zELRWWQcLF*)<-CNn6^334CQv})Tg5+D@G1@s_@2^G78RgLu}cPN@>h$1l}B6+lYVp z;iJ-1ClcnN(rG5GsVPn=mnlWry)4hx{{x*Z<IQka)o7)k?UnqGgtacSustj3u^cO& zkkA3Gq9JvJbY}dD`lI3z&+tw2ZMlPeJniTr`?bO~oHe<j16w$!3=31$Zw@2stJJ0# zzL1NL%{&yrc=B4AtIt#4NWo|v_|Bj1f54WgmY;wACgGf5NiXwIJ3I=x$PpovbxzjA zm8n`l<`a@}t0F7uLPSh6G)%%r{hk*T!kIPM<eea1_6psQsPk1KgW=niJbDNbq44r) zf0Gr=jBppsU7_I;eQAb=;^XqvlFU7LzC=A-B)r9jnf&qG!)l5w`cg?3Wwdmt^CV9v z+Jp6V{2->BZxFHZuX6lnf>yicCEX#Zh|p*HhI`&+x6Rfcmpk9<%!ajj?R<#kYt6%w zE8W{$pn)A_Gw(}e0@z9Lt&ZGm#|b+aaY8ZZ<Iy3O@f<oCt>Qs7MT-mG%L)AgO{YSB zciM$lPb16la-<n@2p0DJMYy?+m$V^5;SWm<Z-#zj^=45Jl<t0}aO$>)NaoHQZ@nK7 zsZA9A1gQwRi-^Olq=To0o3ybu#75V^U%dy`_1Tf7tE@CjaP*9NQxp@}SSlvWo|xZ} z?m_~0gRj$S_U_;^x|Cxp&l7`Idu|yCmyhoHrAY6+Er;$wi<wX9tpXujF5a0ot<fFT zXi##eIggWATbsSin@baoosgH1B|Z!z_zSu1l{b%wFbqd9_cMyHlS^BY72ec}wIU`O zS07SwN+iZv=p?tKcBAx&Kaq)Oo<5@LT1wnUL7jXxxeOi`a~yI&NqQO&A5by{KEoKW zXaRH5?#R=CrxWI<>0^O<x$kJ-V>DIDY!!Wfj|mw(q{li!*@>qQugH6lmzkTH*MwLk z&+u_K?8P`I-z2WMGA(f9J<)hiZMEZ3E6RJr%2ixN^Naqf{YUD_VD;02!D#gXxem#> z=TqG{y`1|mADJ~I-^z~=Pc6h5_b`{C9s5-2H&Gt<ku`hjN22PkS<+hDL|pp*o3Jc? z9?ijO&fm<@<Vvz)QdASi9}HQ}<z;6V_P!nDpmP6^q&3r;QpSt^vs_b?Zwo5k%}uf- z`c4_1A|T2+`#mn6TY_pjY+pf4@ut6)#nCY+&xaIRz26zR4x(+q<NBd5r2Da9HAJ{i zD%MusU0?rf$Y`uj5Gq;%ZQckAe$_W-H4>cJn|5_o>Qe9u@~T4yZoWs*rtDLOz9h?Q zFzXJfmt&{TYy5T*P^;jwcsJg)fgA%@*wVsUYG+VKKNknRe55HqZ}>a6rg3Q@7laFE zVAukqtk2?uv{b?ALFA7|2Jw0}{t`y0<EQo2vWBvgiw=nwkz9}{aZxVuy`+RU`;RE4 zd#r`8_OQNNrCN{uPEf!ZOU;BTydXcyesyNrUpZpOfx!Un{#vZ+wU@~D8c()E$*rv& zZFXRdn7zgOHr4v_%JV$5L9KmnK2}c_6{<u|$f=o^3WHXSzTX(3)}5h1u8Fw&{;PwD z^q<}m2W7Jx8QpR(63OvsL*<#pC*7so&nDyeeCoN<G)C{afwK)z_6<P^cznxvt<ED{ zr!>*P>J+;-#f_z<2ow7$f`in^#*3xXZ8upl8JAZ3sE`m9o$b8ymtoBrnME&y*c(~S zGP`Pjfd{^(J0|9{VpAA-pBfYG2J8{s^pi4bq+AP*H&-Y8bw-U2K5vGThVc>~3bE7^ z9VNUbT?-$rlvJ31d>}0=_A5;*cbR&du>PK#chVH)lf1N%*k)l$7kSZW+N!nPgdVKH zwp<b^b;eOnyN^7aoqurgZ;@Pl?Y@@M6drbEKujgIfpRR8#mZttfnx8?w*SN&B>FQP zSo{iW{(0yagN`>=90zQkhs6)G=^5I+p|usXRXm>9M7NM4JK%Dzw|GxE{bIbm<(bmo zc@zNf)^O_bjDS_Ob8wh@=dy<Uu}DmSrUC40WVfgXRW<=ZP*h86Eh+3xH1QDamEs%p z3M-_b=nmSl%;cSDM;yY>&p^gd!rEFI61R(I`lh0k$Xl_S`|J-cCCdn_bOnXO>fMbY zW1gw~)cXmSUg2zmB1|8tM@$wBEj0Nsg`}y(e420)ki{i_!8DW|k=vM`GSL6H&0@zd zDyY6pOwF_9nOol%nFhrT<Ky++Cmka@y$hLj3-nDEQQfanQ)K`NV~jGgg53B2`5KZ( zq2Av<?&YZZ(r~q(KP{r(IR8jwo9|>OqNKrm;38^DufHfYg!RTQJausTDumMRr&jS) zZgVq&tLc65#6`e?m$paP=^ok~zqU1|^WZ2){U(QdySCkA(M~aIhGSB?ZN3)ldIN4m zmS$aM(~SOG`@uA78&}sK3-14OfBtx<nRv}cYPf%Ft~*_H&F-Yzgtq<)!)ljr&f~T7 z@ROjrU8zW$pdH7LQx=WXT90?f-Wo}sfFP238WBckR<^6v)SaqDZZBKR9nWyLjWg-# z+tRyhe3LHd&fjgl?0?FSPNfUllz#A>Oo?5(@;r3j@sYN6&XJ0Oj9nV#9Zh%SPp7#z zqWpL7c;NLcF3mLbiNorRd$y6>z6YWzUzTQ2Xxx0mY=&lvW|_uik;Zu(+pQh})atQO zq8@`Y2YdZH=QuP@LKfHf&LGLR7O~{j8&>@304lTVvSwV<x5!#IiurYy#`SXN%aW#Z zRe$ULxljI%mi(%TuIFOYaql)}re}keRrl*@%M<N5lHJllF+1rDxVnl4I?+Fwult0= zh<|X6eN<-S<$N77#(y^DxOw${AgG9cvfpugvOitq^z@_8$bFCklR1Mhq29{yIOF19 za^RWLM@A#pj0QGfEG@AoiSA(Rcm;lN{M6KOP*?(Q68fE0(OMQ4RXaXod-jvAF^sMD z6<4@NidRN}_MGOb-HDj%2mX=S&4`r3`fjEVt%^)uigRv^Cx8-FB)E=n*0D=^Yae*= z{&aO=TG*a#en4oUo^gGpokdz_@z)!p9D=~ZdCe)4#3$5pr~F#Zm}7MZ4;Jd5lfM=8 z?=~brSr_|9{BbP{ZE^&x42+t9$RIaC=yjrIzLNOcLUI=JL7}nCY3a<S&AoayhQY>5 zf6C=X9<iH^pNnRR^EZZFl5M<WGfoBkb_45=o*Y%{Z9O2s7+py^uV`3{*P2$JbKfa$ zxKarsJP3b!<22K7#N63N4vC|0qTJDe9hse!o*1um$e|``SI8vC(^@xOgnsa-uA6Cb zquJ#2H)wzCGoi`>!4`8<<jT`BSXg-*wG%hBzE`)0B3Dn5pUL2!X|T`Yajx#DDnI+v z<Fs4(B>UtG`>B_bsMv$t1aTLL#Itjye+1bCnSJ=Qt#m_KFgoAl4ffgBI*Ykibg#g3 zO`Gb-EbO+nPju|9@jN<?KDg0!;lwKno^U#EHmV14It$yRH?%afneps8y7Zh$2O2`5 zO3gM|4HwxTT6a%G-FwqLrg>YUW!`>&5a(bEOTS(%6KW+o1E)h2N~dXOJr>}NeUt8d z7GgCZdQgiyHYs@NadL%qvQIf!A4J>SMX9^%1fuB7CD@2DT&@$Cs5v6vSasjt`SO7S z>$VDoJoG~(D2o66CEj&!XeT_kzeO;`OLKV8Q`3VDidHkNH?~NZ*sSZi-Rv6^PyXO) zL$~}e*XyYYob9?}EYnHuQN08rRU&(Shtf_9ae_HZPpq%mL?M%;Y4M!Df245+RdNSw zbsXREd)!GK?yqTXxDB?X$(L}73%{wQ=zhPa_7e;kwH?=$^5a1c2`j(s+@b`gx1EMM z72x`+OYEeN5}p>AI|4iBzaiHD{R=@9A3pxrM@`CJ&CAzO<h*4{W|s|jzh`=0>&IP5 z)g`X1U(&I8c^#@j(waGRGdn1sG&rr_J*L3D{qd%W@+|13{Z^D=E9K_)VXf^_tNQWr zV?d#Nmyv$E%=zWMNWBu7u>1|YRdB)R<$@mRP2<gvsYo%nDA(e?ME;dC<?`|DO7LFw zh26`A(bR_p5S1lWpe_1`0%7_XW&Kwr8La$32~M{q^Il3`N4Bz8?IJ)##GEVMbAKYp zYLxVslj?EWWW-$&J71C$1P9l~^m>$~2Jm8D+MAr-*exW*{owTD6tT3uiN@jcFynMC ziDuT%am8rNCQ9TW%k4O?D>ZG_c&RzS=#+oP<9XcDif13UA+7W88}0RLM+Dan!i4rA z27UV2oalH_^{}hwg|`@Klu5Im{Py|@UBn4je_)7LK6h}*53nTr4+paL0*Qh5Xl;RD zCe6AK3OSc0k*-4C_*vK8*H%TZ`R%4G;0=blgI~8QJ7yK|JcPFz=d&k3y>8og6RKOq z3ql+Gfm0$piud}GY92Qi-oCzAsN}p0zj2K#<&o!)n{v%*uA{ib$=WJ9R6u#>>3-Eu zZuM#1<e+obF%>Gaq^Ik7rFnYRmi%MEexu+MOGfcKadwQ*rjf9xBzaB$+>J;Qg2;<< z(zpm8lBk!$(iMTqkUTgdgLAZp_1Z}0<f2isX3jy$IogZo^8PjZF0$Ka7rr6dX>a3j z2)ik0zHnOR?=anU-IMCl$riG%EBWwc^|95Y4o~e&jnH??nr<2}Lhzb%u7uXMlFz=s z0o|y)-o2IBpv+o+nB%ok$I-*~y{-b==1BXoS*J3s)xi$};Z+rGyJJ>yPR{nn>HNY! zC9V=}@I{?WYQ1Yli9MsX@tkl58cbocUe`<hHd|5951y1)Z72FT-pKmguEl|&u=`Q> zzYH_}?C6IC03#na0?GaTB(<Z%7B0gTpNJFJ*y%~@_WS8h1&5gJl&j<_<E8~U-VOH- z`AMe`M_oF;#@u%8nGV@wwkol;WbNs)8{sYyn;F)HqC-P3s?7l!clgDimzURVRW6$p zj-SV=v+PxC`&N67CJ7M4@1Z0=%=Nq1>?i7TcKY3%6Mp2{j;Wg<;&bYKo3>xe*nr`X z$ma0UbicDM1)lyrk*ijpoo_Qywtj=PZ5{{P>N}}g9JXHCSNOYc8-9sqx}AmS4K?m9 ze`sy`6ea9ZV*Us<Oe^!B4>%YN=J#XQn&M0JInt3CxLq^=Bs~$A*Xw3odr)VlC!>b= z_w)D72cqVhPD*L;T(d|}NsF}`>asntg#(A}TEilLZwO_6Fxb!7nZciR$mt4yNM89m zs-lMZ;<F;pYYu+*_N0~u(l%2y#`MY$A6x<_rkUDAzt4z`7I&B*PwfVhx7Da)B+f=& zo*nb(HoT<wEItiB<}MBOaZve(G6n|GMOF_O62dqtE$j>`dJ%CPufz#W36QYs3n`YA z|9ZI8iQ*sFYLXTz+7g*WlK-Kodt*JO^5Ju_Rc(8z;`@I=yam~SyiUmC*Tz4lFM$HA z0$BA_2^sx=s>R^_|NnFTzdAoYkB(f+oinI+I-@v7SOq)iQHXJU6w`$i9uI!O{O<ul zKF2SztTJ-BqpQ2NUZ>vm5q}zo6A`T-oAciqk2ofyGC#c;rg5(H|BRLXyJuMY2Ihs^ z-%<+yZ@=`N2_W>M^Z|eW)&KnB|Mkx?y@!HKRsi(r+#B8wkWXM+0^bJ)`R=g7*)c0V z5bD^Knd^e4cM4EtJ`N)7Kl5saEKrbmw;K>;%>Zr9=GqwL^C2-$fW%A56c7J7EmlVN zK`eFgzsh{ok;7v849qRD0-Hj`r5Q`tKYgeN+w=65Mur(r8-%g{29D>XCmrOv@-|IX zcx-jcu{*vvk4%rZ$=;aKIRiD)W1)<AED+F#im85z%w4dmTS>GBiidK5*<UoP@s5C$ z%^jq^NJhpk2**$VE~=x*I}kDK02UIzNWTh|{G)(nVW6}H;@S&smHKHpO&Ceu)PqO- z4MvHYoya_0h4WF6nK6Ns6Y)-GHzm0P_IC$x!5mURr<jDHodwHM)LmNz{4~u8kOKZ< z={%SA6Fmchhf$Hm<NYn5#4_ZZ=Hb#&d{n=7KZxcbp--e@R>rwAO(BwJ-$63sEh-!O zI_~{X09ZH}Bsi-U$<;5@P^<uE>*2Y`FkDuWJ4Tp&aq`?Udx!V?fKWC;QHCxI%^2W* zSzpQU*W@ILVL(<w6_^cTi-(cY469Em#_!iw&HCG$4~ONfkmNnAA<b#hYzNTu&dB@; zC>2t5L0t5socF-nO`iZ<xqhvS>iWz-?jG@U?D>E?AbY~hSrWTBQv$gcCw0gqI!i#( zS?$fYWS3NF83?SD6ajImqHPzIy?hvx;YLBe6H-XBRMB{+({jIXc33Cl3Mk<50x!UY zZP=n80O|z1Ht_sJP|)YsNOOVe2>XLP8YhQi*QP|Kp}ZCAALq^*0GyV5?h26Q)M@v; z1T{OLVzrDjJby`jJDd>Y0({w=tTJ~bf9TLa?|p)LXZu~8!tY`b>doKFR#DmTxOxnY z>xUh1ya%}chXG^`s@0c*Pj_UHLFhAp2v|>EL8=d_Eu$SbwvRO9AN@5hG{r~LcoW6H zXxl}-3UXB|3}S~iDWG#mRUr`H;&lPNLCxY>$buYF+J_XtaS3mr4UWGUYyu(og4f8$ z5l8ek0LvWX;O=;Uf{pfOG|mAiO^Oqn{a2YW^i%NUM3Nl`?sVyZ<Flz%%~zcGdCm^1 z-0h8Su#wezhjk+17a$(t*J4G5g$3A}qd$d!P1Z%P?)4(yxE?A}3`y3u7jVFK&>3gg zL8|T$MC)050j{THG7^+;2f|5fl9HC*SQv=AcrDzyUk8Bxnp2_cR=ZCi)NT?Pa?|3r z2=siA&MpB+?~JB#Q|DdtTF{v15>jVwKqjp3ssMt@ww<s=(g<8|%kp>I;1BI?PP@cf zRnCAI;UQ<pZrs&1P}v4<B4AvoW>mjR+wgF7K5=sUi~>FDRxyYb(0fs3&z9~7i1$mA z8jx4=BqQ!Hx%8595OT^R^OQ1lOtwH|lC!TB7C@?I0}`g^W<cXG{}F#FuOF9$&-{qZ z$EO=y0b=M*-D(E$)?jK^a>A|n0HA6fwro85wFBac@y&|cS3&Nz!)2Km!C*fT6pfxw zN7};Yn_j?E-od*#gXmL0k-)?@(M~MDDy(h}!!p_}oI{Q~IJt;U_j@_o3{Td682WbQ z<3Eq8@yJ={835Wyf=92dDTJIXhF-7H1JKzqi2U<W$Fulh=XUIzlKeRra2H9^l5n*B zhPrlu&!9b*I#!QhC{YS;+o$$08Pj%ll((TjY!to$A`<A~lk;+*65_Cs@#Z3JTr2Uq zDr^99JxSQLWRw6fshdFtH*j*tRRirn8;Jcd>ELuP$eptlozk7NX~XSUZ3fqq`mKB* zgo3Erwe@9yu=`>N)7Gm~wtUJCpYlOP(eiU_j|fW&a8u`VvQX<1dnvKg%G=~Pf8=K? zYbT0ir|w$_bVvG(OIEI-uhHb8?V22N5Dy>!LF?=59sK}G*2D$|;y5%-zf-U4gG@#( z<2=sK)!{L}Wd+GsLA>KYmUWJ5_GV1Un&&6481*%vt2~Cbg!x)^*%s5|^~?Yn5cRph z`7V$~l6DfLNjfh<2e1%A7!OzQ`OlFu5s~k^af*U0Ya@x?a68ilS&xr~DktNzbYu<| z8Qq6n@Ix*sE(}}YQqFXKQL8z#q#<eB)-1Scb6>_&=w$mJj!jL`wBZU!@kWEN`!5wd z)`T)UP&@rb_&&=lUg7uLO;g>Z8zaux?|_o#-<y=q=zidM**cEvSy?u66+<umhQvtB z3{#`351L{*K?71@81-34c?Mo8W&rY*aZDJ9p%(;*17FOZe(ml!f642k#vd!X|DB#L z28w=~v9I2*s(;yD!D{|sMIeyIIGgY;RUB|9c=(D+P~y%#S>lW9WDC&gwEVOJE&q<~ z&u?*7@n1Fe7wOn=si<c_Oaqi80Z7~gnK@wxDK^%3`33nQ__ii;(1)|gtRg(YwR>H$ zx_3P@YSc?~o|=_zj?;1_0vUHbs8(J2wFX|a89YrK)OTzR<QLCA``1j{g&Bs3_?CCk zPLU1i4XwSn8}$uHUZ_bn01(f>?Ba2LXtqxPa+V~Ov(}Z9ZN4S<*twHHRegi~&L11J z2kUv44>*UhS7W6g0p9=`K^qcDVu%Ox?_Xs(r&$_GNX|a@RAzGT{!_DW%-@MBfTsd0 zvq74q@?ssW7KZY*3{L19Hc0JfR%T1K(Qk6-s8n*#U>N?cO36S6!1Fe$>&~5r7omy7 zt@pQ<-pGCe&L{J>3X=+Y&R`IL*+!+)075(P&Ga%gFqAkSL^y0%_~`8eWqlpE8AO&z zw=s|6j_DeVuq^MSpP=Bd5lnsxqH$#&F$rV3NNHtcpq-Cm;+CT~v;WQ?zXaI%QdloZ zCv$J5C1iT-bmH7c_)9w`hxVk=105D`E~*t1;MIT=N_eJJfBKBsEq)WkR?|Z?jFa^P zvkncXqtNrNfw&?9f4$+)E)Rz=>qesMT?bK|CnEQu;PGutDgs95IuTTv>u8cj^hR3h z+gAy<nNf8*(V${|1aV`|{vV#-=)W)wxa$h>ARr#Z3Pf34;m4poCxciWOXSCka@8xG z3c4PyW$hk>44r(Gj4?jmG?Wnx<b~v{$*mE~FVX;_r$s2qe8>k%|3j=T^_sK|*AK?C z_j}#BJ#M??huPNID$wNV={=xwU;pW11<N}5Mz^Cbw=VUTQto&nW&T-aD}nr_g<JcB zazsSQirf1$Z%jdGCiI!UZ*eay*xh*7-QQ!aw}{9f{1gZ)`Tdu~Iumk}5G2G4P=)c> z^;R4Xw!m)BY<RSKSyoh+RGctIReYIndf4IK4oYYGp0WFPjoTivmwD4UH#z1Ac$xB! zo}Z2s)mlh=fDBXmW1EiTK^P_d(Z{ey8|NpxyVqB{UO{4u+1F}4w5@u#4AX2uCOcZA z14y)8wo!Qkx!rp?R%dU*4^(DB?qS=Ql?=fCEk0IslBcyRP|&KomRaZ}AyWY2iRJxW zVLcV#y*<4UViReLg2z!ABhUTPQ{PHO?#b6zowDn5ED)8+dvf-dGU<yhpa?iYI%VQz z(oD%T-^I)a6AFpuhU+H#w+2THRdW|dF!?M#o^<YPfPT^U*AA$rxCl{*Um2}Hu7S$K zxuik@1UsJHS~`wLXu20QjY-`y*Y6N(?#rH!Fe7bS?r3q*op8TmA%QPs&Er^ux}YmN z?T_I3fIg>84qw#@{zd-LAl1W=GScPwefRTF;(>nQgFf`#E44k0K;O(fW>`n|Jmtxr z$;px5jc+C|^Qlzhyon`FQ#q+S1O6CAQatPz2!8QZZ@)83pu8uwXoJ7_41S+@c!_e7 zpd=HW^)&SLUSOYZ3D&{{n@CeDxqFcIUb<<EGb8#OVIZf@50+EK{P_q?bX^3FXJFwx zX(fR*h_}AuiLDC5vleDP?W~xOkVl_eAQO<D)-hu_rP%P@4aS*eEuAMV^i?OgGy9ox z;38$zx1@A|;>8F4-+@bsk37_hrTZ6%@5u1n9E7^I@b96QydraN(@yrfKEsJm`FbiP zoOUwn+@Ts@2ZEwVAA#YyP5Az1Lc6jk8-Y<Itg(fSYTqx$S3R}Wd4pl~vd^Z)`FJ6j ze<aAT=_gL}m0r$#!tCD6U~Q272rBWgELFU!|KroAsx7S4WV!PR0|bF~p{Fg9Era!B zNXHEW=p^<cqQZ3{S-lj;vo&Yl#2`!`ZlIRzJnMqfM9)eS)~tNpNJLKi&>hqo^j(I@ z<*0hY)&mz*ixwq=@$6`f5>E2VTUoF^XJ0yx5y^IZhdWL7_z10gJ8eAC>cRY_WTryy zt7cE{=;){3i|B~Emb>#I-hF;H9(NLtct;^sK?VBrdS8Av?As%`MSC#EA%{!6ga<lB zR%1&s>d>*D%A_06E=Mdc=;&}&-9r~!Ac_2OoH8WZb!OCc^ylPfh#L*A&kl03Fb~^i zUyvRK)<!K19E!|-CnAdZSTj^Zke_+^kTI<ct7}MF<vemR;0L*w_oGvpn#Gu}G_BaX zA{0AI5tMXqWivIx_q=qsC}da-uA2CZFFBrNmjd}v&~-Ey&SFH6PxeVYq?v*TXbo;` z2xcNgr`@^(I9blM3$9bc>Y$!4qyOav(5y>Hw3t0-w6&ss;Xikr>3qq2+O2b;$(%<? zs&u^zYD`@ezY~cc0zNxLxnBn3JU19qA2wIu*dzYg!RmrxeaQ~<lNRW##qpdi)q=!b zNnB59#M#d(tMBRbqBo!CLr0V*$&Qv5Th_ud`#6+~4G<Y_3J&SWGQ-vLJVWvQ$`qw< zXm`cF0<{D@?kSW$oRa_1rBpLxqi5c$Q%l>^km$V+H*f?;>5){yBG;jA=jIF9>u~`e zMC7Q?h@A%9EQO=Ath&{gvlF36wqPQA4z(x7Twx~b<W{p@TyoF%<k2}GzSp4|ZpN&x zX407RqLf(U*6!JxJw+;gHtVkUEI}?tY=vI=oG;A$*!mGBmv8_omb_v+?JgAvMLDLb zAhf-2eTgDH`OrH0(H?b6q-3+C=%fI9TJUww&bdtO+KcScInN7HIJu=jqROCY;pebv z{A|1*YTQi{DxD^DS=WUr-*#0qW?g^YZ4F1OP{QJQemSbO2VJ3oC2$#@fPo?FG>Q_> zoD5k~!MF!v`Q5}r8eKlah=9xqR_jxT**!vEZpz+rok;pVoh8Bz%3@B`cyjy-V;G+; zZib#{mv7D84As8&iG8oc$ymG+D49uh$`gI3<h<^_Uvzz677@Q$Et6SVb4Hxep6@Cq zo^i%K6^1n~MD)m4sQb5W@z`?y?6Ze0S^i+poY0#iAT{A^yv^GeNRUCnGdup`93heL znC5m5N`(#ElwKl^HHz^k*=?@g@_WR_H!0bbnsUb89;;xSol@ROlOE5KD8BG|o-|we z7b5VT5{oc@29Tf=uver~8LB;Dg*{c#L40pVy_IdT-=)GX{198x9rohGJT769!p?KS zMRIBaplimOrH7d>y>7M0!KR5BVITf3Qts<~+mW73%p1pXI+Bn!e7yLZ|E_Qac5m^i zq-jMm-2;(em%e@Kl7Q2^H?ZLOiCzotiX5!VB}?MH-`>;+U~(bkA9B-cC^;VQeviuR zo7=Z`R{R!JKesl~1TIVcKB0uDnIs@kfjgW2EZVY3<GVYk?7!M-n0d+7V((*EmQ3#9 zF8`N<(3{9x^_U(EG(v}}m)RAkGH*_h+Dw>iLW3JaV*qRq!?5lPc82DfIP7=U-0Bgv zlXj2E^vO?Jde7nh1%~)Zrr$G|=^16A*sdrZ#g?eg<_1s3<#1;h6e;UbFA8|9#8nQ3 zT8%EuBRhN_1qU%12G(*IlhVwl!YS^i6LxP%*$U@19rT6U4hhvJu67pkDLqWU&-gIv zxTeJjTh3<U^t6b~s^}D?uMaHh`@%ab3wb|ksp|Ns^DCF!&vYn#Rs&CQuIK`<jOWtr z-tolO`ep5IHT%Mx1~^#6J$VT;@Aol9<~GE6SB7@9HsY#%5g1Fb&bjb9im3UzkXLa{ zDu^T@sV9ie--{YPHY2ublU#g~7G@$#7-|z-zYH%bU{p_Q-}eG-gp|9cj8XI$hS5^d z3jb_7mf;f%rpm@jTTRA<PLA-SJ$ECxh0|Sls3x_ZVU>!RALR;K11>A6*#Y8^7szNw zIL;Zjgk}ZqZV<V=KYHZoZhSIgas(#TFM6`7c>Non*u3oId@rQ}`Ls0_Lz?Kj7o-=R z{j~FzPbu0rv>Zk`Sp`nTdu&JT3Zfh|4<S7e(!g4RVHu{@CRVH-iXJq%#h1(SpRw4) zKKfKQ251C6>yWmv4uy#kzx_@K;eMQ08yu$?Ud5I!RU0XVir#itL$Dkcf;lLYe~U7_ zE4GvITP)|X?Z@eIC3<4gEi<EZ_e+N|{g|Z@OcIVB>Nw1ig0IT68btnCP%f@-v*Ph0 z;jh?u3`zlvV^lPqh|B!O;eA>8`xA*D68iI^BZV3;(TzJ2B9e7IpMJ*Mwc2Eu>{nzj zL>ZQi(-Z<uA}9Ih?efZA5?x54gE1r9^YVJDF8P?sIfq|cFMEbrA-T-U)$Y@+dnq$S zw^yQE`);-S3*HT*Xevq%9?UDHbJr2oNXzTFvs&xS8_rdndcXCkz#Yq6B9(;}+EroD zX`o@!i>JR-9@D7S{O2?EH$k@qIpqq@Bsm>Q(FcG72La>oP`;c@K~u0OP4>*-amyjU z{53s`hcs659_@P6$?K}?<jPk+LEC;fWy0mn!Hb~kYJ2y7de9DU2G`^M>*l3Y3$Ok% zjrow$zRLKlUd{80GnI$#?vTa=1c{qkxqIR!*W1$9FOMe{H}`umF^GTCZ3~X;jaWv$ zs<(a*SBqqKXTYdREPIt6woh#z+RMN0N3V#x)*X%xUwzALD6o($&(%TloSwFexnZr$ z__V_2SmsKhKeJZ&wJP4WPM#<Qs{Zt13Y16xf#le`=}6F!EiNbE5rf1WMuI|o!CpLS zCKdrpq_+CK-#$eHkp^hMYF{$)xId3z82x;^Y0aoVj+rbHYi4dk5Ssp;ZB|8IKw2xf zg`zu>{OimeCb>)LGd*`0QmJ@CPe3z8)O$nGoHxSL*_)fP9~cwQE}QIq&zi8uG0)a6 z<lVY*0vhAjr>~`y6>P$DJt?HeyP}jl^IsH%COcD0iSc<Ee~P>M&HPGZxx&}SuaS|t z)?feEw}wp<KlDL`@Ki<;n|8qvIE?elJ!rT=i>aA}w0uq{W80-sfQYn0Urzj-F<RNx zF`N9QjG=7KtDZIDUF;N(A9BY}mIRI(5m@tQ7Syb6_QTobgik8!H2ogjkz-j9SP|hH z(iG^a88ye?dc4=?yT6*mOS0Q?okG>N1TL93*N1STG*S}g4eUE%3IrO^4R038N=g{| zyPsz1G-EcjXiDbcshVZj0b90k3C_pda=-^%?Q>jiz|&_8`UZYiN-2nUoG+yN<hMY& z=J2y0HLj+%h;W#3J9SOfbFxpvCU+={2YWFar0dEJZ1*(T4U1(~BsGYK!}lZd-TAbS z0k2)&1}3eE{NE}s)&R4Iq_vvR*6>q4n=EpZ3D;=!2N3pgR6!Im5iS>2mhh`cu^-e1 z=~DyQ<T<Rlhty6AvnF}h$rtyk4nrm`)LdsRG%nIdnFJyUZ+rNjf~p%<IGiuSMDq<+ zXv{D;6pc%JBZVpH{JgnsDH%a?e&0;GhMg$^_7a10{~dZ`^%FCOCfSqz*^+5%NG77) zjR6A&xj%|*qO2<}dv}eL<U236HiMT`*jQ}a7tH%JT@xiUu(eRmMFMr<;g$*NMeCAD z`PUsTlw$nbWUE-jl+ksOPJ!HmauHDL1y}%Ggh`<DFHaTr16iZ5uSDdGlnZb}GaH}G zO>{YakEUC=;@Dyck3)+T@|5#t{Gn#hdT=kCe9ccD%KD0k@q6-!;jRjmFEgva<bp-u z!jrs=n3}I&b9PEg%;5YFPZ*<EBjQ-|lvana;;VggwWo?DUnXnBMt<PIMGsUGepu1U zxWi_&8esyJ;R-G7enP~rVI172W8HkPNXL$aF{NSZEzbra#ThKyqNVX>bXhM0H{5ie z)Vrl+{`Ai>RftK)a|>Y<hYX8dam+AvGx)UduGweS$CqV#?uQr4{@Zs26fgVk{ghdl z=#wK~6Ie6dOM90Xky5TAaS4m$EDT3!rKJXO1#J&(i33;m%HI8acE;$=##YBumS@V= zQhKo$vcGWhiOsd+4eVmMs8;?>X}Y+ui@~akTh1JQw`by2`x5md3!T9S80l3C!|mHq zF2!2UpeY4~6*t!V9g*q>DP4iJ`}=e&o>kn8JFi4-1z!NQmCB8P(o5yN$>+(;r{EbU z2q0}B%i}j!uCYg|L%}kSsS671ywsmJqpxq4H-oA#qwtV&x7?y3%JbW;R8hXX-OnUm z8+E@ALkdnlli*dCwV@5r2{*43+kD?p(Yz{Fxpazz5kT(P>h_^Msej9`<lpgfBd(HX zeIP7^6M`^cfRxGGeB=jejwFGKf&1+gZsNc0dhw3E#4leD?kaVGyk|G8T6+sZA^q-4 z(arh}^ptF=T-c2z2<ez#k5o{V8$i15gGi|d5t%Fu9>2SxtCndcc^NZsgNf=se=d<F z)=rhLBZiK&fsZ?1K?k8p%85(1{@NeTQ`9?UJK|csH}@yARBYAlA@ppD;ud*<sCSNT z>$|_kCAN56sp?|bZ!yUkx%jyy+1c9}3z@Xh7OG>Osj^8?=*>06?W8YHVJ(fZDZ8|6 zk$TwRic<9c0rg{3WrXDr+rdiz5R2ES*stB*$1GXU7n)YRv%Go!DFn00$mf><SF&8f z^8-=uO!Q>6t-JOY^_wLYBTsY}CQtd(v2mHKM*EB>X#=&U*UVo->hN(<d(%^%*TCvB zy+RbYl(3jmYO(Z^mx`7lRLS~s3DlQbr0d>X7{e4lVN16qG$TyH*4roOiO^Hr=-_3s zhVk|v@_J{JYTkWBE3L#ce3(HGPmiweVPo-)m2Wio9nZ-oBCa1yYAwgaGXcvVV%#J9 zu2D;l$`D=$Gd(AN;-B|;gcRN&hdn6cs{E!Fb2f8?X@kNNyK@zY#THj0l5@ip3FvvJ zOy{Y6N*R2x2M0yJa4w{n$xTS|%&Puu{p9(nyt_9j{$jK>8K!y~O}<Qt%8~r?np3aB z5_=`qUH?9$_>;v)frSWp(QK^!aEt!fqw57>p2I(V)O-?|N`XrwnuzZ;wjs+l53!Db z=pLCfM88a0iI=4{#fOx6?babKg!6}6GUvN)581hw8=i+x*Ob@p6+~iG9f#!Y=x%d` zqpf+Y3G5k3KpR6ms0e@J?jJU&oCKgt(I(cHr(#h@GvvbzKQ0k4$t`oeX|I1%P}@Uo zSobhcdq2_*AuR7{2zzSs`8BjFo1B0Hk)w2)6oP?DLeqye7{vK9!bBIGoTq2Y*TP9& z1xj(-X)4eWl};6h;t><Z8?NOnFT~7Y$;f8Kg33OV8*Z~|FP(KnzJ(f*!!x)8MO+0_ zf#qNqFUz{&+i$<nwv=S94d&aqdaGHP9j!MAGRD_RE4g4K6&+}S;#7RWaZb27>|Id$ z(jdkaej4fc(1zi%c<#i}W>u)oAe`^BO1(gmI{w0K@=o+hTLE#-z{N&1&T`TqmlL1c zd=EN}-}X8l%7vdj#E#>ijuKwDyC2TiGnqf)Dy7>c5O2${;tf;yJa+`m)O0^jixvms zqq0vmpY)&|SiKOvg1qD001>n&N=6390Sq<F_%EKIDhi~Wad6Pw;dcA@F?XR#I!B@H zJB?u3-Y^9uzmIH4lSeK9lO>c+s^CoktYGW9=(t6j78NJs_2c8m!v((i_tp(Kx?y1K zut{2cMX1*;6e!n&8sQaM$|5xNO3yu)u<KS7Kci7v-T>p{4XoK%#y*GPr-@Th@iuH% zU2CB+@uw*YZMQ-`n)YTt=`44MzuQ`>P7rDV_dwH6*3R>jOv$Dh$65Nki`A)yf$1Pn ziGCfCm0diqoxz(LfOCC9Yl%)x-XmsPy5)1hmE0!Yg~Pay7U0{Be~kV+rH-i=GSM4y zxJVeXXVDjGpkb^QFXEsftFn2|Pe64%cNx`oMW!fR^^~(B3bPLwy-|=5_0X<#!jo7` zVBAAHlV8RB4E7@#IO7#~#^dnI2&CbI7Ve6FO{_NLyhrJw_cYW(%kVgq4v85HO>5R^ z%|}I2zUD<4WqM6|oI?^{=BN*i<sVY#Wh6G;MZLF6E<UCd^X8&GzV@JXNY~(*Ug13f zPV6vI{fpH64d=WazegR<cwB-AIHoDgvy>qF#Bdt}wqYuLpr|6(F=&MugC%Z!S0X{l zqSj}k7$S!#!#%Y1RK2GPLC<ylDC=_@4?h07cwHa4`t5Tt7p@NMxP0ar8>qu9hAe{W zX@T(FwYSi;{#%*kO~YsLmn_a6vQOIg`UU8fwo<+)!6@PJhx!nstwC6b3`KZKX|^RR z)7n|3mO!qJ($-!19%a5ghj)E#uyAawPKn$oa`cy7P=3w{-NNOBvai?at=^T(RZm^k z6$*k%1BeY3hh>C<vQw%B&D{zd#HuCzSS=x)3LDu)0*_YZO?Gqj!b5p*jyd4L2+rqU z3QQ`yM(Eu1<MOI>mUzOHGV`$a$g)GdW<$02Fxo=(_ZR2kyHt&qxypM1dGkU)_C!{i z<7=^(8t>!G<~1iPmb@T^$7IhZy(EirX?szdH|O`5>HxS&HR(gTE;0Jh#VS<yWHnm` zLH5m2^SlY`omta2dz~!?RMWkKzJccO*aRwkTU;99+Id#f7Jeu6-6rjE>*lLgkIUFq zf++R3cbZfmeG1~3-7KCri3vSfb=8##Yi>mF_@B(a>@b`iCyqSB%?s;tH)1~xCEMwj z*=<n^9=upVMQ`?!=Mo-Vr$m5Hv1_%phO@xho(lXnQBU<(=w}Kjd^;zL!2UM1;5ADL z9x&GU@{^GDz7~m-aXI4gLAU<=kh1xNgbfxo;7gnK3eIawSBdGVk~=R#o$7zW6M-)F zQ=M&2K~e4WsnF9jn?0UHQi(*d6(;dJo^|qEx3>LG9^p1$-TFF@+pr*Xf|#Z4usJ%9 z?E)(kD#I$QOS0};O_f*60oV}WT+!j4?Ul7<Q}h?9??I5oE{#tMjCxy24w+9qPB#-d z&oP?OgxA{g?klVdm5*_Ge%~OO;LP(Jn`BB1WnF>RqY0w7HY#LtI9e8+Q(t{KDYqbE zI1fK*fB$jyF}89WzJsWP<nHL}k)-#*#=de;!?T)+AVk(l`-gd9Ot`as_H<n=`3P*t zEi1q+p+Pv{DZ3Hd^VNq*pH6F?l^=4_0Jbr5seG5^%uv4~GogpBzKY+#h$Cg5-=!7W zT4M2Go(fZCSbD<8_G?9AIGg=Y2^xE0iR<7mW#g-!`o-64)h>oP2J_syDm@x%H^uE) zseGU1V?%=uHt5{THrrRCszYoIt6Bw4fQugsOlc%nZk-tFHx%T8YT3<YA+n*_*l8kz z&l`ijaVX{&e#6XBdtUB<GPeI4izgVC!G+Vxlz2qKVp5<~$HxodsBAG0%Uc5#PnciF zVDyEoaC^T+to1YBu~hze!Q!w03T^o0{6M&BqkoEBHSr#<w2kCRkDkIyp0Kvw9F-)p zQ3qn}R}bc=@)n&vWSG8jb0=z*_RS_%l*$M2Cwy}4|1?)*B(eB<Kz<FZX1*SybU@>C zMF05xFE}g<m00|yg*9fB7x;9_poHTiJ{uMYu(nM$%=3l>(dq;x_-{jDU6@P3zrX(e z;t&<-u4t(&Junk_WTE}$z?L)CHO#e^K~Cq)oWqyWi4BTh$Qy0vkq5I`GEusdh(;_X z7YNhGd33F*Pb+f0!4CD^)Tc6tGY!G2bVk_{>9!*d4`)j<ux7e`1PsiMGY-j=GRG?g z3}*g=9%g)qVxa{>8XEbv$6K=qX=qm2r|dqya&<{U(c*xWbeGQfLUQw%*ORdvs8EVF zWF~D(M~@#srCm_zrS2Zr8I~~YcG3u&BYOU@AKibzF3or&@WEk8VIxTfZP(^FGfh8` zVxPl;iEjK}S`yWG;M|eCT24g)6HW)iU&;{blv^Bvi_bL@j{SGP50;piQ=_a+L5W?u zFbbK3eD^-`=*+gw9>JF+RVZ&)J*~3+`MO965I}0i1B`<XcP+kepTMzo(%H`f+toaU zXNm)m&i)d5q(%P?=<>#b0iN&+G*}!JY3_fUTSn%;n){n-08bab71`SV{vm(D<0C%6 z`_|F>GxJ}U`#(<W-|yT_0>2aS!5Qfe^N-LuHPZhUGdNV@AJ9nTq}3K199FGMe*Awm z+WmiQhu$;U0FhQh^Uc-n4j_G;faz*8rGSlI@K<H#+7>^|1_i!}_M-ZYFGz~U327f5 zN7)FhQ0Xr3uzsEYrD;O#3^0#+z=V;vT>>&;2h6+h#y9}LU<HUKCqMz|ATEJ6XS*60 zd}A-p00dzgP+~N#337AeWrj1r19ztu3100eK3O3_n${XjAHBGtj}j)za68>w=ztwP z|JSw1x<(rIim7%m|L;mBz@#B<tVOO4e_A0a4&br-b#tslxAq)qy$QIJ@(;lFe;N;X zup(iz8sM83poFsLR#;SRhxDVvq;`nb0#pyut9Jg6bubaB9<Y<M`pe4)Lz4K8NPv#g zqVy@}cOuh~&o38dp~8kPz~>Sv_awthkfpV?24<Bz;8^ga)F73>1Xc?c2o@FC-;PZm z5_bci!X@AZ`)e<pPUVW}U;93EAFV#Oy(hf*&kp84n(Uj<Tb(_?9BPglxce4^oQ@sv zjWe*nHQYl%x{|k9@`JpU8YKGzU^#ABlqfLZw*vm^JD+nR?LZ!bW34B+C{DB<hcB_b zkmOgAj%&BJ+jf;zH$xJni_;j1`Ro9|!x_+N#sZ1^x_lnM@;(Xt#@IA)!CwGI+Y<yG zz(JiTJQvu?2LfQ)zT&4+uCS2K7icKM-vBVX^u6vElXf-geSg38*B5(2J|H^a5%k4b zKoDc+@NHC#T3XN3>|j#>-8lir#doJ72Yoz3!h-n1d*AfZ-nt_?+U#6$!U-J#2WSrn zhh%CyV0&ldkE9X9x>TCm*WCb~HVq&royXBcT>u{10=OXASiTbN39#dAm{?~T0LcLl zFA>^6fcF<~ZU-8S<&)}A&3`qaKhN^L81b=U?HNE&=s@~sb6_FGmBX?fhR1o%yR!?M z0IT_p_hgyC8EiQyZx{NE>lM;&7%yrV*#3_!%sc@egyVS&71nc2`q-Xvekruo?`H8# zeo9Y+BZ^AL%S;z^w8LSqR6f;-I^+*|EB1E@dJ~Vd=nhqn`9CVhh{P?9ewI(ktz}=+ z^ES)cn_UQhMhfk$!F-5k^VxoME&YVQ;4(H|0i>7nPX&JMV;cm2Mj=~Cmt0jEGRDFK z<R}oQT?3TN@8rG6a3=4Lq74uA-&pHsN}o@YQZpZ4Kl?wglCqG`lhrgHwhCG<1OE@e zTr$)P=@8lQJJnpGoy|-P82tjTLxv+vDjRWx!X98$^62qq-`#+lgHPsrVM)^l*;|_y zo3AE=84Emk2f+264_kKwQzv)J<8HHKMv_w535#1SP!Q+s6dL}$adt`2X(TRu(RiMv zP5g~j!pk6w```bR%_&TApPK-WT&G6YBfHf!`$)<scDa89fdFoA0brOP7rC7iM=D0H zKYg&WgQwH%4kF{|kuH-~ofIYxU@6{locs_p6+G*z8{nZheYTppD+=h$d5<1@0!+De zml)zs)!Fx6%P~Ool#mg}KcytNp1Xr|v|L|$v(x68%T`w+eO`w=&>i66TNwRYcKyeb ze@Re$eiIJaUHnG;9KAopi3UZZ6T7*r06IF|w@#Twfi46Lum08EfJt{L8r6~>Sk0FZ z91p5s@XtFYe{1721%OPXRW~X8xn`>;(%|25Oq(A#SNELk&dpH+k9w=2tfx=ATEs&a zVjYlhTT5w=i_YhEuEY%>DaWQ$ybpf#@(@{V1N*@tib9pS;A%v0twB(2<{M?FIW_eI zNT-2;KJAWb)S<ms;-MHY>cc}V`Mca?tzc#Sh@UgfU)d>41`7vY?&)C+JbYwE6u-$8 z`tdDKw7zoNl)=Am_WR20KETPGSHAwEZYc*-U{@k{d@P?sa<*hpJ%~<f02DzT;8*Q@ zA0Q3;t;S3B7yj@Uo7JPml)!Wa-2upuI53`%Xyc5Lr?T(klExy>EIdp<^Z>_im8fZq z?G|I)1{%wRz!9)u{qt7+kDBkuq+A#?QoLjj9P?XLeOtnpZzhEBPno|w3Z07{a@!?v z#a#b*|8+e&`g3tY0ulm*WQ$@23YoZgsyDiF=x~GgNAE*MZ2+b|h_@byuuivdiko?- z%J(E`&e(Vs?y@3Q(c71Du|t2G=-!_%pJXEMz2J$}g&DJFDiz^o6T%s2FTDSHEvDWw zjP2yL{UwcJD}M`xMVNkXNW$lF<U)nuUw{9i9nD79=K^QiB$>P-q_$z}E_U>-KVIVZ znZ#or$7Jd`ajX-4YYRQQhrxnAoa@G3y81vI1^FV-LbLJmxq#RYJ}rA({i5RS-}^Mq zNMQXGn-IV3Re_42u*vRhqutJQ-S`e`FO$y$$#240dM+nB+E<(yX0cDMwwV9gWIM&} zY29QuT=`(ML6vDQn{kh{bQHB`e{2hEZk`^+c1I>v(D6M5zf~HB&Ro4?;a8o;Hv<_W ztoEw|qxaTDH<EIa-`3g59BqtJPjPAbM2Dqt%}fCDlX8b$(29UC-wc%0VGv^mtJ8ee z2t|1=SC1C1m+FB1_c4j1lqq<hP?jkquf+X%9&TZ`^Z5uIJ$SBs0`4GHkrx-o+pGt_ z`{PJhR9=Ap^T4*tVF-f)jk1q#8(l|Dt~>#!y<9OU`V-sSUCs0XdiFK}W5mk$7|B#V z%ZGphS1q#xt;3i+=>b6@+Fq$IK3vH3uTzRVs~^y8nr|zqOuG$*J?4|Cu=w{`y-$#T ze;xFu_emeVie^+u{qBp7L*+49s_(ZoUM30Ncra7%80UkEDR_J~b;tNDO~BTm*4PVl z5&I`|UUEPY7jWN9;PG@YI!b3;TX3$i5ZM=ln163N3vKI!n#yi4%=ceS=o>9|`-F|# zG#faha-LuiW`k1T!)Me(a&%hh7K4F_+51(qV)=0Wr`_^*LV&e?eK(LcL3JNFxVcmK zJd`8`RO9D(w4!XiNgPQ4vwLwM9^b*l$*G*kuEoe}{wuyU0B2KhF&pph;}^e*wKthT zVvOrP2m$!M(wk(oI*`5(n5FfyNXU=3EzuXid0nQ-{fvrXxjRl8IZD!O_H5jmZPe=c zS?{<hcq~22AIAmgL~i#}8&drmi;4SwnD~j0&4!a_-p2mxYW~%{|Kr<dPwx#p8wR5X zxnEy39bYsS@-1xhJR2dTms+z54&LJg^Y7V4w_b8xcRCP3q)f=;vcH^~FYbdP7*E~G z_-uquGVn7&i2fzPorUx}WyD5p_D5g`1z)}bee63B<1}1lu0By~o0AwohX^BMj|Dr` zBgfJB02mo3foz^$z*cU5snf~Jo+A*yIa{UevaK)~Og!G6>P>rM|BC974!oA_ZLM-B z8T%KPj~kTSdGaYLYDI4tET^hRhtL80pL3^+Ahawhu@ZZ}zH5k|&FtTo6tpJT9N`BC zO}@YH>$e2K6${6E$Nnu-KZ)Id`R-`gL5wtwZ9B7e`MVH{|Hao^Kt;K}U!a00Au)7F zHv-b#A&p3POE(A%-3^igl7d5bNC`*`A|Wl^-3;AuKh8ON&hP%$y=%E#vv3%{dE?2w z_cK$cXyASLDh&LQ%~T2)Hy36!LQOy$BrXh&?C`1uZr4bIlj&(C)YtZTU$)3My#`0I z6<Xu)`$$|yHAl{CrA+?3DoKh~amQ0AD;w^#DQZ>;63e4utj>MosTvD>nB`P;9+Q5P z+9>%DDgQf}V)c@Ig94f8QU_2RX4)s)scMz#x3Z^FU2Lh3o}rQg(IKv9yp+5r0(~@X zi^~A%Ketj;oWlPa^qoeL-Xdu4A5#d21xxbRRZ;;{o$XApi1W#G3Onq5k9qEiWa8#& zg7%zSjYakvcD*-K-xq;R2eJND{GQSgJ5($GJLnqQTv9u6zxf7;4%EnBc><;uSY>w1 zW<9oe9D7)?TG6t1!;Brc5}kmx?a*p8KL*$uDV;CYc@%Jt<aL<bkKnBU5H;s(#-n!D z_zzWuS3tBITU5`S`ia<^yq2`K*%%1+9U_<5Bd|Xir9oL9xn=*h(f*GPc$Ocrm;Ct_ z;p*`ALb7aQv*9^XOkG$tBc=^a^>ywC20{>{_CR}#5Z1Jp`uw=qY_qc-@YKZNlUX3H z82v`)SN037cHA`7)RGgJVVvw7CNGX~UZ}~`m~1x9ogFMxNPO5kojU)jBjUcF;ThR9 zZJ}f{-`sezJEgi(kb8SJSx9TB<`V>p<}FBhsm~t9n|wA|_Fl65|6Z6sKanI~)S&Jf zaseKczAIjeyi3>tO`Me0C@^g0A?sLjM3t6SP(&5TW-|?KTjA6!*TXzACJ-`tPbAUb zl?qTSCTfv3uH=&FbFv_?v6DQC{mns<`%(&c)+(IkeDSds-&@ayi+JTzG|Cs^&))4$ zvWXu@Z`cQuDEwKh|N8<-x^2(VYn5G`0Xm$D1j(0D=tXcC2KMSBb$7Ky7<vMODy=l} zPyMfMvU}5CNUp2kV+Vm_*ORZ9-jUb+?(uvPFl#R24cT%~hqu1r&Ul$RC`2@paBJyS zCrA8ASzr2vqERrnIJ66@ejyqToMFq_W}h!`Hxj=c)!*LnKYz<ci$W+Fv<Px=4Dz&M zBOavK;f*nB8UWh)j!KaV%`IR+r9&~u%1Lum)k&Y`RJ_|7;U5(=ujxiTOug7#?uueJ z?m&o54~X~}7#IjK|Ctsj`$2CCFp*#Sfpyk67Au6>9;XVTWYvP$eXKzGm|t-WzF6wU z5OF=&pY2zX@09ESJ`I24D3Ikc7pdeW0ANR@l^SmAF&Wbjo;v8q@&B=hf42AGg{TVc zqFX}?iJU^0vMQb+?Q>4cPw<64KZHiuz6v(0$0%kAYFpTm0m1J8D@M)<kS=dWpeT>3 zUIXc%*<hB?5s<9+0qGtMEqC$pA>ewGftzF93XF8zvOQtcEXP4AXsx?E-ssz%s`+Ju zC$>*<0}L358mY6>#f@6R+>R&%Ts*()Hbk%;UE*vBH_DeX>qX3O|MWZ1`4jQTkXysU zX(W3oTO9kmXVR`NETBhFg07;Xp}A@!AAMldeEk|QQ1Eo2UDDl0t36b7N?A#T%ibm( z^gz_X1`HVdJY3YfV(Ppxz`VKeo<xASN=Eq{V8qTHIjZy0e(iAdsRW#kPeVkh-kL?) zJtoZjyVhzK;sk#=vI1%-K4wOL-~E7quEIZO;ZF1sRlN#CCWi_F8xhv7eoHj5kj|=d zH>6Y-|NA?TJ7I_O#B(~CnjOfr)g#a+TqV=V{|WG5Byf?CR@0t@KVNY<Ry2uCcBR6q z^yBZ3_`l2Gk6@Dh=+(%iML*G>U;Mu>uvmc)N4{9C{Ex@@&$<2EjZ`VMeV*Dg{YF?C z@c;h*I*`EFv6=n<esJ4s@}@*-73wdltNgzm&fh0Xv>C+Ov00{DPYu{7AQ;4E*)z)f z<EQTA$$_8%SSShx)%>y7V5(FV>eGeef#g3y*k5Ncm;6xxPVVN<be<;|99AQc_)p}* z#nh3BeXsvHv!cXU4L;X(iy=FJZJ|~#R)ZfNQ_V?oCv^hnYT^Fx6SesvM4!_q^VrYE z0q%O|@lQX#2C0AVa29r(yoNVy8TT9yu=lRS#2>VJBhrZr8^r&8&%^VBCJ@NuIsm4? zOW4Jyf3K0K0`g)O{5f7jH!F+T=NE~TR%*cwzis|M3)Z%Q0BbW54i}RP7~2TfCjaO8 zsIA}|>f3}u8yCXmnDS)OAT0Q9{|V}WUtZ4g_mF8n0_JL68KaIgh+vfdK22C0aI?Cp z*QnPmVPAz+sa>T*xBe{hKim1bO|TZ~`Kt8Kp&^&Wf}I!yQCcN53r<@74mbZwFTxGs z!A9+fq@<kx{y3Z&zF~s(oFx92SUe{?|E%=?uE(M({P*-u!O~Q_Y>keNe~-qZA^gBO z@&3LLeZo-!#h?7;|GbbH0j>b;*685C|L*+_$R9t9@D5Le*{JN#SCS3zFE}U0kxlIQ z)h7HuA)Y8a<)VEmFhrR${m+KQAt6h;VTi|bVrDtIMf}fUz6lY1i@|s|f>@XM`{(3K z|13*~P?#;@|DK)yT1!!4&?gxp#5nCI|3B~PpaGJprL5<5(Z4_b&+`9yL5_~}hC1f) zkJ3Nk_n&|I^8$FNPcmtagJ`<{IjVn_<DVBGM1;WQPv{zA|L%;hlF{Y&t!l@g?#?hM zdZWed=Xg<ZIuPJJGrrbxHr;y^sTREwcX&DTpWQr^BX27Plv55pQMCAwB^4Lvg$BRn z|A-m{_%&;QOuzH>nH@4Ra(w?s4rzT%m%p!|B)Q}Ejq#<qz2Q{z`8m>cswn)O_+qOG zhJ3gAEsaGoys*Pj$TNIuAUVLo!J!Ta2uNVkW=BS<q}JJ4=>=CTN1}}WIW#6g{ygUl z#P(#*E&R>?Y%ettJdO<Z&mx5pl7JtvHXr}H5{qe~&1m)A>1&j)B4vPx?CngQ9TpMM zc2kG~&7Y$d0H*Y(I6EPap}Qy@-#~C=UP*iXLgJtzEGtpI9$j~3U63q(#buL;)fiNn zCB%`>L~fN}p-8Z2%=q_{VNnP0o>O<h(t*rU7YNVkz0UVP0P*EtNz1QdbroP*vsTy% zz<b$zvzjNL(o|XkyrYQ>zP#pFskZ9*M+))%<W_=lLDTQ3+O?MPF4zr<zqbk$h5!mm zl7f$j5LIc)XNaTCXXFX>sS0*(AvMuL#i0A^OUTS3EYBvsyE@q#Y4&g-1m?6ol(n5# zzM}zLA881XCsn`g!74KR)(WI&wBv>Kb~75LoIrx5>%7)W1Ngj?hVqAG3W)QFFDbSk zs!m5heWn+vk`QkJMQQg^myqA*w9OCMD1nv;nVJ?}b~`N}(aNOho#{Nj0S24J53Gmv zAdklmSB<X)jO2^BR)E#a{%-RP;&jY&o?alOG6OQ?ks1pn4<P0tx%O^M;Bhc0QZ0D@ zz;GS`%A#c!KnaFa(`gxsOvq)OL?wb?5Do$PE@A%b0cG?Mc%yul`LlP?%x%|(jwhSY zS^4*OFKZH*ZMb{lge7d%vCC&mCd%dB7{x*4KD^LtnrcJHqEpJou_0pa`M{C#y438< zN%qeQXNhJ+KCICPU?^81zSV_!_zh6BJObJaO1&v86&%JU^a4yk8VT@hvkMy{?pN_y z44CM<!8Yi`yl)<=4Kwu)DL_Ujztj<;Ubzc|u?Q@~4{;bU@rMQ=f`5EKEsYebGagD& zyV}=$-CJBV!VOrmioC*msaI&%8LjhOu*dYsM7z>RY-=bdsMdB$#UT)wvc?lI>Af{V z<HcS6Kc?>yas&C${mNan)eh~)lb_Vu^-h_nglv*7r<>Cf+k$%16W4wwYg5&-T~NYA z^B-4=J8PW*Wc+gSAJ{*rm1}9IaoSRv$$c0;!KPFCQCShzGcYGWa@m{wl5x&(|0SQx z>R2t$yobcu-onNt8BUVk(RvTnpvZM|(hF@loqC78Nee^SblNfnB9Wdf$c}Ek!-wG& z>AtF!?vp77rG3GXMjwl!H|2p;2mOs4X1%oxSAv1iu_6`ubPYR*_Gj}ni;K;r>USPm zNYz!H-EwEPQ)__Znodryx3|{5UD#v6_DiLw@6$@|*M@k0*gk@OR<gVwdjBK}|Hmf` zMA^gKE=52(YPMSWsW&^hUfNVD>=eOjA+Kc$wVv~K|JJ}^s>VU7!DkYjJB58DK7$Xr zem=MMW0>mwEg^?_0@1Jilry^-`Q9W3k}bX8en$xj`cWoQ3j!2U-YE48xbHXEJ`Y`- zLA$S_(6G9@xikX`H1P3NK$Lm}O!?bEgr}DLl|Umem&R$O29p#5W}hT`1Jw}z=mi7P z(CJRo)7}q^fvMS#pQ3`oKOka|)>=djdy?*$BO2s^f+(gbg&CmzK>1e`nB*p$`KdQi z@JxzYDN9cRGef}r^;0w=Y8ttuHy9ehjFz(vRYHstvVRQzUoQly{WoIfyxdD<Q0UN* zoMnPsLg#u@%E)nhlT)6hy!=s(+qc@56U2VhhZ(q$ru6MX?L9GHZpYH&Uu1C~N;G;y ze?ET;i)(*DynKm(M?gSdrW+cOqgiec&-ZNoM;i-bPa%b&d<k9|Cr0o%^GuzVxFH&Y z)~8R4d~H+Yy}qol$GDtiMc3gFr4$3-Tf2{<izGKoMhq$q;dOA!=HpD-dB0T4R)JH+ z?yw|C$m5i;`XgDQSiNYSew@``#uEk;Lq<k((sl^)M5DGi%Wz(u#MG{Q8!*0*H|m%3 zgZN347K1|-qki?f2B9LAf}_HP9{7ZwQKb+vE3Im<th6?$T$kIS$Y<8i=o^z>^&50D zJ|?pB>&f^q#(x~%B60vPw(K(;dU6I8NI1C+rLfgNhOvW|V$eqaM=GH1r78wovg#Ls z`#`bCU1D_>C>;u3ZGPtOCy5}CGR#*X%tS(&xrn_36cxIPJAutCpkxkKCJ6muN-_@# zXV_+ZsFR#NMRL*r3RJ~il;hiVb~CGhYD7}Sw>ur+HajQ*SrtU9%H#;BAoK$B8<**8 zfJs}^n&DlXSm7A(U^stpGwec&9;LaIHM9~BYzzZR|GfZt-Xh`F-s;NO0bFN01+g5? zo#yf8NlaKef4V`;QlV1tde3PBbCi%JrrI1WT^;Y+H?XBQ(6AJI*@;gGjN+ub1WcD1 zG#s;){=M1X9{7SUprbv+>^!S-0~Ks$@YPLG?gKq;yB8+>f~t~WUP}lo%3x2+{Vpz2 zau_;Uf)2*7g!`5wkvYQ>bLPv{W2My!SHGTVG@G@%;&U5MqiRuULK$Ay_1e-qn-3X$ z?%yf!?$|d{SmSFw(L65N!%lfOL_~gG$da%u7U@*D3C-zOiN7M`cP?C`_-gQKgh92y z@+!<nIBB-gdB^iZr26U?9>c^QRk|>2S+t-qYe8zSv;Fv+%cH)J92OZRzl4bnru@)v zsQgOrB>3Goi7B#65W*qMS(cc_DVSkYJ3RaN3av;_w2;AP92-xsW4dAUK3;iR!w}c( z^+=3=LI*)Qpe~``>fLB0!xPN=)%Yt=F5|zM%Od^7FNre=qz|2DAr_W^r{+R)&>YQI zWCTf4Bs?@IUsRLhS%#t-JNdvIeTR;2pa@DJeq&&^aEb(Z7kB9X=T>4q=O0_61@Y7{ z%2yemfW&p@3<!mukfFAp=g9!2Scy|#E_j9)67-Kw;BJFuwq;4}R=@eNHmX@#7Cy|= z1cDw21>!^b^I}MboC4(U&W&)xZ8uFFynfM)_L1Gp8L0)#+HrtQo7(vdBN$oCG6rID z!QA=m`3>pPllKLo_X41G1PTcwFdQBTw79j@FAeYeirj8HI-&pPDG8RRynV=gxRW1z z89}g>N`B(d423hts%LcHajkzTp|kcmCBy1&-byl}K3GXWsV|(#@QU*zwPG=<^X0Th zqZ8w<nakTt(<T<Pqp<`^4>>cW<f^%Esde>cbEGP?4NZ873_fmrewPr`)WvTsl%~C% z_}vnc>0gb?g+I4_#t8(1gRNP-7_Xzx-S7F&I!!Un$=1t(`SuKwDyUC*C>fU94H^jW ze4kO&xM>@FCV<C?Rd(3@wAO{v8Ru)d)|-^*MD=}(b{c#%CfgG)6b7t1`dE-wQTJ<N zZ0u>&Eu%`C^OvQ?n#`g7*>wnd?rxX8X6;Bks6V@p)9LEmZgqsduQKE4$t-@{j>yRx zUWi6d`LdSC{G{_vpHR>WQ)8)Z=`oJ1KAg$lZ4Q53c(MJnlY<3A@}v%!qfK%+Vq{Nj z^A~`9Dt*rpDqS>3?nV@JPGj;u4RPZkq6DhXdf(@Qr4y=-0VOhZ{m|gx&5@genEF^C zv(>05xV=6XILbvu;A7Emss)Pjo$;h|xMM+giW$6Y;+U}9!0r+{j|_~^p=VA@fPh0B z5DINqW&tH!31DJ96A&x83=G&|h2z7+9yyFaB0Qgcmw#+hr2_sjUZ%^VhsLZ^JG3Cx zd{GGW8fK8OJ4m2th;U$nQ5o_oEP^rDy0?Q#gJ$QxcXq)y4JXf1uA60>D>gfi%x9{O zy2q#3ZFN%5(|Ee2c@A_3V-f=!<$CTzxspsR&R*3M)OQQ1fBni?bQl<&J}Qk@k-5s9 zUEwCEf57E&(vEL-QtG}oaVjEbd(M)-msMw5xJ$35zt5;4Pg-%Qq7b!mh!;TF{wnEl zvp7Y9IC--#6+jei93Q&CWlZVI>q|jMtQS{6dkHF)_^K@0ezO!Z0Dsw;<uPD*alrRv z+3Y%H#>QtILr{oKZ}z!>`(1|cL@KyopxdDNo$~(t*XKEk;P2vJ>kcN%m%96%x*~BB zFQf1_S-rr&xcy2SJtNX?%`Y!22VLJTeyp)L@qoDfoHo}?k`HF9?8YlI4xxc*QGdA# zT)K6$nf+9y8;?Wf`@7)+B7wJmHG<2iQAl7Ntb${Ypt5^B&N@5-^a`nv(9WDQS`rpB zLvyxC1l(#ZMqOt!2s&rFexPPmfONkBb1+ZExjfi7AB$5p%P#oc`y>+Y(M-cBO#xN% zSM-m4f<A4@W+5T!B0s}p8p2qvphRb&bxPy1Nsi<o=vAT$xS;kwzzQ{{dTkHDCrnk_ z`<{~)Trm5)^OkP_@3Q7at|jaIbl4vC%sV#urG7Ds>|znJGS(8eMmaF}f(xkK!Pr6< zf@KqFt$5LEpL8x#K#kdXOfSlfa(QM2sSu<UPz`9omw_qxu<cM$)K2*rr<LzT(t^w3 zVxo3HBaF8KCzzt`83q_asfJ{Nx8jb%?Rx{p)l;rx1NU`4BW0;D0&p3b!jMl67y6Ch z!(2f?=i><IKldatsJ;a{LQQ1faKV>vQKLZ>g!6k~;~?Iii`&l2pn$!r(;Y4}7B86d zvkf@Ab_W6j+8m!sKvb?+TI4DQUp@7cJurIuYB5}RsX35sJ9vU2nKyee2ou4Qj&vM! zgb?a-1~j#;31Ltcp!rejuwW2&YARCx5!jW!hyE9b#Xu5Z#cjZ0K<rfLE_@`}4O2lA z=Rw83TgqtnB8yh0D_4%TZe#UnE)`FGLWB&KGnxu5a^BjWa-4D})_QI~v%rm4erdp- z-)HXOnHBXR-(j{zuSMpZbdH#DO<LU&IOoMzRSV##<T~gZ)6rxMY$OOP5)33`QAW(% zbu?#D?MSEy@0dy-SK*HW0m(ievm;Nhf7N^kyB9VOW6^0SRBNrMRx8s}zaRWz-*q0m zH(#$C)|hTiAO@Px_`cXSywr%EEV3mew%c!}L9C3LS??8`)*R2wVbRMJ7E79}TA;*7 z8yaXq4;{woQ7r_A6CMmdg*->Zi4JXN^$4#vPa@k6kny~BE3}<&(te*UNNRjUGl~bc z50rS)Ctqj%p}2|jI#;L8qe-!W;xJ!PnI!CXk$dmjYN>iz_<QEky_41<W!IdUF;J%y z#iDWC>y~wPy&*uJs{2Lh$P%F<BQu8{hqKlz&(HWyUdP6yJ=n<pl?vy8Hhl=9)jI^0 zQDrF84ba&?32+<EeMPIC0vp=~`a2D^KwZ74FmfrA7R*n&e&`r8SZlR(UxVsiY4=!S z4*=96XTqLN*aIk)T4BhwIQ6SWOBbLFzo#yfBOaobG*xSrnD3R)ZSbhKGtK}>m=`Y_ z7+tQ7u49b&LcJJr_<HZM@in}Y;v*AcD1W#SC~1*v&lX6of2CkHXiHCq1CmEpsi-%2 z-aykc5cwxeKg=I|0W-$s`1ytv>@V?&V}T+Gt(^$~OYx79EbIW?#-hz|pN7Lw0>t5R zrEK9B?<h#@f)~L+aNn&({mKI*>a_CyfD-i^2N38rojvKGhYEuyDT9%&!kdAq)4xDu zze+SG7I;qF0lw4=9dRu|$3_28l41D!+aL-%5O++Da4>0mC%T{>oANABW_&`r4!UJ+ zB<YBVCgxM|^CRC4!1R4gfhC~@l|T>HbnH4{hl)YTf@C5a1~G&$K1Kcli#?_QcLXDE z)1bmVUuJ+xKxsn65W1kA^gQy(Ohm;`0`~zpOx`yipt!B^wBcocAFCe5IvnB#A<L5E z08AiEs{rUTlmL=i&wFWs&PE`<osoY$T4B9*jd?HDeMMW)LXr)EM>X`G5vd+ND-=%a zvjNhU(IYlICsj5ktc@@!_<4|4<+=dhJ7<ev2^DH38X+C@s^G|4cCR&pscMHj&eCy> z;ty8z*YEA)8RUf%v&uqsI|oK}J0@8@c5?<2g4e=+{?-EE@iLyO^!m6Ka@B}l75k>} zLmaaysntSl1x}x#7<{Q8z0FNCob&p!^3OZ#J{B66s|<FhR@}rE1Er~}L9#$@aZ9hW zcphrQ_qoo?vtrs!_K~Ht?0xFE8dK-8<)u%`ZaLO^PoEu)V3Wze@4qy=I;vob?SG#j zU{hH-)2OyyM#Pem5v+E@eQwVorJ{RFD)2S76Z?x-)F6$`_t~^$I$dK1!xJ$+XU}?K zUi%QG>d=LW@-Y=s`Wdy(XSO1h->nzk@;Or4B7k_!WYS*=XOH}{9(>i4KvD21yMTrG zL%hiOxUd?_+?zDPA%hu@lM{ofR=+R(w=Nm4kCta;z3!{cda3q^zU^dmS<e_;n!h%b zwGSZyH|^V~<h}LLUvRZ-@&39fVTU*!Tt~v&D&a<A;E>t*+Oz*|<^DEVntn1FcHaIC zvT$*4ko-~q3!^ZNel{`0r_&=(#`*`;R=ZitDRY=Kk;Qnkkukp3?I*v6UcUvUnp&Yz zWxm~XvuqkCl9zEL0@8a{a5|BM!bpBhTAE@z>gm_BT@<>v{BBa!Shl~A<8fR$OBdd_ zl<U;UJ;fklVsZD@CK4KvS&1a&eJ9$bg(?yzhVWg!535U#H&_*7x?CXGc=RLV(&gQS zh)F_I_1WMTeC))rUw1!7;1izk-Yvv3WtaF|2yvXFmY>axE>>21?pg1J9j<>l*my8M zBh-%9Lt>2=XV0BYFGnEA<n3oySu|P>@yGW&v^?hblplpJ6$0;W{kU4wh>K(*r3iDz zO1mLBfMsa(4C#1$1UQTFFeAY@am%(<dN9(L=gop_RoF)+Bp7R8t&np9QWGJzW|B}u zBEi{=Co06T+WUubdU<lVxQK!b9MytAQ&3&048R}C3Y9N1BRU~u8Gs0lvR11m;Ea*x zjX;#4XwUO05rYkpo`L-f;zhl&e`E=Ljr@Ee+^&jgl2OwxfiuAb6;mh;bp_)rdtqRx zhC{x?eA?ZSObE(7kcwgOAr=&ZsE3(>pF$fx!PrA45i1m+=v@v7w1`AN@eZXNgz+=j zF5lab`LGQ`c}T(DpSK5w7bY6MKuXZe<#n=|V{jNQjVcTx0!&>Q2E9yBTNJ_2e7Ga5 zwtH2=2&2;hUXW}l1{n@VZ^;Rr4U3Wi`Z|1Y(L~brX5aXz%ynnHh=;K^fFMG4T|w&u zfEp=gji|<if0D}-Y*>riL2V+`Y5Lfw@J$YU<d866BeZuy+b#hOH%nBjRd;k<{~MTh zNStk~3ravW@BrH+w)ZWF0+3GFS0onAaOiv_1eA&h6fr=H6mhwktj*q?)Ip%oB{KkO zIJkLF2BYrc0?K&~NTL~xY4zR>62A4&uDGG}<Tv$lPku6OxmYUnjH7wVM}A5=+PlHv z@{54~K&{%edmm{8_ku}WR3V$TM&hOhA64u$@g)b1>2&D}0~5owgi}a^`s-MV)3xoG zC>@OfrYEa0<DaPuXl(cSo5hYcm|i~SSHunH0o_M#R8Z4AQ>&^AdfSyxc=qC5i_E+; z|EzEbZXdRWpy4a#&u{iew&5bV*MAy}9l7;0N))u@d-Riehm|ihQ+|*i`ykh4Qz8>7 zJYEV5)@yLqd7nMU607E;A*aj6qiOf-8Qs{*R*p*R4~ZAlVY978*9R=4GELrRan1;I zNZ-T)7;4jS#54$Kb}mk=syE##f0a*UlN1HgORjWyltu_fjgQ??oCMTNU8lV8AnHkH zR?rg{hNhvRDC`%O>?8)QwLAY@o&MQ3T@iL*Q@-|%YuicI{tM#XkB@nuI7{a>Vjrt2 zp|VLAFk>7Oec7mg2I1u~V^UHLFRD$&_NQB0HpB<yffMC(0z;Z#fNG$o;df0jJ8vf^ zI@KhhyC)z~3VIW98u!qt)xj(Q#(Hsk53bd_p6=|ishw^Gg3t507k)bvxP4<mV+yNd zb?Um8MvI920b|%dvxe?FS^2O~uQSk=VGe#b`37ZKC<y~*3ioDBt!>;}zg}o2wtW(v z)2nfd@oY`=(Gs5Db?Qm!cD2Ov5}wtKA;7-7Mp4E$hBM+}GJe-_j$Mi`lgzW5{8LA1 zG*nRtPh-#3DHEtKJ7IkiO@j@VpiCymW!gDU&Pp8qGKt+ECr`TSV9mh77>A{G47r<v zQ?rG<>Y8tk`j(n04;N>F`2e`MOJ)cxOwcoEoQjvNvg-SiH9%{yxYKjVW4o8!T9mpg zP8Iy7YmEGdXnzPIK9mG(A=VrKf@gzUmnHQQXhWoA4<-c{wX32sv0C*5N&Bug5Pcj< zJz9_lCv>P{&kqcQB73pw5gI^X$-$LRaxl!ZH&JJhVgn9PQN>9GMcHbJ4T@QjV#5ui z2`!CjR}n%zByIxzBL!h2!RHj)0gEBXVUC|k=F<Jj`nNDzS74SQOCe8N@1@9J5j7KI z-V>P6&^iQ7A~_8T_oL=kZ#{c|2n`GhB7tW(>O98u2^K|>NN2^&!gO3}M~TO_3jm=6 zwM8QDFY-lF+<#w;u<nP(hk_zkGSOH9eJ_>}6{Q-DF!otF;6-^TFCW_*Y2->GOTV<0 zxCjPY^I#`GvI5fs&76YB+A~4rvK6BCdofTLh2`^Mg6<_AT$cUaP7tQRb4rF7gl3wd z+}Ej}97OE*2D-+BZkV+%CNPfPgmkMn>`oY0M}FeaKuzf^xcj>P7%1f_*vOprFMLZz zWMV^~FZjYlVLy@^a7O9ca(FvfBHCoOaBwu0WIv8n?UhWxKZ1oomi(P-nlIFv>R7f< z_ub|g={DDuNzL7hINy4hY2VkQ=M1=didXI#x$`CEk|RjC_vx^{gU@dV$V{JfuuAsi zCU+MxUc029CUkAPU*=-;5cj3m1bzuFn-^ZNKALk3L(u6A>BB3|$*M6eP0g`*Nt#GU z>Z?r-HLrvIQpJBC+;?F8*{D3B`Whw$P-~9Q;fvG{Ww*>D(qA2i;8*CAd_5lG-{NGo z{UHFI6yBq=dJZH7d3OGyC{E|UC{EQXeJbW888lbL<Ppm0yqMsKLL)v6DOC!3?8lW@ z3(C3R$v6!yAl{9{N<U#$g&>eScc38Rk9eKSa0u){?>8#GT{R6b#V#FRw6VsIl;|6{ z_LBH=sD4*Sb6i}6V^GgkyU2{UZ5KE#%W~-XQANe<bfWn)g5sj0`6Tl5?FUAUWc-;H zdXbxppy+G2jP-UIG;mt3-N4hQAX&6$8@E}u6>}ir44JypDPnB8y_s)Hu&S9(4B_36 zGS;`;Oxkr&-@>Gq+S3#Xp<0y3r5-i!{IX^})_S_Lk~Xq@Uh4VU17${PeRu*BB@BSe z4zSsI4G;NF=BeVxQg~y@L|zgsqsOu!5fS7@80UPK=)R;NuDV@(f`UOKI4S<4Rs?LC zT2a%U{u2oVLt)<;xU7sZ{(N>zKpGiK_cWH-dpFeAXj52l4ir0x${;lp<B@<Em^im+ z{6t9&iItaB;w^;~P&dl~wZ-rla2s84wBjS>81r}|!j2y0(lj?6wgk0V((2S~ywd*O z&yOHt3eqtK2^wEywcp(wE8T8>|K<lc=4UA328Gxx1m0$wh|NnBo4KS&3FU$`OL^fr z7wZBxp+)I#ZO6D|?&eok3$Y7tzKUIh7;O%aJLi_!P1i=mb-h#xs?Ut)*m=n9VVhl1 zFK?1RlfceSzdPPJM%RGR?7`aRJXG-MoVA0vWHk%FuugLZHyML(kJdV&ST5+9D{?b* zDDTusM`hYb0;ZBJ!>79U%*}Jd$ay{21=uV5Y<n`x;yl%xj%=ZC#T&TqXZfXde);JO ziMnV@OlOvDeyd`bur;*w$O~yf(mp<?#FfnqduwVb*!;ry2@@u!MzIkWavkm4z_}JL z>9F}u8(fKPp{k!=8kXGPf)15Dq<cSqS{*--&Le}eJQSTn;<BafHRg)f1XmljfcH<H zljgRbUlQ_Dg(DQ-fL@XnZsfc8YR-JKtM0(goU}rVsGxJuk+_wAs`<<I`|;Q>wgIbf zxapEpOFI_m+hFX5ZwiyQ8+!s2BU{68o-$2i#^3t#%J`#Yh&%-(X_-kO3YmSU?`A%T zq8QKpa`aZ}Qz*W?Y8{;zc2(ein+>*HkL4h_p5Hq)ObvN~TN3V*O_gZ(1e@Mx_P{iA z4B6Ojks>lB-0gaIWpFpW>CSwRhYG^wSKGLV{XxA#M}M&^QhWE%Hi^zX%kkcC<-$BB zeQW3%Xnk!8foRjK@5wNfamffe9!*NXDSU)w2lYI&GX#0hPRWxPV0q7KtKB$eeD%e+ za*X?G!gX6RDClJ$RSVjuhQpE>d+5xriy%0*CM3yNzeWok6(52@VXQk=21>nAQGy^z zR&Q?hW9ryjFw_PL<W0yQ9tl#joseWfq-Htox}qL~y(y(w43dl{Ih#Lc8mgt<WHJ4G zhEA1Xd_>8iFzYKA3hfSU$HpW*0yhTLwbfv<_-3H74J=|t-LkHT*&K<{hb~&<2mTah zifOP`a>2vdyVfgP@m@5;rWJPP9(@V%(tYWh_!OPEaFz{9YS0E^W>c8UAltags9)l; zrq!-Ic+6uFFfwyC)yJ_@h%tZJK+1-x4iFds`MD?`*nE9D<K5Y<9vz%J0%&4XT|p(0 zjE$2mSkTpoANST?H}}&VImDplaN!h;wlmJ^q1jm%L+`Qn-S3;2<~=U&Phr)%2<1pS zC}K#S+{f=kSfpq0DB`sJqX(=<2H#w9pUDrQ9iSCQ)QNzE@29I|w$**5<aERtLR+)z z1jXkR$2eCDNJsi3>2&IQImTJ<6RxbzL=m^{%=B?}?OyG?2$i2fo6oAyA#DH^)a%^p zR5^ume(60PYuhNRGv(Uf!eYdG(QIcN`n=hPg0}Oefe=+XQ`N=l<-MTPpuR9BRRGQ! zr8nGi$+VEyULrpQ2D35fM=HhVMQqK`1Nz{>AE+$Yb6o^6yS#s)>jR+T<hBX<(2;cL zLhOaG;eNprg`3?e2>=H}hVAcv3N-gEi&6>N2%10jS6cO(zmG^Hf4RT#&9KJE?_IxO zn?!1mF_K8=l&Lre*ijTgf+(1Upjk^(Ye@q1m@EHjg#v1OXuWBbNmnf|>WmbLThIih zq;l{xQ3J4J8}_U{!BI@=Pgd|^+7K}<Mh7-@Y=|56GHf$E=kmfxM!5Mjb7ogjKb$KH z`II~kfMMJ4K2ZopI6i64wF60JUdNmTrdOcl@=Z@eWU<l09vxU<*AN*%kVK4lHtep2 z%M(QvkluOP`qR|qslrug-9-jc9J>WQ(&SarRuu17UfDuc9-exic`2RPi?DDo8Iqb> zX=>4V_L1c5AfFKa?t0yDHSs{8w?O3Gm3#O-eGHrR`@=QoU*nBBvnyNzB^MVPb(MA- z{Hz~GgVxe}T1{slD|G6sw^hu)9^+MsVW!}?9d7gKn^&4tbsTNb=g1!y`2HGyafbeJ zT3`6SDm{bWZ*n)%`6H9|r{=R0O(GZEj>C(_TjFj4dyr2%>TYY**<dy8@>So_BA462 z0w#vJ0Dqrs6k;g0%xBf7vHvuA10eF`o`Y$!DVpBrg1&>A85s4k4zr~I28-McnLLY1 z`0V2*g*j#O(-Bst=f*t!lCLde>O1o?z5F8r78}uGMHEh+<~%dV0$F3GOokT$Fn`y6 z``9zEb@&%6!Omd~BuIE7N)CSFJ%N%!f5ZFKJ^<T|1+9WQ!PJ7o=tGwz9);BJ0j<O* z1{I)f)+hl<RR!}WLG<BTJs0HM^pg5itX|UwnwPA|q|05D#K_~A&vBPz9AC3iBo~-B z>krdH8DDv|!&M0`F-J8FrxK%tzBA=TH(?R9%WRQgBP1I@>)<pRp-1Xzc+L726I;G3 zIfoS5A{CAUlWIWHW8n=0Sc7=MF70nMQ*EQ9;D;$-<}+-V=DFRw>*0tf7}EWb=)?Ov zhVu!&By@c><Bp!FYjs|pCZX@3JEh8X5o=o{^x=sfXCqFhg|+oohtsnBMVPe6aw)X^ ziF@tNvD<x-uQYB{-9xpv`|!#sn0K0A5WGY;{$gEp6==Ly$jFVFh}OP?h0WfshxSF9 z-`8P=6FiDik7FH?-Sw`a<x+^p_|f~!DY{fnl+yMsV;d~`ubK6Ne8w;x#YFZNPOr)! zd)<5HS5}}hM!br=OL1`r*_8FiuD4fZj7PT}N^8)m$3!od*64)C!JieGFn*zq2P?No zapIm{#Z*5v4|j#<9Uk_^e7<96`ou}8Es@1{wmy>UZwL`JIXsRm_E3+JD$q9p`SUPH za(ul&HbzfOZI8mPVx)LP$xR1US#^Eixr6o$OlfjNg`^83?m`^@B=$Ikjkks2xd$dG zLdQq8v9O5uthEc^DigA+VBuU6*pOs2E0m}U>Ow1J^VMx{%oMAG7&Y)Eln<NsQ3o-! zA1Ku$(`GR0)|Iwh<IS+KDMXF|+yFoy)?w^1-o{f`Q}&V{CLj4HB6_l3XqJ}-(n|KD zlkjf_tAV17K@w~bvgQ3$Hq$XvTx<<7&QSVi0kZ>G-Jg6F<ify10K;N};vOa^#Wx>5 zMc=3U*br&_f%26lk|BZA2uj2UuqTPS#wudqE27x94m(D7!2QtuE{MtRx3#TJk~P<A zWjJ>pv_{j=iG{|Ne*JhYO>U!GBrdk~_Moe4nj|Vu`E-Mel-4|(jO%z0$&3;XTNo{U zUX@?uEPenlmJ^kYjHe(LH<6?Hod1kax7DeM>#-MHW?_;3N+oY}D#)^<8AAatn+5au z-RaqrZN4bsDY}wsO}C|9hW21Z%ao4@&pIztbewe9;P6lr^*=Cay=rR${!0WW{p_NN zQRV(Xu7x7l%+1ov-p7eAjs04QyJ+aJARx%^)kh;G+qIVDOu^8T*M81YsFHn)6 zb7edUjsAF>b%uz|-367yzZ#^PY|Qv^#<!ukJwvF97bjoObYP5<Cwr?RdIM@d75xWv z8}I{ZQONV=s#<EC|G^i$fj`TMSEdj%@Fov5uBJwE4fojEZNXRPtNKDFQN{MT2@}mn z8{;aP;A6NcDjYZWHVo2Icn|27^NW#$P6BnJh@3ToP>l9pAB?f+QBB>mF51-%97gQt zn~O*@VY!k_>P(+aEk%|yOpcfdf?u5=&c+nrFGq{3ak;kD;7{a#Jr3N#nLq^NGHDGd zyS<y<h%#+M>7Wmu1Mo&$s~!W`=9jso$?=uQg15f$V5`N=`4VcNa5|FjXO-zA{Fy6b zHgRf}jmkT#G(-)=>+AOI^j`FWw_u+?s39*^bbI*&2fyjpuil68S?nIxJ@GW(AV_j~ zhw?G_MJ>$Q?5nlSJS@+G<t#cKRI+SCxHJk21T*>^>tm{c5}Qd<AP=o|WYGr(HGT5n z<VzmCz>=eUW-_ABANLA;LBa?@CH&2@o%e7A>H!xi7eBiXcqdcuF*5q(HqT!S?5+LH zO7XwP;!O}pyyq5<s1v-8h!Wmw1YmzB)Ta!dcmTK$gd4E9xL8;%=_NwiI~xH^G36ve zG@&di6eOqcm7?_**Na9A+SDvon?xOFV_0b111)8SfWgJnKRwu4u7yii;GWmaN_QtS zX;Vhwhj}D73bek8!c%GS)QXmJ_mGMv$jKUjxp8HEPK`!&QecQ{`uzQ5lJ-&T8*f3j zaDUjq$@rVQfEBjbiCw#vtkp1>$Ld&?Oik7|@7_IMBxhRlk{N~J*??;OuJ9OhCr<)F zkHe36iQ-_U-*8aTXk=;@b)CS#XMI9_Q&jJ+H5y&c6r%g0?cto}lHY!;kzuz%kNUbX z(5v4^NLxhkY6Rk(Kc)15xCQ8WpdH-oR2=}MU<P#D0xOX~O>BpFCUa+7qjdSNj=@;4 z$hI%fHOE{M9{V<TeDD7k3kouY4@j<&9#_VuHajJHU%ekPo51*4>PMbZS)Am!{K%({ zSJbX6=2%TD4vmf8MO4`pnu1nQ6+4n1gm)9VBkrEsFPl%B^ls16CkrXXl4avL#j^0Y zBmcq$k_#iXje0zEB@`nk>%Lh3N&wJN*0xg@mKZw<O$eU8zgV~2vV{IdD?U&(0>IR9 zW}Ec5G8MO++V)IoEIp;lE+6N~$O#Sh7~EfHCY7vo%N$|lQIC4vu1&8Vn5t8sLYS)p zw%047#-cdiu3Syh3%5T!M0*wy_un8|;33EdtS^t&PO-^OYhFLB*S~)PE~w(F<+x7q zS~y`6jV{X#+^gkWW5PdIl;r$zy`Gci6E>X=og{JD$mZXX^>wu#Y`Qg}XVU2JY|s?G zF>dsM`RiRDdNs1UCGE@Wf6IX!TovnGTP1Kse~Vj-xGF@6PZ7R-V_&BG*(2j#@)usB z$R0--jsEp(tW?JOVA~nW6huEt3SFL^{Zgv$)>k3t3rW!qtt>p6<#B2l6UlG4M*2c{ zyyQ0L=Zr5yW0TtiFFBbDW!PlZOWp_X*U>)u(i@aleU+Be{Txe+RZD#QmWBt9C2ohq zVzbpBXWW~pWj=W<CJkxap-i6{|GJsVoh4)9_U<T*vglg|!+$W$1ISvcgIXMV&hPtp z5eHFBV;+@T{f&J9Ak6+=@HzLpA8^)Q$ed;S#_x>!C8RSZ_r&ByF)KUfkR}yt=*uQE z*oqfEvSFWjJAU(|5_RsLj&NbCWGCnPOy+3BjC#~xiH2PNY2(crxok2=3Z(S#Q$C%1 z`s;n|s@2DGNlCjL>pyy?&-?anG3hj-i<t|V=3Mq@jz6)i8CVw13d3SWqZPGp;rMRB z63BCn5-MuNxw*D=hsnGp@Eb&p?rYT$Z%90(_&huk62RvymsXIatfW2mar_0gU5oIJ z#hy~{HCY@m|AumWH`;k)QdxGiIm8#92{F-T)HjJqLRv13E-T?{3X67jUqan0Mp@-M zVZL9Lb+a|J&{KT*brv);fq$`f<mJc+8!t&F)T@QD01{Snz9}xtvwsk`2na7*XLRWp z<qS%L-+F(IUDc}<KeC--CN%JqPteAO&EMF4)VnGCc6O3alaY0BS1rn<xX@CNpXqVs z#HU@8W`rCxVdc-&Siz=%;M%NW#piVI<7{)94WGm2)1A`4@7Py39oP?inrbZHTy1Mc zsp~gAqLV6W`D}xcFFOR~r89`<eMPjVtJ~+;Yga7Bq@RkcCw>XSh(h$Ug;ZDf_4VuT zdtlSgU&I;g9w!r5sAvp)!(5k5U++nVuTVvTAiZ*IHeujXZV8;d@d=@3F;G$Av9x8O zZLd(JR)iIVqX8N2-?t~61wLlqPq?+%yoDOXhyYgXM$y2N`wKlA7mhSr9h#8s51RZO zrFZX<Hp}ND2VY~B67A4z=Aq!bS6u*7qfnUV^XMQNxJzGe$C`n&8Z9=mL~pKg%$ntM znVxo6F-@ZsDztQ}5twB!uA}ZtP={y6PzT%O@65ic_BQKMEmKkNlkvC@TIy}Oxg<xP zsukNeXetyxn2W+6TfymEiP7@(SwC^?PK{a3>)YOrd2;;D!|ur4xmJdhZ>BW{LXW$y z=Ey=V$&PU&-Xe$Djr$Zs&5u12a`&!oQscLU2;il8Q=sy!v0}2*Nr#S+Dqxb*--d94 z^AEGAjVr)EsfhYjS1(p7z;aCIe>LE`1DTHpDHs#<q66s>{0L+i@^z!Ldy#Xdhbd=l za_)GezZfNX5(z1i0Btm}4#6D#`8LLZQt8fFi<k59MAx$5*2o@J81boz<z0-23pKg= z3;7?V#$9A(jP)2~k&e-PZNd0$Z#=n5-g`|{l<?X#zkOVqbCHkc&TLF**WhFHjiG}j z8FMhukTX5z&vuaqG*ApxY5V<#+&2`(eTfrg0{M$Z{s$TlLJoKfm*BFG_0zFg$0Oz& zGMvgvypB8+v&H@VbuhgBeT@>Gmz=$aI&BS9PC+Y}rp`DAs7M+G80jlH8Pe!4V=Vi2 zkiU^)#hAwOJgNLn88Ydylxd*zx?17m7Xxr)D2M!H?aZk*2en=LMp+NUQ>MCfYIPfO zu=};MY=O^HjqbCYL2lA(_7Bz8u03N1RE=NEKfGQH?gtqR3NFZn?I7aP(+7AQH|}dT zBw&v}eKiv7Dm+Q_XS)!j$N}!a(ZDhG+yC$wUau#$4Pd6Pq&=dw5=T`*ttvn)vXT0O z^cR4GK5MD6Y~?!k=IFWI@NBGdZ2dm1p#Lr4`)crc-fUg)h;IE!C60Q@R_S@_;^x(? zcEb8F9rZ?_*?8%}Xc=$j_-2g%qY_jba0}P&yjF2jtjstY_7`I4QLujYVdBd@KSArL zU+Dd;*>z@&J?w8Gvs$d0tfM|h>}zVAT~NjS-SuJ-&Ln>-(xUX7GhWg_>(B{L*>#ps z?L=+G51dMMLm+rfy6D8XpXsHt1!uBvmU0u;YK#LX3%2-O<3;7cLfQvn@|JEBfx#)S z0scrPc3t>yTt0AF{eMX2Fu-LIaQ}zP;w`gyV>3rR`lTeH&O;to^owO*6plD;GnaAw zczGSP?Qx(MgwV4&r>4yiyyGfst~iub{MtuRLRjJGUCxA!mg{89r3>||siW<W4DS0s z@>rhs{1nlP)jEPO<1f_HCRK+X7uX+JrdkxQv3a^K^ERG!*1zZ1FV}KiNaau+(N2^K z*`KG0M=nm0M#Tlkiwh21jC*Z!d714_IPYx~ZS#57sS5P)+a^JL>dG{p1e`bjI{4B1 zZYm%A8nqI*E)LHJ(M(Q(C<YUG*2Ot0Hg)A2&T7|2`6-oe_to%MyOuQ+u}5oukLm7H z5^eqy?6|-K2~OMtCqE8Xi5Vc1C1|ttz%vaJdg~D$sOu>ozC=TnC^L>(MDOHp2>K>M zxUcRsm^Pa>^*4Q_N^DVPUt#zq9yXhCxVQi542syv{+j$!U-ezKd@{x7d}DTMQ-UT^ zHCC;CEs4#83?b8mvYfp=CZ)a{XO9a|<B75eGRjK`Ht*b5x1aIdb8<;`Rp`)Fl>m<; z9VgNI_^+Df4U8|OwgRSHWQ<yGoV^yZ!d<ll1CQ`QQ2Le@hwRyB$j5c3bsaZ!ccxo= zRpm!sF4-Ls>3W!N|M=_QtRw0-@B(hTaeyw46l@XE3s50>I|7kKuKlu~4shz3tQJ~Z zu2Byw0l^cY2Y$$uh0r3Mn#9aN=C#8zzF|E!<qZI4dGR2W;tkL;*j=~P8toN_uom2I zE}ZzRyIw)!MfEWKhX}6Dxsj)u_;N)frP}y<u%!3k84?b%1WK^Ur=F-l1fB<LDj}#4 z<D2Q03KlBO5Xr+cOgnA#TLC7U0{ERwJPfD?+T5Xg?GqIo>};ucPT{Q@``<VEx3?h= zK#(ABS>w~FF;|qe@DQg_1BlYuOuBVU<7wvr9J>d$)Cp)OP&rSf^>_jx{-dj%ias=( z3tR7LK%RuowEKO`AZ?{RRyZMCUkz5^c1t>ssRnxNdoK8BSt1)tZPwpW`0vGw^B2MV zktt9Q@SaDr({@MeNCn&!l35I2mg#&^aWKPab=%VcCdVjowgB0>a9M0fyr>GLquq3D zAO`dQ7x@bG7@i<G+PE{F$3bJTjoqwQ29SApB2HlYGmYyApxpKx4~non5cMIliBblh zTQq!rcg+u+eqhRB;k*kk`h3V*?}yP9)>ZeD&0#>fs^SOGhx_79JOh**m<>6!{a$AY zGQfN#?tn167m%l-eVCm1Kr>OPwN(D;1`K3+(8PF<LNImFDAiI1I4Sr8iB5nVM72>n zJc)^ZovpUCfP#>gN%#psHdg;3E_eknWwzd&0SX;cHLtW{i(_DvlBKEu;;@{|V->SV zy+k7^8jo3r8Z=w1QTF0NkpKX<+GHC7+5kPk@TdkiV2+>&JHTKvi=$H_^#HV-AmGF0 zG`gnKmBqp<ymHKY`%gcyX%*st3I@`2wey<XC7|5}QB3D%x0~i92{i=B)K)WfWd>vb z>{ZpF4}f>kJ3vF{8eIy`5OWZQDgb!{*#}HKfL>S{&{x}-zr2z})j2^X%>>k@aETWH zM6BH<K;&Nq7{(K40S5q{mflTlltkL%DRA<CL5|k?1l){CZrK5D`MRVJ(y{*zDYxI9 z_k(Ce9pWYI_K}45J-6*7c?b$_0?^ytc8zpf7Ep%BU~Y}%MZN7Oz#BaTc44{#Sc<I- zl!kHO&K0^w6R?Sc%;DK=AMl<YfL;u>>-N}tZs))FQr=?zoqIlF@&6$4{~@IU?J|0J z5dZbb*5{7rP}y*)63q%cRCVsqhWDUK;j2xmsaBt_2#AO~<*_1nT3sYa-b#Xp!Q^-* z_jkAI1maJj7LvY6A?yGoG(UH}Q2DbOxdbUhLb9W(@VP|Fg4cl%?(7gZK{CPj2l5cE z)bMMhCXhdC5hkjEcla~pAl^o^KD+><Ra+1Zz=rtj3INuWfHOj|DgAa`_BjTbaOrFt z(lS0&SW7M1k$9T*?GF%xUPC3P-Lx7ysUW>W>t()#tpp#S4wQf)a`Pr+642V{1w=;P z0)q$n331P)>wT53LXR@{(zpUpB!#ep09^6_@^mnAzFf*nW&oo$?1E4QGI<GYZgkn$ zMqJZx1}pcq0h-U)Y_Hkk3F|PAan^eprO9?D=z_lk^-{)?W{+bzfKE}%q^H~Po?KFb zfLWt7HJVJspv(QI(XCVW@Gg)12}>E5Jh!Ar_+A6LlfGC+Fbus!|7)E=7%-PC$X<dq zlh-MCwfBR3wfWEO3*WYD96PVY07Ooaaza+o%ZB7(9v9}%S-`mC7d9|J$SCaH?So(o z|Ih@W`heU);SWa}`8nR-0zprSa&xMxANL$#`P}<3g=T+{*XG~Q>n|e~ZUzs4V$=gr z;4=>0g1P|?K&RTL-UOPcx<|PL2+x5TMW$G61WRQTC7LV&-Q>H#prJ&7GVrXI)1Xi$ z?9*6_mwRb(7>(c)ia@cUfC&nOY5@2r8bYE_i{PLRzzlY<pAIU8D}jt+y6LvJ0YMHF zCzxjl=!udrcu>qT$RD8{OFWAK(d<DM<O$uVX1FZuO^D`a%+a_(`>a~bOA34O;2_5* z$4SGuHb-&56i4}D&5H8w_8BaRsinLq-!?!tqKq^Z*xO3`PF;KxLMT^wN#*9)0RYPj zq`wno3f82D+D`(<M!gvzsnzEJQVMCIHjn4q+`iu5UH`(yvI3PGdhKxu-Seg>XI@Li z5Lqb?OweIDF%2+Cnh^+cIL%AHCoUq*mI>lv2p$29N?}7dr^S027jC5XhPwy)6U^v4 z_rMA;psj5F(+>>Hvtem6b&Mr|_HTI$&_Xm~ZM{4|97`Y3g4!a^7J0oVjCjf#qG4kp zOWqQ;A(}i5?J)f|cUn$Pwd+Xyr=ab_<v=O;EG!x2@@60xU$$~vkFtOV+SFD!vMY(g zJG6hC&)*w}3lCb4=0#Nc37|)}V3ul6jR)*u2qB^<eQ^{)D2ZBOJQSgv5^=$NWQb0` z2oQz=1%u+YNKUY~$)+Gw&h&I=LNmVK)?vC<HmvG-0M6DE6dVxJYtS4ymYATpw+w(B zW}<lik=rWw6wwDDhm1Hfp>_};7}s`d0aP>fx5tne-ly{cQsmIOf@tzeLQKr=90#DR zfsI;GpDu(E+R#a!N*K?{f9f^DgSr#CXoVV>EfAzx#fB8eyAaAYGHegdoc<Z!D-#rs zHVl$DH&)K{qDr8wxV?hb%`FB**uZ5qfk<M+w89=?#9EA^Tf8s7iZulV!pk=Ub4)Zq zbZpIJ;@pB-#$XB<phdGK|0ui=R{O=U`^QQ@s@1wcgez;%B046~gkWnBn8ClP9WSsE z*(u-#AU2@~yd&Z7ySxtx$qOGi6r{CBUi9uNP^OMix++co9jX4!Wh2)>YP&`yjS443 z4#1(rMc}vStknPNPJc#)N4;#>@eI3)K+#)a!!*-E6kvRT7nhLRQ9EPzo>Kfs?J;eJ zQ{+#!#0WK&_!Pp|4XaK0Ojs&1U<IlfvOv8JrN0EkCelkEglTXsK3jk0dz4#@X{DG( z7fntiK!!+bnaBqHP#a}qPQb-WbX@1#$<2O8|J)!FloLaUAys3SY)K`lY}!EEHj`z3 zHkC4PYWh5v{Oajhe5Mxw8QK}$?ZjI9B#0W(-95ESS;---dE4!A3wS@S41Y|%!vwgh zx0vROA@~MEFNWN~MS$Fqo=~}d#77t@*Hd#=J?wH+gLxzlHjksXgo5Bo--AWwXBEm| za)7nbgfLQPP4$3q<Vj|UvBwmA`5p;Uu4?Gmx;#ps@SV<Q{0}eqZ&?N)A74ZZTWSHh zlKVa=O0}G`-ppw?)bKnajed-XjswOu2^R`h4}U}O^1wR-(|5Pql;o29Moh0d9aBh= z6iE>Xk}EBSU6I^Dq0!)QZsYJ8HfYK_ZtRUQ2vru%vQI}8jv0k-K3md`>~lrmjXdB$ z{y*%!c{r8p+XjpXOGQN_W67`-$rLgtq-9>nEM=ZD&+}LrO2|wZm$Aq^E6R|0PDqhi z88d#@YVU@<+wc4R`yI#k{*K?#vC6id=eeJIxUTa$uk%zDIu#f`BBkeaC^5XqS{hxO z>EXBWbX15+x0dL|xJ8%gnHHNx(XAua@{cI{%AKtIDlNHPjs`XwDxWu&+);3v!t4hh zM<^ILS5y0WhgcG2U1cJ`l8>{=!VSSDr1t8a+|qYsE9CUolL(eHu5bC5Wk8S-Kn`d( zPmtWP<v6hnh1|gs>ss;DUUS<!PB{3=!U}iP(_7;jbf?SSy}I)6kaAf8k4%<Jn~M9* zsqm|ZgoB0*UCewJI+kkp^BYL<yP+F5k)bJa(n9Jpvg#llYt$S=E~nlnQ5~`5cdov< zc`-1~@X|$p=C)Z&{%ONPP*C)k*aA5T4q^PrU9pHpf4M2c%lg8mPpfr{7TL}OH#jO> zeHrPmo>MfP&o<DL&VpU1&Vtm;8iM!6lS-O(M6RdZ;!oi3*~ofZy<7IWpHcsVyKhc4 zClQ4YRr=cx<<;lZcZ0I-+69_-T9t7uOwf?QF3fy$&vy-o-4x>FCG_-tU{rIHr78mF z)b*QzA#V#8+PE;!K~5rp7@y)$v_)j5Tr{V&%w5}HUfSBo0|KR-GggG3zty?af2()7 zYyFhP)IAxuU*Sgw^j~vn+zyZIWDKWX{<HI3Jg&Q2YhPhXn+q=&+8bXwvVFAY7~Nws zdag986GM02elqZ-ZkrczT{WS7e`HDFdZ8iz%eX6aZP&w{)5%K4cM+)w$!Cn$>Yq|X zj_3#4v^_aeApEk(o{va2cskgX(H4~`h;GC$Bcbq~gn_dY9$bHP^rgx5M+EgJ-{<J# zc2RnShPWtu*>9hSbQGZ9Zs#A%8aQ`F)Zf#ajA(-N1WYTA)|$|{$vU3{vjO+bPetk* ze7>B2=Vkq?H6Mey<#nDXxx1UM`;T&y51heQJLJ&(Ws`0~$_F|eUIZ>3qoO>osaoN< zfZ1)}9mqhf2DW@i_#hNyPW1&n(Oz-$6~Yqf?@6^4S~0O;uIv8!$Q~muDX~7QlRN43 zdSQ0k2?bE3Xgcn!Cil+)By+<jb2{#O8lQ&9F1UHHKu<K(DR`)ov8n9hA@-~1uC^^6 z_PekG!F-lJw^19_TEE|hu4<sH)rCi%P4`bCBMgGSwQ|;;!?KtSsf54Qog)3f2qd7a zfQiA!qod9X;*SO0)^jsb>1CwdUqfqt;EKBi<aw7EsT!0)Qtymq28*RV+M5NUw#x=w zE^v4y7E=WWfXpl=5XT0cpJ|%ZOFvrUGJH_stHJXe=yf1wR&U^40ZCE8z-Ml@i=%zG z4_t<eO>H6XqZpcS2r>T%^vG^=+V?SJy_NPePevA7?nE7VKrt`?iHm&$b0pz$S@A(B zy>Z^V7mhquJfsGlvlKOq3H@10jWi$njtw}pMxVb8SsFA(zubTTKF`(u>4ocJFRVrd z7btZvQH7fnAa5FB7i_RUj{E&3sprX+pdoM!$LDpRzW_g}%a{80qgFR<iY$%p+rMqK z{I#@$*>H(`sNNn{I#8q{`MR<2wv%Mc<d*IyQ0zfoyUBX-(1vtA^EuloZ%>2Q&pe)= zaxN5~zam=A)h2jE;aadJRv3@?ICHRv@+oIetnOIPcsXI<+k;#bjeRI0oatSoQ(pw@ z=_FICpJfey#^k=Hsy}lgDU!_YXgmddo7Ixsy<E?2fxGf!H@n|LB$V@dZ`5flTjstw z*^?L5s0??7x7BaV^*(6UIlT#<86<34)(B)crP9wze|tgz?~Y3%%fX`3S21&!GRFhV zsm6q-DUWULeQ-0~-`jld87+m!6tPJ(?)0i>o80vwbInQz-7g`T?|JKvT%F5RHzITr zQ7~CRLI9&e827mJeJV!iTvt^P<;LyV`L@z`pyS54k2Foym($$N2Cg^XA1YYS2+f~` zrRL9J{Hzu2@;*aK&FlL1l%>|YPtE1c5%x|Hcsn`d#umP*A-%8De$l#Paz?O)Q|XC+ z=8#8pN1wn8%CMz^m5t__<T)(XLUtS~=Y|sD%|Ep`{!VecN$`Smh{78j7lyNO?uJ-j zc%YOl;-UR9ESbs6#L)f?(^QRA3~~5h1=ipMoS+fuw?S^Q4B}*Uiqs0{^MeXqhB>DG zuD?RrD*?aiWYa-B*%{rl5Y$!6Zp;roJwE>E+zn;JFy=IN#**P+V#f<Rr?@yKTW{uA zLzx(~CV-o6m93T+7nmB16y5ksLg6JHuJxh{EZ_Go`fr%Vx#9jj0v{6m9Nx{x-u$HW zS%PdKX(CtKKm1f4sbU&$_qg^lcwASlY5o_?^w-Y$`=8?-SjDE5A;Xbhb%ehHp5Okw zdENW8>HVY6aemEbSOWk2zZbLEgWlv0x)J$*?lQk$3`%-1{`VsYerA?`e%Ry&O{YEg z^+CsfUEsIB`cNGQ$r?ldbHCl=&qx3JLtQelBGcM*QFF<^#3+8h<jcn(GDUUf7ViHt zM0@b?*`mq9CBWtWpRUKygxzAP7)ky)CcoV>i2E7C!|#5Zf41<yT#O4wk*A61#!s~8 z&kx?B@bI%8#^IK~%9H<o8OMUTU=+EozQ+3>Z`m7vCl*Ia*-OODLg){S>E~6U_6wRm zToNaKe~th8{M!^_K;Yrx;wpU{{|zTwKJ4@Pozs<Rs<Gne^q+&zbQUk^ot+{R>Y6(K zcHAxE@#b+*jFc_epTG3uZp7xv>UININNJV&-nvC)5#15}@e}V-{Hkh&RGHcH22(7! zqKx`<8f{;v+T%UDZTWucAJyp*J>Dj<t2KyDDjxgDE2k38(tMHh$5-GGUy-T<sVTR^ zMfOfKQp!%Z9?Ro-Ua#AG)$9u5Gfc2-+erQCokCGRM_Gp9ht}++F}EvySEhHW)I;u4 z{k>A*$($t_1UJ~k->cSD!7JXA#37|$?*PfTk09bGI4=TnUdPB^7S!%1ph_P7J(rFh z!9AqIO-ff*TR3Jt_^KmIbKae13H{`B)9%k%qI5L)jRyk#Fzd6eDDkEM?qzTMg9lqc z#HerNfG8CsBjdznk)5i079u~M4OGOuAG=JyrLB&UNxEGA-q`s}m>_=?Fcz--Ce)*Y z$5jqvNUbw_ISl_8EAC~JacSJZRC5j3P^OykBqs}xO!R)_ZN(ox&v);~)MrQ{qQWJY z<1VH<qr80V1bte(M@GmLRgtCM&E)c>@#?#Yhkl8FRGrmd6lkj^ithUBWqJJdvOHPa z8iP#vy1%4~nFZVY(zT($wbS!CyLkS-*xj=wU${1?l%j60$6s_QxcU2kMT<9;bUI^$ zja>GrWO8$aH~rDNaC|!b`?2(g@1_M3#r!sGHlCXo8d#&7;(0I^-z`j6-xa!e{pZ_U z_V+GWRKd$_X=wW7s?5Fu@9!lEE;mzqd`ml*MjWZX(wVS09+iwY)+Ob?Atq!ONa>7d zM>eTadoAMKjZRVs+btO^$`*dCzNXsyOCYUIzRq*Zpq3@%tp`F%S?C5(7V*yN)19ue zOcHpzw>*(BrJXUflmN~0fA1JRX;O82od&K}bRvb8{q5apu~k5>^&nhAUrv2>`R79g zidnqNv?;4jZ9PlObQ5o?`GDMZBT<D#$?-cIL%ct}440m)a7-cP()7Y(RRhk}ck!1v z4V6X0e=10U{?h!$vCr8nB`npMEZHoN9tYunhy_iyU@PwV=8*xVq!mZ|x$!$cFB=l? z?J{_wy4ZSTpxx6tdVTxowqT3R`}GX%sb618ji0b2H9xYx_SyvYjQdA69*E&Fj^7LN zd)*Rjp@%14XY_ORzdYmfnvUc2$TTYQOeKAYMKZs`1<s$-_rn>op=z01+X=FYOb*Nq zmROl4_g($*xv$3<F8(SOF`OWFUa32pXtb<*R<PIk(2w88A-b|55^$QWfd1I>0X%ob zWxvRm%>O>|zwdCH=Y4K@j@a@g{FvVVwZFTI!TwLm@SN!9=>GX(ALP+`y*g;M{+GjV z`~ddw#(5z1a}@sku*r!%{M;4?ZU4N+&wrr@y|&o{!RP)LnKcl-g2QjjuKAw=gg>|S zzn<P3_J4Y@TStGs=088|$-%?#Ckd7OFGEyEhz%idPT%|A4nIBY;kWVb*{46R@$+9q z7+@3$$!_5Pe3O5C0IC%{eC>4D`JW5<&#Nxu!YGP(zdrrH9ey$J@cY6}76N}<<L4-O zlY*e#8t#=7zX{R(yxG4$jMrixeyQBB^?!+<{%;EXzfU1wcg2I)8MMrer(U2Nh1C>s zTzY?=MLr<{t6T!gGOLkXhE2|M?I5{)3#7GezkHA~?az&U#Hu9G6i&~{Z~guesN2W@ zjrl{KWyrG+wflQoSXHtGO(>16?yxj@G8c=0l8I8jUM&Y!eUnnxnK6|&eBp<x){hnD z!z2sw?!(Iq^Y+Tjg;4py)=54>_xsTcX>u|0H9KGBvOy-m-{V>0GKl}T`V$|g=_6-X zyDrs@l~a;Z2`(d-rFCw|n+HBUsNJTUk_oY+G2~XYm7(XgN<M#U+JnLjs9O@YG|zz6 z-b3JKV@pLakshDF_cM$5aWZ^9Hg2>1`QhXprtu*B6QJcrD`-!|5&?R@{aweMA3H+7 zD`4_M(wf@2;7@W!JMq;$O7$)dj#>Fb4q{BSAZ_c(;NJb8YoY3ln1b?>GZ#Pc=6PJA z2Uz!zr@K(FiUPfLJt#o2fWqEGtZD`5;(h|jIJ^RRXQmT?Y&{U=QwMojY(st*a<(`7 z4A#CywG@j*sOamboC#&GVZ<s#U4zFfzEG*L7~g&4t`HtpNW@(5#>JXU`{v+(D|=$4 zNFj>;F8BZC3QohB58(|L>}ivNt~y_#>BdT!gJ{()C`lqU_P(}qejPS15YTjk-2WsP zYhV@Rp;E^LHJTI7?vC?=N-fdn=UxXzfn$Pco779e0J06hhg#vG2$C>Rt&Ggqsk{dG z_1fcP&n;Qdr<n$R1BeKEBEv6#4OY$9zEQI^%U<rd5O)N%2vv(S^jGv&4TN8vXZxWA z05wwEi3S3w^xUo5c<<($+Gav8L3oJjg4jw&JimhH?wY!e^r6?-I$le?%^n1Tv+IQP z?hIrkq%@aO)=nQ?=!jyExt=Vd13Jo_xRi!Kl8ihn7ybE5aO~Y0ASGS{$#k>lWjYd% zu3p#ZCDhd~Ht9NzRYi>UIZ#itAUUr{G<3-t()k#;eK|2P@916VB%c-FrbtZ&Fr|A1 z@BKKTU0*n88Jg7=(x)Dxa~{Xd#rSXz6V(Kf()X9W_^uy^)xS4S0^!<AZ)tD7mT=}b zG7cVm&RM<saOiB3jaG$yc3ZNjUieI3PR!#7yf=|7G2tRxua%-#urcUufPyaCO<lL- z4=h&CQA1&ityp1vkXQ*6dU?F*63$pS=naxkT?Tn7Y^mPIm`|5gpLT%Z&_LGiC*Nv% zR2)y&iV#%o%56X0^)`f};o7AY!U3w`TEHxc4<GJZBAzt|S-Ht=v#%fAKsJ}D{oc~W zeDmP<&h_H|UM#SGgu%xCV@e0>G!2(p(~H~Giv&AdEj*`~;{ApL)R8i)wq|o|zkR(e zO??H5!RuLt1Etn_E?|5>vpoexMi(g2o`;%ozq=8Ozc`T#SsjD^d8l`@Jh-^6#4O^n zGKGFX?t7Hk7IEZ=8ZP1+gA4$y@+>YFn?apj;T7to>q}SQ>(ZQN1LgU6ebClC#Paaw zb5^3p3(ox##bDGcimzNe0jP&y*O9N{=dcDmw2^d-3jhb<bsas8^w$iweK0iJmlI{4 zaXl8Fp5{P~($hc=uGC{!%!m@37}Od_j!v6^CN^F@*-dQbggQZC%UCSD)~kYiDb*hi z8vTM>A?wr+$UW+LeRrD}m`^92_ZPpO5yfpRZ&}JlzfgQH?X~f`xQ4$=<Kc!E0yR)b zAJ%ggXzaOkac-z6Q;eJ+xZmS`e3F;_m(6vLIJZ#UPCaiT%B<bM3oazCd3Zp|NkM5b z-kN;n^9&{hJHN%5M+Ap%mW9ZgQOd&f;(+y`!l}}3vRnV+KII`YEyjH6Mv{A2Ah7k` z(&2pcOPZ!uoIl7R5#H1Im-;*G)Y@e6JW+KV&gJoggh|QE{x6$}jFwsbS(1;+#Dft9 znN%qMnJcG>grPPUQb(wpnW>PhRu3{(R$-T(k}*z*Bix{-4+b_g_e;cc12&-K<aE|w zfeOC~>>0GH`5BK$sQQX4t^|l{`-vesP|#UOR@B#qAPv`WCiNw`B4;D<PQ8&G!^c4H zFQfqq`b?~>G69!}bjawQ9bOV6${@RIK!zI{#EM@I#dkBoy}ARGbT2?c#wpF<6<W06 zcA;h6(|%}Vp}(|0<t`TNr+>tc)$FmD$q{1WJCA%X5MMaNMtDlYzT9K)+qA1l{b{Jf zYewgYlC6Y_A-E`x`_#{o({)@(;64*9IluboSvALMD^VI*Z<naED>e53LCKfV8<mcE zixQ`<MV~W$E~U|MZ-gkV><ELcU;I(~E>7q3jS&MxX(un<ikMFJ(v?zjr?eS;+M)lC zC9^5&=7eXwR<(a;r{}chqid{b#jKi-B8sma?UFc4K@qj~P{vCMX<q)pF>fL;BI5jm ztaDPg<oHb=bV`sYUCaKqu~#uR$#48tz|Kg3+it3=CcK$vdS`uX#VNzNV|sh{v^NeO z(MwLTv!*+079nEY2-aNUw?+lXI_G%g1aKF|`9$Y(i{?RA^2h?l427;`V@2PNuXq#0 zPas+&sLYs)-0ki4&_s#HH%XxfTzK2f#-IwlA=piiDD7?6Lg{2WcnnKVM1&p9ExA|h zr52ODT~eV5Xj>0~uVDBh8a1u{DJzg&@f28loEmTdCB=MYH3K^%RI~bqyTD9kgN8$@ zdRcBp9hxy+6ENuoII>D0^k_^}ug|V1XIE9BbmT?*V_NvC0>-2_UH5fItAL!b@E(KL z8#ILRRkbOFEm@r_XK@v_VW+5ajBc;-^@-F52ZCCxlB&>EAcyF@vXOsBem{&}^!;e1 z?`IQKYLzuLo`l-hUULum-qjoENcF0w`e%}8UX0bsgm`g-?d}sXijn7?yzIpTMan7> z^f_#sF%O2@-MnNO%z4pSTgfL0k`eWOBQ5E-TcfSCZa}^1)#8i5pw8VMGBF%n{9k{3 zIL^Qn+7XgRCS!)H7dmC#pz!eHSo0Q4x#S?VASZ`@w}3RW2S#Xh=K)Z_?cA$*qCnz1 z`daeT%P$fXVF<=P)zK_(Rg{4S1Om3gOz5>SZ`=d#1XhE5dG*d>TI3zrH_lUyXWz5G z%$U7S3&x$FMOJnD;%c&8y9rY?Grn-V&`mAHnD$i*C7tl3?^-8Ls>Jek-sasgp?HXy z*&~05+)<Iitiuebh)^|1+Q09x_--h#H6*@C&T_Qkg^+x%s5@1GrK+hAxVCJZ?7EbX zSwE~caBzt`rwLPxCNM6{j#Hf|$C#q?Fv*AYP&pk&g~L2$$zFLj!~6k-HKym3LuW8* z7*)27QN2nD*HG?xQF=s!+#}YBeDRK;K$xEl*h%`=A7r&Sj6bL9C8fIbJ7@dIb7?@8 z_|9lJv-sEZ?g=OYdxQjqrkN1BfsO1dYWh$OX<)Ete6HufOZghMv_pIWu9$0mkK@Yw z+==GGGw+Cd^lV~gpVMZWw)Hz}<=Sl`Mr4{>-UytgRcQ6y$o!(PMv?u^j@?`J_H*WY z$})oB&Zl@OOHtvtQZ_+&Ji62-S!UqrZ44DuBP>lGa-hX>;wx%)$c{D!kvcV=#xG!D zZ>ktr_Ew!%)0k(!|B397?CrE?mQQ&JTK4Sn?zs9%B3SDV@7aorXYIS^TtidjJ&0o# z>M5y54$6!?JM{ZpArl+t#FbDMA%@OCZ#*gbhh}(5GK@1XLynIQMx9oQu|&zMf`DK| zgm1e3;8U^|bqBM{FZCHPi49{xM;`f63Wi(PR2F*`EX~f+yuYavM7rIu@ny+F-F5$c z$9(=qGp$p?+}`{EL9KbowzJl9QnA7^&8%_(gP^hs1C2FFZMexcLB}W@r1rQvHuRz= zBPA{!Zd`tSCj2q8R=4qW##BwPE|T=oTQ0ldaBpMSK_2Cu{-%t4an^3JQJP>gj##(< z;$d9{wfj$X?qSS;hPTv2(zjcnU4GGiv8`gbRk2n~@pJYB(@kE>oM(#Y_S}}iaVDjS z?Qe_Q6Rj@cKPSQW=@6mh9l`UISdNVK5#DS=&a%t`I1f5THe{K#^E-HXt#(O|=8kAi zRdSfqDAgucC~XtF7l-QQ4-9i~##O{`XK-Br|DI#i$5o43&HI;^rz+XZU2H7W+ST$e zu(P8KiX_wt6cHu9j8PSu+v95DYK~eL>eMK1Mlz!$f`)+z!1`D%-O8$TygUag0*ia( z&=H54?App8Q)JAJYijM~#Sk>sSK0LBeu*Q$-XT5dYWA2o^f<;wHQAC^^r^?Ph+V73 zMviRMYAaS?uY4t2u8R5n-9GzjMAh02RT)gm4Rn_o_2eqh5uFMsH1!;ZZZA^OP#=^O z&t|qnsF|>n_ZzEFWKA?$l=&?a{#YM>trW2<K2MIuJSW4&M<jYTIjoL4QhYSceGNfC z<xnYaMq1O#D(=&YK7NzVx|3j?C#-rDm@umR@1HbCg{Ec|_LVv}kFAavZ&V_Acm*Qj z^3@sB^W`S5U|nxM7<i1QMN!u(QG_GXco-iR_=lDm`UhZUS5woQl6slsL<YMDpUfKN z6#&VIq2c|P^9cDeZnIuit!Fm_PED>r{96LSaOI@=>2w*2=d*Vgnh%67S<I9w^QJAy z=a2V<b5?-a6}Y0r3zZ_TcxYg%dEaO6Tg=?Z%5Lc*TyRaMv?{3jdUw>m2bE8<1@+C` zo;YUJZsW01FbJxM5#U;HM(pPgefHRJTuNEohhib|7*C^{u=*G@Vofx-qpUKxym%i4 z)bMac#_i{~s2rwGxofriP_pshW=Bwi8TG%0atBZKVUzW%Xd<Q;-k27v$_2iG0Np50 zYDr~WZD$pS88AgWg%~IIHZ^i;Ka#%-lIfHE1eISw9q-c6^-V6j?cM#|vHfy$<qK)V zPj}LkW)XRaX3!SQ6uJ$Gu=a~=U*XW8lT~T~Mj|xwr7HLNZB;4l2!OF*dv6rd+KlnR zc#~W;R9WO`hK<rhu`gdhmtb^qgmkm&B|+!qaYY98BBS=s>?G$8#OeasH@b>?dTDhg zosi2>SYkm>qE_=f<OQcD`JCO+N@1t?--h~SfBH&XaO-+;e7-ptQY{K(Z7C-k1{B53 zxAKdEqgd$f-m{uHV`<!siV^e6iZAqeEpt6Ue(7UUDaHZ4fa$O(G{xiDzjqHjrg~L* za|-uCr??pFu89s?9DdQd@TA2QozVU3jQjrS17*rX9#8g?D-1IPJYi|f&$@02KERNn zbuc#PFOig4Y3jsKTt{Z9tQe$(rFO20?tfEwIawZhd^yNhi$D@H*!wse;|@vW(^Cq4 z>I(!11PL<3h1WH*NQyXQM?&d@hk-Q~^@%;Vq_h=FwKIpD%5fW+@Rb?!8ojY7Q*%S$ z0V#5qNo2OAAj9}6q5~?40Y@_Dl%g_4Gm)~pYyNyK4J7R^^M@up2=YZslWH59Wg^jR z<ZIId*{1{iLL5~BzCcNqw!+FmOPx0ZPcC3$i-xdqE|;pgm9om(gHNl(;^aX7uo}fE z<maf;>gx{IMYX-vW(8Oesc*RD4HT{8X8WqbqV{F`bB;-^Tg9E&pRx$S!TZJ-5n0DR zyk_Qm2K^+vMLv=%o0{v=+goY7<S(=0D=PNPE?;jKT$HSm8JX_8D0;87p&l4<<!|D{ z1ZP>}MLb*s<vJA))b4z}XKJAmN*UXe!5|+-?Wa0@NS^3XkD<AjFpEQ}dW>1<)9gDE z9x;o{lR4WjFeaZ;jj0daZ7dC)uD-nXtuqEsB~)n6@2m5A_zTqOQPsX28`bGf;m<|L zN|WRIw_jcA7yi^FxSMOPtt4!xQ-FDB=#jB{L$|~tHhxt$xi<GYRrINWR<3_c0-uJ{ zVltW<NlY6`Sp>(9K4fNpEWsJdm8~y_w#PWHj<%yMo!}5E(^6R*)o~h)$}N54aOT(9 z|M%WThq%CON_W!^iBI;r+#7QSU5|N2)dxW++Bfd<n-1-QS+({pl;l66tiNX9QJ8^r zXG_Exk_obyQ2RK&3wo0wNLDoEihj?zxwyh+^_YVLU#S0i<YK=km`O~AS~lP|5%~pN ziSE~=SGav(VT2B3hnT4<VPq3beh*RpzD+fJBH5xRuS$qMMncFUQg5gETh#a0u*eYm zJYl;N^N#7CTh7mOj!X)UIK-iQNB<cz{ynA)yl@4TNddc<Kd+AcivRoVKc@hh*soDz z<0u6DVx-*8xVHdsk`a2Z9Rpxs2P4yWU+9Qix~<RO*@)2_puFt0{32i4(bUxRBnN5) zVqV_Huc{ghq@!+3l;`gmMbn<5W$!l@5^C-hd9%86)5UmWFVdsdch5=l`L^xuZ|{aF z9wx$bVXk~i9}A*)u($KsjMru9(Yr7Epkgn+N^<}DCQBOYL0b*xSxN)b8+U=OJ(yp) zSm9oIfBYNt+S{GFcq_Ov8kpgu<po-$9E~qLKu6T^6@~gOjif^)kgw?jfcJVm9a-F4 zZT-GVppgp;av84!G2TccCXoQl&#JHx#GQo-_iwg<9GPm5F!!w7`$Rj?exfdv+;(;; z4FHm62ZxE|A?zb)^S`?K+aoYUnB%>&Tack4g3uzj4q7K92Qm~5fHZ`)qYH?pU{ihx z;=w0f>1P5YYP-|rq&3kD(YzLeoj?grvL1LiHr+9IYGC@)ka6;h;|iC#1{A7+;yXg? z^v(e63-t5pg^CWmjpy$`qX$4<tq64^xdU&Dz<-ZUXg2F<?yWZuV|7uR#w98HiP1BM zpW*(#a6V#Sc=K&-FW@6Gyd@OJcFgxjIR~5^-gto9@_ZwyXz|TgcZa|{*8ppVJ@OHp zYD>V<a`0I*-CPAnM}j~P`WPl|u52=_2<#&&J$##c<^XwoQ@j9}<E%tKU^rU9K9Y=Y zPZSye3~CZn5Ae@)SP^(!m)pGq>)L+sA;G#w=fY7`f(>HewBj}CWGLPT>kn(Ey#q%s z)fsgpS;pvjmTP62T?wcMC)pQRe``2~xy}19QCb@S1q@?F`!Son<zVM&hJ})8dulb{ zaLW;^0{4?qN5qXJm#LFZC=h72(S`mLhb6FIiC)~<qx#~m2W~If!(ZSETmgCCor8O7 zup$juTX2q-U}@>MfOWhcxgwY!DEU~>0prGzel5zjLrxbAA_}3|p<)9}(7i^vAjZ1Z z+Gg<P;n~HZtO~42g_Hc&Ws`6BIBQI5p=BFu!9C>xz={!oqIMnHJ`O;1oR5$^awi63 z-XrV@X3T2OZb}J#dZcoC)K@E`rH&=Zxq+i*^QO}RSn!6g&Ga-c?893bJSt5y(H{k# zc^|l-YhWT@!Er11vxpxmxfF|Hs%C5EsGSET+(dA;>CyGtb=VL<^KVJhxx7r2OkM&4 zW1mi`?m(W_0EDo&wyM6JnENKh-CKiMyuW5g-l~Fr;Mx!F$?~rU^}=h6r}B(hCb2f@ z>!VJ3SaZTekM*I{WCM?Wv<Lf{Q9DTCMx93Iz&+S-YiBbfIRx4Tv>+C>1Q2!c9W?d7 z0Nj0yV04S-b8OXGzgEVluR_oyv%7d=VF~AOGugt>+){ztQuP4sB=}G}iE=}-<d{4l z)4|tm%(v+jcO>nu>#k1Goyn^kCwn>!z#w2$0E_u<I8DH${IExd)T^mV1pLzxY<4Qv zc6@%G1#qgo;Z)@LX6+*+hU4?@m`0gRDjU^h7)qVOtQ490#5jo~0rF-DQF6z%g^>XQ zc7zzrOUqJ@9a8iuq_*<FY^1#48)k(h3#{b!$o15ahHC)@0D1E{=<Q95?$7kIWpxWs z$bVh~YP{w4d{KCNvZ$y%!ogsGmpx076{9GNGAL+}3$TpQaf~Htq4V0g<J7KMU^u(g zAvkxA62BJof7h|1Md*r*acR0OWtF-t^KK{J(V+M2M2C{b^4c2c5jo__Z&VDz8gzKe zLr-!ysd72h6Hu0IKfYk#>j4O>mB%JM;sqSbK2N}*k|iM4tU_&wohQ0f^Bm!5$L5zw z9jYwj%)&1a9ENWn0zmW?HNVxouXaG8D+fGn9>jcaZ-CnV7{LdG;_kHcK!yz}Dicw( zBV0j3ye*lUL1Vv<*uIs!-7nxE5>SHBKEoRjRB^<^s5oy?=+bq6-#Z@66j$epQX{kn zo^)IX%Bs$#48>8xZ(G{0S3zskzC(;LPohWv-ulkXlV<xGqSCQ0NPTo&cE{DU6Rjir z?j|%Jzz=*lz{8bq&sZN;M*c%}@zSK~`{Zh~o~!BRBz(IxX7s$@*iCx5RX$fh-%O7U zy<kmJkmt~sPD#?(CRw$6YffUh#s&Htpo8wvtT>*ZT(5zhK57G>_vKYKvoWf>$BaLB zre-Wy*X}wx?FznuT?nK|9*Ztjtt4#2ikg4hLI3-nt#}DPi|IT~$Ad~S26cQ@TBkm= zdbwEvHfY3AuD@MqCeNZwmD(Z^ptGecmfBLhoDm_}myFm~b;;&LA4S%63!?LoZ7MkF z8JP0{d<Z6Jr1}`0-J+737l+3enuzg0&tSY&#lw*2{OUvVt)c$2Uf{Lc+Uv0W*f8wQ zL}*x!n-YU9ShknXb={$$Hoe>r-6=uHnPTmUi2NI=37DBx9UZqd9hA@0MZKsv0aI#D zwPqz1DNF-(z!R_{Ny_1)0bV-=r|vuS7bp$BC+J43`l9v_Psn$&pR1$ZA__fJ)<#14 z-+zAJayr_tfggPk6DN;~ibgbuZqIY86JX5b(KI>FHBe}m*(dqNc^Me}fd1jDeVGX4 z3weXWI0+8)>!uNKmN<qni++%FCoQ8BCEgF5|0Ol{$LgKa@kuX`r_d*}Gdf~LRuEg{ zVY4gQ%blX(V0Kk*oEo7Ex4=MgW&6a!x7$WkbJMKRnV68Zl}zNU3~GR?RjZbvv*SgB z*sgmPTX8R^6cB~YuuV_fvHhGJs?XR+b}xU^v$`T^Y!lnI_a)q`%ww$xGl}`CnoR1! zL4Kq_r?TIrc}u8nzxw#h(A>1R=zy7^)zI_XqaAmOjdMD=ceqbgO{wd;ydszsp&1xs zN2H=1a%(Aj$-Cz^%_^h=vJhYGwpNyoy#B|mh*-k&Py4n<REC3(2=n%(bO=JL5M|>? zMHx<@a3d=!kQ&M|8OwD+*Xk`D4iQ+wUYte3gAUEIbkKH~L_2AsQ`l0LQ4_IvC+Qy| zbJtK55tw0>&5TZE#^j1FfQQ9~#|XtV3%un~;!lwD6z{k0Dh6CbyjNXQgTB1d#C^%s zFbSmqbIfIx!Kaw3)#@^sH38GFYB)3T5*oBx6fPKjG}Tj%wwf7giVFe!!XyOB2q$-y z@kvSg^CX%`)v!+~<CW6kbosXGJ{Tk`MJLiZwAVflQSR5FEFPVY?vU(Dbv3H_*4b6t zG4HlqL%u#6D`i#@HvWv_D?u}5l+Su1_#|xaY|T!ZY^0OvZKTX99i~n7<|?zyoz7I` zh&ISgeyWl5U{R>-9Jh5qqH9fkGN=g5o}97ET>H8%Y5RHF`Qz&ci{yw)+~$b*-5Nyh zn!t*es0kGjFWMzX%PqI|fV&L!Qc=fj(b`7pbasc6&FjNDwMogI`R<VqthWx$POB!L zC79#+JuQ&&^r`KR_*hH22(hcJxL8zV{ghwW_{C~9DlWiKC{LSQt~Y25OrPtfd8ezR zf_{@}#vYpL+|D~tMy5Iu9Oo-c@Mupibyl2^mR#_Pjl>Cpa|lf|ZMF^CKt3(R&)xzZ zEoG*exh#+N+)F@I$O|p-lwNkHN9VB7^p)FRC-4~7Te3UD)c1|NWOFK~`&PkR&x>z! zy-w)%tB61cy<wJNkGakI>G)W`hKs`N=<wM%V0RmW?{-#g+o3TB%Zl*v7cKI*>A4Q{ z2zQUxStfnN@CQ@D7`$A4k}w^NzK&rQMyR%A1>I7=;8)PcyAST$4yiSsA!LWTcO1Kt z^o#<Zd4}C|*;=`}ofKOdMr%cW$n%9r|1|4Pm7rcBfvB-&egwKhv}%SsD|%=Q_Y3%d zi)eWXV`%z${r7#DHnm^m?GLSPf1&+7i9^KTM5P7Hx!Cd(eGKu&aG{T4@&~t+*HSRF ze&~A@Waw0k+_UJM531t+O?;{`CJw1+mCrMkLF|t@pBbW!*vR`XWyF2crtqsDZ>P0c zqK5%gn^qBfnqgIqNl*#MZnEp$46b=7KWT(HRqnOqxH(3Txv5h3bTXS-UOWvWyr$c% z)~78W*T5EFikVkYVaQpT5nM~>I?n47WsSiZt#T>yI<=MW7M+YF<30HxPU1|c-tdMO zx;Qm-qvmy+_(YcPMTd?JgYrP8<pRHE;Lj`IS}kkd#+ZpMJl)1xN=r}#ARZs@`pD3z z-&0-{Qt>cnyEc$pQN<xwGi|$j`bwmaDIS|>S44##p%zT<XI6$Mo3;e*emZ&CD{bIn z@Ta_FP7hB%QTnZSpY1XoU=n!rOkayUW9rMk>suGjGCQ#SCUIxmxpt1O@A;OKSn;Is zr=f%4sd_IzQ(nMOZBP_wavnImA^v;P?bA#4T4VSD^+vnSX>YM3_~bRHWRcO((X2++ z>)lM!6R3JW<QJZiV&4-4O0z~eVu}+FkcTNAV@C4AQe(R)ybtC`H-^tt_9DHzog*I% z6SE|YzXb-#<x<Vm*nIUqJ8FpS?$3(knJY=nrd1!`FtJUN5swATBpeg}tU-wvEp1k% zsN<F9@$Tx4P05X1Grj-?L;*Q<tJp?nDk0BY328OY(8G#@LHuZeS-I_2&5iUB=O^ge z+f(C>w+T$Qy4wIIFPKy8xwF>B!~8TZA5Bs7yr1uD)l$v&JK^k8HBJ7ib)O4R6Nabb zB+l#j1rl|ZufB69!>r8I><E9}+Px*^8M`PqQL|q)`)zKokK8CHzNVi*t9Uvl_OHD~ zu(ZLh9a)f^xEvi@Dxz1xB1#-rF~nXNmAI(K_#98t<L$>M%SyHLogH~ePu*9G(sy}e zBMXQQ*M_ydH{Mvn@zT~az;vW*Uhd%Aj9qK)a@zeWC2G7SByI_Y8E^Z;Q|C^6{Rc2i zZib7LC0U#NG({$J-@AgwT$u@V<mm+kipMn<Ii0Vf6SHrs)F<K526$6XcMy_dY<fR( z$BA8?xF0rYOhdZVFc+S)K>i3Bu|kpMnYf=nD}~B<N^D5pjlAB)o3n*p=$7Mr0sM(h zomvTzP-4u&Q{GS^jO-I%#%#PN31QNh6&KM^2h1{x@ez`;Pjz<?8dKw;i#9%1ml;vW zBX8uaq9Fw7(uVe}tPF-;_4z>Sf|Vv)#kD06lz)eRd00K_QQQTY)F)M|>4i6@Rije- z*;IS(uWRO$$qy{DuN*u?HQw~B?}ce%K6}*%?j7o)6<vcEq%@qhM*KdJ`BIVupIx$N z>=+c#<+DTPr|Ag7oJJjDDn;5|3vjfz&1HyD$c&I;9##K1<ZVC$?rg;N+Xb)fT;zsS z;!$j-Zws`FR!l!>>CjgxJk_ez_XHZ&ooZ<m171kT?`oTw9OB(gFqzssdgf{wBX#d# zon+a7IO+<qWP+0|;<c=u9fpota4M|c^V2|esG+ms#AJ_4-Cnn76fLSZG;cr#Y{k8l z+sGbAU&VxFF#d*niJ1|R54pw9$lX+)tSOhne|U|d$~KQdy9$}llO0k~**r^EV2&P7 zk+tT@NKY<%HRiX7it@xPE1ymC?R#g2Xi`<m=8|t@7kMF%jzcI?T%U4MQA{V}xkQ&! z%Y4K9D+9VAFg*Tq>6fuj*>|Na=hzo^DrCmE?K-*ppY2?VM3AqwQM{bdu2>wuK%mKK z7aJ&Q?!^({iYPla#KYusc`cU2YaL<gpoj5PTT5M(99XcVn3~h1@W#v(Wiy`Ki6BC# zQ;ZWV3H7hsyZv~mL+M;c+s?(6evcWubUoyz8!4U29IuFJTCz1tBdtTs>T+|!9xa2L zPEeAa(f7p3xnpanOL%T2NAGp#?|>qM0~P_BzG0UsdoE@FS?2F!_9Jm(y6Vj(dwjA* z>3;yxWZ^3!KZ@Up{XJs-HTDry0QkKuvsL~5l>P<B$sB_pGr1^gGyjf6{Hj;N)gySg z@@Xi3KaPGq!ow@@V_7=#7=V5M>-r%_8JJM_*`=la3(3OqVZ#3SA>pgr->dk)uKM>U zv77L0|M%$sG4u@oKY8mu79>zHX#|>P;==CG(LYAwIkT8d94}|dRR&W65M3}5c3lm2 z*^RX<g2XfjofEz7y3)>nhHefxlumQ;Jf_F)c-R<dYQ{mk-LPe?%|ydEa$^hnl8F*K zl1rhW(*OLn+$mw#Vk}5n+yVIBM9D4?2P9e>^bXMq@-%({BBCMSi~I`(bF#O#KiuPd z_YGPn$ya!w#k~~VRA0Vh9%1jWFfR$h;T!Rs5B}$}P-G>zOW9KSAp>CC2|V!VvY)uQ z8B%=t{W=)w4uX6|F8E{ed2HF=JCO^@5`#xXHuaqbv1ln65Zk$d-R=UwYb9SMo15JP zOLc%3XaUBSsUCdR?=9@6+MWS>RU_os+4-uKw<LM33zUR3Hr@{NgI%k_9U~qak7<>M zECx7=W;o-|Z@rsu>T>ZsnE)l$U&|Rj`S`LziGwT|G2kzTOPK|rC&>w?g~RXG0r2eX zvl=dbqk0sx_6#Ywdjvc@pQH0M`>6RWOt9Wh*or2{g|#^VbQgxp5!d%?z%ELy%K45P zU}*~_BUVMA&9a4#^&A6TnuP?rx3Z-=wVu1VU@o)%&aUGu50mhR;4{x@W-}@~6RJ#y zn&x9!+CAUjTHmrSBH?Ix(=|x>@0*o4E9SH<v39BaB>vZ{DL`Pz&)EiTjP67m03=JW zz-$Ohk_k9z%L0xRil^qlrhYpe?;6_PbGe>yB3{Zv4@7kag!h23b-w~t#ZF#^tkVYd zlM$)DLM+Icr&~RoUp_^BO2GEkXGLmxv4LFuQo!=o*GH@?9jK+T4%R$*q$L1@_L0xl zU=bwf%pC*<iv>Vqsi@+4Oiupu9(kemM03zgNp;wJ1&-L}>e_b#fPLBWR&?Jz{<6z+ zy-ziuQc~>*$kq@r_VR$9oUtq*nKMvl(aLF*_?CC1tUmY4os)b9{{W1!+hjHpRscpJ zY5OVzAs)E&6$2`A!+F3pR0V^>TjZ^pnIz<t&nBiiKKMk6MEx+35(}C<&<G6*E46Ip zvx^>2EH|M9UFNNZ&ND;kf;5OErHLnS4>In^^(|J+aa8WEkBkbx2e33FW&NQX2bazU zFrJM8Npxt$DGS}-2$E2xmFs(fg;Xo8J=C{>#Gw6Y7E}@zFk0x4kxHkf{e^D>rEqIl zhK~i{u~s^M2M^C<6Q{-ln}=i0YfVWEf?CQjaBp*MKUI&;HjXTfw3#hchfnawCl0-_ zSStUsKD8W!GrI7NiNRYent-Ri3uv`gfNa*Xo$G!41aTQnENIYxKk!MU$PY8D6nVi^ zg82nlh(1Ot?GC2Y@9KfTkkIE8zjvoYB{6s30GoM)fKq$B>F8mr_#tz&`@tMx-g9+W z5Ea@-c^oP?P#Zmf=2uPxp3<huLH6wLOp7{xic+sYs#rSp-!P7Cl0nCK1ys9&59+`O z&~YU<(izIZOAwIppoR9cJ%o{1%CAsj#kU+hb;fDHxGcclZzX0zH-=56Y3TJ0RDGeZ zGC^?^5^dY6>Vx@m!-4jw*33mCb)D@2Obw;<JO6-xpRZ{cND8yJK9*bK+p?xCPGIV^ z3-x`3y61<Abo8?^oo#V=GN|Y@#V&r@4t33~+k2H2F=K$tFUl2lvOiYU$j0H$K`~~F zM%UDWp3-+v<9g9MLO?IjIhYv{inPEnJ>ZsE!i|<dck;k(UBe{gJX!@k4O7)PQOL=0 zsc~O1Y9`h=X$DWZHXnGAd+7`Bt49dR5NV~>V~c^8KnN!XsJd<I^FxLh+qDHOy59VC z>08)8w?&x7Uq}>XscR{;Akz{P>$?xTsguqk#c*~`byJ(F%;Ot9Oeh2mS~j~=1?7_x zXH-r~$_`!O-xP0WjIa`VnHYW3FQZyejElfP<s!9jmb$=A2;7S$TUR9vV=>wHYOc!* zd?KfOs0$>NjByQgsd2)cz!B!npr%`E+xRii<1fPF(gz!GLM!xfU)P(kghENG)a(|0 z#|6SvTIYYj*xz3SBg9Q)1e~yu=imV+#+e^H-LV$P3vY#%?$43Un&~~gdYGSB$%YWE zkJM02H-XI>lz(>}U;*e9<{&lDNn0gA{NLzya#MH6#Zz|ZP*>juVu==zly|05moSRw zq02a)23c&gM1uPG@xUZhqbkvHS1<q?)wjQ!dw#psNTUhwpW8QVkgqFXWfWO8(Gf8$ zi{d&w7%MdJJ4K>$k0;;62-Ww1gp#8eTOQ()>PsK>(y{N7T8G_lP|LbHYRKTL`|bm2 zx*3c_V~!%6Yqv0atC45f$kEQ(ZxVR=vzvHBdsWx64Fl;rNcB=Yc*LXe)Iw`9liQpQ z<@8|Fm2)N3-Xi*sC|0Z=@Z0t{O06>yy?6+o%<HiaC+K?7l|UP^a>=#aVUpX!nKkq5 zRgx~}SV724X78<X51O9?$zeG0D!&N4Xotgxwnk8I%>0~kKpgOLQcf9(`J^|UO5`#O zj2C;OfJw93!W33RW~-fUk~?1JwZG>$>M&3qk_NBiGNr58rq2^8;C=UDxrMhhuuAol zshFGU$9b|VYnEn{3oazk{BgE0z(Ghvce>PDtO^g#;A-soc9L%iXqc=_p)cCU>;1Ur zM^YsTw}Ig_nkIEp?W#sfK6WsxXx*3VPxd4AdmkqiRIkSoG>^0u8i<@zB*N}W{05IO zQhjLMNgy{CwGqZwyi-UN>~nZ9;Mf)Ct3QOTOF52MmX^0e$;J>)N+%Oag6!Fff<o1S zl>ALl2YUhS5<yKIhb`Mk{(Sk-Vh^g_(r=q9I7;C7Tt43UQMA~XF(twlj-z$xPS64; z$unX6aeeIQwMD?)^W+l+L8BlxxDv#9-hjy4Vv}T_i|N1j8ioir09(tA-#j3bc??y` z1`~k`e+K;eUZn1X2mk!{@7YL%FMI>rW@q{BKW_SaI<l$d9kFUnqWj0}`My_(ArNE_ zGsY#SqyIY%8n=e^SbN?%;E$c<`=hWyP!s1%ny7X4zY~#K0wUS{l5vXvzW1~gcw~f# zz17Ko&5^(Vx_5$sX?Mg|{f|-m|H6YSUM5(I)w;@XmH--iEI@9qP{3|VLsL`p8nsQ& zUw2Gy<O2;*8o+s<2Q7|b*R@%SDXmZMf5e48+LR1T?GDOEg2n2OD~f?~o;t)sX~N5O z2h@sLr9KiYvE7mS>zh7a*9S?(b*MCzd97rk;;$;kam%m&J?K8<$623mc(Sp{Jqvof zz?>{5&n^nAtXt5qR1DG^XUE#@Uj03U5odielU!Tgdu-^qf%e$*V)|1*c{JJQ;9a&T zB)ch4`y>RWL4mR)T`ophJdQ^pf#k15lVKYV!<wg(83tc{Zky0R;m4F?c!mGjF8(HI z!Uzh58<1=NOrhPlL+ATfrzLsswRg;LYN#lL3jMfaRd{mLngY(ozqp&<Uo7aylE9?g zB=jDU{;z4p&<C?hW%qd9?$3MweTGDQz%GbA-0}7QoYFE5Fr!uX@on~h{gMDE?Rt5J zts5Kvcpw~~9qh~5H?E`jBYpmB;fTP(nK~nqd6nS?KDLQV3kvL(V>QAzIAZ6n{CV3S zPO#E#L|Z`O!gh8UTg%5X8z56DhM_ET<5W%yMi=OgT9r*46q@iq{`D0|YrZdpjtiqp z8$N_|CJ@y=hj)1cj!*8~jyJyG3Oxu1RW3xOYEYg^pt<Yu$J3_Zz%8Dr3u-va7%_$i zJ$02j9&3FiAj>GUzq67DQGEuPEkw`j<9?*WDdK+Gio?)^;a=G*$5H<Bi12D>=Qn<< zci&Tx-AVd=n}I<r(Yzv|Mx)yG#oFTN2)5K~-kYT)PujfqYcT)*q*w<a1Igfl30pE& zB0R(aYzSNl*-9=D6H?`%*(ffj8@lXjLurNj<%QQ&+4XANO+0jK6knJCJ)t{MIn@$d zUxyGUI-b$AB69iQADaXs5y$Z1i3;hK!;BH!J`gz#L+{c&@J&#Z5nE5Ak?0oiHn;HF z`4UvU+(2UWr8ir}68h}08gD}s>e>@Xg@TG%q!#pIjJ10V3}y^y+l3}N4x9FappH}0 z_`%8M@KQKShd}1hno`I9!HE2{a+JwsOQ6=2LWM7VL|5k%#d^}6rjz|3c3QdGEoTYs zX{n9X5ce&{Ns_GBbUMuKu&d=3g6VLt6`+l!Tae(Cf_y4-@eDTF1Ldq@ppR4{`mv<g z;>93(Pn+gV!0oY(6^<0;sZmwGFr~jg`QV*}12lz>kkU_VkA(I04s-<Qbe>!=<Dr|u zrVwDq;S|qm@4nWju0y#4*?Ywuao)hpiY)7qlJmu=a5`b_m|bX{sz55DpPIc>87mIQ z8$M-S)rIzj{IU<k7^cJKN<-E>CK>`tOnaCqm(41Ri+N66(D$weX2W7!;GvT@sjrPg zGR!@iISj!a$oh!b73|W-rOX1Ks00e`?T5L?D+l?3-V-W^S+K7~_*0x<Uyf?N9iwA} zt#At67i|hYdS)Kt58m>>p}S=~J&(00IEUL;g*AIBAaLTH;_F(!E%5X3fOzM#RWcTq zNa-YD<xwRG+c@dj6IUlY2Q&{#%{55428B1?8D=Kf-qp%jTn6$MKROn9rMCivQ3s({ zF3+T^)>Bla-1hc><vxH6js|ItJCNecr^o0%hvw9Z$*kvV@OQ@oKd;YT=O|Jz3qwWC zsNA$`{qSJ#-wI6Al)6I(ybiq9v{Q1cz?dn8lJy9*k!r8yj9h4<uLy&Ke+U{*b$Bs& zD(FniESlmO!nKcl2Xk#57P3uLdcEYVAappM(tc@<-EDlxDTxlIK~F%(aw`vg#9i5f zZ@0DXdg+&W{Jj^+ltDg1%rb>f#1vBp5#}gC%()vErvlikR0rI~u03Kk0Bg7})_Ksb zs#fjlp!NJ#$jsweiLrbgA@w)q4s&Wf1CXqL#*;^TZ>a$;peTm9Ef|JTf||)Z|DCZh zmuXtc45T8KX0ZS~R)?r$gzm<WF@0&MgsRR{q?kvKhbgNM<Z|0mH}>{`996-wJ8QJG zBsB(_zf%=o34;g~dC%dRMu!aH!V+a&#oOAbFI_h4(ig*663JAPkNw!0d|nbO%En#N z3cD|+jG%!WZn45c$}}y069Onp;8Zwv%d!NhnTw(y9~^;ncd??@{JsJ~I;N>t-FXBM zB$EeC<cIm_owt_z3o4;+vj_Dq%}g2n!Q{SDz%%F+w$+)TsMu;j*A`$T`v^oedv;%$ zVFOI9yp}GR1xTF_pU+o%di66eq!-v7dKnKPvbGeBr_Ady;I=<pJ-98MhE%ByTl%$` zm9xO1=oU>w>?6ULf^!Fe1c#{DSq}Pa)AdbgBo1iW>*d3oJ8VtevjR!jv+t<{WZ?*h z08*<Q;uv=lQl8zfZ8heip+~o%>$M!I6p)6Y?!&(}fr@0KbsqPbxF@;f*GS}l;-K#4 zb~zv`I_c*6QEu6W1)49A?p#ZMjhze&85`?iD={(Z-f`X^>mfn|w_=2)Kj!I~2z$IZ zZ<*ugOs5=Cy5#SB^V~nY3{eA{;W_YvF?oSh@S}J%d%7ThU7F^OKRQdXzFn|j1A*F& zDd}qaa*EG_h?a$glSkg{%ZFEzky6=}wRlRXD-;&9W=oYE$dtZY@^Rj8_#N!-_t|T| z0Kmb2QEDTNIECjZ+R^X5#`G;(>>Y_skS~jyE-&s}+_y&C&=&l7>A3jE&cGN_sfXPa zQzpT3aCl0l&&FtffNOZB-Mx+yOB?#I<_aZqAbCCO^e|&~X}?xrwK*#yiY;uP*y0-4 zT3;{+`l1a5W>&C(ODgE_si~5UNS=Tr(SDSeudAaQ6zfQyJ|;QDEee0+I6B<~6rkSS z07!8%5U+F1tjTTEa5DnO^SY8imS73&aaKEB(@Ab`0}A6_%N9^Xz;z!)@DO%{>%cwx zsFEvEVZ7W{t(kF6k)C*EKSBaH#OzBsi4=Uy#ZtV9v%adNCSxuyRW6C}AFtw2G7Lj9 z08NvH+n!tfRTi^#_x&X^NDYd#tjb?uX)*8hZ0ZTHY|9FcFHrP&WX8M&)u4}NSy>Uv z=t9Ib^bJ?&RIjizv1LhAM<*e!gbOWRa?%0bQc2NU!B$<5H8e1|D=I|;N<FnNS*F#M z0aC<afhNjb!}f2F0iH4+mJ?A1Qfz$Ckn5zq_t$9wS@a&|y&I$93%}lnEl0`?wQgHa zsxSz*LdX?yVj|UmN~cxh?ox6jb+#2c(}v(s(s7Wp*-`YW0~P5}hxTMX%eeReUG6S( zwJjOcTrWyT+@jd>^g>MJ?L9j3h}i^cJKieOEF6z-Avp~LbJZ0KF-SCWbT96uY*aQT z5FO+8o!c%pOAIZ^V`~>!Wt@^Cy|ziZJ#5bZSZ-pv*!@AhJAu%Li9#_Y>*R+?ON8he zMV{#>RC&oP9VDWg?MP>pmn!?DD}w<JGS+a|oCu1q`4h&9r~(!4xT=mY_WukaaeTDN zfb&gBCV-EZ&C!`IM`;ec84UODLE+zb6_Ezvr0mvsnFT)Lp|?@+e-)G7AOSAD<zcJM z|6^@>i}{e5z)9g#c7y}(XW#<yvwzx9so~GK`JZtjD?a=<V4TsG<j08oGwX`*fY5b* z<QdD)tNi2V<aqF7iDj~Kf}c_B&nsgu^tuMpt@VY$<34FeSs~zrvyH_xKj!b)9>-^% z<nx&O?uf##Vtue4l%c-2W|$IS`5YaWSFU&Kic<c-nZEqTZ=^Wy#6LfaN5qs<7p1Oi z3Y(-u%oy-r*)<=Hg)_|+eXRIvCI&O7Ae0HxKxN>$X-|gK$o)^h9{MPLFDc9U2HO*i z-eRE1CfE8ceCETedzN7P!)N@KrZseuf`N{M;P0nfM`YcrM#`+Uc0q<^;QMn-A_!nS z&gnm6!~1qtEGt&;Yr+qln=<u5?hh@1AK4f#zOuNtNNM)+qjKs09=~9KgsGzfDSqAO z@1G(N@bdoexBnQr{~NUk9Ul-X7zELc=aoX+|AE7}U~3JT?-CCA>>U3L)NnXBS^=aw z{^fKuht6!jc|25s1V8Y7;m`(dZ(o7l81VVYmN@#sV$%)kEr!-!Mp{L}m4?=hf3}i{ zG2DZBc>~|j4*#LfI22Ke;eUrpxuC3ds1?!XyS>QeHgTg!r?M@h*21wh7|+gBo9K`I zg$dhT`&CqO5yz*D0N^cS=+P{N6X^D!G-Gyujub+Pdp;tDM6-lz`=en|GJkBf$Y}0@ zsf&x_+dq+`0B!Gx;s{ZFD^j17I)Ft@w_G9H^}S~a&s_rD2SU(?F!~jc6aW4WI4fLN zKN~dDx#eOrvvuIY4lRz(R8|2TGP1R?WDU7g2DZt|6T;Wdz5k&M6!mSx^>ACsys%NG zT|3|6Lc`c*S=)xepD>>ogFNgRmr@50`7|)3*sMT+&+kx9%2!<gQX#Z<ZCv%Q_?#BC zu|^SCcD~g)l?6!SHip3_LUII~9XUcvLB)n~vPTKFeZjHuFu#BQ+$(56%mrPFl3Q<% z&5c%;0`<Sn3jXV?$)_13H>^F!jMOT_hL+>o-_GAEF}0RrJN%D*`};}$`mE1~a(kL1 zemHot3@KKtn1k30EC8waIX1=1QM+vlJ+?igJ|zGR<R&_Q2wCs&+T$)>tUEwzKVbwN ze|dlvI0BNc1#N-zkOK3fQ;twwr~}hp6Ceo7XN~NY-I>e<6?#5!@_?lEu~4+c4TAI- zZQBsgzhkrC3Ff>O!&NyuT&uQLedz=9x&J^pp0k5sfa9k@QaHdbL7`v)+5<=(%Jm?{ zKCfFf7?4@7wFNa}$V)+s9iLJQ+he~8Zw^>(V_r)oN>1)$Qne;sPaGG^-6~)07i7Dl zeX=o%Q1!5aGKhm7LJbrG4Cy^qAB;WvElU5f4~x|h0VqQv#3IGuMWBkBH7-(j$izsV z0*8vlCs-T$jT(smXQI`ix=Qc_p|s0~K^!j8zx^4K*mqPJ(87C>w$;nwb7%bmfGg4C z`BndcYkt-CUR-yPe@lGywHGehLFDV}GuVQIy3#OYTq*=6g;D2jbXSi;C$P;k4=9u8 zKU5XRRw>?90K#2)=jv`CfH*6hdG<5ii)--ci_G4Lyv?zDaK%8*55j+}J%)%(ycv}T zmxXy*BmtH>*7;I4h{iS;+pU8wZ<pmSPYl?;JStr_ZeQ<9Fr#)}v-oxO0Fwe%)?mcn zDVB6m1^O-6)$<ePy7eISUD2C$6m{RUQISIa*E~~z1+ddQ{SMmGyqie-uAm}W6!_4# zX0{p286nX;C7)r+nL)9`zV9hCINL^w@LCS{Vq@)w4$$R+9H-i7WxB&@bauKu-Wb+~ zZbhT%#Z1un@0@y@I9CEpsj$N*FTR9|j4{ISPe9yT%oEW$Dk8cjz>oKhHHAw&8Twbv zu^seH-~J!&-a0C(HGUse1SJ$uKomq!IjA65q!NRuU=RXB51=UBDea(uMHr}nlprw! zL)Rc6At)^{^pGMQqIBKQR?%aed)K{pt?&A--+#w5?3uma_uZd-p64@Jx$}g5d_tZ( zy!=V0?`+Gm8&EK-kGbQ=DJ7XP1k(?6U^J9BD-l<}JloY}NgUz<iqy!dM`F{EbwE*P z!myxubS9+gob(8&wM2)Xw5QPhOLdQCJCsxBOlTxG`O2=t?xKx(**_651m)SWyorKz z2<vk#7amy38U*3!+(F&f0^}m@WZZ!y9I5kLf-p}C{H<(<&mWydNRo7+viUJnbU=oS zonoHjp<&;{*0nI^XCT5T$F{zVTRuegjrV^5c=jRyo~VkWKZE*zU5(;0L9k07FWE$` zy%;}YqHmRRYS`n`@wONLaMoW<4gC74`WR<bodbWKMdW(!QxFwy#qDDH(@G)NKSZES zCc9Z!@BaF$-)g&%aWF#d_ZDyYU(5$Q1jMHB@&DdOkG#H@9$ELuZko}K+y>D8x&k6e zhp)4ivwZjLC;~Oe1=j;X$Ox!YZ-e@57}wUB3r%@<H2-~uYOdxu6ZR?#M7FH~2^96v zmeqz?Fo^MeSMhp{+KS?#0Hc=)l<@XFzPnB-h1_AmuWdLMX`LwDY^G*bLW=c}!yiFE zVGP_}x2fvdxBCdZM?rg@WEZ3S@_g=fRr()pnAsA}7Jo<W(>$5iG=rXxspaO6e0vE3 z*(er7B6=K@`!s)0M}PLGzU7m@CM+l}8Ysm-nvAk}_a7(iM|<mk>T)VseUJvD8n}|P zZEe-pVa;h69~$2C3;Xv=^7Ba|VYKPP?N9c<bN`DmfagMG!RwU%rc8mF*%Awl{$@5o zV|}L%8`)C!Wu!&vVv!C}OLjFB5lsQy;#@kmk6#B$<cRTq0Did@ri)kreOV`VG3MpV zR;VwI6BeOlTA7kRE;D-^49Dh?G-BkDdD!XNTzgPaL2y~vD=jIPo1hD`xl(iO)md9) z)G>G<o`!~At*vhjuz-ANXBO}g;b*WynxsOYv*l*fI1AP50Jh?@<b#{|5R?;A=7!o$ zm0{Jh2RHY<DKxu0r4qReT%tFgpUr=V8KSl!Kk&Y!S9$B(3s?hxu`-XPPqNy8Ir3?! z2@$IFms~K;?(mHVoNG47v|Ve-iahiT>JuE`WFbt8YYnw3*qO?EOe8roWgcm4AY8U~ zaEX@3Y!3a{m+$t2_7<FF?Dfq$loV8okpMJ^)xU@}PDuz|f_G@_v5JDty?e|DdkdhH zw=8h_b34vdrLs{z58zFXz#VD@PeLAkuurxP*qEj;^e6S60P!tgUOr~ILyOBCd?JVh zMa8!HY+)bmT3yKwbLw<<1aL_!3^W=A)p^^I-erSk0!A3L(405`gq95mh}N+Eoy+Oz zn9EZQ%TSgk5pZ)*k*|5&hqwSULT(vQjcSmFyJZB@Em6I85>_42rf}`F%AbB>(VF&V zWny*Za7F~q6BvtrbOJfA6;2Fsk2EGcl7PS{3$%#3dHx75xU`W1!4-r3l(dC6$|A(U z$77zcywdj84B}JI0wN<NYdajVowyUo6cCH<*H~n(lsX2Nike;^ju7k?1uZ*Tc-0b( z5r|r*@%!SttcS<Tgh{E%IlZ*3A-iqg?y+p=OMX?4%mPD*r3fbwfZA787+I~5P<9l` zqz-$AAh0k8LAwn2mqaHyJrfp!>2=X2PIERVwH}9<qZo;Y6km2rxU@jUGYOtWEm>Cr zq?*i$Q7qd9bOxW~&-LDGij`+qPZb9M$4En50Q<Hm2!RP#&=FKp^uw@>W>6<hlVOl( z1o@52&_1^-T7VJbO9@|5EZjjiRxk@dl_VD`z8BDGUz#mk^~;sdaMxU`Jy3H63SoOS z+n*<GMS)#y^wX7Y1i>3jcfZUfs$ght`Mrz$#K&?4@P48hNw`&2O(KK~>QtgoKv;zM z05dtn5K9v^4xulrp=mI$<g`>Ef<H=vYJ??($RWAsWwvZk$}~k6npI8E&Vb*)h7fDp zGtFD;y$f-c03$hF<({6Gc4Xf9CTJYyy<R}Dco6$H-Q8Y2=b8m7X5}!Eps!f9P&bO` zRSyi=7JBhXlv57a<W{=Fue$xCa37$e-;T6xfYP0#jlkyA{T4tAr431p*h<v;Iy>Rh z6<eJ;!n-&2n3Yx^wJD^abf6o`?D8yM76^I=g7~$C$t-+a(=wgLn7IXe_RkxCxMr?$ zik+(rBIUjx)=_gQX;3oX-wlaNtiCEhF&zjm&h(fh#&TUGMXfG07k11=3>$hD)9lX~ zC#9Y`hvvf#H)cbbE!0q59fdPEaM~R>%pIl<Q2}v)UbBkjJ?$_L_mFlXocCg%1=44e zfW~6fVL!7FO}@<@MXrr8>WJ7;?PZ7$i_qhlI7xVi-B}5I>z<|-D2RVL-OR7c5>s$6 zerAs;K(soppo11-qjoob30?#%*}=#_`}U^%1j|{omW@dDFwmTWZGXFncNFazce;%+ zT0kflE4=%!Jb-2!6!oN2c5MeiiAdCYr<)NHu330W5N3*^D|taS03WM^!lj-D@Q4<x zPr|)?VkO_Mdrhia2FpdK+l@yn5Gu06Cp9_sLJ#*sUcv<JadbY8_6=B;wz0lEYkZ}< zAv$%1n|AqZ!0xdw;_z8Ns}Ri#j)jwpNF0hlLj9QV=Tf}n`|2tjr#`$J=gUz@Mj!1D zO+G+!<$S^$7|;ks!M^RBuA`|#YG$tPx`IVJkSJVEcs<$&=hdiwZ#b_LKYz`IBcVdI z@?YU`E+5ng^1^p*!JgV5iMu495-sorYO9!N_jr~OLm2;Oxd4_kh)z{#<%879Ck8}9 zPp5fSV{yTupmGKJY!)IN);H;Rgf0aTF}}VD9uboh!=}mOZNoJj=Cp1|7pS>k4^w#D z4A)De7JyS04u3N0@nGEMZQvdx<yC23(C5PtGhFehGPPm@&jH};0)0>h{(A$*KZrE# zNHc{j>&v|kCx<uc|Cj)Eyq<qx3$ka2C?0s#cV{vMZWOxiw-ym{t3eKRXS#oonmhl- z$|iYox6sCyJfoMcT{RqoBDo_ro<iOswCR>Oj+e9uv~1pVvdoB4)w7<m1XYv^0Ge7Q z7f1VuE@m6N4T6Qx!X7Y95`3jP(%5cr$6W96jurUA#x4{dtEBko+<dbBKUWi%AGIEC zb2q8ym&e7>WO~)Au$0n1A}y0o4lRPW7=@;57N|X*K6$mOfA}G<r#rz*{*iaW{3qL+ zBVTWv``!(P^EaFEg%@b#ZtneQy0;yMow;sMa|7BN@mEwZ_23qIdHj@Ej0}@3$;273 znk}FOG*b3R)yc{4ADqF#QPqZ3X46;~d5x$^LFEP;&^*122)K@vEkk25C%D>S7k_Qy z!K-LGf4kw?_o8tj`Ul>pckEA($iDk!8Tzj2kYMDU@6p#!+QR~xuH9u=bh9gZgq~fv z3ep_T+0)uR0}Xb=9l7bQYP9(dlJ1Uz3C|=0R*th2a3UQg?A5Jxg?HGDGz*!PQ7%<S z%a2@ANfQ?*tVQ&+ekix)Gj!Esw)<cQIoA8-CwvlzSk!`zRWLnP$qf7sf~n0-MWNT@ zxV`|mWiyo)TdguC3o67_@k|F0&lC1J#Ef9G9#1q2U=ymSeoolggnqdLpMZxsdK^ZZ zIP8^ts_o^85h9(}_mMS%cM4Z|Q@tBz9ce<hIzv6E4UnUOmdEp(cSPX?Nk(U+6TGUR zWl}11QHFSvs&nvo3iPH`sPXR#nO~VbZ%;KS-<Z`4b!V=?4vM08&mS%-<hZOw8eH>8 z-2I_yF_EXs-R2E7GcQ*ErLLppMFUs0BrTznc^{2A9g>@##o%HaV=fN+bC@GaqjU#I z?kCk6Yy=yU%eIqJ8&$DdkUrmYGOyDpKO8^uu+<967g->jJ6i>ENx^2NA!E9=E4TOg zTbH0dv|+^<k(=3oo&P+LcfM}duD#7p)ybZVcFSi)x!{v;nV2m2duPgO6UMi9P-#9f zV!1{$-=Q{|NDkM3&L-?f&}R>UyPstV+uBq8j9`)fl3Nd18}s$I9edZl{MV@QG~ikO zUtNvrrG&D`lboA&SAYB>RvfakY9>R4pH=o>euWARrM*bWodmic4(OM=oI-dliqFJo z{(g_ls_+b63s-Xle*EGu-}9CUJ{Q0Ik$Y`T*6hi*)l^b~Y=mz3Q4f*v?HMe9;@coL zwEJ{>7wz|Np~V3fskw0ZC$$zk2bc6^UjgovTBJ^{ZI<(AL$CT6cP|~$Z@2h~<^UI| zaDE{>;-}ysV<CV6Lu20*iXpgK4{9h7ES1}Xuyq#DBiakxT|GJ|2EM1aSaC)rDoF9R z{d4|9QL8A`+Jh@yhyA6iP5+=kn~Ji8w$C$P?VpX8AK8*EH*}VEeM&vPcHJ+_P0gJL zp>vv)G=cM%b^7<^av}R99sg3sLUQe^2n=gx|J&)m0;z7G{NWz$O3Q2hzTAPMaCqOX zQ0994$8J4<oAaM*`44p8LkygS)(EcVzhc1FQHX7Wqqddv<bT{-8dOqv7MVUQtfj=i zt^gPEW{LG0thH}{EXlVVP|guf(p66{9jU)B><2lxIa#;S`@f#Bwbg$o05*SAF>vHR zx{JFYefoGiAnZTxtrf|dmuY?x0s2?&8MqH_?tfs@1Ld($By0yXnkCdQYCmpm`Ab3Y zz%E!w?>;eGR_fAk$TcW-Cjl(VaX2AP3$$Glfp_i*{<j^#OFNp6Zp(iUp{+gwSc9a8 zt2aTQaLLvTh^M6vMc$y5)I@YJb4v84W8J8p+l-7%)sC~HD)g6HxsCv+<oBdmA=)?X zA9Dx7Ki@m%_Ou^pM9(hIL)K&B$0n2pYy)Hr?6JgJ64gGRV0WD(;Rb|G)=j^^J6uH+ zZ<yTN=;3fto$iL}vQtkNP*A%m-a>1;9f8z+MH@XkQUvIN5sF3tM134#0dcfSfCC)W z2E@NbOG**6?jI+OAVZmvfy(0=4RMN2Mb<GJK=Jn-lFntH-!lbCss)7kO@*GGh{lgO zFgEUGXzNrm6F?TR7LYz>P(jUtzbenvdm<9@>2B+6SFi=pZ-zQibNwcU%{o?UQCFTY zyrKX7HH&$HFcCoSXW%jOb>NOzKxG5wHjCx~A7<<plS0bA0P*@7=*a@YG=v07H_%j2 zYX>M=!Ti!(UjX3+I_Np5Riy%d>gu8va~AkIQjKWeW>;WSSj>)-w+1+jrk1xsG}l*v zbXkxHk?i)l8Z>aaawCO%6>JXaATee5g&^K*iW1Y0IbdL|&1g`yyuXFHTFmWMFNP|^ zSEfygxta;}t>QcKe(!Asy1>~<n61j~V`grF@yhtC<{$^2V0-M<!M8|hb`+AHlmwMH zA_?M#`(%J;3uNpPwT=t}C<S2~niO0#gQP-$)w>Mvo-{~#yTbP8cmQ=x*rxZiD<CEk zohCXh^C|`Ms?c{fW;cu=vOfqUidD}om6V`Tj<)r&Vyaz)E_CjVOh6ts0j`{N3Fjr; ziH!Zu9$J_l=_CI`b_DUi9ttE^7N<Wsnqog9#QYkDT^j;Sgb-$1aZnhNSk?;DecmM- zHf~OVgDy&zq)mpo$_4=8yqMjQp8yr(H#3f#ja#)g9l^WaALGYX=Wty3qu|8#0&L>x z?c4V%<xnzTg|wS>(O4c+L(0^_l#-D0@!^8G7Z^B4j<DZ(pM-(hGhB9*oMjQ(ZU}9p zCO|46053WeyP$D5?o#>voqbIs3>=C<k0DdfM>ruwrwL2Q<HJu{8b`0@D^16pDnU?5 zHp+<NiAwh~5)#cXf`kchRLTzXYo^7}>Gw(aC+nmCF;!~^pyCG#WvT{6$@v((;T9<$ zUT2ow5S#W8+P*+d$3|d57v_FDts--x4_=%`;F$s`P3gB=97n@$jFi3ibV#o?%whkO z^GA1xi;8mQ$?o@zsK^w$xyYlhUL3vNb!Nt~S<M(B2-fw&Q200Fg{vNjqLX&)oj}z) z3($SbGnI89A6ALI53gUP-*SQ<$a(jA)kDpNTQEGH_#R*B3YMnBhM7we<d()WS7k2a zfN1j)XL2k7$-mK$=-C9{T5WH3@=ih|mmcw(Y?2R&F;l&cKTpzcxP>m@E8sN&-Dm@m zL)hZCi1JvDNo;ceOWJyv+Sv*0JWlms_JRgLAILMIzyMV&%_WC?8Omr-u#3X+G}SXw zvoW9_Nglke<_hJ$Bq)ZB@AT$u$S+(PF5I3iCe&-X{f`<x${y(U(d{W4v8VQR%b*<a z0VL*axVsJ6?z7}(z`{<{$rnYJ9Yxp08Q|#hi>sg})s9rTo&vw&+7gtkrhHSOn&m^G z%&+R?h>iyKpwo+}RUxWSS{;^B90_J3x+l<isD<##!Q5>Fqc8_GV-c!Agi4lBEcnVK zxLCs-L7B&zDtJGJrk5=`tf#%)CHZa}0!HqkY9#5RbAY2`j-w`>AjgS3dRcax^eoks zji?VPpHmT`)2u!Tl=O2eH1hw1!=T1#0mbt*Ri!u>Nqb31?-JY4UZM0wFx!dFpYtEB zEF~vQsj|ctIYQT}1tx5ft3J`rGV=`cy*ha4%h-(#^pl4{g{wN@2wJ|2#b+Fds%Uqj zx9h4>cS5%sd0|;J$^(-zfrD)x1`Bv)IF0a8=1R3Kr{ss%&;;sGTL0evX;6QE<x?kv zK;CYWXf$s7a&zIzH5s4HG#qD{P8}45`rI|+V9!gby?W{ID`iP}I1f?*ZFFWpnflA$ zjo1y;IMTE!I4FBM@-@wY7FBdS?;&^AiOGAaTyb0qk510VrW}2BFh}*Ni=K@OG&4gD zy&0^aeYl0cUNkf{1g9W$P8m2d4b>FMpCQi<6F_l@U$;(_xz&`g7u3sn9?%MtBXFYV zpkU227S@G{uYmGJIGH_zjBUsVQ*TMZ<CoqRe`%l7f!u^EYFLY$3zPX}Dq&#s@#biC zSBa-cuc6<zW&5uo5JcX+%(ugIN}U;np>ycPA9?2<b6bMhJg6od(@7+{<MH!RzPm#R z7qStAVASy5Rj7|PJA|o|41g@9)9mW)v~r=G4G2gkyXvopddYK)AT>q<7gHTYcatZs zekBQ?#QIDi`AG$TPCOU5baZJJslK9L7C<lj(=Oif_IQd}|C8g^JsG(3LfqI8AHKi` zK5UbQ3xsz`f=zfUwk#CD!|tR1NjRnQoA@b2UO!m!Sc?5eth-U_>)QaD&3fDP<8}EX zF{b5`?hDU|*e;imq$rwa_8USlnDlx)dqJ_XcLdI{@wAL7SZnL!1U@(PQ%5uo=bDqH zK5Z&4PabmE!q%>8-~csqJt)+NmL71!%(+T=BmlnD3K0QhA84>*Dv;bdA*6#{Dp;P; z775L-u>t(A29%J#R*_9!Kv8Jn9gMG;;8lP^Dhu&Gs0fNZLX`4`n~&Fs?#u9J{oSE+ z1?ExgWV+KKAt?(RLa{fpqV}siQ&>pM+kj2DyXDdTCn{nU!iEiRG3Z)m=BK|mbGs<d z9fRO{o0pd(Z_?XNkR)`;A6TC7HmWEABufQY)%L^`lEtom1_!MAwQJTdUUtXQo-6lb zA0Wozae`_pXNIBUZUwQAwNJHR`zvBTo>xeNBNV!&x{;Qvv{>{(+_@CyCPV_z5isL< zX6V60fjOM;mgMcEMSxe7`9<UOgMMZ|YccSht#$VgncNW*1Qi0%ol`nvWGO5km|@;} zOr&J#X!$OKqE9l*&dl~Wvw~A+9JVw+HOvlZ%&>&<;)GMj+Jqm>T<E_>`*?aYls852 zfLkmzN^u<1VpWm?#mJ@?XYQ$f?CtzLewK?zu+aVe-PFt%u~37og;osX?3)ByQthkV zCUI3wvTgfGPZOrpm?YkqLfGZlSBP79{Fi$Naeevc{IW=1l=e^L9%@UFOcR+8@?oQ{ zafwLUkjC^!T2RUyndg3Sx7uE%Bb2tF0x9m432=_)H{q6@pN#v*g+t~{Aw09(+yKmg z{_!HQKTq>jXna<qiYX{*!%-f$VyG0ce5ZcNj=x3=+x9659`)^y|Ksd@TX&Q#G^=>Z z?Rt5CUz=|k4wp29Tr^(&DSy8{5Q*mBeR`gA{_i=PTp+|JUixB({&@bc`3bi#d~7Se zpRnx@Q}gZSK@T^CON0L2f22)&;NxAjckutw`=vy>PSj6I{_vPzzYZRqS<%1p13Wp% z)iosvxq94fb+xNjb5EZQG|9EqpkJ#>%pX)LO<Z_j$gdR|<{GZq&pYpY^f~+5Ez6w; z_xorn)#g3*RhjOW1JyN_R#|Srt>F@_qU-X$=V2%;OI_jEf{5;F(@2-w&&@<Vp`2N1 z3sz1$bSL#F#XMKwlP4v26_;!4_c4TU*r&8c`38qIlq6o>m%ev_@5b86JI5cnsxa4k zJe@UMNc;26Rz;~0jN2W}0lP;FSvl9&wu0+0<b|J=L+$oJX12>aX7~!oCogQNZp%78 zLJ|p8FS7i;sY=~c;UQONW)7tvE<EDeFHh`bo!eAKwc-ggK{&5DB-<=;QqyoVa@}%& z%7LfOQKeju&oQ&e)XHpn=`fa08rRLtY|7GFOt8<juo4MsYHA{;-qsR{p>~i~YLzbD z-6ThSneIdQz-FssJ9*x52M20;40se*y;@v!-*hEnQEFgqjb2a#RO3=OWiu9~LSwwS zUZvcJSB^$5^n7sNw=E3ZL9u{I*4?*2PF~#@`O~wOBD%>;Oze9CODRHPOrl3z;sj>a zsxor!>z8YqCp?x#*8R*!xp>xt{kU_-k5TT*dZ~N)c^-b!=f5X?*hbd6i6tTL1kZ?$ zJ!=P-Q5KSD(JQtGD7UF}PsS)-tbhD0z!(4RjpOR1SaI^$x8ME#tdNcPkM%F20)9z1 z!|lr7v&nC-DK?gci`zm=&;Mr+YRwpa-546AD)7JHa;{)XM9&joMi*i)eAN1jq1eaW zf8m!~|7k5u_~9X%0wO~HqqK368s2oQ2G#lV=gomH@D;FkeKK+yCbxhyv}$c_y~L2} zGHn_v<ynBl%K*~jbYTB82wq1~%@1HPJE`?G0jP)6yH41@Mbv8no#uz2*MzT6>LV@d z>gQs|hdGS%h8p6up-D?47fqY`yS4^U49?s*Uw_(po6aT*8i5ppa(X@ifh;IP)FIMO z$yuP60a6~~dgwL)Syi0W03`~9X9R(XDAKg-x9$8_^<`~c?jYRO+lt<1r?}Qr+1lD( zlpcI8W_J<&l2*=jc6`jU_^=Z~;Rh$6Ck_1LTNP*k;eQE=EAj#gkS5TqyaHbR#gJ8l zv`U-#m*+dMAGRsU;dtv|?pfRYoyQXaPAU0e7r67x@h=FO{M9RQK3?852>wHhl`<hR zZ-Kt8vU9_}v-i2UlN!5`?#kM|e)})MIF!#x=QDP?>juuQ!xE`@dD%WSe~B@W*?-;j z5_$h!8#;&l=4a6`UEo+gqD_z#8TlGHDA1!5K?f>;)HICTvO;8BrA(cja{(V7H?>() zQ&UJ`PBnL{)%RpJ@-l_|<YM7v)?(eY8vx6E#75<-U%(o&)`>=gI~StLnxCH+w*4TN zH~8Y78}ujcY)pd51F`GufrFQIxnv_}j48&@Fc#7>!qongCr`F`tFOI@Kiy)aCfLN# zpomBN0>vqS;x}V(*Ysk2eZ8`jW&`B4{QLHmWC)}oh%x|wUxUG41T|^4T+HRmQ4&zL z$pXdw3Xla{eFga=e#$Pxf>(WN<C-J*Srasl0VbjFwm|Y$Io9=Pk8nu&JucQm<$m$# zIW+nNU?$@CB<S!cJU2$#v<&C>%ZD%r;Sv+8)Sr*HXD8b(!$?0j^<{nO3=1!ZzwNpo zi~hy>GTJmL3R!8c2W8ykeAjFiR@TKlwQN`U!P9GojFJidjM9}$hyMHKauXroxwCRB zN0M^eMJ^GM<}WgTu}#WnK+8&{|D5eFLY_YlM;#Z~!i}k^e?~Q5Pf*NV@aj16bK@KS zTp47I*uYx1aR~$S{coRRRT0Ei(0{{cZbB8Ay%gXxza7_a{|w|sYD81qxeR}9KJt6U zNJMh8rG*B2b=zBO))5b0-iJdka@D^7wQ>B7)iBSwSx=dOB9FCSK!wm;jcr}F&7+Qq zK&={7(Q_Qro(pfKiLRem$u;<PWxYJA@blu#aWiR&(?kiE@ilG$o4{*NF`*8BiLG+< zSR1A)moLX$hbP|I<m({KC1gzn72wM0JiXN|sGoar`y3REd3c0RaowR3$S*b@FRT_$ z6mea8&t0%pU`=##nECqB`??9Y<?&|E4gXRsyRxlL|IB999ZW3jd+OXMSo}B?zqERW zEcav^Vu&Hr_Cfzd<ad~t%895ZtkA5vQD`>~7BV%yfe!kD=UvNI^O={S)spTe%3a%8 zf0WdB$-~Y^CsgM$8b_j{Wt79zrH2?Mgibmnww|4pifm#gdM~ZY?V|YRXtCU^)~n}| zkIIpdZ*?MHK!tozd|dh66JVncLo*`Us%Ga_<K64gk1o2uGq2O<u{93g|622#lQBNA zUcNr2>(c^8k;<e&>__KFP7^{dm6`Xp1_|7ZPtVt@QuOG4Hz)r(Q&>@`9I(k={0Ub3 z^~Ai}4;I<2_CDW#v@=A3?_9R^k<8CH<KNe#rjY2e>v-SYzc@rV6I}jq5N%37D6O5M zUt`!nHzabNt;)Ib_j7tX8qVpiqhic|nB}iG!5sk~Pe~jn?D*R|1erQ`o3D?KQU+gm zH7l!bRLUwONzW*@wwg3EalAqCDn9;5dtUaq8Q)<B3)b91$&s8BXD6A)#5XZCz4El) z^4_1L_L^^p(5PK=@F0I@^TDn#&gSL&Ol0qopU3p8$&;gjL-F|f{SHcsqqO4FPU$pp z&)j?L3>lW+j#kt@3$wws9$&rxX`M~S#i;&PrjFXVeK+gn*{jR^gtaFv$M(PK%c^ta zJS1+L$4+n@Q4nPJv>h}`boC?;RPXkzqOucsrt0dUWxQG!H|)9Hf;Oogqvh`WN-BTp zVe1>C^2PX1Qo65_RR~7mhFRC_mXd?^{q81}6tPt<mbD+Df0{_KI?I>7f49iuN<cMF zxTXW^s!P#mL0)y1mC#~6Ke{q>fjp8N;xKBgrei)+HX?8YZ=@7&Jr?F{C=;;7JFMJK zbn0&MtFlplEAJ<qqWW3(4_ei&gjA@8gqk^X-R%zTbS1V<Dhiedk2uv_&8=A=vuOX` zaq5PtApQ4lpiWRTPaIjSj5ZV@-Z&!8MaqwG@NZ?cI^sGSV2B&n&Tbl2o1M>hs<K>s z*y?QbY<X^xl=qS^a;b*HkToY|dONG|imO^s?_;UpWrw@15#*6;tRWbW)Yis0eAA|h zSP3)7o;b`u_>(@oCq~*cYK_(ZS#VZAx{w@fIP9XQZAPjX&0(tY->I)QcgaHgtls{o zp~=Tx$NK9QmKUpeR!c{Z4+LY}6F$3hXXva?T+;P?xnNVU!jjHvsHzvMcn@Q}i1)=m zsT__qlVQo~nzLfnwZdz$t|-(F)Fg-Ik9qYT*1bHl;#Jp1^;xFbc_pr@z`@nn*jrx; z6H3qw!t3R?nvd^FA4xveo+@F#JHLzgPfMHm$1ip1%?~F>%m;HlS5(q#F;{2wM1rfG zn*T*3Tgyx-wYc9pSns6fs(VavPs)DJ!0zU;rTc?MV%6y5rpqCx($mOM-D9!>JM!n! z3EMu08rm6#E`M05D`4wWxvZ5yr&>71tE9-zO54YrlVG7?G_%;16G-xQ$j)=mn-$Dk zbtUDY`L3dKoCtK6_J@rWpKw|Vz??C0Z~J0|xiK;m(OvvnV!UnO)uq`^+7m21{tlR> zkp^Mb-0sgV>C!T|Qy=p%-ou4tv1BJ~mypP<Q-fVg#fjH0q&qqr9*<QE>xm8`Xw3+v zUoOEvp_*V;+E_xHs55@*A}hD<SaD0<1f6#iZG3cQ*hz9unjP7(%aN2(QblwS(e9;C zr)qa!2qAyokS^}T!RDwRir=Q@Iw#F4m)HFncbHf~wyW~^B9YGU+?PUcd2o6CESn%z zEWRTX@2zJfQ<K!g5$?|W<&~_T<3K?(=M$;lO{W|sw(4{aH39h7AsQ$Hw=C-(Ot$5F z#m4DLTQtAp5L?^FkE_QP8)NDgFRFXbhb0HQS5w)lMA-C%(J6b*6dG!3T6WaX2<Tu8 zW<GRPDM;{Vxckx@N-aANK8I0&DD|ZH6EmL$P~w+W544Qbzwy31h7lU1BTO~=?PR;4 z@+>aWp;yz;qV3kH+F(MO;4w-y(!ek}Y9DWl%I%gC(9?G`usD{xtd_3mzlB^lqn%ZX ze!NmSy49&RLR8Y8TmHs$9Rntlz`h?%%IzxT6Kpb7bBxE?cQd9JESpK;d2K&`CQs+u z4LNUN(?RF5S=3_2!#(C*oh%GanQ__|4Guo4S{dl9GvfE0z@)Q+9QT;yatz&NPYcJX z1hi~kEyhSj%e^M)$f6i);4o2DBC)AWB0EBY(WN%xcVjP@4tDyu)H;QL*O#^`U5kzg z>p;`+s@^xpZBykN+~q=w=rM5H?Rm<0b;}4Q+e|%3OG!W0a#~s?aL26&TEbT~4t!{E z^>z<Ck$b+BV}aQeFjh9AH^&EXZmQO7W^%Y?2suKhO$V<NrN#=)p3>>Gb4cECeedkc z$-2<7x5Qz(pq?s$sX9$t-9n`~FS+wdmPZnMHi^n*=lBlOVHd)rT{u2GY}U{?nD_Dp z9pi)dB9*75KI_~T@5Bt435ZIZ%)nT9>UL9<O07iL<s48=#nE>05eUu!!eRoG;xA3} z31%sD2CI|pxNEd&)8>-4QfyDBZ@ov4c-_c0JvTZrY-fpn`y|gUf*A&fP8dk>0mR`~ zM_9)Vj!?e1LVBy*5o~z=Db^U%8snmt7YsV<T8a~mtkUJ#PqjM^YB(^lRVwp0EI*3k zO7U*b%HYnp=s7dQG(5#|$OLnNI$?aAR@))5|ALHbJgrLKEdsxN`7rCQe-=gx@}qDn zn67<=__nj_KUN+N!PuIR()whHpTr84r*rpA_z(rAHf#)*xL(MfJ$<JxzY=Be{0UJ> z*f>~Vvzmw_nmoKxE>G>9Bje-a)xYSu&0O;{{?u@s;j@F3;bUH;@|A8MW@~H$Py5{_ z<{92w^dW>1r8Cn;c6ae?9HWHGPhEA1XO}7Y+o|$1g~n7=@XfhlDi>y7eLjii;IBn9 z{649ZQI2u_Y@rr_^#Z3TN;)=A=IaE`XG?`HPeu)A<JWzOP|TruTtn-3dFQPdT)4QQ zzHz%#mt(TPt<nBdjk^V`Ng6@fc}K-=##)XJuk5~{vTp8O!zpq>Np_*Jvhk}b;;HIp zT^cIls&!B_E$>ao2~3n}{bZn^M)R}g)m#zgBc|JMaVxuVj_9ZETg0r#o>qGu(d_fU zrJ-fE#D{^0+8||(&J>7Lt!rzaZzdVm(r&q9T_SIJ=+bO7VJhU%a8^6shc|v~hl{ZL zqMD~L8y&g_pD371^4WrJPK!+$Hl|G?&E%T)MJ8!8y@HWoS$2G{B?oJgc&~0rkBoJV z{yp3Z<f0(#x(}tVgNGyE-4ZMtykKcwv1#0nT;7~}w?u~EV&`C-c*#%GrNM%<v+<fX zz>AZLr5%>lrn_@lpC##R1xa<x9NK$9s*9Q*?{RCN)I4upu;tWlR<5&IcZ`Sz3dix* zL4lb<@-2d&R7e|?Ej)eN^^WIR+3(R84<!!qG3S4DN!MEy7sNg&(?svU5kBQzsJ<(l zJ2|hLuC7aq4jEozn^k>uSz>B&aF%_HjZQt+<^*SA$Yl@3U^)Wk%{9i-v+eucTAjyR z51dxZB!v4B2HKr&@my2xCdcUwhOj(&l54PfFj3oMK)}#~oI=H>t;TfO<Vuo=E`yZI z*o4{1Y_DFA4X3*Hxlep?S2^-GS9px+!-<^DklvVL(`%1czN4uYOs-QQXRv4_RD8O` zs*!LW8g+*%75!+aUb0DjshRL;^50=HLrV7L;i<phKWyt!FtUxnm`a!#u8iuFx87rP zRpp-%J<j9WbGp^&M<Lf%lAJBm_OdFR6_!_y`J`r~z<|DdmS8nHU{-iF_J(5`zLYc< zGc1`L+#e@7R;(mKd85o?%f$BNqZbq-cCfK^>!^E!X>WFsC)gJSTMpjT-NT1|FsxZx z-$>S5KeI*Mo2Nv1`lDx_5sRwT@B(v4_|Pd`s&1kHRi$*^C$)56vb#hd;c~Zr`h{d_ zwCBbVGuNb%j@ev0&+0AijBatv6?|2HwAupKQ4mg73?FDee*^zv8>5^Z_AU{}H!>1! zdV$KHwzzoziFzAByG7E|kmYs<U$rw)9>iJEsm-*q>Yi7dGPSFtK0a`L+4OLEk$g*z z596IgcX~1J{JXa^cwZS3QEK_jhma5{e1!^OA<nrjFeDpq;pZdS^6H>!{?2(fhb1Ar zOs%}kMxAbo5tGAtmMdf#*~ZUJ8Zj7RlcP^aGs$uM^@X6^`{%UM_n7_Wf&Gy*T{i4F z(_VN4+JrAE>M9}=Aw-vK3nRyl+eH7swh?qs!ugK3u{4hb&korUD!yPN&JdE8)5|t; zd?+3%6Qp`B<o*0a0nZC%6*;z6RX==$PgYwE=8?Kg?VBHY?V2GjMUqX0z+D@$kGIy% zy`()W)JmUpnc^@pRd4l!59Qnv$uL^cwB@LOnXXHjOB4T&@C9RQJNjP}7i=jDbToP; z*$JDm=dn3X*~#L^)@nTeO3Kz#9^mXf`I`?|`{(~du@Gj`7Hs(4!+y)j0-L~#m@Lob zI{$iCYuOPOcmMy)kBUona<5x=i0a&F>0h+G|Hp3N-_QSl;E&GRZ`XjDF26>~YXFNp zs@dFe^3M!e|5l6}4WryX?9`O)V&`mu5diUDggJi<23^sot%y<-$Qq{t<UlC26l$gB zb&=AtOV3?~6C43?)i#n`xO>)2MKm$+I-r_tq#UhZ-@Qv43bUgMlY#8BUqfe}2*8Ye z<C^sQ!|Wd-N|3Q!CyiBNFMetV&Z@A6eJMVCfVFV$&Aum|K&VHGmdN}8U}g>7p0>eQ zLoP(maeriw*pA<CU7kO%wQ+y<9Qghn6xXg@le``Zy1*E_Y9V1D1o0g>kOC~4mcyR& z7dX%IqLzVQ(q+!N6qM}t2FjIa=M~_ow1TSIXl$ru8Zx>JX#Xm?gj6eL6tAjV@16bT zUk2a%N$4~#1Kb+Z4vM1)`y^H|V!UL?m|Yi!hsUBc<fUgoyK2b+11h<(>p=0T>AmAU z6F@jrjzYUW9qP!7m3k{zKn*Lvq|n9cOW~txVy*$?!otg9>9efQ$nJXi3?+Y{&jgWP zpIyA20%eGFcYx<obpHIu(3ysal}6?Ysxg@0^ohks9pezRJn1Wy0d%(Zsn4Hpl4PgR zLH<BPbIY{TwRyub^G?yDeq}n@^NkR9lH)_3g-KAP)&zYXx6JXX;NxTAuH&DuCLe|r zM0+R~M~$SkEk1!{(O7%eO4c$AA4>&EZgp+e5nsS5E>51@zrP&OoEvFPH%iQF^2}@4 zAF@1FYxt(U+E76x@1xHG=S_*<EHk4q52z%GFp0;V={BYX!MQH=t^RC6I4u;L&dpO9 zRvw>2v#h!#7t5tqdRSM-tUS{>mj`7F*jGS*&p0m3F(mmk`r6g&e1{GRqHplN&4aS} zvU73s>WBSOseqQ4Mac4bp#Hq<nBD1uNA%6z(%HK36lp+DBW0<p&rf)+E;^R&G@9eB zW4FvH0?vx2^L>O+Vqe`Ok7+NQ^gi4I92<E|7sA3XTmUV>bg9)=Z&%+?;takLfRz!J zB3*9j)xpR2Yg_}0+2?YlmjgE$B#k5HtBiP?&lHGt^YQ{^%{i~zi*6K_Hxm>9p5d+= zSb)0Rm(cAjEN_SxGC_n5x1*-2>Ps#6t5fRirU!0FEe|Ooas@8sR_-I(+wJ>T2crX) z+-t%m^4gBFq*WeiA+%K}=2*K9lpC_@nPyc>v|o}}3DX{X?)I~A{ynu<KuTv`AC6FS zr`_<n=xslIMNdV=$qK~BX3Y`BsFvfk;s#xFWg_NtlRc86Iz;<~i5I)?_a*30f%bJO zA}+R06&;B?yIjQJq2$cQp@_bZyQ}InU+X?@7dt6m?)MT=SBSNorM*sK9zR$LC!cj0 zU#x(sjf3Z?I4aKa0f%?Ju9AYYQFj_^>-XJRmy>A9hCfct4fJeHP6F?tm8qwNqY})o zakQ%PGTR4tbj{Z|ElF?y6UW0jLy9@;$>Ya!fk<xx;jKy8qcSX_`Bh%yV$U}&WI^|3 z?uKel4n?<dc@7NWlwS`N&3t#5(R@jQJs-h&7V?_YTP;WeSX@#z<CsX+NOzQ>6WPqM z0I%9P&U^k}OrCH4koyj(34fa}A$S&r_BMS$y46!&_4X~W`2iBe#|m_+@|h96)wUX# zqE~qF5n}>=MQ?RMopZ0`mpYlIEDP-}7TrEe-1Ol4l1(ph#lS{R*F)gzoPxY=Dk|4! zK?iYuw#PI6u28%#knjQzK1Lr%7@tAp*So#|s5S)@)M{0S*eJsQ09+8^Hf$ud7>rmb z2C1u!vqX9aD`Zys7$~uSA;r^PLUXuuIuC%fou!+6v#L-6uclus&a`eacElXSCFWk3 zPLN0*lifugY5yeEDN(Q;L#?+}Q&Y>da0uAM;KOrL8MO$UvBjvZ%nA|EULj>Ajob_m z=9NQFx8cxydK|lQYXMhji~tXl%eIt7lI9ZGOr@i6WwE4XUT)Hk1l(EDbUwUkl5!-c z{@YL5n?~`zHz&*r?MqF!|GUnM1WAE!VK_I>R6|c2<LyT%#@7kj?iTXvF_xB={XEd2 zbo>}>q~@VE7<cp{OBy1U=LyiBXB1`7R$7fVy+rjKw{A-tc%4Jka+w!{LUAh{yDwSH zfwn;_GJSgWGq7fZCGl)3kG33~R8bL4SX81iu2X%PaJ~V6#!?!p6Y695yJ+v5Mfrok z2}>=&3A<fiM|C%oDu!r?$)jkAJa|Ku1<!kNU+9yA&q%dkgxK}oBy_9qvAnl^deKM= zosYB<Wp*9tP<=xnuK0?0hiS#toy<{}sC}d;+3K6#rq)atLEpf~re3;Pp;36_&x+6< zq~Jby*_MyGk(<#zfS&h!v_;(AB4~TgD;?2Du4s6RD=KhbTsU$G)5el`@GaDrRg_o- z{SLBqdYwP-odC1mF3*+9pC~A+P!+NAPK7zqEDvchH!Dc`o|vb^?&e1O#5S!XHL<+1 z(Lz+WqydkrG$}lcCl27XW*9u@ZX%Owt(czcrFY2EyGD*LvLy@cP67n3$L9L=8#Z1) z=|^6;r?*sG0M0>ux9%*iTeXjHHVay(^Jk7VomRwopp}+jZcy-jGxjT7QyOl+*Ze_t zb&Vh+cna0?1a}He-eI5YFaEsv2$fM$ON3T(<l(e~hg6>~MD~6GW+r}=ma`y<M~7C+ z9lz)1GV`rY;2{aaczeBnaDl4m7~1puLU~kZiL<hVh5`NJgMKD#NmR4Z`YJ5x59G_6 z#IBe?EhkW!Nz+?oC;qOAL1+`2#9pB1-pK&8s|f8y9S0IRwui=JHm_^`hFE+7Dc|%N zB~{jgTArnJo-k!p()cVg*@5##q-1k(*6&d<_dV3|f(=h41|j??$)m{cS)L_mXA|XR zg&lI$SmJm$vD~MEnUy^VP7fqf_I5ewviJ_$5(u-y^qfnB8py;V1g0m5PRE&DKce}V zxM)^<0A&0+8!?jcw&nn<?b0pTL@7_MGc!9uXak?aH*se63kZ47*_<vZDQWYMKBBg0 zyp7v$3)@Qcxk!6Zh7UNa!ZNvmLA-l|E&7A02Bi=gAO6VaBz1VGu29jFvd}Fd1#}^l z=ldQHJNtNwcv)QkeIN}N3+$3g&p}%T>QXLipmi<K){PMIYBs$HS(0N3#tAl3o*DK^ z3LYxSOT`Z>|A6n&(h2dzg&5vweilTlM+(yk!VNbijiK||l4C2%xf0PW_&U|&>3pIP z)Fc;j%8R~qRcW{-OWa-Et*fCiIC0cg?nY$20|2r-601Q)cfqnBK`bZlKu5;Ei$Y+= zDqOqF<W5+$33_f}QxQx<#D!wliL~(8x~sUUy-hSauqimfq#n1l<hDpk_P7=@cusl{ z8KKFiP~y8S@D2q!sbO)_LEa|m4;c*X$8C^T*}b#VrSu1HC<#;H>k??Zygs4O7NVfd z*HAU}fLtZi`ml_FL(1b-VcW{`;^NNkJo}+uDWE<~tEsAfC{gyt)A9&0EdwH0o!{JI zGzo{#qtKvwNxRJ4Mg|P2#|*$U*MEet%;4lu%%i0QAf#F#QauyAD<H?Zu&APsGp&d; zdAp9>3>@nZGUN$3m@AzHGnvWrpA;Q*yh~}B9S9ns#I}(WFn7|WR3OCdyv)X`XGf!t zeUZ2l&7*;U14{rLcqfOsX=Nt6FcT31)Wa_^pRU}WrllGo6l=nGU!<ttM(*Dk3=$B8 zV7N*!(qGmuge=#?6iG&EN>eu3;~IKh>S#Tjb}sKx(iw?(+-50%F9nBc^~gBO)`dHp zFWnr=v;>HI!HLvZ3onblX`HJD42@@yb5QWhWou=|nQkWO_u}48FC<zn(o&bqs-u&L z)qLD)B41Q3XfvlJ>JH7|nEhrX>Yl|QbA%(NCEFHMGkXet3kd5kK<=C$F5(m#L-C3J zoWW&khI0n3;TFn@C{h{X92v@mm^b_c9(_xNv8qS|U)4RWgB9FM9rgMxCPzSXzTpEV zyTkUvKL1j}A1`zP(z#!~pL2?GspXk$sC0S}o_!f4mi%WD#Pler59#F8)fy)sRTa9l z{m)+m<#YM|xXS#O_fdBC*@`>GEh*PB<DbD-ybQ2t9oD7(WiUPRN6Mi5E|?i{*vWUT zZt$y{bO0n_)A~}=-?#7Eg2`Dxld#dFpyR8$=bzuu2v|O?O^iPjNq)UOu1tV!s4ULg zI{m&b-|j&PNiH~0iN9O*@2lO2Jpb50CHeQ-;<v&BiUZ=!|343YwJ9~61YyDzihut3 z2ci_i#n}nP)RTRV-=AF%o0xd0^4+`CSFc`uIn!OU)-lGOrM{Zu&c~K2mACiC>r0IB z@y1Jf4Un|9149FuJOjg4%pky!?Wqu3qxu15+kJ6H)5Ii!L)7{;EiLV#<Bzm%NB7i- zeLtCN)5>i3A3Veu5SS4k|JK&dE(tg*2M@hT`nCdrofLVFV`*USfQC!1XZOnc0nZvf z`1)DQ^jCqmODN1JTKYUH<i28n*|(+Ta$LVmXht9h|3d1Q0#J=D52k_yW>A1*$BeFp zr-2I;3t`D!|0YPbz(yK;BS@ki2_D^OQZFef@NK9A)`e!!Ns>vh>E3<6wG~?b{~cQP zzqne|%Xh?i>Z*2@xuzRK1#not9n+sj9?Js<*5ZmjLO1){fxm-*>RM`j@xOKAzkd;2 z{?@#=&km5Fa(l23A8rGsl~jJcf({U`Fb3_w3`m2u9UUDT^AKGbn7`cxT5i`sd?kRm zh3?17|9FqFAGb$7%*c&cHy{fG&FDE!Tt(<rNt)?ph~@%2j7)~Z)nr)neCITM1{u-C z1_%~q%q4G)-{xw;+jeI!fb?F7(-1abDOp=m4SWH$)DGE$F+l4l)!X9~IYE0MJee0^ zRP=Ks!VqSFLK%YE&2tcT&$1Q!OGOcTni<~i(zs%wJ%KkU#Kgp6x$JA6i^bwV4ix5& z&q(z=&4WSc2+t{*E9}VSQ~fvqel1iq=u5{bge4+lT4Z(q^3;X^>b4MeQMiw?r8&Tj zW*O?pwL|8!1DKqS)7F2t1X0Ur0f-7(y1L;kEG&q|t^DQqHW*bu3QDC3uZDnL&iGKx z^e;;DAu3!YVXt0@9ll|=?*@uY!NTIVXogFbLC^0@jwQ^p+1UfZF?JTf{4ZI6>IVAX z7Le%1($*hTiPZpIzOl4QfzNULhYx4NZmQ~@0+Zv%B#E{xW&gfu#(}6;p0gr@ds}GM zPL<r=^*om6U--Uxxwq~)1)GsQh-k#V7M6m|_uplL=+RHOB=f$H{How`!yhJ`gDhnC zP1U5zs;Ug2RH0X{8X0ZMoBWFmmmnUjZ~By-E#*VmNEq4z(#U@2V06Xselsmd&97a( z`mE_p)*cxjjbz<?b12)9c;)tGLk%PY$Px80wMZ*>7*yx8HPa2z9{ySK{pbG%p!8z~ zmwA>V?Igtz!gNqk5PK7F?gZ%7Nbw}#&I5IgNr*eB5;R-JfS@odJp>biUML3z1<l`W z0E3ApbY+-4n!s@$x}7DT;{P{jU@B<*wrNPu$aWu~=B|Gh12eI*dV8;UHV-={(}b;w z0tad!QotIuH}TTny-O)8$b@`~*s6XTb&BT0$B!W%Yk#{|*M@f(g`+;g^S>Vzw{}{7 zHAw&n3=~9%bI<-cVCk!Q+5+5a3r6;n|KVP75E;Z)Jo+HX7=MO~kFOHm6!psOiQn;m z0QmcgVfzn<0xz^0i~`JPuJ!&7q(P1T-+2|T!-s3>cZuqQe>>mi+Fktp&5pGEtK$mn z5l*`8ZkKg>9rojYy5DLWzUOON79pswP7!w_1JJI=jvo*0KD6rxdqEC^1Uc?m9h$T> zrTe(IhytoP5n!D&6J4B#de???KGZ=O1mf;Vu*95O;mUPedu4^;TEpmpQtDCx#@ax^ znRG<<_}35%LX6$W>Dyf!ocAA`2R2BM%x+vh`sby{VT?iIBo}d`@gKMR>qeUbrzB~; z&)R&Kf1O{%5y6k&iW&O!97e<b>9gSE#7l!*!^R!ke+N8$`x=xBatzAtJ_`J4Y>{IZ zxe*qCO<&_bIPyaX+2jAv2gg>iJxK>7pR%gH{Cj1-w$w7mAeOj64qI(%RaWDt4eyEl zvzY~CA2q$A{l70gJ>AuuW?Df29Ht@&?bT-c+5%-)Ptva9_oW_<Iv6I}1BWC$UYj)W z<XJF<d&~T`Io#1m;qX&}O*OS3>c)+X^~R$Ql__xHO<fy)vQ)lDArD~tAMABI%SA=i z_$GXO`rw>??n@WC!3pe&<iFsj-_8a#h(T;=?v|i9$QyZ74kALvZQT<ax+s6Wf2<sA zy4+UDeK2=Q^#M$d>VLv^=yjLx#)i~=zZ~JfH2Cp@i^jP}fBk|rgLNA*QQQB?`filh z{`Xo$^cbiX@~yI!e*a;j4#Bsl9!UKY1poB~j7fyorb1H7a`SKB`~9C+w!Xc8ZQs}5 zrodJ`NlKJ=BwWj?N|RW0Z0}soyNNdW+_pE`8)R(i6JHcpFa*U_yNi4{t9>GF^MFHq zZy?7B`;<Mt`kcQ%S_mR-{O*p}dWwWSktt?M$q$;+KOdF+LOX7%u9?cOy-0A^A@XZn zop;70ojH4fuQk79=IKO|PG_A+Qo3!TMJT<R$K;KZwM{;|W1E)S`t4Ij)x-qm_%q3_ z7fi`nMg!}GV``20$mtCq`9m~EvW5z#T2|t;p8DsTlb`gDyB?Dwi{*I!dRJIVq|fUm zxkG>sdzxuS-RJ8gq-&83a+M6@vzK2GQZWj$>_;c<RRVWr7%Y0$E9|f*_GeZzY!@2N zRMB<ve6`2@tkAG%=2%B|`w>t7aH{ggteqo&m=ic+@!ax7z7_m?>X_j;s`4Gux`J;i zv|<@wJ<;!w{@~_*4Sdz1k<NsOq|S_-g9>5R<sBLMby*V~AMyhCcf9$hg^C~Z**{6A z@HKsoe%KmwYR#acUI4h4=c~4h92a&}%_8yIy*epY?R(9OH&mZy=f}KlvedQAwP?$| zW*BT48s)B-p=S9?IkN!ctEJ$mUFcUfxvQ>Ebfkrlel62<EUy<ovb4a@$5(O|9btI& zYD=2X1krMNgFAJe;b-NM9^xE6v!)_bF^88F#NO#-5cOpKT94=HcF)dU)+HWVdo+JY zJ5O!EOI)DcbnF=q@@w6Fi8Ae8b&eb^Ek{JghaU=AwWHJ}+6A(sllZj^Ewr-JcZV(H z^;^x4D4~<euA-@TWJqE*X*Vww6yUNlMh)6?+%qjYQ=5{<yWDdetY>wzoYXTd2V^kW z%fd<RZBIBxEK0J_oz|%2zAzPak#V!wu|wo>uc0?tl^lvm79-;9jYcsXqA9hKZF5o6 z6CR0r1@V(oD?(EYTimVhxAVlwyS9%IvadI9=WDy9;Vf>U7wXp}Yd2@yx2dU}oZKeM zE}0RQm%TVUW_PmnsDxBhkJi{tv|WeYuI}-?*IC=GQl_=l7c7n)Dv`JsrB)XeckP<t zqFGy(U9`pW^_zOhQeQB*>L^>8KLSC<O<*uYxooK^l`;BVSP92Ed8L?0dyT?J7GZQ} zSximlryS6I7kMX#n-Y@y-cE9Jv^%73=wEb~b6GkXm#dWMt4E-5BifISc?vcS_7-O^ z**f6W<xX^jMc-^!Z$D_?5D>zv=CD-!;^lb5gFPl0%b5{49U)3oJUS;;wtY@XwJ)$> z!t0gSjD*`{!gQ{{t*Q$1F`4>T9d058rXprTW$L8qc#~~=x9~^WnOv-o913w&btE|r z7<Z9R<Z=clwx<>Q65I9{Vnp=r;AtWR=Yxv%$#y-l|5)y7-tJgGd2WU6RC!WL(|qoV zD4kl>R9}JNi47bBsCh}&?vINwaPYN=)<|7ex}R-Ofy-_-v&<yA^A3u%0t5UmMT$i9 zQ$K(9>dS>EJrx{Jiri7x=FHi+$3%Tr$HAS}U^?u*_2z{{Yf<C!Ej#)m+$Y7#sp^Qa zXm-iTB8NltMFoFQO&A#vktpB2<tVN#l(Y;^FV*XW6T8j{Tb8~N{>U^CiaT=ilN`(Q z{H2;M_v^e5srb6A_k1XH&q;W#G#2(Uxds0@!XA^tx=>qWyV^6!IfluJ<5FW<KIHJ| z6#qfD_T=~6mri&Lg)5=2%}Mr5l+4aDDNIWiCF|xngXH__LG6^@EvuT+NnWSr3sf@< z<c--`U)N|&+Ryd4p@?tLb*5gtXoIs^ubwYe-1t%w(3#QPA*N=v8J$2sC|2xU$&dM` z--UC5mvL+mcan4>SKVC=op|a^CuZYfo!u%nf2OIIb<B^dwlyn2gm@$~h@%f@U82p$ zS^y&_Niiej7`gXa#%`p|4U_BaB%fJY9dc_rU*R|>PuG?=ss6}@beYLRhw4oaJysJ- zCw;T&9aW9#nRc1*qN(mogLZ+S^$EqFJPV~rdJ#?dZR$yq^d6hOk5T!V??*m>&e9rF z$WKJ;BW^32KOqti?5$YZ*B%7AJR-?+?!8XC&aPpt-6pn^`nhyNvAF^*EKT(edz#G$ zq|qjILQ-y=4u{pzmu0l)R%nl)cbZzF);XlsI_yct9YIs!UaLzd5SN>qGITFn$tM}; z##g9H4tpi{ZJ%f}U*`3h7x;`ji&nQqcMZGY5*r7&xaf%=HkDt}$K53fx8`P*Y%$@& zyE)OL>wU5r)N36^M0^k9W<2!fbyqb>VYCMK$XRqx3NJ4*98OM_k0~)^y@kv3)K-7M zXW+hH@Oe?xU77K`6hd1jCFfMTFU1wAPWEi~53I==v%1%u+|hjHy^*xn{)ja`K}zBG zl)GFS4j%KzAz5-%`@r_Olyp~VsV)nh<F(Dq4|xSup3ZoXebJ6)>guB*Z3OZgp`^Pe z&T}in^t(-WdOS>cyTRD4k*GEI>4il*51&1~U!hBVO1ggw_u{0ODrQJVS^Z5yY>KM9 z!7UtBbDL0M0DF5zfS%g4tPkC}bi5?d=^qDCixy%9gHU7-6)`tedHQ(imdlZ;ibC^h z){+k8&6GM1`0IJ<qwKBjn2e&mV>~n{)Pr%cM~JU{?u2;R@m{14;SFrg+e72E-CQMf z!yc2!H+;W@H8)V=5U}?}y*<h(XR}^@dt*6tsuL=6DQbG_`B!9FuqBHTz55N6vnQu+ zZt|~Fdg>@Y7!y0*qb;R7QBuEkLpfT3f~7#kz~~f1m(+E=9<MeAwfrI6E(V{7iY;3h zaaoC3M|x$f@85nC#Ca2CJsZAFJ9Q<$qQ59qe^eR$utIi^zLAK@B}X;(_A#$AedSoL zIX+uy`v;+44yKKD6_y9supMHkVR!R)BZ<aX5iMszxX$g#<S|yBOc)>4QXeL$^Q(m# z(+}H9)d9h{psN^-#Zi$bmwj(bd0Fdp1w|gTXYessy3Te_CgpJQn)h9+YL&_W(d@^= zA8U+`EL<Jx=V7C@8n#W26&QW6-h_^BnTe@tS27B{C*hQ|_bt<qA@L@)2#cErPjVTR z<;l%LLl1bw>J{6CIhHq14R>;MW?<a48HI89T%H5<pM?1G%O)ESO|u!I<XJMc>78Ua z8~I=~)m%$hQKqAD`#ZG3_W8b1r}UPQ9nO|hyb`_(8B99VNwk;bLGN~29BK;`8bS`! z3^lBH`3$>F*m&M^pUFG$w9?t$)ykZ?0bW;y<Oi8Ib4K2Mf3zH<AMNwJN9J=kvA3Vm zdCQ+oM&(GC6O6e}YGEO6Fx8cwI%7E%VQKl~y8M?0GF9v%{o`O_@TNUOY$83E>X@J4 z?m4aQE?=lP<CmHcn|fl=f!#7G-OjDqs<6&4NK>7zxOo@rDbptlXv_Mz{7o~BnW1{g zW?dN;nS~#V#@kL3yOo=x0u_2LTa)|yqi9<M=JSI(7S2UqIe~3AzQ=wq(|p3(=)r)@ zIdbwT8MG|#4&77_>Ha8YUQ?as*ZkBwGqHr1+8$DR*Iaw+6z5HAz3B6oa$-a5aRp<M zFw;x@O=x>^KIaC9!sAF7Bz5uJ5dEr-L2AO-tEuH2`_RyJ_}5mk6L)H~RT}06X@V%~ zANk5pJ+h`Mp*IfGdc|Q%-2UXZWQ2>6y0P#oZ_6Vn&&cs%|1s;F=?UVcVmZd!qFfgz z&=rzUkYar9W%&t_f*7JT-)+@5y*1=^4C|;8Ro`pfa_xZ`3Hfpr6?HR*^5i6o!>w0w zsKzWZMyVZ#o=z1rYgZo;Jbi<QMw!)WEO|sZXSVaMX3(P@7XR0Z?%uw7Hu_=ScfY@{ ztx~prT_q5^p=ev}n?r%6OT#%<HG~Mu>Xw{799?))?DCthS*qt;@7`+$j?=wgKkM!E zt>p_BJH7NVzc}@nSnSq^e-k#(h%db_B_GnbM62<4sr<Y5{^yf`jk<pp8*f}GJ@jFL z`JdV?f3Kw0KRjg~b7J4~4;z^G#+d(|mgjS6>b_GEzmMEjyj8jZy`#}sz&N#_^;ct? z{!`$U4k}X|F2wF$DE{@6wZBQpb>(lt3#Lw<`dZ87_KyYLiu0Wgoml1&{BX`Hu4b=* zvnlHh4Mm$wmuNl-`Cif5Bg*?@x%cz%=@oC+&wR0X>zc!pl{1YNwwbgp{x#8C=kZ)O z>-IL$0EV@{@9s@c-@E&!yIk<W{Mm0}?!S#su4CJLyFFjL+xN$}-dg!Pi`5oum0sO; zu}z3$TjzA=AExswABjGcuS6TQp70FVxyt;<`rzASXN8GQm!1eb))HI+Jg#p`nfx`> z?Eo*;fLj7fsvq6aM=d2`1x5&POm^+DgY2kX5?H6q!yMQ)9NxNvf)~X49lx^2@Eunp z8^?$53xWN0*fAB5(sjuWU|+QhbR7;OXUXaJ+$>BSGGf4<cRboPUdTP~+TFaStDXma zI9TNURqVoj=D)SDU7@gmR}cWr@vJ*o%@P#x;0NP!!70l=e13ZEl^F2)$NlWEqZZ(U zNlL6ncbd9Rv;s@O#v?*2R&?BtzijI2y*A^x)a}r)IT7Y3uPR({Vd8SXdUPJwB{imJ zsOO6~aDj%34mdv%3yN2mr<nOFyRaR-?f?#{{srFO8E+4~zZ21(LSg~$F$VVeH?p64 zi#~`39gq48ta)EQKY9(*WRS0clX<`ahi?u$Ww9r=6`&oMfA`$LHCyWQ;6LNe@U-cd SmH(760D-5gpUXO@geCwse-=If diff --git a/site/content/images/graphrag-ui-configure-retriever-triton.png b/site/content/images/graphrag-ui-configure-retriever-triton.png deleted file mode 100644 index 07fd1c757c2bbcda323fd3c601098c7c1629f9af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114566 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%0D&U`rghvRC%*=d&|LcQ&><p0Yes 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 diff --git a/site/content/images/graphrag-ui-explore-knowledge-graph.png b/site/content/images/graphrag-ui-explore-knowledge-graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2ecd3f055dabeb7ac4c48eca4722c3b4a324208a GIT binary patch literal 657012 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 ZHY*7`P) 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%0A-9xy2)XONa<yZG7Ru0f08` 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 yG#x9AWLu+s(`u?{ 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%0D@c8D{v46^wz+L9g7)#4C@8&O1hIF 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�!> zsB2Ua6hxGw6e$6MB8pTGQUVdAi=e0of*@T)dJR>Ypp?)Q5J*%|M0yA5HS|c6UP22k zkPsjN61bb=`QCHx8225Y_lFsdt-tnO&suZMIoEnhbYv{uT7$ES&?BXX+8rZ?2TxcK zgxQPjt*1_%!i==GwiZ4QD#A!lJ--p+USC(V?CRO7yP72<t>CaxPm;*&Ws?D|%0VD! zwk681UAy)P5fJ52=K9j!Y<*<?2jfEZoI#FF-l(&~WEiPB@ug$SCYy+HC9=c|+G*_g z*)cU$tjRYpDJiMhA|!wwOW@-|u>^7RwU4)2NUkN|;E~##=U8_zK9BSRH)|dfB-dtx znb*M*p&(ybmvcejNcItFET{AZmZf*EfC5FYeN?G>*?$+Pzkip+f%v2@WRLyx+Gc2u z*R?!i`Jew0WDX>x07DIR9P7W&8d;YPbgyY6STUy*#G2hb7F7~qao!0u*WS!^bA>(% z_0~tR7`j!Zv8EMpwzM-#UKHRf7g}u=LxLFf|6*9{vFREuZ+5eKmfR$ppcOuxAKy3U zEl{|zwnj@xZh_5P(7uevUK{%E6fPiF=Q`sXs5FQ2BV&Bam$DZJd&;tNRyG_Q9KwcU zwX(xW1wRfhOdgDN3H3SUI*m4(4qO}($>E*Ped0L2+%Z{ai@ciYu<f9iSD#d#Eyt0M zYl*#Su2F410rzaCO-Ut;PfjvL2~J;e5?1KKhFQ+F*;+d~iaGnGt2(W-Ip6jRr>i$? zfMm7M{nf3<I)iEY932q#*j03kynU3YD~ginr@5i&*Z&W21Q6s;GoY;RcReWk4Gkk2 z=x8PnpL=8OD*orK9%lohdFJ@f1+~AS!QT<A$?&^$TA?f9v%)G_Z|V8#QSRP5_g`z6 zM5|nrx;E>1-ajtR_d=H0rA@zb<{&M4VJ2>+LNFIX5iPPNx3iYZivTyGNKK5xl*SSM z7Z0FwudGb2oEKe~d+5P{XxY{NGRqA==V0O2Jq6ppZfuxbQRJtg{?#XRZ+m;&S<lc} zi*H%sZRfDbL5kCT@n9;!d_eulz%TiZ@xI20A$V_|k(a;}@A6{y9c*5t1>|{u3d;sc zbHq2I(wZoenu7j84}I}~uEg`Z<MzNDKOsR%R}dmd@u1VH#<-1BT#fWFa6wO!oTLaS zg*zY$MWOgHkIM<i=-E#6(i~E$RQ^}Qi*v8&(E%fjxG#lsk7?F7xncqXosrLOhuW^A z>h(B5Z72DXt_yK`s=t`-QobeV=QJn8Qg<^z-uNGob@V1b*3$|#k&?1ru>B6%AV%8R zq$Up2|5puVJpx}={DWuyO){KPG?UYIgtWVYlvt)g=D&pB=0!A1PVy{&aJQW|Sk%)I z*Kk%_Q}<M3HQ1#)p7~73BlLy-ut;WJ^BDn7o1zx<vIA?eC97PM-0(9U<|dXHV<pdb zZ-r}}HcqBgV=R-jZ6Ox|`cJnS8K;@yL-%67^;C_Ik1Jbzb$FRMEIiIJ4og+s7HmTP zN|iw%%S}9+`oVH~p`aov?)^KjRC6<^QuRFtnVS~73}&(tapjWJdObF|g^5L4)5IEw zx_cQ0OfORsL_2TI1itq+byM~YtY^*LNJ+5+g;2h{nUCVKP;f)Im<N<JyxL2cYqkwp z9ng!xj-;fdNVJKE;P3j5lIem9<s1Ak%6mJEPm-|`w*ta>Nlfc>-5QJfI<NG^K2%A} z_z2SY^8=xOGXg*`b6F+-2JkJ~y*t1c350!@`RAQh-g+e-_D4y2FO2f-C`)&Dxp}BQ z&U~i&c!$2B8{A?bWG-X%xMewW%_qryIVrre#P~Egb0+x=yz(qq$WDJ4<N4_7Zi#)x zy_+6_O<+lVb`FjZzza6GnpF;rf_3gIzlC~XU>2@THcx4gNMwmfQli}YRw-Zns@CRL zMfz#Us)Nh8%9Z5IXCRJav|9CX#Z+DnOvOcmDaVofWp>w*mfall%YBl_$9h8Eq2%n~ zNPMIwK0S=R{g)69wbMj2!dZ)Iwwf7_<9B@*sp4a$;@Y=fhaV54<9`{&p|#)bHpb0y z>Zgo$O?VT6?(F?zSpWDrIm942nFpkM@iX)}l=@P}SlPsBpO}WeGj@*AioB|wHk>a1 z!Cdm#8P0Qy3Ulqrg~`D#@QM7K2ODp06&%I3`aK}>DemR}Vv2}cfj|M=5Z4>J{7)|8 zpvTh{{2>y#Z4u?m2bK`@{2p=ZW{@nDIV43m^BF4CTL^Z#_?pE{R*C(XdpV)rN|t{4 z%wcn{`R}^Qes;DR>Y-dl&ta2%SSq+8ukeG%+|qx*hkAPv)Gb>iUD19c)mJQf-xrLi zM1YuZ{7g0a*%00bW1&Cq?)!*D;1v`UJ{{8c4Wiy(>@b`wbr5O<fncBaFmJjjL;M(y zNH>{vt!+M2r<ARTFOVD11P|qa8w&*lJq&w4%CfddccuPnqmt{@cbz*WXeCm>uUtdX z5sFD4y9!jHgWT<8wVsTR`FXb=;vtR980p0ZF|D^}M2UAlXG9fW33VHNU4-ZQT0r19 zF@|-(N|4IJjz2C-cdI&8$bbB#M98TqL)l}DoT^1iuGQa_YQ<=%{1Ul>6k(*F>nC3j z;CKzgqJ8>TchTRWb>b{a@jriq@!#qE87BY>L9g%M<NjS%O^s;$%<~2RtrE@J0MaRp zi5k1~@3W9gKdI^L=nT$_r2Fpg0c=?0W0W7`94#7k27V@z^Nw<8G^?mD0xS$}I$Od? zsj1Q+aM}PMMA=Y-RsEuR+UrMF?n&kRf*Ttf;e=<R-<%wK!(0oH!Ssj7!`1q=5tO~P zT?fZC9kO?F<oKL2EyzQlZhcO(7=p8$FfcG^`uy6|%28<9(L6nj^}b<N-hBx6M`oY6 zxcI5dk6mUEbSQvTD7=zkDEit{&~#wEOB>6<^rF1B#NG_DCl!IuY!nym9#3_eAhjMF zz}%R3WT*Y<$oD{)VV{1zL!~-}<N`5Q74&yy(cC1P!zM8PEB^Mhu)yh*f;=a~F(}fh zZdZLqQc1~X^p0$kVz1?hgyT!+8O4zj`iv6h25iZf>kD%!7Lv`|$BE6s8aVF`hBF!T zhan(J!w<C`V2Eem^8pvaEjy!{0t~ya1!QBfK!Q^LcKRP+^Y@3@(*zO}$o%`&e-hNv z<pz!)SO4w5Byxe%b#Ar&+tdF%GyGi@n06J{FEyR>j500HLG1<`j;AxDEl#&QQ*~+? z$>gE@xO^Lh=6V^M#gZ4-8yBu+s==pzR)e<wj@H}J1y{MjkcPXpQEF9w&yWEJRar?% zxgNjD@7MoI6mApm=5X);m|ejM#<Mw(#>d7^WBK2;5jU<j59r0Ouw=z;vUH}L>t;HQ zvyr6J`5xfFDN1)ga8v&bVTw*c)%!GRKzH$%H8IldTcE#X*N*ljj!8J>$6Z?_lgJV< z(enNRW63A<{fVqv(aRrugh=2PVa83bj@8e&L39!QZnsw(KEEb@*qaXy5R1(guiln8 z-gwfx@YB<iRD-nKIq;n>9eQ_(o229}e&r+Fua{-o92CeD9MJD2v&Y8)PD4hI*yRm` z6m__3ZUypD@23mK3Q4>aq)Z>+rpJzCBB4}HKGN;b`n$Yl_6--rHACxZqD=pbK{@G< z`q{?($hUu!X*FWB<fg}J{}%MuN8r_*m#gf~zt2wI`OQgbg@V>9YqTH383++Ak^+2M zGGA4}?ZpD}#3wq?`Wy)!toRwrr{X8{TAZxBtt?bu%+K0!^v5;FwXn39yBdr6y&wJN z<?E|3Xnf^-F#lQ7lRU>%<8d+N4LYtmoD^j%SNOB<3(DIrw9sca+=s}?)z#Hc`C(yU zKV{lh^MjR$$E#S2c<%o&4%O@Bj`_lrbg2+k^aU=FiKO3gRtX53w(g#-bv*oNVHU9a z?hZcueQzf9z!uRtO;6o#Q*a79kY+D3?F}(=WjW;#F|3hmOL@*%3_%IZX*5F1y<+!& zdO02QrKKT1{2sou)c4rHBf!XvzQNX`>jAJ-fw+@Lnl5>_a0!&vD=zobbB~c@QIuN{ z!U~yF*NV3CyWbjW-CuX?nGjY4pRRgfL!4Ma*<z9@s$)=6X#*Thrb+2z=~^81wW)zV zW(f*l;gn%f`r4Rq5K}n?--N70;o|8*TF=G*O;LgpXO0d?^ObK*zYj=(=<&K62LA!J z|9iVYAAg|85f6rs3WuQ@%MBg}axt{*hVVzqMv|i>fM3z5(8yR`wpkcY7`b|@0*v*v znlM>k*IMza@)XD7VHr4Qf#bZp+>M+;AFRAXUt|)y;(H3J9Vt4^X{z2US$smc(NQDY z^zGpn0$c(9mIG&>&Y#_=PBV1}ItN+H5`^E>CgFCbEsq@|_oh4}=eqv$b4~L8Q4FhE z=4r!mXiP&|&<PqPTwSh2QfviF-?_7An|Pj>nx19dvqqtO$AcpA_N%GpV!am_4Kd{# zSZuMJFMb9Qy`X_C50M!#YYVAs7SY}*sx?8*B{#d(B_GqR?Z$SEO?BD3D7736Oh=J2 zRs<;=@VZj<66>x=M)Sj^F7c<&K}CSOW1MXhOLhCe=#SZR`9wpt4uM*>7&a}|q?csG z8<kCzub7TMm{B+kaGjDtV$)H}rQ&Ov9zN2G`jj=5w$pcvu8G=2VXq4Q6bDePFBsT| z`G1GRWE!JCIb(U5LLGBg?zGKM|NYTM86>ipUuTF$Rd!FPTvnG*f2|R!@vYWD#jm=@ zPqE|)^~NB2g4a#tCU#Ry-%UQ<M}&1Y<7YH2P>2P%__TO{D_`Y1hbvOfY2D{u$46Vp zsgU~miX2`#?*Dbob4-@0V@Xsfd0Uk{^lqWyTpXW>qDVhjY5I$hns-}TU7ubXqRHdx zJ8fVQPQKj9BFa@3#6c?^ZTkU_-eGL9_%*_mK^`A$vr2fOVhpjRH0R$1VHq8ec`Uk@ zjn(5|E~F1yO`u1ce38gXX_km)WRi^`**QVPcpwc>i@?=`-B-1TJK@pL-I_1{x{?QG zil)G2@z=33peH}7t2q|Oz8^{*Bf`<lRO=WiB~ks4(-1yFH_0!cX|u|OyXWqcIUxsM zZl-GvHyr}2w{OrLT&2xy=6Ek9Qy*Wpa4JLQuOtI0%A>-qy*!39sq}{(!bk}2L^l3B z>*R*M#b=7O$JCd)uHHEMK&}h5{|Ch#9W#k5z*jw`W;*;2$8;S)c7=b6>^=a<?hcS7 zWoxw`+lmzl3>0g8R_nHg<D*ogTB2?Nf1XEsQ*(v3Vs4pMglG?ydwH5vI(g2oWOwkp z>FKx&xvpGXWDT>XwN&-qsbOz@q54vlJl=_qlM7bVTJx*3?1yZ^x==KP8hyFVhva5{ zbr3IdWN<#zznQIZR9g4GpN)xy)ZSBXeGb=4bG_Rc^yrZXv7;IEdWW#uC5ydB7IL_; z>FIO05GLH6)2ovXQKTPp2_JCpw8cECdDbIE3}u5TP^DifUW1I{W4D5pRAe2VDbs|( zG>nZVSUAL-dE9QoOi0^iTf|;$hRqlK(Yhz&^dfkm@)^WZ9~`87lMCnF!1lTHq<T6U zZA_ENhMY+ZNH<NqsLU%3o#k)_r0`zKUHI6pQSU_*Lag4&b4d&T&UHZdyMsMqZ(1O4 z^^hu*PH2_L5J`189zX~>Jl*s{w*xQk6JOIb%q_!mAT>C>KSdJr-AyT=0@%ZEQL>f~ z=#U-<%bWdMuv9-HkC1!9*Oh;Wlprx0KbJqkga(PXS$JUG2&Ome4Ek!cds?sL+G>7? z3h>EYY-B(FVQbU&QVSTo;rjuWU9%DFF}kW&c-hXc`_j7Zn76s-WzAvDO+Is8KHJw1 zqipXVGns8uIo9GxYY*)H*q50*?zD0QIU>(~vv+lsYM%syv-y93>p^>xD3n+W2tnqY z$MxJ?S7_Ess!LT4Rwpm+0W=ndGOoQ_%EeMQPa`h~vFtKLcXx-@5dr|c`|%3apO%=z zx)fK!@+%u|xy;?~qm!JadzvJj>3rJ%xetv`E5|7w-r{33?E~Fz0>`09(6$VJCFrC8 z=pZsOQZK$wfl+!!Yv0hMVH?)HJxg<3h)`X~5WPw`H`dlxn|hx7!|fAP=%D1DP(sJp zxRatYOWh2`t@jfqQu8dXMU5m4!uIvmh(qx6zSv{Zi(pF?(C9brfWp@$RkVRiG?d2P z6ye63c`K}b)Dg7(#QOAI3n|KkzDzrQK&%Z8d*XLFa^<5SjTe}o<-l=b)`%4YX2AWo z&wU+q1V}jP%9Q{9zBBJGHE`7bDU2jY{sSYobHFQYrJKq5(aw=SyNSu`ybFsttg|^{ z;DWro>Luf{5}7x|x`^ggM<3qnN$IvWSvbtiDFzG5LBJ)UZgkHD$gc0pD=a89Z<Fk- z+@_?IOvm!@r3`3}bm14J6*b4#*JfoRPkLW>_Hy()s50%nv@B_+b4x{53!^z5u@%MW zD#CgL?sUy>Am&Pw#wU4^Cg`2Sjdk0X9B#`$R6W^Ed46o^rfixqYGz5BBLrSOrVi7p z*Pw}RYJsGQ&bn`(4HOtqQX7J#k;nNL==@fq-Q0bA<mst|%6pBB2jE_0bH-euM5t%~ zRNSB@=YUSzCI3SxD_)p7%<6Y6<cglOuwRV^)ng<ry{su&g8`w`7+hD}s>X#ng)KjT zHG2*R3N$9rYy`fW_}*egCfMnPi`zIj{$-!zgnjv<JfR^lr_;TV9wKl=!(|^468~2c zh#Y?Wf0y6>riwU4gVr}ny#b~@pm1(e-c+%-Hkld3RvzaS5<B^hS#MM3&3H|Cn(utm zM%!XJFOtVt{+;LXsevvyWOCvQHsr++TN4V0sowAo-mQ%DLAVNdw}n}^Y?_Fzx;pRJ z`Bz}zOXEsJ^xgegQZqd&yVNOrd~j#m5_5lhr}=~&k6oITcl?Bwet4t9=}5+Jr(A%J zIh3d+kH(@*=$)Q)!76ISBl<;IHRbNGvsZGgqrR#r0GC-dDO#ADH^$c44LFPk89o(D z3YiIfM-O6~VkzJf&L2w0^I@5&qZ1QnNCj5a$)H4U9-@`Kuke;jK;4oSiR}|rfUE8a z!KG9}V<wc+p>!Fmu{elY-3kizXJ?l<HCL%Bmo^8$D58p);jt$FG+J^rAkkH0-7t(I z6t`DPXukrOKE$#!_*mO3r7x7E<Kzp+lt7}1&yJsTgQFy@dW*<Ggj)cSRr;6ixWUwm z(IjZL@5P!dv~c`Pi5v%3SpPji@e9tCVmEnWKK0-ZcsOE{P!r~xv9n%*%B_sYbzzs) z;Nkf<d5$uu%-KI9o`U{}czRp>H}BN7>f^C!rc<n5qt<=t6XffC4H2ccee|80sP^8p z$2miJ7;GGE;9Bv`H&b6WgK!(5N|e82iL|t`UvKr&D$B^H^}hRh>0;*{d~D=}EWvwI zUrRq=4HPzM_ZC}Aq)dB8tj459V~+U|CR3rnVuV}jQ^3~j7Vk05X)UGjR)^EuMFKIv zHokC_P|*XkUmP6wboID{L^@{Zr<}t;%lIruNq`*>b$4lTE_YtPUZn;|5Z08~?{*q% z=co(vTO7;sra8WTf}p)-LaCRv^@6?DcKTfJOJJuf8hY6DA^Pj}0#P~<p2jI)Rn+#+ zg*9nxstci-@X*=z)3Hr26Yt~TF}=@<k*BYea<d=;oOy7ZfQMotV1|)rWFYuEBi`Pg z`%~>M<(r$;6xmzhf#D*Rcsq4j+OoSqSmN@w&-Jus+n9sGV?i!ok($JpQR8;Fi5;&e z<<-9mqcyTT4PQKEp2#|FXY4QRlu(jR$E~@!kp7hyS0P4EoXo9x0p_i%Oe^!MQ*>k` z75nc(Jj^uEX6KHeEVu3dmqgld`0L%LVY9FQBdsF<K|-TB%V{a-Uq<ZAaiFWbEkXYx z_&?7Cj?OpG!C?4nzutYT@23-?A*-&W{#?C5tz9ivJyc^*ZN(ZsGqpoYOaMTLul`Nr zDigx_7aSpq3m>*fy76U^crhbeDIp6z<3=^IMG^Cg5YztExRmqutc9r_I|#?8_SHXE zMJA#n56_HimFkW!8Fsp6fZzA*muWmuUa#$njqko2tPt#-h+!#+ONfhC@UMsU42De5 zKNx9bWl>x>qjlE_Syo$H6-yJt$>i1FjDAu#^D%&xo!j|tZ*^oW+Jj|(nIo4g!Aemm z54=*sPs6~=g0T09#EY_iJR6gxG<IH%EX0)jh&p_H$MepPx5H$@#&~(@4JWtO&leb_ zdnLGmWnT7`w9{LPR2xK`#5r5-^BYxs6y{c#_}jh7H`^UD5I9PYZN^A;*1^0_rA&WY z^1Jc)91c!-%(Ao7sTAX|fz9pdmhWO<7x(^LeR%p9?h+N`RKE~;>|*qQ1Zv4wGa_)) zC<7jK+w1V`xhLfW;)8M61pWs3YdX(f!71-Ig8SWmZG4dK@s=oI)V}T409PB0Q+4;g z%<g{=bfieDVmK~{-HAYoe8n9!OB(xtZNpllvbv_%Iha)z_U6ijk5azKAEo>shkf{_ zRDiSoA3o>AWkAnrIPtM7@?SSk?2(>z2Vnir4%(09UTFr;dkVLJMIXe@#$~W%$9b^K z#bH<ixe<GJrTm5ln&5Cflb4RPb{Dl|6SS+zio7j$^B76JH}w@ic&zX-hU;;INx<b^ z8$!=EoNnTtRa|J9E|JzNCS5nuUuG%rZE4Hum#K~|YSNd9sIl}q4^wC=A))AYT&sA5 z7DjAYdlaa;<uiLIJXnqQQ>r{mTGIRXkVd7|CjTK_lZP5nN?ynL?(D5~Cp4|5XOgo! zT(DDGgBs@nc02IuTeH9+vzpZN7}&cy{+$P)u<|3NEI_aw{K4&vWrFAycqgcp)miiH zDo+<g-kl-9!N2*zRE}6wMN?V|VpG)@Db0q6M|dqGe`x88zuRf@oAYrAx^=#x%CzhW zQ+FjFw!5b%Y=@A%OBQ6rO+vqg-q=rIGZS(dTN5?KdrD!Agnn)zuO)v-E512h17gK% zy+-fK4w#Po6jnNsh9;b!%GiiH<!@V^8+hUH3}jEMr~GMXfzL$<<LxWyVf-SgqE@+; zBfIbD;%CO|Vy!HGfJ?y5CEr4u#IMD&PuG5=CDa0f$HFN&j#;A2(;C?Wj1^UY1`P-j z2VAcZgmP7~?Xmvx|M}R!U&Iputj6)ynB%t?<UL7`4=eh^<_WwlyAA_r3DNA$J?4hM z7}uNnB*q=z`ja1a+aW^P7hSmHF3KTxwUh_dOw>cwN7Q0$(fh(;yRMLUr)~U*^-_pL zeU>8TgQcz_odWbj#g|q(y;{VX4y=RTx651;C79cjzdQ-mHU`&`uuYF<ZLy{eC*O-z zk%ZxQS2o!>OhUardAZ71TCyQnk$SMbJzSM~5YNf2=mWvG;Ol0WubK_Xuyd%s;pvEb zxYOFIwz2yB*^tpKXC7MeOBw8E*K49z+O4I_i))sKwNDA8*~d4;d<%H=_Q2ZVmg)55 zWC?iVl-<0jg`tj60l3NO<;zed^*%`FNXH)MgLpvd<WZgw^XXJ@3vykI>a8jGvRS9- zv-OU*szzx&lCO>G&)SDV8QqfPYfEnNT^R**RIK3QfH)_(GQ4UYixToR4e{Od!L)FY zPc2i86{_oGEvC=rgbUCi>dMkvKcTnF?;Hy44<wx;8TjWHl24>iAfi%BfVP4@DQeEi z@jmw0IrQq{BfA_s<N@l9a1+v$8R#0}l}hzvEEugQEJEt9q;2~sZxufUdc0605?H8S zE8KF^BvbElGf__9ZoqQmw_2iunJ6Y3e^t=g7$_%Bch+VJtQhglpVI%Te#}9QM`k|5 zgC9SBTMMq~z7mi4Bk(XQ$K7N*K{OPkJVV(rKNkK}<vAEvgStF`INuBX>ukA%a7yG$ zP5k{R;S}ySfR{XtC!r=TInGA`>#-<lhZkxAGbaQqu56%t(4*a3gKU^lx~Ki6dH{dL zTUBkCT;}OExWk7uf>k^G-H#$nady8ntB2nmnKCj&3dSE4KV3;rL65DB1D02^f^#%d zP1Q9Xvn<Uj=Wl(Ry<Y2$sCh+630vm#%=Mxo-P7Ka96W24&wBW{KDd*q)VI-##h!<a z->sj9PP>^y(sjAxMfz{#Itn(s;ZEpD25v1RnL}qSWfY_>ooct$M+O2^$$(HS;VIOc z-~*5C*^UpRJFfX53W^J*L#dyoTy6MNGB$o~ylv4yHYPw<Cu($_9D4Vz-rk7behnAw z!)DAGbd7)!!m{e}1T1}3plJY|{19YKu&Op4oNKVNycU5MHPze~=RF@uhjfxNo9R2l z$o{oy0_fwC4$SETy(Pmr1KE@AEuBK9SAL{D>4(VY9!@X&N+oNAi#6R8qhAa7AW4dw zsVDH(@4Os4t0;*udpIL4JzL{;P<3lWnBk!1k~izD9tDx0^E!$C@Uu;Sj(@s28wLuj zBFk!kl4nBjWMCs%<G`>Zab|z|FhG`4EbsIH?STUJG{wYB{i7%U-70wZ0bsQL`RotG z@2Ig?dnFG4!>CF9+mI4jBd`CWIn1$z<T;SL@TP}PkXL9U*;Dts97AtnVpm?({iJFl zZ`_4Z59TnrPIk801S!a@YobpA1EHo@4hWv(podrA6WrInd{Il?dgwd_^<b!*EdYUr zRP<{|Bb%cP3X0uhJK&N|$Nk`MzT<W1^8=oTnB?oV7?DYYBh&aeyHdth#lx#~a@_a1 zV6Zl8*A|C)>+;m|^Xtjq&T?1AIrk1v0)&duP%u4HiDJEJo7(EoyDza)rg;V?5$I5% z-5k~Jb(t35?kUrbfV~oQO>Z%5sjg@LFOZVo@FMoDIS(gD)qAY8riN#Jr)#g(1@OEp z&u1Nqo_s~ubaR1BZt;AYh?U>pKUMeY^MXGQ(`-PIti7}tUQb7tOmTW0Mn^xJ#;Bn` zm;x<Lff?i(obZZKF4aiXsDT%IdzqQFxXqJlC*$AMI$dxw`^C1Ol=Qyl>0ED&J4uK9 z?nIl282=~nt)L=XWd>>nRMaLy&~M)B5y;O_<;VWcV<rv^{G}~!)9j2$z7-DR)dt+k zO-mZn(s0k3syUQusu~VC7Pu$GQ0F<gWA^lU7?y`EVSz)D<pAS_a&W9l5JUR{Y2^V; z^W`RREjS<Cs1Zl~>R+`|iM?-I^Iny#sp9+JBx4TLr~poNWrrhg=y4WrYX-dapVpz< zO3}W2sPij-Gq8NLn$M@E?M5*HIpFU<a^D`ChFtQmC8pcT<FuyrYE~pUDr`BV3=BIx z^?Nq>T}c_Bj;f15k0l;29xR@{-aUDx6*ah(9C5b^Rx)&^*tt_}GfFrOd;%PBL^~Kx zdiKG3IZj!<^u>*I8e=_clFA0=2E*o8$9L#};yYiw8Is0G*yX36E<YRNR0erEKK_<I zrczH?U4vF*HsF0bk1if+p(qpy_Gz|vap|)r6!B{zy`>K7hT-Sy%WCKRp(QCs^)XqI zSO_m7(S`O!KBJ|6OTo1$?zys(5?koOym0wKHqjwa2`jR=QGbZIGZ87!lLqXw%?sPV zr;}E%Bbzmunwn~!Yv~H{e>V5zo%T>2<wcM70#!noa>*$JjTz<gojXv}3q?vnC4_3h zzEZZ#Gs|p|G?kZeVbUATjCC)0LaqcRoTscNZ*B77mPMz&y(XB873AlSlvea?EPkSL z*(!rHOR_*OA-1_oU`q|C_t}arb{_W%$pZ^oEj;odOT2Sr>(Py*L_)T^W|-|%$<kL| z_Ay9R0a@^aP4nnuV*!DHHfvbS=s4cYM0SmGQBCK)*%rF1BEX@OeZve|FJ>2P${K{v zx!~1^C!j##14?^K8P#b4z^3EdPXhTo+Rkc*!i7pXep^_6vlAzQ8WwJTe(>bqffe-l z{V}ueIsdyW{pepBp8ex0dV>$)P2zCb<}dz%H@%)-<vm6((p@IZ3hC&f|DN>jiYvN` z9$LR5(hqE^RTNN4Af9*SSajl44KNx~tYznT8S5SmI3Ic}7p3)OKa1N9N7O@XBa3gK z;t|pGflKjtOOC?HxQd0a3-&{9I}7OVfPun@C}fLM7q)|3ev}XaqBYYi|JriH-?Tcn zg}C@w1J^@R^!JyWqv(5%Tlw#Wb@L=(jE>zxe*SpZY<apw2-nW^$<NE{CSHXW?&_Y= zx23urA31N$(Rk-z_4wT`c=Q<AaH?PdqTv<<RDtw#CO`32FTZG+n@^{vrpAguhx4{# zEl$-Rr;4kpg8j*P=O7LNqpN6NSF#o}Mh;kC?W?@0w{vL+l%1;T-Pzfx{rsk&R}K8# z(^o*@n~Oa_OHyc#y}^ey<xbXDu#Pd_-a`k|aEie`%Tu%X$SowJE4R2cyRrU@jHq+B z-*k{lt<3|JqL^|=gGD!p-~cg0A(iRbS?17yJ=fGtQ5M8*+BPg5L^QjGpC`HRY?@t> zwfE7knRe1Yh-3qxi8PJ;jtuSV>nw;H-YwhfD)JB!!cCFKLxk~q>i7=y0CiZYb>XIx zI$)5zzkKVznT6vP;3Z&um3!xRB-GT=k}aP8iL`Sap%HXrJ>yCwBztp(Sr+nqw2g!5 z8f?$?%S7p3obaJAYwF}-ZK-ObhoAhy?2BJESVfGVq<un(9e1jZaa-6g<;3|3HOeL4 zIt2lQW$clrT9L74k~0*NhN~iZuIX>(3kN1>D)y(94rHV~@>EYlN2FIktZOEhL5#-? zraO!S{93-?-0agmUk&Mwm2dPzviFiMu%B*lej#R=;}kvCM4d=a*j_$|?6T^=87wWR z5bu_FAa1YWcipvG=bOgM@ZmnfoAkon;NvYXOy}gm;B+<V>$Xe}SVybYJ;I92F~@<k z8n~ktyRn+Z1g!wp;8vV_YGZb`V;&_|d4zbsuTR&5RLNGggSV$yFn7M_KYwr@6E_5_ zH-(l_L*6<#I*j*W;&$;r8la2){=gW8p6^9U3JA4Z`lhMo6^QzY&s2lP8trBp&bXf{ zdPB2(7pC;JKC3rQY9*5GifGI;lN3;gn!r|ERpV^z6{0kvLSzD@={0@u-5h$*7l+Gz zO4%0>OXec^(h#ZNSF(j+)7iWJ-=6H$4ay_4DxIwejo%b0>y<s%udy7+%w<|C(7wJK zn)T>NaHx}k)B?Nuwg&q)1X=2)RUaY$B|0K*i63!gDtg%8ntDWoG(G;@$v@(#)kN5L z(@|@GdmZ-tJu(Mg-x*)Xd+)!S@FS}c`J>d|gNE{G7#_S*+Jz_PjPieDXIFIa74#nx z5#QRDbpqf?L}Lx2$0md}iaBj3)LF=)ZtCur2V&@oU=x4upQS6NV=;HQ6hv%u@2_q# ze&Q(N*gfnyXL6bE&gj9}S!z{u)%n0DZgS+JET_lvf*V!BJ*WCAh+85dS5Avp(I3v3 zPkntFRe$Hro9X-XS>l?#lDJe9uN`%d?zHBD5CS#mOuGyS^!EVP4!AVg9=WS>?9_q^ zc^6g<POaweg-P6fyYzTFY?bFnqHZT;Y|KaVgROuHfIFrS@VAXkpU?-(;rN$%cX?P4 zgPT_7aVPv^B9A@an4Ps)x~a3G^b1%fiP$t{l7hs0j|CRJ@-cYN?mw;Nr{OHj0CE(K zir|h{D2O``r`1j;DDG6;y{A`Bg+X+us?AT>?zK_$wDI&5;3gM6wS)1~_#zy^r&_Gx zaQM*eWi_0;x7{zmJ%$sh9llSqZ^flmbsqhYG*@{peHZ(>Un|+knA(C8bAiqhTWu|u zm3yar0=sS4*LUO?IQl>Z*MrQ@W4O-fPbMsUwZjwAOwsUdh`l(=fl=sI-G3sZAyNqF zmeu-ymHp#QQlRl8<ot&r`Cq+B28rBpVX$tc)2$Kju8Kp0J_x@9JAw-xA@XI-`m6f) z_l*>zRlEb5)E*^aI5uo?N-AD1vZ_P#ChE^)TqUF+7S2Ed_?3|X;|L)NFhLSJP9EQ@ z^s(_>wM8UvyuqY8<nVgd9Y!+(m*zg6=G#VxkItc2#C8zlZ=o7nmoDvB_MfI_@k_99 zn!lK^oiyD(>RS(C$;6PS9Ciq9+V!6~bx+F*k|rihVk_dxVF6Fy08=3f{opVn3radg zhq?bm5MI$6i%cIsAh)X#a5x-ZsaOQnoQNw{(cV}7VgU?+mp{I0ywI?)pD^b<<vUGz zeck)J-x!Awzsr$1`OP6vG%!>v|0wg;)lUVbycpz;;JgMyK;U6RN}6E??4oXuwVPOw z-st9L{DR_NymAL*a{F1pN8rJHXcw3`lfZc5*)6K5#0=pn-KG_2Z&!9I3lm&(j$=`F z?ie?%_fBR*^A)j}$`@&fA(?y>_Iv4QA^Py~<c2Wf=SJkMCq2C>%Fjr?$M>x|Vtjo4 ziga>1#D#C<E%qzW1u3PRL1W*thV7|w0B?`0EPE7FS?~TN3u?wr(|on5UX%i~E27{p zp8q6-BW$n=IA|%WlD#Wme)ll1fE;o5k8;GN1<aKZ^+u_;%^?m&`2mk<BpD70-EE8! zhIJLA?kr^s@#QF4-;RX`GLi|dS~3e3MT~jT<>^1B{TG{7tluma@!mg!G~+G1IgK`U zk+ZDod#HIAjylt<^tSpwr$(ubt~8n@l_gXw!WK^dRN-RLWPx8}gHP83VydU>2<H4g zx0?4}Iib~#8OHJS1-fd<_u+EplbgB<%lkb)N^)Ui9)ipAQbt><WGCua=Jnkw5j|1c zpvI@C^<CGv<6$}y@D6-Cewbm!gpIv@D*`9V6M+>B2kV&`#O4DVNScGWR9*Yq020mn z9PztwlUMxMx!jdExClI(<=oEBxRX(10%qWB5J9<4b)-%wRAXz=e@|zcxz^UkrpZH( zG6D3~!krtOaOo8H*oG_<3nU_?xM?l7q>#Tq;fh|WY~a)-zn$(2E8*bn0ggrWPxt7z zP1?-w6|};5Iehq=20Rhch(dG95(l@XTawDt?rd*GzVM>0{f?c-b(J=&6ER%}k@NxR zk1c2hLBIF=L1+i<&SA?!`pk7?_&im(2G#+RZY>or<dRl0rp&gC!~#E;?hf6#t#f3V z4gvp>S|(`tXCR_PK%q?$p0Oo6@@r+KmN`NT511eT!ng1(V{Xqt%)D-G*q5kUB90JS z8O0Om?QHWm_Ydx>$Q!Ms?4y&<K>tcA8mdrtXlz|KKW~uWrf|6hELS3MPQ!)sKBsvl zEWV_+Oo!Po2k`;kuKR|n78*zlsS)REH>9>3`D`lCu>`ovTV6NQDcqoZ5Njrmb=)79 z30SwA+~@tI#IqLIo%g%FYgsMoD77x;HJ7am98jdrxoMkeN@=`~iI)u~&Cgpg|3JR8 zig~50B9DCl5}8ed(+3!7y(Q8Qn}k~yuwpYbqtDb=SFa9#H^gNwb`w1}4iu9{vzo0} zreXl*cC4njc(Y8^JHNWD?1Fwr!m!$o@Up*CffY1x>mB2^M}b@ar5&SG@pxzGvI9}l zO_%<#eWH|O8T1CEBylS?{KOYSQKh@T>T@*tuKJt}{25><VfqrUHlgv#R@8z9QqWgn z8-4ib?!0t!+004qMFRlQfPX=HNAHVRE-;zhavd@1V1WwHC5WUx-K@gZ^C)B79*R_~ zWv-ACTd3IYtGxv_II39+JrZti^33f~_4b}K3oxEI?hTlR|L-Fq2cMMxBo^{AMY}CC zwU1hjjDV+9{Ko~s9lO|>1P1JVLp51yo7d%+7BUXuVgaB>%rlAt6QoBRkM-=+H=yWo zF_Vg9ZVqD^rFSwbx0X!(ZEw(TbHF+CZSS|Muc-;?0wKYI<g<3zaOpkk)vs)!@m%kH zN|mnu_L^UtKEip@lTf>;0$Cnr%&FpUa{57D7prpXpffrcID{0%3loGHBTpK>D%@)O zb~nC#1546pe!tA9g}Xnmj#p>bAgj--v)6y;zX^WWO#6v1$j8M+QgbNj%^;8Q)px=C zcPC9ktUPJ=R!?JbKXOg8AFj=lTi9CM#3s;Hu}XYn!_IvlNZ;IGFgX+C-mK!=9R~ne z?z4SXqFPRLs|WMwO@j&?3@2BW>BYNyL-&XoN;19lO6}=`H*camgqwD^kR%Izh@jjy z@t}ltyI|F+ek!9@^xm@!kd|cnFei9qV9HFQiaIn`i?qMz6g!0kHZ9?6)Q#1<v4^lJ z-K$39R4MDBctB$#B4&C8Q;P__HTmfiq6~;ZZzaYq1nuFJxE`?S1n2unTJZS#@I*$X zS9lMof@&~dLA<9Qa7S|&t`voDhzwi{-%L_enOnz)tCAIN-ANN<Q96G6+<&bPCv}06 z(GY%%=^q;79RvQ$AG^$hqkR8~joRYzVhw2aXn9tnFk5d)6-$@z6Qa8$@u7@bVite- zgZNp$t^~CBod^&wQ689@=m0JPm;#lggz3n786Il(dI(Klxqu2KzsPp*HLIdG(>5-7 zUtY4P27{cgdr%^_s~g2RD;8`ggDg(5_{EhznxXdsvmHL2PQL+=g&O50zbap4P7C^- zPmaToNTiS}J@%OsU_bD8GhufWT0x53+pAm2asG4|f5HO|FG2Yl3mQdzPn}qemb&~{ zv0hj>;taZs6Yc`F9lW%jCR|?OrxQCFH=Yrp=U)_<cIUIgrOR!oQeyddZIsBFk&0SJ z)|D)i2q@GE>L9-H0Qy<MKZ6M%t%syROSko})H@zme%{VV4)JV+h#AaC;%rQwU!yFu zaTlmvu5h?G9CU8jd`|v;X_g~9eS>I{H6cixJv-SU(8I>J?x$s7s@jcoGo=U>-@Ojp zOs>cM#QN_~3B<DbdI`dexzdDjzPv#JH1!zCfqi9=GOSn`NMsaPGuHdHU_~)NPoEey zv2CP*hZB+%5tD$C0T_mtOG>S~%5v~E(>?9~g&U7l7PWi7{`v<u8q@fV=Kcw8WJiz2 z-kno=TNIIVRa`u%-(WzA3TM*`g)-4tmGtc@0hcl-ghgH8P?+_FW!V94|LZ;%-DDJI zXKNS}g%K*a&t4@ls>@Pe0Crz*9P`(=79Vy{)L8RI%=m<BR(?_#XS@@jrWTUY8-HQJ zo`tIna~`VXNG+T)h17atZop1Ym#-*|5pT4Eut@KM)2b_&{Utib$TYPTc0A8!JYW+F zZ~h!Clu-39SCP`|t=SJc>TY4A4E|RG@Jazya4Gl>SkeoSyM|Ti0k`8Tb-%@$uK1}8 zi5?G4b75sZ$@KF(T`h$7Zi}Y<FUr%rGz>IeKpBgbve%66_+ItkiL??_aIi{~g<k$K zP~b~i58EQHE8!ug@O`6R;3^y{P(F6r38H6`0TKhkT$i0B<g;>}J@OOi{?+>211$B) zCgKcR+X?0LfI^qR7%Km9K9+-W8oy0b^j{;%P{Kw0qC9ZNDf>h+n@Qv_OAatws#MR7 zc`ST20IfL%a_kg&OQg)w)QdG1h}3AS?A(>xT9sWNWvbUh@|5F#29Ac9k-zPV`xo8| z+LsN6gzfhxcWtD+#46py)aw?lkv2s@r`GMFy1Gn`+!sE7=DvvhBPv{5J4s7UsxvFZ zAuoT5G3Ym!kJ!Y$!MDe)m%W~?bBg7$U6dAp!7MI2MDJBGqS7}MG${U=<o8fvW!V}m z7U})NS!!4AS4hoXo>^*f>%MprJu+=0qG18|)qmH_V|<cdZZvEq--Cbd!E$Uea6_)F zN5|MDa<I72t>BHtB+meiQ?}(hc0J6Y3D$jV1@+tZ3FY&VXY~Vkc=qql(y-4v(t2dt zgj&<u#ACFGb@}`z;BVlT2dAXSo13o8%?Vf+UYVFlz(F^BOJ1#W(dT7{>ntnDG@D12 zOem^Bml((<&DlI1)F^dKlQHpxGBx?0$JpJZQ%>FCp91H(QTqG)hsQ1ybW{qCBKLp2 zNZ*BpzaH#ZjaV;Du;=$B%E!yGLj0HyN5Ld768P6)4Jl3>_ZhvFUi3*(bK_;9x!*J8 zaoEOJT-XWYd2Q-TzmwkSdoyeWt$)n~9YZ5XBKIqmwsvb5A{~AtV4ONdE;pk0Y2qGh zwba=i?)#gVe7rZcxr?jcaxo#$-3<^IPC-f%1<r=SMT!+jzMYweiukM7RRN&DHC%ll z!g7#5?+)l4-4KJ3|Fa9=UlpBrlpkRC9;N>yzv4rWnVtSqdUC$25?gd6i#&kl>&ow< z4oROJ_793x09qv6Qs${ncttAWd=z;-Kj$vm`l*o8xi{$cg!auEuauGKpVYoUFP15i zxLbDOlbs>-i*n*nc2-mMnZSM{xmTn}33(&U@p$3O31ri4OPGV>1+5Wel0xzFh_?n! zL3-LaCcvJb@f34Sf{MbXtByQepJ+W7N+0bU{n8XD|M;59O3oI-dW*~Y1<f(Q|Bsm} zDlB|<)WcgZTTves0GHH*BX)(}B9XrOWp}nBCP?dfCzn6`sFWe`(!LzyZuK`6F5)%f zhE*FU>X}~KO}32NTRsO_Izgl8Fe6_RzScpFxv^i__?$V+Q{rS4h?|is7PEYc&a{+8 z?By2r@+BBNYuW@nHJuHrGl9>2W2=kUxmnv=(z5CqTc~jOzRC7=D`>4TZQJZoa$3j8 zZ$tQ{#%Zft1+uR*z1o7!i2Psb=NWzD8I$s5am!sU$|^36D07jyKyfSom*k;HrMy9y z&le8jQFD-XsfpC4XZx=^;uZZ?5+I=;Y(8}O=fgS&9Wy)gM<4cGq7W=9N(6AzSq>KD zK<|XYXXk*o?moY&o9Sf=+;~wvDqDd<4uvdHdn-_9K5Yvh4lJ1Kap}H)tQJ}j=UqSG z&QfP?Keh3;3zwK1xv~2uv8UUYwW{kt=t@%B@!YRiDFHh!Lg_l|)nM^3(ucZ(kFb?U zZHnZjUnNUY)aDHz?fp$6OMb?^=%w2FdXSJUaGdeLngRX~;U_()jacaESzroHIe9Vd zN(9&f7>wE5+3{p9(=x)!(ylnhQD#0`!1?^G->rNiYK2*mE%od)(gHVXo%UdC9IR_B z7)Hc-G$QyIJQ>cZ3!ub#&rlqI5-+h$%fWrLZfHbdsfM;DS7LP__4(_-^tP0|4hxA( zp^avdemUv{^~+&Vv}6j^$l(o%c;y$ko|rtW6$jr`*e)TY;l2)=2i){SAbIv^!d<&! zu3qOTHhSo`xbHbq67jkT8?oP&ypd%SH!UqAna)t3AG>X4&|c-v3%!kANt&wHoWXyz z<~FN5wn6%;JsPO?X{^rqu*!RD7#Y^e(2Im$U_8J0*lnk`f+}6&T|&oUR^U=taMTOb z|H&egBexZ!)5@EF;lY_?AV!X#dnNXtX_4F7zh`s=)Y|;d3$sW+GBu@9u)n)cfS+~1 zx`5k9lv+4C0e{qkK*i%@qz);W6xUtJ)h5?*nR?kWcbNs1`5{5dEH&4kJdJW71c<el zw3mrnGQ8;&Yu?DeiNhZ5w{#lwj`Aws5NS#{2A7zYRXj(tVVB3tekzT}vt>7D58>A5 z<!95v4zgOyJ7*%XJ#TF_hizpXO%d|Qe4*5(IT$gcIdtE>E;lctKLWc}CCqPu2K+7l z#d%uF>3g3)^3m-Wl7OWa{yRhsQ`=GO!+{UiZHHyccB?*9E1Uv3S+NP96^8G;U2n%k z>~0BY?{0lEu7nTI9kjl_S65xl9qOv;Kc+FRsVbh-CBUFqt{^gn@<EW4$`f`98%s>4 z&iNv+uA_y{LFFYL;;NP3{X6!(bGbcVb~Ef~?nG=!gle6~Rh@L(6uT4<AiwFWkeL8( z(BMMIXV9XtcHd_NYwrBA6l=?wNWWzgaqqXWa=&)z2F2$TW6G8L&U#S7DEbKp$C8Q1 z!mRc$z5rW@=z)2Z)M(Obofyl(_qf{8RX}=Z)6)27R{if}Uc(8<OlD_n|IrX;{sP?1 zoqxm%5g>09T*Uu5?MWu{2U}2GlhFDr>TP?dtbWAaD#Li4-uoC?ISVY#EhjzAxbv{p z#o{vWd}o=Sy@ANn^L1E*ft{&>`Cy4Rnvo_HDR%bLu|8%~FUPQl)r%^A;oP4^bS^X6 z8E@Y35}NvY2OsUD(2f@#lFspAl~JL1TuO2p_x@zvI+QpW=+*s}(Nd4CvOr-Ye?vgw z=2Hj&-6)H&M1+=Q{nh*FZn4EIKUtQ!&<hI-{GY&08e9ikTU#o{@*Ze3`c$_3sLi~i zDjA34RoL-~E0L~CerD&=r$qU6N`M70(<`U$h9utI|4felSyxoVG6s(YeZl7}8YOmG z?z7Z!u(PX7gU_*IL?jskn2GN_i${+A+9J$+d~pdRObqnA!p^8yQR$5N%7BlO7Ucr9 zDRpj4Ovg=dd9}S&0yj0sMemKyk}sq1m*I2RaP*xKO3C032>yJRZ}&rRRL@8j1;xyq z^X}L*roRjMmmc6HwHsZ3(k#Q5K4zZnVUBq~5)T{%1eN;9(^}Nwrxirf?Ot~3V+n)l z-Z0w3)fiAY=?KaR{uz{u`6DO?cwshuCypjfIJZ|<+T);JpM1xGyFK4_6^S`MnDAh- zAho!UEgHDJ2kBM)oP?c|eAh%QS!~^aR?~Izmo2L27Fv03)VfV)1)FfwS!X_J83!1~ zj-C9^4$nsz$tSY?aRWabVDSO^oH%xE1%?ra9Aw&4&1dV57CKhFdg-I8pUfY)VP&MT zZ$?UZ1-K;T-nMJ?)l?(av3bHx(#T==t2oP*>>fRDVYpiP)bxf>G+4{67N`ZWv3v!o z5X4?=spV&RQds6IKDOqJ_Gsq-XJ_U%AHYnTEdg2;1(b(nTWCd3&-DUgd+(U7%zN}` zXJ@hhDwR~rYbj90>ykR?+2RyG9an0{h#NUFTW5Xw@`b+x1-noXHvtY9;G=bG@yc`x z^;!hcKwM=VupWD@+m6kOu)J|VAFyw>I052dzt}L}GX8K|5!bt@jsxbW%WFzG$4((v zPe+Y#8t=89?5ZTB*$)Kn>C6V`py0@!)s<o2=DQzPX7?@Y%^a%fku_$m`@LlMP8&)R zv@-CEpMVPWo5Ppr*Sz~QeC(p+!KzX#>QwJ%<dMBP|4>j9Samci90)b>X^O4A0{AMA z$NkAh3qRN&b$$l=z4I>m--R9-E-YMf1}y1xC@l_5)?%@8{N(h`l8t!SCHM<qh<=Qq zc02wd_HuAdS3+VRfhARa31L4<o+z?L$$Rh*3tml-?Ro9Z3o^TG8s7PO3BH#Qx_~RV zDArP)YqBmhqfwMdcP!Bj#irUH>+N55?;_n^ik#jrahdCiPbwCTderr?L5%uRvp0h` z9a`quII`oqQ=`91_l6OLg@r}2G_c~9Q0GvOc+75;#%S6qFi63=!9YLvMPGz|h^JXj zT3Xs1BBwNUEw-zoygXPZ#!uVAS6_7c+B=*rbiZ4sy!>`2rOGVO58{*~)>D6YaP#R~ zwC@v&XY4PzB$-B9cKW$Ncw&c}>i+s(^|&t7%hOZks=UMNYc#SX>3D2*LJKVa_EUP2 zxP^;);t<Pr+`d-l^p2<CTGqrp$K6wF<VyB2-@}6!8lhf6hem>s&kB*ev+C3ub>uAe z+)2N)=Iyo;VnUiR58^ZU>LIi{G9PvZ4oM^Blz?|NP}II|farzw2NU()(Z0XTv+Xp* znue)-(=Sa9HcXTrH3etSy8fEl-Ko65UQ$;JsoxO*f<R96PZ;9=ALiO?+69^)ATh4? ziMHXT+%JAH(VM(`Id#1$^)OP<Lg=#sL&IIYV7<$XW**sZMiZ|qwvP-prC7H;UDF-D zef2NmmD7`&Z7#PP7F_(`{^wm`5K(<c;bm&KcIsW<tv6kZ#(9jv%a0&G%rxBfY{z8) zxW5@<qWKUZTIv45kyZdAb|Z*EU#8g8>Oz(Ka0ihrr}*t5u)ECTb_592H9okN*i$8| zDAyO)Zhnyw3v_tpUM;J-^4>bH;g+m$TfNV+Zx-l(wGTxM3VqYiN+*0aZ6O|QOxZ9r zG^CG*CFW&g0iXzs!FQIId#U(qj=?xcz|NjEDyfc3C_vR`T`pp$@YclFp9U*gyoE-< zOzB4W&FX_0KOrw6w>>QZ2EKd~wj!j@(kieLC3c3T)tm~^woU7$j@`w2y@<AH=Fm&? z<>n4r2B3(;-t4Q_;#Rl1L0Zw?W_mQ(p&@Hy*Y_o1DTVj=N9(Q(4rGnkwh3QuAYQaQ zAucOrDoQ^iSCCV4kyg{yX<v|seT_oas3SMCVG^t@F5^hHW)U|Ko|xK_<WnpNId6Ao zo2<Xg2It}9Vr^j5ere5?(oF?q(M@Rk_?q9Zb!fM+xa1%l=n-Tfe^xz;|EzkzG)5AE zl?QRlheHM0GAQ_EUhgJ04A#I+Ms7~!2ebf$9G_Be{=P4EUO0Zb;Kk^g-xyyF)P|TN z!ksE#q0<}IDJ&(WBE?-SW^D32C^X7DDlsyYhb<>AH!dq&`87P)?#p0tkN8S?$y7~W z(<?{als;+h^p~S+vk{T_48&K+3$_Ph)mV8gY($qPu;b0|<T8}ULIn~fc1=PZF*Q0_ zq6gidSXjT^RZVY}mQHBdx^(UQY2_$5#F97a_W3R?qpTJy_xuh*2P;ZS<h@2vnq|f< zU69xvcR21`$2Q`0eZ}L`4qus~h)sTdQ~Nd=q0>N#a69F~%fffo1nKDt$@OOHLzJ5u z$X@1y*PscdNh+*L#j?X{XTw>17w3ra&FJ1S^L6kvxMl#}$HRDA%6w{APw~@KN)-9< z`t|EiuBN*N)$@#%R#rZ5ZOXkX7nz1+V<d*6FL)I72_uNRpFvwG*Tud+OZ$Hq`_gbI z`!?><f>gF5VJ0&qH(AR%OxZ;yRFbW%$riGVVJ0GE-xEe560+~h*oQDe_I+Q+*vB$> zub%t9pL&ktecz)mK3pC1<+{$!|9SrYzh&}Kr*5>a-z|gOf{oIrKdDTPYrZlqOiDW< zfcvLsICCS$t%d*tP$s#VC3xE04o7^CCX5G-b6)VY`^LJSRY|0?wdmeH%+YxHmpkoY z6mX4jMeR?n5vpJQkyJcz&PMCLMMrPAt<crB^Tjjed$zQSTI*lToVvW|)UoqM&HeqQ zfDS{!j#9ZIZ^kRT^JR&v-BLwIyd)v7MD9{S*+m2vt5KmrqHUCOW%z0;eKSHrKgv1I znx?`=t4rz4oXF%2$D5?Q&@Na<QhM(2NXHKHGiM1v)i<Y>sop&-U8Fm?IEv$SBglrw zanJ1B%##okxb{jxni$kH7?bpMsA0K`E*)AueueeqO#j%mH2e+w{!aT*-dgsLQg_<I z>1=IJe;kQiG<<KQKL)517i}TtvZR33Q?a-?8;7T(O7;=otMWz#7bn0WWv5%_{U?GL z+ZgK@C&SYt`vS<PL&gRMXifc72`tP_R`l}Xw9A{Xm#%z?T-NlAnwpBdQcK#s**fDX zvo)oSMa#i;3++9oM!vs!cP+G3Q~w$3##O*?4^HH+mFs2yiwvK1YjpW8bjgu}XtvTR zw_>HEqhoB1$x83@Oy>lw-Aoy0;e4y3ekWKbBn&p~#r2=&)fMuRy9K*STd`*le0!yz zMl{msp`(3u%Y{w}G%dSrm_d-lqT=S<<;~zakv7);`heiPdq`*6uz7+>Vj@0$dxqCp zrXOWe0bg*e#39^8JqV<}*&_gadtR9Bu!ws&K}AVzB@So0q3=r-ye7U$<k$t+w#FO! zO4p`ztc;hViq<lM4%TxJRX1+^>^1lQtk)F(X|EZ-4^XyM(vEah%xsbpsrA<L%{HzT zS~_uhvG3-sth;tIzs}*;$~CBrJ*QSHhW#tSF)pHJVcI}`SgBIe&cA|Yyt#522|8tL zW;AWcZBhKrF8D&b6E~4n>luAMvfH=QrIlye!cs;GMi<aRvmW)Zz!qjvdz>e7t8gtK zs@BrRq`}ctFn)H)MNYfqVTHxlnA0EOXIiyjery~JE#ZU-`2dK7qf^u*^592g13xy3 zfOUNN@)<k(&_h|+S?$A0-fY~_s6xEMM7g`$g^=6T1S!1Rbsy`mO7CSNq$Z^u#rrhQ z{NO-TYy+1Y9_^1D&(=xj-#o=7b2ZP&#v^G@5;wiRpPqyUb#*Xqh{Z+S4MA}VF5z~Y z*l$l7>Fd*Nm;skr{;P#v;*fDM-Ov1YcG~>RXs2c<CXTXw3GwlCqO!IrcWn~zOFtS7 zlE)4NM2=$}`bUO}z6jm(?}N*I-F3zjvn9r8=q_GDgjjMc3AU9OzUAHZ>>6sKdXoj$ zgj<0REVGg+nwZ_J@6?a*9kgxzCS!XeICQ?YVHNW@y0E0P&=%n{cQ{)0if?pmw=uL% zyO)IE!{M9|;;d5#*jX})g`C?lTZY_+upjX-oZO!tJCS0V5ysJRctpXSsgj_a>iMY= z`u=CN^W)EIM~dCsdU)f~0Ml`unHk=DPP-0cI_+ff%UIAdlXHubJu8UuioH(qBPp@i z;znvI1T8`DX=nGeA*EXFsSy_vN-b8>KWVD?VivqE$SyB5={T&y2s-|b9GNfFfvhs- zc{>}d+$}1|4&{OJN?2RSunRtrK@7T}XH7EF=TXPpO3_UR%awtvt51^HovYap_4Yll ze*_1eJ2CjS643H%Xc}J=zUB6YHdIOw#O!P7R!Av8dc3r;ox8a*2Mxk(xs3oLimWH4 zCJmM+3&bSoxJ*-tn|JZp?1gPSpij-~K2K11G55HTdIB_%V9gWP<igbsjqiQ~Fsfb% z;I&vI#7RI<o6liZR+i76Td2#yPGpkX9<p%>RFs!H1FNcjW?#8>rH}*|!#<?|II~Z> z(IXq+Iuyl7C1abCXaLuHW^BWba)T_^=S*5Hw}~~;9hZx{pOlpni|4NDJ}M7o-(WwE zZasDQyl66zPkKZ8wGZjQb17Q_Myz7kbDd>QpJk$Cl;q5Keh4n8zVh_t4c5f~I;F`u zA7ridW}qn>Z&Q$LQmCC^)u!6qd1|lev5rFj4jl?g`t2%e>H3i221<Tr@&GoPlYWM~ ze19@oYr|LOkSrT0Xy9SLGj@D`NI+4#B*4nJZCcQyy?cC#*OF->aZ3g4d4nVJ$*pWa zDspADJnI+o<zMp&pxPO~RTBD#S#t{mNQ_ecNMfYcDR{=E+2yB?qUJ%Rbe&As)JM8i z{ZNFheF0lUJ7c-MjtLWma;G;2xbTXiTLUBkU1AcE-y@xZrC8?lqGTc`?LFFH)39md z>1QXO6u<KhKGx<mZ5gtllJSt9m|5g3lf_X!VJE)Aw40nBi#lBrt?q}-w->ZV=%H_r z_`a#`EQF0F0{4zHq8@|YYfmHY?2_@-MF&3pN$)fXSac`vo;O1W7X5wh%0sxCXgXq3 z?Cm0l-^q^MD4p00enDf>O0*5&wW73JTvBqWfy5|1K0~RDoHi0*kr&<l+=q8&7&4WH z^@Y?S4cuzV91<jBd|a@sXHLbxcRY<qMH)dbqOGm@gHFh!M)wtg&1ieMy8{Rc@5u(_ zFIvWrzT03=zp<~{jS;&f0>CL`(ir{L`n$iSBNym}ip@SA0LHssY@%*a4No=WCFQpH z3DMKLRj@SMwphG1`)v<$(`hbjaT2z--47!CSNTc!-0}py{xtHPmT26|ODGmYVP8N{ z$-EpkR(9I79@&CK7$Xx8^GJOZlCK|u2tM8<i{5_MI--BjKj&IzOD$tDvlZ0yg_V`N zaUUQb^ri*MVGPjr`(vjllhhdS4TKD8MVDD@A?ze>tuf<Bw)0G2Dpmu*o+O{zu_tGW zqb%thER8#TRRe^r$7B9)yS7IGmqHFs<G&WbFaUoG|3m!kjH?59Mkd1lfe|N_2pjgo z`0J4v&IgZsvnm({3PX10TWUmjK;fu{Q|5QRDXF>U*ye}P%9}atx~Q#6a5WDrv?)`} z1Nr(@YiT}cT@L9Il6M+r@E&jzveP;nvL9c_1=9H|nwSnu!rfi6Bf~uA+I^OEVuI|E z+D1+bp4_Q1&>YJG!P@kLJwb@6NJ$mFl|5a{oZc9eSLJpb8sJw*6?7u@8uw{t98%~v zlg@F0PG8t#XC6W(Oujc7?{&=E8~?zhxRVlTYEKUfOD#k5=E=o!I@6*B{AYa!;&|m< zpxil;XA!bL5RTHQh9$FowPz|m=_51)B2N?XL13%ppZ-h;?xxT^c`sAa9Cm{{uX^F& z_J<BBvBh`T_k|^+?qWe~5Llo4>iF$aaogJ_W22+zbH*xMg$iZzQ^(fi8lA0JJ**_0 zyzmYyHPPGOM~&`O!o}+)-JfGrQRMr!h}xs|Ogt7al1O61c^?%V4+JYy)Ck=p>1k>8 z@^2U7tPu62RH9h1rCm#RQcwrK_Bh{&Q<9u0c>csja3jNN$cAh}D%|J{mBV3fx^Qtz zpBqQX4mx4V12oBEtYDF||2T2cZt#w^o=k=Tz(pR4rNqjp`pluREqfkqp*|>zRuAT4 z>Zp~<)j2Zw=v3g~)1h9uY+vKEwC6n5RnkF6l^v<eDMtzrkBIh63ZPBPgq1J;YbOm* z#4A013YR=g(^&q#<Ed0UImsF$q!rn7|6f+QSD!zC=J!3z?RoI;qvMRFr+#XuligyY z*0FD01g*bRN}n_lg;AN+cfShF%nmz?ar>S>n5Q0%WiTeoo)Qs_T;jIhC@l>u8t@Ie zdr=H~HfS8R!MzjDWH#D}^xtGlDp0YpP`DBj;RJiL7w#MW+Vr{j{?5BTdmX@fY#E29 z=*WELIEj>=k_Ut;o7-XID^?`I57e|{OYK*tD+EHL&?`inQjXx<%F4=TVuEte=5Fyj z%k;z$&wz}vWn@yhm8(jAhg@`dc-4YTlJ4H?vz!gjVk^o{+u2sFFlDy(bD#kClCHzG zwE!?FU>>WgIYdu6s8sKx2MtS@xh*~yXTL2S>L}L-C~N7prHBDUm9DS%|GJ%!URC%M zU<h%j9F+=AN>fQ&t@-cpVyQ6Wb2j!Q_kDv8^i%TBQPKuUC*90mM2rEV#pQOYV~a8` zS`x&6o}1ETngRxX;*r%MH#&Cxw}t<TZS|Vl+<Yl1^!8wFxMG>D<c*Nz=ZE~oWo67? zhor52#g}8r3QQiBcGCt1;EhJ6NUl@pUMWP`2e^1lNfsH5wT&H*(+Tc=lPK=7=2u{~ zgSEalIjr=`Pi!k+#3%t_JaFIWJXKrEv}cfm#bFcbIQaw!e;t&xY{=od-R8R?h7;=P zdN`my@RL7Lm;@V?|0V<RXd?Ca@fd4NB^^yB3w>A{nppGdnBj#~Vl-Y~GtSvf4zV@P z>fTc4Vww<g^fbf*w&8}#j}I>VSFqw0`x>aCSkr_bcm7jFUa?WfjFtaCDGI;oRW`1T zG|JY2<Uy0!-!j#&Tx|faK;gwn-&Qvz;S>2}W=6D4-6>PnYrK}-;^GUUcH50-O0}+7 z$~B#1WDk$JPMEmn51}jIVlG&F$24XME@|~Ki5Q0;?LuW>(&uT1X;ykt6j)Ud3bG#j zZ8z7#bP(D&JRV<3C@jgbio}*5jsx<c@T9HHo%@n3w3VJK3!`X{t4om5k^pIj>H$@K zl^diVGECg$Yq#-J^QdJZqDt7+nFP;esJv~q%c3p(WkBU+ZKB$>Bt8xO!5q(d$KB7Z zJ!D<ov$xsh=0*j5c8zIf(3Ca}hT-t840g>Q=UhXex3S_^eoDz^*8z&znf(`<^D^G( z`o9FfKt1cT>f13-pEyEjR(@0g1j9vzp!6|+qHsW+r)#o|1~7+RsqYs5+A?`;#gJyd zkoF^(4eLt>BYiqqjBXzpiSRt!?NFe?eCr+_608@i_V{ZZeIQ~fE+_Z2pqjx1Z~<u{ z>v%cM?co@b+0>g7(77TVPZ{@*qncuijl~hDh1NjHSYIgjlo%*=-ml}%4s2WeyihW+ zqx|$nXs}3NXk^FK(vSM33zEWqZlSUr$Tk)*Ub>F<P~~TRfoGM6hmeDV?LiM*+CWEH z=Fx^Z=}Pg^mZ6AUit!ebWChqQwRW(t%?UIJ^OJ65qkrhVWX$P#zGwOE2=q)`@UWs! zL&TO0-m42K`$;6tbKCh&($&=^{b>5>&z?XA{MknqD7rJ;K<dCZ)i2;*`tQ}}4C5Gk zV~X)#Im);nbpLd-OJ}Io=-NI$3%bnp%NW2AXp64LJ9U0_JO-~@|GB_a*%e$#dB@9m z*n_<RSPUM|CwkRp7dWx<$#`m3$Y^>?`r^y9SYH|jA<8rYRCgh*=1w>GLe?ekOwy#$ zG-*kGO4M=><s0&!Qd7f{BWHg25}$8<k1S{Ry4|f)Bhxa4y|?1++^$2=zYb`mGRW2l zji8}#>-m8rQ-VqWpO@6=TXv<>)HA8{dsS5dYXmO5lJ~$(aU+3_uvVaqT2P2ePPu>> zGO2iNu(H(&=XN064*R6(W2N2fR2FjMZoE|5vi4CpDg3({G%1O{^qnlxmK_E0OZWC^ z-HMQxBg+2;SXsfGof6$JS28>;EqN3CP9g@S@h{F($z;t_Q<2-+Y@RWzEv9}j4eX-; zY^4iL<^yF~VS)=wRVcFea^Sco=Y_%BT`~u$4ZC3)ALjNFI;7gD&7KnC0YVdMG=;wE zf?Ib<aPam0X<qn7!=6G8W^iBPxh2Bwx}aMG`kDG5>$T}RjwjV?ddY^uY3H|tB-$cO zHR2~&d@c7nLyO5>qzWvZkR1Q!)-{Ug?WQ?nk+!OeUa7NljUC6Q*hn`wqvw{9!FUJL zAie~Zr=TVgbC0P@czlZ|Oc0ANTl0`1cbE-fW}cGUKnHypM7x~>C|7=H$S0dYOs%O+ z{>BogfZcnSjH-ziQYbuIzsN(&2Tt~-Qwx{7(R*|&4RfS>)rP>c*Rl|6$yg8M;>0(p z#-zDcA(~<s<HGkJqI9=J0Xhg4)jk}T$M%$stAW~Q=k2X4J~p&mEVN-kr<gp1BYeY8 zou;K@pbBn-goPc`FAh7^KTIb}4q1q+EqK}SQun88OSQ6va#IX>w@M4q-tsQ%dhEC6 z#Up*`UF?h@#!~IUGzrGVC`TA?aST}Hol1NBtIV%Z%_#u9%-t6cGXHrPM$<qYTlZUe zAN;gFg<~%UtNrpM6U5#kSw6NYxU!@~kY)lROakG?mutIe8;ah(di%Y-u82KZr0?eX zHE+HM2Z83MENFa_JlnU)EGE80)bX;S6$p~4wNFB46d-8?l&*MkNp}!jprOzb`m#2d z^y9m>D;4hyGl|H})w{8Uvd>HDI?aVbX^i>k_li~g$#UUoY`hTHoG?N^Ln`AW8`xAn z%>vz)=&3px#T81k*1V_qO6Ag+V_s68VVUS0;4+qy=yI94v)n3uhO$UKGCy5-7kTof zBKcWl!R;|cv}J;bxDWEt)rEn51v5WVPo}Pp=R0Nj7@RA~X!4FCa`2I{F=FEbY)JK8 z0zQnwxDp5FBS?fVuu;SO_cTquau>5nX!Wr5sWHt#u>l79!cWny{FyG~6%|2PNy40s zJMF9Og+Q9kO0$}GG`jdgtJfmkr?;l|QqMa1UU!zlOutx4-#l^t5LHK_o$cDT4$Rw_ zR2mjDT=RrG+}^d@caBzc!=;sdMQTm$6_stCqdE|W6O`J-)|aba%7M?ncaC}40jqR< z)Uje2@6xYA*aFiHKVcD)2_p-x8N8K7OcoJ4N9PP}j4S(cgL$e)Qus?*)ep1S2zp3= z`}NgfTziV>jVD`G3i>-WxPhlrp8;5wI($0twN!;;rdiS<<pt9us&#V%@W|*+<P2C% zpGqJ6y@D(O^KQz(`hDwv9=`B727dC_FJizg+|N9l982Y?-;w|VdA{$*u?z`tEt{Lm zH6VBx=Uu4=mLz<BFle<fhMC^(H4j+g<SXLejEN8qj?(b4KRK2arqN*EU<t{T&{y<W zDg8biJ*;0XJ8rU@OZPo8QZNLi_+k-q1c-6n64TBhFSs>4ffRyE8Is6Tjq<v0vL70X zZmACVe-~kGx-@x{m`ixa#vdUtWtO<B6(h=R=3urM)+eKg+-}|qN-U0ir7w``=p5R6 zH+4@owjfY&b}zE#GGX!iehX?EbJBC~%HZCQANMbVJ!>LjsTevLJL34mM;2m5Amu`W zf>+mA*)H<Q@^3nNpwV*ev<?Y!#jq}Pp#u1arIG*6CVjjl*nc|8^6ZPJMh-!FwO1hn zV#b4TH50*A-|MF50}_cNRi31Do4&6`dEuSmKRiZryl!L4xaPW?@c19A4%)nnB4A13 zt4){a=ENGFHMw`KVa-AinJ0!yud<&rijq`?ZBqvM_K->IOPp&-NQdifW0-Lv!ym9! zApGgf*t>B*3gv?Bu<_x%1S7W0A!JI5k*qVFQ1FPC9;9dIK$v`N8o%|Ze|C@CkC|_U zdc7Zv+<p|*vE5e@vQwQmoc}45U9f>P)LXAg8cl>-R(j%MTXrqz9h0jqp?GpJ>yTnt z(mVeC;oyi7j})5}or5iJ<)96RGQ}NyII{SFX(A~&^3Jac0d|Xjs3Ti{(}GuNd20Ny zcYamb_y4$;FU571{&Hm=H=*4`r(HBL_OG4hdIcCQ^gDeTMX0>8j<;rui?)`6I242k z2lszl3)2dJpcmE>9$BCjr{H)_t>-~6cQ7+&qAH1I+P{{0$`rKgE?fjOoWXC4@3~Hd zmJ8g)v<hOOXPLFC!(3a2XVzK*)-Ggtaw|PQ@)Bq*4gb9G+ILNi*GCWXN$g=UpI^e= zeGXGf^Hfv-QW!nGTwXF~S9z{{-gs!liOaLr|1o^BvwOD?g@@uxWU?<5Vb>UMR%<UP zOIw~VR7plmzkuXNGIRtC5*(V!b92L*6dGI=-I~5#Qq^MwbtZ~Hi*#bw6C$bUL8&l( z@HR(^C->c14%_^s3r@U~avN~9<m^(5(ueXEbMMt!@U^(NNfmJmD|A#p0-SD-d>-Sk z6;nC6<A1Ef?Wq%EfCy+OkW+1S`}p`Xzo7QUn!^)G@Xj$EHXQm|Lp3qmmj4`!p$%?! zu4?f{8}8JTR=HKx-OAJ&_2a^~6XrfK`5=wbUa?M6klZ_PyMPU5sRI?g?OJcCrn<aG zp=COP+Akn;mxGpM;tN1@=GRc5j2>9w!Q-J`&<)~B3E9@R)7V35HCEEV4X*Z9b=6b{ z8DFKhuDZ$-|L*#u#>So2DDJwX6&p1lI48X4cc*8`pDrvNG3k&0ankUDp4<_>|J#YQ z_tWYbEh~2Ux40Yw0k6@H!hF#yOU-D3W(=@yY#U^dyP5s1r5(R6l{U46$16O(Y8js& z9+ndx%NU~<_AXGVm$6Q^JU?)<^Xj_rjFsgW)Ph;0dLq0(zWvRZx*%u8t)Lq?W0Eqh z5K=}_F)1<b<!!gYnXQla;d>ztZ&F(i{7;4)BS_=Jt;22ESeJs5d`+866tz{}TC!bg zMsAX2!N$7p#+(_^4h}7I)`A}p6}e;ip(~?Kx2t2g*CSLyI?B$5_QM}@<~hVtfXzb3 zxDYHaZAx3lemwCInk?f8>s(;OO{jhY1ib4(kx~vEA|PyQYiqzMQGQ#WlL%wQWR;q9 z@GL&>bJE3iD>8S0oSUAPuaqdL>CGd0m9Hn5hy|dz1lEh!zyMt^`K<HQ<ug*!+|L({ z6(=b<J9MWi8EPe{S10Q~gcgkVY0ZUgRM@k}>jzvXpA@ofBM?%pO*}p8OVRct<xf)t z>zrh5?A%k2_76>bjrXJPNF^rq6gguSlFdr&$J}?iZjn!gY`haPeKLU#KwWkG8vTej zox|y^@7fEHByZk}l}V0pr_p}a{i(`um654lQ}8a5JL#?SpkHxOZ$346ujJma{a{lB zj$<l(5)lDmqHOjg8<t5ug9<jpo;KVeKU<IG1Bzv2Ac6)XjsEg`n#zk}U@T9%jwt%q z5Lbo9?C6T)^egdS9pnQ&;I>bC9r=OlZw36%zqi0l^9LIIiZu);6s{^xD$+b)@`{bV zrCMMxC%`BIvWi(sLcJE{s)Z;(>m#5yp$%`2wMxrNZGA>WZGC;QVp7?<S|O+^0oyCi zECKOUtO--Ox6E3k$-dw72@Vb}*BHH+1;(>`v39=qrCHppzqG*K`93c<wCrAtZ4(=n z>nNV^=sP8&-lMO#uRYO{ogI9aYJ(a)>U`WoLajq_1?2d#Y+l|&P9n_AMbX*ph2(eY zP8=JZXBRz0`rs?7q7Wg)y<_9!qPPv@dT~F3w&=WZsE;mws_D6HT;+Z<U{&}d{q)Pl zf*NU~V;|0I!-QDAgH7FfPbv()b;6g%F+0jmd0(^@eaO<JHc*NlXXw+Mb{G+sYf|#u z5$64xj#iBa^&G5>ghno-=OG@|HG$0Ltx^@rDRD;c`v(WtVx=xy0dZ%+m5v)0<!L)< zuNj6Fe8$%8ncY^O@EPv66-@=XP&^)Za6ZM_t2ZN4cM^=%5$bEG3<*E}eTbzj)BYsP zVq^JmYSAIPp>Fr-M1ti;e@EFIMQL}w0=(|YIwldLUtHav+vA(oBVH<a5cgwQ+0PY* zzbdH0P4?(C_PKN;Q}Y7sj7R6y90P*tst5p=-kvlAPM$~yo$J4^Xd8e5=%GjHmw%Be z)sy+){4>8XQ#aWGAHV|_<r|=1Kbxngs!FoTYiIJlg7kmwpMD3jn$Og1v_G&Uw+)qa zqR-7GFj2kq&-Kp}@W-jn(G)aShck=?6npNhR-3?y#2?!c3_-^bsl=}@_swogH(fIQ z$eA4Km)qX2s#+NoAo50_1Kp&%R?QGeP2IXsjWDTFS^ZieqMo|l)8lNt56cAkaylU0 z-Me^p66i?rRx4c2&|<OK8?k<jgA4W+7FV|vDuMz}iPJ2quB2wsAW%UUXM^HJMCliy z;T;5m+!uUxbaeE~AeU>@bWOL-kPy5jv{+|WkI7b8b5NzwQZvZUK|~HntDB46c(r<d z{~d3FTGZ3wwm6v2;)-*pG1bk^!7&sGRlL|a;%Ua$B_kxeN`?Q5JKMP`<)GQk;c--I zoZ0u)aI1L@8K_Efg>}jF30JzfJO}KePT)eGXMmDDilmq48d;B&kGox|?VgR)9>xH+ zf{9M&rfdiz#eA&J$%cDRZa=o9Oy?0?1RRV)GGlF_y#>f03$c|W(wniiu!ti~yi2cs zaoMCc<&Lg@4r#B%_y&5l>y}GfW7n%_KPR<UNeO&|I~ujhR}W6bgb#lTItg})qyckl z#;E(i*(7>?4Wh>xCBZ+B7Qf8Lf16|jVWF?+b)$c462?FCQToJE9DWTfHI4si5-01z zXj}9c&N9kJD~?CrIo2r-@o*Aqklrs-QRV7`+{Jqvw0hrIf=8%=>aNdZ1S;N@&!6pA zV=@5(Qv|rGx`j-+L{=`@`;QFFPs`nsSrt`Xy&1b<6(~YauNz??H`BSe`+B3PNm*K1 zUv+e9YKrfh)W$~wU?{N23&Dw<cGC*oWgJLEBfl~z9eUAq3)4JJ5N&SZ#;OTV_5;%? z)8`DoTcI?Fs&`<gG>&9hh(~eakA4w&eg|x^-e1b6w8O#2g>cSWc8Pmi?EK=rm|dU| znQq?YoMn?o`*-8dPSv?`6=29!WLqa-@HEt<AZe2a7DcT}WEL)499CxCo+hsah>XP+ z*v5_qf^Hvv;}H7mg^^*+_6A^`676Vo_&JLDfU+w=<7Q}deoY<nNdVI;)t47am3O|c z)J4zoqm7H~Vj8M_=`^WSXv)2LHVe-b;c>ZNeLdyxx#4-dqQCv%w(`&-=z2A>W^1X^ zvn5Si%CbJ?6np%)p$41IFH?u@#~y_G8+*9b<@*YCmj7H*1paSJ%B!P9j)SDOf#RIr ze?IOw^W9hUW`FjnQ|lSdv?z#2(O~lC?o=5I9A7z?I@CNhdPU{CIc+D0l(eFua-yOE ztDU-Fs!G%gh>2^8iL3d}HI;$L)KbKPM3eXT;A@1^{?JPt+QOc>p+ttN%%0~F-i)!P zM$K!!$$_~+V?56e$2Cxj>c+snIm1wu(JDV?ZEdY~J{>;me+|KT61mOw36dpN-QIpz z-^fUFDpg?JE$Fp$=V^H<i1gGa5Rl0!w=QLF;t}L~_$(=(1Eqb&u6emoWvElgG{CnE zI$R%=|Ki+nxz=#0?-DbNnQXc=y$JT!$R^|{UfkgE(Rh7@;C6|@v!pc<)`(`p@Dq&N ze0ZawTgRM}U?D=zeXW*WGV&`o;^c0Ky_05hponYi%!aQ4*`2(>NM`6eL&P7{xd<%J z4Tm*nD0p+tMe~$4Ne}7GMxC3@1NA8uGVd247w36)kIS2pAErz(PSWde@3^!Y_>f-u z?qHi&{a1TBE2A?NUy=8}OlNHf<A!hj90w_XG!9O_?uW`0{f1k3$^*DXQUc96g<rVE zUeMpTg^!ym!8^*I;|n(x<VDmmvU+nRP0cXxbaRz}gAmssWC5b%SID`<HS^}XI`*PV z==P3{{$^E0MSO!DpaYq*F)?sJh=HbUPrhuhZ)#*pb|?ldwZ(}ujxyG<!MFU60Uyg@ z&*CY{!~~L83cv^^N)0YP4uiMk=pC^6L9d^!WQoZ&DSHkozeu;AMk=~V)?*K?=(Vs? zSM0<Nd3k2(BPETwO6r4snhBDZ=uNLQA}t6GU)ksnbg*dC0O^cLo*gY<UFlkXetBVd zxiD}E89I(L_aj)neAz$-4+0j`#<3^Fr9`l^bZ|*gjM+|%N+?|NSwDIthxUk?uJoSY z1@ak=41Artjb)!y%-zjeCNhmjnewD`yIlc#aG!UG+*%3>pFD`-R6B*UHF`s{s&aLP z9Uw#mz{UU^U~cMD*RSOa0Fiz|0K4lCmi~U2^n%L6KNEPj|K=he0I5YDI4oQ6Z$T`A zG5=slT*{z)6V(D%8Ivs_EJ@`GDyQLqiOk?AL_Y6*bMnPBhvn@RrCFs*7Psd^U_PUf zZIVs5lY)*ru&;4U#QS=3u~;_l&$9=xWl$XCrHEai@QLsNHUIe^Dd#;I7823n)8Y8J zxj7xqX-94grhN%<ac!xldLWUtfx~|lJ@YM^J3pcTV`assw*4age8M#ese$18pe-Hh z(A`?8+i8}RpyQyR_`FUQj%Tq4TrFa(vv+ZujGbdGeC+D09vXd~W%0<KC2A|1ne``= zgX5o$9TiZAkE+=~IcoR_^d6sE>x%Bir4`r~4SK}gVp^DboPKs`H3glJ{s?Xt@A=}B z1~&m|P%!}8w%qufLb-MvevVI@@)5JIAbxH~olZ#M<j!)!BOonMeR{W;rw$GlivFL) z=x1nPM{LgHzx}>;e3-}U^?809SagAZ-`{F`X7JyS0eO*k(jDGy63=7S$Z#o~lc&yj zxlEfB8+mJ3MzzlWhrqD9fPd|<eRH({O_M5)>#5(1ppzVQGx_VJ0_~5ORQqY?2K&9M zop942R3dsFjO1jLgCyfGEyQ1#3D~QyuEx$b_A^cdq!K8ANm3Fwaxk3)3>`n<p7#VH zjY0wf+<dY(hc{k}T*)I42v<83%K>*kD~bqVKJxRL>H_}LC7@k7)xMJi+lawuIp{W0 z1@Md$Ew9-&Qo(zlJp6%_dX(OFV*xzAUZA*ONhH10Wt=+mkqLZAD>T8D$!5ykn}=@5 zfHa+#DBFb8W%7yy@F$G6;|QQYMc@%dzpK&-F~HhbFq84$BZ20)-0*{6<AE3YXIi6i zM^Mvmd0VXNAIM_Yi}mu?O=yDt*(zJruAtz)mox}yNAAf-4A}}Hb8a*wnmW}n0o6V( zBPg}syTcpO4q!mR3~_-rszkYMTMp5QNI_Deo+`M_Mj%`QrTB)oPTKZL=|<(P7b<Ap zNg4cnWVM>2>(TI>TrBqH(GuoBNZ-IfV;_aN@*Z*b?x$)t=!P$~))3=Z02N$THgS5N z0kCU)5?@Y36zO%tYWbDb#^lupm<mK$#vg3b21-(MSvj43*x?QeVb_N*w;F+S-}-Je zx=%+1Hc0m!liIMP1qn;pC3*^I$*uRZB9}X6J98Wv-Hd=5N{a38TxXgHUH=~QJB6k3 z=ey0L^i=%kVU4=xD|(MVI#C0O4D3+)+oBDfft-2ntiYY$tzm1`CYnhBt|ux!M24X7 z*9w)&%^^G|m%~E%Sm~(NBAGlH7!&<h6#Xq_R-BtIcy_aD4TJ+O=^iw#Q7JH6MmB8m zCHgukCcvBN@#A-3i0o7{WoxOANIo1Li!UBS&T&=%y?78&v8kpx<UhCBAx(su6$IOa z9>Z)cKB#b*Qf8Vc*f>}H!_+R<Tq7tnFBhB^6o3?&4Xa`tpW+Zc-}EXBQD);qvB4Y^ zf}BY0abm#El6YZXQb_p8M~&%$t#_6N#+|1V#%b}T5B25@EXZ1d)7#I~%V-iLfL$UT zD!_R7l5+p|$jNaVV7i3sW1s&U_8r3DPwx@B{Nv59x4cOU{MgeGa^tti$$7DV7LjCb zq-q%OUwnDmN-`FEYa1Q7FR&uzXl65Qw*F{RQq;k}$$yYB1J*0GoqFNGca^iVi?NZh zX#gQ_5P}Y?4QL4QC%CJ&7dCEqeJ0UFf-w|_ZwmSJv>;?+@iTD10iE%Vd_)><E!e*Q zV4obB8X_qxCx@M_zx0mR$;3l3*wW*tGgHc&;kWlN``g6(yfS0&z*_*RM<*#LeESlL zW>Cas&-*6dN#wUq*S4etDSTzY!B(sL_WQR|zT*f&b-zV*8(iNH*#K)XmHm36Si#Mb z6C3`>l2$Gpe`o`8jtZ;^{3#HA8O2kV6q5A(cY$fbb>Pidw(4a6Gn&^hQh7Ye`lEwK zk1N8NyM^J7F$?2px>;f|-BIGo9MYylU#`y&Oe!0)`gA)MLkDMo32h5xkP(3Wg^Z&4 zicE}6!;b%tbF5~j4Q351&8D)c(_!ySWqhW`zg201{g+f11#G%80zYn_Q8^E0V^izw zEa;N;-s<gr$TW!C%C;Zq>e7z*%Emkiqmtb^Q&xF%iCWx<v!IVuY4KHiXoTb$mfX~* zPyKL{hRDo3C6}cAh4cl;U#=>x(p87R!spmp`}-fgJqb+p_uZzE4K~^_?2|C{Hor9= z8ib4%OWKQZH^qQZnjNl})H$qicrmGXze*62!_*)PFBUIl&KlC_67>|!0ck9vqIPR4 zin=&1)g-US@*n&iXpgRMfQjo5Uh<Pad&xEhK2Ov@b=;7J*09Iz3PU+X**)jnY}=Lb zixq;L`)F;Xq$P8KVC#9fRPuIfjl9#mG1UM{1O?95JmbZFT$X)TCIos7DpGL81)8mb zPN?DVe(6tA)TS2!g(t|V(sUL+5R3&Y`2p6el-Jbs%Ye<+b}coye{av-J%-`b;Z~n9 zf(b^P9<qS$=09+HEpDb{Z4d76eci+Tg+3@M>)zV@wqWg?<B7v%slsyIe!e1`gAXy& z?t{1L(nf|#?9-dq{fVkeK_~2**9B+}+W5`vX4_p>zY%z+UBA8Ayo>BDNOtpHrNT69 zND$PgMM5R*r@6oBoIdY>WrJ_{?>3;f8x2gcBD#*>%$<5e^^LBacjlqug#hKO*bjOT zL32do`|#JQ2?U|O0?s2jN!rVQXAji0s=uO-`Llj%%VPGeS)rja3j!MzW*pZStdux! zkd^J6RXkFxeDLw!@N)m5Aig4r^nhVv?u<C>F<@kM;-LVF+eXPB*H8DL>WJaEndM50 z{{^trewn2jmmD+%>ITgvD{q|Vlm4b1ib^VGoX`vFC?Gm<I9xt1%M!wT3UnNFTy~K$ z<3KEFHz+v9&(`T_PnOFQ)3W^N%Yx<m?$)h5C}Y*eytgy0jfEiidCK7sXUD+9m6~2x zKd<iDf4u-ovYq=iJt1|>v{)o#09Mi1MvSGwgGF2MtK~{i;*_unA<FW+VwOsp<$fiT zCs}a7(suij>67>=2hD;mRK>_zteabibCUTvOtmv5{`%u;+{p8E`@(DVj3cAa5?0F0 zsSdw4lutBst!1WIuG)GY#hs1!6@wSO{$pwPa`VqR%eCx3>MUF)7Bd>XjKV^hG+@SY z>v-FtM|Oj~kB3}J3?b-ib>MQbVHd5#k1{qZLFE)|!Q!LZCQI1*rhyjYq|mnL0}`HL z+-RmcC}IBwOM_L6zXzd8T`we(p++Gj^xE3A09PR16Ks1Wn%P`-+HH_mTJoR(Gzrt* z4Q7|nhAaA|xAEsxn$!m;5HYST@9Ff#bBSYuTIA0&f;O%crKoxf{%G(u7Mm*_NrjlO zbyIWx;kf+m`vb+Tw){acwm_1T(!2DWqN1BqM-@LeGE-AiK2g{@D);G1>N~N{Wz%Xs zE)F&h@wxCzbaV!<trDP3c=zcn738{V&^c_-Ms8$@CX^(!efE)Uy-kjVORnp@t?Pcq z*)@4Y%bPDF{@V)BQ}LUY1NV9wcl?NoFUkEOXrRNlDgz6|0s)9r>0Z;Z{WZQacohHx z*r5&b%guitO3Gi^_u33UG5EKS(9geKa=`geO|R+w=HGn-m~}l>fgvqBOep-O9xpxD zc7DLBZD`1_<b40=Kj2YU{#JCFddl@o64TvXYVQSy^fXukB7B0^(!hsIv(~fb&3L_f zI>LisKH{`)9?JfW*96?B$M5q*@kx@i++1DG98DeNBXf9Mv<s83XHVanPln$Q{g>h8 zimBE@D!Va(y@s`={Ez20M*PS9n^R3P-a$-R30ki-Ijd^G4jrN@D|*RE1-b2Y4l6{4 zFA68=x#UE)*B~nRy44JIGq>a_XalsV`;b5g0bHTDZ(}!Z+`JhLsbMxuJjfm?e?TwG zbnspUb97jK6KsRLup?{TS1~tk_3X@)g7{18K}X#$y$RO_#)}-{t2{?eXGZ^+!-Fw4 zxD6Rxq|Z)xcsO?pGavfp%NvG5ZIRX=P@XSSCV3~|N{T{maUSJ_OVoW@1fhfo97D}k z_p=+!nJ|0&j&rY_YfegnaqP&m#p*Gga+j*mH)7Ju09E`xh_8x05w7U;RrgyRUn=lX z6P)VvBvpdqc?@^_4kvF9o!W6BJf=ok_inh{YaLig!<miC!yquB!?4NS2W*QW4sHUL zx_0LWn=f=uIPsZy{Ph_OS*88YxzDQyl*UfR@0rCl15D$X=8>aatZl`ACnv=k+SS^^ zh~MTW{+|G@yTuK`Uj<eA=<m77JBkfS^FH>j&)66bRb?wF@SMKk{F&926Z%8Yd(f8s z3rX+RPqAhiUUKFYSMmqP3l0{^ydIff1(}!Kn?~5*u~a%1Q2KDFXmI5#(VeiR(qO+n zQgy(6O;_a$mcH~@RV=sb$!!-rl(N4jFK210coNK+rzPYk8I)_dk>5N-i7phquNJYE zrb6#p)qnMBQ-rW#_IX~f!>n1yaAFNV%gRV8W(upEKWhYp!P<o;NOKtimYEHH9Egye zc85j33-n{3KJn}yl5t6?u7kIfRiqQ+;|t>A*!XSA1&(?uTvjK(aIT0izZf&8qy>%= z(}!QtbIslX)p|55?RCDLN%OPaDbkDIlg)YD4aH(MJ5`i_AkEyG>fZ5Qy}I0+t*_?K z`xnf#L-`e1ZHG=2@O;nV4aWk&B>g9NveUsuPpnS2&LLCHD_c7|UMcivZI?8V^GFW# zTWss=g+Y$(CEAD1nB4D2O--{Y>#L&!UwNvVw}X6R&p+bz<v^U*j~R8Itw(DQjj?|w z0Y}t8UVBdr(T1a(GMd*^4c<7mPh^>E>NrryTBEGH!nMDI%-C*Qw4~)kZ=Pc{<lft* zg}jJUbgQ1392z@xaW7s=X6!g+BwX$^7gDv=tG}SPo{UHY;ydmd9Q;CUU(vt<fa8_7 zvs2{XX2Nq^?wIZ$u6y$Dc`Rv>+a@ae9#!@^Ma!f6&ie1|`<s}w#)mSFyMEKYF@0Pf zj)Hh^6!@>1Mj|WLlpAO5oRzd8g8Ye`UY?=C)hm#-+1VIddt&LmVaEyk?<vM5wkXRX zC9?P34h^1gHx#Px)KuC<n5b*3k{cwN{(KDaTY`F*4zrpM?_~;bJFUK6G5W^1Pwu{^ z6xHSzl8S1z3-N8c2BHE6U))l+l!%kF<5S%BX8}ve!^qMBK&FYzy11x|?)b{A{{ROs zgc5_h_u}Z#6Gf^b+jx4)(#BU-3a<!p8zfacPpaN1f6)8Bn8H4mJ4lYz89H%TS9hy3 zr5#mq0#rLj8M>Ii@SSIuU{r6uYX=zi#t2m?%88rx^v&8()N}N*yYfgLJJlno7x3WM zYher%#wg-VfXH<-xeKV8bPhHwQn({K+g6{vWMk?Hty0zE{JQ7-WBv0wJBV`>nr<AY zF7(i*lm>BO=WX8>-+obHZ0UVJ{)~}D1ut}LtOVtf(6d$BQ%XrgUO1cFg@aX(iJ71k z$-fq)U)wg5riBTD1D=N?%xI(Yw)PdK?1#ZDuvY9`{B>_*MgOGt{8!n~KcMxx6t*;0 zcki(E*ti;Vh6%vT+xlpG>`)&?9&rVu{&Ewi)WUbDiJ^y`@b^ZO?l!eza=`Hu<n=}B zR|{eA(g7S0F@Je{5%>q;LR_u!JNhHGLZf(V>y<j@Q->ACLq(0D?7gsgWiLOMyc<tu zo`$*|2q&X57qm%s`1irQm}*wY!o|=p9#g^j!J2Ysi#+nuS3fOq2Dq6!_oO_x|MYp) zzx{4(GUK$X?BMnXm5J(=NonnMtja5U$eoINK_A<0$}EcRXUF#$_<+c)oM-sHP^xzK zdtY*)T`UHrI0x6e-e#BQR#jIoFjln+YK#?2v8Jhfc@SG2D0Hrs_bxXI18u|y3ObOW zZ=raVA8y5bc!!gA$;{9wCk{q5pz~5PQ#q|79%^p!Y}kk$_gn!G$xsFjGvWOj_1~fm z_duNa$wIzsT&?FoGoyopB?qX?-of>2hjBi)lK5w{J)DP?G1F<p`}9QpOz^<#?4Ao5 zi4GBI2aRtKn7wY7sit7=Y3M98PRx$wYkJQE+-b@uIv=+NXGkS!pN@&1g|*ut{VH$P zw2<-*c2L!*apAZ=4Mj#YYo^b%W#%9+uk!+<9Le;#`vH-d_`|g)2YPq~VYX{qJ@O<y z#%;LV8EW{t{;>Uod9_I$vp@lzDP6Tgf@fu_!Zdm7Q(8L?GY;{n|5-rVmWNPC1AXwG z1g{2*?c(LJ7h3t@4zhUf@b%c(Te!g0qc!-U%6{L`o-thdILtKQScke241*-B6IsLE z@@CV~i|NaO#uSrf={^GprEK!S)GsXV3RQ<1F#0%A={WpTVQwHQ3fHYaqBh9CscM73 zCZE+el4nro_6bKN)--Da7vxc8UC|o!+tLq*?DS1>{H^e_Zxgd4dKEq-mB~HJsWQxK z$y91Z-mrFk5KVY>3_@A|_Ex>|W^7>mLst=`rKLnbE8n-`z(rNBi?J~ym$t8w4%fY7 zp^sfgJL>-<pzYJywEb#2JsnCKK`_o(&RML^*tVG0IfqhJPnmf3DAn~DRZTHYq(@u` z6*y4S1S-gIok_lVHQet8IA2_AN0;IOWIJew&@A_SoG8?I)M!Dz^U%Pye-tlRZ12+O zl3cE9r>Spca!ttxaK}D(!7&CbsBfKahXM->)~;{o0SND$pWR)3Pni9N?|a)h`m8C; zDSP+n?Gq9WZ1q1OpT(X`aS4f7NFILJ?JHxMXS>qQU7VcT$K(;a@_DSf)9m208}Xnb z&+n&YFQZ#{JP&I|-L5r=kw1P5Yu}MzK8w2H#xy2;iyH}_9#a-xKoW30PsD)B^ULgP zMSVt?p09f)7ln%<TB}LWwYx0rt=IL}S>0#H#!9lcRwVR&`i(Y)M4u!!6yyxNV2NYJ zxL3TL>)$N8jhboCziY&|14}%p7k6*9)<0=<n(9EH4l~1VoM(KrWsG>oHU~be$MmBo zdC`!n(n#};f^7-RhQv85xh}-fCSnM2IE`qUEt>&Q-*efQ{|5>_e*BPHK!J2}{Qke5 zt61M-;57bUC*c2^iuds0C38-P8xUn^xzU@#qk9~ND~u|p%K$?sblxcMn}2H#h!)+! zvon%iOzbf@hL$&T^KmunY~fczZP~^?&0)>fZil}W02BG)Y+kalZy4XwQ>589pOq?l z7>^C-#;CjmuYVpj2yOlu6}Ig^Qt9*RMrdh}j{)b`a?0}L27`Hf>q>cQ)ok)Qn(2(J zokzsnkf4Ud<!o+I=BL>C(K3V4*smHM`JFh9qI@!Ddo*+_t>Egq^lrIIFAhbvdwajK zir7^S=Lfu$o30YKhn?9+TJ@KPT6-V6T`QDvVqzS@qdRQ*@AE%2?$1pNB&9~stt*ts zI^xEj?bF3S#Np63W;+HgDHZh50+_~>9L)1?XZrBjH}r~LYj(59CZpPo9iM<a6l#b= zB|0E2VhiJhghUBNDewdi;@0FKyDG25tF|1)l`K>DlNne(>c31l^pGP7nFj6Bu}X9~ zzrKW<!n3f%$|h6LZv{Gxr<Me#H!7zGIoUb$bV-#ak&%%`IQD3{yE|+c8<gU~E_tbV zUTE7!poqfOb8%wI7aJbn{oqY`-^$_WN1{z(NYoPXD%KRLbE?7x_1(fQ%EqL3=n{d< z(o;-RdE?~X1D_6MZ<S{%HkikgW&5o-N^2;j;b^(zFstfddkB%~@?{DDe0&kn|AU9W zJ9cy;=A&!Vy`Fz9JWn2%Gx(zsDLad%)tx3+@pZKTgtGm(b)`(Q{08Pehb-jP=$d~A z2#~8Djz8tz@jpBE+|9><b#x?9Ry=>b-%K|(siNniDx-F^CgRnS_0T61NR{qiuR$66 z-;0Y&B7VTMv-ezvdSNEyS4Z*N{=-VFlO?b(uH}M;svr)5fl_t65`B1ZVbE|;0*AIJ zQ~()eZ)TR<9NTIh|L)QT&BjbO{UP&rst#|#K4p`TmxmR&{R+Ozu+GiE!*#0N&DGKo zwx6fh-60AFUU(vQupndoTj5>LU7eVXjiQ70P~sCS8BW2wy0+6|eL?<f#Hu$vV4KH8 z89ERfy8C=Qr_AOOB>tNOukAA4sGwFiJzHnX`eU^<JqVTyP<}R<8k+s-=5wmwS1Y~B zQ&B{HWrfrhgo=PcF52A44b>F`I@>YaOfuyaTsZAui0X`QW#AgBcb!$tQ4W{KXjEDn zVU+r8_hw5gn?dZ>-t9dLs;1_x#yYXW#qg;dw;Mapoh4-`>0j{@`dLE7%PFKE2l3a> zhg5zR6AdrP%!#pWfKFL<6D)>69^+$axt$kh3-I|%TwOqH3uXftEy^$Da8n8Kd!a8( zFb)D|*wGU0Zo!>Z2ecdG!W?>K&c@2B#cs6H3VyT!2m29tVrejfk9t1;TC@CXXn$hZ zT#^s|CFfakecxB9x6DWp{dLf-CIeh6j8<w-=&xTI2>!E-abHHNrp7Ay0C7o!uDD|B zKoDa!a-7O0lf5SS(dFFr7ldyL$k6GKvqY`>5&+pc-`{V>rF2mx$P$i^Z?89n^84L# zpRs6xwpQF)bOy@k*zqzVRfREH?cv-WbWnzNLDsgSLE|z9hel^bfCgb}_u8(p0^>r! zUkJBcZD2F6>Q1Xz&p5ADsRjfDstd|9&*(2KoE%T`yxP{$F(gB(jD+NlRgVN$hS(TA zKil8nrDAK`Uz9kOSkkmk2yasG0lzq8KiWVQlfuW;J}qcvRwJ(~1$Cer$i2N-q6dnL z)83Y(mp&SN4IKQy?(RTCDDG+SK!j&unHj(SQgKmHH1|P*`Z6;!v&&L%c9c_yUO#va zo+JdTlykH)Iw4r6^F~TM-oWzEQ7LZ8rsh4L3FT>dOnDcEi*{pQ@P~x#qD)5^EU=^{ zkfpHkK~rS<xNS@o=b|j)t$p#MHCA_)6;OW&ZoIxgK#;r^=UugKF>vNn!Wxk^RSzST z-ZRhbfOeX>mNQz797vaZSHN#H*PR3|Ua)Q)g$%NI#lE=(f4hoXrNcb|($T+)i1(tp z0bJrB1+y8t+!V~djX&A}lVoj-kM{bABuXMKa{DL_zG1mcPw|4UDwq?V1GdlwkPMgK zp-zJLEed8|U{IU=zeOT@a_5!7A5A{}7G=QXqdhNin8c~?e$DUn1j9tY$<SkOGX}F< zwKvHVTCC=VXKgvIRJ^C#K!zS0abT>rD#|A0$se?BC66G7QtCQnlg2MkAq_@Rn)1WM zk)zT*%PRO@umkMt!8LN})La#qmR$tv`)pOUBl=Eb3c4byU5%(Fk`#E^b(4L{f1>fQ zf29Q0<O*z4`-{4`_sKab)6OC1dg*P=@Kf7kIeNqj`m8+nN}7(!-a`^OOAcpuLJ7yq z`{iMoi0!AiFBjjmf=*SNQ}fG!M9{70StPO_WP)#NRm(kPHg<1!krmzB=O^1dH6373 zkvgipCL$|q>$)<WmywadT?$Rcd#`HVaEmdzEhinYQHMWl%iM>Y8oSULEQlHJyA(ci z5U>zFP2H`2vGAyL+kMDfX3yU=yZ~3+bH{tXt19jKh>Yr(5hK0@xl*~eeb3#<bCXye zx+JXR;z~UR@^E`HB+EE4w9;s4eD-azg)D@kZ~O%qe8XGmQ@1DI0at>0G@J1>xZ+|9 z%$m?)qYpV9vzJcf#jNvUXl@E!KIjrU&>lSE$F1|jUnX$kb^>wFjQ0oomV+fmb8%ZG zhrM~`1e0{2C_a1^|DU3G`}02bSEY<!qFSSVWqRJ~cUrF`0PC=#&)hinYbTpm|GSf{ zi@seg{ocHy03v#Nd^PLItBgKPoi!p?IA}5C6ncj^r1*$1QH=Vq_C_Tt2N|^!{3)i# zwdz&+Gt0?41S8~-jfXf<t^iy$H?4O$M7qkvc9~=g-B#J{U%8HV;RwvfN4LbFhS#RH zRfZe{_U1>%DmZ5fq|EdCuG>p9B<@SnV%<ZRGE3TR1|)lBu%kpvE15y*&`MWW=+cy4 ztND^j;>?Ws)KMG|Lk6VMb&JAaHj#~A46V-TSv97-Ln)He16HZk;~!q)%$F~+*}Ws> z+%u3fbgKngj0k?TU*o$$64G}{iQ#;6ju1RJA39vvq%puEJyiTizW{)PV!O#*Wk8}; zQHRH@n7Ei&<X12M(+I4gq;8%fbspzj_(5K%^Q9};lH68Vp5voKpENcjuVV~k@`M}* z1Dw}Kh}*!7+c^2^dg%^9;*kb{C41a!giQ9ZIb8mhb|7oCyj$xe5OUY>`XKueKCFFD z!r=ZFWKO8|2jBo<^+GdG9PML{NPL4bLQ|9i%yvh}f$SDA3jodGsQz#QPVob5Z`Xy6 z@`Hnd5?TWy|KuQHz#Man$^Q%bi%TN(9w?Fj1$Js?uKY($V%So!aV?alIaqm0TVv6I zal&*}0g8;Tepr|n=lwvI2}ZRr=&iy;ezw}P223H*s_GyqG_H5szbzR2wizZjloy|5 zJJi42jpGxQ^qaqI8gP*3*##S1uua;Y?AI&t9CR^-b!w9OO)*h2f}x^S&V20nkW6yc zesb`}Gx(r|z`%CFev)$nK3XQzCB!=3(?5J{ueanU(xR5oysG##DLZH&+NI}o>{9Uo zC+mdl7nJw|qqyP>A<Vba6dvE;qg`2<M`J~`3yiG~?qoa~g5sEuqdyoF{vXQTJRHjR zj~^}RLrJzuvc)Kgh{`%lwosO+$P!tyFWHybS_p~BQW6GHQuckH?7JcRI`*;8jCB}e z&f~Lu>vyhmozv-$uCC|epYG?m@7Mi$zm~=HoX_wgg80J%;e1%j(i_;^$1vi{;<w+2 zevZEqz!O$izsNHZlc>vf%mPZH>2`p!=RKU@!vi%#yM#&QZLDHlHTYw~-JhT|EGQ$L z<Z4Jf9}w=5_k^M_#_9fPIYgrtv*kF18MFFPJYdqlg?~7tzO}}R^OJlWEWQY;kG`yW z#3vW|L9lHAYyhhWYR0)ZSQT>{BUby9F+3Z@5vlUvjeGRw=jf;xYiZw+n>ou6YC6p( zX}33h*=@fAvlFtuwN(tKjNo)f4mzlo2M{X*KLgZI_&8FK1Z+}&Cp?^)vX0!xrmtW~ zGW)jzcJSRb*UTark*}`y#r(nyAwMz>(8djw8~>60DB-8$$cKI~to(18@_Inm^Zvq{ z`zpW0UrM3>%3ipQDNi^i8ARo{6UEL7F64$0g2e*`qkKlMsRs(H>@^x(dvub+vq9(s zpKvXzvv8#`UWc2s=Pr`g-^2@9*zYMEF_nQbZ}36Uq{J_)1zSBM8gHt6X$8f;XJ+%^ zO@8(=6}0PAn-PB#3Q81eMjOg^2M<G5AI5}QhlPc0ZRQ}y`uqDc4KfDF<kClF9t~f> zf_o1;QnMv`(U)rRf88ktKxbCby^>FNR)SJ$de!R=UW4(qBYK>ZxJt(&(qYPe&Fe5? zyy5pgG4ny?R^)nz4Dym7tQ|Br9PgO`&x5qut;@deczI_=U&-_p+_~Vc`1?!Ta!uSt zFIF;740W1xZx!#2h%9PYl#0CnD-*mt6(DD~lYop4LWZe##xd`-DRS^}Rrf6q9zmVb zD-W>i`m3`2XA|>?iOX(@saNLEe6cW_(pOPr+%e!7prHT;q?iWqXz_4Tm_;FGBX<8M zXhY4Lwu0MV(HLpU+RK1!rUQ-hDUgl%t|T%CQZTFM<VvCjAlv7=-}mMB)zvy!T@ksy z|6$4Vto-&6RsGX!zx?5x2VD|O8rdg*U0o&&SOM97n9KWE{Xi_|Utj}|&enH_zn9)L zIoE310uqis$HzQ=B&+=4M?E?bL9ogm(S9-oFbVn>idNo>C=Q`VPG583PE@-5wK0@% z+RB>dzOx?ld4D|yX);v$SA^(51wjiK0uA)E@;3=?ZEo>Wupo$zg>VM9_Y1vtk*y}5 znLL_tn?{xJ?2xqS6(n1|YGBE*OB*w}O8>HnQW7m?Q9t;IsHmujha}q@ja#>XY@7Bk zU%oioB-?!Uro9S6Njp=x`A2G^f~B!(A&g1BBshMAsXtpL3+6J)Iz3Xs$BcMFi35_( z%k;Uak@1G>m*xm7VuMqiCa?d(Ir~^xS&9J(I=5aMB!yS<d4_;rH3C}9rAI7VGeh33 zjnYe1B2cl#D7z7Cf2h=E;tQ86_cP}NVPh{xWuVn>Q@8!!2l^q!nf>pRL(5dy@dS8| z>s;hyl29#*gKfXy$<nPriH9u>0T<Z(h7OK?njUQdQbb#`*bjs6uP2pY_F`#kpwWW| zcPM=p)V_mdXXV|$W3g)>U++oL+i!uy^*aP_b%FpnC(Ad-d%r$RwTZL?uSQJ5;(s!Z zYpl(PWa^2A2Wr25%KQ>=>`R;~k^lG2I2iohQT=<!ch%w+8(#~r@+tjOp&MOC_38cC zRbVMI`k9K~^8EwJjmk}1PP`*yuKoyn9h_@P`4bTPIsgN!)`nh$WA}2eYR89UQ{SSc zBTD~58?IK)u~QpmKP3(Fk5J!lQ^*1SimsI*(@>z~3u93dK>hK$;f0Q_wqMM)hZ~1R zacH&feZNIe4aaF9_qEFdk>l0x>q4lyU`k8E6;O9JL7M^UWL4y3+U{;9^NeS)uW#QL zA!np!>I-vBnBE&ki!w<E0P&5Tw0*rb+4$*-vsn841{4a-z_hezL8+SqF12{}firSE zZ}%dnnfPugdh`!r*_RruNDnO)hZUsq>_(gWR}_VZtWBMG<B>ToOH3{!BMW<Xfjn-! zamHvktHqXE<xN|+UWMYk(Y19?`*$ga6$T-NpP>wfBlhWbag+iP(q6!9hjM(?gZ#Xf zC}zV5BwBHL<GwciZq!XoD3P|0qd_UYv{l?tM?8?9joinho@{k05C$axr1#kxfO(jx zHNRKtK|4GCl(?jwxWXMz$hM~szB5tQ>kDAMxYm%-_&d(iJs>?r4uAWnIs0HRb8|~| zQTScYf0G$tu3O3o$j&5Ql<)qQ46!f#k8L#8BrwTsxMX}NZx$L3s>OF{j(^EH?c&!y zYs5LOa0Pm5mNz2?@b?j2I5o5=Q1K{n>UnlpLWeS^jz;=%Y2N~y5?tos;EAouC`PlB zbZk3`mxwMFTaOSxz4>OPD-fmi>eXc*Z`aOmeUrk~?avu8m6glh=gjSzkM3FpxO$!A zdsN+@JIC<7n9}*ksnd<`Foz(_GR?VyATeTDVXaz{eveCyyt`IhRJ;vVfz@0t`I6P+ zY`Rjx)NeK>_p@^%ON*Pj#@%0SkoRs($8=;IU<#OHcNCA83(xGCmbebh&)WxlY48lU z7O2zUvjWcC5YkLul83X#qhf1|OuKdGq5BK;km3PTX&Pee3{}o&)YINZ(9Ou=if{`Y zN$A>P84T3$#Rs7SvVb}S<}=G~JJ-TDO7TNv=kZloaf}+dJI^3MnvduDo24VRHFcxc zCj#693^&|PTmr)!p81Q0-o$VK?$G@)UtEy|ImkkDaDN;}fdZ&<U6m2VF$ra&4(Cum z3bd?e?sC$mEWo6=G1G1T1Boijm3RMoDgNHFW!(-Ws`0tQ|4LNVI3`pr|4^bjD-}j` z3e$no#uPaxS<Ji$4-2}fqvFSwqmO=%z+VX^usreWJY)s4<|kDx&^Z|KxKymih12uf zT@Kte=A6u_lD7u|G}p`UHQ>!5GOiX4XZM*QaGS6J&{x9Bis?wuhB9YDQ=`VpZjqC; zyn&9v?6evlkU#u4AbU4mrtIZsRG($A(LD8ChkFmVWcY9xLI)^Frquctnc{&RS`0E8 zu7n%UGR6N;-?bH055Y3O%PcBFW-=yWByEHEF;9-j+{&DVm#~bW0)6GxIyJ;E7$}C? znN*DFzK~hU%gymsM8D(#)g0=MNw6oeNh*0nG{{TP+Z^3(BHdwzOlpj&`vAsb_~=ss z1g^Nh!aDTw^gdmusN4IV5>qgl_=Df-h|l__M?i{QO$pn=&Y7@~y?tP<XZk9uNU0a% z*F%V>@!|BC%6uyYg^EzlpOof0C(E2-yCeH5Kgi?|W)>FHA<W@ltB&Rj0frWc%VXBa z8Ppyd#TvPcqO#WJz*n5M!hqYH15z!JaAjj)f7qe`=%pD#Q3p{&7Gx%5$~H011@PEh zi*eNawRNjaoB+rl$dM4o|KJ#(#xs_tKhiac(%-GW+h6eF(p3KwO;lK#nHY2Fp`?OE z`|(>}UK@(Bq<tkee-eZ8sqd6Fw^e!a#kY@y%Ul+DA;tDVluyT8i+=ar&C#AWEFw@O z#`U|?lE`t`_dXvs1P<u?)%0aU`1v(|Nf%ye-25(Hi%MG)@Mu~;Z{zW)28ma|Y3Wb0 zoIDvtuXl=MkYNK5w9-R7g`pH3(JY?Q_G)~sLU(<~U-(-t8yc?0md?!|<CopOP*D_M zw?MkxC{m6y>&8^o1i4h07d4tj_oFj};$o~dhc>WMQ`11Ee2DOqq$eWhs_(2y#*QcC zFI!tC(leY9Oe+Xn=6eBaCc2AlF<`#(%gtITdTgm%T%p;%h9fVMI?fP~aBM#x&+I8d zFxy1zqxZrc<?Z8+UI)~li|6My1zy>?rkkr>7Si@3z$ph`TvwI$O%*L#e^IZ&-!Y== z(zLe!>Tb$gJ<k;$pXDDI#mBi|d(VObK6hmO<=K2Svh|>&5seM_`1w>Uc3O>=2awbO zj!X=-gjPIO4OhsrL+&-Y?Y+{`)*j@<kQ<g)3-=FZ7P-iEw|yNG+E5bJ7)n_wL4IvF zUI7NBhC+Q2zau<jR^Z{8Q+@v_T*0pnAsO%f$q+v4t!*Sk6~-*Gksm??-i0^TA0<u< z=7tgP4Vb;Zf(Ki{Mi#~6*^gFN6WD;-hG*U)`&tgWCf(zEm{;K;#Lvo{R#iHH)KP=Z z9a6&II_i%(#+r!7bAqJ;Mm}$g&>90@!M)s+)PwW{_j&^#VGtd+0Lc<jQX=gs`Y=%P z$#(_T6vC({WJTZd$Sv9$EXvyDHd<=wSr;wcll{=ueV`aa%HtJtN&m9;B=-BG7l6>p zU}n2+E1FPJ_oZzfI$o?1Dtx-}vSFFrla=qP#W&<0b066}^$zVW5W|rHb98LYHY>Br zsa$)_G-91$o*M$>1-}V{lSZu-pkUF4ruDa#zKW)(UE><w7G8bGTF7~Re>b6>I#r~8 z(-14$zA2&C*?)gNOcTW6U$F~Z=OU-(!(<iWU7$qeF(2uOTW|F^TKAeyn;P;s4laj( zg74B23Kv8X*|0aJBO^ZBb*QXWyr+jpZBp<RDDiR2*3za>H4rL8*>vwqt%a%~P=Wkw zh%XLVuW#aj|3x;$2%!kGYeaJlK#W)V_aNr%5Er!wSUN%yZ5`=K+kw#V_cz)s_VcM_ zkZnBr^KfVzunkDcKlpW`1O7XPgX7`ww~zlmd=3D9kEUXe-^d+d;3p^x&h}#eV+sYk zApc(G0=qJo{f*VgA!*w5vlY1UlA?xwwwkJCwo&1^<A!1ZUdtbuh*0sm3PzkW*tl8U zPokWRXh;=D?ylFpVg;ygs>(Bp^sy0fdk#|N!jxYfsHh^s<y~tsrjT@X%C`fAK!TI# z@k2v#UO5urhuVS)Ym`8yPDVfyw%0+`GZpjZOo{B+-r73xoP!GuKGS;Mn}ZqM+-UU0 z*17V2Q5}OqF{yLgd3)8-$leVsXRtHvH+Ne+5-LRgxg7G&BEE>4mvH5}jI)CsNNeX{ zoAUDN%{H%c49O7-AqvEM?)f*YEMI#oS1bFWKEN=>P7$3d8Ou7=vH<zi(iGqv-6a1+ zi@VK*GQrK)fUKb?o+YmLkMU#kB9GAwU#F~AQ>#=tCrq&$9cNzl6^CPsoQKuPP9+-7 zUa&6QiCixwJSQJ{vrAhLRxp&i17%tW`1o-xmfQB=O6nCbd4BHn`hCEab32(|-R~iM z^Seb6hPF*Z)B@90JLIk&&4B`#6Smdf3~3TaUm|C7_D)l}`KjH){c<bHfa3ka*WF)h zcAm~o>ly7ZWQU`&U|GlIKd>+S<`BQ@pA9J)6Jm`6fogYkgK?8}%|`xymmS1<$k}r$ z6_l?cy9)ZTp>%px!k=07@UAh-bKFn36EA}^N+UvlFkN_S<IRcN24-p{6?XCB897;5 zBabr<Z0h+UoV{UuL2x%W+-e0`_tZA5dg5axP69z<d4ES*NqRMMA{bVsUAiGuHQ-nz zR0XOoh&X|BmX2NyFYJ(S(o}nyl$fX!IVjvHoO$(aLH}CB${xZ0dlkk8%AaH6<SFqE zKF$xwAh^rrTpHr1rJq{Y_n-7#sX{5`&K5mTAo_y>4KJTY-B&`Z`FRuvzp6w_WEPxn zfatxpvzqA*$Ac*OOU@cr$ei<7pJfzyINW89O$z)8<_WP=a5_?b%Gs&xF$0hZzjg|n zXO&UWsf4y(&Eoeb1yh?olgbjt{3{-F82#mZ9+&r=2S;bMu$S%TJghtx7eEVELLG^n z3Qia+ax(fE#$G8@bC&BnfQNyR^yS*RRm}bX&5<^fv=^;$7DzzDj-Y5{)JVKrb(~=R zx^pR#Rt;Z|#}(psvv9X@^~#p35H$bG{V0yeSzN$UmWE5h=4*h<z4&eG{{a36aYGLC z8QK4y2;d+9_^+m)>a+ayz57ib1Pwl&S-krTLWm#zJIle~;u7OS0ekcJA;iN7WXVc* zj47X1nPuDdIUq3raZ&mDBB&J<KNlv)+0p)u&p+-GG1}<1wB(Zh2gUpYsDJ8tsnImw z_;$#Ad^}$Y+-@XjQ}O#sZ{}P+CHKyR?`oyhHNM#@0}<1)&!l(n9zcp?>+!Ho%tG=* zuN`>TtLRH;Jvtc=xhZG}QSF5tKlSq(;@$}s7GbVvYt1+{YmJ*pA3xr%_5W6&Ur;yu z@dm-gWcuX;r_5foh}7QA@zfH|N5$ftS$9Q@Ez3U&k^AotZC&Oy{pK<l%#WD&9M?`y zUS3n`#sO`>%dPK34L9ev-kgr((T_RGhR)LnB(rv6r+I9X67|A__+Nl$t=fs&pPWWg zf5<QuSLo*!QT7GvUSZ6-c!;rZv|I1K?u)jiF*}nC@B}vhMb$3oG&j(bL``00SA<un z5hSFSciK+D;%}Zq`PMOUq=M?Cmz;xxgV8zG@6G^{+Agdh*pJ-4Dr&Lwx&w=aaAZj! zciObx(->$I{Au_#|287v3R)=q`u6w3o#{Z^e)PGa%s-!fk~YBK2kXr(-*EbGeV-!$ zYOWfGecLGfi`3;jxX1&Rs<*Nr3?N|dj^t+GMWu}vH$WMRcPH#^$mwhn2SioE9lE_4 z?e0dq<I+;bxhate@BZ@Cib9%j%Zt<D)t^!F)dSrvSU;2~(g9khqo%mQ+;WZeTjqTH z{3J#KNIZzewD0p~cQ+fRWW?OIrvYEgT-IxL{#(VJE`W_s4V9^MRa6fXwgPwK{15*n zARp*K?`h-fQSV{nq2|i|LT*iZmaR8ZKAyrLEqUFsP6y-mo&_jpwuWx^qt9_Ep$<Xj zx)<<`&hz~-yyb^5rptr7HN|5VkMjFEHm~c}yRaK5(d_{NQ!BfhOAas|YfD|C)yWH} zx7bpU0oZEKKh5v`EnR++S-71O4@kISpLM!N&b2tvuE|G+#l@utyT15r#bqv2A6ad` zd^E{6L+Wu|svPqD>`x}ef&uF6v+liAchcBeqAJRUFmNjvh?eCey3g(<c(^h!P=f;T zZ@wm7{K7Bzw1$57Q6LK#vlEYTz)(jpE(8n>u^bSyo=L6ctbY9W7JmTYdiLGmOQu@~ zH-AN6E_1=X)Sl$i|1IPJ0rP)TUK7{YLs-6BjB`2K{%_lljRW}lHrUp6pI^Ty3;BCo z!z*Pw)BGVMF7}Eb>~2^yk^7F$h?#@2%l9W8^6c&<fzTvzgpYdfsl(Mb>1Pge^R$*- zH_6S*sML5SVd4#Td*?WQyaCT~*P5qQed0QODMLkVxyI@iG-~r!>cY0I5pjHcxEMv~ zfU1!{TBPp(d=)m?bM2lM>vl3hL{MG@?9kNq)Ph3*{hezvaehUNktn8yOh2(En=iXY zZf<T){YnVIYtA;u3C;Kht|un)0yf10p!7+o7SxCX;7;QmRq0&A?RjEFzj3C2x=!r3 zu=nexgxpmrXp>Q8)?v){*B+6XOk?*lgimjyImR(4!}2?RxVSRU5l3D1Rs2T1eUAT0 z=wB$HF&d(v-~<eR9V#Wo=W5rPUP<yVUQPdSWc}va99jM1hk_r`r2O1!Oxqnr-VyWd zb-Wa8jIDSi7|>;DxNmbJrnveQwi1%iDx|IpWK~g=*PfiMw0vR-8xqYNeroSC8usxT zkJe1y55Wq)rkDD?TBjkvI3{N2jz}fAi~8s%oUN^dx~<)5p>lTO;)Ys3Rq@(mIZVF< z*@IG_P}C+^+jMMFt~E?;1{{A;Sa@Y?Wn=;IMk*4+2)q-pE<^EOAF^N<3q2Y4U>j*p zy?QQO`QHuPT#Bv=c^%gBC4J$4Nh@X^2lUR)v0mbDEN%iL5b4z5!$^z-JrT4vHw2ue zbuvq8A&|ncmG>@U-VFx1#UB%e;_}T&jKo<>&hcP|C?S(g`<B_uY!ixt9wNf-Y?`+@ zRgzbwfXVy&JBt)80|@aefl^Jx<7(ED^QtN<qtsf;L_LAa{^rsRH}%+x^&nT>4PQ)M z6#_Jd?Pyev8ejwRe%Knz2Fmb}5}_Y;XSVb5@`QRpDBv=v6xE~}^Ot6p;hi-K;5c%& ztO51p<OtXB`5%~#N<8vxzBAqNDaGaIy)KapybrND%2_rNHsUiMiS_KuXFH~pgdOs+ z#?8sZW=^t`dW+=ZKg0u^oBPOG^EPg8PG)7FO38pXUIV7RKzopb<(u~BBv5(5-B)<7 z^)P=a4fZu?jCHmqjZ?(0>6)xZ;|Fxje!gy-@d{!0nsX1R-mRo(x6^jp-w+2U+p?UN z%DAsonBtCHu*_WP#sQ&SP%oOwh=r`ImmH-_ec83pcdmWM=DAkoSyq2Swd^)$%jIhw zOcpLTSX?l35?8!1$v<TIx!YiEFEGz0Fh;NUDKG28?mMqn+>$V?D(&$Z0=(cCqTfv- zaRdr{%Z|331RuYMehBOo9HjZ=|Knh|cyKTrG4lQQU=X8&UHwBpjfJ3jzAjp*{f=1e zHhTmk$s3ic?I<lTe#K{?;>D*n0{dxbo&$x4v0m|(ZZE;M=ZXnuRGYXf=sbuk*k1e8 zc2L8Gk<roHDl!sZSlJMde*~GJmOJ6Mg|;m@F&1U;wp-v`%JbL-a@C!9zHh^niFnqK z>*Kdwmdh*Ar|TA&CgUzG2-JY`LA3=PlJxV_KZ}_b)viW7@$|gb!BDmbXyr4+Bd558 zyGN`=e8Dz5i|C=}OyqYjm<>gx=bB2keU^P8Fs!s9KQFINJ_WGpu%~b1khn9PocHLV zjprgKfB<L%$kSy02!S$=Ds)~Q7Z<vDd*&)i4%8NWJ?UM|G?+&QA2!HYdxLGt-xZL4 z{gipMyuzwjO_4cX-CZjY7W4XLu=KJZ%)ij(WgRp3rRzPFlR%{Ol30A*v$BGX?BG*+ zJDOGA)(Y92fMHsnkdG&Q>Kl(p3iGBJ23CpR>+INlUEssUw@`H#cBwY@ub*LteUh~P zS1m6vPaDDvJIjej-p3|tK_X~RI43P5PS8v-o2FYF5E92$zo}c|f&*}&|03J>;rI0x zIhf;IxcT58(vS7IFx!Nx*B`QeN0p^K`XxNo$mX>I;!_OKCl!=%!TK;yKKQxNQzDTU z@JlEXqT=1=J$hZuXO!<_w{$gby9vp~+v9g&HMU>U!R(Z~?7^yh=D5K^0`lnqFm1~k zbEHs*wCFtdQ%cc+PiRiW=H{<srHF>hs_%r#guBO5s|bVwucO3QOxss1-Y%43B4Z*O zBm3EKY*^Lf!YcB27$;*C#o5>pKvIBukg!I8@C!xkNuhw@bXTyEef0jTHdSe}OB`FH zj+6>%DJ5Gs#IBB0ar~A7&ToLPl&H(w7<gB&-gj5U$IexANOMz@SWr-~ARDEizsfeA z!L0&QgQ4us%|5=VP#JjB*sq7d`c`tfYdf{nA2Sb+Xt8i5IyHgn3(lLY>u@qqLP%r5 z=Wvet8_m;chmqLiyWqk~i6cily|;%t&9rhE`DV;eRTSCa7?ga~z@hfXrzCC%UILT= zdIMi$KO@|@9j?X_H7Xw#RSy!~!1m`Pgx<;{T=&*)V=Tyz*d;C!DS<f2I_tkj=PjZ@ zI@_k(1)}E{F9f~PF(Bxnd)@b)p;3=wXH{n{mD`_CHCjOxo1WS}x{!unFy2jW58HR% zFmC$n@jnm%`~#~2Apdoefy2Krz)zfxBtZ0hVDLNgSEe`L;D??$bLMCJTeg_rFAlr0 z2XPSs3W6&6=+lC1w+_fdU5)eg+jFXuX9eI$+7BPIRbat2r#7?VWt=^%MxV^7M6oQm zyTI$lY2yqcg0Sb8#?+R41oG~-Llc!ncekFoaquEw&b>!xVC<EVH3dxDl2+G_Npf|^ zA0;UW0TM+UA}jB`$)>&JD`#fBKK<a};yVVf!vnnrK5FK|i}Kjh5z)a<b&+WRHi%D1 zD8wT7*R={^fR*50pns#Dv5?k2O3R;q$?u{-A7~XAqF-~Z_Ze38NY7y<$aTU*>Pj7s zWS}MUbd86<oPbB&iw&aI%n0S<ty$46t0AZKtlxdRv%sQGPQTF!o96LAKNQAhH&v72 zKSnb+nMTBNLocNHdYp-93b<<HtS_@@S7M#GrZ1hfQG@bJakR^F3EMvDys6wH{T{f> z*Tu4-rPa(0KLD|eGuo1~eeO1XsFM~xuL2G)0kPi{vewZhpbUsRBL@p#^~8?h+wLn1 z?zMSI-{AZO+e-I<i<!l~=U1+OPVo)N!%7=}l$Mai%6$+s;jd2sdfdmx6iv;I-FE_T zR~|zzS<Aqo5?a%09>~p3m-x-EM9r1vfi%D<Qb8eA_9^C5=I#3$mJI^*k4`3fXx1@! z+pNy1#+AhhJ)LnCOai?sc*`0USs9uiai4DrYDhlmFZaN&mStFYO+iYoR{p1yilWud zScPx&3I6U8)$9m7(~~%h_DB+2AMe7c!_=zn@d9-eBgzKrcM&i?0l0i?*eU0;_i)Nd zYSj9km3i|<Z#qQHZ_zHuuaT3DFnMN5#?vyzSuHHxqLrN&9edP12`*p<Io!ddICIG$ z%}*X~9(m5yUH2>h(h!wY@qAjSxB!36CSWn2&%Za!#g74UHlL4a;P6spLFWxE-67WL z3Q*}_65BC^cM5Qi-Q#;I07xG_w>62_s1SAwp7uBlx0QM<uIWpd&r0WG8TmcW%4VV% zJfpn@6n-a=V6MnM>CO2|;tjMea~#;-yri$6`FrJ_$3`6DpZ}vgRzpJ*8(x1&`djq+ zz)t-<onvBL`LA2I@%ze#SkO*+dqu%L&lD=UZG@tg>ytX@SWzU@2tuJsKkP3$mAEvj zlk-jU1wsks%T?w1w#=N>-^HKc*X0z5&?v~E*xL=gdeXq6$au)+OIb56oXtBM$DOC3 z=GQ+&1AlS{bIwO=5;rv9HtwH_3#gO9{KK#B&@%6x6hPxOHG2fK@1f{r7OQvW;<apm zT>X-wq9UO_km|K@ZW-4>Q@5%o09?vAxx%&s^!g&&qnnBCp^O_F%J&0y@v`u%$Qhr; z+gxX_{ncvQbQ{P~>bn;akXdjyIA~wxr|yy6z`cpRg1{3j>3%8a`$5?EK}h23r7LG` zgM9m6N-T-#^VR3+qFqp%vcL|ifSqXS5v&QGKohDlQ&yFV(dQx3aV6Yt_nlV_MOuhz zZ;a#>=w1VXgzx_>Z{)`xeL=wGn3WS`$D5)rxYvLd-9*R%cqeeay0|)WW<mh97U891 z4nzV4`$F=8(kP>x&d*v`#Knc<;>)e4Q@2{P;-w{(wlw!Yvqrg7Ep4`ob37rdP%rYW z>50f^+FUcfHmj^L8DTRKWF4UmXL|D6vI07(*`y2IENlK^j4f(bEQfhXd*h0Mv?`&u z>nDZ=2Q{U@)2dSVv(stFIbE(s-}Si;A!U$-K}29k#Do$+4<7K?fd2V2RlvIEOyq(? zeBM=yw1CBKhRRE-&=`Ry7K}GtQFi7}Z6bO>@?a*4gF+fPgq2^v?OtlqTYmRMjn2a9 z?ORXZSkI&lV*Mj<qCg&;k43Tg(o@vY8o>MPkv-j9u(aHEd(DA0eUDVANn~8+@I3nc zgm=&$wJO3zY^SPX1Yw2MC$x4%F_HFNn4?*Ac7^+Y*4Q0*ijB2+Ep!F<NM?mbzi1}4 z2`gYyg*m&r_~7q{6C5h%mD;I++D1M9<E%?<4tBwOjxUq{_Vxg&kw2IOfx)z4bFjd5 z+gUY0r!b%PHU5tBkE%yYg^$KvdCSkQ_^)?e*zk!0@aC3Tskw#4c2^(YEG(eD!9{2z zMaU9|q5b%nRU9@P?U2nl71FO3&d&>oSv3^+`S=2af<5^KEkVq_N6Fdk;awdnkG7hq zcOtI8p?@=xc)FUcgRPY9m0r|T+}qPwE+Zh?M4hJQU;$)=Eitb3s(w*RNC&IPPsuNZ z%=TJ}XC4GWhR5f(hm~t~@T6Y(RLjAOmb>+dXNAohou`k^Z<i7Bl?5bApOvORpO|I| zJ?Hu+7?Ht2r)X`9V+mZYEE$8hJnkCdf}IsXR~J}^NnR$ju3eo8h;aJo1bjYr{7g^e zIK?6nKQP?kkihNC^VkEPdMBiOCJ)l@0O@Z*-5GJZQn8H~dq2mmLBAbB-y3!P>3>-O z7QAg`j09Zy)zQ<F+r<jS#a+2$E=eeeFigJbi&aaGdd@XZc$Yb}!YbM*?0ws{M(Z#q zyeAMtLreG(@EX_=4}a46b!4$VXF6DH71DRle|N*gn_DjjW8v8!lm3INKW0I|kE|tL z3xD|QO)#fFARJX>Pwc!+I4Z!_eGoRAd?$H!ih}3}S{>7EbsEtb8GkA{1}ZeocHngi z=-qxF{>DELZ`5S=DyO{p(Hf=Yf;(qrMQyQ$f-k0IDsrlAHcG=);zHa<kLD_OTu=z_ zPpF}wEw8acn&r&6GrgZ+p~j4dnp=eaE1-~I|168t4$vv@NGGCb<KYwN9B~2*wzad1 zZmujWjA?BBU?0qRNK?%hKU60@t!naFvGuCm?(3lPoa$Z2sL{xGst;}V#Wr*lz&Z2r zYXG&N<%gGbVPD|QNF?Ryax;?D+JhflwbCZ-rSfg6zQK7dAfEX5oij()H_0nWx?a21 z1CWWD>;%2tPs(&_?6eS^B&u!NSC5C~lsgbNprI?*Kke6R9Us&y+Un_Ax<B2(u(m8e zYdkglTJmj<`1O_l861hYaPg98!B0@{c8iF!8<eF<=tTx70+X{-B3#O7v2CYbKsu5F zc>p879AS$?tljQ5heMl#{E#)D7Q0u&nwWNm%1w~+z?r6Jw~@vUaE@vkO}`^U^Xmt~ zppT`y{|JM~YHSln4FBk+(Rw>DGgv#s{u0~174}^K<{=&9vSv<mPI$S71a4^%-IfIm zjtG5#kIr#$YfhQ{b5@sEcYkU={x4^*O6LLB2QF4$oM#0%UBgzZS+1`nPqKBF_=?HA zEzpYn8f^B8MNToz$z!#GbuzMK$QG$teb<uLA$C^{B3v#<=NB@@wz7Afe%hFoPR`nj zXF~?C_wS}6)!fy*BJMHNBs4FBRr$bvZ?|;x^wLvUCD8zYSBcTM84*HQPE`z~03rp` zhYvNQ<ORWS!OVL~@t61kU);RNH6Wg+em8TXQ*u~6Ay{PZ@n52i+8h4E5uWVWTXPK$ z&%_!o*GyTlZ;H;oZre)*oW=Y;aeU$eMiAX^oe`!>dKXy-_y>5H2JT7QB}y&ZSti00 zWI6@#GG~f`ST1e8rGye^-dkt9jX34E#&T9iTB%!+hgm8PL411%Ro#`|CS$72#LNNT zM=y}%pV~bZ$pS@iq+uGNpBSrhk-Cdawel<hD0x%O7jT|?hyxNxuQTG~pB<HV|LCa9 zdaD@8Xw0(1ns@i#voeqVBXj-sdzUO37kGxH0(Wy(uy{j7@34>Z_|XAFj$;F<cUcM_ zC9Jd-1X*>0sySW!uG^*FljA-|7<^px<fZBntztee%X1DNyNH^jV$E|iYNCX9@S!>L znQ^sF^<n0nMEg0h=FyN*9;OV=yzT3u2#`EwZq9Zw=_|l1&S=iP32t6tTzQj76?+r3 zlba-Elw+=gjRhiluL}u1*aDSD9}tQmQhKj<1g(G&8yT(6fgB4Nn}FTb{5$GBD4^$H zluJ1CEVr4U6c}54sVU*ooz4%FYQ~K^l-_W)Di@^x<oF)k)D)-bDY!_Rv~2PaH(+@` zpFSmVUY0Y5A5WKuUQhP&pd(c*l!6f!Pf*<)BRou!O8wUH;Qj({W8t6^dJ#fcxl!|$ zp(dJwTYQ@as3@2bA{(POrLY;w&MyU)=+5QYWxA0DM@HIOw-7{PX9`3F+brBO_8Sid zZN1*nvz|Y_fr5z(16e@j$^UoG6`3{!-DVxiuUMrFcrSgc_BFD=y3A=yMYn)e)#h|Q z(O(c;+Y^|=ytpKIEX1DvwAI}%h#)=a)1|Zb)sBtdWvygmC9x};>yN9g+cermU9;<y zgMY8KSTd*XD}C==%*b9?y_a6Gd%r^tciNZm?GZGmXv=P;ieU-XUosV&DlEMi{@)1z zfabq5wxn1W|5GIZH=GTw=UYH=)rqqWD*gI=KwGWd%k)*SJ{<$}hG~UG@#gGnm(2U% z!_}^RKW}RKtfqlp$`wqu9OmwjarXK$*@6{`|G-n+o-C|MfuB+L6e1h4@#)Kq$7W6| zh9-oih1>82In}!ekw4rT*TV1>={a-g!`$2?gsRp*7Hb8hcU<!CF*4|nyeJpZ>$6+u z6xAyuBlGg^8%C`EC<Y0+jw0(Co0)+TdLI=Hz)c1cP2**r!nw-!=`J>Yozy}Verw=W z5#Mcg*B{n!{_-QSTA;3gh{jIb=6^dVH*iUvK;R$z+4>Ezu@OGLYaQ?0%6?$>N$(<q z7@mTPxGsF?>8e;W>5W!QMn;(W?BcO{N|5`kyw#-l5<3A?D&dr^kPSKRv~Q<zY-B`p zXpPoE-kp(PQ+uu$e}{fD(c)$EiCwjKZ%{=Q%kHIBi_<aWL><hQ54UjC<h7x|8=rTT zp_6@Pnn9R=+j>YQfC!dp1paE$)A&8!%PSTb9jvb1clnn`c>3ay#hc%Hp#HV9f>IH` z?msu(juj%)8=&tm(cO|{^}j0!b8EVtwf+7_<L$ojJ=)1kV)B#-Q9K(;2dk?~P@tN~ zPL4Ydzr+P!{L9%x$#VLdcq0lL<@fE}>Xo0(WjI!^>5ne@qffYxig3#*e0dKt0l8@G z@YbB0l)qgW`}qt3F63w9H4cjIQTimi^7A763BL_6FDeFo>%o<VuT&<*#T~<kl64_K zbW&3wU@A^!#QLDMG*{d(R3FwA2R9gO)OD=fJAns>KyO4Vb#DPtVfHAcZr_L?feT90 ze$@@v5e6$<3^V?n(bP%pie>(bqA{&Xt`GEH;WiLsC2%*pOR+_kvE%Vtn+|$3S3h2z z45bLJO?{&TaM!q76+!$t8CO{P#iucM6XQv`)*l0ue1!y2+dh|{W^pX8vMOHdNLz7B zOlW?q&HON+3#s!1x$|60JY(b8gH{dYXBts@q*NAj$J0sRNfBaNou_t&pVR^EAAPTc z29z%F=!X(xr_)n^k@z?1%Yishn6Ljg>3?yUtnzt;R)AIN`2WcNkef+>3J52BB*pdj zXKeN~UD4yuvOb;9i98JS_YO^DDCh+qs&)K4np;bKT}9$&D6YQGyi(4=tJWWw{tQ%T zFj%6$P4C&S<EH5BM!hB*lN%Zr815&vN4(z>75C}EXhhaP{7-15a2a8$mZUk@+@nco z9(7mFwS{WSy16V#<xCeGlH-X>II5iBW5o`OAq;W0z^$$8G_BHe7;!?m_gK3ln}$%< ztZn}2zq?CaM@!wsY71C?UKRvzs-+|q1BFsA-(Z~<F>s2{JQF1^!El~sr3X^)H=Ok0 z1LK}aSp%Mjs#b2-;fY#TcTQJ~c#@(Q4zxQBbaVh9c;Y#K0jI6H5R8^dh}OKg2TNs4 zI;KU^e__}DHMrcGzjKl1fKPKV(mOv6)ef1Ezr@?`?Dl<e8#(sA+T8{kpUwcf(K8CK z)QGaIJ%K%pW)TyrlX28xLtnf3Rss-6^d((k*k|H66-qp;IzR*NHarG@vS807<{$h5 zS;_xoU`Og>etT9zKaA;_Qe<L(Y^I@n|KIQI)y?jn_>$u{L`T05zLa?sHST=;`$GG( zu*_p^Coen-aJfC$Kz+qjAl|`uJ<~*vO0fzYjNw<fu3tbZi+a*@`MoCe+@Ah5E~SgL zp2edtg}z3gk5CKWi%{d8^%YvY^jyQT(ln-&u)y?FPK&57n9icP$hf0lZD;Xwf~`-^ z*4bHXxvm;40}#F{!vV_*O^qwP%5>l$HNQ@OOG|;?nzDv<m1d2*8pRsP_))DujaG<+ zC2we4wI`n>m(rSAbGpQ-;czT?_tj0TWTu?(@N}iDa74OApJP^>AioX81;|}4N*o)@ z<z+)$dc$pvpQ=Dvw_<NBjK~$k&HQtILg=S9SqJux*YE3g^sgGNtS&tnF?Uj87>4qw zlk;G$Qb5PycWGz4x_h(m7bm8mF_Ur;0}YQti7O{^rmBEBss1}gq#Q!t<kv++Ex7`? zZ~DfjJN{>h;Gid~{LkVKEXY6I7rb1XzoqL2+)1V?WL=^H_3A67UpL1&LbL!CR9^O| z#K^8kU$LQ+c$v)6!IbVa9g92MPRCoYJf5Y5DOelAF0p0esvxYvBl`3mmUk}ajgQqz zZ=1)AM5abIMdld4olJd(cyMfr#PtlU`&wQ~mTApL+raHKHnN@#NNJ7iWy5MbI?LaB zgJO~$<I+=dPZqtN^0u_Ps*0C>9l$%e%xvg&H^9#B|MO(i`Pqa1%;p82SS(((7Itb_ zRXu%g@}Zhv)XD;gdNVLsR0<KZJDrkn59}-3B{4iPD)&llTUIxBXnZ_R!IvQS@(RJU z&+L1Njo?BP`Nou(R9xXTp&?vP4IC<;cw7ohP44VrpUN=$3}Nj3reU}NjkkE^xBh*9 ziD4gXe?|MLRs|W&&6PWu7Zd(Qm|3KH5=(#a=Y6Wtg?uzSmi}C;F*dBmtoH3Z-qm(_ zC)QJ1X}Y+w^)oQp!0@R2$ybz2<!9D|ef?Jqad3)tSp$F<3O?j${%eJIV{TG>P4r*9 zW5lH&`QoZ5Nhf&>0ncEcF)~PuG>#k-xyR%HC7GIS`M95!drwa$!G5+jq}qB^5|HLv zb|^8KIhC!4-9M)l-k<a08gH<RYGO-`90xom5k0ubsmP+poFT$DA%|7?nHjfwpQu5H z*!{O5y0}k=I(Hh<e75l39Tz->EVd@iBKCALyv}x7ySj=u&n!3XH?JpfjyQ0z@o6c( zCi3Vh#tcfRk%1;uQ64=cFb8(=@sZ9wu7D;52c(Whuwp46^7Rx$=Cgvf-Vzo>+2Lk> zw*>1!bxk&~M!FhA3&&&_`ef23_71`<CD-<yN8gBh_gIi0J=yH!VPvm`@W;wZ=HvL+ zr}!yq$ZU@UQ|yBrew}AdAMbBJpgjr6p<yV7es|^ESse(`o+22dJ(EF~2oV)n>(QP3 z^cISq(!*K^H!+kord+szlNt-Uy<ce$&#pfvT_9d-0k!P9B@B2>4#8_=0Gz?NI%)YQ zaN{Ngat=+t>-O8O*93fw+kS_7D}Td|A_q7Tc)V~k!&EQf$9{G?q+;VWxqJ~Yb1Dco zYz=X9L1$Az;vOu6GMKs0$$e5dC&SB2NW2r;r`qtE!6%XCb<IM{6<x6l3kav<T!>1W z)b$GS2H;%b<)}?%q@@MTf2h<wx7*pNJ1?rD^iu||VwPTSca+ZW)Ery=lIsZqf%7G! zxo=Cw$+I}=xwUQ25;T*6EFF-r#?;i_-cB#6c(E2#9NizmGmh@nP0|ds3l~DwBdEKZ zxwO=J_g$WQvkvjwK=H4q(`iDT)^5_Jt^$bmZSitX9$>rXIP%zF({pTOz0e<mGxO=f zX4$ixiFLv4q``6-9yx1-0He)fcfz$6Vy<eTFg!^<Bbf9>cQG9jd6*~LaZMF$l*O-; zOiW%B+%x~M_cH*Z@jMZVuq&A3xEY}$1zwkZO;O6IZP@NtsfD$u`(5lR1az}_APsIb z>rKb5lvMv-LufyIW0wScc}SRTmWF1a+vk*l-=|Aez<9ZO0F=D-4-P>)(!unze)9wV zlRzHvX7{%o=c)@``-x`=#+s@TPUae1g(X!$fH`r75qvuk3(*EF{oSWYij#E93>Mrc zL%TvqP*ZU=)b*ZrHp@G~n;cW$gF~Pyg+ue&9cRWZNP#;xnp_&~w*n&QuIFz@pGsz{ zW*af?5m%AUSZW^H_<kdW*MTns?&5L<EU~sz$<p=AWo3DIZmw7&UKy-+kwaP`x`d^2 zBPwhHq->?3sc|SB5i!kGP+EExtq61kDpzV8cjKIlY+?#}5xJ;4vawW#M>D~}IyP<? zE2~z8&ASX(nV(~k!^ZXnMfLde)Ktud!g10vCor~fIkYrHi+k2`=n3bX?>5UaapJ1> z@#OI`V@OWdE&1HfO1r8CiYnkJ#gTcA1UVUc_?h9z6F7OPD*viHgCZG>$Gl)A$|$V4 zQ$qEP&Q6XTSrK&t3r*Yd$g{lT_Ra;D#E^AVzxqKMDoHC4B~)JV9yr3#fAV=9vIzP9 z8~ppHC+`0V%~LKR8jAowQ$(Z*CV-A)l2f+a4*7afF_iLj;Ap?X?AyJ{YCvmS6)m__ zuic7<4t@5HHIIGdr6a_!yu(s1wt9>dM0uBsbP@zh?PUwAgBpw9hsr@#`wquf#cg?c za^^9_M|mwN=}mbjEWeluKi>(ZU;gkHPCNwk6x0SvjqZ#{Q-nYWe0$Hb&h)>`tj;%J zobr=T1ZpmfDHb`E&emu#3~<C1*YQ5*=|=CqkBwEW2qEd;)^K&Z(mYidY=dIetB`RW zWt38!@}ul$HLZP=HlBx`+5|+~(UTe1j?-3}K$$%VZBM*sMEFnnCh4~ck8E=cos?aL zPb*D35P(gL#h-u4o0d7pUWw$hA(so|2Ns_zca-$}1)nivoyg$duN1z4_D(qOKBUDC zWDPlDVgs@5=QGS_o#{sFSjNSMUgM@szbjQU==dzWu~4l$#(j=-?27mg7XK&(LKu`8 zhp|`S7Ea<{xkAj;WVz@JPTH_jZv2w-#Mz_2Vb}6PZAn3SGZe7ir)+fso$5Ht6r=y+ z3p|kZZCfYv{j;Lr270oU$$vpa|8FSe%6P$fOw)hMYeGl*C}H$XV1YZ&ul-(In8L9N z%B^n0M}A{tekDJY<l_p1IL)5%oy(m{3B&fKo^RkduB+^ab9Z<zwW`&f21&ZutJis9 zCCG^3<(|A08pwT+nG)5)GZGocHHpmw028YG3N_^|8yAe6+Gm^vgIH?-{e{_F_6W7% zf@tO$v+KD0*TM;)=hzPHa2vm0%dJ<zDpTNmnV+&v;V2Y?0Qfbr_a!5WUUwwx!f~?Z zG7$5^xJDiwHDjI32)5>XaMrU^@=FD%xFB45`o&X($)xP=O`4@TZ{=Khs1*3vIuE~% zA13?uzTA|&1991x^&;!?$m(kLJ4I&ni}R4gq_urJIwpgu$o-6XX*slKn9EhA^zb$Z zxRM(;-azbqt$3MPLFf7wvLA3l;4b$%Z<>D=DRpbqqSsF5%6%hTgDRzm$o6W#lGyP~ ze((VjX3-zC-BK2#Ly^#F$MF>Eb4~$Q+@_Z6cD(5;i9nDYjw`)j3ozoI;d1#`tMRvM zYyK#}s#YauOaHr}aseA^_8)Gjz)|R9*1Oxs5i%hEX=~C_viS#Nn@DVduyA8mVSHgp zwRv$7Ls|{=h40SHHYQC8>+f+*1)T5Lr%rykQjUY5Syv65KKJH^e}2teI-rEN`p)1s zvX&UN;*zNS>f+{3kWsKRU_1vfo66;lz9g!`mGj2Yw<CJP%_7e7K3VFiUn9dF(|`%# zQ)lf64MB*P<lgES)R2hX+J5xSS5hgFbbTX^3%c-myMma=+$0bX?GbTZNm}|$;6YKr zc{pg|o>5E{ZXqiOy8!yRKjMbrRol?li_<_Sk)&m_qig-uxDeLXAWeM8PGO6G-9)7g z`O8gnux<lhF-oDSC&@Y#SJFqlHaxxlI*e2SrA(F@lv$mA?<mJ3Bcs4!<DcfcYbY+G z?q>r<w>SrLx#UK;s0pC44yn=X!m<K2gymI#s)o`Txi<f?X7UOLt9-_~@nHJgw!b^Z zmAmah1tp+c+7R4_8D->nBuo2nB5BRyRdOzJ;YSkxyJ#$mm_j27Fkw;Mu-0rvi2XI0 z7<&F8FV8D%`ySVUF?>W)#P7Lb^WwltkIiNb|BG@a=nq#n8~$du{-*;$;}-QdkIpzd za8(c676ZVng194f@z~Sw0W;}w0GBs3%$~n5bCj46)?TL^h@nBe0Zr$_*{44o-$lQ0 zKQ$?A3uKmSnWQ3YC>7{4tA}yNSR`}aM>xBsI<{!nUf6!)<~BIu7UK-fieu-;<_-vg zGp2<;fr>%t(KbqQa$NM@Hug5e{ujv|2*4#PFvLp=2ndjGUS3Asr}mrrx&V5QSzNx} zA^V3?k;Qvn<K_W0CgptbQ^%EI8YUWnb~<Zvfd3n4%o#b0@)1x_O47WCLDCSK57Lo5 zo<R6c7fScZ(?u)xLnpSj<BzTM1~uza829Zi)Ok{KpMt?}`z)KGfg6|V3+CV-p1MD^ zr?AA@NKJBxU##89_6tygp9Q1OUUjTfE&K7>^SPGu5ncUqlmVFf#sfz2b5}|~y{l#6 z<Ll!xCVcb0=#92rp`cKbemsf9vo(Ww=gUD9VA<Y{pxv%tGrb@xW~e7rt&s;m-wiY8 z*`YszV16;JE2^K6R4r|ftx71$*oldn&^zMY;sTtu3;@|ZOJ1=5efG6_(7gHx{q4VU z0bSOKJD$G@c<29a2l2M)mH72r^H&bgtRGg8t-56TQ-4mxA$CcT!H^#zL{rldA8gQK zl$+`^K3;Cp{Z-5FytbK7-G2BSKPI{&oN1`^C=eA&)Q15k8$Lecovxz+dO`f{<;3L- z!fCx2B+<6pM_Tt{EuQn|)>O%fq0IC)P;Zma!go+tCRYmYndTATk8)weu@%kPkiPWO zrGV-#!c*+i-<xYwWU()`fU?c$V(r;>56e=!E)?HktOR+29V?$SfK5I06F#PN93L|A z{rh)IGn0~%Fk+tG#$k7~4Y{ta?tCv~d(=~T3L?>>$j3jRZ;v<Atk<}X_Y>Ota01ob z>0vVIf9%e#Uef%Xm`S$Y42EoG9D$g7D$sxHb9iW|B;LHJ;q$wvVsNf4Yt3Rn<o`4S z*(=o<yRs2hZY+zIo@C~anw+ln%MIWE*=QV1M?M|68Ll(37J6R$^49=J6k>F~`7P?f zc;hXN+ChWhozK|Ph5)^3Vy25IAGsj)?s}-yX;X_ei~EBaln><k<4KG?A6b!SI1%cC ziXU=Q@&d#4cGM!B94dT9kd{`pcHLjS5)Wk60)Ipo4AZ)a^}zwZg{UYVz~!bR$#cJG zyJWq8h|@Db*M$7z#s1I7mRD9r)^68aScUJID{Kf60E@C{Y%97xA&*V3_9C02`*r8w zc;gXMy`k0evOz@t!Ux7AkGOX;+xO)y3($MIbQ^1?;#Z*Zu;B}SHbypNk1}^bIr)BR zD9Abo<|UNYC>(V}{A!b4womxO@I&E;bU(^PtpnM4tgVq5FAu?QbF$_|3Z}M)FDp*A z%rW9l6-Vb|R<)VXUJ-|s5|d5>SPoXTsx{o!rabdSQO!@tH3B4po>|vr9~$C6=&vB9 z(wLZ-njE(5E|ird8NlWQay(rnx%i&*u%WA;M)V>LQzB&Zo*`;tyiZMORq=0x9u=w{ zd8YU6>#ofST0-#_+#*|R%Z*&5%1)`&6Klo`Kf2BD9;(EPZt2B(#<eh2+U}i|=`U1G zLFJ}ZU7AShBRtYu#n2viBbgr$>}3$V4P>IPN2n;OqBZ#&`zR}yRB#%PA~Y6_^4_kQ zlc2j#b1b3pH%4$INkyW?^TF)IfTWUZZ6}3YJj9>uloje&v<*HS7q%c53*TV-QU%eY z0O%{0+wxDChi4KMf5hLtHUKi$$0Nc_Fg(vMU5ssecb*NT9{m>XH6vA?o`myXav9m) za7`O84{N9p7X)$I6`-4!r#umkKYzBci4tsGe6LtKu>hCkQQ2;hs0mK<=JKmb6QNzF zV}m=+xU&4EytN`@_G&9|emOVYK7B{n#B*n-`8ETy-Wyj0iiaZw{|HU{;Z!GH_eHN4 z`M~XycKC)4J6Q0BGtjxxliD>tj<9)M8J>GGr+>!hYypd)f|ZOn;N4<q32?mZb}yPk z{C)H@bKuNr$R%uScujQVg-qxNYRuRwM?vn`qo#o2sFmUiS*o3-V4X3(8(~g@&(!V+ z^!Mncd6YiYxyzsMuv0Y8f~X#nZqYn1w9FtdzGM@n+#+oL_9F(r@?cN?3FLO?(G3SZ z8~$yJi^&~5YCf_(CpUX^V^)WB#|j&2H<=-ekD*Sqcn%fAmv2xDx>D51nv{3c$}(XC z1kV&yJeIjB`aWd!*#6My<FCTAn~~@B4E74lN^`;}-mw$hll$W%--fnK?!C#`l~5s% zz9POM?y#g>9SX8*?D|R*{Gr|YgzQCbU=;Fu_x(Vp;NkpdN4U-Z&m(+_e(DBn!ayQp zM(7a=75<mV*&#nqr=HdED$bvUY;djpaU6uvK!VPLwOF{Zqo7D}W$40oL-`nuUr)|L z_zETQMg8t*n>bI!kMauRZJ!7;D?R|D3)kWtUK5*FkA!|<)H8rpHCFXyf-b6H{RQ_r zI1A8>aGxo%LYDdd=@-75g1(2jBhSg5bLUy$ao@d8`e+DLPj%!8<<%W9O`21h{gwDK z<=b+hM8@G8ddO|Yjq?vsrGrWfQm~GrtDirACMLwK&v*)X?*4EGiu07)HIz_-d&b9R z^v%*GwpYiPRs<qE#n;!@Q^uQ8PUploGe}3Ww9Ied#U!hWcy}9w4y$?lxtm|LRxptF zzWV&xzymuI@58(REf{@WsycjqHujj`*yZe!;+mzwlhZ2D4TX#K>mS!A$(Po9T%Blg z*$<t!2tS$}eFvKQn!@E(#+V_&$JvoTkrz_rL@aH*nmvqT*Ly^O!j>3TLMBXXZyY~v zo3W!7dwZw(q)&Vc@d4+oXWi%#9S)^LE=KGdfO>55|AD+=^<&@|a{qb~$I5i(_Sivf zsRz%Wy#o*b=p7JkO%8cmY0DdQXXf^4!1ql@l2`xh;^AtOtfLN4ocdgmx1NyiVYs7X z?a}d?r&mB1ax$}bs~^N-g0HM(^n2qNv}BW#ytMpBFW@qH`#6eAOo3aM^Y(uFvIrI- z(F=Z1-F?bXD-dA5fH<zu^VLxs5sc9Jg)Y<Y;^F)Wr|=_X;d&QV8pGt`H`T~3Losdn zM)8cigxL@DsI-paIe)zBnw*qEn?ukHd2DR#e6Xk3iyMOA7qXuXomvMgpcRG>f%0f| zqJW+ZKhK65DJ?1Kn);y}!}w4lPr?61*_($$+5UaNC52ShLb9)=NU|@JC3}R*k|kLt z+4r5uzB59WnS_LpecxqggzWp+88g-y#+dhV-}mq7{=LWh9#7A4_^Xck!*!k4`Tc&@ z@82ndTqm<lx{}J}Q^g-h;b2^?o#5-fa=;)ceara_0E-Efv2`{0+|C^A57c1_M;z@J zLcC0;68j@7%Z6$D)`e)UrnsDQAGoTYfxjg6KnkMb{tRQaD#vs`iX3iz{0P7Q(fJh< z&EmRJ8PbdLKt6(S4Y5hKCvz!EzDD~RhC*8g&$LIz_1-vC*NU@!bx+6Cch=R}zyua- z`?!fvb@}w}?kZ8!mH2^&kFkjaw7ebX`s<T*%tTr97rIqIn&LF_XAism4<B|8X=1%) zKQ&FL_teV@ej*fib456DeU<ww#<aA`)z6aD_UopT!b7|5?Rv`JHM|pC+ln_MaveDA zoTE8N_l~;I%9Oz>&6Y5yyhZl<T=U`&wn)D=w=p9RP?uiA5bbDM_W-mS**&oSO|1xe z*+}Y*N1f7(dpK!?_KBy(vB9MAseg#=Avf8)E{v4v@p?mpG`NDUHsm35j!pYo8K;LE zH&aIYA#V#uNGz~#`}thkW1`E`CAXGU4@GTlMfDDOu1apRA3aqTR~j)kHeQKi1%Q(} z(pXmJ#~vN4-&(P3--?ghLy$;hoMp`S=zY})$%FI{4*td&QhSu$d1<GmD-sdiNBiqq z2OVH5+RcSa?qVfZ*)ksb3_$$2eM=ub_$cOnWne>S3Q?BoXc->9zhI26T&GCqcsXeS ztnfJJ>FwD@P33XY2PdC+h9Q@m8p>?D6^6d#?#Ye{$fT1Bf<zgYu!&`v%pcrI9SFK7 z;`6cuHl+080v$WGib>EWlb+`M2Vi=WJwwX=ce00F|4(3)LSB3J=erU;AI?@X4g7em z3HzwSQChpJs?NzihB*j|9x)5jjF2ofqHCxTso|z_vWA|6yVfGY=OZI~E0^V5en1u` zNb;CI(vf+0U9{5f9=6h4_@ZOHaiEC3r6sxPBy{jpVAsJ=mA{G(qg~nbv3y2uQq}vy zf}yy-D(#|Ye<NobOgAC#yjmSr2Bm^#@vt4ITr4ha_pa8v8#3ZDN(%3q*3p5kA>|~g z_w?DFrI^F(p7IhaDz6k0N#jARKYeXEvXKJ(_r(3ntf5$$)zba_{b$OwV2%UUA`T14 zbj%eES+TkCanfmkZJK=f825enw!awc3G7@+Ma6X>k=iw3Bda_H>l;rE^W0B9_SA%l z*{8G=L(H+`BCn-g1vB3{FCS-L+lV?~8`A-cUN*bJcw;h>NCt5QGVZ3+iV4~U8jLjA zTK9S{a~|*Uk*nK%t>J~&<O<1rY)5$yEgxOHxSh8myohOh351;y@%xExLRjab<DW6j zoK=-L(f-*<t^T8v3T)S5(T@F_yupW+Rc{+$0EGp8*NC#(`ej+HO5!?o=h=HwDAQr$ zzPiwE${3{VcJEbpC3N)IS|j-nK0a&yjU>a3{_%iZw>e*2V{QT}=o;IahDPlg@_~Kp zaHaD^3+wJROQRr+%Vv3G(|TMx62EWFtR;TAO}U+RX<nV%`u)18<h07fkm%dW8f{6o zddODPw1(+}N3=_AAv&k#8Es33Ju7zRTPu<JjJ>%U69wLBpDCZ@i|4IR!@E`mqk(Ju zcE)mf>yCr$;_N~9C9Q`_5q8(tFc@Dc!^FAC>C3oQcQ0<1j#nd?e)A#O=3M4%)fn6B z3sjX^q!bv9$JmtV7}D6U@UqJR%v8{aUK=&a;c!sGv}tIw2Fv=(0&_S{<MOm=cpURZ z*HPN+{lg%<#)gzV%VZ?nZjx&!qf(sZhM3@r<Iwqaw4=7d1nMGpHEX#p5N1*-y-t{K zX1H~u?Nn%Z*bo1Z=fYFeKn(e*U-UD)*!Dec==Ufrb#d|DaXwsOKL0Pm?+?fBjz1f_ z69kDYXl1k1!yWS3iDciouQyarea8d6KC1n1T!sck$MRq7DeR~BqVimHf>wby4xOU5 z{GNZ-l7v5zGS;Ea-(k%PWl?}TsHv)ANyzWbc}*EU(YO*QJY=tPhq){~-17B7^CO{) zjN){TAFU-9!VkJ84d=8dWAY|QTep-pTxo-PNmO1ozO0O1PDR?hKn}v23=UP;`I}(6 zpLt;}%-fPvUD@P|P$G~pY<+_`;84aPrfVRbhDefKl<48>-SWu3u&s1N7Il~Sr2r_x zlpON$<HzQlihd)yX%;EH@~d<U3=o$d_|M1td3h>n4uaAd8o}L{l$SZb4f8v_RS#0S ztYn!h&3VMzIy~zcEVE<tIaUp-pecPz{w@CG#Al7?ZvNKl`id}EuG_=^4MK}u@}Mow zZx~dR?D3>IPQmrqdsHFtu(9*>LCre}ag&(GA-OWg?es0HjvKc2xp-eG3he!)begHp zS2S_yy54d=Z4*B`FEn8)tK3eKnW@<p{M&VQj(!BoCnJ(|$=%jq!*he+rh}v9i+;gu zn>0@^WoUKq6a;PdW3;FOc%A^}rR6X+fcOP5-TSxQ)d=8o>w0x6{*z`wM&$GH|Adns z*Bmq;Q|~oAFX>;-XWFVYJb4;qUro7fhiv1t(xmratE=VP-1Tl%?9dSrL|9EaualF_ zznqc;tat84<+J;=UerZ=vNlB?oW5BrPD1OWPzjm!-Lu{g`8#4mc0+Utb2|JtI2J{2 zy7GA{_3~rbv6Vfju4d(tt}ZQ7MP*Czd<wmv7KEAp+CqWnHf9xXUlwGyiT>Cq>$sc2 za9?|eYChL;D4=ESSx<<f(E!W-skAx-w26(hi)|Gy6{hAu#SeVsY_8P_NJE@SVQgY} zqrWl5+9Rh%M=O2z23}Uymr_%=#%F_#QeY-2Wt;r<kS+@Q4f#IsUCLj1v8`aOpjBza zqut{y1rMk$DPg1rAiajx#Gzg)>8m~kehpimucc|YD68U|Iy)7&Iu6_wd}724+mFrW zsKz~`zcE7=va0<icaT%BeWlE(uz8V*K1K4ESIOsI+-_)yiLAG`O}1v^Zts-&9_>q? z>_O2S<BTwo+3<@E_8!oG;iG*S^J}f^JEqA7AT`_Q`vwL)n6AFu*|c!SG{Y`NI|wZ2 z=AJa(ssb8CSbvyg6C@Og`Oi`;EY|d~_R8t$G(2nVt~kz5hnS4=zT$wV{1O@&<t;Lr z$8|q7a5?zj-0>q~=2!r<=|to-`~$npmyn{lN+SM6CG!RF;A5pZceJp#z5WH%Q3jm; zLskOVIx6KLADj(Cp&r_p<-G3YZ?(T}xacZazd?r1NZfLGz}coLkZpUq@+o=+0*;v9 zxw#~vF!<QT*ktaz=;<nB<#y{W!rD6jUK{b-<ZTrnOuLnKz6xKH>t={rEr;wo#lFYm zSsEL%=M-gP$Zgx7*|eJwo8KUwA6EVO15+s1&xOsmE&jFTP`rKMHS>JKzEqie?jvd3 zj>@_0g;?B?#=sX_b9Sp5s^s0_^v4*r`cSh7@kQ~^!hz1}fl7g^c+ZRcTK7#}z9c`v z5>S+Vnv#v;GK8_5wVW@csPN4_Xa1Hto6{3#Q8@`Ql_kf_n2CuA*8E|L4l^*AhqHFr zjdtN<;-JdHEnUM_9)Pf3#RdllKlLvh5Fp)}*xk)XZfyterKYBTPd4^yda{};ktbsq zD)=NrWQ}8tT+O`Ibzh8{*X*&$OBx(Nuf&i;gy{K-7VMHny#oXT{7-&SOq%&D22su` zO~A~3{h|XJDV9rR^4eh}e8J6TZW5?&-19nj|DT<vJlQCYUX!NE`7vWa4kt?T)K&UM zK;-37pvHr6ee!59RAyffDQzpsM|En&sFm@r-23{fGa}nQ7Um`J*QaD~l^DCI`zJ%* z8CT}n;Y#~Di*sU%x!}N<>d|TAUWGj0T_A1(MFcblxM~Jq)N-=qc0DI)2B})X_Lers z1}h`xSdXjh-yn_AK79abX@Oz6d%T%&wa!p-?Xz7gWD>~zFtmhLE@T=i7Y)>kNy*6E zP%thsQt;w5*?1N0(dQOqW^Scmmc;AcNsKLPHyfx~Ts6K|;uc>sPMU`%-Tm=?#l5{| z;XK_;+TsKDlP<lXQjV_UMrjDzkD_{fnyRvM_BK?A=;TZ8s`H$a9qANjwDSOPdj#2H zbx6oRKYZ{Ia^>r4IRap}bCE!xVe*Ss`m42^zP6^bG=8hdmFP{=`naDAIvwX$!j9A> zK7GFzfsSIpr>CY~e&EJKNpGSZ96w?ex`)7;(qY!U^Ykh!&_^*y+)-3)^c2Bs`2y4c zG^28`kQ#6gSq>$!K@gvx6yK~BFQ5wA_lWM;%-BrydiCC%<uR^oqq^&GbX5{r=1_S5 znpVWB&$?3LE`m5-v5m(UE5N6~EGg;j7d5AQI(IF`;+Dz+Knm@Xkwg)ema20yD8^zU zNTsaKk`0s${|JwdH2c>v|NqD1KL<t4kKa*cw^juNU3v%k2fTiC+qzrP1hMZ2Id9i4 zvx_?69)133;}>*mDuA8^vH&j5wOw!<?f62?f3NN-svD_wdF2@46)DGG9A5%7m%M++ z7-Xl}ufe4wyA927&77R$m=jr^32?x(W7u6d1URrA*7PbjsTfN{RU4K2=xz&Z1`2F* zv~aYGf-jnf(j>VpWF+jqIx0|q7wa2?u}gnM$>lcS3N+r6Zl&|R7K-Anx3m%%xhSOI zH9FE#0uEo_YN|E(PB@(;?6{zxYhElSsdRQObF-b*SuhGwiir6viEL}CXmq2J@dLvA z4rMBvz&2DPfTT>MCh4<+%!3CvkIO47?b1$<8hKJFaN|t`-zuYRn4cKgXCc`%>&vDY zm0~OdzJLU<{Q6@@j}j@3Ok+Lg3>{Hae8)%1X3y`6wcvVwZ9>*@Ysw%u;t|WDber38 zi$^=xse#-K<gjM;j^CW)txgAc(n$r)_ivgZuUcESt~7DpKN(kN{ss2sC(1aZQ*P%C zV}R|C+<hg_~*J)=t(ieCIfmjXq^3xBFViDN;ej{UW@HP~ciI}gp1W9}Tz_kTv( zjLN$YG0+(qVKs8nS_S09*gYzoPBGblRuKd%T?M6-h3hAm3_maU#n;JxPurQ+0r-Wz zyS=O`Y?vHYZ6n_Y)Z3*oT`A=sv!b0ds}*q);OeO-{c%f)X{7(KEC}r|&vA-Hnnrs$ zQ=g+b&zo+x-}{l*;R6}E#2fv3p<YE%Nqyyna-6E-B^N-VycV<R(%GNlIoA$8$Bysm zQH{$Ihjx=_?Z?=bTKZShUA6|It()wEE3S%eQLTpF1qoY~l?l1cKo)fJvTbc`FKXSK z-3R;lNRiHtw54z)4f}V*?btqv0>k!H6RY#y`*B$4kodyV()MIT0EbGct(`522m=e@ zwk98}NApPFviecY@<72Uwyf*pan?BeX!wQlC;yZb|4HKa2vrSFs?Fu;tY-uC3T!gF zubGM`bn<J^U&OZe-;1o1kRt-8HDF?zoF}~PRXs<BN71|;IA7K7E636shSi{{;<E4W zPs5sN&eDsVKK<Di$NNWHT*32@CD%kDDpo4?=TN3IWuJYP9UrE*ve6JILr(48enRE< z=AqT_*iaI)x?VTUPd*E}&(hZ$4c>BRfmDI!N!7_{4A}Pdc9*uih2%}%VCySn$(vW> z>1*gGZXAg&FYZc?ZNBSm4rgr<V&7t+E7CE4yJVzb93$(M3r#r}+l4C+uW^tcP=qQD zeqk+!a1VI4LE29~JG1RDW_sGVEa}C?F1po^sc<QM%>|@lLA9?!f@TcHSq8$;bJz~i zGrDaUf3I9+@;E*B0DinfoUJ4a+xeuayb*OV*fHzLafnO*_%J`tReP~4!r8>Y;PNf8 zYnK4xWfqlKSZE(~YHN!OI#sXv3N+MPlnoEF2@)LTrp3WULLS4Y@f-Cu#^RlwPl9u= z73rotNUE!=%e>l=w8P-m4Xp*Frq|_s#Ha`~o=z-|(EZS0<bLp8q?}JZY+TWlWgugd z%UE~e0-g%k4}k~@aUhWDf42}cOA<((Uzhz`i*9nJMW<`~r138?(%hLA{cHt~I$Oaz z4`;}}%Ihk!a<>!<Jpbk}H(YBJR-A-4@JR8JsfeqjYqIFlfzed%zYzBkNzyzz?n>HD z1a#WB`(VFXS~AZw!g*{sP0FT68ZDG=$`(cMN?LPH@|x_`3P)srl%J#h8lM~Q5}y|z za{JcUoelPNMM1g%EPKMP{_4;sa=M_aCv3%GemX9PhnqW4tpDhRRF1c`cjuwu^fjxU zMxY;dMDaZ@LF0iG?D6@u+E?_D35NG>cBBjFx$)`p$C`#pK_IESHSa(+a1bH=USGe* zE>4d=84yU^SL~Wro>4|b32{ZBwQ6IKr6xRFGIf;0$;ruW;)9}MgM@{J_(4p?!4q$M zG+{@D@v1igXZ$_*Xo9sDVmMH9L~wn!=uD-Ee%<e!aJYMPB8YJ_&UiLZ^OO#+q_CR) z6%>_bGN#TNMsw@4&#X#AY?<Z~0~~^j2$pFN@;Fv9y}}^S5wVx6xx-x7bp+A?RTPuD z$N}~Np2UG!CH9jEoBi<L<8fFs<Sf^}TSzzZZ|M=7@_ZxxAD%<MC1GlFS~jZZXXg-C z=XxelzZ1#R%CePCI|a5k-}(?6Q@t<oYVKq*Q}_hIC~)nP*6F}lL}kN^GV^?^>l|>= z4Sr0i-9rX$X(<WFLHqW4YX9^doEK|XoAOZhJC0$IA4`@@g=5@u{M7u`MQZJaqg`!@ zyu&)01u0WDN9)Io46JJQww^cZF2p2w7QAU}@_)rwU|rczXSS>@9@ay{{}l+^oNC8b zNA`WZf5dh903ZR*U+Kg<i$Pz!(!7kTRl^qWU7VVjsxqjs18m)HxWhd*DyT$H<J`u^ zTl%UO@oC*;v>g!VSD6%13tL+@V#(j-L;b~WEI?)0);LhZ{*$+y7?>4J@F)VJ>D5!R z&!_3RqZD=JaM#c)Fx3q8djDr-h4?Qh!?JQZV5_1${pvMvTwmdru$pB<G0Y3?>}J=! zozaPl#a$_Ku-vLS<#k*n8za+}Le==q`|Do<m;7|2T1y0$91WF>Mi|iMT=S;jUytvR zJ>afJU3IUx^Vi&qj-s58eD!DZ&sLavuQhPRGQo^1PkE_i2=}S{SWQE)P=|H=`{Jv0 z`;)W?l^}RDHq<x*ca@K6w9sYn``er&={ucV)8f#^q;k3@VY4IaJk~z;L3Vg$Zmjb? z_8Im!919(^9+e!^>~riw98dS4UIY0B$%b_^A}R}M(2i>mUKI#&EH4ur=KYZqoAcxP zOLwYUri_iG=;5Q=bOX7zT@#K{Ft&s?S0|_4ARAwUxh#)H1HG~w3%VJ;3f7j@hFL%( zXm8f%#IH0A2h>G_m+<nmN~vFBX@l%L5)bu1lfwOCb*g3J=JhM9s@jCxT;mTc-n?lS zzmD8)@Sg1mSiV#y@<3v7RoqmkaVeJ@e^bH;3o4*+2xPqVhDQ9>Y`M6w@b!*NSGi98 zgY*jNQMhMIoSWY8r6_tZr@vn1oDlez=TGEL6Ir?dhTXc|<G9UJC}itBR>OadQH>TM zFj*8s6VMAxHvZy)fAal2XM+Ai3)YRL-s%{3?$)fHGWl2bb(U)GJuj+FN)B>>X5tL> zAXtjZgtGuxegn7r(js~CFQsM}RBe1TABEcWwx$N8n%iF@w|<1iqbamH%#Uhbeta5= zo5(CT_E)aDYxthD#Zk8YaqVM?n4x<_{8Mp(u$91|Tf?m?;-Q*LkJ!a`1#@1=zu=!b zZOODnZF#XD$3*VE>`(~O*OZ41tiHbj>&|{Z7!?#VcojrFLG=@^w$Gh&tHsx%Vt!M& z;9`JZtK}B}9Yw?=%O+Z$Vip%)dsM1xYEA*k?36WmX{|M^p2IS(4?da#YWZ>&w>31y zEy^-+lBFlc&ioTL1ByoU_77uhtf#n+GHj<NW--oc<9+J0aMz9-D`4Aw!5_Hsdqw@c zJDr@zV)36C**y~BrsZ{Y-gl?lZhwJubO@Eq*Y8B&k)x@Okz_mHSELF3pD3my(<QBs zyDP=S5mrs0x*xg+E}_6->vc^0BO)P`;g8Om2g}8!>Lk*+DZ!2Bo08VTe+w{!=6(w> zOOqG@0p>#duL3ABG7l{epoHSdl@a79cN2kQ@Kr{b>c!iq4>M)Bd*QQv9)b0drB<gZ z!!g5OR8kdBEtq)BSV!2$+5MD`=vqWnE0a~`x38l*ZRwc1W|g~qs#`<;lLg=)`!HtF zH8C>}LcD(v-OtL)!ATd%_0rJ5P28v1Zl>Pq=p@^ML`XK9N0w={YYE+7#|Z)|mC#a! z=%_~q{^)sG%7v;*%(pFHQy*nLz@X)sjND_hg?dfIu6CcC)U$1tnb3Z=g80UDQ#FW_ z9C}ZmCB0<E09^7Q=y+EB4LsBp@s*1Ef)66iz0fd!yd2}`XV+0=l133Ig9F)R_Iq3d z1SNLm<VvGp$F1zb(N)1x@gebV)z`35J7A~tG;;J{taNy*r;<vOFdMY{j$yLT0KK#H zkM29)J+$%O)K^9n2{ax8;b=xi#>3;y;wd~1)3z6h3k7!pMU%)6y2fOLe(#}nAXeXM z@vY`>(}=>n6tHE&v$Ej-k?kcAV@v;tDLMlY1OO0$DJy9D3`F30{How-nWTw)kib++ zOm0N726qibERXHLvTG1v&rm($CEa@uCG|)A`1b3L(qVKlvxgTh-l$Ic%{KGYdr|2; zZ-ja2$&yWvv4?Ayr9E(JSiYMd^OFAPY7{)m5Ka&r<J^7tSwQ<<!bA3xGS<dU$Jil3 zA}JNLL*V&V2`6zIgWg7zF7G#zBzb;Tj{M@HBK^r&PXaj{XtiFbW4TCnrkd~S4eJ>Z zT_M{T@ikbeX%5^6lKg;rlY)^{?T5ac`uL9MP1!IWD(ES@+k+6mJWb*I7#-y#hG1N_ z3p(L#<#0F2W?d7-RqXMXfHDTg0S0fTj?iqe`<~TG^T`uz`#VM;>(^^KH?q9fnVJmr zCEK~-fh?PGK|M+_lWAPY^PHW7#TJ9)_SJT0dbffG4cslB3xhnz9Sv%8^x)%mITk96 z8DY&Vo$@D8`K3wB9NO#+s2{yCMff8ap~e>|cop9psn%^=^=|BJB;cArQZV>*NiPd< zA3k{c{9jS1><+ij;DcaIl7FnQ%}2!82Y-qV0skGcdS8AsBLYn$loz*T?55>smbWn$ z!{CI|LUbv=gPQ{xWxe7B&lwLp{BH%>7Ov7g#-0dkzGwMnfbaU@o%|*1WT3HYTu>`@ ztm~cDXWI{XFE@P+Oxn02M!Py3QUJtdQNqcw4y*neJ9-$SHtg-@;4$yyB$yo*8xu1T ziK?@up)r&FqI65iEgSe=hPvzwZ$uhWLG#j{?e_Qgqx<L?VQ3dm*#0~`E*nF>BLh(( zAxk|*&D7Cd12D)JlnYtJ@Q%@A$`kQe0NEqwDR;i=C?lAWu}RF}>u{g(SY#eGL%>)g z2UE_)bzhkz7m%WB$M+iQNJ)y*O~%?f^Q+%|6sAOkQZy|+Pd+A}xKP8)TS&uDZ4WgM zr{R3{h>-HN#Z?ZZzbB3u@V%Ae+wNN=e4VQL4iTQe^$feKz^}tj*LT*PL2>6mf`U}r zS#p__+|)mqJfJ>{G_dcnK1&>q!yk%(E%CPT^M7YwqEi5K5QzIe@;`qVD}UwyV_DTh z^8MxvbkDei=QJ<yzt!{TS<b($C_wJ9XlGek!>oS6#EhtN5GH6dI`u>3Do^W}wbBa- z)_x{3FV--0cKd1w4fGI7*4cFQOMc3*2)ee?uHI_rd*6b_8G18AA*lEkdD&JNC4I2| z5@@#S@(9lz?}#~tmYeGz+g;jU2O*WnMt|k2P5AZAZW~iB#^>ZkW*@v1EtZ_JiL0dg zrBAs@HJC>?050K<Psf|>inkt|O_N2g^d3-F1r8L*1I@b6Km{#78U@x7@y8{nrR-8e z!t4^{uG;?2a*szZNsDJZ!@5XVJciMKUnD!~&L$+Z99Z)g#D?N0d1%WID<EU(<hDvG zOhtg{$QoOE&?%!}7j*#<;4zRAe=QaZm#B14orkx7P@F+csdAj;%QuXEt68AYZ?!fF zO+cGiD}T&MxRB%kmj2-O(f2;p_Q81a@aTSQ$(tu(t6raC_X~Uj$qn^1HaD#ftkZy% z;uGvK7RdCDJj@aBy`6pue=>{08{-C0Cj;(yRU#U<(*>5(mbewOqa_}Y6$=4C>8JQ! z0({Sd^8A0L!YIrWorV9LOTG4wJ~}{ytelW#n%ijw`YoaLpgwyK$a>z&|NdUjdjD;g zja0y5X7$|aI=!caU)JhW21cSe>sYpbX+9K`f|iTZP3!QtZQDM(w-C6sFHGlS6gW5W z)tl%fKC-l{?1UyK7@=7JHqW=*6L<kEln3v&Ya_?ILtA%WQO?I(#E0pBX7&Ee0q<gL zcMh_<vGi79f%ipc;t7D68?X2kiGDLExTI36ZB?`&zWu-}OREaVXJWm>!6UTJ%AE}3 zY8k%vTBsZOEz5%`)*4ANB=q1RpuX;iS^z4w=RWKY_-O&owsaP4-qzE{mu*|g7^I;r zwyRF^A`9JHGRRgpsoN~3Ok~U<^71vTfP^f1@>5fjdiZMer-Am116NlZ7l{JB0Mh-| zlw2TKYBJb^zGK9dzWm1a@S@+$Vbx~kb2P&D0eQ~GYoGN`o-BLJJJOO{CqA#$Mw5T4 z(BbgOEKZHcdTJaUj{b-5lE;loXMFP|?)@^?)?UxCc~9hq5Y-#5!D4nFV0M&~e2vTM z0dn7v<R;iwN4XQQ%pQaH!7p7F*YO+~pu_gIkHo*9>!)7ek-0N`&Hs<d_63noX2Ji( z?{J*y+V0-&O1+RgcV}XDRE5gV<$)EsfVmMnGa4V~bEbxze8;0yJX@f5^xd>3UP0`` zVxw9`s4JbdQCHE!CM8$QFPiySAdV0_f%)JwLn>#Zqs)9+?ymOTz%4*8NEaVWl}?o( zA6lbi3W2Y_ub#a_-sxTaqJX4(%GbWP=2g_WelT0+)Uv&3i_xh@sIT%(OG%;!w-@iK zKN2fu^>DrgjKor%?1n;qg~47gFS;K)rp^zDvpaG0aTu|;!npgYMtx^Dd5t+*fg3o4 zjJUA1(d27oT@{O8%_|QN-u*Od(ar8dvn&pjMC{(A1gb3M3Y_?oaoY#73tESEbi-4d z`9h}yaS8k0Z0m*^e2&vKGOxO@%^A)s2BuMZ%C9KK<jk6B<{4#VbN-UO9-6!xH!KM8 zPCQl#vu`jNW&k9-*e_Q=G8v^uY482!j@v(6OIR?2Ar2ma);X*zwW`O~O{_r^ivDJD zKARQHn<ECq%#Y8C34#t`gd-S*5$aiB>}pL-jn!EZVp|z<r9bVk2JXx6=fVZ7j=F)* zKm1PYdPiy)2aL|-fy1W%e1`|g&NsgKBP@ZhC-E=e1Afq}W*lvfN#$uxMk2@5DjQ}K zpPS8bTWSMW>;!Aaw%w@Fs7&ef;JXizO8oF-q(hZs`X!U%c-8IhU*8z}Z&K%Rs9D?; z5p*{fHNN@1yXFh=RO-3dlb+qXbW08i{VGS6vcy1kIYp^Ns{>Bq{I(G%7LUL1l1G1L zcwiL_HVPTg@3(L^x5@U}K8RAA=o(V~Fe15$V=GhI!AfoKTX=ekD<2Dfgess8Pg%t~ z6P>bMWPtEIf88N(+A%XHDTE)QBibG5ZVWR3Ax>Teywd=!3ruPI4X}AmLl#UQh>fRn zp36N?U|C16lC2iny6j3o>F}@EFCe;w2h1;Y>}YkPqbOQsmbC(bB8jQU&*EEo7odeS zOm9B~@if<+G!C8o2*nqsnlRqj)|r%eTRv0l$GE$B?PT|YHFs+tAb3?b>2*oGqM4C6 z-nrsxKu#?+#;KOLI1zf<5#*uZN9<Wy@-?g(K@F6R04;Nb`m;HTjOM)uzIwU91fP%Z zDLzpZ+fwr1S3;h(db3nT#9)$1=LGK{d4FHH>}X;DcJL>P`xW#T7SUX$_D%r&M>>r~ zY2bT38>0p)H!fh-2i!N-k<aS@zKzbZfJebiVcZ%@3R=oTec07f_EK^I?VAD4dMLN= z1KCD=`Xy(}HpqpfrX;kNwuoQ`*`jrw@{Hef*)G&O?qWQH_$>zJZU(j#PLHKmK?jFH zTdFxXIk6ctOmx##fnriZLbh4_#ymRE%cwx-i63u>4;0&U#___oaZ7+G=98~+I6RcM zbq|W@=;#Psn&rR4;RiX1CLIVQmJt=j6uF7%4hV2p>%c7(upZaS^?7ND<TrAgE<i8E z(rSS8bco1N1^)Ef3mj8!jU}_4MjW0Tt!?Z*=(F1xdT5|VuQXTXp;w*|tJMR7(X;Gz zbITkpn96x=o+67GOo|u=U?q#wR^UPV`sw+U=M*}pYS&z+^zvL?nkvUM0ga^YuJbx; zTdd~;pMk2JAzrc!y5q+tQ$Kt=@+RiodD_b|Hs6=5k78YB&5%dNoP+l4Cn1{JKv}5F z^{0Nj5LkJv{|SPw_1L=U(E6{#eYhAYFnQKCXY@5j<5~jg92pn#Uw#I5boSXJ*3SN? zYN%OA<(+`#|M3xT8#^h7&Ked?iZ;D)VVk8%qqr&Sk?X%6McxLOCHuJUW*j71YWfHq zuX1Sy6(<?Jb-R69|3KtJ`6i07{39cOi+8P$9j9mhxUVsj<{ns3g~{<|Kq`(}CF7ze zW9G?2G7tE0Te9wDSwHUc(7=aM5>n<uWkMp0oySJoh-c-6g@tkL(ZsQOz|gtV739=z zp<uV<v!uLXtfxoXjm!=2X8U=P*%j-c*@FRuaV77VJLC4U?6Q#ns^nk?tUOH)>^|S< zT2lA2o60qJ#qe-1b{|SYC>6oi=~2yV$wmsf<35*Jaf(o9#7V6dyJ-7<$`uOojs$ZL zZn1Wv$bKMl)p^yHZj~aV#bMljyfZGiF@DA0IGpD8JjI29jLM@QAqIlroQ!hhHy)$| z_)`|HqT!zQ!ti^*NvbxEeKyHco{gMDMn!96Pr6HEd{0nU@yn@TQ=ivzQpLBUE{yr8 zhllFYF2Zdeu|&N4t6k0n7`TC^C>#KM;c-m_+`@5V*CU{i0H1~*wa32@+dsR#b70Bf z10ao7-@M%D_duoai4M53F@d#{e<w3~SdyZH3;#<?0Z?*yi3c11>W<z|I*VGUkA3~x zuru2-Nc96awt3dAKWR2!Z^8HnO*Wrfwflp0>B~EDR@ax|?AI?&p7``Y39klr$=6w1 zKz0fH`Ue=qAq2y4dlZaG@QwdM6%gM_wE)OaWB?cr06dB3d1dVFQIqd;mRbEe-Dtwk zGqNyNZI02|*tm=^f-Y-6R9U~Jl#2UmuN0EIy?6Pullo01elP*Z#uzLfj>$r0*E?V7 ztmK}o+Gc@?b^-2|-i0i?Fm%|+{p{lX_hZ-R6hU8d!9E$TJGHMlzn5i{yXvu~QAozR z9Q!aAt`2rv2f4JLykJ&;6t+cTh_%CFAuIl?g;ln5xU}A7!*eWG#+tukter}0{D&~U ziC<Y@bLG89_Jtp8%>+&BtX24sIp1E`MV#(5s)PId#b13o>OIc|o71+{cx(E)&x&i7 zFg$h%S(98QvW#)<xahf2tsIVDt~LD@hh>nj)Ty40TVMd(4zp#=0n6pxY;^0PF`l)5 zHHMzGgCC0e?};7`sR>L7oGuD5x2=dD0H6m;lf8e7@aY1DKh{GCo&dv!!$?v73v_-h zGT0UhX8+NCIzVKlqT~8I<_WmIlg^MY>XDs)u5X8H0od5ft6QIAe=BZ2fzMu%D-Ab) z`yB%sx&K<Vvf^%zX{iIDUSsl}78wQ4RlJI)@*~mqeg}ifVfOd7mzmUxvzuXDeH~_{ zZ7ON$Y7<)r<@crsCOu}kMwi~HeRGV>wPr%ye*G-<?R|i!cpz0OhPf$+1ybMQ7FDi- z*{(95$CfW0uzn?(@Pvzqh}cf$fEA9-hxFkZQ|dDIN9(s4T|DV)#JC|GFA}0+PM9nf z_Y_$pkYT^}%WfxXlEmZ65wF=LaXN7+JUl$_r)O&YmlT?kl9F1**^7sYduh3^e`gIi z8`bu{$Q%o9KrZ-bJW>wS<V;mTbGF)}wl1Cbiy`)<gV*V=kx$3fBe3kXLXGOm%C#fW zi6)1F5>j_V1g9rwOA>fSc_86&q#&f3xS-&6pL5b79?lof2X~w_+UveMhgIz!rOQye zzR=+LyaVUtGUT6O`lk7<Uz+`m{K}^1lJ0?O^#monOyi+c6FRP>TfevswHKK<dfIxK z3@SXvG)8G%<hp%c0oxU`qYwr@d8Y6w<E&M*X-~4rjBo-c*svURDQ)Efje{|DYWcY2 zrjum^Cbt0#Y-FamIReg~#ee@j2>X6P_~7Z>b0En`SN6H<e@${{j6-C?u;YIwx%1~6 zKRy2w2W!D|xh3J<?6W&wtEs&4`PYezVy2L1Sf`&klTK}KuWJevXUw(n_HYlAC4cEx zG%U|(Ogdaz>m@5&t(pYEUKmY2p0|A%V_2jS%C#&fG~{U=j$tf)KqMKy&@~j+AV?;| z{i=$Y&V)mgBi_CS-B4LcwZZ$LhwazNakRAv0&qIv<L8D28JP0u<2?WyYuI>6(cb93 zHDE3#?GEeY{CFmTXFDxNFoXT+9k#>JiFTZTf5CuuOP@na=tkFYg+Uu-Kh+@Jie<FI zVa0)Ka{ln)Ng<=3omp<iXik;mlV&OzDYJF*ZnXN{d4tTk*`Ljb)Aw9cv$K_N3+*`g z`%IcdShN>Z!ojcQd1&ZUvRkEJ0vNsMDWVyLfY2C(bV5Yjh0L-b-S<m^@oFSWm77hZ zB^41@{CAUCC(kRy`wcwCrU_Wu_Wi)x(TbI8Fu$XN@V&axNoDD11+3z;rYvWc5~@>- z9}2U@LfBzJR*V^!0RRh3hWQid6alI{E1;3~^Ph~=^xe=o{2A-_(5KxOEf3n4|35tN z0Q3(R5}eh)!pi?&2KKX$!Y9H%7RROh>J?X7DjXqdq^*GcscX2Ke<#;QbVQ+mu1&$y zl8l3p4-{|;QWfx}yOQaoL?<KalfY0fBC$+#@TT>_`*6g=qk;{0fz4&+%S4B&Ej(97 z0@tKA$PhJ#LJhSQ_S0sZMr9zC1x`~AC5}``M9i8ubiDTzha-8R_p++aevabvF(4NL z#A!BemL0=zrF+Y-?-RLYJ|%^5wCI3TmPY1OGW|IVhMDnlMY-47cZV-O08w)dN!zwB zIcJ{^_W*eT(f|bG;{uHDgB=zYmK_0p4zv3(@Xd=*hdGeKH<`<12pjN&)~~QJ<f?t} zl53@FT{$<w-qto)rbX}zfn#x4)Z^~G;*dmwG)j`}0Odc2bhsycvbSO$WT*!lQ}X*2 z(0%tJ!6KBz{)R1hFMFIBFsIBxycvI?`L3$#u`$SOH90yF4l5IG!wly;2j+UlNsJk< zL5wCbHEZ4-6gPI5P5TdmDB-Er@kEgxa0gqMsN>RS-=B`CCx3OsFPog^;D4B$1kV7; zmok_dxa*Y<-kArUU1ht&uu~VY(=r(T8&Ee{hp1%+D}|$D<<)Tib>@YE+g<mG-of7} zsnjqrmPqvvC3Js-q&l016k)lBG_oVJg_D!o-IZhcZr_FH*-zdHZ>VVAT!pds59d)u zkx1#+dEWSF(;CvLEdte?T(X%|<W4xVu-}=PZmJm@#?V=2m)qOfO*G&rzG)Xu04&e0 z4h@^EH14TXEauh&fl?9jytQl}2xZKhnCZwRZ-WJEtBpqvb1s>+PxZ=v<XqpAoG7|? zcYJ!Qycg|RY<542!<8e*SzSF<=_#n-blh@_r&B;cAapZ;(-SZ`m}LX+!=gBnE!mkr zZ1x+RdX=gPHP^(FFBhaVWPcr`X`KbJ4T#me{|VGJ+zA(3eY&^5SBfdtyQ@D_yywzW z{2c7RxpFmae@FFLubc<#KD3f`7+|H|m+PO-W7bkFw9?47A8!4oE&1S}-@zW}{;K;5 zTH>(ja8-EgJAhfmmgyl;qwk5EfH<EGd@0izeGY`y?c<!RE8eQV(yyLLzg2SbVuGh- zB$lTz?uJQWilBJNSfRxz&4S6%T3CM#B@DfK4*uRQ$%Cl_chT;yR2nvFlhW<3VX`6E zaLNY7Dc+Rk``idG|7lJETkNyUcX$N%mpOL~fU~Xy`?kK|SNNGZd<Gt98q}(8B%mn> z=sp}l?nBirPO8R>A;$lHPxjM+y8%iOAOVDL0YB)6H1ldN{)h(qZ0>P4yq30S^UKKQ zN>-1M5-YbZq;Z<I0_gYAb=w)C`9#CNIa>Nc{8qW*kH@xzv94#_rhjW7FWm(+kSV=+ z9GuNKH^Rvs;t4;-l+SyUlatrTkiESZVRxUBFCIljuJ4rzu}!4OIQy40yPbXW5n*+L zWKi?XJ!0d8KE~);HS`o48MA5ahPEg*`pgUy1O!S}Mv=EDkA-dBEf<uOWNdfgTqq;n z=n|G8q5P#11SVXhLsBiQ&*^s#j{+hs$`75Loo%P-!}^Q9>OrgeE`a6DjOz5;u^EB6 zLa|*5KultR{d-^fql-vRY2kILnpqysD_55dgIKDLYV?6#3sTfDSY5&6SzYXLI*xA^ zXbPQLFbIQO)Z?M<W?cs?S(ByC)3dWXnCGj><$_>Mf@Nz^&_Wy*ew6+~;`+kJY;DID zUsl0aHJK~s9~Rq8eBbysRXuk$oyBdd>=kk~{jHv{w6`p>X(b<1tY<#5*EvDa$Vnl3 z^vWpiQZ6C{SkTAcHj55!?H{jm0K1~p*cy+_PPhZoZw})N!#7i$GzWhoOvCYpDPsG! zbBDHv5YQ2XE<X$M9su>^RB*p_JwVm?8NC9dwW|1geMGBM&qqH0qZh&h9%xQKrX{8@ zt?hYCc7N8fFWyDP*m5i0HD3KCBsso<MoGVb*|N~s_2c9YYb`jG2Fg1_>!f2<_kgXE zMd^Z@aI!N6MI`?{dyx9>tb?6va;=h_1TK2>NkF>y6)0)F@}%-S?UK_Ctc>dPGFBc0 zEk}D}=-#hoxLA3cdvr~ux@dXz&~$W$MY{|7^L3&3sl>%lDm&#rRWg}6SmJ$#A;02R z<JHzzJ%jPdNlAfd74Pg8Sn?zI=~+k(9HvL`{EYXst@2YO)Wqbm<k75*kk6@G4$|N@ zD;vtpgf+KW_V;}_UCgn7*1dW68!>KFgnw5;#u>;c%4&WB1pX6S7v+BVB}czH4!5zp zkA^`9rm8WJXV?~5&DWT{*H-ubLA8OfPQXmy`=D1P0Kjl>W1VHrw>`$1=ihFI9BRl( z5lLZOttY06{t0#Y26hs$5U7_}3P-;ed9V!+Xn}NAjQ;E&lgfS7)jIxQ^t(l=ym}b8 zU#u142#VGb#bwtXhn~%laYu`EO>az&hmwi1O-`3hDpz6tGWFa0a1;D56QGEA0v0?2 z+WQC}FDP!DT+fVc05mC`ieE1LUJ)J<7oFjNd_e{I|A_M62|WKJ;2=Vq`}5sm{j&D< znc2e^g&;B_(l%w37Vom~RGgv;gVJk7fIwBIuFB5M;6Z-<xn<M}$)>W(3RNrJFN-_J z()ndkZu|7KrA_6+0qe4zcdF=T{#_&%n_^^=LJ^LhHUpClnkKZ|mUFh@DWWhuF*2F@ zeoyoAob$)V4R-gT;nq&0rzUzSSHm~5KXQ;jmNY<dKM_ND^U-=y-{5kvnrp8=`)u`E zS-0=uFsRT~QXJ$m1xZoH@MW9;KYs|`Y|*EB!0=6@dVnxoaDyikO6+$`^<xdVfzoNn zwhU3_;)%{B(>WeR2O|vl26fnC$^N}rcl3-S8;rV>^mdc6J+T%6-OOdr()PaX0xa(P z^-6&Mt0o2A7+UC53~j@A*Hk2BRHV-MwiTbJTW}Zk(U#v?xQcV&+1AfKuo?K_4(pP; z&5R8qBXETVPrYYjYjh|UXLx(~qT}s{kOsVBH-M&&4)IaRoVrH{hH#CE!;8cMNIG^H zIvTF)EKZ46KqHMo(!|GFLEyz<_~{lr1pKo<O%w@C59M=h5GGjyurpl1ouLZfQJpe} zg18-E{EUgIThjpORaK47|5_%`(vJSMRy4~K`NRXxtbY~?R-geF(4;l}f9J>j6?X)D zv>i(??7k^@q<Sn$eH#YJkGdcAC?c^JFvc9KKmi2tdEPUlN;m!KAA78bBsKobWVtcQ z!uTYx6oWKCf$B4}rDeN`wTbk=yT(?p2bpAJjOgk_MMMk(L03Lw-mUKD4tKLQ!{PAS zz6^3i#JR@G${YFVQ0O(4MJ*ywaR!!Qj0msrHMcmdT}Ma9v|pxTBR+DNpAB@f5T@An z!`VHX!f*?S!4Zj*Dm@BjK#hHmJie{wIpoptV>3mDdCKbg!s^OOpx9jh(zY8F)H<zI zSXxMkW~fcg56R+5Sb*%RT%551LBY7xRerM`&I{C-h3F`XRWZ+Z){%nt4>x4CaZt*p z4IEuVtW}d;2%heo6n>89COUPqpu*<*Tenr~Ftml_c;3sLeNrkJ@mJ61z;8w%1VCfM zR)w2GZ;scnc0g_r4jJ(rtyNIIV$USU!qVo%RehhNA7s)y;+Iy%#NU^^@H{5n2mFD{ z{sfGF)f_f@j<nfx7T*<n66U)m&m!S|&Hys+>4)!wpG5g?R{3q#bQ&JY1CbeAUlIQt za9|SvGKy7z2P$fn&;Ji?_l9HeG&aPRWwY?NUTyzuuY@k@BL3$!U?2QX>TT;Q!@Zlb z5QR4%a%0c6@_v3}NDuB{Zn@@|#+BC3%+st!FHN}l^;asUCnmSK_}dLR)jEVrw=}qn z-#}9%>S7Ip3iATP_O#i3MGwV+;2l7Up`CY2dtQZ7Aem3Lwz!TpV^_g><0cbh$!$$K z4Q?8?iy8R1!1y|<#`tY3j)?hH*avbX{}#s(#~Ti?^GQl>oRX>knaIlC^X<tC>1WRm z+R+J-J2{_oV{zv1ww|`G*wwCqlE`dV6cZG^JnXRMK#A}%P+>>}86`ea+VOZsK&+xI z7auJ#^Y}Ms5PNa6JK%L*4cE3y6uo^?XGpgny%Ts58S7OGs;{9_30ZaKHehYx@X$4k zVcB=gNJ$5vW7`PyX=BA%eB!Z~`aq6NS0`6?8#v|bJp5gHZaYqddOj~}gNE5j{=y3> zsnTUht|@P^*^)wIz><H6NcFyRTE!RRm_FSm+~+@B{iT|v8j29^$7!I#$CF0!nx9M_ zdvxK4L3jv$8+E!Z*gj_L-QNf-k2A)8N6T@PaM!+K^An6ep$gyIbfSh0zUsCjvHY>c zIl%l#*VuEpI>xRE(D~Ya&i^kN%>w`;G6{jk{G;X%P@)Voi2=P9^}YN1^h*Pw3ynPE zzrOzK-H`q}CMnS4`j{3sfFohrCbUQp9_*otvb3@{RT6_8dDs|gu8E7Oe(svMgW`UQ z@y^-4%k(mCAS=DPuFhVqm#-2<Brc_7WDZT+3p&i4Zd*cGQcIbg1K&`<@+LLa<v?CW z@bB3H@@aE)LM+R{70y%$U58;hx2NCul-xJP6T2t$Fc(><BeLA#39F^Ry?eoK%7H8l z%q1>&tfReJA@lLs1(jPs+LhEr$J(W-f)8JwF+bj%eyZcc!mK%d@<g)>&ZEiM)~Vp3 zU=ieN?!9DA@0NwWH8nGH^)+bBH}UfV)l?)zy7uQRVzdR{t@mK(T{!i=XwT$#Wp15J z_;nUtZljU6&*yS)Y9A_v;3anVx>ib)oQ$K=HcMqwW{ise)-deNp}Wa`Sh7o<UkgKV zKvZB~=V?rwo^(qi!|}?<JoQ#p+(F!7?1?d-Xe=M|aZ2%Mt9j_CbDuyq@`pV`=|mcX zS?Pst0{-c%p1o+n(0j!-9n~fbC~Q6A)LJtvnSPFf!=pxKzl;?AaVKMjt_l0&KG|1@ z5PrN<=7#yv+)4l3m9gFDXLZGr4A=h`*5K1o&aRN>hQxnb>L>#+=YXpL6(Flk_xtnl ziR6FCeC8`1G;b109!Dt>TgYBsmcDod;dH!_EwMDkOAJY$E>zg&aY)rH4`+RWLWX)@ z`sh3Ocru85UAcz@I&I|K7*<YNDNdI-(O6c7u$m<ake;F%Rynb}B5}PjFLx_p|L`#8 z9{;`267%T}X(}H#w+=<65c#^Oy)*lTpH--fV>U{IN2DE0v@529tXI0j)Dx{=VGc-^ zF`OQnxh4g*_mR|9JRv$UH<e^$-+@(}#pHUhuUd09S8(w==5aZ>#Yaa~oNXMf9Mc@P zH37L!kQ=@0<eViEOo*0y_!{KIBlmDjWK7!Z5fCLi<}aYS)bILuS5j(?&o>=NH>cqq zT8}z{Ox{_}7mm3}ff{b#!F%1c!|7>JpYok2sguzFG@lMse!ks0tC-Yoyp^UO{2Gsq zkA$srRlPAwl?99Do;7v_SLXLEcxPtjTLwM67ViGFmKIK5mGn<+Zf22!6YH(HW6xrM zYqpLcRPOXej-5xa@W_9s7-JZdOHXgDAi<e^X^=Qy;eGo|#nTDFh5BPjaJ$J(HujB2 zmeVfvD@|8fPSK&ry2j1AtzWt(SErgz4~nOXPdAE<Ypw`ToqEvk%l(^Npg2=1zn6VV z_xGp>H74>=`9BQ=wZFV>sby<&K21uAh&l<U?2%D!QXUCwRvxO~PV$&8bY8FWntxF& z8n^{?cu|eBXHtaH;%(OK@(dk0PP(|TE^$^s>i-JB3Yn2HucvZ)q<}OseUprm(aE1l zQA7e(fC4#hklTzY*xq~=@JPmek9pdS(@<6CRhm`$3VM5Ge7et7jZ4u6zWgS8Bd1EW zvg#LYfn*-U_qCjlAHQuE+6;OH#;9RXQf?2B3;|$esJqNeJu_gMZ$JI@>(~7N)`&v~ z*>_)NI#v2m`{^uT(Dw5pIv|{Tp+@(mh3~e$_QLJ;M4px01oI{myAy*)Df5d2^LUNi z)|zK(WK()Y1`FrA@u;Y=kL>khbq?P5!?x|4w06lT`m+gx^SAvM6+%6e*FosX@3B_) z+|=nq6*{6V$=#QvNIu>jI+a>VedBv$S1Jl~RlB|&t5b4_?7&2jvYdCC6WR#_U}bnV zFzcU=Y;LP`0Vf;L_2$29*%W8Me;e;tiodUJ&3orhf6D#|JXFX#c4o1wcFA(>NN`j* zR0vUQR*X_S_jplZ3ut{+Q-7xvr&teJ^E~B^>$)~|Pt)AQz_{dX&RYbHnaFzH41@-; zqEX7zgbGpZ=<G<(y?B)B$QsTv%URCRs?>dWa$^pE+e{r4k@K0n_u#(WNO1d0Oqbn~ zE2qhEx7h05(fx@9M+IYZo8!p1nuZ433f0z2G{Y~X>90^rsVwAN(3~ien#CZr(wT4W zJ>1PJUp7i_bdyAYo;;PhvB1GX>@ZNk2-HTr)|Nq>7r4AD#(n~L>FJY!qTinq1}Kx` zo>nmj|AZ?PkQM2T-MYEe9VkEZ4cm&RXj}t*5eauypSq^Lgt&RAq*7(2UPYCOdx>wu z?Mfk*K%lKpeRBGVKl9S1Zyw{fdZ(Z69qeYfw;z=a@Mzei>?r^!@NrO-k9)`Fw?qCq z>D^@pKqD~j3<GQ)vwIBnREzr6BJ%?xH$Gsl1z=K13DxE=EwCtT4C*@zu7t&V`p&?N z3HwQn$A0GTOBQfsoz(`DUC?#@`#HjIoNpBSBV<1kqeU5IZQh&$otm1>KiDHJk70TZ zHjI;`dP5~O5pq8g8#&1ELt~bssX!|AkxsfT_a@5?=^0<=&LnC5bZ>Jfr`BB^NTa$q zTtV3yYzU;lwyuUPacXk7wlV*#o9agFNIXiP1+qvGF~pkQbSlu*TG_9$V}k_vY+XlJ z(ywL0T&+p%wvmyqIEFzn<{iiB4+gU+IraVMjyS9w^<bDBk%#ORQnCnk(TlRpF9(SO zI~2HX3U|aky5Gq9>goAl20x*`kItKFuI@7ho5lwOpwmVoH-Bw=c*b>V27k9y^H<Si z1!fXfaX8zy4fk@(+KBg($+toqciYPbqIg<fmdubO8~xZYuHuQVRnE;>jTO0Mu>~LH zPRJc2a$5F!dJ-S9wIb}<I40OCdg=1JpV<l?FUd*K0K8+_gl3qez(v@~2F1QDZKSyr zH0~@gIebN7&}^K!>1)9hq5*cg{p%U_j)Dg=cDV;S@k^QW?#CQ1ebUD{V>_yXQy<ba zMLBbA$KLKwT_QJ#m!@UDQE%-%lj$bHH?s=!=;5GaAy-kPS%5G+$sBVb3_ojTSXJ6T zFS&LO<tUZOGEd(sPO~K#X5lbD=y)k9otqn+R|GZ+QhF&HLWm_`DURY<j;K6;MjAi- zxspW+(n>dEAd5TqpP%LwV&2wRvN#aWd1_YRC!mdVK7^P2KYx9WOzgwC#~!(rS2iCL zaX$LzXOHW?mu9bOd7SSKb2070>Xf3=Osy?X*yww99vLOCk`G`umqqFJ*XklO)i8eF zk;06*<<!)Zm>|4U&Ycf$AM4EWaUU@)dK=J;>D+1S6sD5-6y<n@?IV*dQT#0=(d_N( z%WNK5Ox)7v&Lgj8(vfXbHfWJ>w#aW)?ru98P_$NG-_ROs2-FpU9jLHv&gy2za6b<m z<=k;o<4k`3;;4-VLG=v~!sY`y65R{b5!QFy?Uj52pzRM;SPq~er1ls6%gH85E-13f z%eyJ!Ue$@c;J!D{5-Ockv1&R(hrf34c<S@Lr|?(zIgM-)%mcrUBTn^y=#V@MEB>|7 zGs+R}p^kg`thMF)!#m6qwKF1Cr?{);PmBG&zQHiPUCk6Au^dWW^T%6|C)6y_`9Ff) z$+Y!KjaZJ-y#-PZ>LlKFYh4xd`zbKU6JHq%w5es~TKU6Y8o}R_g8D^rNI_3(4Ml(d z{^Ob*$({y*_yzej|M~5Avc6-?zWYB9gLD2F5$!_8<b!W?zyDQVa`T$>y*{%*b!(Ht zS68(Xe~1%bnj#70<}Qza@~-N&K#+b{Dy3-rWxHi#(u}*EJWq86{~y}EI;hIUYnRx< zrpusn0|Jr)qQs`zlys-0bVzKvrKBYU1f`MgZjcg5=}zhHx-Z9bexC2n-1~WF?&mn~ zj5FJR-u14vp7pF}tyQV~M3O~MUWkvLD>i4wI^qC}cwxM2D(W6hjm24G)N3nzzDdk& z1a>kj_OKSzpQw>zRMIrvWYIeZ2c>wsgR7l0bjucycVnB(XlJd8edjADO8gAgIAvNv zZbllkKVJ_SLVh~s(Z>o)^qhykw@)nB;ibgCnKiehJ{K;fy?HGpT#^zsNR{FDBO}1U zwsjt~MKOt5`V<|7UeNZde`R|;0s4l8F&tCIyZn}tdCnAMbyQSI1RwN57ZuAqcdAQA zraVFeP3{&$b=6=S#u1fza-~&CiqqSqk`5Hc`lxJhcic9yp-0FE<I-)V)r%xLN6O!) zHpvr~;KF(>pdFs<G`)FkbNVAWruNij9^Tl<mkOB-tr27D_ZK>sI`v}y<1`3pGI0oE zXWa+OlQ3`4-CzA61Zxg}s`|$Q-b#ScoXvZSb${E5O%Eykw45y>nEJ|nYUQz3U?kcE znb{~Vm(>@pNgUxUS?0IJX0)<Q=E83U3UNK&zxWtvOx#niypdf1^*RiHuFIlRPl+b$ zBXPkUJx{}^AmUq<#${yj9?mB~$r>SQBL^n0{LsH9n<}W+ObHG;#odz|TE*Sioo!%p zTd9OY7%J-ZDy^Nk);-iMtElVMhMRlqnE3;Pp0x8NV$MBXUvgXd{@E=EWS4rw9c?ak zU@x|477rN2O+-o}@fw2h-7Y~YbBKSi$vT_}_I)1ZT;Su&q%leB(~M2wkG9{IcqF`9 z*&~)Hjsxb&(F4NvuwOMQ7bY&B@yq&4aPY-BZrTHt^J0lVgqmS}<hs<Qj*6FrnMmd> z)co4rGamG)yx|B9A(u8aL)lw`(Vb`G`356t11a3FRG4pQp@qVLFPyy?)#Cn<EU76s z75SQWIY#Iku)IG-5i=0MIwP9senqgqo(WG7L-t};x+|i7nWPyPar(Y7)$d<q<9`D0 zj>Nrc_}hSYHf#im@0wxtc&Q?lQ&YA><4{4A7f!s1&C^>_WuK$X=Ys2-ytQsQ)>NIx zmh3+GTLv{+dw2~|I+de}%9NvmWP(0Ka%}te7h{5CU>|T@s7!==jD+{EO`h+Q6x&pA zTItZLcMVVRK7Y_Yrs8|t>&$<WBQ?xGljv6N6V)7cB1FyGZd{Hv35k{Z;3P!yQB(?= ze{cdXFh@T-IjNiwn4};uvOn@$x<55X*=l2H39HDF9RFB8f{r-RI2>ng_Lo&V*Az=? zjk#mBcX~GyB&hkq5#PV8qi5#-SWc{SIO`7IrGT`uLN();Lqd+Cibd0|FXS}+tES2? zQEP~-{GD3Z15UXmDN<!?8@5g&E<+mq1p=JJZ(Gls1-22l^B?@!JyG_Q@O_Tbt(>Wx zi{91AsRR8W(*>NI*5+?o26nqyarX({E4Pv8H$|-omG$m?j=4?vu9`OGK$5zkjfO)Y z7;=;g#*2VgT=yH4bUrHd(+5Iegw+w2+iV5e{?8((`9Vmyvs*(;i6Na;p7kx;(=nn) zEIgX?bC-^S!Th7&4YZPtQXjXb`U8i^<o&&xeRqFb&>OTWhj6<a_;&Vc%7^PNogw1$ zq=Rf}-Us~UrGNQqvXnP<y^_}3W9t8W4L;}igbmpNE=*SwY9V`<Rd~^b7O~;V=wuJ1 zv=sBO=O~W8Airy09`FrWUsailpb8Q8t}tuIW#1<+<$}m0!7!;FQq#3d!xG?`peC<N zveRML2C8#mg>2vZM-OtRkHwW9at2=xWpc^t$mK?o-mj_*j5VfWT;d7&;*BXu<VP@| zIvn|hYQwM&x6awwxsMx=u6(O3h;&Q#5cg`kC{B%}+$1*NwPrP^b{DMN$-&HDJkl?r z=DUC^-E+PVu6djgm_veoYCJQkE7x;=(kQvSAgVPKPZBMUClCjg;>_Z>LKF2YTcEk} zGeo;YEg?#7#@n?cHRkw0aLC)5C07o<AlLw-kyu%!qWE|QEPEZXckS^!6AUVPw!!$) z*>R4q6jzsR$erz{8hhj1OShH6_iwCn?@z6gs<Ld&v2Y^_<gArNrt}*y6wx(b(k33g z=B;brbdKN}SQBM4xuS8C1$mKDoFs^lj32Up@%Qw<@vAIeGjivCSu&QSS;6G^(OhL4 z`69%3GgR(;>a_dan6~pb)T>V1PhhC71n?k--X#9EAWXj$04;KH^kd?Gr$iBuEy17K z`0~!i*W9JS_1uV!y6aM6N+r^DiC^kxYFTL~ABu5s_zyPnY(&GRnG|9r+7wQs@ZDO- zhCkV&P2dwi)L{vaarLRRCXaT_f=8X2zE3fo(P-4==T6qR14k1&ge7Ym3h~Ng_7gGy zfprHpzVi8lUK)0C`zNCIkP;Dj@yldU7?jb5sX#<Ka5`*zQuHvr(9pJ~5vIdMT_1Im zXT82dn~`|<0kq$6Pz;XnOwk^_DWI;GO&7Q4!e69n7I{zp#F$L5bU)d?52uL!{%+S| zM;0Vb#b53MLX5*OHC{rnjaub6?nWwok8IleM0n~|>2{n9oh-@H8L^s?Kt4A8dEp$Z zh4|a5?megGdl$qgTKan^acyoR6bz@_AGM(z#>&NC5dvDdGtL&ATF$>o?co-sOBT_! zq}nVHkHOrM#}UyII@jhgiO9e0ha7TDHe<hRMaXRH5gJQsu=i>f)|o<8<U=ofs;lSa zQQeqag@_(#S3alUUj=!2B87KjG=0YO7u5Xaem?7WRwgUdX8JpK5+YUCbPN9mn=fev z@n&<G+g$$+<v>7hc1L?RJKV}g2Od9(1$qr(`E2F{^PzQQxp9+;?`IUA>tsw3HA2CI z_l1ik{Ji<e<0;vB8&+dRLT+J5xes)x)D3(QBKj%iHCym~3m-f|rR_aG`BGNqNQxZU zJoc<ohM2E?v7sSxEB7_IF1WWMFP`?J?)w4$mg-?M5;U^lEy5iA4x^;k*i<gWW_y(3 z0;NFti6Z%ll`@Q&`kCl-%zdUH8ZxrWp`5df_gIoHorWl0oaP>AV}&FhGudc+E%IIn zU;)5qL#mCBHJc&8>LISa#SgunE#A>da(VuRL&y4PBK}Pyiol^B3O;)|e~Hvoai3~T zCzx6%0t#%8Cu<9o%SRrOWN1x11zmr!El5<3vk|7Yg~5}l2!A2;Q&&$URRmVQIXg@> zZ8B>;hCW7E?wvccW#-$Yi+pq~KPc*z+*|L;@@8|Gh4L%S{v5U|q2>u`-}olY_dX!I zTKODuUEqJG(vMggplb)vQwLz(uexegewFycx`JWcwljwt$gir}l>{U+9QCEX(ntBz zoki?JqRWQf18~VgGGuRQf2m0F7d-mwNhj@1eP!fgZ}m4MViQGp#;Nf;dN=0+Ud>x! ztj_xT^GIOz8FbT3=oH1f5vo&HaF83GJ50PvncJXmR^xnLQ<!EW-7%PcKPjQ1dh2O$ zLy6df`&?oq!VEp0!n8(4Nk}-|`1pL$ja16Q1075mrg7`I%_Z`W@2}LX*+{X(H;swE zfMrZ6b@Q=A2-vG+E@j~9P&H5olM!T?mt#cFQ?;e{MS}Rld|#y52#)ugl$jKR@JC8? zj&Q&;^bD%`61RTZGdUN=YguaO8u7}Z0GgwqZp~wx88U8Fh{(?cM=bq3DRbQZ$xriD zq;^)#U(Ug3T~TY1v6W_qICyXP{$L9>(sLtwOh~g^P|s`Du0D9`%j~{=?yeHAl#w@? z0z?SCxgq)am%(#>y|S15l~!V&N4)pTujkKSB_gwBHF#xPU03oC&?VUFHrLEx>$jHp z3mBuaeNLTt58q-64>d^#pdS#duN^%3?3Q!JNKz@fudRb$8+e&_o2Cp!j*QuUqp`*` z;Nc6pDPIt<_h4wHAo|gWq3A#N2m=cFPl80mPapsQ)f=S#zUaRIRWc4z^?u(Ud8xbJ zo)LAu6;aZ+q$%_6kEX<ot<PkU+_N*g>lvAa_xPnsf+rT#p(V}=!wX}D=d_7GL$|m; z5L0u3q`svyQ_54z5+c#+76_sZ63@Ld_(1McAF}sM*`IYe)P&~7JL?InDC9#B(I7zk z5aJPUt3JLjQ#a9qjvGB_@;cp&wne1A!y7GV@7#UXl0K%JkjPcOn4g6T_9H1N$z%>c z*q`$hsdV2eYFgY`4{sLx2yAgtzP`!0e1Xh@=3johVG4|anojj((|<0OHh1HnfETi? zxSQsfV+0pI(Xp0(f{Zsy8>K!Fv^UQaX3+2K<VAHu(?W62Dr5;8pILy!vh8IyYx5Y1 zep5C_nHGK`X~Yd%FH$!#fnrx^N198(G>$Hu8o?i)LT@rgUCD2&ZP4m6js3bcFLu!` z+#5Hdh0zaL)m(+lHnUUGx{QH$(*serE`#*g)vp&Z92$WmhmH4O;o5$m-9yS7yZJ?b z_a5MUyeNMLh}lg41Q5TP4f%ZXV3E9C3Nn?_sn|qMXFX&71zc2WR>-=exq!=1hl``| zj&N?!e@6u5k~E&Aig(lFd`a859G7wwAPL@!q-`O-qN)>lUC|1eeTwK=*-)%q*!9&! zRca-=(n11>@kO>0LvROW4XO;UP(md^h9M+DL@-6nO=$Wpg4HE<yH(KM_>E);{|?nC z0DB4ToXyN6UHgisJt}FYoVoZts+hwxy+A?y*wm5{PxR1p&SvAMJuWi*jJ`7IHfe3d zh70ZmT+NP_TfCo43E97JxJRnzM;pD>bC8}0ZW<wIs@=sH{3O`kiGWM<Fi-p48~l)| z74FV9Nc6Z>nm{;|t(`j`jFSSJ=xj#XGpm?XeCmhuMV!xuGZ7#2p0Tk8Dy8VluO5*t zlCvV!;vOXw3G(u$;42=l`Fi%p2dPFRSAF|vpZX0VeLoH~+46U|AbCut%xx>td=Vp~ zv`_a+#v-RU;VBy<Aw^>5kFza!p5LxS{$N3*)P2GxTmn-a811FLf)~8R^W^iq;`*n+ zyvu?{K#iIDM6NLG4jL83`?UYF3jp}%Tkt#z&!5mZ7>5azK9ggIEUoeORuASkfx7HD zWJmKeKjF#iA!}%CgX+4JM^U=HjhbfP_3k6h&+Lg#-IM7o8n8-bzaoa+xOL1(E2>3d z-3}&@DnR&<Akp@2fse#SYw`L*GfUC)$tAOu@KyJT?jgCd#6R_WL|K^zYycLq6-$!U z5_o%6f0sJt^^;)nZ-XKl-$Ww;<BQsivEN(==Tz0y#3o-&R8PFO;>V6uZcy97*gD|} z%JvYi+;*foF!!&RqK((}=5&v8{Mc#7$s?FCJgc`HmRV=NU&rgK7GIa`>(UHKN+<6y zkYxOEqmRe0^ugm@&K@)v;sox2jYzop`mA_!i<LtC?Tf|m-Gxxex3*Rxb(zyDzBp!j z>e@0rvAyw-LS)FQ!j=nhD_4q)_jSv2QV#<=yTK7M54*{0JMzn&WvetD%c%q((ii%O zerf{(a51Pz(mZLzn@-(9`l?j?ZX0ZhUl!)mcqRWH8sy`l*w#Y}X+x!r+kpBke_H9^ zSi8%a8h@5EWB)K`g6#SmHG_BSX<J1mt;`p#t;?97r55I0<sB?~&y#~|!j!>io@{vJ z9DEsiNeLeE7^pP-l7$YmrQ;91$_v-WW-ifMxMfKhT5us6KwXtPhg%|cZ_D#V^;8BQ zjR(mP54yjZ3~pBTjJ0Ypb9`@UMTK$rgb~N{_XyUETn7>SU-$Pt4a#MUzj_MgeDwql z0tZR7ihIu~;(0EK>-3yoi^21s<;lqjcE3h<tefEKlzXMscPfG&PNmn(94w=zN^a3D zoMw1}ChR3eaHf-ZgN@iA|Jdw>mqzAArQ}*fr(tP+@NpD-%(w)>j~2vBY(xrV;(@IB zyb&4xN@u5INkpwI9MILpdjv94yX_uh9l8?MF%c(^G`$5rE2Rah<Mc2En`EV}=EPv@ zNG9Hgh(}E2cqmWwaWRbGNBrwG6-D<lYd2$$ZEB8lF|M=UjW1E>$Z3L^t7!@M!OJI3 z7;?(5B{OsU3b7^MRv~$~GE=G*qS96@K4>C0JxO%T?@3(@xMPptf5aZ$csKt^HZ6^Q zA_kArte`o!)T-R&G`>E6``$T_prB1b7Dexn=yP$-BCnM8uoKk)4xI_bNGtjAl!s8) zUSjgKaI8waihMnNBMy4CjIBV>yd_iup9i8!N~2rU33;)*vy-R>3`Neqgy7TtAUaIQ z(vW`?^c{C0lrczT6xbclO?@RaMZwpoP<0*Wmw-`1vH8`lYk1v3vwkP?{xM<KtaVpk z_J-p4`l-tnUB)C#vC4~q62q>4z&aj-Yy!UH!vj59X?`bL`0~lRpx?^dGvSL2(2Rs7 zMer)jq-c!9SNUdpt8yzBwl(VU^7X|{00xr@LTmFz`1L4Vv*BFXME(Rf3YRxthB0Z< zeCWuIYF<J2k%|Ytpl&8yHkVb6_C9vc9Z=64dVbMaK6U$vti6V0+LD8B689c86y^S> z8@_B(QJag@B|=fXvTgrLVUq3GDOYzP>qip}OVOIStgTZ^)cHt!;ZJ3(--T_25ap;a zY&e?d75J53AS;QVHj}3giWTMSV08_NH9?*x3KVf%yD;AQEuiK26RgYjM}F&<_GETy z#4N~djTx^|aU;QKlUcTER`I;*OY4HZ&t9E-H!Dk(wA0un+IXmiXY88}$T2nEY}Sr& zxXn8CCG9Coq04gJP17eM2c4G4eptER)PkESUhyL1Q1an<J>F7OC0VfOH_$7$hnc!+ zL^=dhRQWUt#MA=*jw8lR24bF1LYIg*9H3P7tX5jjiII*!&Ewb+2QTW%37W@-Z&{Zw zpJzJ|c__B(dsVhtbLK`{RkQAop13BG&Iu@wR5*rZ^V#p0L_*@+7O_V&*1jZN1M3b% z9Y&brSx;id9dG?EG&u0o@H`zY@n%yl*^2c&JZ3C;fl6lM)hEQs2i<3pOYA>C6&~2@ zZURM>;l|Q_^~ynJXtah@lEa0@F><fX(StRMEewDW#4->-G5?f0iTEtNY2j)MZC<^d z{X;+Z%1Igg0H*cjc|7Olb?rE!8it+63m^17+$q#v-CT=8D3^yOTH&)7*aknV%X=q} z=U<eazy#BR505kOLiQ@@lec22uez)E)qXR#f=I(uf_R=Uv};uVE=|}#;<vA1|0dxf zcO?7>asIz^Zr~jW&*aB}r@Nd3G<J7K%g^G>Mt-KrxqHSElIYNMQHX(G7Qj~qJN@Wn zc}b5qb|qva)*K#<ilV72kRrVZf0P7@Xtx3nl}RB5&c9o>2lq$*pyCl3db?b&XZF*c zR#pk<NYJs9I)-i72!H-`Bc5vc>F}}NW`ME{tyj?)>&(mkj8>cJ9O;w7o;qa7kw{w) z#Hy1yPhq}M$8iK)cc}WFL%=4hR-~wS#-O50U8Cs<)@50Fc}8fhkru(3vy+oCQyoo% zwH(2Bg3^qG+n$5ysD9Kj=jhYd{VmrLNsHP+0R5bah>Z1QNj#llV%th%Zv1^x)lR~N zc0F8ZbX3*I@%huJi)15;EgQ>4o(l#P8A?Y|k2h>Yvn;)1=XiptB3j$iRy|6$DzV#B z7Z6ZGvcqmz9lHNC{xE%*C_Z_MJ^?>wpcJy7?9oMf%K?5!waS-WEV6i~S7qd~0iE*& zd1E5@dTC&r3DT2`<07va_v^Ez2#U(_54YjeS08K)b|`;CresFINOCG~N=kp(HaiT# zTD|m-SbLiezDsn;T|T<jcnm8IuR^McDOuTdt8QHv9=ut)EnzlG?u%2DYsC07KSt!u zJXyagW^EP+qotZ!IwOFm`LN$Z!;02>u;MMcc*ZOS@BJoO#9c#_<^VvVPEdwH&|-=D zmLQ_X(53!8(+m%ryr8fp2Rpm{&ysUovho1onz8exXV5wxy>dUHJq@qGOBsnV*-(cY zk8G-BbDO^Nv|~cEB7Oab6+fLaXv{FZIxl$i#UAp|r5$>7f!#Z}yR~fABS}5XE<;u< zY0e)-fFd!<HNr|na187=F)<q(R**lfGpD>?pNF<h6gz*Z1S$2xzp>l!H<sO~uVmGY zini(ZAbhNkdQX2qNV?B(1eN;gu*!O!fMQa!Ura+sBQEsOn2aKS`=JKbJD%52s^%na zwUlvs@HOnLvr#|NhYZ1PVE6po5^QwbO`~^fps@#vZt?X|X}MP=YVg8V3{~^q4!>0k z%kXH&rmM`x0%i5hJWu|{u#9cP7Yix(ya_1Fwkt>cMd!p~k7bJXtIg-TYIHz$1q}KJ zy_p->A7xj7QGykp90LVr$95&(t%Gc(@(J^HWu}7Cu<fVujM-xJ5L{dZ%64G&#*&gx zC4D4`0!RGykhRmw>aZijPghh7u`?m!?;bb|B;Av^<yr-CQ9%Xrm>=M(!tD6-R7>gP z3GM=^k}_4nN0C*hOpXuILOY_jc2<qvywMWdiNl+J^hk-(#=^HIWH7Rk>W<@2P{}VW zOawV>CF!t=YVqxV%163d-F~}eiAmqKTeW>HP-Xz!z=<7+mQ!S0rG7B`XvEQitk?$j zG!Psi3Qv`qik12iv?d3=ekXN+1#GJ*IOzaV`+{7W_wM{j3+P=7!kQ=_A_6jK+B)LC zqkKzv*2r8#-K&j_Q&b3EMDOHANY;-|Sw(33q07UOrh=gxeGa}2{~O<%&}_8gZ>h~f z)b(U+rJu$=bZ|BK8@3^5QZ_puNBeGK6hbFuWnJCVM~8j1aZq$8j*U3+Zp7roY2QRq zUnyvQ4BqpQy1x)Hq*aai+dm_l^MQs=>H{<Dz`xkud2Re=S=)!d=^$H1fQ5KzMKl`v zn+;x-);~&lxXP~J|0u@wdiqw#-v(AO9%bU;g(r|WlJV1jGEnnN;>FH!ov~zqE@Xe! zv$8PGKu)#jo{S=^*xC8XX^iDeNIPyBkRGGvsZ41UcngP~&h~$q9~b>{TG%s&dq|Zn zV)Qao5$8doMMdrM!M%yuiCAV?6&o(C(oYN<(uoG1>qGY*EVP--MUrE$<4LYQV$lW$ zT|F;NV;0^dUDMOe6SmAp#D!mvvr^55R9nm4nxVA>X)Q9OLWann+CtJg<sYY&)|7{V zY>d4!;!HV+Vh67kM-dT{w6qSkZRT(x)7i?)x*EE1z45G4+DhB>3Y1|qVq{aOsO3=n z+ZN(21&W|^A3^zzFwdTwud8ty<lD#!0<lu&Gx&55$PZsW9?v!?c|D%CE4WjI{5=2X zuD@%_*b7ofs}_0n_k02T_dgpfWaWyO2;Zl%W{n%ci;AGQc?z3bynE&vsK)#^B8;t@ zn=XvNq3@y!0Mq_Kvu)YrkGKVL0<p8e(7lD6PKbJEd_DePx$b+ZTpH`^P;JXWdfW$x z6O}z3{Ad9xX)~MMUj>DWtX$|?weY{Ylid&6CpVkK4Wfw(a)IVS;BJ<}1GCf9oD6fg z<>`t3;SM%k-vVRpYp8K6soHi`EL@YFX$jGPHbRyc1Gvy~i?JpsHaq=~ne&XoucwQ~ zjm{cM>8jTz6&WfsRktN;2I8(%wKjfyALzG4a<>%<IK5ZZuBglJd4<&SNKT;{0Uvho z@nvsDd^$GF1Zbuv{*3P1>9S_A5eWPgzDxO0uaWaP9(i(!b<#T=c5-AaHZ}w~kf58$ zH`K%MuXb96@a+xu-BALBaoR=pn&L|Pc|l()o~H>DHiD=d!H57tYXx6D%|Ur)hu{+! zyoc8CUAu<-eYF5TVrKeStY)TRA!`D_-xJy{4lkJ%4b7aoir|r#hwCPQ=S;=$Zhm^a zmHx%k{mN}JsX(`S{psq%Uu5fdcEoAQKjMBgCgP~;VRm)Q{m?Mcv#j?{T(q^La{g7_ zqj(SC@vLSX@Osvkh)N^1Vb>%qh|y_`+o`hVv>dLk_Hno297)_a+9t_%@if-nE3|n+ zZxGgVQl#?Oc`9rX|5V4JXQHbnWo95NNNYOf2U2Rj<*Pun^A1G~Yd}lVZdHUnVEv$% z%3dNJL)`y#(-ej|H#PP2GA!fL;f0m|ZkuMhhg?^IN*!ZU9$|`&v`_>Y1Q?|}vS4aK zRq>CYa}*T%nx}ZRw~xG<gDeWq7&e?!RaG7FbGAsluB;TBfRt77TG3>88rnTrV0~?V zX@tLE^|1gvXI>$502Syog}s%y3~a*?hf8qq<DW<~wi;?2k#z07j>pJjx|mAHr5AOj zzn{^P{;}oJaR8=G3=qm9l8bRnORy(+na@|_d!v7BhDo|Mog&~zsG+KYrlYloMByH# zUBc5$)s^}mDg}H#7mUTn>6)@dAW@O;N)$aisSVit7Md~w%x4GUBtN%!_W|gBg(~_} zL{NCi{_clB*ffBoN8cM`LGyP9g$gO%i<9&s`sr`P%4Q1uW^Ec_n(udX<#~SxM?>~- zh|#-8H~YEXB~+IcGW=L+9Jh!mSTd9S*0}WyDwxPBWui|`UCf$ukk=C;j$bIGzBT*k zVIR(3QYbC~jfoDd-6@FGBG1`cufPHO6`=vQ=o^S14HenJUR(R2q@Q094uD5<f0%PT z{vuNP_LGM?!~GEZrSqhr*Of-kW4L>FSM6(AJ!|aG)6SH6=4NNPTcOdTQE>8z&ORq> zE!Os_!V|l$D)H|s?2nKIDL1hn#J2J4;;~*-zo^Dtx@J5RJ|cU9yHMgakNt`ynW{BV znCj5wvwHN_N%+FNlbg)JMP_KsqlFeCWNgatsmixJ*x&VW1R`gqw!;B(2Xy>p-KI9N zeD^f3xE^<?mKH*cmQ*Xk;Vj(ZjlPA70$)Bnzw{$#YhHT1z3uP86Y4lVW7+*wZ)SK? zwhi-f3j*VPOmayUx4vdPJ`K=4Io)Qv`&vhY`~0a^W-r|5l6T8%FLiCU9GTMns>t2U z)E}xnZY4>;IR~8BL-76r#gM|;f1&VX?kGG4YwLHv@?AY1;dT0g%aqp+>pyn$F1u5b zI9(Py{mZ(ncS@4St<cwKLA$^<GjNk#dZFZ48?`&fQVf^u&j7Id<wWgdGk?rD2GJRS zO>!UdGP0j2eTsT-)gfMYFX^Z*?cfTd$xCR+Voh46oHY3)MAW9M758%#2nUb&-s0in zVw%fG<B!|yW*wH`ecb(m9M2IW*NhJUIAG{=l8z4cp9t^`S;d`a%`Zqe@9UGLkrWAf zyBucqO>_P&7-toCfy!J&SWicX%MoBq#l!W0vcNvmJi}q+0kxNVD=@r<j3ZA`j*J2p z^p_xOA-ir#ck)u05T5K`Lm#r_3Ip31xx}7ERi_TTK=Jd@a7qfa#<&DE;x3jzb8Lh! z1FYUK-9jD2wDqY$*se&DJR9s|D11UKk8CC7ik|vWyGy5b6=x!seCepnMNJtfo;#+) zwa??({gIt;wz6>?*&d(F&Sprx7ha4{*GhpnL=_51tU%aJza;@c$KyGGHJ(a*$NIbD zL4W6Ed~%oHJ!t>wi`WVPKlyG$GaC6XI3fhVk+@iED&!@8-2%dQ{#%F2#1)12ou}wN zpROu7GHe}*i9jkv3<AMkD|LQIEo`Y)d4kgfkQ1PaF5TDG^RF@+i(I1mhVu|GQ$8?_ zLykc#X}9Orn2Lj#6o-XJLVyl>1u>zCbssgT=D(4Tx8$}6?=|8u+dw9|%sFoHR8b}` zQa*imH7&<-D%}q8>2&xcu4FyeXcd0CvSJ*A9q!n#8T9r&78==Q(r~*gQ>&q#f-`t+ zinr!Q;HOY5tbJwj2NUCIC;j9r@c{Q^oIxCUdDLPdMGu~OeNlUNCua{4sg;nZl?KK= zRAtYIPJ`0Y<UxA0Co<)pONHO)+Wg97-%8w8B0r)0TJ|lxSxAnO9m%bS3GKm{T_2kN z%&Hm2>N>^+<ZTG{z~s>VbMq1}AD_ofbH`uNkBJ^EjFF?kIEC<T9vAeAo(TY})+N@N zwcq}Jzc77OpiS5x!dWHqS4^~JL3?*IxTh^V|MEWqEgnFf1@Gj>V){oP0JzSZJIx|M zc0X<nrPQcWUGLfvmrn8eLRXi>Soe&RSv%9|{p+E0;aBp$r^~06o`H%}n^K<AN(Fh> zAeX}hfm?u-uQ^kPaU_CMzrktC=O;`VJUN+=oCYKcRG+3j)uqCiTDF0;MwUi_1$vRF zNF05NF()PqXxKT3f_~r~k{<@fHp1p827GG`b?R#BB|Rmio}XAyk#aC>ZEkLw+_Gp_ zQ?fs(F4=L}VnvzJ_oC8E!_J8S{=+pZn&Q@BK$`OLrE5Baq^#C$;jXLl@Pty}E1nZ) zCj_MEqpHfvZ_n}2_8tQ#0kT*>kv+-&A|Ryy=BdR-*i(Nk4L7bD=oe(HA?eT_9!t;7 za<2gjws{0O(&B3mHlmwX*S%(!Z!|ZRhBxn_C|k{$^;{fcF>F#k(Y9bqK$m+MoQoNe z{Z{a`gc-N%YA#KO_T|84n8yLkeUK({e%NB|(6vqUY(E_HPe?HRqlmX6diMV^=c)|Q z6iz1bPWoGadgoe!cWN8}#t4Z}wKU`f*TDkjsukk5W=11ze;%IR6AOClhgMI96;5$~ zl_KBnj4b0TKw+@ir$OhrTbK6mlapwD6c$K3g*l12TAwSHdN6YJYod4FjBPr`jPpNc z6zO`~9Dc!<|FS?;i_*-{tM!5;s4vV!WNeD<;Ath^Q2DWw)}^z64af$Tj=N1!X?^81 zbdQ5u6b}9g2!68!a2Gs0oA4H>S{^yHe)6`j`NFWx?s7%TI@E$FO;8ZR|46uN4gjLL zyOFaBQkl`O2-MIhJU~{T;aL4~*xCq&Pt7jj^@*58j!<*^TT$mlFjHB*6$jty;N0NN z__L<bkH!}uTP(8;{V&Pb)wSmiI!>d<gas$4x>!AXupkL`YIjN0Ze`a%AkV}|4CM)E z)MQBRF}A06Zeod@?O(6~kF));-`PSCDF%>Gc$V_jaQ|IN5mI}TEd86j`add2nY=je zI`2U3`|&u-$mW^KyIoR7a)Gmzo85fDR0W3plK8jAb{$o>zE=)(pn)~2TVb9+cdP|c zYHrZHG9xWU;!mt#m(lL=oJZjzBdEeW8%9G@6#}@W6m*ZL3~MwCdPYwQu}6Qx6f^B$ z-+crHH5nV@LyT!U+_=^o(`k5$ncV|3-fW%np-&?D;RA!>Wg0ZCdiC&<RInb48NR#9 zrbdinO`5Q~WWaW@w%3AT>HD4R3c1?v^QdU|uaPa~2OiFcawE`#_u-m?A_N->NQh1A ztm8OW6U|HOq5Bd<)%vPzfnEbAFkrr%?*vOuSdfG7Vw&&bmK2xAAcj^J-gGFV!+osz z^vnp)ZD#M{LN243K$^0rD)I7GN2=2xp+)5%R=5LD?bwjSQrFYkl>!nY`lYXWza=Yx zWHj&&gxjuY{;i2<#%=C<^~bfX*8mH5Zq>i4f2jJw>)kZTh<qIkVBjUAH84FT{W?-w zHUPnBMLeAfH|0%D^7>_D5<ArclF~yykO`ANjRz?{wbYA`+zd0Y>_E7OdJFqIN6X!< zo?Ew*=egTIjP2MNLUS`R9x0hL5i>eGBX-QqyTZgCmje%U8x4U60t>t}=RVJ>`p->H zatJ>M9Ae_fMhg0sRoO0cfm@?Gek!)2`Y7ia%;?3Uzy(T%JD`);(>Dr$!<ObN08-KM zKuRcHL^6kP*QxGZe#Er~n;*`F{Z&4yGHJ!fX3|pVNtyiPX(+ZW=J?Wl&gP;$J-vL9 z6C~BDceEf2eV>bA^@WMCs-?48lkmEuBSJ)0m&NI1mAaik!^23XF~4Zd{ghq^93$}0 zEdZb`s*->4e=z|4;H+p-%<|iN=1G5HEsAMwdRd^+lg>IHr{B)pO`96BhbU=Mj~@bW zr@JDrH}-srh2+$XD!L|>X#mm>>cjmO1+rP03q)HR&LJ6{01Atbk%|!)RIzTx#vR}b z3A{t97Ln=iU%<E9rZzBH+O-jWG@uvPZvVrK3$dQ%++BC&Fzy@^86j;j2X7_2!X~g_ z4E-vyADDA~2liSYqE)I2$!bYgUvEe=sQ;h`#y~-pNf*SGXcFZ8^zt#xTjJJ-ZO6`y zGt9HYvPqdix@v5&7NyT#e@aPdBHNEanDHA;gQw;(Ckg2ih1(8=%-g_nXaZ)0VM{Lc zEn(eGPAc^}(EIJ(+kEDL`}L)?=5Zmm`rsR35!9-jD^K-(xQ?%dEYE5jyoWyY#kl!) zqFx%>?kgzoA)xf4C<^{Fmf-Opu>=}K_#BM0OFu$#BhCBYJU8R0mtB=Lxhnl4YyjZh z0bi{vp{i<rmIu=PPk)?m^NQMatwsVbA7_EczFO8-V&hqc9&GLKu_{bl>e+^O?L@{& z`banWG;Ns|>}*Gp18?jaBUCTb4m_b-Bw>8XKQTSc)>%V_;O!9zher4wVo#z-o;d?D zYSz}vYoE{Uj!ko>aUx{d46mo&P;U77yMCiVBtQOUQpQMUf#eRM5wfDFl1pV7_>v?L zu!7X$y%1iBiQ;Sj%1R8CNOaZb7&g@|Fku8IeWZF-)d@lg<WX6M4q>PG29!_1s)l2- zdUh+!)ffXRm#ZeDrvxTrV7?f4C5N%y1pPW!Q~N`H*M<deCLrB9dj3hyMR*qcM~$b1 zPEhc0<6?tse2R_L#}daR%+xt^$yZv#X?bKyB`N6d$Q}?<v8M^zpZ;9NsLo)e=lC$@ z{oxQ=8DXd|QK8w8ih{FFmiF98k3MKVheXsOs5>X-V>lx<&3dEy6G<^zOGsj!j<rsw zFWv@nqI~!<oX@%qp?h<_w7&jHiMr(%gY&k;xk?<!7O(S8f)GMHs~)$N@3mP4FXMq* zM|zsT%^B7Q3jA8N;hqQ%!TDEH(4UuzCDhK=R#NGsajzknowYD)HB|ZXTKt1fS^HY( za<o$wOMv}LR~8+Xhoe6nGnHAScu3z{j1?xffKjd5&{F-N-%o!&C8RV+jn<D@*niRI zgZff`KI6qZT^q)ZO39$Hw&weo8Lf_Amp1im06`ZduAZ^&@<NVG0WC$$9}s0U0N4e7 zb!PFKprrKa2888MjTCK?zY91_yk;zeKMC`3vGRcWYMO<cs8MBXWcF>y?)HsGi)tRd zW9*_<-;FyIZ8n{{UMo{)5CoS!HsRQ9(KkH`BO6B?ba!@Eqih#J#|dl`N2*HO<;>h@ zb9%7IyWuZtJ%V%GWyFyPA?J_t)*hX+u{PlnYslEN2zp(0bk0eoNzncDL-~#kEMToL zWbc8`a*z)~US6IF@Azu{35BICxi8r3^2EvyotjUv8z4XRo1EUb<Zil+;Mw19Y?St_ z<2{8IxIQ{`tU2DU&wBGLv*J;txK2i<9~S3pJw6sp#=W4ayy^OjWlTL4_s`)j2Y$U% z(c*Q~CGa!lpuIR~N*n?j`E{{2OOlfyMY}g9DU$?Q<SWlEua`3VN3KfD#{`Q}4<i<j zmuiQaD)pOHC^O_p23ynw8fMS>Doh3B%6ay&<<<j%CIGVZe<P6jOB4f?3bsF`zyA*T z&B=Ea_#0%~!+(W*`ClPFwf^%YW9t|rnQYKbQQIZ~ni${Wj||<1rnrK)Z(lcNGpzgh zvMLS~%y0h4*mrpd+sjn!hE#}%o>;i@io!>Bc``E&4nEdxG7hhW4ZQQf0r@7nrbdQ7 zQl-sj*ubi&VW&ix@*A%&Ew$g;Ce3~+q4UsD?4$K;z1i{!Dz&?8NM`Al<*rmkWp?l$ z3r$y1{*w<vn4U5A&<`L>58SsdwIYCO0$CTGS5~7*BQ{w8EiLhlq>|X#bx3DX@G*wf ze&Ey#a2Aubm-LI2FYWlAHE=Tx#n41@iam?yYk(l|bfmblv~31QFATC$T?UrVwJ+Hn zhO`hQsGCSM)3uKkfQ!cB=Y6LzYv+$w=bb)*z1Wh{-9>=X?EQa7+V{Eq$rlfh_Uw4T zRXu}_33BSRit1?=J2!_kdRO-ZrL%zTDcmNi6Jd_P@lep2DD?ti$)jUG2lb+{u;g%v zLr`bVnq7#jKfoVFX*cS7CQ8xKHk3ck>y>6SxK!q5CB}x`VuO&PU(zrLxF`3?SZP37 zMf@dvz!BH1=CvNOHAhp5VvhVjr(KhU7z00%g^JOBLPn)i*lLcG`V5FGqz|U7d@!5T zHgKHQolfRLdS`}>;05s#dXD&dO4>dl{);*q+9$n3_R6T-Pb7_6h>}m|LOmIwJn1&$ zJ~V{M-t8Wwtgt}TH`y51sM~X9*VA<E&O67@?VF2sy!a3BhUe8PfVY2JeGCjSK+$Pg zeigI72JG0F0P@aMEOF`=h0YTXvQ<j>lL>|&k7O8H`>Rx{kIire@%fhRgH{8CTe?Po zY*-$S7X0(@Nn|a1ELS&wQeWaJ?tBCj=@Q{i4y_i8nvusFrOL9p=;7<*+$X@g6zaPP zMQxc@2kusn^g%X2Tmzgh!QJ&o!n+wQ(8~Hq*@_BCF!O?R@}7M&B_p#P8srwEem==U znvxH0QrqeJ?ka7c^unqtBYNy6ong9Qb^iu?{-CmbWiCdro?+iXE^hSUa?g(k#vb+l zw=NZE7m#o=KA~66&SQ|a^oVgoRA4Xi!rG4)(>n@)e?l2^ujA9fP0&Z4QvW7GDeg$l zwvSrB2pJywyQVz+rBhO!<UhZ%l>!hQloqSQ{5K!o{O(RYo(6_4q0FzEh$G~V;<`kE zB0Q~Q=Bd1Ch{!p1`7n$ON3f{*AhsiSno+zPo;3E+;n$qT&*I~!s&>1=8@U}25ZYJr z)L1@n+C#Fd5@ja<NE|#z2u4^Sf3nI?*<6V@)L8)b+FulVs*bq6O#9&KSyg3bS~6vu z#6w}mvm$dT7ws#?_H<@?1t%46uhl%a(l^<k`NUon6o#A<LL9zT)YUE?I6!dMrQCDr zKZFX^9K2Rs%w3|rqIi=>pf#;akT|JF*=9(IMt39$yfZy^B2R<rnluKyyKxEiKLG~+ z55>4~rbGt9QiE)+cq^wU>>)mn6==YjN?v5KZ^fQ&W-?1d<mTk^I((cq<A;cMpwT-+ zEPFek&Pdz0V;r9w;|Ka>T-5H3>e0GYhNAlt6g70x>+iD~QB`W^V#30(-n=v9jqAt| zJy;rXX);C?JHvRyl5p{=#=ViUpWjP*s`OL$sg<m1L^sV?A!FWq$p(t5o5-1@utK09 zU0E+umSyCt47I~2FOudHsLC1+g<o68?&wTb)haSOWokgDBTqMNS|tIV|7^JjBR#qY z)Lzh(dU%GhH5t|8**OTbG*RNb8+z~2`UHTI#qM(Yw$T6gWWrniS-pUOz*|41f9)Qy zjjNrikv>L}Cc&*iH^$OqF;;Fb5cjxjV#@>AV6au9E|YoOTv9nSaCVT^v&&oed}6vw z%B6^!<ywz1HnNl4qkYS*Xp9RPITDOx=i=yi?0HbHBx(Y1d2HAa)r`?4kI(YafDR)E zoEmRZM?2W%t6l4$aPL;^&~sY!@|S+Bv?|el?L*@IH)L&dYtE9kEzD6FYP3$Nq6Fk0 zPhmg@Z0*KI?m%l>WU9MB=vX(kYw?R(VZ&>HGxh{B;l;!{Zs&IM<0IB16;e6Ea>R3f zU~X**&ErAmeGD|7Fre7o*SrHs|1Cbcqr3;=lYjRMeV!8lAMqOCoxjHinm^wS=PCF* zzZNOc?4<JsZ93Ii8R;Z}aL~ww9r?(imHM7r=%o9ok#!1V_BEEGa8f_qP=)@Opbnr$ zHL9wTHE=Ca=gwXC(H9*1@V@sED~yK}zw6sLd9|R?TS$l~oIVyXI#8O8$PMQB>%<mp zRnA|Em(dEv7RAR6F`jkOJ`8*JaZhj3s(0ITqtr1Q$kMeT`;UDhwSciF(HQdJ98eSP z@K}NxBW=(gSGQFq$n0P;IWSIil1Z(R_wfg5#9&s}K3AM;pSH$!_5k{af^Rz!2#$34 z8kz-+5jzQE7RW|l=Z8P<{0M3rYr1hfEbFB3x`IHVPn$l2y-X6LdH*F4H1!4E@6*9| z(`di2XEr|Y7C$R(cK@D|NtOemW4~$Ln|}>q%)k2e7QG1BJ-sx+M=^t;;{Kg(5EU9U za^L5(BBPGNLQ?$E6;uyJUP{bxe0YZ!Do1_)5hvEoc~TYE^M=QO6o_`^(-Rgt+9-Ji zzK1_7;a$rQo>KiFDQ%cZA%Ks+5OipIvlfn5035}XebLyt6zi1D?Div(a=mH7+&ry8 z>y(}Hvwj!sW{EC(H@|9G3()<@%KF=IIYj#QY(HMekx-iUplfN+-00npTu}JZ5x%AJ zLb1px^T!seP2>0)MbJ^+m~W|jx6NqaaY~l21!&osROx3`f_X*a^OUXqdqkeoPCT+Q z>S}8Q`oPC$CHg<($TS3kt+legtoPBy#{=Gnwwnjlw&?G5ZNBLCg@JaRT*ZYucc~Pg zk-R9{DW9TWv|o~|ywKI-(~a+$c4T;XsAx07DO+zbRPpH1Bb5#8q?Pc?2)u>VCR%vM zK55vKuAZJ!$Rhj9srM^Ch)q|olN;=l#FwfVbd-D34Q^wwF==UOIy`dUiry8DW9uqj zUm=i`>WXJPUeUGZTreunxYLv(;!ToXAxxEE0kt;=JU8rw%~CB(k`|`L{BZ+zx*NKu zbDgg+c4BjE?3z!}QAnRoeKkpg7))1x&H8epiRUY28xCFD5+RAqTj#o&tcI5pg(bD7 zk#|l_49MgDC!AV>ZoraTw)6!^2a-agLYDR{dfuZkCUi)mKu{~-XJVFLmDaW1NFG_Y zsTLgr>0){RF1H@sods>(J-d#+LrPV7?pf)x4YN(x5i4vKHDDUS(n-Reu`a$>1uciP zu{3%;dx6#eo;z?kQa0_yvU5-`5M(Jo@a78o>*?t|8{$Pl@kZMSIw@bvZ8>}dI=5@L zn6d^$UM{N^Zl!g0MTomXXn-nB+T~vGPL#g{+wOif=jTRKU`XieC9)<eFl*=QaF$%@ zMmt9?74mFT<0w(|>@RKFi;vWN;{dGazIx3>YJt0C_ikbd3t2w-U^&38uPgoyFphc! z$CCS#?-X;^f#SmVUv1ub1i;712Eh49|FjE%g$<FvM*oEs%RM^Wz!A8wHDJJKl_fMF zG86&_*G8sC<zq*=P6n@CFP|1}#nvf)&%LT2i$HiLeB>lO*_VPh*U;Dq-aQ8J@)LI* z;*a$pP6UCnL`4P<zE@43JI!*HRiD?S717Fma+a2g*)uH3@fQ(lGd47ABOSgIF0AS! zn@vdGvp-&4&B~>ZzM^VHMe@o0QTF4fROWbWffkm_&h3fAp0FD@P;LqXnTWD2d(53~ zf(*mKp(N|(VFyLCU|=KW+`vgELQt!dmeeE#afMqiXr>hRGzUx(DWQuWZS+-Rx-T3c zt{`no>qvxf#U~H@D%!GImwsfOEvXw(`MCTAgIxYU!ysTnxOqyAiBJhhLo}tDZw2!* z*QXelCeap|LFQf6E&8_RNEID=PrG;T2BD2j8#0C6JKcX+opLg0WsGeHOANQ_c;M&` z_x|u16SecoVfqYLie?hfsKbv{r{+;Db&)_V6nu$-Q@`<0<@-snoR~9PuDJo9DEz$) zo#7C$qAa{yvLj?~9Ca#u`2Gn6U2D?G&`B8wU-XQ^K$d6hltSWhVWo|iH?po)Sju}Y zJkMgN{zMt1b?L$z4Is_lc2*#D@2xvbl6nyuEtKCF6TiDnCIP;nP7Cw@kvA2xhi%2D z+KWqg-ws$Fk)n@qPA0hr^AGgrEf6(N0_n|ecl{-1D~B{?2JbO`rN{&cQ%Aj*x=h4O zslkmFeL)#jO&4lWdj`Sa0m`)eyIB#qAhy`hMfvzUrCT6hKkPonAy}ZQPnY$j3fi&W zpO!v3y+_&URvvLI2H!gLV4uzS=KS^o8FVq8rbYlvN*%kx7NxU!@n$R8FCM0R^>%8D z0oz^&iKm;iBA^8A|1^EMW#L3|=IVs@P0_zo5I1P)F~EnQp16?Gz&Gyo0DpXX7u>Xm zi(g{ewj$8+nJs+sHD)_o{$$uUii50zt<^t&!O)5`H1GCrQpn{F(Cj{(Klue{zH=f@ zmmB;BJc$3tZ3M5#2{JS;rSLo(t=bDHUN)mw!+fidte-r5>U;Xh+wDyA<xPRC@0^B> z)QOW)2xGg*m$#H&?-x&k=qfieBo`tx;zyAVx};mh-$8qJBWf{uCPu7neIKKp<5SlY zU`!H3Ki;sKBJd-Y-!*#=XcQu6VtRGaB>3p=&7%CIIiD#|IXLGex|y91$g1?J03qt8 zD#~wR9|ziw(5!Q%8Y%nhxj`rg+Z|3!iQi#st<8JC2V`a!#LF{+l$5#3J(#e4IGetH zDKZ~+9zhcgqO^V-^_3~~Qsew68*0UU9W3YG%J-mU6uIckCa>u{sVVAiQ{^*1i9Mo1 z73f7el(ES3I4=<7L@IK(xtj9!qUhEf0)K)5Y}lhueXrKAp|YBbafZ3_HH_q-Th4Q+ z-eA6)K#q^9$feJs(eN@AxRSH%b+hKREJAS+N%U#x_ITk|(I1+O)AXMnKCmJnff;Dy zm#y>_{A$-EKSio`>G&7e`oB#ehwL3%J+i)D01e1dp$YH29S`F)hYiE3#qh6MTYY7e z>OIu)>t%6Irw@~Pt%&f`a3<SEzQ~bZ&K5t>JFz&ZmZ)b`mrLU$#wzjUm=%%N)zswh zJ%Eft*Bu4@fq_%sBLhgN$ao+ar{xWC=FEm<!4SJ2QOfyb%9eTQt$r{af9VBGUJPDU zN%K9*00iH3%)_w(xg3T5+5{kvU#~MJJe_W~hdA6wWVHm7kq}P)?8|AMgc-ptTC)8t z)Q7<oOzUjy3o-%DrXG(d9qdPVO($C@TwjaAyEalUr`Jwq>h8`=9Mq0A?A$m5_h-DA z?k-WddwK3*4Xw@{rko~Zr_O7ihdbAcY#d+AQ`=u(IJ&Iy&bjCncFw0&HEdfQT#Pm8 zdY%P(!Cz0bnLKW#5D%RDcWdlhA^<Ej2-Z&i)~7x28H5t2<b7QG{-3IyC*`iC{|t`_ z_D^XKwDhU|Y3cW8KCd1$#PvSH{#>WcA`OVD73*cO13@@c<lQw1SqkKFARB^qkp)jA zC##~mB0_%6Dxg}{qm(StIh1?CPHKMuoC(0AjrxLpH&sm%Y+sK3GNDK{?^Fz4PEXgh zH;lhPRq4#jKT-SRy^W^^?G<ky6=pDP5unN&8S#u*E@SrLiQqmlPlQUPXB}KxOPl|= z8Ai~&IJ{25v>g?LUxM&3<y)FDf@%nhk<e!8+GrklYIYhoah<WEVG<-{fg=zpye_i6 z%)b{o?@SX-?&W~>9^YS9^ITE;=4JT#Wz$t}lVy0o-3^GiI_KTQQ;O@K5`FqC$whNl ztIv{*i*)Kt@aNgR*NXrbS@~d^!an7)ZK1~mJu!ru01#!YY5pE-<g>>8FeJNcKZ>hQ zl2KllQ*$hHhx~Jfaks$sN0XHD{n^vTQ}s?tv9r%6EB{56`@eCdrb*2|DX{uaX6=9P z-grp@_)vC1hq~VHxR-!+H@po{SpY@z{5c}8JTg8XNEAE_51_;ve7HUwIUj`r?Nj`_ zqRMP_@XTXAHt)3jPS+x_Xf4TdsT{Wxy62WzxK;QpQ*#5X*hZzhs|M_fIqw?^@aDU~ zj}7Fan%%YwmL;FteI{{^`L43E@*N@CXHtUY1GC^2iQM5=y`OXdCB;W71uZ;sE8f1+ zve{^xYc&;al^}}y6M%3kD|oM^Sb9nm71NAX7~@*#VIXaD#3)zFL03nou*oM8jwP<# z+w|V#02hE{>7OvXfB7B;k>O3_w{ur~3&mjecyaP7k(v+1K*)No=v~O(?TO8;iKx?) z(7CI5oSRSQ6Y-5lv@wu~4|l=p;BMFYL2Qw`n7~0)M8fXeQP#6=oa+Ic52v@+bGOW1 zfQ!7Iy=|Af^1lLBv?mK%-mX4tVrV*&Zh{oSJD9#X<1RE^{3z<_2RyJBSnd_kTh=eY zwCg%nw|sXkXl1{X;#n{0F$JKSq3u}t<xRhyCPDzreDe4W$uF9FE$%N9GJ|(`{y~o3 zG<QNXqq1Vf-%L20^Did6zd=&nClFV#mJ^~CGz7FJBQYc1YeSMncCb<W7{lbCb{CYd zChyEfzK=S+cyi*LQ!*xpSp<B>V<UU21dPYd55c>U>q<-lF3Ys9G-~H#<V9mTJv`Pg zc)je(<sy?K+FwDOvWM3{U=i|YZa2PRfQ;MN*hrU6aBgD&bJ_N1-!th?yM>TRw-5r< zdzgUiBf6+-r3DP#TTN6CMqX8(^om2VZi*-8tH$&yDL+Vi4nqe<O-leVb2*J-G5aUP zvG^9FGc$pbg(n;<0w0r`ImO`GekpD{HJ7oMcS~^J6n3BjRZ!|xcWM`~7*(univqZs z&^<I1?Ghm*W#iJT_3e^A)m_o^Sk3DPq-qYh#o>-(N7jkm^NI5I?)ch4JAoXy@;rdm zT}bz8@exT2`PkPv;Q9iWoDqCeYmSlCV_kaX?zRg^4%wxXclOojn`AE_7zRF!|1a5y z8}OuIx^Kt7<V?vHf9cM~*s6bbD8gxgl^Axit?0jls5cGxFH&<i$mA9636=gOUHfa; zUIOKWuxpj%FzzDNg=`sRcf-_rcO2bYufyI4-R9I+`a<?+U+4k@X{;ZlUv}?CF4S4E z=k6a%Ntoj<XnEi@rl;=G%hM0()*Q?TJ;*}F*E^D;9FdEom>yM_^&>&S5%ixMA7_JV zXlO*KKQS5iNd+LqC|xVfJ#u8S#r<l@%TyB&i^Q$e{z_x5DaX56MXqx%ww5`%HVOP| zdTe094lqdr%+ucnBcT516JXF^Db>?GyT%aDg1(+8J9-|jcEk^9n_A-fAd_fxra@X{ z8cch-vJA=sy33>JxtlOO2|zJ62ZXI|Ahuy0&d@{8yD!(uTpL)L&O)1B3p9CN*IohF z(c)a7XZ^!+P^*-U{SW=_;*r7;Z_fS~ZEpco<r=jO(~WFEL_lDJgn|OnDybkLB`Gb9 zv~;&12vX8gQX*_nx*L&3Qo2K_O>g?UH;U){|9tbE^Uj>tarWr29iQjES6=H{Yas`n zZ!3p^a^u(gQwMTfk_7Ua^>=9(eh%httvl6e*6x)Qv;_(u>$&u}O&SPMX>B~2RQeZS zJraawqqE8W172MNgD<KL5(CJ76LtZ|$)^IzaWXP8$T*l4)UhmN_kVPSB#s<)jEJrt zv|>`u^x*aJ;?kf&6|=I{M_E1%D;xJrTD5cOjzvv`4)rdQJZAZ%OZ2gP{YhFS<5QZO zo2mhU%Aq;KYp>xYHTj@&{3w!ED}wlE0j809R8s^!&6~ZJl?J0XTQtvGR3BmSz1j$W z(9qcyG+qLf4QFHfIZJI8-9!IC0l_Zc(&uJ{Zois^JGxyBZXoZ=?c~IBXvpxaiR9E$ zdo2nrhW&7%&p<Tj$8^B9g3b7Qq6fb0S6(xvQJ!2vr@BH;zLBk!f_-JY^?=wW80T!S ztWFzAK<sYv0?Ok+i*xF>GFaeQ5-*`G47Qd{o^{uPfKA8X)Qw=9KfrU2&+}pJ#!+pL zrzM6PLlfZqYzr#R>+V+$$8R&0x-GPmx%4Ma+It<$RRd(~nub=)-|2y)$k{-N9K*lH z<=N!_q6aojcmG8Xe1nW7cyL+8{)#2uK!3#&Q1($ZRwzjD#G;Zqq*K{THE#P{3k6d< zaty_UUwwmA(n-nR$DQ=G9;j3tcne=$3mA9*$o7&t)SmVR?;Qb%EpA^UapwwAIhcP$ zMM3kLp8B*Fr{D)zx0ki5Qu(lL4l+eoZ*mbhw>3YvLFbaWD(2mQ9xwC7hU!D<+~j*$ zglkBKAy^$K=8XSd%e3P#G;1}#EF;dmO-D-USS390hSyu)RF91MD#6O??CTM6nq!<F zEGffxq(!iK-{lF0iJ%L%UCaU~v}9)UTfu&#dBlKCpdrdB@J4q>s<SA(z8HsJ+}{gK z{A2>$h6y$Qz~wjQ6F+}`bO)p14=-It+-7ik*Z+j$1FrAUYu)47G$YU-b5|G3Pjvf$ zycUjm02WXh4aLi4FW99Vy>kaEN6Bwt-#s<)+A~>*kf5Q^Xk8`{M?9f__cvl6NgOk< zZQB_=mcMPA3tGA8|1i=<MIED!xDhI5_v%}?G2H<p3GVe{QJiM(*M(~9rqa%jOSymb zm%H#xU<b<*1b(fBY+t3Q99e#T(#+6g@XfU(UD4sp(>6OjvJP(uvWgwmf=*W^MJPdk zJh+k&kT12(d~;d_Oc9~ydt+{MpHONX$z^_jYO2ZFs9CYiaO=%BRn&38n)0Z)TP~z- zaFnm&EY)Gua~j{Fg=#!XQjwvi653|}RDU!4(i?ttH=1I>Y_G|0#B_1c#&ls`N<zD9 z?6+=^lFfdry~V(B8%>UQX6k5izn!n{K(;6`ynnM8|ME4W0*^KGt|M^HFSo#k$Faqe zW#Muf&%L4)vP34YgDoSMv!f~D%I_yG1R}sOP14H?9b||UpMk}$_Ybl`BzZJ7N0^_D zTpMTifdF7jI22%z$zNLX|6^V9k73xL2mhN2<4YGA<h)O|@k4a9HODcA22GzUC!{y~ z91H1Z{B&jZCz=2&Y(o+)5TmYqk=(1-ve{{XrMy?ZhUW5&r6nD5#>DmJxgx0`_%v1! z@p~g^s?@w5*=K`0+mlvfK?RU$7*5!ssCOWTAS>}CXHE_Q@ExH9DT56}(fVG~4+~gN zFubV0K2w_gwoa3xIb!B<{VL83nO8ZZpsu>^eU|zo9*Wu?+MCNupHpeCycWOSoE{pn z2f8y}+~T4*71#^@u~DQXhCpsi-2%(a+g9Nc!iP^pAKY&T6ZWbPx~zFOyr!`|>#NU( z%4&_0gMElnoM(fMTCwtdteu;vG5}9O^g+t;JTs9yJzmDX*FmgT1ail{@r1Se995Us z)cGz2fm6iX78tI-zXcX*)NMt^R*Ow;zHy2(+B*saU17?I|IYx{YGlhBxr<fo`Sna| z0a_sQzpS1=@lUa?vRNU*fl^#U0xJ?z{y3ok<C_RKHi^ctHpkGbDIbeDw^7plLr$Z6 ztlMT$_19S%CCEKy@hdajtcmw)AU2)*l}-CmuxDXvml@gt78m(V3{fJ1Mk4#}mgu#@ zc>v=*6G1K4LqY8;ql4bB_|D)~TxYrO!Vvh-*4j+pOFe3aucRwioClEnG_`Y7B4(%V zNSz{Xl}``NI~8QaxHEOpdWclt&f#hAGaJkpGk<(zTz+2SOfU>H2fqB;@fkizE?vD} zs{q!$cdfkqVMnW%iD~rjDULjW);@HVIA~X^wbfM(%s2&qP!s|iYQ7@#po9%!xDV0S z%*U~vN79+})~@}DoiF_D4s?%ObYFE~l9`sjm1c~>I#UwfRoViZ5c;<Ul;qpoCbwy% zG8NJ2XwS2x=kTl7c9ABliS=q67><kLXZ^=(1ASSP13~k6qBj`;3BYgu4h$Qv<o}VH zRAyP`a*UakVD#yNq;xyn2-(o|Bwp>k<KxWb;Pzh4GRm#-v$gnQc*7p2)cVZ=e|oDZ zf{i^>>2ju**Kc~(_0`1Qs#W_ozX{tr*+IN4mxy7<G(0HO<-A9c<61{{4IVG}ros9g zdqoxn2x&;F`=iP%ZTYc8z&NrlPcW%O@)&z{OIf(I4ek&<^+ZEf5>903>>kj3_O$PM zTZlY8ZrC1b*iMEe){9hXjvJ_}pmbxTr`PZ`_Xs!d>99Kc)n&krqH7v6bhgpsJXW_p z8QDkyO4KmF54coqW0QNlb~Fg&0vVU}iY0<Lu$i=J@!DpnwfjS4LK)u!?L^Lx=i9oE z0alZpZZB?coJ?-;tb7k!&K5p-egJYA`G!NAnsHD;*B9u%yWzQCg*gUBSI)av2Qqjm z02dFT@Ra+@RWoo9A?yC4Nn^hTRPpnj*Zr*=-`)Si4zOWC*8R!4nx+3B2;ude=TqaV z$xPQ+Gn`+22q#lVHWNVG7q?xau7zSef7L6=9e4x(x#N%&+_4V8t78mKUpHE`G%I1r z{@gdm=f<Y|H@+KgYRG@GVhB$UVQn0nx6D9$Sc_3GIH<xEj<S)&_6+2iLGY^(J#mB! zV-7eoL9zs2u`{d3Q8V`iEsIV~Xb4AINl}kcV?mX=0g4lGdO%7dAf}8&c(E8d=Yp`Z z&@LfbFWDnKwcWM3aEBM}t$>#^kBzMyrNVz5;~jk?`Vum9JwT4^|2n#I_4Gdef)Tr0 z{4qesDqX_1C#xoR*(zMNv*KItQgzII7j1BWpKN&5t(IBy4_EKPtfO@iFLlG!s%OcJ zU5>YrTYt8Yo%8R`Uc4j2!`z-&(b>P}a?qh`HMy}*1o%WB;9P$t_0V6~I{Vf*+j-_# zUjgMflxVX1+&?aL@hu;vhd^<1p0lXF{mbVVOP}}Y!ceSr0ZFA;s{7<iUVSKrCF|D* zzNNmmCVPsCRV)ggyB_UL#7Oz~SeAxVd-fQ-eL_srxbuKuwsv`=vQKr>15AvNykgB0 zn8Hsf?=nAYKo^CT(rMaQofS%(EpjVB?9!WXYC75cyu3K>les(-osI|ofz6;78YeA0 zqyI;7=VO1`SkMs2u$}H@AcCE20l|AIQx#IR-hb?Nf7<9%5;k@<|4AEWcKnIU$0N@| z#FIVRKK}N(Fk#QPEnS@9!zmtn>f5KJDG2`xN5a#qOWwj~+rqKP+-^~d8ga?@2#G%; zokc)5E<c;l>1G)I`VVz=nhxD^n+AqvBoI@->U8;dac^yG%ZJFlK5vZ8+m5C5q@=*3 z%iVu&1;7KD@vEFiHDCx^7@qK7IRgMH$&uj`eb3r2p?-&do*I(h?@IbJs*Rrqguf{X zS^DCC8M0?t$f~d2Bpw`0OFWiIoFBLDWb%19{Y41}YLl&)b0h`dzG6UE?ZksAQ1&g- z`b<~$CE`o?S1==pF-Gx);QO2K1iUbpj4D1eZS}fu;nJr%8Hk#gfE!`OFIfA=E`{rC zx9!H>mRyX~CH-==QaDAu;Gn?J>P7(dmVASXnVpuphIH!>{dF}o?v>CB_^UE(k9qj? zhKVh@5Us{J>3Uxd@ww!OuIt;7YJgSSnMhP7Oo3Je+QT&r2+%5C%mt_)kCvDR3Spuy zg=&^r#WQC-)3sp}Sk9s0&#FbVu(uE9sx9<oK0Z>#*1wOHAo@YLeVQH&a@C&?{0qwf zcp*J#gOHo9P(PPbpKZ{o6&A2$P*4&3=Udq?0TS8Yr<lil0gIsEb^@#f%+l6Govc;# zPq9pVHw;Tlp=+tufKiGP(HHkDaYgEI#tSHuyu&V1%)jlFoYS$mmIZP!mZp77r<5s1 zFyp}gI?eU^Km!^sT~;TDgM`aYf#Qg7l@F8ma}c$*Bkb(Qr<gtvuSj2R#KeTQk3~?i zUPjpch&j=tfW5$Lp{L#+cP;79mOVucZ-XprhUUm|bl=4O>`Rga)x%D4w}<nXv;fg< zVBe-e;aWf4+}~!L28Hihu{UK7!SL3(mdw9|!5bqBIfv2yz;^976!h*K3c7n~UFhPS zy_=9c_@{oK?)^C!hG_^A3gWQFbOz;!NxD#nFS&Z8^>mH;g;MYc$!45QIZ{2k+NB~( zfRV1^uUFJg=XX~~`R<#OxQj6&M9NbZb%w<dqI##Piv(=W3>B-<3$HyZcAhHezn=8F zBDiBGIX_}Cl<^aQ2c%Ew)laxDCz4nlq5n*3GnA8ke{#csV9R?o)bS>$xUcGfzCue| zg~ILSd)-?C^G^2>s1F1dBa}lusb06p$<_&WSlTD-hl08)Oyb|vRsRR9(2D~|3w3(* z(dcM+ax$6NKjPUNG+amEYOC+PP#c3K53o>=OqjN9%RfInG}hDz&9@&FRMJi)*w~$s zFQ$K5tFtDZJ90MZ&JPbGTTW-GEdWD>B7@;=A!-jm5v*+bJ93=X=g)N0iPD)NHlc4V z2{`x(F~PiFjOG`sugPZUwo|_7AGzcxbE04VL<Bjab1?|VRy<N~Cb&``MbNvq+}iL= z0RS*}iBdOcnx(2L?C-mt{M-v;j~!#Q3X^MYx5@-oB5auO-^~ep`>zIPBTH4XM`oCE z8M}qy^%=O|=dE#i;=<n~f#I_x+zd~%gU3{>Z?Bgcf$3j`PMQycHdHMF!(XF`l1B=7 zmg#<;b^mLGmRD*DQ{B`SwnxC+mFJ`3t$ciZUHYu7tR$h2LTx-W`dTAWt-yw>IiVE! znAq6RUa#KT`v-PzR^p9<qnJn7xHN0NqO@{rOGU<bY@v^u1js<$v;5SX2us9!P*k4# z6S~qU%rmq`C_<t6x+AnbZ{Kgs?h3H2b0vU%_HVkUM*dy*lsPaM)>ZEUVd-Id9|z6$ z0mIM+G%QCwtNrxpS%!1=>#-6uiLH^+dEP`MGA&I*Um%%1C?6;+>0V~Jx>?zr-RSna z$HE+xi5Fu{XARrdp1o?o3~!}lrx!hHe2M>vzI050umJM@8y^S%d(c2bK125~Wf84{ zcFmWWR>U)KJ_#V!TL;f43#0}obo}aX#&*ODdE22R8>7fgzr;APYGvdH1Iq|Fh_|@| zD!a#+*><pFoQtP+u-}*O@^54BJjI{gMWD+tm3V3OxC6^T8+QNSoDwoDNMpbIH)g9H z6EMKtg!Ns2pqOy)hsdC;kc3{`Igs}|#m6DjSw2U?NUq2f%Lk?XjLriTH#fQ-sqM9E z-vq-MzN_B!tYU8-&Yd{YXN#FAz#tch)Y@yGEtChOw4mFr3>hg&+-;O30*bAm@9DId zDJR`a<O-;s(NXpxe*XNKLwYDNc1?b$9*S8^B<98N&V(~wDbZfI(km*i)d2_nUOo0Z z4hR~ipMi~My>daN;mISVl*Zn^eU^GYIF-k&uiOo*u*WZ5V#~*khps7s3J{IC5NHB2 zu010>6C^rUs`h^~kp^jU18e91R%Pjo2cG9H9}3^ang?KdFClwYU(;7Vr20vqVy<BO z5<)OSw#7@5qLlMCLOTKx!m!=1JbG?#axRBMrXpvpBtA0A22S-GBHV1(Q{&9VCqSt- z>asmu82M{)(f7QD`Zn5HTHJp4a%A#kGgOo?B4STKy3O!@Xbe`2!6C<=b+2ZiG|-;7 z118)m`D98!18vc=1i$<<ks&`rMCFH3HX$cTw9~i&X_^sloU^kcr=>fEnGPqdbtP&J zY7SF6R_soCS1P&*3Xkody`sXyvI(NHdXhd@YZ!3#3J*Qy6R^2O>M9hPAcGN_>I*GD z)_VYn5Pd6a4F74dKdEEAp?%a>w{$e%v96r-qbA1g=fDwzgM89GhnS^Z<>C6fDNCBH zWTgJWr`}ON4*WZ{Wu&?Z_|rJug<UzXwnA~H)P*7b8=YY=Vi6Qn3<&b0l2rs!Ta~;@ zc>Z@EUepcQrqbwJP;V489OQ=(KE!{&0-ayr*I#j<5Czl?p4-}vsA7D>9PhErN+R!& zq9x%uvwEzUm|IwMV)>NJ7O8R!bHGzEeY;YEV2`wOxn*7=1aGeK8ah>3v9t_l#96E6 zbcZ~W$=o-t7mf&drRpbd^qwi4DnjgDU-YwltUxt2HOucB58?4LkG{0FT0(34Ygd-` z4)1>3xJK?j9PWJ87k*gtF~x<j5$viP`LsV$WU{uTo7=Pkg=A%UYy5yxP~R#lQV9<& zsa~~u^|n+-95GRTLY14KYtXA})LU2Al=XD{I5hJ;rxhBUi#%#?nEV5QSKQO`A!7fH zJYn2Mr^VKx^Y=ghm>>gZr!Bu1aDFHviQYPIjUHT_pf8IEMCgNHlMCI&nVsS}7d-z_ zD8zldzKAh%vX=ho+Jr}Pv3^BB;%-`+C1EXCk2VIi5uhQGg?v|e#hzd`sPS1Nd&g9n zq|F#2lniMzG+??~P-aubmy?T?$0M1KPEa_K2g52T_2aH+;G?`c91PdPZLAWqImr;U zUc0{ETZf&MjWO=!#hXt)AJmap=vu;ZQ1VteIQvLoWjZQoq+EgG^yZwN^CL)Ykq#5i zR6MQb^^3>Fu~+kkx;qJuQ2n}NOElN(fw;fr1A_ArMHG>`N3itrw?yC|Sf^{UGCSBl ztuC^?k`#CLIx_1GTlejvL>YQk#AaS%OO7)1bAi&4rdS$|z56;BQZV>&H!VsvlUKG_ ziNP$nHCe-|c66lfkT16uA0K~j!#N!L>hjXVren}RT-sRU$=jVGY>h2rpLIC|R?>d( z<x2p}G5;jX3qL9<%8@37i{Oj;hftw>_O}Z&XWwI@S;=x#^cRQ8<@mh)+u;q%!=5Ra zqKNM1f4;?#f4s$tUOF&AcrBKLdcq^i9{Mt%7~s4~t@?MUj;X1s$p{;WG+MS&cOy=_ zem-RV0Cua7^(UsJl%W%1z3}!a759UWCPzn;-4~&k5p{-P6nGJ>TR&iJ=;`eIeu~%e zEZpiibQu~cU7?2#4?C8a#F)(mU0J=!lDyb)%eI{aw{ldeBB#tGGY5{z0{prgR02}& zri34i^>GT3Z5-CW^?TE`azYMdGyX1k;p6X=7ndfIT7`x&Q?=4Id9LITQ&RXOw}oaK z+JzQR7omtcr`-2$`XdFXWN@8++cYCzIO^IbRDs*%rb8&lhliD>P@#C4_OD-G!Pb-H zvSqz_t|UmqJslzfzC6y1Bvduee8J-&iV!7GU0HfWt3f=8Im6SL(6Mk#zy9-ucFWOF zYTaIJsWk+f&7LgV$fU(xn^)DWaLZ6UUx%%I$aNy$L3D3iOpEh6aa+h2G2O9|ytZ`R zTVKD}!i?DEy?*-cDA~QJ*v$`->0)Mx3Y8LgQ7OGGFN{`zAq8aCq(&4{%Oza;=t37E z%lSZB*If(wep$CsjA}l@G1bC9qK>#F0-0R8G!4H{ZV?g8>fvIXM(pBrcY)hc;xUgr z<o77Mbeji^V14cen~U-B<0TAAPriBQB<^fyL>J({^d&SkUsiiKGB-C@y5+zWl}1wC z^wS3D=ztn)2yi5tM!Kva<}D|p?{<pP^<G%^fFkM1xc^O@jau^(4<PZpJHmp3mVWSi z3S!ut96=TZgY)eRk+*bV-)-F5Fy<U6sl(b<TQcUE^!M&d_`&Zg4c2_p<`YG{&tq3v z+kbmRr+ac*IHj5VVACXP&bCAQd3;4&p~{R>{Ebz*%SbDqP4Z7xzQ(4@|3aTJRKQUx zxCLzgF=@x=vM?jV(s(q+E_%-uR>|BlQ91CjtLURDrD8i@r|r>hFECe3#xf4Zq>_VD z!jBK{_CcyueTQvI1KfCy^F^JL%oof(I2_ngYc+6nmhR<jG&lPvIo0l;ZZvp!a^I*e zFTYv|tqwM$+KnaQHq>B?75AbR#byf$4IR;yU9NM5zj5|RW6?d8(TM@p+pI#bY1K7` z4TqM`&)RY5BT1;Z;i1-p*|rb!WnipoPU6PxlVmfdsof*#y0VYadmFb2`+BBgO4D2? zJQ-S1{HHze?g?M_g(p$`^U;|8<I(gPc>u3irt52C4@=g%)6m~2_t0_3T#=<*<oUzk z1Hl{@v`h-Z#-1-m_P4B9nj{!Vtm8gz8r_W9Dy*n@p7^%Q*pkti@Q8^d2+GaHy_D+n z6Ch+%ABG^+luNc1K7`6u8}u;S0&s{(OE`8pL5_>?X0-I)#zX87Q%rZlCV5%ewy$3$ z;}TqEOUrfNKjlS5uzQ%Pse+Rll0skMMI^tHoK*G+18v7~@1!JINI&bjP?sy+<iTED zc2Xa4_gYKXR|)Ros9DzqGngrqv`@#^Znh-_@u|VBKVaZAIt?XZ%-r8LF#n}Sz=-&) z<AKm2pV{r<xvr(k*1Pq8vSh@+&?E02U~oLvQ7(o35i8|-H`$Jt^0+{^nhu>ceye`1 zGBK<@k1WPvlnb@bRU7+paf;0NWktD+^hoNkj`*S%QcE8d!z?>=G7P6apiXg_bbt3Q zPz}f?aj(+Ne$2*^ulKX9P3rzMG+J6pK&ZSy=R~N_QM<-<a7zn7NUD!F23RD=hRt}6 za&bqy*VZh@bnWcy((sQ{2F6cFTH2$7wNAA}hpt#3Gqi+KXL3HFNDO(cYTuI_B<0G$ z)MnpIFi&!Xf93GxE%)Fo)gmSgLzjcjS@Y)Paius|uT_<jQw|!JR+1KnSvsA_l@RBL zmHpow)@!J{$o-FD*+%Fem@w*URQXU5!FjjUj0{GU{rL*0O{BxVSQsH9HWS3SG$Xr* zj4TAMSA1R-QM(~5H+JG227FLG83>OSMn=@Bt`aqQqZ0<|R@k=m=~O%4u@`lwE>G2S zw#*KY1w-N1gkg&Xe&PWR^^$|flr8J34`WhpbpXrzUGy%@OE<_+tZz~61~)-L^o#?_ z8`YOn=5e}(H{$DXx1Ati;;Y`&Cq}PrpP+9#j7)G(S%Qgv?OB}Fa#CE*CiVixzVMqB zCnFT`adbFSKd;3sfzw%$0=jqbndid)c#Ak;0x=tos`(W)^)gM@JpW!AiFqM#^(Lsk za3Lp@K#2?6j>d8xb{wXHEkF13h_XwH)T3Uu%Af!_pVHuqo-U($pElsy^;SdZ%VjRT z0soxlcin?V_V4MV>|VrsJ(Byv+*dlf`w7b}Ow{RPnQ3^XV$OGHbpY9*lc(q8rF*>! zB|=y(ect7&{=*xLU<PmR*uW_5`VntRPX{pI2PH2nPZs<wcv<6Rj8j<;%Su6^HVm&Z zF|1<QDHOjcECK3n%uSyoQ^e^GD>T90R?a1)awOkAeIzTRg3uUa*Mj&9Kkp$}JOW|K zko7+aj0pQvu0QdlC<s4k2a;#1e>rmywtFF+mi-7O*M!!?O*V^_jS<@&9X!)sZC2(2 z_QCle32CNV8oXq06H%QB-#vQYB~qfQHME})){>^gS!3c0ceCAdSG20Q&K$*cGbjPC zi}IP#&t#DjGc4B2c!gC}=DESlB)IX3iKK*zfqG_yjVZ!jV6X+z!}_T)zR^HH`Bh|z z28+0W4SE$47B;ptxqqo?>xn2L5#5TDnADpO-Ma7&X>eFP)Lksn7%Ep&Yw}>j;YctO z)g>wTrQpcOhmw;<aTbG*?eZ<M;)slKSCdCydK8I;LQ>d)ob0mvH_=R=5xKXM9WtP) zW=m1MqZ=C<osg#k``S2XG@_n6QeTx@c}<?XDWl|PGT~P>*_MT-EK?bV<nK{A2ma%G zc~9bnV&8_~=2o6uE4{t)hFyUz*2vtvBVdN-asl1XA3vT`WeA<>_#Sm9B_$=2{R(?5 z29G#YUaEPlNf4fxLqTgl7$_1`WYW{VyliT7KReLGQ5mB1aD%ky1;w4In}^hyVIPdY zccCOn=jg>sw94{NVoanPC#m}Cy64@Z%H1v1Ex+2<(&?o1z*q+I%SHp8YO>n390n4U z&iqe-{A6N)C9C?MWY7Hy6lcQ@+s64q%b=-flja(gt7vd5Ifzhd(r{*fU;8?tlAucm z#uPa%Yg>EC&wf@W`7g533$HwM2Qg-HnM}=Wt1Nx`{N$MVh@<SvGA(<R(X%N9fB<=8 zW%Fcw5H*8g(UwZj!bA}V2QF0pVJ-S3rBHX6Y7we4Y_$#mccYKgMug2gAJJK?3I1dk z!5+Wtv{GoBNgpe$7GBa~HpWD0JIt~k|2dA^tV@N`e|U+J>jSfXB=HE>9jUmV@Ox`k zLq;>-B6Dzb!A|BcbzLVJhI<rJ@pr=VMri+Ai~KlN8)dQ!>A|)u?KRkJK8p6Y(z3OW zD#C70uY-XWsl|rAIfP0$Lh)~;GsjKwJ8A9jA#G>+6H<Tqw#+j=dL_FczsdHMY)J3) z4%h@~%7Xv{$^2$11BMmcuQCB^y+KD95C(#t@bZABChq4)J85g$8XAQ?CG^#$YDbEG zn@!vmsP{VLRp%e4j7F1fKPH1k;WuVK(&t6wuM|sH<2S|PJG5C3gTOF9H(vMCjRmUN z6GnVr_(#&yAP^#Z$ow}UGO#w&6Yr27s^D?93LCEl4<ee?$YpjW(n6>1iO#{7Q|)Q) z<dF7mjUpC1D;B!l(d4|_${D7OnV+4-==p5h9Ew~9{pTG#R=DlxZuYq94XNt9`9e=p zc+JjS>1b>G1ZD>D1cg<sZ1Bqx0+NmZCjJRZ|CIRn&kb;A0h)w87vWoMI0fib+!!ex z3l`C5p9n1ArTZTiR`690woJAP4be7XQ>>J(DRH5X?~#^F@kE$5pPIew-mS`hhP7sK zYuGAazNYot2JOjYJJ9xV*v-4<wJA)-vypd>jPO!G=Folk795$UMd(Ek1MSrYerRIX z(E3-PQ;fSDip}&#eLjGo$8VJD9r=Y{n=bI)Pl&-EHbZEqRI#+|R_5esJ}>yXvJr2$ zV}*O!@#lNJ{smStb@x1m`&7H7+EvhMEEyg|e*eH-(qdjZMZzz`GH}7DP-%g*GJ5gg zmnW<(@?FgHecO*@j1U<vUaN~oYmbiY^ilaljNIHb!O+gtz3uI7UVhkM-}MM%uXoO^ zsAD32U{#QI6~zvb+shsOZ^tZ6qY2AeM^AE(<Yi<e?<HM&+OxA{Upj1NyI?C70}Sxc zvntQC<pSl95OE`SPOCb3mIc9_IBEDj{%qxObNp_%o}m-PmYs^X<F+OmOiQy&lC&jL z=9Bw{0tj#b_g5bNH_lxgm>}xGrvA~1{Epz9(&{`SB{HG9K^lMBwiXcWH)6?dFV<*C zsk1h=%Bbus)>@&p>$Bcr?telm6B;MoNvQ6=^TWp#R_cCKBmpAfw}!2|HGI-v_di+c zO*(Xih}?+ncn?PC4G&wsv?uo`QmW#?DInW$;E=n@I_Y*KjeYHT%FlF#8?RLNhouqe z>FH?{<I|SgdL821)J2~aqf|)!b)Bm%u%-qqTAWTMzqP3Z$jABci*HXTaf%`$aU0cG z1IgKJ$GYNu?vk@*8g=^rh;Kx~Yelt;|Ba!>m_Z+XA}9b$_l4)k3<QYTk=|)bey(a; zFua#xytPHBL|Ci({FSP{Tms~{S>{1|OQpc3q!h1OS9=UF1^AE1lPl}(g;KmUo>k&k z5p}Y0<J6UxoBF{4u2MQ%6VNobX@eEZ1J{MAinE@WBb0L+t57d#EC}C<J`FoU?cYd{ zuAp0a%yU#@>yb8o#oh@7hu&{$%brY`<G0h=zuRn!!>u>ztbdnrFc~~1aw591u-kxy zC)8>GG3)wwup`o!f1pVo>Nb|WLUX$V8O`f{kk-qtp|8eol<#Dk&&wg8ef-E`(3!B_ z97p9Ld@M`4NGOGKB{%a+ttf)4|3$?@esQOkOdCR3%f3z~oBT$!G_sb|qW@%PgEvX; zHC78(eCH1*%KF=yesEG!(nyf2X*N;%J54p@PY@~{YO&4$Yb`~eR@V%{f5yIh`gV1H zz<^AhYwC&S%A%Xun6d{SstaKqtw~>MwWmZ2$rGteF(%^@5_f5)u6+%rv1`+I?@r*! z4d;n^9e^AE3pkd%aR8nvG+ZH6Ed5zE)fg|OJ|<`U6meZ#ombSEusHU0Xz8Oj^ZJ~Y zXzLn0E*30w#H2U6tOtz>KAWIt7?HXU+kC`QY?Z0k_S<|N7Gr3VE~rpIwy<RVxC7u2 z6DjMlKX%YGa6KIyRN5B`2?NYU1Y$daR38)dXZXM~Ga11=TieA>3M&8MPhL*}=H+xa zk$X~ASg2p;B=P8xMO8^y(@<UON#4*$H^t83E+^#)g70^H5DOoHO_p&$>}|yR?ZtAS zI|IMjCf97Vm3JVN7~0_<9~RQWK>0eZ{RrE#ZAA})lqB~5NRqUNutgExj!%i?%-w33 z)YxMU+c0MK@nhb|x5zBahZy!WcY5P&ACyN#g~h{7IW1WlWA_XVGR@H8ZOYA9KlXEP z$wO-0lCr(h!BojYP_M$yF=a%2Qk5Qd1h9sx_^_iHhd`&O^GQZ|@EI60;z?_c@G>)F zu_rr|KU7Q8Lx5P6uxX{>>1u-L-FrXwBQJfq<3(v16);|c=02+IK}-EQQ8)cnyr>}V zk;fxO1n)-$c94MQx&0%mxu2ysCVk~ks*nQmtfO(%Ycv<wAkGJ*i(*^xL;CVO?Ceak zXr8B)$A&E!v#$$FCUx}Ga~q}(j-LcEzu)rDxu%=D+SbVx8F^<gng>JoCSQix$9gpx zBWD<v?ss05MA`C5P4&}Gdo8O9*4td<N=zY?vC07?o!LL+_V+7lYHkBhROD5#)RRI^ z7zA+BAhDeo8)qf}+_SSkF3~6<+t7vxMM(N*M;sN4jpeG$l+f1-71w~Aedt+A8By0` zO2^@ichpK0o<F2Vj_--v8Op&%ImqUy-bc@AGQ-dc$fkFPSqifb-R@D5QGX(pf0TnU zg-5n^o^(F@Z~PL#x=mLWDT51!R}^!U(MIv)a!GwY;zqA0aQxVcG6MZ%m{h^m6H}cp zGXz#%st2`Pw>>Cw(R4T%s^W~4l(1AWCahh_KpmL1dMN#}@~sTC#0+g4)<59>fKAZ4 z8DmEF)ugh?8|Fr`?^c%P>?tc#`Y_cf80<C`B<xYTEf|tQ<-f7;;$*Z8Yeo$?{Qa<i z>D@c`?wR?`cqS<czgelZ<H4w_tYjJO0pU^4?w!u4T!Mlro_i{+i&d>yGh-^8>BKDc zWl;nRBp}48O!}t~$Jv^)6lREeAuw=tZ)kN7b^Xjm)yT*DSAhe+z6#*Z-i|u4aw{L8 z)%c&XWt~qBAG9b_lgHNy-d0f})bZOif2`uh<i-^CaWH{uw`Q?AUcSa9hD|}({9~Jh z0Ws-(O+_#>Go%;do~8gHd}VEA6;P{Kt}5;%iin6Hrt<AsuuUUstlH3BTLOmW{?+ID z`i-jo^4a|)VXgA;9NZ~QZ6jwcwq`ju(BNQD8{C;^8BD<h-Zp|@0qtMC?efd#{}|A* zRiR`hk^;yt%++JZm~p={@3!i~X5ee4?>eM}t>(ST+2dj|-SN{$lDsU@TgeQHU3eWY zlPb@lrY^@oSq&+n2+qMgS(MW^RT4&rTC<<Ziq>&_z$A{`27nlUTgp+E?oJkDr6eJm z%K#Qz&rFjCC4X?52PZ{_sp<Q8c8Szj0oe>d+zmM?#(E443`(a`_KbA^F6ROCd!xg4 zl^nN`HZhow{twi>BMM+$+VHy=$k?<Vjt6e_QUS*8-*}1-6ySM8`UN&}e-OO0zvY6H zXP!S7D7a-79AUGyC8|*^t<r_IFczu~o|_AanK7houQDXStQaxIh&Ks8+Yet!R($6m zo6UXigJ{ayF_mF5p5t_*yGhQTX=Gtm&Z<sp?C{P(gV58`vI{G{gryv7x)qf5B#-&W zh(_ItYbY@alv#L>VQYg>#3zgy9+Wz;EzJuvRRb2_Io*`%A#``D;oSNQ|4053lrNq6 zm~m)(yH~cJlgYw83^JK=)mRJR&gzab96Gs;<_bE@<gdb*cVg0CsYbFdP$|Mz&mPC; zlN=+IWsKRFWEl||GM&wg2ELmhi1<D+5e<e%e^apMO)MdTMJ7x77xmTRpPGw1Tc+bT znlm2jAxCf!Hkj9$Lv^r)JG;9_J;TK4-xC4J<Ja<r9?u9#z!-77-a=L`lnfQ)@Fs{I zQ%0}hBNg%4GP0Brc*z^<cg02|6<j=ar5pd<i)^Hx?{{Su`Dz=Q`#Zb!l&%GDsS0bA zqnK%K#+z*{l%~3Iv%H_#lPspFo-ki6!Ca_eUSVmF?_oAv*O#_s0;Rfn2U_GCjf_M9 z{%Slb9$|cPa*P(6Np5<p{>-&!3b(FU0tC9z97iCk?K>W#iNt@{bEp*%#K8)??;A@1 z>lpor_(?n{EQ5SEW$<ok0uuQQI9?3I)_;Hq$Z|T!wuJQUZXh4tX9iiGx+a9G5%N3l z5(Pj7?fm4-_#ZcRhVcvWLgt{=UMF*{5l+13h4821Lsvc)mgqz`mgXE<p>0vV74DvA zX$_P8B1?wwm+5|jd&+MmQ6q6iv$9)h3PBQnYdx&2y0PB#5Ks?^6k{RNflOtVpnww| z94`>VP{cs1kF-qdKwUXV^%X5GZ5cXr;6W2y29N>E!812`ywP|JIlVzQ^rv!$v!etw zO}OOlm2*w&1t}uVKU<WQhfNy*beWtI`nmtjd{FS_B3S9A%BM0T3-zo(Dw+~?t!JK6 zn{4y^xaD(T2;(`9CE27I5e9A4r%Z$*YAj?_{<@l)MGa1bPR2#*L1HqQp4&LUd?3Kk zC=iPARzlrDu4iCJWTAw#t?8BRi0jv{^Fo9zE@7j6M)P?HuxnahyATzOnJ}Mb%|Azt zamWM&&wAh*&bi=S#Y76;H*ekx!LvaM9$?FI{SiF*zYCrT(Sef%VUu;<fDBG8OJXk1 z$izpfl7a99W+Ln0h(zfL;vmM(rcRz?&-K!`NF4%Yz47YqfeMiljcCB{JNmk`9Vx?P zWNiEeYv%rxo6UY|^faJ2iKB1cdk%L4_P^WDZD>N6i?AN_K)%MB9TcO^%FZ^jw=X`z zHVDJ<mqAtrsipsO*rPRDrC?1ebDU$wDQQE>Q}f{_kJ9bhZ;tcMeab&*1|?+r_K10U zfZW+DzX#=eQJ1W4Of9IEU+*Dbj_7hu&P`3an(Z2FC!*1Hq;vOoS{nk9VgPNHlozo` z6a3!Q2VTU`D_nKey<4wQnhZrXiTQJY#6<;{)TKb(tFRwmSZWlsQ((OJhf~teuf$&q z)M7a1yE0vVe}Ur}$jY(vn)tOZZYWj$Z??TwK8YCKRF1dFXbqWEc9&0_t_qmSL7A$O z8(@J`J{sV#XNisk&X<CUs;I}!N%?F)Z_NQXB|r1AKs^+1HJ!S^-87XMK!jiWiB$I< z5dj)Lbh)c9W_b)KP?<r2Rq7p(>{ELyi$9zJXfGAOQEFZo75sX}r+{bj@acuf`9N`j zGg7p+VY_%m5u3m1ySvR{M-SHvve}j0y`onM_rpIsHw%40nX>Bd%1lb4R@cxVA@obR zYxf9Ak_gVHTjr1ls3E*ewGlL_^MN`m<XIfk{zM)+JvUB43i=7bvVpz5GD%P~$BSN7 z3^@i7$f=l?yc?G&B0B>9r$p}U9fmAvH81s^Khz9)Fa9@R1%CNg5e1|Yl$h|dUmS70 zE>a1|O9$XpLQX2LR+vt-a+Hq+)!)3Shv1dhH37+1*U~EXih@Pg8+?BHL1o9S71YWv z0|zfYCTt<<JlqD7(4nCru_X;m9cm^fCWa)rsxl7XufssCp6Dws@bD>+kg~to9bjGE z<y}VZp4**I_(%_5g}rv+;h!N7Rn^Oe_pgWkeW=zG?}Fi?KW=v$T*b791goA61;YWT zPZA_%2x=j!Xv5HAwm_FYXmzPJYoj^hK0x|+c8X!XG>eY31H8MvqQr*^q|{eAxVQ|2 ziNLVf6&!*pAgSF#sQ*;g_;*#qzrn8jurv@HR%6xkAgU`WZf-hjEiNuH#C8yhALR~y zBy3#Tc3GKbX$*Vw=92hPP3S<6AJw%~fJ<=rd(r@LSS~>K_ju+%>}P}l+JYgc{L<KU zfzaay-aOHZx)Nl$4m|s5qMaD>Dt+ikkiO`BR=@J^o4twxBp1C`>K*+bkk9WtgQ`NQ zM#h9`2K)?Yd>9}xwy?Gy`#F`VDAo64M?pnw7*v<0chme(fut#@i41QTokXLQJO$Ev z;+dR~P>6orKHU4#+h-3@d>p}lu|~tJO^@THcxUoY2^HG=7^yV_MpNfk_>eu7JT?B0 z(xf6III|ubos0YRt~=NAJR(B1%DbX~m-8x}sLWf{Z@7Jm(s%gh6kt;Uv9f@AUNz)K zPEfFbyP24P1i{3_#1eBy&-6^xasYbV-X09QB+SW4uR*8l#Rv=&5c*y=4pUJ?AdRb} z(8&+^GQQa_efT<Xw2Gx<w>|CQTp*eI(lIB0#h&jT0l)uz;5*iN4&h^f3_fY>xF&xQ zsDP8-5eK5H8+RAy;!HVg{$`;(rz@jLFGYx$Ppda|AAU71dPwS=KWGM2S%X5CHMys& zi_in2gZ;?D!s6AXx4n3qhmTP;D0Cif{(02%xf=E8M8(KQJ=vdP-=A=rs$Fs2r58o$ zv=!=JXf29QKMp9&g;I|FQfwO;BmvIA>dV-lW3B~X*udw){v$A0a-gt%A)-WDWwwoU z#JzQ*FkirFF!jpRv$gHRss|iILjS;w_(0x=esIdYAyibbQXTmMC+=~~)|u|q(A4NH zhg2~JlFwm!dueMp#o#ur2l)>`y^5L70ROKCoCIpTk#yVb7s;i566*gaGyA`Bvr<LJ zhNOO%Ez0mVulbzfEKjAV9u7f|K^ar<gX)7}6z5x4s1j0(ux3gQE5HX@WvK_y`+Gat z%)Ty{_iOT0wvc(Ilo@2wL+JfCQx5reMGxw+fhZ=Wk^U24Rdc7|pO__pK4JQ`uS<Kn zP%#JLR(OpXC>_vo)svyrq5ufbclXodgEV|^b4aZg+ZYs(knV{hV(L&&-VC9l0s4$% zum4etxBWdq?z*eJjSWf|mjIUL1?~E*3U2ZWsr4Tk3uHM8Xtt23-PLo=p1Iuny89n3 zI1(5Fs`E1adMX{lUC5eNgACvkuT+n_ff&9_7j-UCKqvn)ppdI7WI}Rupg;~wC_qKX zFkJ_9ph)S=X;Bm(DkLa=bfbJjhdMknOp?LYF26^UdBb+4(l5CH1{+byUd#5|Tk)uw z8h%vMYC>_5Xp5xY2mi8a?yJr(;rp%z%%#l~-{xPICrYHwde2n+UQ$+8mb=-VK=D6T zjQ<TVN>@Y?b00QoFkIPF8x}#30r~+-0c?=Cd!`#260&nTjd~9)dXs2_02Z?$#C(`b zO&O4qoJ>>M(>5cWNA2j-kCi8UcF?0)xg@k-;lb#R?0+T_fY;ZyR-c_7Ez};Zk2z@< z=rG_+v8wOA{!=8ep#-v#{ltLkm(;$w35xm7on6kq35CFZkb^IH=q*AoOjUh7F5pNK z`_q=Q&HF!ONkv5f2Fy2b{nLRZeE{buVLAStQm{0Gb%Ck$$DutnqnBTckAPGQEK~|= z(dQHv4wILx13a}K7``<A!_#gnJG~Eyf`s-GL8l$fH;I*jm1hE?2vy7Ezg#BbHV98P zXr>Y850Z8T*m?p7gXh<Nn<0XCKwx}UIOVQh+{yCmU&mVe$qs_?<}xxb0yqQ}8psTg ztA%nw``PC8GQxf;vyw{Xb|##<=K?VWiCN-?o{n<121qPuk2q9ZMnp&kCgiC}85(fX zg2JaDQuZz>Df;v0JNHdR7+69NlP6|4?o;c&bqaU_T?V06&6L|lP4;^)cmsCIl@Q^< zH<w0UL67P9^Zq8=NRL|^WhZhj+j{3-E333$^|#@`sRcit-X}JBb#Y4wI>4V0hfId) zOvm9A<1bI8Va<TaI82oG$;c9$G009^HuMrcMhDE7<rY?`hA*_p<_wE<zq@;VMC%a} znq9t573KWE`X$lSd@a}qdEDhgN{Iw$9H;#OOkA#6#?iFO?VduQG0p<nfmSE4Ja2@b z;54jM5c{iP{>g|?d{Ti$C6bo6q4{+QmywrXbp83|i%ZBuUc%ZvxodweAqVMj@m0(a zswpeuD%bLrSp)^i9p9j!*=}3QvAVOfu}L$K5EH&I`*hc=J$c18F5A_zN7);!y3E)X zyh#oiVz9PuRdL>erA)ISut2gcBtr&Ai2i!Tq^jiB#Vmkw!&d#s?njLA!IA<L(Rz9A z$y2w#{%m)+IS)E37#JyfBw2X$g%n-@1Vj`8Kn@Z<ECMlE9*<q=3<sK$=-sB{iuaaH zw>fY`o!8Q${AZ5He22H`aSHJM*c=ozQDTtTzD=GMIM?t8NJY8Y{;2Of4F+#}^(oL3 z^f8Bb{1<+)R|y$b`oaYljF)h(-BidO%ur@&1M`^j3JS*X;FPmqvqBnC1FPIO|584{ zto&^8vA$r4p-zcQWqLnD^-cpqT6T}pjj0$Gy?K2vf-<Om`Ki{IY<<o<QQ@oc-xX9} zvCntddKhVz=BpVxanUbKfU5hG9JQ|WS`%R>vnxTo!oC!w!NPXDY@|iFb65EM@B&t1 zu@dl(@81GDXZ(jx`Q@(GrqDSHGJ}$H{U6g0g<J-&BKiZj8y$Iz(6?xSi;!l)5c*q! zeS83^Mfj6;YtSF%6hyKP>2ao%tQ_CeN1z>c;NQQ0pBG2>))iTmjklehonM!imm|h5 zZBdyG3R3w_>Ew3oz6{QbhaP_^q_}L8o^T*)`IzB)Bu%KaBRyM`2`TS*QesG=^ri-# z&~bFPHs(oE*T+0|@-C?FN8Bd9j86twm)-*Sbw9TMC!DlMmMh7m$MouCTxMX=`_ohD zYRW4<qIiwD2YPx4&%o(jcbvvtG}4QE@fJ}4=`(gFGe6O}0xBRwoPfdzZoJ<@i=_%e zpn6AYW+0`%tlkci5C=G3@)aOrm%uYcXtOq$t2iftL9#M3GT#p(sEFWHj!0Akl+oDZ zp!=>Wcw>Y)F;u0L$9i4C33yAN%X2QJyh;#7*GJ#%Un1eW8+$ESdMV%cbW~qlwIJHi zEuF2TFeg=)^!Y%Ga_^L`d>4svs&@jT48p_x9^I1FW1g<UJ3-9c8uk7n{1{lbaSDDO zy_`8$QOJLxqQLzm+ZNdYI|*|5!oos&WKagzz!i$^kODn`wqv61ez~T#7kCuhNC~r+ z!h0Aj?;9mB+~C=>xKaB;<kMKmgv!0Yh|aO5x9BP3i2CQp9c3_2GFgo(YMra`4zVdh z<iE@}W`=YMrQh`yp^k^(ysn30%?#G^5NxR7==AtOt64byaHw!FkP)YXtMB$X2!)gB z4eBH}sHD<=xmuBD&p<*)WHJ0=_QFMp$p2yn@4rn<x^9zE-`)M@7O*olI<bI%*k)Xm zW#%M3yNLh-IZLG_zCD;rrtVyQ>%KV;mGdyf-Id$5h|>jDX@b5r*gl!oWgp$0y*O*T zqD>K>ATP<}Pu86@hLm2doUbvs&9vFRr=reQC=KH+8Mw{aMi!j!Qp)^Bdsb$yTpfT` z?*#|UI8=gQdv!d_3zT!xy6^l26J8<#(N8!*!7n}P#Y6_MY^#yle_A-SNkQR^N80g^ zZu(3A62uRcv0n(ny-(M8WGd{=TPcFr05$#V_wRAd`gfGR31~5Pg?%(#_Z|5mGk`Uh z%Y>tQn<qod;u<T2b`Ni9%(%Wjx`R=j7afN;#{5f$mGGJsRHX6P+goT@3YJTDm-|Kv zV6xN5q&#lB?UZHIN5CMN^`38EJ$hu}j!6nn-`1kjFfYU=O)c~~5NU^e7@&r@0y zG(iaP4XX`w-x)9T&c+P<JUh$a;cq`D0v)(Wdgd!Dgob|(L<dVLa?*K=$YYF8#Q}V8 zXo!I%=v4q8Ak+vAOT=ZRvm}IpBA?M#h@tHhD)%Y#SGdL!8K1_&UrIbKEc!;^NozRk zyQ2rQ@x0(4C+8Joj%!!hk-lgP;TGm<X-wYySc17&V|B0lf!}sTPWihk9!3*(1|$71 zs|MVQ9;_WW=Yd3bWypVBYN5&IQ9v^m2;%<frkKl}p*Vy$;g+RX_WXfCPigvRwOEZB z`b_C3j@z1%a?JC`Efj5`M%W*dS_MZY)++PjAp3<v`EMEP1_?^5MD_qf09mxVsYL8) zAfDEYRa8QMOiC1M*r6<D4Rg*f)i}^fa<C=qHet(}?>nQ4$f*#sYw<o?Vfj%2r1tt* z1UX^z%KUgC>795UOB!lxqE8zZLq?kz=s3o*kki@B;*j`f0;FhuY>;{A@k1g(hW$x5 zYl&teAw=r9U5_C3+T5p5P_)Qux_5DxC_bK`-DsnXzxAADe3b<$%V}l;p})gipL+0P zB6so^z86aB&HlHvaWXc4CY6r#gUUV#Mq;%|B`2Tew3p_X>a-`qt6a3RO)cbSa{_Rk z5=ES=_0hgcRV?h`QY1<S%Df+W=jRJ&tIroj079F^r<3-xnAJz*De<K~8!ubizZBBN z=iM~0V)D>o`C!s?iKBN|i^F|UUom;N@m;4Djs#><rEgdiLyeu>$h_vRcYQ^uJTsD# z#`p=H&|b(O#sTFEY1mssyOO&fM0BUD`x-EVl$94dd7Z`u!S<8JnNnR%7fa`JDlwAR z_aE@CFVa&$T;qp{;5)O{$I3j_Y?>O&iaa<pQ*q=ovus$4YolV8T@;Mx^>N<5n!@d~ zh<}|4CneIb-9M_Im@8~D&zENT3+>$exlb}xF9ty&5Bush_FmYPsw`LcLFK_=siYEV z*9HR4?@v|x7d^*scE+_YBDq}wP3fOs5q_<5@Z%S5?;?cumj3Ye5u8gGMF?(ppuaX& z$9}dvkA?R^dj$ops_&STmv5MDvFRp|l<K`#sxLPTe;V;P3nIy&JD0}(!WHZ_fe|kg zAEEta4sIiZircx)!51zT!3M(neYWYp1WM%ZrAiUtj>&9LtuYZWu&KOER$&aIw8MyW zGN0GNThnj+p1915ZPV2+*UcK?Z67iu^dqU{zXC>je4OmpW*IHc^hH^^xKdy_T4`^# z7veUqOncjY#+^YM9SMr-)RAdhc6M_E6+7zJR80Yd-_%%*d+U`uE$W8z!mZwEW&={G zmh0pzQzL{7FVm*~Bq#0oj~jf1jZ?O2qvb7YCNS4Ia_nMy_s^f0dFHZ|#tA-t4H1)J zJQ3uArZL>-L)(&Lvarh6?hI4{DFPyO9}oEfSqi*(cY;_DHqZRD);Q10dQFhJBSf3r z^v4AT0)#>MZD90;?$r1G{cO@soO|JyFp3*1RPX8Pa)x=Z)YCc*KPPnuY`Tt4&`dZL z!<)8Ij@wD(X|xT<3j&AYgpIL`)-2U((tM9F#=R-dNm>uSbV0pWpK=itknNVR)MCx& zE}oq2xA=0)te-Syz8#Q(o^CDS6_!4=Odo7OFB5iaR`!>daui^}Ejoe9OH}+w^~R6o z<m4UU?g!ww`*1rPm+O@XYm+%tNDm9+gY36Fw*h`Lo|B=Q7FICJxdS*79m(tYuUHYk zFg+sEr574LSDtdAB05rTf8EVp@L;W{-Jdtud_`z2-_^1J3j6P)E1MKXjz5Svv5@lU zt(VUOg5Ec-E(IsgevFy^Cz=yAW-N*3;X-Ea>y>WG#f7J_LM5!MYOI#UdieIV3yWBC zhK~|_ytbpQyj(;COElcOj!7D34HlVk-xF6LI*SKZ+%RUwgznt(e*$FQq~<@bXN2|R zWr)<2GLw;l5r&Ep5~tU#a~sQ&P3b8jKx+^8bp8e`VZ1b;a`!;5zdQ#Hi>@_Ei71Y) z=79@*?SJB9Meg5Yn5a6c%Cm)4S#q!T668a?g9fqZgc7k1_9djG6ZQ}_p`fWr>9S76 zI<DyB)jw`0pt;)i#jsQP^>9xXVIx(~!I<LE4q&SnR*dQp3t3qC9hWs$H~}TD<@%2} zg@C((vH`j<(MMh0sX{S>4=PQ+x-GN?Yt?AIh3&eIxtP7&wkykK6eNkz*OPbT1sRl9 zROHC|r#6+t<f=GsA4D-M#`F7;U+p@Q;$Xkx?E~92mUJ6eel<Kyn)7Nk-oNZ{FxSmd z!RJu>oQpQ`V(|geGvrZ=q^2F17Ad&)x?B>dOCM*l#yE=t2*ES3ls!zfWf&EMN9m+S z!|W-apvdAE6PwL%kq6fT#@0j>R0&=JUGA;~{Q3Vk85QIl|0AXbO*WaN&ss@>R)tpN zLT+@acNMrh>HRp|M){P-3D0bsm6s-?CSa8oY-%7P%EOy7U7fn6CUv@c@YcPhi0i%2 zlISHz>qMI)mAPU=mZc3ohzK@8XCf;46T3jS18Ma=89BH1@=S^Mr5`J>svSPYyL|f| zjpx7>m#W9ITBbHMjCa^`Qu(ek&gE*B-#GVlLCWXnq{nqD>raB>d(X~1K0^uT9A^}z zL0=cejb}n8V{1P9`e~mFyuOb&_U;$Y>;QaB-a1?JzaoMCp#jVlquoqZX{$Squf7!@ z3?H=R8qa6`$x_KoLQM7DDlT|2s91_UalEv)K#N;%-NSc0KZ0#p;BIXASc)LMNzZw2 z;`pjHgc&xSKiCyZ^x>V?q6OeYaap2|A11qI(pBX6pLmWw&6oc6^hdFYF<?jIx+elI z`#u2!j%Ml+l#fqA-%QTy4%Fy2&58b#_e|Fc8W682p4b2;k-Fx`QV*@4S>HWZmIh!1 ziHYXq+cUrTgZ~J}0w?hA+PQ!8A;3W}rlML98kn0NofFQLh-)tz5}RdgwEe~%wkN-R zE^n4qsL(Q#>{8||NVKV*>>V_l95j2lrAe3*=K$-Ee@+UiJLiLePF23>1=%=Hl<aff zj81NQdY0`$C9Y{1)<|o%K2vYf=jiRSp`WE&Zk$GWo!+R_77E{=7g($_+K?fZWEc_m zWgzZ={CgDRqb2lJb}W%5v>jppfV(-rKltF*mndScRH(r*<<?iPdDw&=AyMv_o~5xi z0%UVeL#_WC!4z(}_tu{_vN2X`K;c$>Q4j~P7{}pZ%B<iD)knj4n+8nZlc`^i{M@{s z$U_C0ddkaKrI`gtLW|aq#}sM;sw8Yb$CUVO4-j5^$|rYb!V+7c!&;`&>_oOB5fU3v zv>zg$S<U=%t<s`k*aCX`X{d4yBp3@Is4fv)J@G4Chw@R2rOK&qAH?zaG3*p&Dm8~h z_4bUe8*78c+Tcqp{1$ls`zK+Vxdkgp$kV#nfy^7WUERDVFhjII-H*3Yg@f95Kork% zk{~IU%B%qs0d4GrC1E3Zit0^mzYR+7lskh9Jrl{1<MGa^*W_F|Db4C!D;ORdqxb}z zK0Yv3xUa_&Z~k(7M^c7!#CY)NoI2;K`E1fnK<%3rYkTguor-e;4%fXnbgb$%yAJG% ziXL^V#$p$-IaGR(qODpCjJi*Fj=Mh{*K&&|LIy|Ohl&3S2K9zdqnvg=yRy*;MkQ#O ziJyMqwqQxlEoVZ{^p-kW?4B8`vxIDkm9|<gH-q)Zq?HUk=cFx7u<5=OyG|+o1I$Xu z{J~_|WPHSCksmdHvHuTk-yPLt^t1_x5=5klD2O0}AP86}3evkEy@)gmy(+y1DN;p{ zA_5{vl^S~Qs8s0?Y68-0LhrEmMZw>9cF*qFJ^THs3CWweGjnI2d1j_u{ktAKuPgIO z6^hHxl*wlNw`-4B#uwf>mtRg|dQLkNo}=BXgi-e*I&E%{#>sJK#T_iwx=qsaZa$D@ zjDZh|+GVJVr%y$~*0$l@IVFoodtD-^!r8X->A&UIkDnR4H{eHD2D+EZHM981EzXQ_ zCsi1vCxUiK9fSyWpEcf>9j2GD6lKp-k0lC@Fqn5%OHcL*Z}BB4u8hU7HUhSe#gDzF z(pT!94vY4dW`Sx>dt(Wi?7ioS%gPrkY<NfMc_|}pic=;Q-o7e#8fss81=Zv-<NiCM zK5`bS$02T6H`p|qSH9OX4OHlw@e66Zb{WPmlxiq^<a7^)9?rHDYkm4l%WJ7jR}cAY z>-|7#mNz^RZ%3NL&<k}hg<-FB=<$!$dtN$ZRnG^L)lh6V_H<i$^&RqW0A7!#Ue;i# zx}Z>7c#L0D=}=eS4WoBb)}4yr$6suFEM&7ogwKYQpPJklKSO#9omk5gn0O;RtIRn6 zTOI!>t1Xn;PqtHvv)L8PQ}=wS7O?P~zq4z7>*5D}J_aTVM?I}?kJ37Bw<yU3i8I}M zq070@RF}v!FknpLX(kQdc=5<E?nC(H)yDVSn@HzO5x6c_?Pd@dNurnDXg3~;PM00Q zpXA=k>i!ZnUxSmC6!*ygJ9mM_t^dLXdf0izxMP^L;*bv!1UTZ^efkb9sy+aDPM;b# zB2c`<4~*y(d(Y$4Z+BFx3v#>k=s$f{xKuq+Lz0;jG){;A5JU+A^vv3TbS8Qmb%MXr z11uc^(ha7MGN5`60KVT}xLQE>7qRtZ0)srB?AH#QfKei30FgfKB82!7*BkM&MK@Q% zD7U*(?F}YPlNW8<KL-s33@z)cs<*nB-iUwrAnbOn{s#+{-twH6>2)zUHud@+xpOkd zCPULgbhEg`S}l#9lhm1&vrYOe8-q=d_xg2OF*1ujVp)TkSLhTZ^;gVAZQppP4=Dsk z<Kj<!^&;e&pykf4zx@DVDl@XdSUr;Yt@<VFyxCi~tZ#_8>#;r3LhehYJ3)_sEItcp z{j@{ej)NCiBP0gs4psTt|HoM$|F<oI4JN0RpG}&ARzL@Fkd{dgsNJQD3ut;Pdzr$T zsxzmeO3;nN<kZkSo7%w0w?!J)O&)94yi&TXGgcXKF<9$M%o@+DFHc$eam=e`8JCn_ zBc$+-yM2l<FQx9_w%Qw^bcD{^tyr2kW-1@#qHT@vZ%I<YdjV*rkC`NZ1_PW}=zoI~ zllCY~PS-v#uf-p0v8c5tzNXOnlj&YpW@9Y1Kj>*G)CeFhwJv4ULYi6BZhKMlx^Y}{ z5Oh}sJWx<98k}1usB{R?bD-R?yX`@%_$u-C!Izs+=x+hyatA_D0sUvE>s4_Nz6sh< z{<a%^!#B%G(qr~3%a&A<EByoRelPA`H0vJ!IjCkl52kPY|LKzcFG<f4e)B{^U9NX? zo`~}1LeHX;>FHIF<aOP^iED~>>T8u^P-Z<g<SI<O<d5HEGM`3wKd0flH;g2vM7#cu zFJ9q;Ko{Xaa0(aSsXPR1)w5hYC!`3{nJDnWm(IMGf3TPDDEjaJTb=>{YV_RSUlqj7 z`mWQ81efO+r+YU2d|=A0;;4ia(h8q}Lg&)9LWbhDLQjXA=n&IM$)?p)(%KT+14J^V zjyKs~su&XdsjNvsz((jy2k(EyH*oOW0F4xF^y>T(MsiylLW}Bqo&NwNfX5{QdXwnZ zuKwQpTLS=n)kg#=O}eM2QNI+xFq3ix_oqLV$gmpE+)8gm3TcHzuuZ-^Jwn2#r9lXH zWxWAL2c?j^D&H`CQIxkQGK4)6QH=^-Dsi3r7?EBMzf+sdm(`v&(Y0ITov_YM3X!eE zAV-2f=oKW*Ljd}1wntw-0%^{D#o^uZ$>}z^`{xa(05c8#hA&X%q{_d;0&2L)Em^_N zm6l@5)IOY%Efz*oBSp|4hI6ID&x<*b2(`zgRSbc_kp@PI_N-*!IZZik+5lYdp2wCx zAL|_z%`Zo@eMXHzwSNq%_7BAhZI-qR?9g9x_T{CoE-EsF_cEH&fdz23Zu5zSvnUHK zB<-5^CZgM9cQ$_CSr4;WsDxS8{Ew+C@4?wG-Or=?bM_mQqd(DAw<?ZH&$whWo4>xi zeS3OnB`q!O4eS;5F$9H!w+rzA3IR{5loy8HIp~|-U5r7JUNZD}YNzn1oOs|#R&!mV z!GJd6QDF%)pw_Fl5U&;&7IP}}40rajVsph+L(}~9nP1!$hzoBj^-jZ&3u!gBMK3y% zL0<itJ49(9tP3QrpzuZ?+Wg4)_ss_&hS+R~O*}#u&-vr<9{40Bn%wv+dN9-pF3kVF z`{YON(04fN$i@{5Rsc%L=kvb8^cV1^q%I^quUm>x217r57A*VpUzXmO2h`71<*F(x zeuyOhxL<&uEV3z|@Bt{GmNu2Vo8Y=+#abH^0)TPwC^gHc<!QjUF0#7)HV{WCfR2et zu*Geuoh0keoDD$lC<By*s-c7hlA~+N<Dy3&jSoBL>V?0z7Aedd2w&Lt6tl-M5{R!H zzh0(p2Gfn>m5bJ>$L@SnW%YRIE`QcTgp?(EboVDHCxHt8(|coEhNSRz{3#u~ttYn_ z2vtrC3Q&jLQ6bc2t1)W-el%}K1P4yK6J;Zg<1u=Kv?*lkRdeJ%X$8EXZ&~DsuMV59 zTmajg@zY5e7q+Gh04q+r0p6ou*g;f)x_!m@9L`@OqkjcF-6<r~XVO2C1{1|DdGyUc zT`D~Tlpq79Kq`29<cI&?JGh1r7)TtBSzIybs`44-CPjESxMi!DZB?#s3zk2?GO^at zN!OqKhxfXH_hY>3{&Hn)Wot$l7y1tRNshm)<1vT<Mtb!1juk<;1pg_*taO^%6**1q z=MZdNdL`SZoBHo3!YYAq+sdAJ%~88LkPue@`hIF3)@6P*?8*oFJ(&VW&f^b$14x>J zr~Z8Enj-YIW7qmm=3V^HWvey3EM(zYsY?k?MH}}eFc65=nTYz>Vqo;xaA7mhn0ve8 z3|gxmlhqzKxHDq}h}t~AX^)>A2TuVUiF>oB(VzdZ)rnvCd5&~wJAYgp^f(Wt!LY`u z<3ADhI}LuU$&3!O+v9o+U#}^*7UdWEipf#BV+lSp#s?%>+%3n4mP47nqdGG>dJbVO zzu4&<0He1=x#Eu&Lb@jmK6~}SQ8iUK-WM;6_neF4CHs@k>CcZq{X4C{|A<5mv6L>I zg^qb=SU_9CQKwIFucxO+(Xm7N_=|BoQr?{D)!B*-z`C-YIAr`iXk>u{$tzdreIAOC zGM%#%`$yPG0_Wqgz$1S$`U((s%Cje9&9+9~j;%kS9NX=py@G#YEAQTb@g4xjtDU!r z)jsWr*-K)UmjD#&W%%)PJS%|;!48Mr&PU&Pm8gW~t$^UU@{>6vVBZ<(fvUOrNjddg z&>P($Yh<x)Hm>7lG|_iZPcs%g&vjy;Ie65nNYaXovxr&;9ZTYx^6AuT*J19|+(jq1 zrw^FGwujvi_|u&;<MpOosoz)ZHSGAIM!y52QIPw2=J+6M6bX&7m3Cd&a(NDX1&J+n z+J7Xc`fDBF>QeJ^uwjm`-RhPHf63NhfAW{Fz->v_22brh`X4t?Jw`JdpZEIfJW`=* zGAj?y3DL+$vPR7vd1l^*>KziNf&)y}0SzHnsY$3$iZ1l@2_lfbu+@~~Jfs}k)<21# zVOu~}C{CyMM<t2d7r>A3O^7jJ{9`kxKyNhsS^0a46VdK4j1t$C1D*dp^3v2aopZWQ z<ew&ZUW=z3;@(2-_=z*{TtXQ2@9c3Ifi~~%Z@I+BMtHjd`if$V$x;1Sm=3yKaiheJ zok<!v+PLWV#3%OAK~ysTG|R?{RF|z@g-mdb?({zsEFd(N05jX%pOEVEb_nm8-1tw5 z8@O5=Aw97|cUvFni69K<iQD}PzJCk?D7-uvHFoe_-~6N@>s*lVydAsSk|_3UJgy^a z9my{#51*6TmIYoGm?1)n2=n<}88J#&SDc%B@|W}-*P+bC)1dgzDSi{4Cl(Vw7L7+d za04VygI@_ApD|$112Zo?Gp0kY>xEVICXsi4edFZCYWxcDO;~x-D!rX61jnW!Tmy~+ z#a8z>_RzUtT=~5J$4DOAu@1(w0oj(<HOilSuj1JPT_gjHu9+i6>G;#ZE>$4ofS{n` zcj4kYgD|E_Dre#1pRb|>AMAI+`z7T9zf5GFtnK7MVDBL@ZECaC%-dw0!CX~QQK@}k z(sp9Q!tv91W@ctZcopg%4iTd-b3X}WtNS{r%-d`ZzMd*`k8O+PclcZ!w<EA$#p66j zVQ@kf!0`|RXGYgt|LD(e;-h%QOUOS&^lubm<w>MMTBlq&tFUpR<hCl{PW|YzREM$5 zuHBlQowdCB(e0$P2E*5`(E_vYey<lCd259(MnL23{9So0791eEZ7}g0va${_T!*k6 zU*BiQ<5z3`7m5i)+clj<LR>R1c4`@aOzco8-s8{vuV{_li`#zZh5?jjw*?Ew@lir! zQr&tCXd9rTcC>OUxk%>iK;C++<lq3HMzYAV1sdo8p3R(oYIW(nz!{vs-%biKE<EPR z<xe~{%p1_{j^c-MQee=hI(0rDH4)<Ac|i2FPuVlG{srpZLbqTD=GW1;!CPDg-4;&R zdazjFlRNBg5+C^xSSZA_326(mIq`Pj-ne{XCZzoefQ>RA4^UL^xajCXE2@fPmbe%T zc<$oZ1HkGmq#Xsz$V{}Bke+9H0h1%+Ecz)i3S^fYbkkP=i9pJK^PkuGf1{9q-q~6Z zTi9&QsF7AFvPhR|3+CGJ#6*ZQy#BpdS0Iw68u}vF@mW}b^?ZMSzsGzf+sbx@Dl6rK zS$ov}xuHCtEqezCrm&_)z*NiOj@w{(QxgJQEe76TwzY3z<r3p4hFy{dgI^llHb<s) z=e8@r_=)F^#O39syjx2;f^AJ?-a_xmF(+aog(9U`e49VY>P!z!$np})kv%rZ(H`)+ z!s7;?V>J@~1~Hb-pRGgA+W{xN<o|;Py(PIlN+9I;+pQYxZ}}KmF~P));*g^OYuxty zD^_DM4+~_#^apFCjzd$d1L`Ixd^vD&FP>O;H5%Cn?NKNlf6qTriE+b-SdH5S*U+G_ zXST7vLbo^_Yl$XkF^;}Q?1A9>h3^B)azN+>pRK_-B<*6Vt2sTk=8=dYT<dIBK*HU3 z_Co&i2s_|fsM72D<9wd695tAcdr1BbA%!6-7D18O{X56Mv_|6(39`z*!Jh;UhS1E* z7kVCW9<Fe<u<0%b^hH_;(t*x}4848R-3+{=O>!<((=L`psd@_F29S*&2TvFR9Fs#T zZvo!kDL`p1h&7pXh_%fY+1^k8zIpwe0_lN?PCe1FD8b-caCVzyabiag<*f&`SnaW= zy#4!z+tNVx1Zl<hHIAP#-W_71zzN3m*3&hbfQIDad^y~kZrR)0%SF-j@d9tGw>yYz z1}j+xqszd^iAYYpqF@Er-xLWE`*vOQdx(QM#Nb&(7EQ(O2<GDc;d#J&CLKY?%W*n) z1|})8G*)h+*buIhY`gG5{IOm6He51cddRQvWALqDV5k&mafl<X#uPhXcGm?e&)0*D z2f^(4XRt41`8Axt(BVxs+R!6=e1)i0R{|uvk0Y>4m%z)Xy460j9N(rLM`Ew`!b1Br zK|fv!;*6JT4gmHA59h$so{CwW1^F?25ea|H!^^wqqI<Z5+*KCXuc26Y1}3nc$M!=p z(EViK4piz!`devCg=FF@?X-y7g|<e$Vq;scX@ObA_`YiYr0xcd3vsYMe-sGcmOIMW zd+Y~~-7qvwgl<pp_qh}2CIn^dbr-x5y{4ce+@<+xmO9f1>9w^>zKeT|B90^N(DDNU z_$YyR`|fb5%}Oy?(JH{px3CwSzjXg62&k_&xj^DrI%|6mR-K=J9gK4TGe4LjTkLET zEcHYVdq0&gmCYOSE0B9S(3o60`09I=ufVgy#flkpYQ)aaR$1ge2?x!;11OZ>UQp&g zrqT?8rmd~*(Ty;|z0&hLgyh};YM9tNdT=~;i1#}aHaYRvCO~&D2qttQyPqAa)94dO zoxHAkA3_^oARA^0ez@ZIaQQn0kD|kD7t=P_XX3p5fo_`&aN!kfIxPgj!k>QOU8{pB ztHFR-E4O*ANi^7-ImuSN!ZrzQ!yGEw{?06Tjc%vIcVf(!?juOZF9R04mSyRWGp%|D zE0MBX)D|w)TK$8Ap_{<uH-^{txE40K^;Wry0(OgCTZ$K4EG>t;rkIKA=Hc-9Vz}(V z0p<|3v|@*Fi3R&o5GAE9#6J(whX;t(wqH%qccNYQlO$sc)P%gC-F8fKd(d7fpL(d* z-C_8(?;f<w^C8Bmz1&F`+EFAfrVnk;y|wPFV_Cg#zgy++Pw2Fsq35>hw$#)hbnto` z>AtTq<N%iWtYjJqv}|~snYF51SKlmhn|2mFT4+q9x8(^I2AA$Gl~00=I#sSCNVnLE zF=DF_X!XvDCsl<ov~FslT!0gby`EFd7?PqEWrJ+v`%J_Z0s{j#s(-aTJ>*B3<e(Na zVpjVCmQo389agp94^jd2##_Ev_i(divL#ZX_>R`!004NbHR=n`w@~&ZA|OD`b2zfF zYgCYhS)Y$S?&rb<L`=Gz^JBKhp3vhB44@yxrlh)FP0)f{R%pAA1--M7F0r!Nvu&`8 z(QwF=`1bt#tnE|O;lXB0`(A5%|J>)D8^rw8z<C#7knx3QkOx3y+7*_TzMQUOL=s|a zsM~+mNU!T1uE*@!VH|8mmPigpNzCt~D(ydSn|NZuQkKJ)1gB>X^j1P68)Lwl+!$YH zuw(E#-EMz_`KLX|;r~Jgn<dfMcJ+aFi|ruv7V-83vyjtjKZ+UJ>B1?rn=fRh2d)df zTTi!<{3d?N1Z*W~%4v;9dqL5AztAO-gHvFx0UYc^*0L4$bm*#rk9rVH)DqCGW#_e^ zH{H<8pjQss^-AiE*6^bO?kp3Jqayn-Ye9d-2Wh95N?4C6j*ACfz#tA>?`y{LjR4*t zN{yBil)XQ_LeoO4#O!m>6B9|Fh1_)+$bxL|{5_Ex`m-~3UeE?6XoRuBR^pjKk{2{y zwryZuR}T$X4Fla-Gx+DrwkgYey6FE}-6d(r1rAtz<~nhKHb<?^eZFT}MzrJ1V6M*2 zWz5s7KY6P<)n6lH-PaQ7BBG+ADCnjat=!A^2IBUkM&#LS-H{G%k;6{YvDRQ6V`n@H zTC4?z<P_CqsvB5kwM~kmsC^Cs5L;)p-f9n}*KR}YHb-l??5m+wsta&i5w=oyU||^# zcL&-(f)Uc&&=OWHc5UQ7wEEU<#wNBPdWZAiHz$g#Cw<D<60~ow3>@xoZktiGsiTK1 z%O9iGvmN}^?+Gp0M$=a;X|YX2wiswFA3%R&d3EU<{hrd1VOp84LT+NiwQ8KdN~~&` zrdsLC@;jr(#9%>F0!Cx^Ir>wyA@RM)Lh_1@47d;1!T~WFOT3a7S=oBtv?HWCW~m%g z6|=u;f!?r4z}<o7wKijSqIRMEOQ(#XO?{KT@EPA>L;Gx8=S98Pg5WB!cdxsRyC#Kl zZT)j-Q<8un<rq7~Awa`IV76>vz+1F!$VUf0nM?3$(uySv<1Y4UHB}2Bk0M4a%wFxs zd#E=ERAq1=u5HP07NYME)?re+w$0+eWxFW<W%ctksVC-hn82TKaJ2l5Zg+=XNVg1v z>CU=50H!eJ1NZ)%E`hp-=br{ea7)2F!7W9<hBtkZbm1!qTlEymmt~Svdt!ya3NIEg z5-clqtza4;qwp~*_}J7uwfG?lv#(3D&=-I@@?Yp~K9grVU|&?F1v2<xCb&66cRf8O zLx&VqiG_Bp*&k-9jc`9pji}}}-&fOHS4+UPB^D}|`Nbui<zYeGc{na~kf@XV{%AF| zS08mAa&CpX#xizoxZrFVm^_)Y4=qW~${=xr57O^};ODH<N)vNdq52z#ZY2@N&8q!( zd=?pe6-#!AeBZ4xx`XGPHYTwJadvOK&Y&S5--0<<!l1PG6R0Ys&%X6EuEBzhN|V2k z>wx>xQr(EyYew`VZ4U=G`fkRx4_R=9eEelN8Fw%nCw}UXkNwuI{`QX>LFaR}z(QuX z%a<>gmTrSyl)Wy_{ZQ8>o49-gnRm5JJq18}@H{L}k3~H4!V>J)HGm-KYc#>zQJd1w zv{<{DpKjV|V-8f_XiN_E3n3E;2P#j8UH)H!!$kyO*diTc_rN>{OhGaGp48vb-t^LV zdz+O)(711*wkxNP@)+r(urb`j@HlLQ04aikm-pF^?@%y97Ft!%=c@<W;$9i!?4u7B z(Uw(er#k7jY6#4?_OH`zH+n?ObMJvYRPMu73ey~oC~EJ+6sw&Zoo7c;vkvfShY3hv z3oX#CY5rCd<Fa-|`@R<2TQjEBJ~y);J6?72)TjgC8BK~iErR)DdB8}yIU&#_J5+D1 zsO?^+l{$_;MsjzqAPZV{Y~lWB4=g2F0k;?uge!{=3J(&!F58CGf&~VXbO&Q}mf3tP zphx{Bag|=Bvs%@LS+zQ9r>___oU-n(ZeeqZw4kg)eHSU?g;~-r&@0Hxad6%m^Id#K z;1)|?q2X%)6ggiQw3*J?DqcFs5#BW^TFzIfs9o=~d0^tVAOEcKz#%OLR3R))1q(Sn ztraw}=OAI?c;vva=*@#QM$id;-{!)f`->8~zm(5JA7gsB&>Y&1_hSXe_ZMy)lyK~w zuLB*q0$I`Jkt`pi`(Nd`>_c1Apmp1kP&D#UXs=$#mQ%>$Also*cI|67Sm-HOy1y~B zxY~!aIfOpgaLdRod+B(p-=2W?pwo1j<AP%YtwSSl>sg|R+C?zVxHIHHq#JUg&^pf- z8r6sUm`LE`7UPSHDuE$XsNXq+LL0DY={&2VO6+?ORyH=i?NR9NTVJ<x8feiqY!?xm zp_T;P>)R-BcQ3MLMbEPy(p~UIrf+5gBw+-ZvkwnDGqsMyFQ8tQ)!R|tu0-z&>=s#p zmE}}f;)h3TD#12+OmUjq<BS6{YzY0Hhj=EC9O&*poEiZ+osQXvOnN!p1y7`itd!aZ z%phUh3n_;YJ7jm!oH|U`!S!%|b4c%#)1Zj_HW*E$Qb(J6S)}y(n<szdTZ3~JIs#kj zlOq^CEOxljp?qQUfb;YK)qs*dg;JuZqOg*-r<N*t$Y>S4XZx+KRvRa3x6YF9j8!F! zXSkT#-+m|HSoUN2rsQFKf$7qB_w(`ejSMV}r#xEDPq|l9nkg604!9UP8w%RB4WrUC zG6YA8Q&V?Us(pkb$YFw9nabz5Xz)ni;Na8aczhxk_70wX|Mlsgf8)Z0<G<s3ZWcUZ zudCkr9hl;_yK!0NLyha+as!RbjE1gL@;;;1b`US>Hd5CmOJ}b|@1W}(HCN;NT?W_w zjUW1>H6HdfX$b+o7D&P_u(jkaIQ!!IynZM0L+$U|1Xmqvu7IdeW_5?insSV@YU{-+ zh*P71Xpt2ggJ%8=_sGWTFQvV49ZdKAkti9Iw;oc%Yds;&|7A8#pP_=`aQ-pQqtH<m z{||iU)w8ut-rxTXy9eKM%y-+hcQH3PWP7^z>CVeg_3589R$SdFkHx$d9{HUneIv|7 z&f*Q@l#gn}PO{c!xYbH8mHN%s-c`+x%cGp%xAPkJ!-_C;%3W`ksQ;i$j|1d@gZG-D zX4B>M#u*0J*Z1=&q5mQMri@qX>!TLnVJHUv1&NSU1<wzAXXK75(O;3`!ooiZW50Y% zS^w~C$%h(U=~8SmRAeDynlXcJ7ufvF&L5>8YhE8Z`T5xw*5Ac_dPU|@mjzu**yq41 z)(=YI4orI9?(4l8k2BP>7F;)t*5`T+v7@#2*5Ccersgsb_JLjJ75HWu^PN_w3byyo z1w71#O++PWi#rmc0-UQ1S}rCwu2bBQlQw6i0OOWFoNY|a8pIT%oHMc-5bpbCL(B9^ zY3C$E{jsJ)plv=*gz&JrD^ZGM6|4u1Vv_y%X|;{NougznC5F7At=js)YytEH-=kob z7xzA-BL4|=hLv8Cg-mxwxe5C;o7WLvW%zpS?t0}yUP~rvTp&IsGV!&>$Div(7nuC9 zN=)Kg-=zE436!!qNK*dFHA0wP9*rrBEVh}JcM-Az<Ks32<EFMvFqNA;J3R<Jbk%DG zE219TVG0J<;Z4$YuOm&(yFuz|{G>1F>&mgJs$Rhr-wGH?=7ODwUR;#kQ9-s_{*6Pu zHQ5-L9c&0<XjkT&k(+3D^t-D9gB+1p-0BFK`<HDQ_R`fdT0^dhnWO0TMhW~ICuMji z*cE%6nw$k(Hn@yFzxF9+-2Rrdv@}xA+&;?Q1eQf_Pe%R%yK`S^JyKj~m-22;&1x4q ztbhO%^Vq9yYf9ba4pxYWS*b98tir=(?@|!aSl|YDqRZ^&3*HtQch;Sw;c304Q^wV) zDQZPtGLsM(n(eZ?SUhx|a({P|mqcJqvCH)qq*jVD_-Aj{1*+V=EcovE0~u_3HA5NO zgV!VS6Ii3+lGla{{ki_!RJWdlTnaYDClh21wQKPYW6>x!loR=@m?3N)%I?+k2eGJ6 z--0JLwL_D(&Ja`gD`+P>if?Ie+?t2<8GO}UMj+QuW2X8?Vm?xQiED3QdKX&F@lWI$ zPU|r$!2XyY7ezdNt1iQ`fzG|ct&!KXhvmAGfac0+Y-${Q@QUN82ag#a84B&g(9Fi? z_(ZwKRf0?-Gz3{-qC%5whpKQ=U-&pmYu7B{O?S`mT@<(3$E;?$11y0}|8rla^oU>> z!mpsTs27uj&5zq}{S4ok_2=8Z&dtrO{;ubtgrx(C0gx<+Kjp-+ku3M0)!<Z@gpUV& z=6N+LOvC+{e4iVs9mZAto?j-&4=Y2K3mL31-rI{~Z*Ngtt{P_CVj(##MD2Q^bFzNU z2Sz8!bm)|PadO29m+7x8=t&tB(=iSs#e+o_G5cF~%H9rca{yl09T-|Dj1=r@465AR z40fL(4morsN?P)m8BdiAqQ2}lTuJ4wd9#6ROjah&;>a@y|Db?e?bexY;UmWZ1l=5f z!{Dm9$iYf<BxFeT0g@-`dOr}0XNPi{*2LYP*8^)zCq77p=Ba$&0xtK5WMTB3mp&%_ zIbVOp$b%7eUmKSK?q2=4XZ;22;_ObArCJS(1Jht*`Fgp``flYe=GdX#Hg#5kvlt`@ z4G_$p(TYkkmv9saulyarmO0G+VJ|K9OL~5ktN51dU>SVh*=Eorb)Zc9Rqg4iop}U8 zg_HO7kVSFSO_h{S_KSm2k-E-Jzj&I&!8mA*=&xeFgRbQGQtz)sJ!zopymJ6@%b(^0 zc|We$wBDJT2vaBuEX;0}E<_i$jn;ZuOt_0X#<7kA7o1GN;sfLKNz>o5jvS@z)S*qg za9NkOH&5n=-x<UXeVtLh#@%);Rwa&A>QIWmn&)9o82)?LZN4u{k}i_5Y96kUvKcY# zZ28T2WvJK+as3Cc<#7KDMWi>3E>b{5;K;$mGZ5m_QLF2Nc5`sU9m(227Kg0L+<}(T z7jh*>|8<&)v?4Xxgt?~t`LM(m0iA0{iSaxXb^HPsQWZfyFzjK-S|uAo@4MF%^D?e% z;g##Jsb@W9`dIp*;i^lk^nI03S2#GQG6{PYNzl5PtqENDY)@KP)I+DdSRuEaweLli z70Z$_sciv;6akC~K9dnax1CSEbnyG1m}YHxz;5MIn;`K`Vj7+&V+Rh^yCYW@8-ZIX z&LZzcJ5AFLnT-CR(&Ks@&6U=@q?VyR;Krg$-eXld`SH6ob6xPII}BvFx<rL~9HkTF z`LD)AyT6JNtb)e70b^r-%4+J)4NCx=@F$PUh$eIaMD*DOZoS#!>iw))BqEM>^HA>7 z?b>1Y!+raU3>6AKuff&dMR-Bho2ub9Fcv1qLN=t|k_cgyV&|xul(?gkpJ0S&cwiM} zIP9<fzEOz(gvONHFXqK=bE}4KWzQ_G&m%W8!dFY0)xw?pmmjfeY?>sn3QY&}X8Xb7 zNCf)c{*iyuHOS}O;19g^=P-bFC=t@vQBm^J{PRKvVkgE?5{M0GblVs(im{vTiz>1h ziq-=_<Wz{*d6|V%{%9yH(X4RHjfiJTE4D%l=02n#)9uVDASPV57%a%`tOpH=&$N8D zr0d-IjgMymgxcS&VkpyvZ%_KKa0>vt=>}fPW;)hkaAwkS>}L?oF9r7<mFxc6h}45# z1l-`v`71LQQ)zb?_BN{z-MTAXHu>hwQ56HtUaM2T?m-aMi>NuOi%vXrWV&ysyVaZK zsPtTO1rD4ymn<|3fbZ|q{0!e4r;CZYXEdl`E&E#|6*qEN3->(V4E?>=zrXV#7U3X# z{58{=XwerY&(}2kx`EbSuf%TM9%qrtLTpG)3V(AD6CF)mjs~F_QFoq!tcyAA>+fWi zYBWFeK43?@o{MkcQ%nB2q2<VQ?=#g~4Hh(oj#yRi%Ylb%`C_eTtl_0Bvlws{VaH{A zQw<);9CwYuRd6j7p(Urp;l%y~@9)_PhvNsV?`ONHmZ1|>5xN3w-`L1quXTaKTh=Q? zJpQAy;z?A_6Td|R<r@sHH^LiF{rS7b55m~5&)@&Zp+2@VQWhAvr9Gb|D<1nndc_SW z!sJ@ScjSFn4nxFZ2h9)zekk(Lby7vqH4lQT#_E|*o(t|_#daSV30$ZEp$K$O&n*<o zi92RtH-@ZYAh_D!H%O<<_73?nW4|o93ia)0Z-N+>#7%!`Rk@aKgU#DUeVLjs4K~4; z^ysSs&Yys44waSqMqZbCU$7F>*Tl6A9(<m~8riF%XTec6lhCoS9e~{~Qi~<L>O6DJ z<y?9;hyx19ela%j%ab3(_AgPt2Jzb`<~Y|bdDgShTY><ZvdpFIAF<6h{ADiX4+XKV zYn@U&<kfeJEJp?<-7)>SFJA}*Rjf3#ZS*U1aoMSNz>&Fy`c35J*(sDF2T?{}?)YKt zI_}`&!c^~jya>cb1l*JJ(a>5SNeB)@jdV;a8WZXciF$APOY!R7QsOA1Rv|wY>@4iU z_^yu9ASJ1&jA+^SwHJ&dVISTgk{YoAf_mxRFg?~4bE+dZn(hf5iW*n6r0Cz+K#>QZ zbgactLrLl1p{U~3x;%}x$E%?E=mq064ozk%<J2lLC-I@>v%L+<kj2Z1PUUi-bEX-Q z$5hYxw4gD|(l>~PmnTx&+P`$IOLp;8Egz8?^975&?DD0%AowQY$g|tobU$?H21Y6H zF*)Xgymw>>f@M3jJov%XrF*VhulQp#hg~HcBVw$y(2nE8G=(}!{rgEg(w;)|nfaL^ zOPpaH9JP9}#NiugclXu3)%IP@cMR2RJ5?ysQRc;RBF>7AcbD$eNr#fiI)8G5+%(_A zl85B$4ex2qikUu;k)b|32kuJs6wtw$4Qmih4P0bwoM*p9eUa~49hJ|kJL08vJ)f12 z{gAX|d<Pm+g|Bz^a%Inu!!X$xEuqh!c+&%q6x`^yYHqNQpM*sdayVpyMz)#99uWth zHTo#_kHx|GfVd+OKU0I-9pp~x0f!6u?Q+GIBj&bSr_SH6*-{!@9Z5;b*<PKF0VdsD zYGXum?O_;;b{u>sZF|&<#GF>E!1y_+ujy60W>B=OubO1M7m!%h%X#LZr0;lV2~}Ax zvz~4xVGj2HBnMqVr>QUlkI*7e!r~moCudB@;`wxUV=+s-Kjm?Zz{(k;8H-a-6{@o? zJg#!Upd=e83BivLE`+i_c)P5h#>8gM3}*1@ozsp;K5<7WhQa4wB}$FWWKE8PZGF-B z5D>J-jiJId&Jv;u(UD_djHuFVU@Yla;N#DWM`5S18d*pE<r5Vp^<x8aFIl=gclxhe z!NGqdd*s!3q~Rb$Cm)lQ4Ff#5KWgd=;-lxAc8Wfnl53ke7q8X%DmA(5UXv)@Gm|1b zevS#zcttd3ZVOS2xf!AC=^*ENSy$xhg_`(Jgk)8p3I;A7*@r5KSH<enPYHV+pR6A@ zc$6oYtE>e79_1wZ5)<DFUA)S3?$1kp?BK2aOVQG7AV|E~CjR^_`6M~bv*T#kBY}dY zXS1Bqu?ZVc^`&VD7TEbpB2^>YSq2+A78nJ@AroWqM;yImP!Pz6!*%Je%6L4X01{tc z`f7drdxYclPrRYHH|N08^ZLK~)(;)dVzz(53qS0K-*Ok!S(G?(ae;gP^OP)n9-^+* zRwHG-Gb+GALx-PGe6#lquX+D7dko5gn%B}?C~ZZu^c<Psqv-IzCjf(#_}neSe>xl< z4#Y0AoDc5*zutjV>%<i>)HT>|D&0AGNl_7GyKif?U`pAyxsz4@{J*e0{=p8idXVzH z;Lgl~dghy9C6IW)hr#{#yot*SH4Ic=FgKw9q<i@$-8ZySAy2sgYMl~kbPTRaxAV!4 zKIfY{lw0>Ud)S}k)(YU;mWMfe&YoCY_&@vd!zQC-&FTKV<OAtXi4=Qta>gWx5$5zw zdcG;e&Z<&?5asSpNl(0pSED%ZejD)0zU*bs>wOFnl}SY(l*wN0=E3)OB<Uc<^|((O zvL|Rce1DwLQG>Y&yYueyy`R6*XP)<<F~A+(;ls?A7i;Dl=IU#xsJyIhv9st*k_k)b zAtS3|`7{9gqkU|U_L)u!m!D`KGf*kVB`VYZFoeg);SJC}Weigh$v?#u1L5lJ;lzuR zUA-%yrsXwI<>taL1ZMG>T`1)a<FcDm%{T2$7w_wq=l^9p-^YF@w!IN#V5TW@Q7;0a zv{DYZ-_@JhtbP0Y7<a3;^}3bLQMjkhs7e587Qig5@W@Aji;T$&)zGn1Q)|R3!K-&W zM}f!rP_!Dx&;Xnc$`*qXn5^=1{>s;4F<jDlQ7iKs)(@+Mk!b!KqB-Jwk`Px)ygR;B za6CeRa&vBT#Gf3AF#X5>Q10N#>_p{%dJkIo$B4Y{KT_fdqdp_CRpquDo%o)Qbuk@m zxaS4{Mou+}wjuCE30(Ch{#Z=aZZ;5m(BhNVATWwJ^C&dyXQ`!3daF4MB&TwWjz|^> zALN6~P?c~rCIBDdhuvMs4>kcg=Ogpb(dpKxu*PwHM_##GEFF!&CANY{#zK6{9K{!A zW=A?^!_?sX*X+*0K=xpmb5`@%(B24l!a!_F%uVBYl06tm{Kw(t4JNBzJo(MylHg9b z8*X<tKsh`^<yEMEJjiOZ0?x*9us_MEso0*1vCF$whpbgv^Ec^Exh#QR94yRu0Opzn zR_%|TIb2H>iUROu%*NtS3`n)kP(|AEwb`-Vyu@?f!w;r^y|(=EBkxF3y|kOn7zYVW z<aQO1N{WcrnVTO@OE?PU>u-q?E%Vzi+y+@Qk7;EBk_x)$qHj<BNlVp^(o)k)Tvz`- zutz@`a5EzuUqw$&hW_Gz9@>xW1oD%Y;%ANy?cvd(@sR<v>7yZ-gkT>rR_`0rm!*}e z?baNAbE;cGi2K0V4}0^2+DP5~mZ{g-TD`O^TqO*Iu8U@REonM)`f6!6p-kI1Y&bi7 zsr;#vvOhqRCcp{pO%Kl;WNQ_-T})}S2Q$(fY)|`!gZvKft>)ho`Uahlq#DQMvBSdg zU;!s2CGz3!zcZU8gQ2>+3MfWLNXe>JHu%~99Uhpk>D}(Fyy28UK6!T}k7A7E!31gk ziyvq60eEHu61r&M4Vc(Poo>i~Hg>03o9%9Bjpav9Nq8#+WU^9y*W?Md8A)Gx_O+8z zViZ7X8KnUGvNly=l6o6Fw+j%{MMDs68^*b9-1!y5tI+a*f(*r(M5^?g*J4oLerebw zn#aPFn#X*`ieu%q_*NqT9RCD$qk51@9Ts~3hr@LSE-)EQ(DT<f1Lyx8#Ml5{ghC8? zZ>#Q<paC;Z0ZWEs+y}fvl@C{k=m6CG;?gt_UxF6WX1<hNw5=btd;W@#LXcI@1mqd* zj4o|X0d7`YIueQGlU)`K?3)r>JL~f?09K5;$o}-xYP%5HVBqDqhX8LWxH|+81Je}w zSkqNT3eZxpXQP$PrvUi9{o^SzVK*R{cnWa1xPdMYy`%}?L3~?%M5SZ<A!2$@Zikj( zz#3%m8~tG+2<dz{gsnsgxr4FF>mOW^xi6*i(eT|U%aO84$_SoFp0vbTDLOa(dC1J8 zX!-3g(Yl-UW#+Dj(X(6xX?l*qcrjDhGEn-ck#dKj!^?&3$xzx}<O*WPXb>)0L5V{m z&kQ?G*3-hf7DGkcQdeGozxr9{G7YaKm(5gb?!2_Ic}Kj+3jw>&9R;$cVa<Jl;h6*9 zl&;&<;1cxz0J(i;ti2PHB!_lM$1Tmg@8;<vKZ~B$sx<gaw1G6bV-2Ke@&lHY)q9hi zh7fwW)p@W7fR9#yikWL#B1SM4W)JLVI%?MdcGL!MOR==nYVzT$TC2`+UN?0SROPp; z+5s1)<@{csmeqh-Fy9=@?iBuGX=yhAfiAex=D(o(h;m(h%ob!n+x6ovtR>%d+d46L zx4J7g(QUZU3@LCxHM|3|x+0~@A8H1HQEd;>kvCI6zX0c^pPzn<mZT~40MTO^I}|K* z;FxGbK#2FgrsVZ_E4cYa^wq(AvsTh``SD=`pT=B87>5B{UHJ;*_xUT7dzN-B`IpnH z(u?OZoT=^t#}Ue5@W*lVQgr;H|If(I<Au<IW}#_>#5K(T{FAGTo>cEBc-RmMy~P+m zlSuHA{Hyed`@q4AP!L9XkY@lWCvjew@WVkv>KhoQTUtPum8{CB{fjy)eC#ci`DtHb z8pFw%oI%!hqc}Iiw-z!(@=r)8#+VciK@pya?ZzF2&S@r<-J20G#5kr9shdxp^FGVt z6v5NlAw9kI7(ur(%G~{J%L<iLc}enW&R69Ivp%IoGNL>Dn2MJMtF>MPF%YnJKzF)0 zm8IIqbu}jCW!7ly<4|GNQr(r!H@K(BGfeqgKC<5<ptTL5jQ=5l=X|@+e4xv9UJE@a zrW{^z2!OI7v|FtmSJr!q7qd&7)jM+;hO=GC&ozI&rP4Ky<~B2olnIS{=w#jHmLy01 zyLx}o3Uh6yyy(lTIzsjA9zntbc<;`LDL=k6w$JI&&F->+)|&@2dz&jQoHTZ4VK?kb zu>5}C4#;~V_Qsz!2<N>Q1gBX-sl(Ju=eE{q$MbbuPjuJwG|^nE14U?8^>UEaC7I0H zweJ)P{cS7_S8U!1sDBPexDIae3F@SNkmV?4to_9)^_f}j(=-0B-zYr$u8Y(#hXlji zd(||e?!5fD^+T=IQ5D42pOW4S^9jxEGUzm`c{@y&+4$3xZ4aDVk4;=nZd2H4W6>A& z=48}q&Zfo#P*%x<g`E0#x|e%PUcVgbR;*-6eH?SqnJkL<(*85W;Ev_-h9ROJ{rPlX z<HLjfMUwODqumnO&Vq9ZRvQZgP3lCk2vo$ukJnFb=-{Ur-2iEc^ke!3DUCVqCudKz zDnJSZM2?vQ|MZWA`LCK)!4NLpQQ`@#sT(R9Cvhr{$1A*mg`57AWP+a+1Z{wayPM?| z2;;1t0Cvg)iWvpFJaRQ^QG=LJllAh^)_d&*K*E050QLP;q5URxiMmXNXR<}=s*VyO zk<ThENBGKJ8$+(~coxTg+aD*Yhl@MzpZU<5IWreJN*VN2X>vcwPS15&g3Xd`C9{Z4 zMyu19sgW(Za1PN{5gMMqO&g{V^BKlTrWh+#gp?H0kn#laht_**m(RnuqIP}<a<--C z=Z4h-bo;THrg>UWJi=mgX=F$;PJ>o3JqYihsX5}}*E#E-myH--vA);?@w8d8?4sDV zVn6{0mCUYU>=j$VkYPB$j{y*?xBFzVH-?r`fR(i@RQwT@fNNKhjCxt0ExO7r>jFob zO6NpjoZ!~zsq(n<-xdpAO=%i2%_Wf`)h#rJx-d$MM*d$z#VONt>@-59v&S`$G*jka zh8^D>z*mb06tc?~Y4)vHU>(1I1X>Uf<*Efd^+x7au4L>dw-LV>{I=n^U9pix5HQ0r zwS!h%b8|9>TQgLAcfHg1paS4`8;8oVO19^kPpNbr76(pXBERyK9Xi>G!wwF&oh~Ef z@tn093?g+ts*JB!(=P0NP!YMK4aExni-+f=JM%W&@8`d{;JoW4xP2qm%9`wV^`0^< z3va)T`~|WpmBLeGf|Rr$Md(lA%@MnRdX4W?kHk*}_zJ}k4L6rqbX1wJ6BxM~<eUT? z?5~Yp>E{_Uzn9ziF>=mzzzBTY)}^1cx8<zZen`IxPdh?QT?SK{>+iyZYx?PoUqQ8* zKMB}trZ+G;q<~oEznEi|P@430Q{*T&2cd+Rz?<$<YobD}*6Yvy!2|S)Px0jIy13(A zeN@TD3Li!?wu|1>{63-Gd`>I1e^au4ZnQn{QTS?$9QTsA<LO7L6Xr5G<e!)>=mBir zC6iS*K$6`_JE177E#l54vI9={?ZAjAwZ84?IICdFYGJ}2a?E;pU1UUr)MT0Ts=T*` zpagGZX2$p&@CpSCrFtpwIO&|e<?FQ?O2u9Y<>Ch0_nI?=!^pqgd%RuH<c}TvIAJA0 z9O<~koNL#hf0t~a9TUv|;9(RDQL*#OerGmSYk43m18ozq!kMdc*nM5{owWF62(}DL zQr{0YqkD9Jv)ia}clPZ~m4#b{4OEQ1grc+rgT+=>KIduY5Qh9rEa@eo8;SV4&#W5~ zCLDWZ>};9})w*@c?YYt4g5E4iZAON3XzIXK`!`g2e_31~=vcgdr*k>^JubZK5Syu) zPoAG}VT{s5k5(kShj7A7Z};g7erhFx(-P@`PEk1d^-u}9EZh<cL%g<o)G63~=r0?( zSE#pE{nahOjY1Ao1XC7szHYSKTrDM7y{l7+@7a*jw!HI>mcLK5v!so^c7pHJ>1mBR zTi^(@PicZ0?8cVv;|3X|6@X%j2e^7{Ib^1tErhyv-|(fDEbdHy)-H;*q!r(?^?q{R z;{v|z^H-pDJ9MQizAxitPnc?F&$^h%;Z_-`#?{JbhL|KGA6d>yuGdPR<h+q@cR>zp z#u;iSvbxr-KqHZ;!KtM4X{PQG)!QAiW#Fg`Ro{Z@m~YX+4sOW8_tZew^)4n5=A{wN z$j1J=a(_Rn8F}Kc&i~u*`mnKxPr#*w3EhaNAwh~P$EpgD9!C7V-KUn?3En@sZRuog zmQgJU=?5p_T{y;jfm)NY;aOjuAZZlB3XzA!ewzb4B1ax#5ipsYIQ#SJ83{*;aX1*e zZ0-~q$wan03v{kHG%G=vjk<tAg-x_jS<yQV+`B<rD6la?T->tyR*<ZE-!h|#@(YBl z2$}9uAfuy&LPPj>BZ>O+DQ}6WqLF&;BW>p;qc&Ho0DRat{^49E{fDR&*TIQEY!k!M z?hB_+GoRDH$e&kWs$&kD2RYo!#PST+Wm2kSsHv5wxnxV$+5QlW6Vh-uZ2w}R!$LR< zZ-`LMD^2(y`>n4ky#2xrm5h2%M>dlo08}2B1|9~$IAwHcc|2oj!<Cd;)^CYgoem*g zN>#O6T|M0}>Dg4;g+Y(rnV()yERtfXo98XjzAaIqkz~Kvl9P0vIE)z-w?Gk9b^7qT zKlV2qDo6mJVM)n*7yT+$XU{F0PdYsEHYb^S)fGa#=lB=MP*fvKRr6PpleVL;@>*(( zzC*eS1*fpFOR(2T-3*_1>Gz)-5Py#x61*ER7F$DSP+9+;OnmD$Ypa*A5B^fg`1v6* z+r6#jjR@fb)3Pl^s~b9(v~7NIZ&2PpSkWI3;6P_-@$R0zeE5O`m}nqX1cK;`8KSap zqi3x}okUY-FReI{1KX3&qqFma6aM@>|HAFvGIEDJ+2Zpp*PuIc>Du!x<*9!ed>6o+ zIN9Bc&YxVpzvXJG5tBcGL74=};&mvJjWO1Towz&zct*Y%#??7&^5|HP^9f~Le_faK zQ)i`Nq(aUIBrd?mSuyTdf+__5+c~IoAy<8>jc@)|cbZCSID>21{;dI>E{jj93xQau zfaWxxRh-$Ad6zOonQWmx6i<NlQzAoTOPI_@*PA+%MyxALZ0)}kdT+SLOn<hKpRr<= zShLSFF6x}?_Q#UPQ2O1wwf*7e{&{>3hKjxqGueCwJ29LZ1KLBOL*Vq}8|7})rH1D2 zH!cEZiE^%gxY@|ZTbeHb8erH07#NPR#&iC4W>SE#QhnKuLowiyH#+CJ7v-3mVIIrQ z)0D$@5Z@1*qpL;^;${wiFfrFTEcAEwwfx%j4ZO&nM@!Guz8_aUd2ncuGalGdPm0Gt zKcI8BA}+gZj`f~l>m`0RmS(e*w&$T^Y}`L|yr~>w$HPNU%M}q-3W1tJ9&d#61u{Wy zx{spt%6I{)iGhOq_hTN|q_{=M_MfrMz4c&3LJS#<qjP(%&IF`cE}1I;B_2dMf}Q}q z-!GmA%XwU$`$5(Baycc&@-E0fi6(fUVs0@NUm2;Y{?;>P&MJ^s^|V!u`OqxPr+PYh zcF%2R=te$Al%Jh4poZeE8UaSR*udnIa6O(2Wc#x9v048V#F~B-jkF%8=DUod8sp{| z6F&mY{%VWxBw2rjQ+}tE{98c~mzgkEmVbq9jSrBDcyq?WI6ai`Y!z=fFciC9KK-nx z>M<o5YSGGnDMJInGnh)gz|><llXQQQND{g6R?8m=$4W{hXo&CRaG7*5&M!hZ;uY)0 zYtJ<o9$FmMlL!@zHzg!7>y+Aya9CLHsb&u+-DZ}qF1!lgdR{&Y68Na=!4JFM8?7*d zZ+=gXtq)~LW%Dcx<+NnOD?{PY>vG(T#=v(Mjrc{s-4o9%_B3FP$uO7j(->6<n!iri zO@fV*^VWFP4w8zp^xn&SmvtIuDK)f}j5Jg1GV+xdz0r4`O*DRxB%7@dMd#K`&(a~i z2uQLiM9`d44CRBE>IcuZS0*Lb)w^=DUOv?9%4L7=oalvG7!9QuE3DGr$w`uj9Rd=a zS>hhSA!qM31F#W6(hAn`Kp2h72xGiX`fe-RH9Jv(RYp+LX;M(gluUPe%^Z>Y8BFa{ z-K?COGN{*xZRoki-Yu`cV`(#VoxznSsfozrAq*lVZ-|Nlwp0RvO7S4eBIt#Avnay6 ztfMzKmzzZA0*W~fx6AjJQ;7)oNlO-shR6jDHX1K|8mop&GG|F$b^1OfeWT87s0^p` zbS{UemkiZ4=j8CN#bWdq$7H43aWQ?Ti}hXC*PyP6VRKL(5q^(9ELL|#!-)GN06zkX zPydh|`=?Bqgj<`1!zDhDX86-b7n>nDcIjK)yG=At#h-9`0HpJ=1^`J}pIK*nWw6$l zKLePfc_B~}+(j&aU%^}#xDQ3Y4w0P8@?RbffQTUFeZiMU-bgDiz_w|Z#zA7<J~IWV zNQ52bX#tkuow}U9u$b!@i5Eq9e5?U3VK*LoN<>3hiScijThe#N0qu!9;MNzJ=G4bk zFd^qP<K1eC;S{(Q<s)xQ$5$_<g3X+8pb5Gl*3Pc7omHNHv^{TDZM!r)aCWz9I_cr8 zzKz}ckSB`=$bD<3PsQc~cgfyyMZwUi3UoBdC_Q8lm8iEyO%EtR*IW$*0n@9P!Ivy! ztDyFmySjgP?XX0isgCVc8bjGGLxua^LT)YNJ;u+h)|ImI-U_`Q!cHSGlzZ}=d_2qm zj5;LfC6l04mL`>!qGzf1^~b`KwrnROR#(1>JNnO;9Ts7#*v+b??#{nU;8mSqs334M z0xi4i)qB<siyOTCm`b@xr((+@vC6O+x`AwQI82qn13-sSX4$1bbroksA5mR|D<kA| z6zB1;<qGJOVe5#31j`z?mmI3KQX5{B+3iotTPobB%P3Cf*nm(Vm(DRn#_P&2Gat1q zbMvM8HXg0H^qpBXeOhS`2TdIV8pM^LOGA<>7*uL=4d#EVQ)R}vuE_MKw*nAZ6gDG; z3)P|i#MIv-0DiB%d2an5QkTs9*V~Yxg3O*;2c|IjLX~vDa>-mHjz4q!mq2NpC=~In zB+NeIgSd1h<GTZM^{!|I&(u*2L;2cz;b0dN_sdjsnth|P)0Xnxqj1?`+TvltVry~v z2a^|ght9|k17H7O4_p5Wl--Tqu0v&Bj?L33RffG5&T4b0B8^nKEh#~w;cdFF9ul8{ zCQ=Ys4;Lr`z-4HHg3!M0F3m)8q;B4%-Qr+xo2=?q1{v~dgnNew!D%XA`HW1t9~Dq! z(;A?7b))(#TIDVI7=USw6Dxg1q?zi<_W~5NzfCk}1minJ+FEwJ{<=S}%u1$9z6WZY z&)kIqycnHn=|a(koCSxV@ceRhTIg`#VkA(^@2(PUB(iTw$Dji0?hV}7Q&N3p8hivk zOxvnUPku>wBk#n&tfd;W%U1TqPX>j6fj61Yhc>3uR{ah)yyYYu_tA4tG^`IXRo?-) z;?`oDx!xm9+UWfzp?d!D^+zIPRZkfm3k5&|rV~6{6@xnaVIk|n;1^l)(aF-OXzK{{ z{^IOo3TN53RcyAzijAP~EL|3^qmFO8oJI7Kn9@L}l4O6a9KGK*^BWsky_c+{Q2k6f zSViZ}EMo_t9q#hcSJr{Mf9Vbp6~{Tlc1ONgSX_EMpdAg&Y*2$Pq9K+!x3VM+f)U5@ zprTasei;>JRUP_Lmetwjmk;pMW8c7&LQdilVQs<-yU&9yL)mWrCi$mY!t^KrX%})W zPCdAcBE(jm!!QWWeR<G1HeMN=MtdA4my(4%donBYJJj=_i6ms}=5yeHEVad$y-c;~ zgifdK8>Iat8*@pmqZqi${GLF<k(q4X`5+;XBTs3>=vTBsVvgD1B2u4W4^-k>*$@>k z=A9a^`S#CrTGCdpP%z8gjxkHDNF^VO^~+dKQHZm=$f;`{7*c|8-ffb|QlJD~A924N zt1MU@$OIc7O`ma6G>wE`zpBWV7w6Qc>2IDUz6Frh0b>kb@E5gm`P<PIXO$-GrVV~b zc*pTOWUptd3Y}JZ+~@HElspWlTBDi``RN+(sjL`SAC?pmRqrI8CxGyy*cAy!J$a$k z)_cEj39gJHK6W~$FjT;Y*mlZM_`eexG6YN``Epq3ZxP}}k%!=OUe>+IQpfouhrato zv!I?TLj~$x!m4*w++=ZzY-s>i35LzKOh?RR?WCjL%7NNolI(zi)Tq$GxKL{obDTK@ zV;*&%`0r#C&w#?8kqh@6CGSorl^h@8jIU>$ErW{fI)F5H^7E<N)x3p3_uH=s4P6tL z?it_T0NFEh|CTbe^<et*%V9HDsJ`Vwnck4#tYxMN&<qQ*-`C|CVZ!v>xSOwT+i`sS z7pQarke`#-q39oo)a)UQt@;?#*WnLNb)`IJI#|}RljiZd(kNw<3iyz}2)p7EKC6;9 z(k?c8+<u||`GwQEVmd7{whjyxG)TpkVQb=u;f_W0XhBSzr5{Z1DVc8Q>b>@dFCD_X zb-;b4tL^Prd<e+3P`%0tz`5o{P{OC$*L~;49Swk2axPbavJX$(_hE=Kc{OJ472D;3 zLp@deWr@Ix1L&)vsbTvYia8$v6SsfduI3G{%<4c8e4QE16A=SLpzY<S0CM9sFYdBg zDy<$_z)`ETJD3cp(QS8v1vWlKOnWtiX=&7h)JlNt6&Hwu-$#M38!-LiJeQW@vbhA0 zpcr5I_IY$(${TqY!iUS!B&+hK_u11j+cYPTxGtLOd24VPY^wW!=Ac2zK$7eXlh_8P zt1TvBw?M8@EM5d0MppdHs<S<#iQ4b-zKF&_aM5*FyB~^2y%VOVz~gIRyH-a7h_G-p z22k{hm(rIIH(6cF!h>LR$$Lvk*=f$$ur-|}ccWdW1ZpYo-~h%+ReapoSMZ(gxIxst zvQJ&X{K-m*l2PEAAF8UF0^OKrEi!b+;!&A%xXdQnRDz)SzliEoF&ggjTa?*$^1{7* z%CYsi6wvnRF8lf6`l)f??0NZ04MN`wY&@~)QId*+SQeM>87|~DKjt0L50_$Qz0>vf z0)#cnzd8IcVg8TyGz(~Gk#IW2Qz!aBYJ_)C$<CYoRZ!k_)0dnk-1Ra_FWaEjnk)EU z4o<JAjThPz`)$cb{?(?h{EfbjIE3ABffky$m)!l~(8p_a)6C5V&HS2xz{E+WD_X(e z=ALJr%-$90%zZry4A*%|dkRp`z7YS9x~@DP%C-wLsZiEP@rp3kP!id)4%v4iODVE1 z*@_4$8X+QEB$TBzNn|HpiHgcjS(9Zf6SBv5p3LyR@9+2d&oIw(Kj%L8xvz81b=^;& z{T{-4NzPnyd@j^nX3zBb;e{hvse1TQy<*urIjp%3opeu+v`am+)E*v~lH<ZA;d~U^ zmM>u&JL_UtdYfRw_0!x+?`~lW9<<&C`h#e_ybB?kjVf29&gk6IHhCWEL^aGR2r<KS zl*aq-Pi~e{=dpGivMor9x8qx>-TKCz4mSC~ir?(Ql2eHnqC83__1yZeK;F+tt`opu zRsE=5WmL5>i^ak{SZ<?3Al*laU9s)3iogNyQ)~?D&@_7OtuOU^<=62E%8aay(fh(@ zdpy<^I1N$5ZzBuY#pkPWQLM=(VNp<UzG$w}JsKg%RZ&&<V51x1NLz?84DLbKlsAE^ zHAgwhl(`-u)|y3RP-UmDf)GX<n)x3reZSfI7d!R=#J90-@B{%y_nt5<)+c?E@*t*r z_80DuKO%+~GjoZS1;!HN&-S{@W1k)^{QameH2Tzv{dfId^deqUeSEclqw2Ruq1xjl zpkVP(mhASweeez`5|9NSKzgH}o6`likOt>1*hq?zjpU7GE9;`XBlh0liRsxg4;o7; zR=$7q;Ful;-8-3@nB@STb8q0p^!2!w7W|Xn`|Yis15st3s{$n=y==UyKbxOXxGDfH z@V+EARrlmz=-(cX?Te8%)#oRcW{QVbkY1|c6Rm=X-{FMhNB#6rgpgqLj&GKo(_&lh z(P>-1I$qC`UxJe~paC6*7c`87#d?al5)s<b!qV>_lGP43&hm<79cX;5J;GmG{_e-+ zhfI`43~zsDZL}iHUVek?FOJ`k7RqT2X+Avq@OmIuUUi3WNM*A?|8ldh7L>r83wmBd zmR3wIgHA2y8Sjn0b|lFpV>w3ckOSH!p@pL?YQHp{rAIyUI#+KDm)W<8i+hs@{d+$> zH5DxnC^grZ5a*QqkXkL?0x6?#lBGyO;>1!fw6DZ_vH4IeDo&L$x>P{GTp3|t8;urF zn2@acNwd1JL)g$j?XG0smAXTtz(IS_yU<eC9ZnF`{ZcJ`$DU*2HPUI#kA7myLwQkI zVYWPK=A2R}9b==jIlF6{hiY*0FUthM$Bcu&pvQ0>ox>tHZjnD%+I&yg{1tzj9peaB zEuY>|RPc4iyIRlFuoGxVix#{06qnCb^&YXV`fB0bZcL>$VV2ohGiIY|y?%Z?&QRx= z{MsO0q~Gg1e@TfQ(d@Z8t)v>$HTp4yCAk_pjX$c_@zs-0J-uG~PvmA#%!}={6lh2) zJAg1(r|9BA&h&BpbYlU($qfZ#`hj38<4HSKs?FS)|19)*ZOidFCrN08o}ZO`WBopC zIvji@tHbNEA3K#j6RhJqO4!OgWNyfBxg;41!_BGqMLl+1Z<vwe+hv*&%B8x262bhd zBFn?BRuam5v4Rtq4;vQDL_TrSG-9~W3e8?!W(F(TJ1S=q5Cx6rWI;ojx(t*@@GI7} zI3VwzaPIn~`pG0IIlG@s&Tsxj!v~}%yHkql&5m7rUnoJh&T2%R$K<<nJh$S?1JC9H zTl=KqV+b$h>YUx#sti-jdC<J1Sh|fir#9KG%#UAKS)6feIKF((Eu~36l%-G}^mzAE z*R#>4<@N(TYO%-S+th8A2!lTIGWTO&qHhX0d;?~E5|DJdD|$wueBy4Fe=dK7v9jGv zaTt4l9qGQwUM_^7VYjj{<&-_gJZRW1te?xnJzLPmP=`6$QEFh}RUzf3HJXnwrx`=I z)}VWQPUb?%(8z<^(H*9-iFv1&Y#5jZi>?7t^ld61PfZhZ>qf%FaB)AhvOHnV&Z?W> zOXBh=IVSgJ(h9@7F>{2X4pWHnx_8?qbe|@yQ)4M-`e+ARaBUuo*Pp&t{GQ_F+HqBh z-EmDv>HG+AT9nkT({(87<X8E6KW{Cq`~)liQ>Z}oB&AngKv65aFy*2yt6zOH^pmHA zE*$coJmz08%{u>WCa|-)b7v2zb7t&14^9j%N6AdTU~%%pXo*Pvf>PJS32yyr=$6_w z#-e}p`OlmXGI^F`7_G(UrI?kLoHq)ra%KF}dt;$g`<!D`LR;dFEaxRDh-@sje~2h1 zk*i?Gst@cMb|rfa0HK7&*6AM(CAE(*<5uc%eJo-o_pLFxu<m_}q{jQlx4Bjdobsq# z3h%~g4IMwzKCj`XnI<pg>uGO2)x!zP5tozPp=9e6z*1>GtbA*4K`rjBr3O?KN_iZ1 zK8*W>=WBFlBxlw>tN#t1FC!HIk=X>R!&m#X0`_zn2IEuw<Et_Kzg?Ux^z+f@%1(cM zGm`sc&cRR$ORzco#{Ba)d7$>_i6bz8o#z4PjF`hiLGz004bcihZRi7G0V9a+_sg^9 zw1MLE@it$Y{Ydk8Yj#R~1WRu{Ruwn4p|Ol5j8E7}#tubGWB6-}P)RG*=h5{-8kJG` zELK<E+^1(6JYgtS5oKLHWxn{Lj<%5D$1nK;yN}6w3|4r}@0}?$JasGT2G7=6<~Nx4 zqovO>ST&S~yb#Qtj1aBrqW$e6MjNa}HFo{2t~8ygA=V(YGvEZ(v<CL&be~4do$S7l z3>|yW!ktshtls?^=lKAC6iwc5d1==iMhajOTDvLl0BZ58XY^-$0@PSUGEF_k{`P=o z7N6g<yhl)Gl87DjW_W)7OzfISk`+$94F0M1Wmal}PN@9wo#XKS4tT>{CIJ!gyM(U1 zy2;y^-X~eM^cm9u!ae)_N6x%Z)2W;t1ARy_PV&o5$GqJv{?9(_r8GKBzR{q|Eb)++ z<RtW-5SEVhD;m*lr|CfogmnZ)N3NnOe(cP)Jas~CC`fbtnq>6ht=JW$Fi5pDRJKNz zAl|>RBv$c5CZ=)ZvmfiCp?i<@{l=3ZsZ&|fTEJ9Y<<Zlu0c_l8HXZp8SksQLs?j~g zP#W^MwtV$6J1#f3Kz{(eSJ1Ke;uL?Mm|l~_NE288FCIHh`!=<We(Lnx)2rjCK6?&( z4k7+aK*XLfs>7Tz75BmfnDXtk9&2;MU^Ws6`6F0a4qFZ5*ILDye!0iPnizHmcs<Zu z_f0cRq{O{!mtaqru;-L;w3hfBi%xX3{29|FDnY%H_cB9kpVN&j*XNP40Z1}OORaxj z+pJw#fw3Z^c2%9-JWu^rv_U9~TB^J^twDCeKxzA^MUzJ=8<d96x42ADnBIYecyE() z<|O3<?+&vc{{5?I@$bD4%la=kBVvONhcFSFz}4RVo;`M$)4p<p7QB^=s`#-G=>yt< zp!i!*vckoJVj$`)+G|YYu4~yiZ*S(&MD^KnE5*zl!o=+)2kEI-ty&2pme1a8KqHyg zWECm(`?G3<>#LD1QXjI_bJHnOXE~1~e*rWGHW)-8pofzEu&2IOi-dA*lz_CxD-+_l zjeQa!26*gj_~w<k_S|+llXqqK4R877kh!E=TP;xf@LLLEik5TV#3X?{dvCz__-j{p z*-mrrTGJ@XhxlVPe)RmNsHAYh$R`Q!CHI&qgw_G{pR=^>Poj>Y6;zfsE-l{a>!Qbe z`7O!9Y{h=BE$N7kI=hzy5T%|PJ+mkD9N@b4APP0X$cB<u&smJYyDZH;-1u6R%zH)= zqtdD7Fj#w2Vz%7xxDUSLW7SL5xzUz~Zaf96l0VTOpYo+;;PCeZAMYD%h~{vspEt5C zu|;%{Nsun5R*c*~tA#KU@ENWk6HKUYn#P9XR&p0JX7MOB9INy~*98|{_DaW5q=+u( z%P1rUy|Pe7!p5TV@uMVt5{NzTLe+|Du+V{IN=`jhfQThuy}CY8{d7#bUoM+G^P@Wk zw_Y-`F8h{52!)y#wOS2JXA!d`J8zj&QUvwPs5idk(Nh=qo{ued;glSa{0TIkvyjk! zrq5ww2!uV<?&nbb6Xh^kJ76Mwu6YC?P9QjkyLM0Jno+<!FLmWl9vufD<1M({y{wxV zXo$)4;i}EfsC${m%X!su=(S(Y7&E(Hk=7Y$B>B(L&vgFod%bj4H(9(<Rl5_<zs3Y? znmth)%MUkxM(9YT-KNB${1zr1RHF~MaM$hL^FZ1=FVY>?X$s|*;CYHGcN5YWq)3$) zes&<Zekr*0erp#=|4K<Q<5@cX;?a-N=$?ZghFgRrY1=jx3COpMsL8F(eTM<GOlL~0 zzF%`_s1x>WEv01`WEk|6^EpF@dd#cW%(aGP7IJoPgFQS66!g9QKOt={8}BJ{$}M;q zKpA%;SSg%<dg(E&iZ7G^&?4^ABfkHRgj=6;v0K0E4c*uFpEGj2fv+OyDq)gKku2_D z!<{SSSQhv--=g%(H8@$}cBgEdQ@M=qv@`b`d}!{%*uJ=x_eCykY^Zv!fkU&*PX5lj zw}RhAVCJ4;GyhK1F~MqS2e!(ogp>r=v5Yqn>F@Eads9Y5Fa5Rk4FyhC)cKcX@-5NS zIN>te##@2;7Kg4|iGbiZoKX6g<g*>XIOe~^unrp)!r7#{gB-1OQ1*(uO)~JJIVDk0 zC}hqu6RU{*+76It#N<tQN33BPP!-Q6^B{~pHKWUR^&p>nd)s2u_`we-3G||T&d*5s zsX`1wV5JgI3Eo<|%u1Y-RtfSgk-Nhjt5R70!qJP1@7Nl29GcwPijK{9?yFwpe1m0X z-H%e+?mshAC};PMF1UpLOu0`!!k5Tz23EBeV7+03qF28X#T{bJUc06O?Y5LA*$>1p zES49w&#H?lr0=C-(g<at##oy&`8+mgB2-b}#^$NZEG8j7IuAK-?k{=Rpp7709;?m; z(mLVagW%$VlpLTfZ}Kka!<mC$tXi&DXuWOcl(&AydfJxsmmr0BddepJx)<*-?Y)Pc zAKzaJr;Mh2*z&WkjA)sY4E$M?IG+_pKY@!&25$XRPCzgYA?{o0WE5A@P04bYh?qP` z;Ue_ExRuovx1BnVGW6RVb+e`<JH`GF92U*uTf+)c2&DKzg?}?L{=_)tT-uuBQcDry z%b6#m_=%RK-;Ib-+f}VqO~rjMwxX&A;(nONrh+%&g?J!U$$mow|C}}`*_wz0{Pm=K zl3oB-*J%%f16y~?5kxgk```RXm%<Vnubws_twq|h!Aci(IQKco9ntNQbve<!_Q8oM zZ6CuShEr?r&WUVZAbpLJNja2-nQEM|H6BQcm+I#sM`_Se`+W%jyB+Y}?0|k$Y=3)^ zk)R2RhJVUh2gt4JXKYxBoECm3WPU1Fb7Z%M#xE7@wOBQ4X*IjcV5^PHsrQKDi~8iU zNXu?EE?JPAHPGRS#kwJt^fO!)Jr%I&3*|WF08M{KE08e_s{;dMQfD~gpN`Ezq5K6V z*8&p~ows&vBJAH%!n@Pwt&`i$h~f<-uxbEXEd7eW_98T*3D%kpwvEkp4EnsSL!(zl zjeqwwmbxdqEJ1@9sQ*IvFQVgl9M;of=qtLqsXPUtDnl>&?Px4dmC#TH*PHS-$PhAh zEf}F;u|V<bPXi+u%Tu$X3i~x*oTygNJ4S&OuEkkZ_EhoWAUnK;&%#RGvEP&kAp7iT z`T<ta;E+xA19A;LeG2U1nmvidg+5c}e?%R?01pv6g7hpR1#a>uJl8owQm_I5f4ma7 z0c1g!c^{1X;=QaZ0bcpWxV}Cpny#GYmR#tbf+Wj!s?Z|9=j_jK3H|YEfMUCWQGMcI z3h=2@EEO?-7EU@N6@h?bToiO6HeQTq5pJixI3H%OJ?IEV6td7;3xEvuh@wPvKlWzQ z)<@~ilqUu9x|loUR4~HA^KyUN^s{L<6c}Y#l=&5q<{<bhRou#|B^18O@P%+_(*srm zm|r$+D~6F_-kS1VhihdR_Y!Ttle1<=HA>;}Y0{R;#jQ6PCI`XM4vI)mfS@c@9Vq(p zts(uE&mkOr_vmN#Io;czy^B!D{qAe(pl+Tb;UWfE|Iv@hCp-)H5beod1ojNvwx>VJ zV<j+w2}e1DT@VqlYF$}U&nQ0?+s}N$>htihVD;)R)zC$UqeNyzcp@3yGS@B*50V*F zG}621{Jjiq;U>j2Fx^GCu83EPOuPQE1WYJOd`(QsBbrEMYCS~?4dIHgM@Fd~&n=x; ziro79sLz~V&PX<$^v@ihVCT~pv9vTJkuenPD3$_S?if~;(hts|->q!k8c0W15))9g z5u_*x>(4-T(yThL5^8Ef`h%KPi@95IpEO(|&Kpv$!Q62BT2kQ9o@e|<$OP-3nac`} zhNXQ^yxfR-(9Gh{q@>Eykh`7GpRemZhOqe5tD)6-bAl9-==tmG4#^8v9I}tE!_PNe z^fk~X%^hh}f7S@VC3LW8_1YKypj!sVGTu1JJT8&Uo8r|BzufrlC^5a%tAfWAZLU%d z6{WpYyh%_pMwYaOuk1%6_>7|pHjta_erX%A44C%_`r?w9)R`RKZGZUJ15+#1Bn%)t ziB^#6pqy=6xHP@pyjqgiJZUp5#Kb-j*HoM+c~yTz;S4Ca>XP#RSO`u`Q3%C-Vb?7r z`lhW?dK{g<qod;oPzVd>{`i=Za*KwI^?7R3_nJq^|FJIV+27r(vGSj?MGy&sY&9J} zXWVpvqC?tayDC3{naEr1Uv6Kn^!p`dqfF|3rdLpnm5#zWd%nHleU<(Rz87q){8g3` zXE^gV1#BbQWJyme7CDNDgEx{6HjtnE$z2yw6#D0&huv}(YQ`&{)mBNPAkF}B=JO(h zDBQj+_5%N2DTw8UjcSPR2h9Mtw)Q$2$R!+iguMa@tJg#u)xo}CL_&#tjb9n46K0?{ zMD}?7OVz;Hk3TQel-&dfzYv!r@W=ddhsi0Pi+y!4I=BfZ^e_}dgcp|(p8TUu=<GiY zm(|{ePyewPB3ip~0nPxa9y>bZ?$+k^YC2j3q^1w+x9Vcd3h7Y#Q0<h>s)g#T=wD|w zh(6I3zU$ofGkT!uv%};VhhDq%+F6G^`w3!!24=Q@^p^i~=gXXWprYd*uY{7*6KFs9 z$cEW)nW1$SRV{Du)FDw^^_K74fvuIBM!`f?1z`L%0n-%_PQV0x;QeFhbU!K(ocJxu z36s1E0N$xdf!(fc3|sh$I0vMe;deuQWfPwHtu{r1JwZX-z>7b9G<4ICnSvn6AWt{g z0zokh1Lt)w@(XOAeDdE*awC__OvM;)T~dJ>wrYWa7sT(}6$MOjjq2qo(xSP^Q&X3w z^yM*eRsU-R{TV6ebBYp4)_+r8eIOJR4r5%2k-!A`wH9MXTK!n9pfEYiuI3-4N8O&F zP5TF*p&#h8KjO0^e)}(1K}OcXc6cZ8kq}jxZu70JJt!`XjLu)9nl6W&H1hvUC8yps z<l#?w7H<=8sTCoB&>IO56E^}g`L2w$zsSf?GU_UdMk-g}7=7aHhL9n9^vSf*{NL$f zBA<@jk3BL%at5;CA%r(4;#RyF?TtYKR@LNl@*~mD;|`J^T8QhW%_PFm?Ja=_X%T)V zn3hVFdK;mm`QQ+iSxbeTn{E{gjVaUFzQ-;^yUp^!Y|ZwEz1kKA{l^8~rI9VF7G8SG zx@8{DD43q%64RW0e=KLT7d!yl9WPE)w(7-DT<J25DUVkr;ZD-<wtT^X(%ns*hI9WG z*bIjEa8p|I%3vM;7(?MIVu+UCs`*5>YgYnmw!h4F;QN1*HL!1>FGu%=2g&}N5dT4( z?%S{L`R5}5&wwyr+{@wGyh1vbitr*E>w8L@1cm-%0R?8bqCNA>wdAdh69bU~m-9{i z!loa)B4#L7%b_EU=@iV*lK6rDb3rnSyqjRkr?$GSI;2qwrq*oi-d&L3n<?FmCW9Y! MjE>54rE?+w1Kv%)qyPW_ literal 0 HcmV?d00001 diff --git a/site/content/images/graphrag-ui-upload-file.png b/site/content/images/graphrag-ui-upload-file.png index be83d73e3a216966a4caa3628b5ece903c47f81a..b22b2d7452e5fedb113f6989c7313da30764ecfb 100644 GIT binary patch literal 106720 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 Nfv2mV%Q~loCIG6&!nOba literal 109366 zcmdRWby!u~`ZXfLMv#`4*mNTeQqo-_pp-O7_ohL*rKLLzKtei{?iQp=K%~3joBP~* z&%M8+=luWqz~f@E_F8kz`Of){cZ@L!RZ)_@cbE7s0s_K4Ss4j61cW=X2ndLy5M*$M zNy<MK0pXUcg}AtithhLZii54Gg_Q{c0%3y5>oWOP6|9ct7c>-p8Y*@_upXzqjCr>( zh0pLxyy&imPHbg?Sc-6Lh*P!47fJh=I)RO>S2unk3lvLM_VF&m`wbIWvPWc{Cm!UT z_O8B%1)Qdx2xFx4EcgyTH7v9f9=(o{NSn*Eac6#SVX6L#{6W+lE_HUaW6s3sQL8mW zcB#{7|G@g8$D+@bN<;!vhU~dyGJEpI?O3r74^9<!G4=xF#j!cRXnYQS73mv|!cEdH zxYwSg{FDuM9;+}S#8$G#bSE{2KfX)fDpx(N-+4r`hkC!rKl>Je$48Yw%=^zA2(8pZ zG#5Wh5Hl>HuQDXHJ-C^pJN#+=q82TpQf!d#R!Pd|F~=YMX}9dBj`lOwORgUkkA=I{ zqb2($kg}imoOLo&kl(t(U(2)}xL6yzxl`lVbjuZ8-_g;mvk>&HhKZJ}siGnRBRGa2 z+zPfpKmtd%z&A1YMnJe78-#!Y{>K5|5?P4<`RyIqtlR%NMjVA-`1pyqEEqC`Cq@n? zCN_@dwoVCHYcIjACM?vooU{}b1dMF0Sq+SB4NX{K)^_lZAPB+)z@fE?lK}<H+RDaJ z044<e;|c+A3_r~VrTF6#CrcrymZA!UxUGW;1rIAbD?3#9E(HaJpo6igfSQEVzdsIs z5`vmLIoS!YvAMdsvbu7z+B%rAJ>=)-XJhAJ<KSQcSFkv`**F=%SZo}r{&kc8+(*L1 z(a6EV&dI{oh5~+H14CP9Cm|>l{-8hq{i~fOFpK{_$;R>DuLWL^4gMRphpg;uf8HB> zR1khvK*a)PV)abI!WwiBc!n@92dCg4*Z=aH|32}5KB@KJPd?=2{y!i6pI`m;qfZ@8 z9K>y{!84tN|2s7Qe(wMN^4}j6WP`u@|8&K_`uUHupreKF3bOq<Xu@~BY;RQ~Ac!K! zN<3DF-P%k?nMoYI>BJ1n8Bwv2X5<KuZS00jdQf|t8lUt+o{2o_KCaO0qFpYGPzj9{ z%a5qSdyaGEk?FZ}<5se5KYQXRGI$j+cyd&?W0~&USn6CdcqFv;VKq&=X^9T^7B+n= zQX<=g$@3u0=rCGDD8(;dDg&q=^agrMm%@D^A%FKJS_YA!X2BPh#J`1&^*3MiJ4n>A zi6>M=`~Pq!yl`KM5yQnN#(#SoEWdpvQK*HR$ScO?|Gyff&Y-c07qh|rZt*8~$>Q_s z_i>Pi_LqVpH(O?$xEowlh$exb3sP-<o_?~N7$68ed+d*Vc2?SS-m@1M`Zpb~u7LQy z_*?PH*~}*%?b4lNkq-%$Uq2MQ*ECbCew>>iw%#yLaA7q^EZpCCJY%d$TIMvN>#B(7 z_G2hJ^ejvOciXnyOQC}ziLZO4<i`e<IHt&@9oy@IX-x?=iBYl8{NALsBM!yt_fx+O z4GP4BC{aDhk*nzWwyk<)v}(orpc0qJm$C)}`XAebIE~c?#4P5Uyk-+L^^#>gK7IWb z7-l`}rBqd|sq36TmG+EOm4&!-Nh5I`Tbgw7&WP19LH6OKS!O@2oL)-@e}-GPOz7`J zPLziFV@H_Rc53uhhyUS>W0l<_tKqSy+MLcz-c{D4C4LvypG>xs&V1@>Iq{7Xgb*!y z6IpQWgYJ>67AU2sXq6Ok&imXnqBV-|k(o3{-kHXdjSLR$tP&z7Q)*j0>7t5OSGQs~ zVIuI0Z`&0Nw6^ew4?=|Xq>mu~O<ek=LB6-gjir3EZIr#OS!l}5yK_Pl+R~^0@msOp z3fuhVT*_R<u%I0ImIy6VHrG$p;M3}9n|hl4_g$P-JHuX5qMSQZcG@*$QdX^4QmBJ? zXw_%;?_XkOb0+*S-@tx6iuyKyNilmY%Il5@*ObujTR{);`x+j{ben6qt;sr$d-i8D ztCLYsgk$qH*M#+0L*fa3yHVxSisv><@sc)Ur<2<Up`19A!=yetTd6ez9z60Ndbx}c z@fQ^cxwF|K<ZDjmJlOWAB8n@xw9E{!vffl%CnmO+*|niA(}Ww@vnUY;d2V*PR~TEA zvzDk1s37#?C4J=j#M_HE*YY%;!Rs|GCm+-^<y5x9eVnF3-GUnJz4LDtm_L>rlT^_J ztMFj<u#d9yxscpk{q%)Z#q^y5rL^t1bDJM{)t$o+X11k2o%F(@$!e9I=P}nC1j1+I zi4Ji5`O6}m2+xEEM3w3{%fpp9@lLh;y3C-Iy#Z)}&2|~9KOp+6ZnCfl_Dd~tca3t^ zO5@(|4_2cQh=YvgdTcCIF_@n|qnGCK3c?xRHzrQ(+($3OPjpUh3EJzq5Y)@N%)t-K zUF6Xwk2G3;lSSOYfO!ydByzdyul@0bpXGE_@q0Cz4eiHYTpbr%0;6o`udgp`Cq6vm ztlqBMz;95XQS~+HO{@*YrK@}S_1)Pv_XnoP*e<4LDL&U{h5EXmUVb%Bm3My7={b@o zTVlW5QR01do}W_90oLZftfWQXkTeEOPXu;``*fX0qqg_;(q}T#pVzpecy8VqF(=*; z=AOFRSs%oGzeilG?XiN!1GO+m-<POMMptEH+)S<^xG#v!pDV^_z#`a^$AXJLOo?v0 zj?Ick-IWO&K4cNR5G7?YBOD*c4mu53HnVU281Thvx+nkiM)h&xoA0)6(52^7o4jtC z_~BvcRrAZ8(bbbr3*J`c%ULEM^$gubYWLW#?R5Sz^ku7dEn|DZAJawK`cuNr^M!-K zo0}Atw@{Ir%Yzc<jq&XOTqT*5_S|UUpVd?g1?4pIiKhoiUVJ~Y{B^2rW_3EF9?U*7 zOJ7;-OO9iFK5}$2>zX<3dC-qLU7(P>M5~;UrZuqEx4YOnTQzO7Avw#p4my2j`xP3i zowik3;G^Bow`b=(cDAY}O-WqO*9+@2eXjYHaNJPEz1K24Y^EypJhr%fX85WWZR@wH z9O=@X)OtM74TVl<mm-L{8BNIMy-w1}jf=f5j<-LyVmMCQHaFhvI`wl;)HGk8Gnq6v zk=WF4@wgsOniZlgRnPj|TuB~>mfJKQje9ridG57G>@gYovNd0h^rvt$z1LlyBIPty zfGQnM$y*IY{55Ogg@`89oI#EC+}d4G*@je*6cdrf){#?-o0lfKJfb;do-_))cZX7D zxlH9`cvuGpzpQ(l28-bl-$aYFz7#8qK2w22bUZFXkKDo+)*&B=D`-a>#q7nu8&50x zyf$aO@UA?}GRn5aR4YnnHP<Z;`Ankrd#sCO$Y_afeSCe)OYL_@i7GI?Zvq8&Z1I$L z8?TP1w@;U&T`zW;n@^N3f8<8bI1UP}DGBaL1j~e)KUX^*k!P#r9@lF10-dWj)Ynde zWp6o@^|(Yjn#`uO@z{a;<(M7hHSerb9D!V>_qj#&`Oo*AQ-P5@Q(art^WLE!^Zcp} zWzkKKn{TcL?UmXXKo4K7-g(hBgvQn|6#nX9wcnB4`!w6=CQA6++^4T6<%D@nbF@Ga zSCHX`skC9~`l!^W_U8Je*;@pMM6=Hmj06}~i|aJl(O1nz2&s)3*&dmy7Z?!7>KTXd z6QrBtY1=Cb=d{ug=iA8WAyU0HeS3Uo-{UxgDiFNR5AC@v#}C6t3zbhgmvX{c9rS&! zKGh$N$g^nWzkzyYI`lAX_i+wJG&YwuU)R-NpKl1UK_yEYzo9Z@{dG9wvHZS4EmB>a zHPL(2g;XPUnl5jyC2^UkI3ao8LdqO*wOhWVTG7nq6<6!c_j@_V7C$#34)cVOue6F` zGkx`}^Teuefd$-4;tVygZwV56Syyg6CH3q>sEEO$?Da>9(|+}Fh4rMQt+(emieEkF z#@EVycJB>pkFYNaCLM;61RF(&x=)%Uxjh~mF(T(jsdL%-N#_28a-!MCXF7g@!El@| z({m|ML4rjBH(=80-eXq~?amN&QwS^U4b))-$;ba5&qqaz!up-2`ejYx<L&yLy17P= z&YqVGpZzc>F$Smmd8V1MQ3e$xx|m98S|}OGJT}WhtxXJq4j_XQLs0@h=_hI(&3v{O zZxIvcxPif(P1LqopMx#mb3I#0^7t~=V(0U7qBPU?xd?1`K_clciA_!R#z=m+b_1-e zH9Ud#H0`$iy(&oY@i3E;pfF=Vj&MdVX)p@8=g?NgpfCoT<}**ke7CK3wgj=T{|k-O zO%dOlRUE*)Qmkvv<Zg{6wlXZ4M_X#Tn>BKKrVz;P;Y(5|(#GQOCMUhkCkhL#VikxC zQytzKHWB1*)vwyiU6)L%z<!WxklQ<4$;lFISQIFk##yRfkj?jc$E#YfcZo}vJjc#J z!lSQEbv&P=C69BdWwtNMk0t3CZ?6I@_1iVeQQ9<?DOk%4n(sAO*wVBS8W<UPbH3j~ zAziSkSwv=2m^{9@ToZ{}?MidZ3onXxeO7L|1H&t+T}_$0?X(=pd%TpGkLwynACzQr z^z-KCOUKd(b$Y>~DO<ztt4CXvqgKPpKIiLnJCfm|L5*jtsd|+r*Yh{m)wcUWHZy$W zL0+944|n}IE{6+$Y))3pDm~hYr_2K|;QT!psLmP6U{W;+iccZZWNvwE<T)QFAGppe zf^5aQqZ)1(b{Z1-;L$kR5x6v1IeMAb`KNkwWOHGLdylT`tg~K2&{vE{n+pSc%ji3^ z$&kZAbVF*gu1DK7xn{?`Y|Rq>)Vix_?{w>r8P|}!(xLH=diLHibDiWqI@I?Dn2xi} z1~X9oxX?d8%<a7sWyupnz(6+Y{Bx|E_Ib=l7!uW3>8J7M*UMrx*viJoXnRS^A);hc zIg;U*N67MZs-iR1UY|Md4-B)?@v*w-tmC|5$E8)U)71C+v?FkvO)s&wbCI(CVBpb( zrTzBI&5evK5v*y~{?(Qa8!R?>ywSsThbH_KO}pV!vG(nfJNqVKyu6qFLFhzF1CMqD zeWI2v!iEOD4buiMe{B1oIu&E-c_bo}EvC(rk_4=I>@-%(xZYjwF|{yf{A-<5i&KQd zyEJnqKYMvcJ`FV=y{~OBWj57polLs=L~#@KVjyH^_I0#rotKOGu9mUpI%;`FgW zUI93m*>PLP;Z*EUJ!~>@1Sm$cr(02MN&cWGBb9QCWNT1wH`1W-dZ2x*b#zIE7p-2E zeXhmRJQG31CvK@yC%7>bae+`vzDx$arfMoBil!lj)Ya{7^gU>0zI>AVFsvhjNUtW# z;$%5mWLqkVbiJJ$Y0$Rmtm9-c^o4Ysc?spYV16j9vReQVbIxevLq*gHVgtwkjqG?l zgBS<OJkfk%ofLC<ka~zhByn*=^#>3~O_<8z(wsIaj=@1)VZ2ONUWO3Wo#vaS%)-oW zwx-jTvU!LMy6OF3zv#3@%oudGA>$<*E=IkW?<C$`kXDL;#V>@!IcygWAhCN0vp<fP zL~nh9Yai<6vlL24YMAJ}<_8OhMQX|FXCAtR+4XSyPCV?qOCsc6X(mfvrI^BHf7ssr zP+F$fm`W;Q*Q;nG*vfpyAFBZymk5T&6MtuMsPFu?QhN@lpte_2ZL1c_3P~}~zq6Fs zD}L11(Kd}=^Ftxq)kU`}@!tJ{q8HI{G_KuP%`*WZ$Ezv9!d*PwtQZss&~ETIXyJc} zn48~QYjw58u|RBq#jjmyzIaD6isTi?x_t?yokIgQ2R6yWsOfeB{mov_pKlA#jpQoa z>OP7Vb@1t>$%iz1axIZ&Yx}z&{XC;R)**57^92t=?>KWB;9om+Jia^_JP{Mj5n89{ zYt4T8Uc)>2)G7TlzsUrdg`Mya%k8z>o;4U)H$Inp(mRR@Z=6he3)V#}x+O%B{?8YM z97UDPdG{lcItJ-adXk%!s+-nw$hjSZF1Gh>y8F{l3JGLR=9*-==Apd@-uj!;HEiV^ zTI|ZwdO0~kT^3OC#n`~mj<Q3oOxwk<%VI%=<@jKS00S1`jb*|`$4R<gIvb+p`1}vS zkDa=|-%8o>>N??1ls_}qi&)cBf9<(ZT&*)UicVQ!&>EzNCFv=yp6kXLq!k$AmnH6K z7GZkGmCzx7Uwk3_ZeGY+h%Ao^hCR0Io{|J%cL$aeR<L<cKW0qPlR~A?TWRI8Oz0jz zvV+~DMH;?iy=Jc?4{4=PpqmuTAtej6?-LYiHELgwfLN%CAM*IKS@8)ILg~Z^#E7n{ z3?aH9#*iXN#J9_{gT@JRGJnF8J4jU^+i`rkrJ8*3xu@;S&kmovCxkvEnLYZAw4;Y0 zlDIgR?Px(HLH)DATFK<S=Mui1FCI^}HfdrL<eo66eCfO|#NTunDnEMdNx0Myy2oiY zaOhPEB^)6o&m}=aQWkXK=Se$2_e2tDQ$UY?GEnQ3u`T@Kd$dtICzk)0PZN3@jWYeM zab7ec=rNZaB({fMyAE3ho`j1j4PcqVg)(fMy?#Z<vxXU@(u0DO$UsLfhBa1e$_{gg zP>e8naB^q4#oOV*-tb@vOUoNd(&dDK&!&fuEQ8+kocX@7nq|miOl==l|G&W?isV3p zrA=+3lHaL+`6cq3U5WT1dTReNcUUB`NH1@(G--QCtNHO0(+|4T4fBMT!_*=PCOB_$ z*m@JAP<@%DFOI0Atm(WG#bbs?Uc6jvaqb?+jdBtj#@`|K@Ka3mCQRH)lp-8I7I}`L zJ=hdD&D?Cf^2tt>%)aqyu0>*}iA0ETM$QM`K^0ua58Xl+$&5;F2EJOal7ASiba3K* zK^6}Ym-!-&j*V^*ea((Nx~tQ=3;iyQtBWg(4O5_?K{rG`qillq7(fg|bX_o(o^}i( zAMN=WUJt8hmJb^zIZzBOJnPvLFM9m#!}Cus`^H94!h0!n8PWCHism4y_RN!IOW!D< z$&|30y-xC|YvKNSva%>|&VDQ*#nbOv3o&LB0%BD}YZCPAP#tL4=$0?hh607jgEh#S z1T5m&pwJ+aQUF_<R!^9jB}`#Ak!weM$$+c0BRAoKo~(tCIcIG%p5aN@$Az@^RL&U` za{hL5DC^os)EkCZ?Rx#!<Hgz&!D~7J)|J|K8jP@$v0>|K2$;IKGND~UM5;KY`oi>W zpFWDrc0`g~m{X!0$Jn6nvbOieJ7Pzx)@OviFv$%^-*8N@eDpnPf@eaTvBK{?RtI)i zVF^|>zfa2n^HZI1sv>Bc%f@)I40}(9Tbodi#E4a|2K8f>zmg@Q#E4~*Y9nv>+*iYH zj%KUpy*8$-YRZXLXWW?ds}u=8HDJkzJbQ>W%EnYsD#Sav<)g*KR#GlRituwwx%p(e z`6{9^oLKAyJt6et?lR3(1c5bY)t*?O3SnfYJ1#EPT}U`KEBc0J$tjg?3y1@+5!3@3 zj9!?SDv!6pd7`P493K<Y;#uHX@<MW$IG0dw=Fz6Dxk25cd(VqkmNiW|1602IoVIGX z(u#!lPNrLeHWZi@t60!A$5*lS`E2*-@39;rOW3s;^$t8p>4CziNnRtz^hR9MigU)G ze?c+|BMeh%<$ozf4Dp)8s1x^W=-w4r4j!%~!;bZfGIvoJy)h2@_9n93<Ta~eNtw&m z6u(3tpXn>k&byRE{tSv~{pNLwqvyL#K_SK`d@YnJi}!jSN>SwV*XNt9vrAs0FPCBL z=pb=(9teCg!4=#hoObWQ!<a#`71ShhLbdOe5E6`LAnza9BCRwMk8{M8HSlv~SPKnx zLBGZ;|1AD>;2D#29YafX0+nt}%`_o>-!|PLlN>+)T=o}SarEz66aqoWK9+LiC75fG z$~6NLisQrgZc9zv>5gzD;<Vj1CoGYcXPe|sXZDf5?UztOaH{fH0OmXX;n^sUS=w`- z55pdjv(*cxiPn?M83li3R$hmSYCzwjCKo@Vh%Y%*kWchO&9kcDQ_$Cb_{wWmihIW8 z5tq|^ls^9tl>SrH%swoF9KGmayH%q5C4+c_5?|P@kz^(0w599TM+~$X#UW5k`Q8yF zTJ`78WO`dTl}UT4booD|;V0H;Ik~M&-P|bO-?<T2pW)a0t~i!;=EdR1Rd>QgRrNUi zo2g#mu$_rBkso>ts{p%_mR?)W(5{OSMdn6nv#`$A+WV*P6Sd5i6bvPegS?Tjwbu!7 zF@-rLI8tt)S;s%W_G%QSL$ijJ7e|#v(s$Kp5Z6cA-W0TtN1K!fU_B|T$$74W+`V7! z9O8hUhBvW0(#EHu8Z9AD<^I9Si?7`yX>|g2wwNDUNU0Yu<bFsG4Wm6c7XQI9C^4e& zHQM@(e!1I{y_LTAnaNJK`4Y8>_(!4DH%4I+;#m1iC@F=YnhnE;FlpI+FfS*cBWJ;Z zZh?9!X_uq&=xqVSYldW<jgvfxuj@?lz&&CEJ!6-1M{S&Q2qy^A{mEb2VvO)(xR;VC z%sbZfu%X{+E70QEO*v!~hAiEWq&99A$GTV>wJ4W_$kp2EPdaEO=)X)j^HJrES+Y^D zFhQYJ9@SrIAU{5&avWJ%tg<-$)cddKf?m7~`o?eHUZtK>h*|)9)A3NR?liwb#TdPH z1&8ffn(;;#-C+pY!KX9x+E~=Qw=GldscJ#$D<9d1EeiG}TQv(zBvd7o8pQfJxt{q% zQ{p12p~=tiwY(&3X6_sHp&<)_n5gbW()Mya!Hg`Z3wZ*=PLT;hXoHL&R+!&z46u*w zrwSP^q^9!YBvdmGp@*c}ORBZur0hEgY59aCl9@<waoS@l^Q2e?>xHZ%sms%);V0d4 z^Eq7%W@tQVX|N(w7HwNM%W&&BVI#UL5s<y38qlT?#6DSOBrWnSD)7^-AhEK0Y{Eza z8z;D?Y4Zk-cHx=5c*;+s>Yb^4RTM|9+op>;*)seOpPc~+UvnE%kp1EQBQM<+YWM2} zZiUQu_V+N=2e3)(=xrK|7i;jbviIJ7vbo2n|03M(<*X`JQo%N;KK5oY79{0*{Xe=r znjpIJcd&hksgTm0YT_~XyunUxlKmX{-W@YxwS~z?FFyOS!#3Uc*wutO?>(H0aAXl2 zwDKxv$f$x;IB8<7NWm_O5|~TI|H{~lHbFjEWhRNgq)lvcxgi+v4#|9rG(uWVU#*HI zvlZ;h$kwLtu<e0&c?*sx9=EMZoAN5QSZk8~>X|*WxF1(s*7I*d^68IqwWvNn{4wlv zbD_^xH5`#}5a-2f-=QXY_~J7evc==gRCa?`M&Dmb<rS2U@JR_G;RQq&eU|hbAJv&W zm+X(H%^_EG*sCnC5F&F6u?^8jN06*A*@%mw9fV=%xlEeqY2}l`HGnB*z*Vlaj&Kn@ zEUrP{Mb3A#gX!h7d=?>L;JgULiU?7_wdSKt<1lPI8hpdba-8W+78(pu5`YtR(P9%Q zrjTbzIu4;`p;}Xg%H(WXll%Zya<+%ZR6dm8XWkU~TB@}djMd|2Zoo&D=13(S<wRHf z<1V6KrneII0^vfZlv4F+azRMxOt|9VAfE8dz?uKTVDv_CGzPmQy*1!mF?%{u+GI+I z+FlG$HXNT3`cfz~Ma(Fjpz_XpRuI6jRrcy6C<?lTI`J11Fo~^<cBzn)%ULm6I7~Q| z^_vd&LJ4>>iqmjI`p~_D*35Y3a!CmSv;*{x139QX9V7OT^Ebj5TZ27HpIa6vldhr? zWcX~}zPeBD^3CA7rXt-jw#f_ygY?G*QNbq1Uujx;3q;A;Iyr%Ax%eixsHriR2lmn$ zJP-<(rH8?U0U_;N3GBvmg)77UW9C$*6t5}5hM33ERl`;nKo#qZy?FN_&aIH){EL&F zojc@$P3G^?-pz~4j~2iLN7M-iM~#DI+(#98`BR3?e#XU|LipnYH@c9+%bc)Z(x)Dw zgjQ4B{xU?q8qU`ABapdG`n*fQ<YKEj^JF9d#Zb|nXlP8Bpw#9#@Br5yeNdOPP9bX= z5f(J(TP2hRCvoO*35N;oqgJ;<+PLnSi2yop%YSr-ZY?NZ8rL;NS^9$V-spe}nXOhE zOoB^7s?7!&1>ge;#eHmY)NofOuc#5yR2%YduILZbuD)E@&o#K|2}TtpSS26q0SZyE zieXux1e5c8CeKz~;&A8ydjJx^E)@~Tl#xh^Cam-V-7xUf^~)WC(=RCye^@uStfx1r z>wvw4LsV-wUFIeVUB#tix`PgOIs@k!g;cEc&Rk=KT<it)1hE)x=R3eGG>KTBL!<~- z)5Kq!2`$l0P&DvOU?s)56+7rcKbFtd3_INb#<=&L)m`Ra3wSMS$+jG-%kL?%OZO># zPqITXtQG=Yiv(rD*%{^0R=MSpu@Dr{+qJ{ov{}`YmwB`!wS~`l+j_CE@0KwL*eSok zxDsEI3@du|y1SB@Q14?1SBMJNdev&%a5-gFS+jlMEMSM+Fhv5`E5tZHJH}o~WJNtX zjY~*n(DOfZ4&@78><><&$_R(}aM?@!FwArJ?mmBih>dm`d>W+5JQohbUrN@}xYt3- ziKGL2u8C{_`0UKo!@|@LY-$Z3*YDmM79e38WRF%qfXO*xP&}V<i(#~ScLWn~ROq{% z?zSD5R_J22E757mwaM}7AlZ`XtMJ1YL@T*gwP`zVd)^=YiXea%s}NABi`0YQ=NX=7 z@*+t+fJ2l5PqtUoULEPLaSzlAdP2XiXo(dZ|DXb6`EiJfX5^VHP!vI+uS0zWWjV1& zj&&eI=}3y3M0PU26B-keK|^{x4?pd!1c4(5$0Bu=-#i`5&p}4Cf2()#@sk+IztqS7 z^W(lWkdLpm7-@cYi+_nO@Ebub_yx@w%m2#m{ug44UIWd$pIknl`mdq%-;PwlKn1#Z zFpA<o3FBSlw?gyIjNZoopNjr}S`5zjP=ae#cC+4g{rBd-X!U1Q6fs;r%n7mo&}e>Y zikM1LGOqj2{#rBs_vsWqK&fAi&R4_vMT7cNlA;fWtNE?|1<-#`^S?)f;kqnSm-~lC zue^p2DQrmnpCtcF?AJ0WB8hUcf8XdVQk>T^&oMAl!hV_B|9$#v5kwr>gHAPuzozH^ zA(7+7!8QLM29ci}U2I8N2XP6UYN9Io$7tgAQ@by#4@9tP&$E4KGmu)o2*I^EK*2oo z*YVi;q`Nkdt_#E~qfVjI1^-z<z*5I|&=&aqw=4e=eJW+B>I_@6soa){aNWeK>ghXm zdlK7*GEk<blJHo)0SxhS!wceSg<|b$7jmD=vT6Iy2eZ=TUU<AIE&nhaA)>ED--hS? zL0$vYh<oS7>Xc=vvu)#1Vm%P3XJ1o_&%C;W7G^c^>hHte7ZQ)>r)F)F`I2t6KXt97 zX6deGsh*H4pc`plId6U&zDLS81bD^nNWzCLvreOm7(1#~h3PI1n1Z{$nazNynFYQC zP^xGY{{-E;BB`0OFLJS2QQ~p3?X7(pjKcJ4GmYPI2Cl5sIj!T^xI~ihx=iReMv`#9 zjK2UJ<c!zJ?3xQuTA&7iK4<4OAEMy(IJVju4wJSrce>5~;xod@S55uehejQz`=gS+ z3jYx4n^^RKIO4-%21BM?y^^TyE)WvG({K>A<9Il(ZF^+6mK{v?vlaUV&`-BpF+~my zEF46<FJU4+S4R`|Kwqw9cv4UUFyy=qkgT`AppZM!rP;ljxAEC&Jjno>?N=SRYh$TB zd=`{w+W;35OmFIe3dwc9o336H=#;ZSj4e@2<=O7%op&O!u8hHS9Fe7~h2!`&`IB3Y zYXe8RcZQ@HtHz&O)&d}P!HV=F{Aj%}(*+E8C6#{FF9hcQEO$M~ep>xoKx@#{pUM^w zPSkpP10;1`uXCq~97(iHl-v9)&&u0kPT-Q^#A4YQaBINW27$nSZhEnn?wa8NT8Zlw zJ0ikBRv41`4Odxk(PhrfY~FSqE;vu@1;23z8q4_#kT>VOZmv#Blrx2!Y{$-zHtIEs zpVxv8n?d`8B-TcQzS2^0^!YZX({e|oBY5q6<z>*Z`)<}{?f7$?M;|H%98#^Tl6M^M zE30pU!E-k1jB?hkcX1vRI!V(n6#0h)(}L4Q9}87mx(e9>fTV;va75(#w3Szvu9QIE zbNJ?s?NFBAv|a1HS?`Oj&KzyWe(o!-N&O$)ljSDz6HQ(onm{Ihx)gAg!>U_17M?qv zmO*<8uVcC=-aYNL{`dv?{ddJD-YFCF4!taTHCOw+Y_nyZWU2Hx(4S_RUaO{kZx&^4 ziyNm4IKP_)+Ad8jt&D}#--g^>`4>k{lc}QaU!Q97dxzwIU_u2mA;og4@-3W{SI(ea zhlMI-2u^|(qu0af`I8f;GgsgP5IP!r;=Nl4G}9>$_mK#ZN-&F=C_ARyk@^ASK3EJ^ zEARV=KY*^cKxiK3EsM#wfPnV15SGp{G-gqlzIs8D&SRZY57Y?UCB}>*ZQI6A(aOZf z;x*j2s$^b0|1%l=dH}32@fms9qAwLE7%0UoWMT18F^(c^LmHPE`_5Y6yy@44Ee37} z66o#fy#W(BdgqbT+5U>K!l5k?kX`*zFpsYiwgG)BTnvmtvv8f8HNqdO4k*7KY|8Sv zpa#+7lN6PVpixda=A;-4K*eo<)tL|HNC+G{yTdI9Xsk7#(K<ukfjLpIb9W(xD$4Hr z1rVX@pD6LSm&+)u-+uZ#tn=>$R)q(WhbOykiMunbLh;G1YNcXQh%7HpRwNe`ONYkh zb#TMO#p-5I53;l2=X_%+pS=E5URU&Y#w$jZ7l7$<%jS$2g%{C$amCXhh-TL^eYOdr z`Bw>pDZ)hSUVK4p9!S~Ko`WxNCpIRcw8*AQ!KYz05sU3|2VN=DY}!?QrLB+f*)+ZV zk?-wq9Mb&*%F#k(NS$70d6{FbB{5#cqM7TX)F5&8a7mDAh$@2P#pq*{2j8Vr=&X@? z6?tdJJe*4^1_ZXjv~_|PiG%pjPpm+t;2rk)S-p$3$cW%o3Xq(eypi0b^30IVe|~-M z!S<B=G_(2o>f+H-as77PHc(AmQ?1HFZCM9R_h~WDF^bjl!@#I+k>2K9jC|=fdIzC} z)r~Sr?ON#g8x>_G2Mo{RWP5gcIN`H~w)F~%%g>Q~`4(*+=IGUbK#F(85t918TTjSm z3Bt6e7UUBJshUTb(__~9!{e<F*F&pmZnG_h%Eo~^*Izip!beK!a_8b`#a4W8-PRe* z5SqQOsk4~+gDPUgDFb^G`w7vDb@=j3H3;VVGDcYvIU?=4zSFQIY7E|R-0CshZb2Zm zHki5Ne)wZCa8?{sXe_)oLTxbQgln{Ox>72VIO<C(;m6P~$?QuYj34NIr0JK9qdntj z+Up?kuD_O`VD<Z0A5vqFr}Q^dnSu<S_?Pd$HK!L8#HNI+O3k+hl^S@6hPpq1#L$E} z1oz@Rg?Ws$kqzSvs(k>CB;f}EPdNkB8=hjnSU2K&8A;6T06aWLWbbIzDCaoJh5R26 z$7h}fqzZf0k?`825tz0*VJWZEB78}_mGxoWi%{wS4)oJ~l3Oh5|0YF?9wYTM$fR7c zG6X@?1p)qIntS+_?6;^O{sAJx1vSefNp;!(BG&)O9{)a>^&Rd=<*$<a2b`NliUo&^ z7_njW{}9{`aG*=7o&OK8QUwE|&VXW~jtzooUt$5Qw2ruRN(!k{#FifxiFs`{Q+RE+ zp9AG^s>*spLp$=}oH1189O?QX^QHzBmzJ7C`1@;dorw}%+};%IUop3zCunC1W|*8f zQV*&hkl6UWC$&;}taVED8fP**wv!dP0$B=?n$CYR@!HNcNUUprdbvUjfQQz=L?4i4 zw}Av4CsP6_9h+(EYDMPhz9fC`b>Xw`xY|zBRuzhddYr$(b+6grSXokSJw)^l%`UL* z)Nu~*wWfQYufvU2MOhwiXE_k7=iJ|WfE;Q)e6%$^@c`}vS@G=m1U%68_c&!GYLKUN zPe9(MP2{HfO&{mWih9K+(ps<3Ag;XmEOaunOy;@!#i0R(vF`VgLQO}ZJn~(qQUi(c zj$gX#+~m>vC|y};ZxWj;Q0AOq(HIW|#_o{|3zkJDgN35^f%BNEO}g_qL%ALrR7DMG z*Xj!B;5hI!$@H+4=r<X<ivV7YLEkz_fQmwNa|R^g@c1-gde?6TD6RnH@FVxTE%>3} zOs`At1Dl&8T?Wk1P`5mJ-ut2-tvICk>wC=;f03B&=a$6@%&;D3;0>$30E_hl#R}lP z)t#uccruao_%?7v1v<XEIT#f2a>I(-`1*eB8{6^2m*E6#E^xFF;toeuMxq~TcmVD> z0Wj<IYQ`{}MF(W;B`IB+8D){H@4(9X^Ti*CAWt^#Lr=NfD_ISSlEF6*TNRTz+P@Tn zNV(Sf3ap5-KQ=YKmg<YtLzu+YHZCh7Zq7H@c-{7mQF=j`z@pNEe_^q({KCY2Dc>h) zrp*p#gow6N`$7^hH->YiWBgK&XI=Gyo9L!eb_ZlgJ>v>dkoO${098`U#u*$1E|8h4 z-BwI|!H1IHHixqP3G`&C(kZKS-BuE|!3(>}Co(hO;Mw23bpotq$FH8&?7c0_aG22Z zur_=OHwyvKnW0sc3?5dGtHk#O{|fK%D0<Ak?`@2al59>(&o037U$1Rb+uondS=hyM z{u0jEUkVV;090yodAf&Te-92%>Q9%#XMqB^lN5JF$?CwI;khr%wjXGK75vEg=l6>M zMcRSkYBN5_2ppRKSjG)n%#zNVtg$z8-L74$^T!mf>3S%*-$gYG%8Qvwi_w{uKs4OR zIQ^}uPgnczOPhXzncUeScL5$TYm%h9x<DkP6w(s1l?Sg&wDC@WNshlK*p(i!hG-4N zkONtM1LY|Gi4wzz<~qEXxaj-@Tdd?;n=d!%6<lU-92CCj(`QS20_o5GWII1c{^TC@ zeYN3+zs`ereZ)Y=PR8awbqDMsbtDXdA6d|gaQ2{JbMp|t>RFdm0=78RynyyN`>`U` zsKYtXC+zMqZh}uy4?sgpp$*t}$D5OS=0ae}A<ZbxR>f%Jy<pL;<C;l(Q^<@TWWhz6 z!(|cN%sU5b)pcLbmqb#-X|s&^5()Q?^m<NN6!J?M^ZLcJLqg!T8v?v%QBxrNNH4^j zOY;c01qt<Gi+6&HBJD^&NrvO!XJFDxhZL&%#ls+<;n|*mvDJyM;8M&lervbN+Tavk zO*n5&eRb`|x-Wy;dCiG126ujLH{V=Ki~&`qy^!E;p4Im^TEf6Q>IfC=q!rYl)I@8m z^Gx$u+%wJa%Nr0p=zEH!w!gwhvFf1I`)g9@5rK0jH-s-SC9)(?oi@MOCmdo=iIK3s z@Fn51%L-rK3p<6oF<_4$D)_qz-U2n<mifDk?p>ZOFquCHa^@#kJX-mJ%au?z4>N<l zhW^Me2OxT!G9)PIbFl0834NajB}xL(zJK7pXBDP2vo=iF*14TsRg-w7PwO6bwabuv z;bSZ+kPEjV5mTN}Uv$vTEInXL5kX`lYkC{89JP?9P@{NXdgE6x(nAXxZ*ovmqz+Xv zg?xaoxAAwBB{@?vq@^2e$BJU$=y(=blh(|0B0p<=digYbsSsk8UDPAEA(lHh_C#6e zs}Km{CWdpcw}9B@STTFOz9R2lHu~NHFsdC~1VUtQGP1wiik3?;m<Nm9Ho#skx^+&d z{-;;@^1ef4UWcml^ZCWO^BMt5K>C`v!J@J#u??c5RoovXGW>bIQMywv4BKlbXrx;M zwTw3P-HU+2JfcOot173z6Wi|D;9$xW9P&su*jmI6@{3k@MDcev$t5r*R%VvpYc)!& z%$XG&TKljP_jXV_b4bMJOyH)4%bG083ELjdbqkv9X#`rD!<3{O4O_QT2!6?s^yElk zP3;Brj^X$$p14m^oC+$y!ZdxfIXQZAR5)BZ8Z%PWqvU(dxYr;7W7z0ekWfVvBEqg0 z8&p0o&9i{fmsD9#kDu^{7UmOq`9iZsj7f6&FF<&kq+a1YjBVoVhu6T>pr;A;UgXK1 z0Uw9eV>v7L4k9zy;L~2;Yo7H|Zm#p^Uck44<CVYNbg{h+>c&HV_Gf%41F4kn=G@lO zt9}$7R!=p0oU{p?f0rQ4Cs*b~>IcjM8|8B#%0b@&!*U}q<hoS#P{wXI91Pf8U!H|J z!<JL*GdpXdgFEaaFt#OK5wq=eWJ!!Z(w?h40IUj$Aj}R*xF#4x*n=6pH1wmDD@D0R z=&NVbK(q1s6EbAhid#i|gM1yq4_vfj7VP@+Hzjd~e<eypAEUP6$Sx;h*&_^+An%7X zA#^H=FG^%_V0{DYhZm=ATatpFU*KxY=5k1=RQ$b%%v{J4ckif8g8{GSmwHM5$mK)v zzL!Rd4Dr@9wjUdwOlW{_u&<0yzA2oz=}-Jo2{-}Ck<PgIn2p-C<Sh_-sDAOz=u(xS z5G25sZS|lc3t8mINRfWv98Z(<hT|0b$~|R`rGHjBf^ac#P$KJvDX?lYL0^}@1q6(q z0>%YHI=`bS7SlDezhmI+-EY3~iHLLQ!`ruG)1~p7_(na`eY$(>+OVamk<_M}CQVb_ zN`HJL@-87|QB?eOn%z~Vu!S;+q2%7iB<3pG^~lEw5hbGYr6VKr@>GF=dhRNV+vHOh zKy^C#=HuT9F-M9-0}9O;TQ4~9Wa)q*9YXwI_bu>mg<3D7&;7iVo9-Ls=&J_kTvB4h z*rdafqtfnm(T|YzkdomNG-lQoC;F}tPob%Rxt1!M*(uX-g}q($eu)V?-Lx|v>nZA2 zfL!Un2e3?dPDm4alSK3T+JbZ$z77T9!Di!0n&psArZth<Z;}%_nx5;W{KW$cIO=$G zzlN~9@im=pyr*x&MBAahT`jini>vm%_!GZ2%G1Si>?*5Myqu}A@6pXJ9T{rz^Ur}= zaHw)bXipu47^#Mrz&VH9#~RP7yoDyQX3ZK5*LOIh@(;4CL8&%Ey=&E<r1*yYi!Qjz z=6hGnnH<N4)4tm^O>YAiA8oJZ#;?n;T&C!pgj$>5kodbpS4sXb(K9OF6K7I`;@2LD z3e@fXIPyI2Tm>ju>mpA>K0tyE^po>+bEWRl(io~5R7-Hk#+cK`;uoR{tSK>uJ1E^} zojBskhp#HS9NGA`S_gJsK<9GohiWu<X83e-Fk3`*?~e)m0`UA=u)0!Zp1)aQ(!|E{ zi=`HwkB!hEBfbhtss4dXVufY1e-Pn0|IwiJ>3GGfCN6QRrqCcrDL^IiR#EQHXnFFI z%PN^=IIttF7Z+sltFWG&bKisS6DZMd_FjA!e*j1r+1lbf-ZZz>WRN-qS>YwObaMrd zFZON5gi4u|!GqGgWCpKa8&<9eG>1uHVa9X_Uc_g>I&2Mqlm~602{d3Q;XLm)eq8{z zF-&Tltxh;mzU~tStOfMFqKXlX7zx!}s^rB+<q^o)x#X2yiP)<H!WUM}gc$VgVIUv5 z*-n^Oz|Q-a;{(NPYHs3#g@szLh0&gNIGwd{ZARl(DGMFN!~Od)=J}KoYX_H1YOr6t zM7|Jp0mQS7tdf!JQH*dnAUvU=>emMdft3_Bz0oA#@HPftR#%kv=u7Q0fd1-@`@67Z zM6M2>psf}f%>2lb4u}p*Mk8Q#iWWM4Lw*^0E9-Q)VVYS$28ZgkbUj*D=qaFbndKfA zsw#KE6MrLE8{fxU0I-6w(+^4ysy#T5s)4GB!<5s1-WfskgqoynxJa~z{}7lj@lca2 zC{vURcB_O0gSC=2&dk;=elh7nRrrA(Q=Hb>sJ6{bW~&<AB8Lk7W+BmQ6fMNFm)q@B zsFXf4EKR<Jj7dfspu_JmEJ;x7JpQb(>s+tVy_WIm^*qCa$2;KdPQ*3<hrM_~>;(+% zy3u4pVQsl@`4{`T9E(4VmrF{+H%v@`I%I~@Wgz|01SVdadj+V!Y5`sMEk~Y*_zWb3 zHR02R+dEgMAe)>zER;RNkMP#4cizy*qbJaVWqW{(D#RNgUiV0pG=E(Hkx`^=V}$tI zPk^qOIruc`<(}BpX+i>@oF_Jd%@wn7N7|-lf%glai!I)y9*-Isv6w)x2F4hF`n9-K z>4sc3m#cQW=+tYULD+}-hO)&SaSRz5Sp*5ddW&s&0^c-%vJr|b^+8<6>u^{aH?`^N zSevbqWA|SFaU7B13;L4rQvG>g9Jhz_#|lVv>40Y)&X+@3<UTaaD;)zARPEk!C*8;! zLAUY^uzkQVnP|WNt7Dmr7(a7B|5m6se2W6*8`Dj~x$=<V0P)v)U^|sQ`876*Uk$ZY zZX}Nbs9e3F>q&a<-S9W`_I=nk6bT|cVcEU~mG1Of2D_X;GxmXF!1fSU_nA5NF-bir zA<nJ@t`0}xyNB*0EAzuqmI?CIU$hGFqY4A0E3Q(F)O0Hk@?8m`48yiB)wYS>1PaLr z2Ad@qr{h9Rz-oTfvH+iFa<G(mTY#<Ke^5@u5PJ@&9ZggZP)gU<Id7Dd&uM%VaiUS7 z4-d<OnYL7cH<t_xSTj+lkerbeRqUvf`EJO(*?2PdzD=r22W)USq0di)RRu|%+y&;M zloPuZt%pTpK;I@sewM$1R3{a}lR(!JOC#T~W*5^%gum~6ZPF!``fJW&WcTBsiG`8{ z^jkBryKbdG;-4Yv1jC#;!i45L0l9y3iDx^YE~TH(J7ecx4`c!zr`<eu3@<wjVy-Ta z;Ghj_vM;ZNX)MIj8AVcxIANoA2y_-2Sy)OGiO@s2cz_J@v`+Ig+8<SJFsVbx9X8xi z5X={*hp>@?DcfT-7od<l4^6BE%b#9IB+q+HPNB6lM^ApN25}=dfH-z_xg{jkkR9s4 zrmL0(IL$8X8I!=z{C(rHm(o)5SEi$g0!c%=jJ%g~3$34M4Q&2$V#f~;r~mSTt(`~# zNfkNzU2c>>&oFuohZfii)JVS%xcas^-2h`G-1D8*dbGttpPOrp#T>p%BZ90nWWn{k zxE>wg^5rT8TPvO-%Y;D(#xjk#JSmg*sErRD2PBad#XcLh9Ru{|zQ=7d$yXgZ7=6gM z#yf4rIpHA5xuq^<$YtGt(+rrE`GE9OuFhx@-V_ZB7S4}&v*^36;-lY+0lvw9ij;{t zmkW}_!O0RZ-JhH8a<yYx1NEgzL=8!0Tl|55({AS@bX>CxR^*zs(M$$0%hsTKjl3_@ zYKGYX*v(mg`72G8Wr(YinRiFH>F}-0{HsZ>8|#t0(E8=5M-9~v5V3A&u-Ej08KSq) zsCo=tXn=GF-}mlLvFS7ksObsD^{yqJ7zboyy5-@kwp=22u%qs(l;X}Q-IH@PU7(#^ zvOVR;vN@of8#!TYHtkQz?_oT4m)HeGRT-zc=&#A??qiUg?(ju`9a65K-toHg4R`BT z82KL+HD1{7Rao9(t1BQ%+?8ph6t9=U*)%9cZ(tE=3Qs2CY3z?pW}pmKjL1;92@NLq zt~t@lEftf}AmcC&u{D%8gl``60E_D^PzPSiq^b_=sR2^>;<9d|q<#QXK<vrPtn2(N zZ@-CzS&w*T#Gy4Gkkdqdy70Z^Axn=)QFPR*!X)A8TQebAq>&qameNjc--cbHnk&_` zz6*$>_0+@+umdyH8<%1251Mvxl$i)qP;g-v;{gD(9zZFZ1vS5?qY?6lFZ3iA=b){% zK35z1+W@CKb9uCzm-JBZMI81Qjlk_oC-Xi&h7@lUOb$YSDE|%lDvHE-%WsUTEPi(Y zNLR-tw)0KG1js>;u_U<ABV(fXUZ=suQ&40y4u!rTjxzW9`BwOzvgCjM7C@nUHV*bK zTthod?nK~#WPAggs%qsNRnNI3oVauO*>bsE*GJmDF84ZxJ%KaEEAANi9x;qEb~xqY zXd{Ub6118IM75+rOzdO8u(*UILE=o&)%+oS=3`()YCV7`Hp4S*wanUdYDjJjpkWiH za7r)L_6W+0M)#x3EG{_X?s0v#HVc^Q9T&g^1QgPHA>m-cO=o{lTuba9%uB*zIzIc| zzA~SL<f5zJ)|a|6b+Tf9GU-Wi<%W1@0w2DDd~7;}DWpo(zv-x~7f5%PWW!GAsK}{E zIqDwzkAM=N(;FdGDP7<U`#q|EH5FMwNQP-h03-&k)aWIF82RV{Hebw8MGG$ZQ`7)% zGtRrsSn5@jB|1)P(Qy0<kp3J%^;&H-M1X6vhul6I=a+~@tIWTGCsK6x;)^IHp}#g| zJal~O^AkuSq!#99h%Pr$tj#NO17;C_o8h@)W%-h14+R6r%?5^9%*dRN&1qOhD9Lgi zD@qS#dwdzPA2{|sY|@uG=QnBo2)HYc!AU?YO*HQJFnR0Nm7gJ;J3@XQ-|hstRx|sR z=u3lGYkitm8viwv{Ac$3>r6ZY;+;KeAeNVqYx&cD=XuHdBqb`9a$&Jp_R0Q`mXv6I z=p!oKWunj`iy%!}C?naM$!~?3-YN8G8Se@8@=YU3A{U?a_|l?(5F>-6S(Y|d-B6x$ zn0EmTWi#9m{1!FugT#ycw?2T)!Zm0~hKsZXXAv(I2?gb_qaGe0-fN{x?X--yxdnIR zL)ltbX8Lx$`wOh_OF0x5J1|>Q<MqvHUzaN(TF3x`|JMu)PqN++ytX*J7`$Ba!J)p3 zSZ5wXhi@qK8)iU#Y*&y_N0M!OipxG31t$xc%+xNa9HdzKrUSJ1<xCGxWQk#p`{B=v zpMS!6pF=eO*Q0E6H@nf5;k#Dr{4oT&P7K0$EuC&++bf(QU0}#kr6O--5Ef4{PnSPy z=;84KZh`dBY}#08$dmx=W1sTh$!#jv5IhO$e186p&(iar2a2zVuZ&YDF$@py5EJ*$ zVk2U6V^bv;Di45Sg9;mcP$}iJHgV{^n?4Gt)EzNgsa%6NmgSXDp}jU-Z_#}7H+RtR zsWnXESYwXA8DY*FXFkpszT6d`Cuh2P1GXK13gsH@e@%XyI~nUikoEY7<eiJLaT9Hx za805@)$Ga@k^Wr+O20~u4D2bhUzTA&eE5Y)P}Dv$LfxVCa)lZO^^bJN-iq(rb*DzZ z%@$~SWvc{C47|E#B>mg{gbg9Wa_jH$v}^3LwZY7{uCV<X#ivc08?7QS4t6PAc*{(Z zdxunj$-VCtyqY2mz!uO2P_$F{9Sct4t-ro|s?ohDOR^GV#!9+C+Z%}>_SP*N8f%Cn zBZPeQTX7~tw3b!{D+W)w5A5=t9(IC5gQiK(V2lTsT{}{7?1!p#fG}{w#*0>MkckFc zdqv)if?2r+q^*^Ua5&j|Wq!=%F9NoqT`tIgi5Bt-F3wH^dQ}Ic*DGHc`-|hsa_Ur$ zp%J){C!J8ZE|lBLsiJmue)Is*R!7`QveJ5{rtBmvzu~aGhvO<;ZJR2JuZ6CY!!+X^ zi1h=#N^g_h&Mb}14M588Ts&-FPP~;LLU4RREHP}QfJhrQqHIB*(h*Ve;`c#KfoSqt z^l{2`>mo=5N3WIuB>f>IwRcJis6;s9jC-3Nz8}1)_Nusg?q}-jQT??V`{fzu3Eef- z5uFCG=x_Hhl^(vj--|Bg1ovZr{n6dQZeSmpZnO85PNuNerKl9S=dK_5{S4ZZ_A-E- z22OU|{=N6S_e52|w2#oW^MUK>RcI=Yzlihp%w*EdkT@pL6_@Xv@7^ty9BF65+dBf9 z|4Hts>&AHh$%=qs8)PC^8guZq>b5xGnNAvHrYg*o*@&r@;N{5?kVc<r-ZFson@N9e zkgW*MANt#uPx$<j>28(alf_-DJbpI;zk8~fg99I<hZWY#AMB{4bSVQHz+{%xFbt9c zl)`<gGGI~}9PalfVpCh9LYC@pP$8mc+^pv!W=%4Y$_gF?=71E!J3`Y=yH>@|Dhg70 zZS|mx8CelZn6BvAabD<+>K4Mvgd5A;*k_qUBYBycBPMtrb!<g_9isA(G?-uF{YOA~ zAQig+-kaDenV%v&EM(Srzfgp5i-4aYHvJpAw+T~%!q)tgc=mDn0>H1N(bEr6n2f;6 z<jAHb`H>l~Z;x)zizg$ChB-2{%XsgOS`}qq0cXm7^n*t{x>(kKHRS*KBtJRjEDEn! z4fmgjzg-RgbrO)cK$qkU7Q6E+{Qc9$K#v4S-@vRA!CyiDpS(&By5Fl4+2^J*MHKfl zK7#^QWAQ}w(XX}MzaINq2;6a!^GSq*obQ)X<G&kSC>BlD>ai;H`9C-~f#^UTtMRV2 zIQ{;g@BYg{2r%Oj)8v@^ZVCI>#eQ;<fO1<0I{a*kWy!O*3l?UQSv5%S)ZZ@ExcqGc z1F2r~#yEZZXiy>^j1f4EyTXjP5+Pb)+E3a%D00(~mY~!A`&Rjd{qZ=s8E7}`(dBL{ z+}*~6PqP&X`JVh4B*pDI*PU(P0a{CB)6ZBNOGx{x@bd3OEy@FG6l}g+u~A?~;x!u} ztp=`-N()fRO_cx#GW<_l*n#CsY3kz?Jz_%g=hMCAS%8OT!Cx)FLGuq7(|Us^^LyOm z0DY|)!&Qhw5B!^=Qb2s=gsLI@z5~0GMdwnc*K`mie;?`p?qWo^B~tXX=lSm+2#=+# zT`-#X*Mvn#e;X4Nh<D(oQQzH!Pk+-V0J(@R!kw;{4^>eAjL=^X?!s-gw-%W!fB#m0 z%+VHH(B@O4ES$dsM&LXi+%t;UqB;H#Z4RUZZQkt^rTKGK{dz!80cORWfYJ~DFwgEP zgElWl`^o*&q!tCEg$B`o_77fIybRFh7V_H(zj_t^Jd@>%^bU{R)`SIMrw$17nWNvu z&q4#6{ST@(Q*8S6`uLaM@!76slgiIixOHcV6?Nn4Na{82RokcX%(g#$|2#Kh%P$P* z>?$&db-{SCP5bzM`-%&oN_2ti%E0XrtX=2yR=dh7+2}zP;8f}vpT4W%p3oTuq}6k{ zZ`51&Y|bb_4@rU|6Uhm)n@%yG1~DNCtoSZoZUwWp!#RPeoMusA5437Q))Xsv5F+^N zVS}(_e5MJa1G+lQChw8RH(Y%0odm4M`nM|g9+s$XjX!ID@&XQABt=hNhdB#=;)SZD zAYB9N;t8lD>H%CbPOt{4LI+GpU4S_%!U{iwalIezyG?n21NPEZB5Md9qvsHMAMB9F zS=5pvno{#WgCc#nq!`ptCi7=eODuyAo}dijgQwh;r*Ox#7%i%>oQ9!H7&fx#Ts>!* z5wQGve9^QUeP%OYJ72%!L$=YBd>wP)(m{txTNg~NVlIWmc;D~rV67g=_$+0Epcw~x zIj{(*_tN9AMam$oSHTQ(1wgl!Z385K;(J|>6))N{HMnge;T33S!V<eBon)3ed=5OF z=}|y(pi;qsGGyp0V>TN~R-B{O-e<&lFFUI^qdKk6QaS=5U<nhIq`_(owwhSAt3K%H zEWwh}?wDHPZ&q~P@wp1PIGuhh+^|hq_L1Q=L>+<%$$)z*bLjpbb8i_I<@Wad3nGnl z2@EAjw}hm0DXG$(A|*9+_t4!+BZ3M@Idpd_-3>|%APvu&{T%lb_y76r*Z=)u@5AkN zTyxDeYn|&{=lXs>r)YA;8=FZNT#fIbAc<hBAg~U1mqz0w9u<Gg&ln0ucyA0CX7lx| zshG)ZNYTEQRh&CMp19E1l1;OFn4ijz1F!J856{DWn1I3o=*sB=4<X|<Mxq{vf@$@s zr*(s6g<4xMXYSa>u^Ryo_=Nc5Cm~UfQ8%LQ0dq$T`QpcjETqox2DVv6T=>*+QH;BG z)lCm%F4+_PO#WS9QDgB1gD+XaWdnr2NboTIt~KAkY@|v_$Z5h`(3^jXAE1`C$*l{! z9E7iHyp<9l4aAnGgNMKS`JUEeK2~Vc5})?&km#&ylHQ2rr}$%T#gqulWD!)TKT=$X zQ;6Kj03qNhLbDrLM~KS_P@ny3D&v{F8TyHcFtADijIt^ZRc!{sQX90_?k8H$|L%fR z$Rk2Ypiark75ffwiJ0dK-5AtuF-JQW<v(*r<}lkMfI<lq(A3=V`%0v+Svy~kPl^|s z<qFNR69(LS@%xBws6<M+F`}YSX?C3+qyVMqV1AUP_q_6ELbZ&P3I&RBBApaDw0;H@ zbe+C8w1qo=<HUMZz?MV(8|Jil2=m_y1RWk$0<-NNga~=6uZ@d}`?bAQMc~^=8iuW6 zn1E8&|GIt~qWLYh<gYwhKU*Lled1rBtO4aiZ_AW~ekN4XpnESYqD7;81?hUD#azCD z`qO~#@sQ9yu>6chzvQ|{s(_{(AO*$$h(Dglr}9JiEIyG<U#Vz7abf<fKZ%z?<VLw) zmhK@+X74P^-;?KhnpU<+<er;vPh6h8Usn{e>`#90VZYfp67>YtGDFJqNBH&0gxW2H z&t+3}Y5b{0bdTuBjgNZ?S+Q~A@d<|h;x0Q=UjavnVMOBw5J)Vf^O|G7mK>bA&~-{6 z2|NM0t}77Y*p=ZF2@FtzBlj#&55C$+GoA<H@Rix`c4@*>LNgY`XGjtdP#(Xo1SLF& z)y_zu!N@%x0F^T*nJ`>uByS6xb$&&jQZPXHk(MTJ@UNS{$nx+XaM&wXYxf*YIja@J zSW<UZxAEQay4CH0|J|H@!$#^pP>whuOH6yy-wH&5CY2^7X1ofCXFAJxoqY`syd~-Y zMTPuHBvH%{=#d$>^f6CTq!cx(yEuQ8Z}#&{C@+$Q_79SZt8ts*4B#QUz3A!e5v?2} z!W(;&Wl6{!G!eZC2$c<i;C%r`$)D(;R-5=f&j-=hC%EBDa~1{4X5t4ssoFtE8N{5| zUWM;Xj2Ni0YMp`Y@6~T`&OXNA#@eFkpOSme(8v^K)&j)SU8~P&u6N77xMw>W(5A{a z_7=W?=wu&`)kuJYmAW2?xA6Xx9%>iZ97yVsn*9ZE-cO3BXExyDv&>YjP9}5*SUrQz zjwz8+wgg}IM6$diQlihI`A5VikcEj_wvC$lvv>f4>6E1Pn6nr1$DaYhTR2y1Qy1(E zH}^_7grr9~pNrOLs&9O2<_=Jy$V;Xl#0^|+L_W!_R~8ZG`ZHJOLH*<1Zglx$?Lkr? zCyV(3wk%N@QO8?4wm&&ruJ%Rm79X~BJQN+Y2URbJG(&f1AdG)e7PWivOcIAJF;nWT z^*w1;W9@XZo=>mJHxqAwuEzP(>qo~(NxLYJsmvq!G+gjQY2z}as%_4uAjandaQ<IJ zuY;4H6Vh9tZC(6_IR?hnUsP7EyZOiU@et@TipnevSoQXSHv81_e8m5Dt-j4E=>7A4 z*$)J0sn-pyV6m#7tY%h2#F`sCF<>-s1oi9Kmay}C&x@>nPk-AlOnQk3=Ic}{uQ%<D z-fI%>_6><+vi#Y6ck4ZJ1&U}~<#O5${RAL}R)H99#W8cTGqIqdK(ld$vgLV&EE!7p zUe*K6lcc!;st#mkUdD{+vs4#zYg1-i%lwxe9LOBlD=vglIq3YZNkJZ}O-%+pVBbRp zI4aopq=@~y%c&M3PGw|C4xB&CH3*Mz3<QhyiB@WC39p0@Ur(dMOnF?l)jb9{>(24( z-WWK`m0=aZ`KdkE6P%-S&YYZ&OJdCrR6V&vh)4nhq`1!F=^EF3skfMRnVmVNyfII+ zf$Z}ljveU9YDSK$2Dn^sS*CzULFep?@J2NclSUf;m%T*ArGBGd#hAZ*C=~9VFWCZR zkuJMg2ImM;R16eIbUpW?#Q2>b1J#0PlX`#nF*yCI8%z~{)%K}yR(*W00M#~~_Qe4q zq%3>g%vo$$y}s<-k=qv1nlOVb?IA^5`@q$~sVVZYDnLDWh0+C_u3Y3b{XUY5PJ51f zpzY9E=mw6VfXcRfH885@_lM`f*UxUipe8y88ItG7KCB7ilw=+A-ZAFIT~Rc=Zqeip zb|DE$FwKZo42)*6j3c=uW#K6*{ECT}qC<iyJ3C<7@1OU{eqbQ@>aCb1pJNCT1^#^^ zRE%7z2wQD|i+lYpci>d!gjVd3OwD@zxzW<_d1qHsc%h2g96})gzf<7*+N~8g;iR_( zLwwY|_Ge-DWkBAb^+4tG)^#J0HQeB^SE%sp{)Ix{J2tF@Q4yIY4aH-4I^#1OfHTD> zx?dUg$T;=ZD_d^84&-EgJNst}m5A>M1MpF@w|uBeHH%EXsLAykY(FqO3za}kd2;ve zfS&%JLfz{;yU*X`>!1Dc;W{H|#4PB-tynrQHU9<70saT=>^DH^!*(33_@;X=)8Um< z{PP}9Bv<FmS62*m^5B9;y~WShKL;tKmSCVA{^7c_n%9OripmnO)oi#dt@VO0j5xB$ zs-tzd%2ODXzW;{QvitjP;<%m{#GzLE{+;RZ{|Qds<LpxkW_Ez1V?FDP`E_MFmf`V5 ze$dgXb$1%ZOBm2?Uu}wjNzzO%cR^&@0;Ed=LJH<tsvu0?GqaMw3#@t7VQ<Dn`NYxT ztH4aYtuITw9=br2<VLdAbw{+D&&PaLjw!}fTd3s98ukkoq=y3u^SiQ}9XEXjiv4#9 z1^RUk%~ZI}hqJx`-uH5sRWCl6a$9$10at@4s2llS*aW4OmGyy>y`2F?0~mMjJjV10 zu!xT$g{pp%emAFYdc>n|m={2~_6zLmYMwV8q(b1hqa2OfI}?IfC4WRJRXgz%^Gq;P zIQ-_p3a3AiaEi1iaMOBu0g+e|owyO^(D)Hj0Vqz}$kG60*iBEGyC!PPh`;XD+pp1> z{b6|_2hK=)LL$P1%Dxvz%)urRRd91lYJT;3J9gFBw3_nD#{TGFfvuHX*&^;5*E4b) zg`~&LpIj>5-}SFk_Pn{USip2zst3mcoVp6clKUx`qcw@1KwwKe*Bk6jWr!B)4rEA= zcln(w4*)Ed?Fb>{v@GQTF1T7hkEh-w-)!?~yiykUoXQSCDfib>i#4AtZ&*B3<we>z z$a!`k?6JB=sUF3`!u+H7tW%j-g=84cq1H^0*T3+&PjMRWFL&T`2W@^JEUA>D3G;E9 zT<*%Y!%84q^Blw<5vkPGt2dogslWRTPG@ePDX<8x^kOI?(o`suHu63Vce#xSR=Zjj z$`M=<3yLr=Mi4SydwI7gr=hPDoMs&Q!v0i6DYaIb|EOHsXL@nM-E^Y4WQj55HvLIJ z>rrajMh>gkskfMV!+w7E4UVHL+Qevm-Vr3oWf~kh!=w0LH9mWA7N+gyIbhx%f^~bj zI%6LePCJ!<N;u>tL2#5CFyofP<-5r1gu3P%_PQ1+z*YX@i^hlO7~m1eHY*K2d>CQr zmDUy+bCx!G`0!!Y(AInZ<;52`s1klh4n5!aWbWtZ$}eDX!Sx~FXN<h63T4ELy#lJI zy@Nd{$+2Jf#(P{2!z`;tZX&Li3y7Pur879RR<mxsS=Cp-C$-ZvOt&HZAvlLBnE>@R zYgF6%91mMWwe{mUP4TR8ajHo2y8Yat3#G=s&yxV0pk{QkM$wMJQ}xt{WE-F75=Yc& z$s`!>I`|n0QExbT?)KDuxWdrqnTJoz`0RduN-=(686Dl>7eSWp#&SRoJQ_u^CSa$y z#rcF-k&uheGa=D78}7N&DvG7Sl%Y}fF|i{U3u)220^;oJDLuAnq(jeGP0Ls8McL>f z6S*2u2<|17;93V(JEM_0z-1f;^U;}TKHoy=yC2Vbh8aQtyF$%p%iT;ijpnR9glwHu zC-y@>Ab9u+vc;AggqHC-d_&V7hZNXO6ko7Xv(zo5Q3#+qJ~GmSVy$gNoVzNRgq=$r z6F_#8!=1E=q*u-X_|Yw*_Up>?0pF-w2cFB=Z=3Hk&X0&NJYpXh>+OWAzZSuqcAEzq zIkP`JW;FT!Hh+nz&qQoIbr((bx^m)N>_a`(BTE=wK8R)IW;RfPPfq(0N-W%j{?R6~ z^$fyv1(LkR2A3`7eY<yRR!CPK++umhr28hc(m(U5-R2vlmF<=(+#AREq@lPhWLCk* zD6HQ7MZ`DPZS=q^e6p>}V$?zL`vptxm!4hqQ=z0LEr`4p)w2|y&ztPbDDqi76rK{X z^p6h_10q)4{7K(X2*}pbH!MA^qdHuO2t(86E#zs7#5#t&AE5-sp}|WI7o~g|Um6CU z(dDkdlM#p^1-woySsj?&)FM-998%#K>npq(!FY{<xA?KXWxRs?G{N=ie@`e!S|h%c zZ@_@$0FLNxn@JJAE1~4nv^KzF0I`!SIHeSYm}X{vfuj8utJ{0F57Fe_^r|Aub6z7H z2BC+)Yh%7JPlLKJk<#)j*V}iZw4$E1Yui$1bP;v}hJq?@N|qPnKXW-cXT0a$5OJ)q z((Mr?I7Rto4tH5bv2)}9Q8`f*M>mLpE%Em~9^h}@agLvUP&?0)++SN)5DNb|hD)W9 z;Q<#u;ERY6yDz=ANa6?W`+FOJ86(xtyJ;AGrEYVgqC6ukA>4SR5p7L)@Rpe)5#8<i zt_zgl_$8KO>=}?lzkh~qO3AmNk407D(5E22=zXyr{&k2y<T#paBAGb)821<@SaLCj zH{{l$yIy=!L*|BirkZu4I-zFm*Fv?3WKv3o+bd0bma@}(h0=u0ttI{JSzpA<#udNk zre#^&SUb}zi0(c$6?mn$;<cxp`DI8OJ)aD_a?D<jEHIJba3ClTk?6`2zj)&wr(@gQ zH^(*;f#MvK=GUxx6pF2p6i&JrW8l4M*p;RNm%Mlz)!Iw0kErs~?2RVpf(u_{{sNW3 zyXAuFcWjUd3W_1~?bpF+f_9ZMx}K)e5v@sLv199TKqpE(_B)LGt4~?+5(92qAVSlW zZza*2w7s+m^YGr5oxmbA;=4ffN>MC#kd^kkQVIl5o$KM_H5?A^H%Rlxd<T0bC(xSw zjBay2*S%Dg1U}tDW84m&%rC-dzn@ham&<+5S)Ij+QGUFrnVkhc@8KO7K*SP1$>Q0m ztg!L8=VP(l_27$xH|xg>PFkk(__pv!;WP5R7HTy&qlf2C;5=fVw+tqBNVoPNI7+0u z3G;dQbNaG3he1JyLE+-vZZX@D9^r<^elmkC+EYTb=G)4c&Jo^!9*P#8aSZ=$CaQ*F zzaGY%#?hIS;s5C{x}K2cjZ294Z7J6is`SsZ43mV%(ZJEHkN4YfM5Y+rFmMAIwG0Ev zz0iaBwy;)@@*RU77zQSAEsD4|NuG?#_|eeX{$2<@W399|@@Y^gta>+)&fzbcWRt_5 zNej_gPpO1WdLIgx_(_XnI)`07;xt%>Ji$Z6{Ibrs9DCozXfpN9aLV~_{4f1%V;_sb zE)MPiQNu^s1DLN~ODd8J&Rfw6>W0_LH|1Jg`M?IXOO{1Oyp?s*@F%QtJ#eWde&4n? zh2a;>R}*B{$1Ph%Nm1S0>k=1!bqR3oe-HTK#2N=u1i1R`p&QG&q5L>K?VWE0h)&3M z34KChuegYdv))SV-=J(!qiITvJAKyj#4Y%<{Kswt@;5YYqvlhAitui&jhyh#(eL(B zDh&l$pKepSDRU`3=l$r6-Bg}U8nDP;&TaZdTXVb=gr0-h&UNqunv0mnX;OS)P<(9# zXJ;JFl*@aOksCwC{c=G(>v&>3=4H9;8xpgbWb2R#bxW?kDkl_;hUEa=2};D8iu0#v zv6r5T<ZJm@O;gaaW%jR;T+ZW~6okFxfn6$ZV%f5|nwsi_7aU)1&}2qSDF-<tY7-pn zGb^)K1nnSg&tzXZoJ4#SltSC{q*J%udbZ_N7lmqCI(isNpmJK29)-`%9wG7fXZ#^- zwnv5#Ujq{247;M@Mo-6TU%B65<X767UautAho-rz@lon=k>&&_<J`R><(?XywuV4q z<2E~oh_uRVFuEbomN0x7{k(yb_MW<arp#3frRB}F=3YMev1NCfFV(OA<Wre((DTfO zYjl3E---p%x2Kn_oDK~1QpG46#f>RAOJ779(j0V7{wNh`Nk6&`l4^Cc36>^^+hfg9 zjPk%Bb?BrZegVB$3q_A3ZEkkCi)vn;ZsNXNNfVpUmH2WXe3nvAo1vL9BT-c}TY1{` zgy6KYPf*T9@avYb;L*|OV~8zXGD2)qB)tzgvb3OxzS@WF$8%`o^==RJ%uJG_@u}e^ z3>1Z*f(cTu&<{wV>pC~+2e15GiBn%b9x8&ZXAHJKd*kYz&4)0h8q30e8G#N>8(WP% z)yWpXOe>R+Nq?t$7XQv>gRHjZfF63f^1UxS`s>4-7dzDr;dEpSH5>2ozwxa!^#4FP zL*sav(~dEC*b{Cm(SK+Zz|$`t?G@qnwA&kZ@3W<H*!s0qw#uMw2x(0-j<`vIE!{SP zmogA1oN$+a@<CY%-TW&3qb)<`OoytC`ZEkMx(lbcDf$;(l$}{uNs()*f<gHU1v=K8 zHua89#>IY$hNEbj?aL9;3t`U)7;K$mpJ!h&n2!JCbk_brDiACFmp*<i{LpUe`Mfp7 z75Sqc0k6fi-^73I2d?;G?H-GVGqPUJc`?qr`!l(DE4R}=83al%3Z<l$-#qG$e&oyZ z;S>J`y9O}3!L!^Z?=xp1oOllrL05bbbDs=m@#f6;D_s?zEt5*xqogD-M|(<d@{RHv zunV0Bx~7x|Gkq^Zduj3M#R_a@1CI!*p&a@k&l$7`BS*vMs8oaV5vX`d$#%ut81#1r zudR?8rCsM+`3}oYJ<)&Ib+6pV@>8-bd#W}YfjmJ-g{K|Md_1=^6jSqvM~34&MnMHm z2^gQya=PiNVupCwJtG1E@phcZVnqRsx=n+=c5)9I(gW?>d(2WH_v;IP)aF~ZO$2z$ zooh-_7;&6qny2pHN~cL0B>fHSTy1@vS!rL*nqtfr@AG@**`{U4rV7Ow3R@{Swys|G zd%OAqO3OlI(uI0fTe@+48S7$<br3yPWuuEmAba6l$yX#X)HCWjQf*MGktfBWXnFFc zKU$ntv0|k0P%l#d&GMt}Bn-#*yG-!HaM~A%8zXKZA0GMsB2E<;*X6QQO*N_+CdDHz zfz^1K`maPNM)6}Y1pCs(0$jM&rxDqK;*EZVfM4WdYe%!S9yqenyT3UY3oX6&tyE&X zBQ{bvxE6jNetbeQpFbj5S$)`$UHLMBBhF%vfPwJyq0jmPMmSHUT<7y{;nra8%Y>)8 z&sLsEOoxzhdep~w?l1V@*2Wq9CO>egK^xpe4!hp|+O8%^^|N-Bq<xCg^7q3h2TMzF z#HO~qMT-=<?7!LN7q_1QF`61Q;}Y-gS_7l{@(mbv#aCw8jYYh%zq~uvD9$L!_8E_} z&*mq}{IhiWUHC|bb}C!puQ>hA-<cWCTbsMmwx5})h|Y8WvV11VX(Y@^%wVhYVLVe| zrTYi*H?%Zc(XpMDc=E<oipqhLsUC9d&NpoDBiMaD0=6DKrnYglm3-XG5Dj9Pj7;^n zd)vW4$We{Ip3?_?Ui#)s?m<n~t!92$t7$NGy5b`|^Hq!&56^?hpRzId)O^szG-luV z8;rp?CE<%%<h4@e8rkzg;%(U_Br42&CS=TFPP2mFxu;gkNKA=9@3Yp0jrFz<=ej9L zg^%u|zT(=vopX)0{yNgB4&J2=4X-||X>p4c+T$EgC^LS;d(IS^W_2wTE0d&mSsxOx zJx!hW=|ej97^t%Y+^nFi>Z$55MGt#jv8+}40QE;tE3tkI^DP+n(y9@*hjyR#yX6eq zypDT=JM^>uO~S*W6Q2G1zj4g4a0h>T75Qkd7Jw?4@K}_cfPr)B+WecSBnjsN(#_T4 zlJkovt<`a9N`B6{!O*-lL&{%So=O{(gZCKW0<#JM+C@)GLWD08&~w#&B8tk`gX!dB z92^NAwZ}1-Qix9R|0H!9ZWRfs<f-S@Jfk<f3{|l#j1dyKf;<&7S<{>6>wdwFOI`w_ zmXSDjqW!U*AAOx1s6V(`Xli;a0uBoD1XP$SK#2r1QB1#J_>G_u*1=_ln5s)d`0`B5 zRQAsinMV;JlNvU<Z^@z@Yln+7c1g&%CXzQ-e6l~#D*6fR)!}p1<XRfm;9scP7PEU) z)%)nIHb)67PlcWM+TK(@DmPfPB>4NjqC@@R-dzTlBy``&kH;$X$kcdTTxL3qhk{e| zs5E%y;!U=B{7y4PiG%Igt&K>BS4C*w39k8)^x8}x?+43!kZg^$XRCTOsWD@JYN^j= zC`$Ho|6JHwVwSMa`G(o`ABh>Kd3v^XNn{+o55asJX8lA+anix>#5lm_ZFd^!_*!`! zWe!O-msr`h6L7YYq@@uy5-eLtjjpUeKmW$emzrA4pst6u`^)ALJG-oUr#cXHDMYi! zC)&=#DFf~~j#=bV!?O?h@+y@wJQ+rNu%^D>K+pB>-kjKV<H#+MqO#(1G;`>ZQ<g!h z;H`%#QRIRuNvu=+L(t#srW~yzXi-rT+BVST8iS*a*fd$l=zO_!M*+=%l}VBCb-S2= zaRb<}iEY*8qZ+eeYr7LrZ^yBMJ}R!9U{QQ!RND+78O?F*Y~~-wNFw&a-XDGzQ~_g= zBI~`cdRdRCpg`r*|2Z17T=UQBw@;~x9gioCOMMu)4hv#UN%h9pZ%JRIRjshL-Sl^^ ze7*iP)4ZWUq_yxyIq2<$N>Z9I2es7G1tayIVo#fza!d(#CmOjX*~B7Cuw(3N57|3( zUG@5?cD${ClY2HIb_~0_XSd}_k#-^M_P}T#N>~y~d4SQ`RvHeL>909r4Y@Op<>3Tr zjd<L}pyLVUS}`dec^&MeEB3sjhyM~yR^VxLR#@m%4FXixrz`hVy<^iJPwAbnWkfO( z?<ucBf=0ti*m74jWNJ2Oo-BB)3cM_SCMV$Y$#Opf%7<_cd$0aRI=%2t3tg@KKF`kp zx3cj;OYsHjRi%CmdRhGe{{0`gr|DlG%1|O+#RZPx3C%A*P=hPKn24;-o3G116&4e+ z^))%|SfvhDJ(C+}R;_tRksA3rIwV?x`*Rs!@9rH3HWyz=jqr==-Zh<Uj5JB)SRTI{ zEZ)!M8d06YW=LdES8uD!Bjx+)HD^Sm#fAEkA%w(W_}JFx`3IR(b@d_ZOJx<bRU#Wr zkG1;eO?9PMMG-{}Uh#Ti&d0^k*bWGvmBOI57x7Dgc|d)J-rQYOZb0XyiDg3YxKg~* z-eC}SG8jY4o3L4Gu;sI}!4y$^Pr!7ejnL>08je`*qIy_BD+S@u=7~_C4S*^3;TSMG zlC8z>C67^4+C;^690i0wFgD+r3yrP92iP3R(g$ZeMpc+HPgVtZgOu3#@pU>G(YA%J zHH(T)N%H~>dzS9tngJs<JqG65o#FVj`wCJU_X}?F8LU3lAhWVp!uliOWNeEDUknPg zH5;rNN)C^bzpQ;M`cd2NG<b~YP<aF~j;NgH-mVRg%ZIyy$jO}?YM1=*)|0o5F*YsP zH5Xgrh}1s<OWVdYYScuYUt~WAS2+C516qyWav>6E7x}{q`V!c@y(DHhFZK^tzgn56 zzHTmQ{IZ^9bD_#Tr;$&{AtFS1l=Dnr#H^B1_Wmx)re|_&m}i#G;!b-No&r`Q+RCEa zc+_)zkkoA+X#{!WOr^$1<*`+$x;^M`|K5B2i1)!4NbZ5bMDkRpZtlq7+z+fBO^oG7 zTg`1vdq|!*=aNljZj2=xqpjR=T$0~BAH$%!quE!b-FNfVL#xH6D^DxLz!tG~@7YA| z8VxMX<a|xH_oBN|IM?c*lABuQH~znvzK-MgqWPq!H1bJX5b5%VdR<-Lh25fT3?*L8 z8razo`B;40mxijD&=?wr+}MWMcD|5=CB4mc&@7dtH_^)bW=?Qshz<c$*IT2dLy7a< zcn;fA{ocy^KBlyD3DdH@uBW-=KC)Xm#0dn?;{$z7$z$b`_IM*)j0d&r*6*VnL{E0C zjCf*6N>GH5ZCwzAS?AuYd&>IPeO)%c=lcP16n7=I>cY%DUOys_7%1L<d2V38QL<oQ zPR<D7=IZ14d1+z#9dIz{ASj)~gh}W<IB*6MND=P3EZiV-I-D{=o_Z~GdxdmCbD6RY z?<edOv-E@}yYJ9wO@2s)1m9Rz2BHo>H-Vas$)@<J5Xv`vn^=ztNB135_xzCY;C|ZS zq12#>wkky81f#nn*wxeX<NG$8B=L3r6wawX0@WMz-O(grhZectIF7rL$T=JFSLkJm z9>$5tSE*SGOod|%`4f0k;<6F9xbE2McQKos#XA=Jue;BzpVx>+m$r#0DIl)%yIDR) zcxAxgU+d2Z*y`_k7Ig#WG#=a62i|**iW0=NUsdlN(6wMlhE*jTt#9INc#YqNwGaLw z6A%uOQpDuC^UbP|SsKpH$Yq>DyvohW;Gej3^Kg6R=7t|e@^CraI^CMgI__f)kChDD zBYjhyaVym}mFdv-`kt?Sf8TUJPHs2maaiqZTg8K8n2DLgIT)bCVR|8kWEn9mIM;z+ z=Bm>zeC~B{g`dbAYQXXjMW75u0u&xc<Bo!nUj(RDV)G>C2#>lgj>h4c$I3$(k?NW| z)hFJJVz0M5SS@m;+~xI@sbg1769VB^Cp%h^?Sv9A(qrsT@CXM@iwEb#=p^vc-sreD zU%QgFSiT{BEK3W5z~6J_nG<RTf2q;9LYkeSAch;$%PO~(sUWACXgzI6zDZk>aGLd} ztjuzqk!zA&EGt1^pfKSTy7*orX7UDoj8r}uq<y-ZAi5f3ah%{X%(p8y$F?k)L93P4 zTvvkK7uPkukA1!)c$waFE5T|9yR#xRUX<tYT6S12sb&;cuxdv>DS`-cmrT1rAY)Jv zVU97{AS}px-K%bNdB~sbV&e@J2-B4K><tQYUe;vM`gT->hg~Eyh!4RJ5iS@A9_v~D zJW~?+*ze~0nwvc3YS0Z9YBFx6XaTxQaU7yUFZkP;m;?n@7sjK3-hIyt(k7}3rdC?H z!1M^+F3Y`aMNG`VT7}l+8$FlXqqKv0`ZqTs&wpjgR~*I8o@-3`4j!q<^>hT;yM5-W zy0n;kr%Bu<it`0O#0NKzw{1jchtWP=Se7~jWgz<JOOgcjj~!Go@4r>h?afaJ=Xv>8 zk4F&%pb!Uh5)+{3akLl2JX7C#Yg)DX&Fw*fN~t2*N?J;6uA4oYG^FZIPpDDpNqTb` zDMak|eUIy*y>qd*8}t;63C0Ak&Dr>C+v}n6iCpNKP$^*t4g+j|dR(KoP`&moO{`E% z?jMJr<)a5y@qAECldCLQ&7mJx0^4|{SQpDv-5D!a*<+->xfHh<D7OTsC-Kgf5XfVT z8KuW%%xTv4CUWV&w=b8#p|-qwW*&LeXNHgS>|>p|aznJmgF}-N-0MEE?}sFzEz^`e z>%l?~J@qffIu7$qO+%_D_jC(6+00+xvbs6SQc@+zE9;ULAJeI`<ClF8J4Fz5^M&zK zlUo6<*QeY})(w>e)+&pO<QlCG0XARvgFqbG%7J_mLy+v9w)0O{kH6is-mdHoKYR!E z7QYrL|IO;dD_3jbSKuE^|AU)%v)kIfWDsB1(juGBL-XOfe%4Y|yOlV5CY4>vLN$WT zE6hzwew-os#0ay7ANBN+66@_xHHb!kRt@1RBa2P91^H;2#fU=rK7sZ=lVmihlznwf z3VdCkUw8|b(bV&kRfcCLWBZYTQ}tFy@x#Kk)6#L_9JwSEezMXZ_~`=@V}w|vQHNeT z%<+90o<wIWC)ggutl6k{7=S->$x3DwO|O~@%@J5hcy2kaK0Qll@&w(e?Du{k&-z+U z^m8FgA+0|mLR?n*{rd$%mD9>fVA#dNTF0v$e{FWz#fi<q6Z=8uDF)1GXgBntZMj9l zW_o)!NzhX&)w<w#TXkpUbhws#Slcohj$4>hcB=harq$ijgr%#XL05Km9Yr^Hs9yzO zOX)}5!7a$}ZAAyEQi%1x@{S+LdEy%8*D3_axyQP!K*Nxrmw^-*lW1b)AC<{(F4P4@ zP~YgNUenF`^I|`ZN*3`Za#ZOL)Tln6ON@5Me2LB`zAXKC{zAYZ#L~chxMDtt|1+V) zxUUkLFf{jAuH%mfQ<Az9{U{F@#E6~IK!<O-zZ`XDO{K}j;dNAhJ4~ijA>$d{Wcsz| zrKoe0g$5zwa%VYMD3`oH%y`W5)sjW5@>RuW7)IQsYcHIWVaN$t85jUn+_G1wb$4-K z+Il&AM4wY9m{Yy(a~>7v`QA0=I|eOLmQ8--vlpSWn(kBXS1%_xwMR851Lfb<30=Qz z^3^))n{u2UDK@whJfe2^^0U%Lc~)5)-1)CuE40^V;>+(^o!t?8(HOR|0EIITZa=3q zVtiYYd}RepR}QpuOopu!({pa`U)CBgc;Z(l+j<82vxf|mD;IIV8+Iljz~2$J|Ck6K zG%BEW&f{n5tELbsQZzx`RYjp;9q~`_iaTE0r0{>fN@Tzh0W5>!DV3ZR9qE64h8P-i zh6T}qQV1_`fmJ~-ZXuL4;lD12Do(w7^HUkq^)Z^o<3EZOAFD6}1*J^-bF1s^z4LyN z$gp<fjWgpX5D=gm5(mbIo3Pv*&}98|lV`P#Peiwk40j!pDA2<~kqO|Qa|yxiR>duX zhW>PsXLVKzu2D>?>63Yk79uqzD<xKFS6lv;3GEpX>a4?3f}V^eA?hmvn{{{Zfz|4d zjz8FGB|n?$AIw0a!!vLT!@gEZf3RaDI3{TJY8m{U^#cSeiL%w;aNlK!-*HvHLT0B- zqKOtA{U{T`vcWjLOxStFnRW!f@&%8|r@*B1j&S@hK82B-f1&9`-3LT;pNOPQNaUr& zEJz%DUKwHvP@+&OW#N8JBu9;r`amhK$v(w7lD7)+x*@vKok+p|{JEiZ@oCqq$Mke) z&xBBU@iW}|yXN0%aqblFJynZtbA2YXI4$n`K;c?o5)UHSi+8zedG@O$t|2f_T(_(q zs`vnV0W(koI}lJ18v)Gc)$Sk$6FBUp_OE0?SG(%%L9(4B&pSPfk@6_yDKxwDxgs%b z1}PQ_J<l#Z9fWW9d&64}w9J?QSmBVo&JIo>I^C!$BWqU&<L?9^ZV$B<7n!ngF23VN zhn*Rrq%#}VNfI4QS8=pXnMR|mPx8_qDhMK)q_vJY_k1%mE8D?+M;nks$>2}XICfxc zEVwUCQ>eBC{b-O>bxa{TBCf?}%joKy{%oIor1o8h|Ag<&LeGA9Uij5iHmUH@xmKNz zo0q%L#5ztxL$T2>H(D2;=uhQfTu8S@hL;j!qR^|eqe7!snfgTvpfG^j`x0wS04Z8% zbUTI=1C@L2nc!3I3B6-2G4N6w$xv764a>z}QPGbYVfHG{8uhXp)2pKf*77B$vLpt9 z*g}UE5`etB6ehU!fBoUZ0NsZ#a~>JR+H(Jozy05rmOcPKu-)?)&i{JVHXrh%Ei*Mq z3IE&Y{O>z~C-^`H=0?SXr(OSk)c_qGqive4@+;Z@^NIhjJApq0>Jh{z)R0Y*DE#YH zT*2T6GAw3&MfktI`+vU^@~ymm4wfN3buH?Dy{Zuxl`ql#|EDi)v?!)fOO-bi^ndI! z0Dk;gc$++}ud5K~Q&vAFPgOB={5tIa9t8jGMHDiQGQ|`EtWzVEfK5D5kBrPC%>rQ$ zX?Be~H%RM%fUS^G%eogJBd3wnP={R4%`$!_Ik52jw>$lx11$s7RfKT|pw(AEbI8|7 zWk%iX+wumHt?UWV$L-}laPzwYxm+cXJ1t~JmW-4A>)n#*Ta6ASqx!{wH@l%N7{hy{ zH~;IO3qJrn^+1Z{egJdjygZftx*vEzWoM+L!N~u{t>u9q@J6}=^_~8PA-@Bep{vFj z5CAj+&ErTDfb|abO54UtV*(i93J*=_sQRnW|L>If=R1z-pfx5x*#VaLwQh*_JK*uU z`py@RIuj>(yInW81T=^az!iGR0$w_7AK0rrfFm+o6zJ6ELGO+~c>slx{!e>Iq!IH9 zs2&%9Fz-+8g1i1*>>YEu3F<*b<D{la10b|5HX)IQqW-CAZ;^F>j6HB~@SgTXkSe%W z<16UqyFgv{N8<L}Jg*z{vs)D&(FRMze|T;%@1^GGM(Hb@fgjBcIy_^{Mgl~6EkZhG z@q_tS`#(nhk%=PJ8((^;9K}G($bkl==;;p-#O+^f<(-WHXoZf)q=v$U69$cIJQc55 zh$t{NEg(&3OXjj0^AkuNPoBs>2q+}N)wxTZY8=!=<^d&k_Y%PTW6BM{|97Uf0Ie!L z@WoH!vz*$o7LYvwV`?xU&<}IqrF1-Y<^I<%K}@*)tFy-L<s-%&@ML>Hgk;DTqidC6 zSy=H0`qoSg4=ZjM07sd9){8T&9{q!jvxY|GLRTYW-%A1IWrjYumU@J{VV&p>c6ZJ* zi3AkZ?dQ1+i&O$F)kC#WpbV`h+62yGXV4Y%s0C?|1yZ7=hAuMwL4WnPMJcb}Qy73p z^$@b?B?y0>!iZ9eOaf5;W8?^|eg0t~rjUYRh{E>OrV#o#(yN>Nu?F-O@Y8Q9>Tm;0 z*;D<kKa~0#aliohT3!<_J0ztn3`-}_KLdtVFGq_U@caup<}n+2b4US}VR`inVCa8T z*T<YCTzf=?<TbnR0WRT_7T+b<hj$y+cH&`gU{zpL){6ooF#C!d<G;SuV?v6i3tjDz z70?y#AD!^p+mOIyYXxfOkR|MqrzwkopW5$PKo)*7Jv_W*k@RA7gpI~tp!v-yIdJ{h z`QO+y=$iySm`D1^n<S7HQsZ1eFe!RP;RgqUs{+&zCFm?e>TDGO(50Hn9L9TH0E9PV zH-ORbSO0I@Jx9%9$sF(-bg(r3dpL>2tjPj)TDryjY%J^}QGxjP_%lE6Sk4_mXHEwI znR0{rT8+J{9(sMQ@mNgM5j2}Tz-wHMV!w2ez4%JJmELVk(K8`Xm@DpmnFoz{1Vm+y z?pdB)F0PF`#V#rw-$F#!VEos-_k9fdamz9iPSpSPmkpyI<&qyCmFiFR;!n=Ru%+y< ziI4?WfO#<ewN5(}vdQ&ivqhhQKzE7Hs!@xy7`w<E?Zd>?kA(3eU9^u#XasE3&+B)^ ztrH+1R4o2D1*&2vpT}=OsB!_E+@dV6-LmrT37r2px{%}UQMgnVm6G}WvR4meSpC00 zQdHVP5;%dEwL!=!7f3A~K*`A!xj3ASuV1Uf(v5wNLM<~qH#(HEY5H}Gp-~7+uV%Bj zBR3$_vnRDiDwOSj%K%VIeylO7g2+>cY`UqJqczJWeF9wai%!Vim~-xP_6tA+d2lF; zBr41UT-XMPM{6uKe*Y=&_@6-(7j1T4QJIM+Y_*6|>lbLrGzK~q&kg^Bssx&L58#U} zy+geL(dYol8Ycr$14y&$ZeO+B|1TE626JE_(ZO(z`)psH(j~Ar{6po=qe1eCukbl^ zQE#r!JdhNbD<pYxD|!*oVv(JUtEWPzkl~J&zcsv|`5K|(&&+BGf*ofPUPWjI%YP1^ z$iHd8JbX|f`Cg_5zCJjJTz$+<G^S$_5N`F_UKgYY3GQK&QMK|^*$3<mQl+(CJWUbG zjs-D)an1#_ls)X$7=FG{pz&_#OX%V29Mdq$d0>TKK!OzIVH6rFd{Gmjgb^bhf7)NY z`uU$C`RFF5t1hE0e?qoJq7s|DX6;dQh*UKp$c1Jw*?s@t!^A{e{)1udTwH%Z`ToDG z)l$f96v)s%ici080VzWRXnFc6Y&weJUt@=YwA9=mQBAv24(SirU{7NFfI|E~E#gx5 z3F4pF-j@QxxBr|nfX6UGZld7!C5d3?M)w~-ee@o<%>G`4vh=@B(&1>30_N2H(SH9g z_X3kB09=N5PebWnLODqOJ&~{axHd<b3r(I9&F^A^{0u031&f*i&%_0=7#x&mlfioF z5B}?%Kh()GY^QyGgS2@eiT|#zB9DRIFD14F^H1<S`%{n<eAnH4RKh6pf~tlzk6Pqx zQ;hP}`MsMAN#ssZ`U58c&&+QS#%+|{3$PCyu%RzhUA2>QX7wcO&5qsr3oRf2NggVe z#tB4V{sx*%2Y^f(ft@3#16UKg7NBb}83)x6BT#a70DQ+mub+q3$i};dfNoEfi%d`s z$PApGdjL?tRn1nW9hV2-JzZSMPadS3$2w;@G}?9y<fNEX^Yr(ZZ_lW3H?3b0-+Zbb z2Q7&AHbF8nj_$fT57q{n{8?lU_eG`}ry42J2dv!Y#35vx>SkaF?>{&%PQ7iDMnBpu z0+^7cCNKe0ECAcfr>>JoMcYs4s(5UzreanYCoSK7I4bG%H^@ER!L;!DRURgBHPv#v z(b~dU%6Jr5bsBm`k56)gB%L`RyAyygq%gyQ-BD-V!o^{r5`gUE&;&lxp)-PzwN3Oz zIxy87APqG+#qgY>4@cB9WE+)l!YYLPs&{+g_x*iA-_FcLIYv*9!5%U_8~QW<yEFgh zc^cBC;(*xzSt?G^rymqk9ydn$=#|Agh@mco1S5YJ6K&ahOj|%?{vO%4xg!AgW9bM8 z`2`Hrcoi;4?lm&2sE?Y(56rO6ovEmuefxsD6?E0!1*vI`vINp2BEvclJpF7V?OA%4 z7-3srWA_W$$k<e~=s*p$8F!qn2VX;_=T8LT?5CLOU8BiiUFVa}Ym7X|%ojjDsx(JI zcxzh#z)A<;g?IJ8np<KU>7lgF?)NQloUJx4nY08}AtU#C;BvW<wo}d?CJ4Jg{Vf+G zN0-Y;mDQ-ZSBmNCD)CFhdGFmuqR;G%9!CY7FR^%~P#sK8S6(z^;$J5ROhO2Ue%6wc z@5nT^QHOJ`<QdBhhzxJ9EGiAyF-Pkz>;wUWxI~+5m$qoRA8-D(eYQSk({D{o)n_|} z74A|nKp<aKZ0u(%7Z$^t3!3~ghq{q)9FHr&#~cIIbdP-}o2y)KLr6etcPFTh6(UuE zY4gLkqL($7V7ndDz`2VwwqjLH;-XNdULTC(1<>T|H<E5LueX*Him?J57kdCuA`UXL zv+vj=lsU+t-*MkI!!p$w2(o|t0Qrf2sOi-s{k@}I3!DSc!ujW}?|0e|B=vs*5NiKS zSmSJgVVOsH4O~<%NMn`1LOsYudY0BM$kIeqmyzuukmP-C(K%dNFyao~etM4^fL0PT zi)fQr+$7sz=D7e8P0<zbDd}~IgN=yT;?H3Nwst`Gl|bxNRh)xW^347@I_vqGX*4+@ zgb6qg%Dus?`^QlQ{12DPl+o>QV6k!l)F`KS_F?Mq>Gm_gG-%+goo?s+@w;kqfJXu+ zwcz2lPzcgQ=IGs@r|@oPt3HJEwN6`)IOr_`8gcrlM<!;TA=gdho?_{sR8szgAwT!s zQzUtK0pJ?M6Vn)d6FHk}gbx1bU>u49l`R}4X$^AN=mQ!@u+0DfwF^XYyd;nBwcsMu zToS^m-cNz#(D~kyg<pzaZWqLIZX#0yeek<1_yc}-!mv8$+(R%IGeyC%L{m8PO~&m% ztOg{Yq{_jKb54>AXxe*dtrHR?<^n%5Q0rUHB7zYF$Yvj>J0bd(p7Q?TQ)742%2Y(Y zQD-L$NWa$E$f55q-!WmPho;*&U}N!VE9b;`mz3yFM4jmM{gE@|FN=8QU~WY6-B?)? z8SrkTdjMHy@2U^E7XtY{Rvx!y<*#8@;WnI741WN}IR2worrwPQe<H}|0|-IQxc4z0 zp75sgSN_<4)>Cit`2-*!j=#ZO08ma1^6>Q}gM`USyB#5SWp{^C0p?nMO~-qI-NntS zqEx;9<7@zJXnZv;XX!v%zo7tpOyErCau^V=Hw2e_TqGsGZusZ<{w;$IfR&&*Q5!q% z@gcJN^wl8HT5oxZ`0|Opd34)NttgDJL^(u)QZIPkv}VDgEYQ}`H#3p^Xj9i>T5BL% z;4uz(QblmlaR-aX<Emdqt!qQ4I`<6mTm{~tnkh&Ybl()_)Typ2RxS6!;)D8T{zAO& zH1lA+v>?`n7WQ4$HH+kX6#aOa{4cF)983AmeGaJY;ipXE7TWF@mSbSnY#oQ)F%t7w z2ea$v%6$4I;dyiRsk{=gvEp+TA0Mt1=QT%ddqDN72j0+zSoH!MZSM<VpKfvUEf88A zuZ532u#K_i#)zH^ni%mbXZXi2;7gpFEZx1)vt{ae7!UnC>X@Dec2gpC!_W4h86Aja zJpp-4tyB+M04A@1{~n7h<#(w}I2{4>=XZ}KtV}g4%dX26(JPt5e+`&d?Z%HQXwFK? zx%c<e-r}gqR)*0cA=fD;ytG0_3GE#So=WDt;*%ET6+MUD1U0Q)g3Y2U0klU}k7;~Q zT54yDEGv-VETGkf#_2a4r2C65>r0?fyrc(72OY7bGUuRh^vh>Ek6UQS%t?dL=2Qs? z9D!j{*{MDIeLt%Ms2cojr<^-g7o6_L_?Z3<*fagiIs*7X{PA8J2U{2oCC0r?WG`)b zG&D7s28FE#TRUg4DIDub_UI7U?A(q~y9}<37_DKTx9I@wUG`KII3G76IQaoe6EXV0 zQW5^34{mnd4js5~P@SdV%IG94?W2-80e;sxHm)FVP|4A=H?6(LN<nXuxR2Z|bN%?u z*P~mmPIzk-Vz!4F)&QD_45U$-F3r+04IZv^(6nQ}iKs4M!RV*hl60sUliyEJfH<FU zGr~Sz4?Wxayr_@$5mLl8LJ)%z+#LBFrwylr3)K|5Z=$@otTrdbvP?l#PI>+rev<S; zaHew#?>-Vs33nb^blEU?IU9J30B+bHp!TqUv!9&t{(aFMe=z}K2pT&^eXXPVA#dzp zdiW(&G>zX9mM=SA62o#o-ORO}B4#Y6IZUIqG}T=yVEqfywzTAgOo2Z+$bb;B%)~z= zki^Y!Qw6#bDGBT4{Ek{yosVSBEY*Cu*d}Dd*grH~_{F@w7XKM<7%y2f$nu+Gwlb_C z9>5dleZRVh##pPHm6qL%gYL8Wq<P>!Z6-XY!(lwv-_p_0LBjDxvK`gDg3@_S@TF}_ zvR~`3w}@_HbVe*32#ojA=DYjLHY`iZP><Rft7G`Rf;To6QO@f^Q7kwZ^kY^q&NW`7 zQYKGd5oe89-kNOrH%kf+*BJ|s+*-Vor|_XfC_VvKF@upoOn8ZjL9)9+s+Yfcx<%y% z>^;nj1AF{UjAs8k(?5^S>@GRXV+G~9&w)ze1|Fp<eYf17Pqj9Uo6RalBr)I<sM;Px z=!;=FOIE{z9|nbK9GXI(!Z8czL#W%PLo_YWV6Ghff9+Q~s15J=$6<Bg;qac=JB2Jc z#nPiIGs0vju8?I9Ni_ltqju8%Oz+}!GwhM8wqeZQ>G;KfRd^S1(GH6XG0!!T0B*x3 zIBxLs8213p^ECYPmb-t-g^SR&3z6_6>yWYZZ>o1nlxe*$L*mHWRtP7bMDr|;{^EGc zK+N+up~c393@@f?wxslqp;{d>j*rz~8-&H|GaxG3}~R?bC6C$+3Nv!A<vuKnqO zjWta1<Rgjl3i~p_U+!^B>P&z`%D=$y(J3u7HVNoVADYJQ5!^9ZE|Q=);0-d@-moDk z$mi9>IViqs4~F%K0nc*tpP^;>#opQz%5MF^p3m=Cr$}y7817pi1<4<#e|}bYl92yb zEg`20VYL{jP#~1A|Dk+TK@}tBLRb`23#vodt&3pYVBht3rg@u!3=~^MOSYJ<DmbsH z-`2`8yNNSHeh7b%2HF28cA!w+<v1P{LaW@GW(6bH6{>6YIYfQ+NTTCDswvas5C$<> z4aFm)fM3AI%iXz}5QT_Kz(7f^XSpFjXHC`*(T5R0qv%wt_*z;~an5;IB(FCJgZe@D zf?xg9!6pRkzf#e$32C*Zb=$s%o#{Y6#+&=leXeL^gqwZ_X(T^f+K5xa8F<;=hNoe7 z_EfjtFQ5+-!L_E?;i-QPt@(!f!bn$}j1f%`)()Zog+f~%={x3knC}R6UX&?etue~q zjX@}qk)@-%ut*vv)Jrg9Z^W^2!`veFByW%6l$&o&PiWC)YJ-9{ko)(gmwbJX7q5ug ztg8B$k4F%QVk3%u-o<>5F}0lnOnqpxUQ@wmc5HS?5=9MGTsSWJhj{gE3Ly$ZUamlt zATf%p{1~Eu_b)}%M`I2@NR0;ZbdEc2I~H@KQ5K|bQkcV5Qp}u!2|9<CU)zc5%obv~ zvz$!E@Rev9QSn+4IN9Q_iCa3=@To)4Y;kE)A0C{)W&3k~B!~x6AY1(*aP?)@cnk2t zLooaZl%I5?Ub4<5nJZJ4KvlH3aW~z`_>6dK_^}y$gAn;4b3M*HtC>?(M<fG3RIfHp z?~A#r?{C}v)nFGpIm!=}bTW{BElR!;GTxrvvuqYkL}9YC6+<^m`rucrTHB$^v}yQ7 z=mWB0>Gthc0uQyEzJAl`#At^%aIbcmp2vrio2nXfB)O-nRh&^AZ+8rq6DYsk{+On@ znGEMu{~8f67AX;Y-73w#6(r3e%lE`wn76|c5?6R&YGVPfX0h&+#_p~L2AeVt8nVcv zT8nqmFeP};GUZ^3r3G5I7(B!|S*}J%EV6mvVrY;yc`cai%S%kkz}qm4MqdgdN~{A# zGOWQ?su6LD&~)>7q4Wv*a}pmaBVuBlp+hXO*T^;;cbN?j;eDc^{#~|wQ!8$RJsv!_ z(#e5w8z!I2L%;NRuHVQro8*FDH=j3`VT)np8w+mNpWq|TxI1%}l7orj6Qzg;PvLFO z6cMbUXPwSferXw0Hpa8C+Pa1~1hSApN-4=6cc{yFp}cr)esdpUMw=DtujSw#NSPsn z-lE%DAW1(k3Sl)bBwHL3Q}l1!9vEZXrs%Dy5t6?G6_}}kK@PIets4D|0i)w{a%f?H zD=)VR!~rcXaxZCC0fAiTqmJcXTIcG5=2Qz{^R)9VT&Suy7-i1lM|xbxT$IIE23Ym_ zMDi{9)W_EsHDnUhTNO()m;!@I0-~Pcq+rWj%@D8*OX$Zex+e$Oq$Lg$fEi&D(9^Rl zhX#z{O9ysIDeJuEBMh77>T$&Uh%eWJTPW5+&{{3lZcY@4%|tDOGPlZ7Qj|q5v_TVw zvK#0@#Qy8A!VM2!*Iajpz)>kq3?)?kW5`VZvm~K89gRbJv^TKK!W=nE9%*O3`>eL4 zD{3N#4!rkSoz>}N)Pj?FI-{}Z$xX*Gi{hTG1xA{LwpwAMo2ow?l5%ujWj{DFkP4)y zL9@WMRiFOr=~>V_8U|%dSC1x&<z<Vr!61=HmM?hQ?E^31jhAL=#T?)48{{YPy%f9Q zcswq|fGhvW={g0>vWNXdM=%QgO%ZJ{!}LxKj%Qie7x;v&y5jOe;jz3pzN2Qzt>u9d z4;(0@-~Bch3t3twO^{<<OXgwGW7$vT0?Fy|hi;1Ktt8)?e%NJgDbc23@eSe<1)VTi za#yiIo#Wk{o^WM5T+69l1+PF>$Gsch(iV-kcu-2&t9F!x?N_Rr@|{xKM_k&k@CLFY zGaM?!Aqi}t(B5;>TTYM%yck};ZK1>UNxqWgz)(FXe`kF_yR#h*-bW!*NSuW!`eGha z9nUb&I^_x}8N%G#VTz9r)w0rxj!Ar1{uU}jug@#AIupA>W`+`afhGoX3^-<p=2*3) zrQP<w3w6P_@1%I%&C_n8;K?J^(`hgQw?Nlitj3J}EO()K{wAB*g~EKXKfn~r$hvzg z*_pCLcT*_L0#`u3*OekZ{ywbzuhO5EUamu-Ip2Gghi+sC=5MuW1_tqd=eAO|I+dtW z6l`BXe-x{;jVLRzJKla=8lwdzdan~IvD^-4;#gnY`Q^53ydqeF9#m)z!*ha~#|dHb z?Ll*hg7{6S2d~;u=%<wyv0J(KWqdrQGDf3{5Sdx|GT+BvZfw)4yy#vMa=bMc781$j zGaaoh_<2rqd_)3yjc$$z(7asAqo26Nzw%<qBN8ooXxqS|4U_5+Q(6l-)kn%vLhnh3 zV>vnZsUG1yuteK+s-l00irw9weyDE3*R#j=nAk>LK0R6E^^8&Ey-1!wP4jNXRr*pQ zu3`?g3Lac}W%#|LN~z^8Ov*=J+P{9E&mzR)PT^n}d21=)*v$i(Tf$Qy@q8`C+vyay z97RXFO4Q96tnto(tDSaZymlefGt5l|i@5vy)w#;q=J&vlkpdSn_lPyg+*iCWIdg|t z?3aV+$7(IZSHPNbAnn|OvqxRrC9Yh4x^qYqrC1tp^iVBkR9IDn7qfeXf*ooeN>ca0 z^w8lxf9W8_ch~B#CLGe=YlDjnN1m1&6k5B*OmGF8Qw!bVEfpM4j9C%X2VhM_>%qIv zqa)>VIl!WDND4oc32rEQpcXjIg}&77jq?TLlF0}4%Z(FC$XCl*ZXCxwjKT-B43Z=g zmu$X*ahgtMgI}A{oryFTb#OXD&rEgyc#0XdV%!fn(!=R_`u%QwMLi5Z#M8yNGn&(< zw?m7EE2(xv<KXG$grFa+Zi>&Zs-NU9F@I_p4pi3}0WCbbg<g-v#rtl5k>}X$Lc}+% z>B-Au&Izb?>}&Mvo`)_iANA!wl4lTg4~B1hQ;QQ3i?YI28^X6Jjt?C|TAYly7biD= z+8@>H&2`~WP(&PFh9J{3it8RRwHuyaZFBM7r8wQnEN%wqO0ONNq0$>0cMfI{Q$9Aa zc8l<@zM4JM(F+t7Jcp+6ZpKvWUut06`YG0O6CKghtJWfIRLni`_g&n}BJEt#lC+;( zp2zs-A@)*U$y1j(MYM?fxnoP5UqIr;eqhDbc{l`DyjuM}Jlz>h8qDhQF#7IiHudM< zWm8}zKPuyM8pL_jWxncF_!neeaU0Hv$T`u$EQ$MFH|RMGlk8>^x$PaAyblMoChyw6 z%AI*4Se><Y)sw>)tr@`yzaW<v8(JeZD)jzW&e*=kuQ?8j1Ek|n__M>L=ya@K7*SAQ zj$HBJz5YwbEEM7(fgOO7Q~`miw_VSene=0{{4wa}F|L*QAAG%MG@NbQ_8)zeDA7h8 zOmt$9C?RT;DA5u<7(+yF5hHqUqeczU1(!|`A<AGz5TYb{uZbw5ckk(X-e>*GTKE0U z!kRVfEc<cn`|;bht=pDzzMlT7Gi^U_Vrodjl8&fxxb{IS&EsZ{#`T2<v<7o4Y`H^^ z%?Sl*PpCt7@2fDaql5;<9s+90Wg&rf#~wbSz?52{3q797R(`lZ_-&WE6e3^k_n=B} zwh}=MsT{+-wz{|o;UUl!IPG^9(!Qq7)jvi`#fLWH?evj+!07rvG{jCRU%`T{h1%-X z4C!B9{*0}?b6kj|5No48sgT3@?o~*rR?0Gr2SkpWPIGD%{yJ~<uq`$r##Wpx)=yZm zwbj=qkkHRzM4#`YpD>k#b+(X*3}^hUP(li_+pv-Z88P{VEOYN>FNA_QQ|;SjTYry_ zr9*Ykj<z=ANDdqUvhd%!Y;6XP$lT?l80lqkgtIR`!jOX!BnpwTx-Vt7>eeb!t_;GI zEB!da8O=VR9my~aAKBInj@p=(dCMt${3QfshnD0z#g~&BVRu-D7ncvpGa$50%qG)g zTu__h=yg83;<}%-)pr?!aD<2es0b?c&4B{A9Ry`CUf}K3l$d|%^EHXmlXco(xlXi) z>;5X=k|o@{1?xyxt>6}syIASKzQDgcGD2F7@|=3GLbB-Fl5kGoo+rfK>FGGmb(Me% zFMJ2PN@ie>%NEa3iTekU*&OU)1y*jf>3`&xeblpmFZ|D<;O-x!qDXbF*zx3ceT~zB zQH{93l8g_c$Z$@34#n8`y55uElr58@i@%+TQA#oFZDMLun&XV+ldcoS<D1fpaJZkq zKMHI#azz>Yf2BOqp}OzGzh>0SVwJ&LLXWF4g;hnWVYgDohe*u?A@TdeJ4rMrp7VXZ zLx%v35_~V>mR*B_UkVQop(_s)MY<{&qa?y_sAj^QEjJ<N499^~q~e-#>WFR^GUCGo ztDVBvl?j~|BWmjp?-b^dHdd@a%_FAAX^Ifsn7!3L!YDfdI}JFWxDHukl<61viRrd8 z3*_B>uUh#qF1q+uQb?$=l)C|=;T0^3Isg8GUa%e`RP5wgp(%{3lI{Xm*I^akR6uir z7=vk$BH#wqNY5XJ;9%6N@m<ZHBiYtEqKtsJn#dXrnIGG_4%78s;Yj!S+x>UezC9u% z_Ak(4)eJ=*oKhp^L=FEEm@%Z`819^Au9FY-qlRH09F7|rl^YJ;pSDuOAEpolgoI#4 zNhG$L3sO7{Uu-xtti2O^T1K!H&zn=M9k5FmpA-a(x290!+@4*^?^dFov+9m5)7!#E zQf5%W5(`e2!}af1>AQ*PRMssM_q;phogwXHas$j~iLQc|44nrBm?KrB#`;L~k?!V_ z0YDe+IAwDBV97)ylO;)~;r<@-?lRFFWdALTnW%hK8p#k-zpk)YNCHq7xy0;>^d(x& zabTN%J`bAMsuiN^MJa-17IPC>xSa|+XTsuYgeX-r=?>aKL(0Mgi46~P2MtMMo|9dZ zEl)kdB6TTSg_C@p${+1KseffYbuZtI^7|4=nk6#Mhp-iNW%ym)6lg=!C(mM7vDOb; z#bcSDW5qlPR&Pm8Q9}6xvjgK;bCk;b!e!BK7Nv-6&cq(K#~$8VQ)cB@Ix0_d83vc7 zdcT9H>SMSd@5H{6Wqu&KeNbMZ66vri^fm|E9%WWeF+;%)Y=C3_WOK>%*u$`hllW75 zyPtcDGY%=}E{D#~rPt2|b%ck2`l<OPW^~C4N(~$kf*(*Tz+Nh0_v5Lcwfd1sREp%m zOd><O6-p>AzqoAr7pP(|A@x-K;ETt6L3;b042E$udEYl8j|r5d1h*>8_gM+Rb16;` zL~(*VpeUhbvsB>Gk+nS4)qlX5BLz6UjfG2rIZqcr>&eMFNp=u>IvVu7liF4K1o=Up zl`a`4Gvz4abO%C)Y~hGnnocq(330-%xm@FWIN<_ch-`7VtV3rMlK*6%lVEqfO8^Y+ zNOb<ndBqR!t)?)!Rup~Qsj!GwFC;PpdlB#5QL1VAQCn&`EkR7-R|$I8<QUu`HS^)~ zSo#&3$zF(cg$B*&4~Ek&-;Qu?yj(vd8kq(LfsZiAhofsL@2H|`gM!v|)lts}tGFp3 zs>*sD98S+(qD-?}9V@q}OTPW{$QgX^O*g#nibs1Y!kv=c){SDHi;WI86<eFB<i~;c z7vh9#E1<ZEgOxPzU{Nmg$}sGc;(mc-^?N7x*lb^qXRxuJNRUB$!ERT3FQUD!SX^!@ ztd-?wK+$asieS&ijAw3&FHKf5X1W=~o8pnebS8sf*l~}40vzkO3Vj<8T+L_o>qa$p zefHGD43jL77+UpB{GGO5>Cu#zU7iwC|1HliHHHS>fZ9~?HU@b1dkN=TBCg~D0-oai ziC8G^{_<aY)Z#8Zdc<`?BF@hE0hDpIct?5Q9rDdjDD)&O<ocEJndJI8+=k0v_MWKF zQUhk2MfNAmxb9Xz7Y`)WdONl$i};(Ni|ATsKaB6${+qinf0kyVWkFAR4=zYV-7+u< zGU6UxAodAyzUY-1quMbnOmQcb152EO=!u<C;z;$qil|a@Vx<#dV&QnYMW}y1inb(a zDp2&unxklI&&~PYU9%zYisl-X4cnQbK=B?ulIM~^n$m=6S#FTpHVVp<xG7B*bfwJ# z6{%Hlm3bdCqR9kp*mc>nHDa;Nhh!=fcv9>UeioyWjM+P3^a=777IPCvYB@mo(L6wR zI2x4h3d}Su;_ZgXUr<ltvoqd9cjNSt#$=dUzxN~8OLe;~Kx3#LKhUQ+6hl*5HOYv5 z4gyYoAJX815<$aY4Lx>g(EI9ZcS<g^=q1lG-Ip}ajD2`0$@r$HmiMtixA16J>6D)X z`2k-!y3*|EsLxHM@#TE1%x%oXX&E7+4}p38*O6E_T_=Gu6B(Y*9v)}ocvz&Nonm|~ z{VG#1kqA+r#tVL(VG?BBNdH^aS==v$&)60MiphT-pYBJA!Rff!ZM#k|X{~POG#Put zM080)(AOCOmEhu~ggq2zL}ibk9!oxRProc>Z#$os@mz}U8C3+Ao7GQ7I7ujlGowp& z%&5|22SM1CVpiTvLEi2n3!O--vp$G`+W(F%X>ior=_HaAXsj-5V;S5R-ESy?%3jD; zL$((D7{T(32lBNzHGdq648yS!-1~jJIX;BwIuR2PR~3Fb*YN92)MybELVX4h04y0j zxPJLp*AmG<+$AOzkvSr=K#qDr*iWaFS@0AzhD-;J{jdp^XJ!vpAKGS*9D&il&p(O! zlO<@k2{>b8VU&6)8;*R|pXBEr3c2)*l^%tzhf>+W3~oYmhDA)RSQp8^IbDY@y}5^u z-Wwk8%oUC01QXDci~4lScKiyI^#<D&1$W-(nS(2E%i6Bah@ZUqg;x2u&18^EM8__F zncU$*8H{4UVBc9|_P92N)aK#S@Za<}b(GWr;|bZNJ3wpg?NiG>Ovv!wfMoLyD&2cl zj-p=gB5{O`aG7y1E-2cqtBFOxKpo;Ic`Tm9s!XW#G43G_t5euh4hH0c%ukR-G^1e7 zmXJh;XOtsCBs}oBW|jxnPKO=3@*Ds19h0<Erkwy3O>f{X7t)2MQ^({2I}zd3*Ieb3 z^Rg&?Dlm!4UXY?a+sGvD-$f%d)fR~KIF9|)n=52mtS?{*F98pd_UiWD>y5KT)uxcJ zW}4ypiUY+Zq|ZWpYNz~I#-X;TF?5SC1jD*t_s!{V>%xr7%5#iLVQEz0PXPkSP%N<j z=5o@vDXF**9(VeH?H!bQJZ|GON>#2$My1&)m8N5GW@(t|aC176n3|qL4-Gmx9uI!{ z94(%-M1#Lvt?DTxk+~^~oA_z539!uoPLA9!6Pc~ylz;AXzK-BoR=rccfqYx*5Ki*S z3H0#Bqn_b@>*mBrkL53uZ1>FFBgIp+c+_q_=MQuNNBsvf0)ACvkPaw}oQDCl$fV5s z&NfZ&7fH+&f<C=cYFBW7uLBgaZjf2uQ(&WZ7EQve`Z$a+toa$bE9kAY+rXUz*jVk} z;3R_o8M$gvR*3xK!tu+z$G1A(fkW-p`QhkY{^L)K8r0y$;TXlJs|>XTRg=m`1IzbR z?8!!Z9ErOG)HsWf#nkD|G}ThF(G}Mb_J%DbIeg7vH?Uwnqa-;axD;l+n~e*>N&J;; zh#z)Xjm{k(p@cIZ=wR+{jjLNzEGi-*s%2TrS7YtS*#(LWA{IiC&Us@cyUHU^nMzR5 z6Sl3`J@!U%dtHmY;_Y`jaz4-5m5dADPA9zHm|h5rjQUQqD^KwlnXPQHWgbR*nBT_t zgVh^ue@^Im)g?n%{ZO1EQgKmRNS*D?1U!J!8ZK~Qr3{v6)%o8gz{lO#qD2J#Ip>pb zf~sX~-^|8E->$ms>F?=*P5w(vUtjA}dCF7oO0ke)dm|hE#%Zph4%dxQPSK&-uMp|T zQ|w9(ObfdGTXT$5j(VSGL}ba*#P*geY5?i+(r2z1rMY6fTMPB9+pD$P6{Rp0s;N=v zvZix(j%{bSw==bIH68WvmzX4=Q~`Ine5gx78)Y23n_A`6)N}Q(DI?D$#h7B}cw*DE zdH;Pj`_l^3c5P3LD*vt28jvTQP~gB$gXHp^{Ojpw8jEm#Fm}&g<2ttAxZLl(ex#Jh z<)9h>T>JSQ7=rGz1s}nZ8J-JdXUC%d_+NtZUIBi?M%I(hkIy`>1&L%EU}A0$@VY48 zI5jAjsgv#-#n^lEJw#3|eQ?Za2eX^tVPuFCqV=LFJW)kBBZb?MFHw38q50F&)rB7C z;i@BplWzsQ3Ta*uCpf)kQu}!@As46BX>Lbu@x7bte)5v7+&_0(U=vIohVHVaDr}5+ zxa#<634zJd;Evp?TZO7Go@?H4Lkf|~L6zp&&0)vZf6FF+h4*xYc>3{?OkeE2&T~R0 zS#yNzqfdgkuau2>bs8D>h@1v}Rx2b2gC7*yN3YO*QY9Rte1Jc$SWtHPP+hqc44g^Y zaCPXhu?lyQ>`48SCrnY4NyOB{ZhcoZZ7CbD{z?vhO}BaLpDN&eET#dVDf?bJMbLeQ z;P{OveTIIG47Sdp4o+LC%sF&U=d0$Q;uTo86wdeanHzW92lZPUq`0+&y*g>*6MAZ# z!|F$*NQ51IErsm?lRG}KY{19p%T(j_%Xqy8WxGGZ&~&e7PV$3qU%H1Q_#Z3XB7FZ1 z8t&!{+O3t5bLpB%^I|n{E@QwhLEVu$9s!n_%XBdY+pL_W*N5YlJ5sTAe?=dED2#Yf zow8*4qFVcT;b6Ezx<v9*vEd?@zHcS&JGYrP+O9db2-w-mPBF}$LXyulPkmAIqyBOy zw35i)b+$63fMzK5MwIFZ@pJ8O|B1iKGvI)|E#b5MrgX1)cW?V+Y>rzK6>{)H;9lHz zo1=wSdai$hnO*94jgQadq*T9`xSaoZgxq3r`CI!XA*DlWbZC3Nx?zL|`js5w^m$EU z`=~$1+vw1@<Ae9!?d@NhId2$q-o|Fx#e2-X^!zT-KIA%RvVQmtA+?tI-|=2~nhg)t zk+|`>Umr$}xsDfkcUrzu&QCeFj_z%rh*NpYQ?M;j&TL6F4Zpv3a+t2JoB1MaxpLmH zDwwj|T+CpS|FJdA;sCNeFT?gb2YH0oG(>a#degZnMP^}xZT2zk)1{{mFYqNzst-gQ z0%a~(ypNS7o8euNXLT2d%m**7X{*c2%wzr=`~8Irf9q`VBhi|LEbZvJr4QG>&u~|? z?~#X$Yjd^lLhbadB6fQz;Ck5`vKpE&=iW3Q_@U*`^|tr4Q)_w4QKRMzptCVdG1uM^ zO`Z#w_i`B~N^=)Hw3wbf-f%7+H9_>mT^yZt=}gt@59-KW|L~uzo4pD#aPiO-`jp** z8|;5Ka(OaJHIvW#H;v9P_&=eIz+2W)8l}+kHu;{^ko9)<a+SkjQ`egB&l$?B>hY3Q zC?ldp{GQZDYmSEQfU8qp?}6Xv%_Ww8-P)qRpB+uaNld+RsrT~U#b7sw0>{|ej>}yB z@RyXgTG~%G%qE@ZZ0CM(QxEjsSJ64!8<ZJGr^4QdV}<rV|NfZsZT9d-oN&aHj43L! zzXgY3o44S#<ju0_ORLtnhUuS-&%N#Z;C))Q9ow0E=3PGkE0H;$5Hw3oXXIsnn`7qH zeCP-63$@$&6qq$!8y;Brpwa&H{R&ua&d*bLsf!N2K=51sri%OrzVwF*%_}3Q{dNCS zuc7w6BFPKkFK3_FmrTE^N6T(%1$smL4jQ{Q#bR@OaH8W)Ju>^FB69z<z9he@x|aQc zZQjG|o1wDBzwAH#GRz`F8m8#=E!@a$JqP*qe5qV#HdXS&4$L}d>ezbR|F65iZ?{mm zN3Ue)tfz?l?`>Dy%hfK;uZ)((&ofdW)$NzbSpn}eX9HSTS7Bk+-S_e9d2@V!T>lll zB6R8WNpo9%4H>dH-<0*dxAHOLuj^I71&-$x|Mi~B1@7(VV|mt%Ial02mxZhI%R_P- z{Tg{(6n;u)I{yXGe62?~<<;WP@DU7lEVeIs-}&|OYO}InKdE5y<@@rV^^)^GJzwQ^ zxh2mBJZ0qaUSF7yG_!1f9*Ar{-4>kvDGbq^D(%_a>-MBP9D>1eMt0o1r~Svz=671J zBV?90`oD6%`;;e&*;w0s_;o!g>yqI#-7@eO3+JSVE6%SY?0T?mLrQY_Q~hTzquH5j z|NSlM<0VI(mUGD0uRSMkv(AAcN2|{y-CHm6X#2!%><;<i8-l8Hc?bu6Xp+Gw?SH$g z52!cXR7c)gu{EtCp2#;il~a+1E_~eltLxK!bi7}EQZ1Rh7hGg%CRcZW>?cV^JL87h z&x*`mwG|7v0~|G#_j;(LVL<!%QW9yc@I0z0cCh_ZR_XfP?QIg*qa7)#!%pnZ>&=R~ zvg?IA5rfZ|ahKjM>jV-<#NT@u|8A{apBG%Qj;y8`|J;&Wu^P9VKQ!~{`uH)6{vLg3 z#pky?gb%s!fk-Dre=Q55QOF!M{Icgp*5M0~U^CAQv{!jPydIJ09~V0VOr<Y`4;cXM zn=Y!O2HrITcqNbhz@6P-tv43*aRA|0`6h@iU6nIT;hdwR;2gl^R)J{9wU>ZKNaBNJ z|1aa^av^K7d0?6bu%V`M2j^KVfP-&x?6>S5V`t4%iDtJC99F&?B)bzgxk+9-bF<n& za;oz^7L>pl-l5I9@Urq)0H~v|4G1DUZfd`5E^NNk&<`Bk`ZAldBmz6Ou5{>>E^Zi6 z%Wa$g)2cTD_dVNV8T@^1IO)`O{o(o9`q5!~16UgSSK_0*-NBWkh4&G*@st$1W5SO) zmPhScRy2`d+@z*Qqo^blu@H}{maP%HOUTeJ>;=5+r?7F^W(%bC_anJe^yNQUA`4HY zo2s*3C-cv2PeYQkD1AQa3lNw6<~PTxSasc&yrBgT)rtI8Q;lW-&|~KYe>w(;nYe?t zN_L@7Ka{qwuXc2(*5B@B`))VS0$0RB=gv2GKtA+{q-x=Y@cPW1X8bSqw=I8tn!p(F zj`kn%g{LxGD}bMK!b5{H;j@L#&{+V;eP*`8)BP3@JIw+}oY@l}AR^imAdLN2y}wF= z=>V+@!!ep%<fQ28usX2$hSxjfndV#?jUU?rZfccj&P__IDCVK~Ry$xi-$}&y8gPk6 zzW5n+F4s!uv;qAPzVz^Q_|cZo#JJhu=dHdXHS?2Sz}RK|mx&!)6NcIGGm!F&{Z~5# z?1K5<JsU-14jtD{&H!P@HX!<$|MX=n%T2c0ws?GaGx7P_n4Rrv*Z)Gg@kD>)HGmxX zMl=7zKWA`5wu~lX3NR2k1Uz?7TmY32gnt$gex8YqG_eCF=1Fr+KSNc&nK+k0C?Ik( zTL6TdQ(Xn*cDUSVat;tHUMO{Em4*!x{yHnORQU&xwfZ*y^N++vpLsakfb^(mXTA=5 zam>?Yr>UgrF4}_c9IPii<6EY3pTuy|E)_nWc5O_TAFWTTe<FXe;@@<kU*1gm_TY6_ z1QlBu-Dsm<_p5{9t2%PPt{fCOzV`Ckba+vi88{tQMTV~pO9``A^aDo)zAI(Ev!f!i zBLW)?n>!m#i<Z9A+?6>-=eQ>Rk6tC0>-xv@S888?$F%wm%EQ8Il*pyW_Lq~i+`>-k zI_@@m?IY7c&f7zxab02U2BM(ljkZmWAhDrtu}(r-WTztl;{JV@>gb^jOa3=10HCF| z0U_HPAcQ)d1<2p>1<YP&xYNyVxNCCnwM;vSX1c9hS>oUS%NK81W~AN82INE*qF(^O z*xv`x!VTL5OmGVPh!5YGtS^yFbE{NEX5BE$KP|jZ*7<U7awsilCIEfj9|2dj&GUw5 zJXOkeuJfj_jSBarM$Jl+Sl@wjKnYiAw8Us)Lo)=;1!QX806O;t$ov|I3t@w%a-KO} zI`E6j#<k7s@#l=!^-cc!IJ|sxBQ;#d8Cm!gTT(k3%6->r`ntIb$gO<jZ~%6TBq7ee z_1GR%V_*wJ92{YO1Oln9bHPi1pSAmqNTg851<>u>7^i#DK9z!-hB&hds4zG!bMd!4 z4Z5YO&+sh%;h)l{x>HMBjaf-4)f3AqeT^Pa@wB}j-<<RZDRXYvTTOrVHk*Zi&3|*R zveTM&sq-yY3zZANy4L4@wi9W;oU_=j`;Ir~`DwnGcd~HCafg9`AL9NeaFTz!(%aIR z{>|Q#lGj<)O@&#ls|317&(93;3LusNhnZO(b@ryHujNf*$q}7$*Ly?HuXa=^juU*J zO6je7<={2k;rnb)N359qW$P|zA+rX+UO(R;5-;9N+P*+PXsgV#(+htRRCx%PekiN_ z$aKdr%?gxPEWx^G0NqUhd4QT>>l9h_(Lf0hE4!8HU()9bT#J3x<W{8{W;?!pPy>mn z=}CI{O7GQ*;orYoG9GaUcU2bv5sW9_-<zOp#Gu%FfOGyAf=)fZ35gqWKB_9W)B%k3 zpIY`*=|(=C2fZl5@2&ZZ?o7f@Fggk0W5a`;12oa>O`2PrDuX8=IPeA%7aBrI=7B&5 z7a)eC$%yUGdoJ=frTFDAHhetUA|qoskt7h&@H%R5%q*&XMqpFB?D3642DK#3%%UWk z0^AIAN^!cWT-s}+{>gkZ*Uz!jO{@L8`;C69{>jliUi$;Jc{1Az0WQJqB5Q5zXX&x$ zmB$v#Qi88rw2xoY9%b|%zDIgAjT)YRsg#(Q{3^LI<f&%R*Ku?~CGX>U7ho}V0{>FB zD_tiPk83^YyWHCp*^Xg3Z~197(E+dc(AIPA1vCjQOeI-A$L+T#8DAgEdBp0(R{x|8 zSg$<t^!)xXw|eKQg?%&kdB4+%_xu_3)>@V$O|DBJtTZh*$6Jf=MuxdV^lehuX%;>r zVO=g}whiifGZuKU3<;2#17vY<#f#Kqr{xX<D!e~H{>o7ff2$uLr1E11Z0Ak62LWt< zF}D`&5Js{D1UK8to4uIi2`^~;^H2HPokk$>c8~?qrGV_N`F^veya5DR-XA5Gfl|G( z3x<ABrj+h>?U@5gxtTNn%VIx3A$VxE3PkwUqqnq>v31-xX6e;n^)3&#*FO|3h6$n2 znlC_5$1Jb}Y~L<Bihtda8EyOZ@R#S<yFGBNKcOP|1@L?z##_8yy;qXd9u6ADkah_< zHv!UA=|-3zklE*+XxJXRcY|TRaIz_ySqUEhTbyq3=X$qweey;eGOE_`aSQgj<`D%v zOWZ83B4Jpkl-!@<;#51gv;TkC{J(XvEMhCw``Oadzkwy{0OLOwDqoIMU3ki5;eYtt zlKt!l5X7<eRQ~cc`I7hTn#wx}34B5K-8?aYzAm)w3mo4^*PiaQ@@v3@8MmASv?b#& z+Gck-^5r9^JAwE>#Xxi7!;d1s)&x<x1QhM#w!lznEcpy@@!CXQxOEcAvF5aWqFLrF zx-r-AHQYntJ^>PEDF$7R8iZfncS<-r)c}xcGMYY2^6JzT(4QU7(cIwNJNtrFpRL#2 zX&GO<PTH9V^w!}J%dtZMq-(NK{Zg<y`V{qG$qhwx87%ynQ%?dzWZ}9S3}j3^fAlA$ ztpTW$ryG2t|Hf>PF!s^j@sFr|MVDZC!gLAn;bC?&osLrIu*!jos>o;E(|c!%8I;Fi z#Y3H;CI<x;2jPhuGOQ$M<D##wZKp%^qxBfqnYJQ>Fn0$CsK48Pjum}ACZ}K=)tGm^ zM8tGwi>A??CQx9>x9G!^D*uH{_<G9kK=|zPIS|D%`{;(LtPUgAC&y;`96*t!Z2ZY1 zZ9=STxaYvU2yRGRW#T_N#~3Hlhd*C9)J4U#FFIfU=`We9D7)KD*oHfr6+2<=f+-DN z7v51%w-ZXKTfkrRQkzErd<;5vLgRZ?a$?Nc+)X^fxq#>03z|$0M+@@NPv<q1vIrsQ zIY*(p&<~*2J1dG;^E>xa-j08n;XUW$KM4d=RI|A@3~urx?%s1_rz*ZpDZ8rxAvz6d zvw8NB$~2pcJ*%$-4EaP5IAE|CuhQRN<>Qq%RI3>+Jk$FWC^cH;pB#Q)r->L1{*0J+ zYb846@MJb&>1x?O2yG3R16^_y$H$FO?VY_}ykoIQdmxRuXW=EvSq+1Pi}|HhsI+o1 zv3(6X3It&HuN7@8$(nEHQoU?6m@YZeh?4k!&;xu&Rwk`drd$<*0a6cBLBMR~inJG4 zc8ynFEYGea36L23ED3s*__G5cB!<<Ap-30cCrK9`0IQs^^4e|a(XkD?FXKzXUmK$v z?ySQd_we_`ZZwR7GIEJcNe^-X^@8u#I^O|F-?!|b!61s;I^UpY6qnSqpvhE3nUols zulfZNdlBh3m`(jhvFyz2>(<LvrxmXQRi3o>X-w+hJ@3b3JzKRLMN`<lrrNec1a-U} zt6R%tj=MK!w+M1P?bv)%H>EqfU0VEqy-83pn>c>t;VbFc&p5x+w#V(=-=p*8_V@(m zgL|jwc24B=Gp?n&o_1et*-U^1<({3Tnx$*sYqx})6dZHBXkHaOE_=Nl^lsL6{Ma+A zvL&?TpLv4qMHb>Of`e`2xz2CTPSsjAUCuqxScSJ5?Okk^rR@u2S+k-fIm<3>n;OU8 z>_Y!}c{mW8;1lZ7PFr;d3AJVk{0e^dT}$NQU3{2vV>A>bnxq3rP%HbQYlgyN3%b+X z(RFMP?#>J$`@9Q8hZ3GBw*!EyyTdf;gei2KghkOm)V{n-RQk~ZguDSWl*?68XE^`# zjWa-;80Zyfwc-nU!-quFJ`o}~dy~*1LcXJXb^~SqQsjBmSm2I)h+%KU>5)W5=WK=Z zC3LTwOYlez(pRd6g=eVOy#hE{&uknWS-MrEUPSZ<f=cP`4`Oalh3xEtIc;s~u<EZ4 z2E>Ox0}9@rCi-`b7z>I}oZ%u+J?2<gam3ahwgppw^g=i@sfyo6+}_mJ1RvD?3HpxL zqV9%+5A1n7FiZfd9*chKredO)m)~x65n7SJ85Jr|#*N<_FSEU|`7{twe&;lggE^Sr z*lG;BD+O2%oE+fR!eRJ&#AkG?aGG13@8qF$IwPGMs#oB_jZK~t;J3eRUYxoyhLkcf zkt%-y7X!5T`wG6w9MQQ_aWn>yBfgM^QY46=ezHal%A8R~tjlbF?!uCI{t3E;k+>Hh zAO&zUUwOg)5Nr34PY43$El2zZ&M~(fLugd->74gI-o~{S$x+E))abms=HvBe?z*Fa zM<yMCm!bfLt-AtE!=VNN#%8HI!h(D#)jcj!CWLwVVu1uy>GVRppaMmIMzEZU3r=KY zP8Sw3YHV~5fOTs~u2(B9;8%l4ErP}DfJ(W9@t;SJNd6|^Q$Fw_v=Emn-feWa>=<d< z1cFT#PH!RZ<b%72RGldZRCn>FT!EMPc!D!ZUk>%iWLeT>o(^Sj7L<yuQt<>W>YoJ_ zV{c-0yn(eiXD1Lv3S}sHg+L<6{w<nW|4-30+^HzXd8Sl5gyB)+2l5sB$DTOQQ0+4j zUE3aN`+ksY1BH%6Et2JsTZWOK<xz~L4;SfkUV7fLtM77LsP%gm=}B1q<&VISnaKr0 z@nvlfgD03`%b0P69YYq|xPX}<NeC9H4I(T)cyuD}e+a~N?Osq><UFVjw`~H-Wv`hK zR|wSO*0h~T)Z<^Jsw&Rv^0x44iteKCtYjj=4j;x1FzUu@T<kFv3R#M~zI~*rTcO=g z7Hj$aVu&PBZ1vwIvT}!D84(z>J+d-WHjuJ8gHTdd#yb-!IY6x@FzopInjtd)<rFQ8 zG4JD2R{w=Tl{=g%>d99d$>+(ccsZp6=#Gs8=qP(;8uI4>!5aSo|4FP~T16^XA+&_! znu}4iz0=#68cUrp@ba0Ve3Y%?%7X*OGuAyq_RwC*-XfEf9xNzbj5u~p`L)`C{)z)C ztXHB}o~OFF7th4D(e6NJjm%~$u_IGD#D`lYAYb;Ajyj5ofxnyvLGp+$lPFY3)e5G( z-9#jPaQCD|`Z0%Nf&BY`o{Jvy$LCt2J#+z-kK4F!+w=%o&xn5<o+MRkn~B5>w!T@6 zQj6bOEG*t=A{VL&8v2L|c;VV&`?Gw`ZuXCMo|B)rpEcjANCNVDre7z1#rZws`g$5* z>Zg5$W>Ef3F*-Q1m%3Ry+mR-`D}TLL0w;nxs8_e1W}CU57td;qeqX~tsv~{RzmCuD z(sT(Z-fKQ$#agP*Q(j|$37%y{anE=*r{C<K9Ln}z5`q4xm;}*qcQc}^d8)n`(F3&L zkXv@)!{IR6mQH24<GD((s`8hsBRopiA7wnb82=NT?^V|`uyLG)?`F8+Y0_YX|6AYc z$?EpgQD_N>KvQ#kFyWS&cBZ-U>aym>PaY|U7_0an6!}&hP97POXx=#uzG*&?(|DwD zXIQQEiA_V&$;U)d(L7{bI6*LY5pS6e-{_YFyP*&bGwf4l6S+GqP0YuNLNuRRq>}y7 z+mmP(DlS4jC<QUh870g|3JOF<EfQfS!a%^#XxW$Goxdm@f-yp$E~ujVXT6we_O2{v zR)&ykRkv;NeAGjDFFr|>uOQ^N;yW#|Xh~UdQiM}D^&1#!>d1;>8f5Z`B!UK%Puw~n z2=3%Ovc}<EA4A*?_9&OTk1O~Lcv~+sj5#U1!C}UW5-Q;Vidpc5$GZ~fDAWjPFntC> z=_@qjf4u+>#JcznF&nSK@`L<zuQ+7+H*^lfDQ3a_qGU8feF*pFx=T{6-H-L(AP6B< z+ZyOoJ$Cq8+#|0dIi$Pk)hAKJZTP+Lze0krj^0?^E~)Mym$_1q4qxj50=2e+w+4C& zKINo{#T6)OT)Be@T?YAW{wkViNGuZvCtneAf=#7hkvdkgR<erbOpFr5mtCmq1(pNe zFhfvJ7wS%T4|RwhLt!~hA9n;Pp`1bd78`;9Du$LrqU-x~WdryvCytp65}9Z|t09ZE zI|$g{qo<=7j|p;m!fN7bdG4zl@GQ4j5eAw8K>SxV>JXtrY(`x2ZK^n|Yla#VYX3|j z<Kt|}0B6|uO@cH-WcYZ8_-;sDZ4e0?<gY?Ae^)O0b^W%%R1{L>LMC;c?y$W=3^OzU z<#rv$%!NZd1{~+P+Q=XROK^AT`n9waTsVo47@l878zmg3(2V7K?u^Gh2$_r`k~<-M zY}Pe?`niZHiD?wGE+pqE;Q>N&lH~i1j4w_OXqS0Hf5S^3FhN}{>RY=67fn*?s2(m| z#&F^V02UNZdMs7VYwzd4krX}m=%ehw%DXo8r@`yC>t0KAaWrUf@vg27-Ww5JRh!`y zpRp0DY8BaE=rtVwoT%$fx}n7p2j!fr4>|pSk2{-?h>b}$@dn}((I7s!Gw<!0`~^FL zMNA^)*gaqNGAR6KL4ZX<K%zcY^*0H>|MyV(i^zamnL>kKrNiAI$vD28o;t&S0)i|^ z5=5Ea;UdlZs~)^l?*BsqXKIejUDybsVNi<TaAp8G<s6ELU5U%3J-n$~Yo4qS<IiG< zY@b(VM=Bmc;r(B%E0n8LKZXZFBS!;J<gei?rO!^e1ut9ecv|vGU?fT#NUOL(tz5Kj z>|a+q!b0Wc13aFOW+QV#cYi#khS(Nv?Gg^{xnMG$w5!-jw1xSh+E6p!t>Jntx~d0q zE9QSGbWJY5<h<Euk~nFXkW60Uj#(5>UD`S+!@=&i9d0{5=?pyIGLqc=`l;p#sRSQ2 z#uSyU5(YmBO}LusGo{Npw)DSLDYs&y4>b%QOZY<5L2w6(FE|W-PaTy3f-QA--*pUI ze=lm6Bl=rZIumew0j+?)SdH<KAoucHp-6adh)>roXR}*#{IcTVsQajlMED9HD_Eb? zu;ircoB}}ySEnK<qoK8Zb(dSDFId<9F_;G&6-@;tA=CPd#;k<WWQZlJX@L%2QrCG` ztieBtay^2P#TCs=-&K_gW2SZ5?dw5m`*85^KzZ226Za^3ZbSLsePnvlDNon;G6PPW z!1mi38OQ%%N6KQ@^^Ev3M2uw-N6JvE#PpWmDkDOv6_!}vknH^AKyliXN`mkFz^+ju z+}I??#E9qg#(*Y78ot2-MyW&o;iZx_rV*lc(UwxlQ;zDCkw~S6Q4ernX#2>Nvf_wx zvf$}k!boa3HAVPyRHW_R-S0xy+z%Zo!r)8^i^z`tI~AN=tf7rG8Kc*_Z}y_v;_6;K zW@GX_u%Dtq2w`xE9Yi^yNkS6I5sMDZ30T*L`)E0o+mm^T9{%tqlP_@j8oNb$S8<R< zc*!lFpt3j;22<)7?V6^~pcAlv3}{u3ez{dHF;%CJRjC#Dp=Vr|A%hkiiXuTt4KN`g zO13BO5_ESh^;l@WMg^AaWshB@8`<ouiUy?9|6<VTI(<~_?~Ix@SAEZEsl5m{iA^%G zT{f9JQA!H;w&nw!a$DR(VpH>x0U_9Ma=`(ewQ$$p)~Ft&E#bT>&ela_^f=LAK*7O2 zwHfURCO`(Dp*Sm>q&jB$22PC9iAHOw^S<sY-2`{&P|f!xpAW|>h%lI{EwZ$ytbvLF zXRIlopd%`eaO%vkCrq%`3U8_W`(l`$o$*N2<`F7c_t9mp4<P~XCE+C7j?t8)rmDyY zRg6u?+k?=QhZ0Kiw}wp5n8nEG`X2Aj>dGqw1P_hy{#EX;tw<Fpe5WJT_JatF$oB&> zYIf;CSE0EzpafY}iw&q$H=SNDRv&9M?5Cc^fp{OBB384DkO@6`ahHUeC&Abp4kxG% zz}&i^%KXL<s=u1vDqA;~Uth<9p(qN=zqj#Q3Jc?%;F8*Bc}s0knE1_qX0!w?>M&tt z^<6Ak>{`rq$xXqscrb-iNKLOL(N(=+WBjnuEF%!QJq@_m<U2m_lPExID1%UaAggY; zZHjY&(>v^RNGg{Bhq9AW7uS&95&SJkAIUaB_8d$?z!CF+@SO^u!js6d!Xm5BoeHtT zu}^pzJ_`$jr8NRyy{ZQydqLn8M8pGMwM#8zw{8eNZMyg~3{vOAuGE4E4~3gaSY8l* zNFpMHI^sF)v*<2El0NEW?Po`*CviV53~%cdz<8z@EXcba$lVE!zC&RAdBoMCgkgwc z{*w_y@fsVJs9LswosZ%dB|}<UaMMe5xLM6xa$C|B29iS9C5d8=2M6fA=rDTa1wRW~ z8RdS`GA9e;D=>z)-W53`oPMSs{iZOGNtA&@R;@k?r|^}!20?av4<~c}Vk`&DtR2-P zg==80=3qro%+aKaY*)L#zZld=Uq7(lkBapnM1=1#L%95eQ^GZ61Imk8jvUcHKBigF zxYpla4zL>P67)w^wju|Isf=%tGsbN&>YBSuak(VGUbKjWx*M9Ad=P%r@^O$eYzX+s zpC`=zw^#364YXnkX!nUQ0;Lpzdo)+amWD6%r=m9gUFo{Fz-c0fb0>n!cdjy3ez^(> z!Rw|vVVr*KmJgO~*r{T%T87PkO;{z^Edg;_Mn)a#k30DM`(XT!#DNRKA+lVPiCyNV z2AtK}A2I*xxyFw>(A-^a=RrFnaRwtC;dik%h6YYExg@WN5tihiQ~{2j$O*Y4p}(4N zzm^2|{$zI{CjqL4U2}uA;hGtSrYNlG=L%e>Ojh}ZWN!(l?J8qi^&800hq%Ajf0=`g z#CD)Ep3exx{%I&o<u7mJl;=yv+x$tjhd~w|5d1OKv=l$R{pg#G=323?d<XUSc!t-6 z@2ag$1fQ#7rO_ibM{x6Bg%IP1Z&Y+_I>S9Pqz6f^!n_~Kv@f*^Q;sJl6vuZKoKjoR zZw9Q;$Cq$P2krVizV6{Ckq&8#sVB(rxOl>J%01YHQNNf8FleF{&j}Tgfus1yW!b(m zKZ>oxgylaN>s+AGZMeu}ndI(tdB9o<-uX+|Jz4189|C<gc25qdO~N;G2nL(^#OXJp z$r42?8aKrJ2*^z}O?xW)dvtAdCA{JSi-|Dis~bSZ*RVeAIHC+K6@4~yt~Z6#T}W^) zNh2`}MMhxl89Enm6IS~1q;T3U@W9xhRV^$Vig<U6mb`q@U0NH*OL?l`WP&bbGI*dP zYq(A0Vr*-(D#*j5*QdYoErJAUHX!=XVlcXUh>Y8;R;d$e&UshlPp^PAA72=)wRuj( ze3=i{J@X`Q;+E55M|QLv&zUM;_imdhBzAd^MN2v?Tds#pq&)u<#B4;VqHbwQ{ETuH zlSe1eVnrHou=#esL!rwj&*^)S`GLW7j{Pd1XM<edk!UNPHNL^0JGo^~r07~@3+Al! zDuwr#B6jwslCFYA&>_mDcV8YR!L+ycM{E`GVz83S@n_xs-%0M_AeXZJ8Hve{=ZuAx zocVv7fg54+6H6)`Z;S{{312XLl=5V%lN)@~nrK`UQu1usm7$RW<Kt}mdos0#ALwHH ziyVJ1Zw0Rt`QwG-C(!P9i*)4*J*rai6QN+4U&rmJ?lwrZx6UK!l(HL)zpKZrLqA96 z{Px+>?KT2*(H5D@-YU!F1iaHp%VOB}<=0*Fw&)1lQe#BB(!kG#qpz^bF<;C*Y`mKj zIr#{RAf64~!Wyck1@xeA$KuYkWO3c88v~ov7YtN^r3`<qXX<QNbCLal4ZA-~&#h<@ z8pKwAX1<ABk5J>INmv$l$bWelIMUE__cc*GxAizZxqG8HrqArze8uUbl>hHDuPh(5 zOIEQ4LLaShX`~J>*D8NOjRK3tXQwgJ7c@TPJ9dMds`3bSwRElg6wwSZNb=K)^CbCY zesk2fcLe%<ntp?vt5FOqKCf>_wdD%5cb{^ot$dr_UHl<9zXX-<QiHV?R@ceoxz4v) z<VG4<KfZmK*NU^Z#~8gfxk}73Hph6T?CVIM(|0+W%=S*TRNVBAJ%|6SALmxd92Vt$ zzVXS?AharVDhZxke$MP7De@0>AAN|oIvCP^y2jEzg7F-&BckNa@pP18q*7$*As>3u z%DOA`oomF-kyvnzujvAQOJM^GdomRUm+?~vP|Bwqe(H_0xpqa-oMF!VX;eliH9x1~ z_ma$Zjd^@E+|ka@MBVRcI%Pz4?Ph%=F_-H2@Y9M%Vvsuo9i2kong|nvYH2}`tPwi~ z+Xj0W!MIB0PpL_OrZWI*G)07$=)A`{oKu1RrBU&oi(_F@p&gD-?7K%++ow5i_)7Y! zGpgQqqvYV5>I&XV5Hslcg?m~RDS4V*rXW%Y6a<IZCI#aZa^c}Dox~~wAh^W+?DvuI ziF+!}_VzzLi=95{NJ-HA*`jDL9p!oPhyA0b>4A8umL)+JHDlwez#ny9UzvcJw*Ee$ zGDEYJKo}7Nl8NxT26rn^0Zwr)12?Xz6ZbiN5yu?uo=qav?aVmD>7G3{k32*qu3zYd z`G>g_(p^0xpRYftukyKQp^@bk9C8?v>Po8(=GFMcMTQm31J}*MWZQ~O-^z+CmGjFA ziCl{9^v0gDgudt%5v5+D8Fz}AW@aK1VW(i=_pjDl?UIVg2WOUh$MRB>^RxO`Ux*I! z7T;bJtQ}B!i+WH~6=^-QXT$1tciv$SZYb^WJCt8mLa_QIQ<|rHqUS;+-l%^^^(YX< z1s2EM6GZ&b{=I(qhr|cbs&|HWGCnd68(UoI%*-^AO_P2PC5YiuQRTh8_T6oqMNDS7 zjQx^Bh{YZ%&f&OR)G=8kG-WX4aB&yqddz<_PqvZe%nhI5y2g;N`FI4S^6$jVbfAgt zObW>{9*<=M5U1Q}g5S#3*CME}UdoZSG}#h8QgNL01pJ71&D@%H1La1)Wd5L=@L``v zo+3dAI<=v@^C@qlM=PJVS2fKpd5rCw0cgq(19Q$F-)Iy_mo|rCtGlh)1rE-mdwO&{ zTBu;~KQPb|O|)HdWn&UChBpk4@Rh-5-4P_FbE^VnOH=*}T<vy^RlpkIpKjc;lbQ4p z(3;97h%w@XPxJ-n3z{p|d(_>D+KU{acJ=2G;o(FzYf&R7YM#galtmGmJbuJag(2DN zIDhvo<y(yS3z!@u5Y~FnY@Cm=yZ~H=TYy`KD1|Z}+NnUaO2ujK+U<tf?VYG|Uuk~J zf?1*Q77l1oVvH)-J3&Nn*p%K&!&K3MAGy@OkeEg;ifpachC9fm)aYS?RU+022BkAj z!<5Ln5lF^@a)JC(94V&N?s<Bpa#7@>%!35j_X^*}83f8M%O1(Vs|1=(?V}E%UVS-z zHwSz`i(&iC5%yzVdOXIxSGoaALj4Oo&Z#F!DA4G`Il*<XfOD93L)XN$V&CEC$GQhc zLY27eI3tN?O!vCpg>6}Y;tn3sA<qccozaL6;na=wiuVR`u$RMpjyUL3k?nKbdBr?` ztFWNO1*%pdOW!*MOh<?$^pC$9$RLCcLc^;$2x%#+IZo0@FMPaS-Nm?{#z``M=X7sP znMXc$pM$7*TJ1I_>`+UF%NOr{P4O_!kiB|AHT2Cv25C)`0AI(?QRQpN7RR>s_zg07 zE`;Ku69$U(Y5wgJd~AP;2%4WzoQ4ts(`wn#e(r&OC(elVEKV53{Dv>8Rw$nH-GY0# z=zFS{KX?t!EE@KLR2qDQ1t~EUCwTkZtwGK4($Q@nR8*W_`LSlAK4q9aVafT{-0CwI zXL8yzw1-h=l?aavVGOHHZL`pXXf4*dPu2z0>&A4FNrOxhKG5&Nv&r`Os+28^eaCyR zTs>Hwzc0P+%T|}xKbQ8eV)*x<W{fK4HBFaXE0;L*THjFST}C6;jZ8jhhmi*HKt*2R zNO4Zt4jzx~Bxp|DS71?;O4enxdAlOH7n;stXSmF3a{3X~nR1#K4nO00%Wzoi4_m>? zmcD0IXrAopok>?qVVq1o4Lx_eQctq%AU4Tz*U9mt<Cpc|6m*sI0L?4vs8sXFeO}%T zZQ`>p*l`<t==b3uW5@&yI?Sv1w4al7Z=e1qt<^?dHuFikH~&_0Y5=ekYIxJH(LOl@ z_!CN?H7r4|-3T*;U;-R7T}T6v2yNq%m0!1b%DyTN)4Gc$|7z`G&q1h&)MQ>H>b+~` z%tE#}k(Mw_ADn$4dOyEc^xMQ6vYc9Bw(vxllP3nm=<=JJ0?npG79$4ns;e%`@`j-4 z(1Zi5R9SNVXUH9WlrXNy(QBda$d88(B~aAaCwiLCk)KzqogYQbgM%${y#Aw=1Ll+_ zkKC&>rPPz8NCBten3rYw8iT`$7YkaKj`@AwL8c!{C7{G~MZ($>jSrRa76d==X@k3H z1SaOxKAb?=%{<Wo)E|>PbXrE%VgLM?1N%%o>|>1TBn~FUm!ybxa#ur=k+yb#;kn0r zB78Yu%E_lG@6|G1{<_=~#u{;SbDAed(vW3Uo=w%K2s(dPB8Y(O0&1wcB^P6CN{Pye z_@0!eygGChy3|;3j9!X+%tE|qcmO1qC|w_r$%B<q2nrFT$dp<b%+1j3?h|bYg2z9l z4ZB1d;j)*1oyv(MRN}M@S!0zz5+ItRmf9?VamXi28duFHk+4skmy9_YCb0Wf6b09z zB4K-ku1Y5umSCK+%!J8z6|Yxxm^N5vV40^nb@7<+1zu0Q`yCgmr;9rLe$`s=y%X<8 zvb^P6C-{EA8`g$3qf=%kV{q=2FkAEd6TjEXnxdiNm-;#eX>4d=a@bGCDA!d()m}R* z*vo{(A5L(FbKJaLEBF{zGT~V3>^KLDX<#uj_1Rl%sE~TY^HA(gY}r?{)+ab8bl3gZ zm?>(x_+k1vCDXBlPmAJX^%i|BQ1>Z*S-R#JHnv_rux_5|nH5<=TtDMAv5XBzjq)!< zm9=}qK760AoYH5}XME#osL@weLo|N)ia%v)$nhtY{+|gx;N7aWg@^p@DWJXhfJ@L) zpB|<9!8pLgC0O-HGijJK_96}*cNLF{V^y$JV{o9WwS6D%B}W_<N*rN<5waCh{`c7P z@k^CsrMcp^0h8Y31r~!e)($C~d@weStL~(>Q(7eekA<RqgRz%W=ou8TM&lv(kPK2% z;L_X3Y8$dm4#|&u61)F(*l1YX{h@-$<0fsK?qFYTbFjoqT!eJ2bZA?QI5qK7%A0Q* zO@^0KZV9VR6|(P7oj#>?n+2NOg-W)TxjDX6X=DCgJ7H6W?M4{+R;~k^vS*45-%Hv6 za_geugR~%6wI^P^VksXmM(*UbT8g`iq@<Pm&6Q$TOyz1F&Y&8<`z%g9Hk!^=9K~M| zrtbok-8F7d$sc@pK8)@$GMxOD>!C|*cA3z%dWrd=G3nI*-Y0;AVj(q(hEPPYZ}6x& zC825s=;!+Tr_sZMNJK{PR8FLk?3<2Jilz#O5y_L=IjoyMKuR5*o1_H%A)Jrr7VNeX zXi}a})c7yAnoM#Bq;X^>t7ThUu;hb#81OKlohNj+Q8o>UKJ8p|W|pL*c%F?t@P&?k zIu*Q7j}4QENLnu}pOZ8F$Ke6rzR21%cT@>;2vbh$;T`n7i6G5NM5sHelcpzSOUssT z`y5c+Bh54(retjaP1^D!A<7^x<UK(P%?r5hP(i`N`}oThepwG9buH+~WKZiDR`gE{ z$maY1F*p%Q4IJ<CjG4M8q~k}GYZGq^4?68fI<Ve5^k%o@j^koaOVtrRL{Nq^iZM8R zNU!hH-(r#~7%MO?s6doPKqjr7z#_#v;fq^xwifj@=A;Q)1OWgg*laXWZ&M1RJoa%0 zRrPZ2-dQ^|9df4J*J6XhS+@<4eAv<-#Q7I`jZ`1^CO-S&T&KD)%=;o1ru-?-BMXqu zv)A=~29EMW8iJc98f+}ZkfMWz3NZlRz-GYXt5oE^y&F!-g|#h$LMXc|nJ$Y>GwXAf zKL!8&PCr|eLv&Pd(<#(}`j7>zCLXe0r931V={CdGQnArej5W&Gm2&DVy3=qm4ugo; z1~{|H@qu$ZwL+R&Q*?B|_v}#7xf4(ZSNl?)o?z0w%eebbrsLh~4)mvb&=KQxH)WrE z)G5|i>UI91it0$?E3#G5f4F{R#sL`--zVOn-#lxaoNlxZBWtV6`SW0U&WnOR>gZnV zo{sXZ1XDvKP5@Jmj!HE(OvfcUkoSotH>$M3+4*LW9ZQ!Eb8$if3*Vx=jee1gqE7&u z>;{e?y9bsZ!^fKrtrd(da68m-RlX4BC%8W}#n3#_<oHx23CiHAJV==82!?aiOTRCf zVBu%)y3ng|@^9{yCaj8bJsalb2<7aL0VSM?KV9raSy=vg<LQa$&ma4jRKKkjRPQ(u z6UWPA!47shL1+f6gYGlqg^5rEBT*g)%C9)MMH=f3&2TQSO&)5zwF<g3Fno)Em||CO zlvSp~P)7Xyo0PhLSU*7U8nfI#k*qt^{%m}7yXXT%`{(}{K|i2L4EXV2I@NUb8=lmF z+kNx2$d8=pByD7pM}XVpa+c8T7yZ!0ahFwta`_0^C!1JZeo*k28xP?ZyY#AS6^gA- zq|0wtBL}PDn<jRga%4SeB$Pu8UQUG6rGTsE+rWFT9+@REKi6z6o}{#g$T&Xx(ood3 zM7Ro{W>&l9R`tB^*O2L+ezqPXo}5MJFR4aZNozs3uj(;@<FQujQB*s2>$mK{zv_w` zJ;&;#i^stBlvNrH;NZb3h?}91S!R8F3V)UV_-(yv)}XdtrE-7EyiKm3wGM`^Ef2m( zh$Txf>lO17YH$H|7f(9q%>NSwe_Pe+fViY&<v+;-{;zQ00~rv;A@kg`tOlrY|4AjI zaC3*4p0LD~j?m)&m;cK%-~_%^iNig5!~gPGpkP(#k4in#w!;If<MW-s`vTI%&>Q1p zRhADsCDH%+3r~>;NBAW7DNI>tm-@-b;0L~P&##xv@B0t#{;xf5EE~60q)Jb2nrg*= zjg_&MzQeBVmurC5WBsU4PI~?b!{3}oHo;8;mT<~okwv<tS7Zrr|Nm4K3hOsn9)qKX z0%g>%1n>dnN}Dghzh%8wGvjR=eJaxo5MhPePNEB~K=4EHs5B6CF$?&%T0FF<hqeM< zx!bWKZKXD&eAxn|S37Gno<m*$Sm%B5x$EL;F%mKZ{B;9x>mG*pJ#$suD5)P1i}eK* zotxSMk^wW39t7*HGXQKh8$y0>gAxd($<}>K5B<S+vHbeRt_Sb`r55-<tbJ!#lUWz7 zA|oQG7*s^0i1aETARVL=dasEhMS7DGARs6rpduZlcS7$qfFd0M=^YdZp(DM+J(+Ku zaqi6AU-yp>&tnMZJ?}aDoW1tiYXR7}RZftlqHd7`9}iy{X#V23cIQ=|SzW+MD%%1^ zLV05RNi~ia3S2Gn7q+7T*LuP-CvR}e)3Wms5cjpkam@h{%q&m-S*4qZ$Idgrsed&y zs%R-i-5`hTQ{vy}!!b5u^~O1(T<-o@b4<#5`1duDq>O)S=X-`=NAmpt{^M&Ci7rsJ zru0rJmwbd1#m7ngj+yGpDogrbcD^kyK^+5xF_+}z)&A*`v3-|DrT2hK^WsC$tM#Le zF|iWNcV}L4JBuyQ)O50Tq7?P4<UEuhpqx!W?&$4;X|HCl7%wh92IM(07wab2vmWW+ z>8O{1hUhNf#cMB)RoKDTLfo3J>$s_OOxAjM*!AO-v>^;j=dTpwII9%0!<IET(P=;( z%Y<wJIakNigQ5D{30^pw<Un5Kl=o>Z1(3`Ie8|r6=^)Nkpp84Gy`bw0oHRgRkvfze z({~JPc2**UfWECPH_HTg;kG~+dgt-)%C%EClcBydnU?+a-rj51{auZL!oO$SgXJbN z__E0HT)Zo+V$yx73W!X06YPU_5z5KOLog2;`gWk<xwPpCh|nzEw&-=43h){arhv6Z zPzx5Qw>|@^zCk!Uit!r;*5Aj9A$KYt8&s98@eUczJl%c2VNW~$;)>|J!yW2_CP3f5 zAw#`z0>qEE+{TDTv4A4y@~w1G->RyUe`>sEa0`Xp8EL@@1=q2ImJCGDwEE%j?~=3M zaCCib7{WAI?EHhf?H+&$S%VXp4L*y00mKf(Pj6kZ935sVNT5b;g|xg+Wqv1i;x_f_ z24|i6DVV6vVCn;W=PLm_k8bByFJ{-N+y<JZ?}{E@3x0v)ozAFGUku<8vC!E7v%Nch zS!ns&1JTc~53CD6o%b?0#ECWAf(7b<DFBpApEZqFVo$PfVYZV~_%8H$g2FCtsbi@f z*qVSL%*@)1i!Xr$v#BEC4C&#NHy|n2E&+?{z19$F-OINhd=>Mrpad=nt6*hqJ&rPT zlqY!gqfdBx_}n{^=UDsMW<Z_A?4R{~x$~VV@clRWS!k@}z%=$dT=P`F8Llg{x_RKO zc7kwvkI{H5HhM^M*TdytAycUNa=1>Ndy9m^ex73W-;4{MDdTkL<5n`%iG0*AM4w&l zk)__gD5xN`3)(g^RR|<afi=sx6sgkeB^%(+<b<m@8komBkK+VWxz7C-`ykf3IN+|x zJP@*T$c%Fg<iGdWvuXH6$d%8kya(XzppyxnoOvZjti^OP>!)^Y8m;&Sa+5T{>%f8^ zge7wZ|Ff57F3NDdp@bv1BlyFCz_LojkDKH7d^^E(O+NBba|Ei_d1!ACE5<?BhtYoL zrTy5)q3koiv&e!SNaBhw(8u2;0?qt<IIVRz$wyD!?smyD#?JyzdfkeKi>#HY?*!XJ z_+;+9iGTFYfqW+ZYO}t*+czJA<&c`~L4ygLe51EFXvVnQl$d%3rzdJ>atw%aBDTpz zowQ*D&ff$-6Z5#G#?-Pl5YDjOe8IlbTkGKpXsLj<%oY%mf71^1dwg$q8il0ZN8%GR zu_8&%(Vl;OYQ84?F^#2|&+}EB1PO_%Vzf93*YvG>NtM&LKHlc4Ie$$`dgyue`8Sm} zUDO;dJ-;g5G{F1q*1e#tN8()OXG7vv;c$y>@660TViC#RFCGb*RVZ7(3ftYU@I*mb zgC=jSV~KBHFyy2!&Yn9z{J|>UA`0e?B9qvDAuimN-e@DjN>*c@0b<&ulLKJ0ZXt1M zBFBdFG-D6wzgQ`EiR>EI06p$JXcR}ldXww5u5V!ScefW2eH*R;V}U*_8V?Hq-|Q<V z|4=ZIK5ao&L@Q+|lD_^*zjmH}nF3*THnh9+pmZT4_JCTn@$S)?6sr#v<u+rZxJBwG zNZ9K>XL8_R417LHEc!C`%WFWl6jtuGhF-NfQ<T8#p&>NFiPUw3A=Y|&Cd*O`k+2nq z>1{D=&pN4Gi17f?X*v@v#~$gEC`!>BOuaU;z$2BYcd<LkTr1H4rTDPSt5S{fg9jI2 zbsGS04cpDlp-P7*IC~_;M88jT-*Sw~LKaS*9XXMEOHX<ydq0j{-R~asDzBHw7VE=4 zc?y5CRdtoWGeoq-bm5?)c<qJZ0reW`A<6SI_%vtEUJyTn*8~+mg?8^bcI>9eyuD@0 z7M6E8-`tFtde6lD{CLzt1o!T5+>XA6voG7EM7ow(9evGbr8vF25VF#;R0xylYSL(0 zMq?@E3vzLXKqlQ&MEUjx))3v+ija~49BG@BH=F&Nrg1mJACOHs&?eQdHWoBm>^AW^ zP8-ci(Sz?H-RJJ=;Bbr?BE^Kdx^K;26*zm}VU&I9ZJgUx0ZumWF2b4+Qc7B^Q8?3# z)I=+Sg5g~}|C6+$md=3K5K<x1%vB&Auig?s<h@+Uxe`L^co%y$s&W>6m;yRo_(s7$ zM*@sb59;3B7T{Ks5$bv}80AD|7Lt#$Q>NK6je9@8=1P@$GK^H)9f~K*5_6f%P6#8N zJt{hJn2bM(gD!_Yh(h1B?J8k+5Ts!23~rtdeMG<7^X_2v<+?g{nqV=JbQO{r*NW}% zUl(}XwL5@_U}%3}CkMt&ePUQ{t~lOLfPEa9B`Ku*GSCn&m8pNm>%!|e-RlB&6;f3{ z>VQDCSX9S@c=5SItT4}A5xWJ&?(jpdlzt3A@^~B*0#3%k`MJ8}K!pn6PPSzfK6FA& z5`3_#jf&5FGF=Cpy|^5GbHoM@m4~*eNGO0L&@8@CJ+-ZU%F|hN#c?vJ>Rs&0&4rPR z87`m!<#X$?DnvPAq&YF!5KB`9LE2^&thPiorfY77L#dsZ!=BCtQ(}E?THJOZ)!Aki zCOshTE!xCWzSf6Lnq2FmxbMJGm)cDv;!$GWtsLiqXE7`6b6m7|(dpX7O6v2pok474 z$1J4Sf*HeRc*t(z;yVL3nXtrD>lOc9{pxy&Do@dD>S+d12PZL6x)Yc5MY!lB!3bE9 zSN^^t�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 From c7f31a0c64d7033e4a0fbfa0eaa4146bec5029be Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Wed, 5 Nov 2025 17:58:10 +0100 Subject: [PATCH 53/69] WIP: New navigation --- .../layouts/_default/baseof.html | 2 +- .../layouts/_default/home.navigation.html | 62 ++-- .../layouts/partials/version-selector.html | 25 +- .../arangodb-docs-theme/static/css/theme.css | 137 ++++++-- .../arangodb-docs-theme/static/js/theme.js | 305 ++++++------------ 5 files changed, 255 insertions(+), 276 deletions(-) diff --git a/site/themes/arangodb-docs-theme/layouts/_default/baseof.html b/site/themes/arangodb-docs-theme/layouts/_default/baseof.html index a17c5ddaf6..d7c3da2a25 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/baseof.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/baseof.html @@ -11,7 +11,7 @@ <section class="page-main"> <section class="page-container"> {{ partialCached "header.html" . -}} - <iframe src="/nav.html" title="description" class="menu-iframe active" style="opacity: 0;"></iframe> + <nav class="main-nav" aria-label="Main"></nav> <div class="container-main"> <div class="row-main"> {{ if gt (len .Page.Ancestors) 1 }}{{ partial "breadcrumbs.html" . }}{{ end -}} diff --git a/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html b/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html index 954366a9d3..b2d2da3d16 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html @@ -1,50 +1,36 @@ -<div class="sidebar default-animation active"> - <div class="sidenav-container-flex"> - <div class="sidenav-navigation"> - <div class="content-wrapper highlightable"> - <ul class="topics{{ if .Site.Params.collapsibleMenu }} collapsible-menu{{ end }}"> - {{- template "section-tree-nav" dict "Pages" .Site.Sections }} - </ul> - <div class="footermargin footerLangSwitch footerVariantSwitch footerVisitedLinks footerFooter"></div> - </div> - </div> - </div> - <button class="sidebar-toggle-navigation desktop-menu-toggle" onclick="showSidebarHandler();"></button> -</div> +<ol class="main-nav-ol"> + {{- template "main-nav-tree" dict "Pages" .Site.Sections }} +</ol> -{{- define "section-tree-nav" }} +{{- define "main-nav-tree" }} {{- $pages := .Pages }} {{- range $page := $pages.ByWeight }} {{- if $page.Pages }} {{- /* section (with child pages) */}} - <li class="dd-item sect"> - <label class="closed"></label>{{- /*whitespace control */ -}} - <a href="{{ .RelPermalink }}" class="toggle sect menu-link"> - <div class="menu-title">{{ .Params.menuTitle | markdownify }}</div> - </a> - {{ $isVersioned := eq $page.Path "/arangodb" }} + <li class="nav-section"> + <div class="nav-section-header"> + <a class="link-nav" href="{{ .RelPermalink }}">{{ .Params.menuTitle | markdownify }}</a> + <label class="expand-nav"><input type="checkbox"></label> + </div> + {{- $isVersioned := eq $page.RelPermalink "/arangodb/" }} {{ if $isVersioned }} - {{ partial "version-selector.html" . }} - {{ range $versionPage := $page.Pages }} - <div class="version-menu version-{{ replace (index (split $versionPage.Path "/") 2) "." "_" }}"> - <ul class="submenu"> - {{- template "section-tree-nav" $versionPage }} - </ul> - </div> - {{ end }} - {{ else }} - <ul class="submenu"> - {{- template "section-tree-nav" $page }} - </ul> - {{ end }} + {{- partial "version-selector.html" . }} + {{- range $versionSection := $page.Pages }} + <ol class="nav-ol" data-version="{{ index (split $versionSection.Path "/") 2 }}"> + {{- template "main-nav-tree" $versionSection -}} + </ol> + {{- end }} + {{- else }} + <ol class="nav-ol"> + {{- template "main-nav-tree" $page -}} + </ol> + {{- end }} </li> {{- else }} {{- /* page (or section without children) */}} - <li class="dd-item leaf"> - <a href="{{ .RelPermalink }}" class="menu-link"> - <div class="menu-title">{{ .Params.menuTitle | markdownify }}</div> - </a> + <li class="nav-leaf"> + <a class="link-nav" href="{{ .RelPermalink }}">{{ .Params.menuTitle | markdownify }}</a> </li> {{- end }} {{- end }} -{{- end }} +{{- end }} \ No newline at end of file diff --git a/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html b/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html index 88ec7b6540..69cb3aeaa8 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html @@ -1,14 +1,11 @@ -<div class="version-selector"> - <select class="arangodb-version" onchange="changeVersion();"> - <optgroup label="Version"> - {{ $versions := index site.Data.versions "/arangodb/" }} - {{ range $i, $version := $versions }} - {{/* if eq $version.name "platform" }}{{ continue }}{{ end */}} - {{ if ne $version.name $version.alias }} - <option value="{{ $version.alias }}">{{ $version.alias }}</option> - {{ end }} - <option value="{{ $version.name }}"{{ if eq $version.name "3.12" }} selected{{ end }}>{{ $version.name }}</option> - {{ end }} - </optgroup> - </select> -</div> \ No newline at end of file +<select class="version-selector" name="Version selector"> + <optgroup label="Version"> + {{ $versions := index site.Data.versions "/arangodb/" -}} + {{ range $i, $version := $versions -}} + <option value="{{ $version.alias }}"{{/* if eq $version.alias "stable" }} selected{{ end */}}> + {{- $version.name }} + {{- if ne $version.name $version.alias }} ({{ $version.alias }}){{ end -}} + </option> + {{ end -}} + </optgroup> +</select> \ No newline at end of file diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index 1dd47fc6ef..fd08abf626 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -35,6 +35,14 @@ --font-headlines: "Urbanist", sans-serif; --font-content: "Inter", sans-serif; + --padding-1: 8px; + --padding-2: 16px; + --padding-4: 32px; + --padding-8: 64px; + + --topbar-height: 64px; + --nav-width: 300px; + --green-50: #e3f2e0; --green-100: #dcebd9; --green-200: #98D78C; @@ -478,24 +486,16 @@ a.section-link { } .card-head { - position: relative; z-index: 2; - display: flex; margin-bottom: 10px; - flex-flow: column; min-height: 40px; - justify-content: center; - align-items: flex-start; } .card-icon { - width: 40px; - height: 40px; - -o-object-fit: contain; + width: 30px; object-fit: contain; - position: absolute; - top: 0; - left: 0; + float: right; + margin-left: 10px; } .card-title { @@ -819,19 +819,6 @@ header .logo { /* */ -/* Header version select */ -.version-selector { - border: none; - margin-left: 1rem; -} - -.arangodb-version { - border: none; - padding: 0 .75rem; - color: var(--gray-50); - background: black; -} - /* @media screen and (max-width: 768px) { .version-selector { @@ -2172,3 +2159,105 @@ nav.pagination .next { height: 36px !important; width: 200px !important; } + +.block { + display: block; +} + +.main-nav { + background-color: var(--gray-950); + position: fixed; + top: var(--padding-8); + left: 0; + bottom: 0; + width: var(--nav-width); + padding: var(--padding-1); + padding-left: 0; + overflow-y: scroll; + scrollbar-width: thin; + scrollbar-color: var(--gray-300) var(--gray-100); + user-select: none; +} + +.main-nav-ol, +.nav-ol { + list-style: none; + margin: 0; + margin-left: 10px; +} + +.nav-section-header { + display: flex; +} + +.nav-section > .nav-ol, +.nav-section > .version-selector { + display: none; +} + +.expand-nav { + display: block; + width: 48px; + border-radius: 0 .5rem .5rem 0; + margin: 0; +} + +.expand-nav::after { + font-family: "Font Awesome 5 Free"; + content: "\f107"; + display: inline-block; + vertical-align: middle; + font-weight: 600; + font-size: 16px; + padding-top: 10px; + padding-left: 14px; + color: var(--gray-500); +} + +.expand-nav > input { + display: none; +} + +.nav-section:has(> .nav-section-header > .expand-nav > input:checked) > .version-selector, +.nav-section:has(> .nav-section-header > .expand-nav > input:checked) > .nav-ol { + display: block; +} + +.link-nav:hover, .expand-nav:hover { + color: var(--gray-100); + background-color: var(--gray-900); +} + +.link-nav { + display: block; + width: 100%; + padding: .4rem 1rem; + color: var(--gray-100); + border-radius: .5rem; + text-shadow: none !important; /* Bootstrap ?! */ + font-weight: 400; +} + +.link-nav-active { + background-color: rgba(255, 255, 255, 0.05); +} + +.link-nav-active, .nav-section:has(.link-nav-active) > .nav-section-header > .link-nav, .link-nav:focus { + color: var(--color-electric-lime); +} + +.nav-section-header > .link-nav { + border-radius: 0.5rem 0 0 .5rem; +} + +.nav-section-header > .expand-nav { + border-radius: 0 .5rem .5rem 0; +} + +.version-selector { + color: var(--gray-50); + background: black; + border: none; + width: calc(100% - 2rem); + margin-left: 1rem; +} diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index d22f26cc61..c822e67d74 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -1,141 +1,7 @@ var theme = true; -/* - Menu -*/ - -function toggleMenuItem(event) { - const listItem = event.target.parentNode; - if (listItem.classList.contains("leaf")) return; - - listItem.querySelector("label").classList.toggle("open"); - slideToggle(listItem.querySelector(".submenu")); - - const versionSelector = listItem.querySelector(".version-selector") - if (versionSelector) { - versionSelector.style.display = listItem.classList.contains("open") ? "block" : "none"; - } -} - -// Vanilla JS slideToggle implementation -function slideToggle(element) { - if (element.style.display === "none" || element.style.display === "") { - element.style.display = "block"; - } else { - element.style.display = "none"; - } -} - -function menuToggleClick(event) { - if (event.target.tagName !== "LABEL") return; - event.preventDefault(); - toggleMenuItem(event); -} - -function renderVersion() { - var urlVersion = getVersionFromURL(); - - /* - var versionSelector = document.querySelector(".arangodb-version"); - if (!version || version === "platform") { - versionSelector.style.display = "none"; - } else { - versionSelector.style.display = "block"; - } - */ - - if (urlVersion) { - var versionSelector = document.querySelector(".version-selector"); - if (versionSelector) { - versionSelector.style.display = "block"; - } - var version = "version-" + urlVersion.replace('.', '_'); - var menuEntry = document.querySelectorAll('.version-menu .submenu'); - for ( let entry of menuEntry ) { - if (entry.classList.contains(version)) { - entry.style.display = 'block'; - } else { - entry.style.display = 'none'; - } - } - } -} - function closeAllEntries() { - document.querySelectorAll(".dd-item.active").forEach(el => el.classList.remove("active")); - document.querySelectorAll(".dd-item > label.open").forEach(el => el.classList.remove("open")); - document.querySelectorAll(".submenu").forEach(el => el.style.display = "none"); - document.querySelectorAll(".version-selector").forEach(el => el.style.display = "none"); - document.querySelectorAll(".dd-item.parent").forEach(el => el.classList.remove("parent")); -} - -function loadMenu(url) { - closeAllEntries(); - var version = getVersionFromURL() - if (version) { - - document.querySelector(".version-selector").style.display = "block"; - - /* - document.querySelectorAll('.version-menu.version-' + version.replace('.', '_') + ' a').forEach(function(link) { - const oldHref = link.getAttribute('href'); - const newHref = oldHref.replace(oldHref.split("/")[1], version); - link.setAttribute('href', newHref); - }); - */ - } - - // Try to find the menu item - first try exact match, then try without hash - console.log('loadMenu: Looking for URL:', url); - var current = document.querySelector('.dd-item > a[href="' + url + '"]'); - console.log('loadMenu: Exact match found:', current); - - if (!current && url.includes('#')) { - // Try without the hash fragment - const urlWithoutHash = url.split('#')[0]; - console.log('loadMenu: Trying without hash:', urlWithoutHash); - current = document.querySelector('.dd-item > a[href="' + urlWithoutHash + '"]'); - console.log('loadMenu: Without hash found:', current); - } - if (!current) { - // Try to find by pathname only (in case of different origins or protocols) - const pathname = new URL(url, window.location.origin).pathname; - console.log('loadMenu: Trying pathname only:', pathname); - current = document.querySelector('.dd-item > a[href="' + pathname + '"]'); - console.log('loadMenu: Pathname match found:', current); - } - - if (current) { - console.log('loadMenu: Found menu item, expanding parents'); - current = current.parentNode; - current.classList.add("active"); - let expandedCount = 0; - while (current && !current.classList.contains("topics") && !current.classList.contains("collapsible-menu")) { - if (current.tagName === "LI") { - console.log('loadMenu: Expanding parent LI:', current); - current.classList.add("parent"); - const label = current.querySelector("label"); - if (label) { - label.classList.add("open"); - console.log('loadMenu: Added open class to label'); - } - const versionSelector = current.querySelector(".version-selector"); - if (versionSelector) { - versionSelector.style.display = "block"; - } - const submenu = current.querySelector(".submenu"); - if (submenu) { - submenu.style.display = "block"; - expandedCount++; - console.log('loadMenu: Set submenu display to block, count:', expandedCount); - } - } - current = current.parentNode; - } - console.log('loadMenu: Total submenus expanded:', expandedCount); - } else { - console.log('loadMenu: No menu item found for URL:', url); - } + document.querySelectorAll(".main-nav-ol .expand-nav > input:checked").forEach(el => el.checked = false); } function showSidebarHandler() { @@ -183,11 +49,12 @@ function replaceArticle(href, newDoc) { function updateHistory(urlPath) { + console.log("updateHistory: " + urlPath); if (!urlPath || urlPath == window.location.pathname + window.location.hash) { return } - window.history.pushState("navchange", "ArangoDB Documentation", urlPath); + window.history.pushState("navchange", "Arango Documentation", urlPath); if (!urlPath.startsWith("#")) trackPageView(document.title, urlPath); var popStateEvent = new PopStateEvent('popstate', { state: "navchange" }); @@ -220,22 +87,9 @@ function loadNotFoundPage() { function loadPage(target) { var href = target; - /* - var versionUrl = getVersionFromURL(); - if (versionUrl !== "platform" && getVersionInfo(versionUrl) == undefined) { - loadNotFoundPage(); - return; - } - */ - /* - getCurrentVersion(href); - renderVersion(); - loadMenu(new URL(href).pathname); - var version = getVersionInfo(getVersionFromURL()).name; - href = href.replace(getVersionFromURL(), version);*/ var menuPathName = new URL(href).pathname; console.log(menuPathName); - loadMenu(menuPathName); + fetch(href) .then(response => { if (response.url && href.replace(/#.*/, "") !== response.url) { @@ -262,6 +116,48 @@ function loadPage(target) { }); } +function getSelectedVersion() { + const version = getVersionFromURL(); + if (version) return version; + return localStorage.getItem("docs-version") ?? "stable"; +} + +async function loadNav() { + const res = await fetch("/nav.html"); + if (!res.ok) { + throw new Error("Failed to fetch navigation"); + } + const text = await res.text(); + const doc = new DOMParser().parseFromString(text, "text/html"); + const mainNavContent = doc.querySelector(".main-nav-ol"); + // TODO: Support multiple versions + const selectedVersion = getSelectedVersion(); + const versionSelector = mainNavContent.querySelector(".version-selector"); + if (versionSelector && versionSelector.querySelector(`option[value="${selectedVersion}"]`)) { + versionSelector.value = selectedVersion; + + versionSelector.parentElement.querySelectorAll(":scope > .nav-ol").forEach(navList => { + if (navList.dataset.version == selectedVersion) { + navList.style.display = "block"; + } else { + navList.removeAttribute("style"); + } + }); + } else { + throw new Error("Stored version not available in version selector"); + } + + const activeItem = mainNavContent.querySelector(`.link-nav[href="${window.location.pathname}"]`); + if (activeItem) { + activeItem.classList.add("link-nav-active"); + mainNavContent.querySelectorAll(".nav-section:has(.link-nav-active) > .nav-section-header > .expand-nav > input").forEach(el => el.checked = true); + } + //versionSelector.addEventListener("change", handleDocumentChange); + + const mainNavPlaceholder = document.querySelector(".main-nav"); + mainNavPlaceholder.appendChild(mainNavContent); +} + function trackPageView(title, urlPath) { if (window.gtag) { gtag('config', 'G-6PSX8LKTTJ', { @@ -282,8 +178,6 @@ function initArticle(url) { hideEmptyOpenapiDiv(); goToTop(); styleImages(); - //aliazeLinks('article', 'a.link:not([target]), a.card-link, a.header-link'); - //aliazeLinks('.breadcrumbs', 'a') linkToVersionedContent(); } @@ -297,7 +191,7 @@ window.addEventListener('popstate', function (e) { }); window.addEventListener('hashchange', function (e) { - window.history.pushState("popstate", "ArangoDB Documentation", window.location.href); + window.history.pushState("popstate", "Arango Documentation", window.location.href); scrollToFragment() }); @@ -448,31 +342,6 @@ function getVersionFromURL() { if (splitUrl[1] == "arangodb") return splitUrl[2]; } -function isUsingAlias() { - let urlVersion = getVersionFromURL(); - for (let v of versions) { - if (urlVersion == v.alias) return true; - } - return false; -} - -function aliazeLinks(parentSelector, linkSelector) { - if (!isUsingAlias()) return; - let nameAliasMapping = {}; - for (let v of versions) { - nameAliasMapping[v.name] = v.alias; - } - - document.querySelectorAll(parentSelector + ' ' + linkSelector).forEach(function(link) { - const old = link.getAttribute("href"); - if (old == undefined || old.startsWith("#")) return; - let splitLink = old.split("/"); - let linkVersion = splitLink[1]; - let alias = nameAliasMapping[linkVersion] || linkVersion; - splitLink.splice(1, 1, alias); - link.setAttribute("href", splitLink.join("/")); - }); -} function setVersionSelector(version) { for(let option of document.querySelector(".arangodb-version").options) { @@ -508,7 +377,7 @@ function changeVersion() { try { localStorage.setItem('docs-version', newVersion); - renderVersion(); + //renderVersion(); window.setupDocSearch(newVersion); } catch(exception) { console.log({exception}) @@ -518,7 +387,8 @@ function changeVersion() { var currentVersion = getVersionFromURL(); //var newVersionAlias = getVersionInfo(newVersion).alias; if (!currentVersion) { - var newUrl = window.location.pathname = "/" + newVersion + "/"; + //var newUrl = window.location.pathname = "/" + newVersion + "/"; + var newUrl = "/arangodb/" + newVersion + "/"; } else { var newUrl = window.location.pathname.replace(currentVersion, newVersion) + window.location.hash; } @@ -627,20 +497,65 @@ function linkToVersionedContent() { }); } +function handleDocumentChange(event) { + const target = event.target; + if (target.classList.contains("version-selector")) { + const selectedVersion = target.value; + const currentPath = window.location.pathname; + //const versionedPath = target.dataset.path; + + localStorage.setItem('docs-version', selectedVersion); // TODO: handle multiple + target.closest(".nav-section").querySelectorAll(":scope >.nav-ol").forEach( + el => { + if (el.dataset.version == selectedVersion) { + el.style.display = "block"; + } else { + el.removeAttribute("style"); + } + } + ); + + //if (currentPath.startsWith(versionedPath)) { + // currentPath.indexOf("/", versionedPath.length) + //} + + const corePath = "/arangodb/"; + if (currentPath.startsWith(corePath)) { + const idx = currentPath.indexOf("/", corePath.length); + const newPath = window.location.origin + corePath + selectedVersion + currentPath.slice(idx) + window.location.hash; + console.log("handleDocumentChange: " + newPath); + updateHistory(newPath); + loadPage(newPath); + } else { + alert("Not viewing versioned content, what to do?"); + // Should update localStorage! + } + } +} + // Central click handler using event delegation function handleDocumentClick(event) { const target = event.target; const closest = (selector) => target.closest(selector); - + + if (target.classList.contains("expand-nav")) return; + // Menu link clicks - if (closest('.menu-link')) { + if (target.classList.contains("link-nav")) { event.preventDefault(); - const menuLink = closest('.menu-link'); - const href = menuLink.getAttribute('href'); + document.querySelectorAll(".link-nav-active").forEach(el => el.classList.remove("link-nav-active")); + target.classList.add("link-nav-active"); + closeAllEntries(); + document.querySelectorAll(".nav-section:has(.link-nav-active) > .nav-section-header > .expand-nav > input").forEach(el => el.checked = true); + if (target.parentElement.classList.contains("nav-section-header")) { + target.parentElement.querySelector(".expand-nav > input").checked = true; + } + const href = target.getAttribute('href'); if (href) { updateHistory(href); + } else { + throw new Error("Nav link has no href"); } - document.querySelectorAll('.sidebar.mobile').forEach(el => el.classList.remove("active")); return; } @@ -692,13 +607,6 @@ function handleDocumentClick(event) { return; } - // Menu toggle clicks (labels) - if (target.tagName === "LABEL" && closest('.sidebar')) { - event.preventDefault(); - toggleMenuItem(event); - return; - } - // Tab clicks if (target.hasAttribute('data-tab-group') && target.hasAttribute('data-tab-item')) { event.preventDefault(); @@ -740,17 +648,14 @@ function handleDocumentClick(event) { } window.onload = () => { - window.history.pushState("popstate", "ArangoDB Documentation", window.location.href); - trackPageView(document.title, window.location.pathname); - var iframe = document.querySelector('.menu-iframe'); - var iFrameBody = iframe.contentDocument || iframe.contentWindow.document; - content = iFrameBody.querySelector('.sidebar'); + loadNav(); - iframe.replaceWith(content); + window.history.pushState("popstate", "Arango Documentation", window.location.href); + trackPageView(document.title, window.location.pathname); getCurrentVersion(window.location.href); - renderVersion(); + loadPage(window.location.href) if (getVersionInfo(getVersionFromURL()) != undefined) { @@ -762,6 +667,8 @@ window.onload = () => { // Add central click handler to document document.addEventListener("click", handleDocumentClick); + document.addEventListener("change", handleDocumentChange); + var isMobile = window.innerWidth <= 768; if (isMobile) { document.querySelectorAll('.sidebar').forEach(el => el.classList.add("mobile")); From e07a7c2dcf5bd4a3dc27e6ed2a1fa44060e984a5 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Wed, 5 Nov 2025 18:22:35 +0100 Subject: [PATCH 54/69] Fix versioned submenu visibility --- .../themes/arangodb-docs-theme/static/css/theme.css | 13 ++++++++++--- site/themes/arangodb-docs-theme/static/js/theme.js | 10 +++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index fd08abf626..fb47b90d62 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -1564,7 +1564,7 @@ li > code { } .copy-to-clipboard-button.tooltipped::after{ content: 'Copied'; - font-family: var(--font-content) + font-family: var(--font-content); padding: 0 5px; font-weight: bold; color: var(--green-700); @@ -2218,8 +2218,15 @@ nav.pagination .next { display: none; } -.nav-section:has(> .nav-section-header > .expand-nav > input:checked) > .version-selector, -.nav-section:has(> .nav-section-header > .expand-nav > input:checked) > .nav-ol { +.nav-section:has(> .nav-section-header > .expand-nav > input:checked) > .version-selector { + display: block; +} + +.nav-section:has(> .nav-section-header > .expand-nav > input:checked) > .nav-ol:not([data-version]) { + display: block; +} + +.nav-section:has(> .nav-section-header > .expand-nav > input:checked) > .nav-ol.selected-version { display: block; } diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index c822e67d74..f13ab37f47 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -138,9 +138,9 @@ async function loadNav() { versionSelector.parentElement.querySelectorAll(":scope > .nav-ol").forEach(navList => { if (navList.dataset.version == selectedVersion) { - navList.style.display = "block"; + navList.classList.add("selected-version"); } else { - navList.removeAttribute("style"); + navList.classList.remove("selected-version"); } }); } else { @@ -505,12 +505,12 @@ function handleDocumentChange(event) { //const versionedPath = target.dataset.path; localStorage.setItem('docs-version', selectedVersion); // TODO: handle multiple - target.closest(".nav-section").querySelectorAll(":scope >.nav-ol").forEach( + target.closest(".nav-section").querySelectorAll(":scope > .nav-ol").forEach( el => { if (el.dataset.version == selectedVersion) { - el.style.display = "block"; + el.classList.add("selected-version"); } else { - el.removeAttribute("style"); + el.classList.remove("selected-version"); } } ); From 954266c025a51d44cf6ae914c4e77dee171c2f39 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Wed, 5 Nov 2025 18:44:50 +0100 Subject: [PATCH 55/69] Fix active state for hard navigation and better expand widget --- .../arangodb-docs-theme/static/css/theme.css | 8 ++++-- .../arangodb-docs-theme/static/js/theme.js | 27 ++++++++++++++----- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index fb47b90d62..7ef2bf6964 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -2214,6 +2214,10 @@ nav.pagination .next { color: var(--gray-500); } +.expand-nav:has(> input:checked)::after { + content: "\f106"; +} + .expand-nav > input { display: none; } @@ -2230,7 +2234,7 @@ nav.pagination .next { display: block; } -.link-nav:hover, .expand-nav:hover { +.link-nav:hover, .expand-nav:hover, .link-nav-active + .expand-nav:hover { color: var(--gray-100); background-color: var(--gray-900); } @@ -2245,7 +2249,7 @@ nav.pagination .next { font-weight: 400; } -.link-nav-active { +.link-nav-active, .link-nav-active + .expand-nav { background-color: rgba(255, 255, 255, 0.05); } diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index f13ab37f47..18448c1e8d 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -122,6 +122,22 @@ function getSelectedVersion() { return localStorage.getItem("docs-version") ?? "stable"; } +function updateActiveNavItem(pathname) { + // Remove all existing active states + document.querySelectorAll(".link-nav-active").forEach(el => el.classList.remove("link-nav-active")); + + // Collapse all sections first + document.querySelectorAll(".main-nav-ol .expand-nav > input:checked").forEach(el => el.checked = false); + + // Find and activate the new item + const activeItem = document.querySelector(`.link-nav[href="${pathname}"]`); + if (activeItem) { + activeItem.classList.add("link-nav-active"); + // Expand all parent sections + document.querySelectorAll(".nav-section:has(.link-nav-active) > .nav-section-header > .expand-nav > input").forEach(el => el.checked = true); + } +} + async function loadNav() { const res = await fetch("/nav.html"); if (!res.ok) { @@ -147,15 +163,11 @@ async function loadNav() { throw new Error("Stored version not available in version selector"); } - const activeItem = mainNavContent.querySelector(`.link-nav[href="${window.location.pathname}"]`); - if (activeItem) { - activeItem.classList.add("link-nav-active"); - mainNavContent.querySelectorAll(".nav-section:has(.link-nav-active) > .nav-section-header > .expand-nav > input").forEach(el => el.checked = true); - } - //versionSelector.addEventListener("change", handleDocumentChange); - const mainNavPlaceholder = document.querySelector(".main-nav"); mainNavPlaceholder.appendChild(mainNavContent); + + // Set initial active state + updateActiveNavItem(window.location.pathname); } function trackPageView(title, urlPath) { @@ -179,6 +191,7 @@ function initArticle(url) { goToTop(); styleImages(); linkToVersionedContent(); + updateActiveNavItem(window.location.pathname); } From b1393bbd2c5ad8ce8a671a348dc2825ef89c5032 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 6 Nov 2025 15:11:30 +0100 Subject: [PATCH 56/69] Replace versions in arangodb links on the client-side Hugo does not regenerate the content if it's mounted twice, so the links in /stable and /devel use /3.12 and /3.13 --- .../layouts/_default/_markup/render-link.html | 2 +- .../arangodb-docs-theme/static/js/theme.js | 25 +++++++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html b/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html index a9b871f509..4396de8828 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html @@ -41,7 +41,7 @@ {{- end }} {{- $permalink = printf "%s%s" $page.RelPermalink $fragment }} {{- else }} - {{- if and (ne $currentPage "/") (not (or (strings.HasPrefix $currentPage "/stable/") (strings.HasPrefix $currentPage "/devel/"))) }} + {{- if and (ne $currentPage "/") (not (or (strings.HasPrefix $currentPage "/arangodb/stable/") (strings.HasPrefix $currentPage "/arangodb/devel/"))) }} {{- if site.Params.failOnBrokenLinks }} {{- errorf "<error code=1> Broken link '%v' found in %s </error><br>" $link $currentFile }} {{- else }} diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index 18448c1e8d..a14d104d59 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -500,14 +500,29 @@ function toggleExpandShortcode(event) { function linkToVersionedContent() { const currentVersion = getVersionFromURL(); - if (!currentVersion) return; - document.querySelectorAll("a.link:not([target])").forEach(el => { - const matches = el.getAttribute("href").match(/^\/(\d\.\d{1,2})(\/.*)/); - const previousVersion = localStorage.getItem('docs-version') || "stable"; + if (currentVersion) { + if (currentVersion !== "stable" && currentVersion !== "devel") return; + document.querySelectorAll(".link:not([target]), .card-link:not([target])").forEach(el => { + const originalUrl = el.getAttribute("href"); + const matches = originalUrl.match(/^\/arangodb\/(.+?)(\/.*)/); + if (matches && matches.length > 2) { + const newUrl = "/arangodb/" + currentVersion + matches[2]; + console.log("linkToVersionedContent: " + originalUrl + " -> " + newUrl); + el.setAttribute("href", newUrl); + } + }); + } else { + document.querySelectorAll(".link:not([target], .nav-prev, .nav-next), .card-link:not([target])").forEach(el => { + const originalUrl = el.getAttribute("href"); + const matches = originalUrl.match(/^\/arangodb\/(.+?)(\/.*)/); + const previousVersion = localStorage.getItem('docs-version') ?? "stable"; if (matches && matches.length > 2 && previousVersion) { - el.setAttribute("href", "/" + previousVersion + matches[2]); + const newUrl = "/arangodb/" + previousVersion + matches[2]; + console.log("linkToVersionedContent: " + originalUrl + " -> " + newUrl); + el.setAttribute("href", newUrl); } }); + } } function handleDocumentChange(event) { From f5d33cbd1d1d2734b33067fe736b701154671924 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 6 Nov 2025 15:13:13 +0100 Subject: [PATCH 57/69] Adjust cards on root page of 3.12 and 3.13 These pages are not accessble from the nav but via the breadcrumbs for instance. Should not be linked to. --- site/content/arangodb/3.12/_index.md | 12 ++++++++---- site/content/arangodb/3.13/_index.md | 12 ++++++++---- site/content/data-platform/features.md | 2 +- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/site/content/arangodb/3.12/_index.md b/site/content/arangodb/3.12/_index.md index 2eab52e422..d395c48a5a 100644 --- a/site/content/arangodb/3.12/_index.md +++ b/site/content/arangodb/3.12/_index.md @@ -8,8 +8,8 @@ layout: default {{< cards >}} -{{% card title="What is ArangoDB?" link="about/" %}} -Get to know graphs, ArangoDB's use cases and features. +{{% card title="Features" link="features/" %}} +Get an overview of ArangoDB's features and deployment options. {{% /card %}} {{% card title="Get started" link="get-started/" %}} @@ -18,8 +18,12 @@ and get a server instance up and running. {{% /card %}} {{% card title="AQL" link="aql/" %}} -ArangoDB's Query Language AQL lets you use graphs, JSON documents, and search -via a single, composable query language. +ArangoDB's Query Language AQL lets you use graphs, JSON documents, search, +vector, and geo-spatial data via a single, composable query language. +{{% /card %}} + +{{% card title="Graphs" link="graphs/" %}} +What are graphs and how do the different types of graphs work in ArangoDB? {{% /card %}} {{% card title="Deploy" link="deploy/" %}} diff --git a/site/content/arangodb/3.13/_index.md b/site/content/arangodb/3.13/_index.md index 327eb25661..00fd289406 100644 --- a/site/content/arangodb/3.13/_index.md +++ b/site/content/arangodb/3.13/_index.md @@ -8,8 +8,8 @@ layout: default {{< cards >}} -{{% card title="What is ArangoDB?" link="about/" %}} -Get to know graphs, ArangoDB's use cases and features. +{{% card title="Features" link="features/" %}} +Get an overview of ArangoDB's features and deployment options. {{% /card %}} {{% card title="Get started" link="get-started/" %}} @@ -18,8 +18,12 @@ and get a server instance up and running. {{% /card %}} {{% card title="AQL" link="aql/" %}} -ArangoDB's Query Language AQL lets you use graphs, JSON documents, and search -via a single, composable query language. +ArangoDB's Query Language AQL lets you use graphs, JSON documents, search, +vector, and geo-spatial data via a single, composable query language. +{{% /card %}} + +{{% card title="Graphs" link="graphs/" %}} +What are graphs and how do the different types of graphs work in ArangoDB? {{% /card %}} {{% card title="Deploy" link="deploy/" %}} diff --git a/site/content/data-platform/features.md b/site/content/data-platform/features.md index 990e86821f..23b02817a7 100644 --- a/site/content/data-platform/features.md +++ b/site/content/data-platform/features.md @@ -41,7 +41,7 @@ to provide a complete, enterprise-ready solution. ### ArangoDB Enterprise Edition -At the foundation is [**ArangoDB Enterprise Edition**](../../arangodb/3.12/), the +At the foundation is [**ArangoDB Enterprise Edition**](../arangodb/_index.md), the powerful multi-model database that provides: - **Graph**: Native graph database capabilities with efficient traversals and pattern matching From 2f149bf8841f446b66f04490d1b9b6727fc89b14 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 6 Nov 2025 15:13:49 +0100 Subject: [PATCH 58/69] Fix go to homepage --- .../arangodb-docs-theme/layouts/_default/home.notfound.html | 2 +- site/themes/arangodb-docs-theme/static/js/theme.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/site/themes/arangodb-docs-theme/layouts/_default/home.notfound.html b/site/themes/arangodb-docs-theme/layouts/_default/home.notfound.html index 5171d6d46c..7c0eb93e5b 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/home.notfound.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/home.notfound.html @@ -11,7 +11,7 @@ <h3 style="text-align: center;">Oops… Avocados are not growing here</h3> </hgroup> <p style="text-align: center;"> - <a href="/stable/" class="link">Back to Home</a> + <a href="/" class="link">Back to Home</a> </p> </div> </article> diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index a14d104d59..ce19b16903 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -470,8 +470,7 @@ const goToTop = (event) => { function goToHomepage(event){ event.preventDefault(); - var homepage = "/"; // + getVersionFromURL() + "/"; - updateHistory(homepage); + updateHistory("/"); } function copyURI(evt) { From 55e9645ff87f9eecc0b5745613dbd0a4bbeb0e63 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 6 Nov 2025 15:16:23 +0100 Subject: [PATCH 59/69] Rework mobile menu toggle Fix functionality, use event listener, remove unused CSS, fix references in JS --- .../layouts/partials/header.html | 2 +- .../arangodb-docs-theme/static/css/theme.css | 296 +++--------------- .../arangodb-docs-theme/static/js/theme.js | 63 +--- 3 files changed, 43 insertions(+), 318 deletions(-) diff --git a/site/themes/arangodb-docs-theme/layouts/partials/header.html b/site/themes/arangodb-docs-theme/layouts/partials/header.html index e0433bc6c0..d93b37b156 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/header.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/header.html @@ -3,7 +3,7 @@ <!--LOGO--> <div class="header-block-left"> <div class="mobile-menu-toggle"> - <button class="sidebar-toggle-navigation" onclick="showSidebarHandler()"> + <button class="sidebar-toggle-navigation"> <svg width="1.33em" height="1.33em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg> </button> </div> diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index 7ef2bf6964..0f38344848 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -650,14 +650,9 @@ body .page-container { display: flex; } -.sidebar code { - color: var(--gray-100); - background: transparent; - border: 0; - padding: 0; -} -.sidebar > .sidebar-toggle-navigation { +/* +.sidebar-toggle-navigation { position: fixed; bottom: 3vh; left: 0.2vw; @@ -669,14 +664,13 @@ body .page-container { -webkit-justify-content: center; justify-content: center; cursor: pointer; - -webkit-transition: 150ms ease-in-out; background-color: var(--gray-950); z-index: 999; border: 1px solid rgb(106 170 33/0.3); border-radius: 24px; } -.sidebar > .sidebar-toggle-navigation::after { +.sidebar-toggle-navigation::after { font-family: "Font Awesome 5 Free"; content: "\f054"; display: inline-block; @@ -687,29 +681,33 @@ body .page-container { color: var(--gray-100); } -.sidebar.active > .sidebar-toggle-navigation { +.main-nav.active > .sidebar-toggle-navigation { left: 286px; } +*/ @media screen and (max-width: 1024px) { - .sidebar > .sidebar-toggle-navigation, - .sidebar.active > .sidebar-toggle-navigation { + /* + .main-nav > .sidebar-toggle-navigation, + .main-nav.active > .sidebar-toggle-navigation { display: none; } + */ .mobile-menu-toggle { display: block; } } - -.sidebar.active > .sidebar-toggle-navigation::after { +/* +.main-nav.active > .sidebar-toggle-navigation::after { font-family: "Font Awesome 5 Free"; content: "\f053"; } +*/ -@media screen and (min-width: 1025px) { +@media screen and (min-width: 769px) { .mobile-menu-toggle { display: none; } @@ -817,94 +815,27 @@ header .logo { height: 2rem; } -/* */ - -/* -@media screen and (max-width: 768px) { - .version-selector { - border: none; - } -} - -@media screen and (max-width: 768px) { - .arangodb-version { - width: 4rem; - } -} -*/ - /* end Header */ -/* Menu */ -.menu-iframe { - grid-area: sidenav; - display: flex; - align-items: stretch; - position: sticky; - z-index: 2; - top: 4rem; - height: 101vh; - background-color: var(--gray-950); - left: 0; - width: 0; - transition: width 0.3s ease-in-out; - border: none; -} - -.sidebar { - grid-area: sidenav; - display: flex; - align-items: stretch; - position: fixed; - z-index: 9999; - top: 64px; - height: calc(100vh - 64px); - left: 0; - width: 0; - background-color: var(--gray-950); -} - -.sidebar .sidenav-navigation { - opacity: 0; -} -.sidebar.active .sidenav-navigation { - opacity: 1; -} - -.menu-iframe.active, -.sidebar.active { +.main-nav.active { width: 300px; } @media screen and (max-width: 768px) { - .menu-iframe.active, .sidebar.active { + .main-nav-ol { + opacity: 0; + } + + .main-nav.active .main-nav-ol { + opacity: 1; + } + + .main-nav.active { width: 100%; + display: block; } } -.menu-mobile { - display: none; -} - -.sidenav-container-flex { - display: flex; - flex-direction: column; - flex: 1; - overflow: hidden; - position: relative; - z-index: 400; - overflow-y: scroll; - -ms-overflow-style: none; /* IE and Edge */ - scrollbar-width: none; /* Firefox */ -} -.sidenav-container-flex::-webkit-scrollbar { - display: none; -} - -.sidenav-navigation { - overflow: auto; - margin: 0 10px 0 0; -} .content-wrapper { display: flex; @@ -915,151 +846,6 @@ header .logo { position: relative; } -.sidebar a.padding { - padding: 0 1rem; -} - -.sidebar ul { - list-style: none; - padding: 0; - margin: 0; -} - -.sidebar li { - padding: 0; - -} - -.sidebar ul.topics { - margin-bottom: 2rem; - padding: 0.5rem 1rem; -} - -.sidebar ul.topics label { - cursor: pointer; - display: inline; - height: 1rem; - margin: 6px 16px 0 0; - position: absolute; - width: 1rem; - font-size: 13px; - line-height: 1.4rem; - right: 0; -} - -.submenu { - display: none; -} - - -.sidebar ul.topics li.parent > ul, -.sidebar ul.topics li.active > ul, -.sidebar ul.topics li.alwaysopen > ul { - display: block; -} - -.sidebar ul.topics li.active > a { - box-sizing: border-box; - border-radius: 8px; - --tw-bg-opacity: 0.5; - background-color: rgba(255, 255, 255, 0.05); -} - - - -.sidebar ul.topics > li a { - /*font-size: 13px;*/ - line-height: 1.3rem; -} - - -.sidebar ul li a { - padding-left: 1rem; - padding-right: 1rem; - display: flex; - padding: 6px 0; - transition: 0.5s; -} - -.sidebar ul.topics li > a { - display: flex; - padding-left: 1rem; - padding-right: 1rem; - text-overflow: ellipsis; - white-space: break-spaces; - color: var(--gray-100); - margin-bottom: 8px; - font-weight: 400; -} - -.sidebar ul li a.toggle, -.sidebar ul li.leaf a { - margin-right: -0.5rem; - padding-right: 1.5rem; - border-radius: 8px; -} - -.sidebar ul li a:hover { - box-sizing: border-box; - border: 0; - text-decoration: none; - background-color: var(--gray-900); -} - -.sidebar ul.topics > li a::first-line { - line-height: 1rem; -} - -.sect > label.closed::before { - font-family: "Font Awesome 5 Free"; - content: "\f078"; - display: inline-block; - /* padding-right: 3px; */ - vertical-align: middle; - font-weight: 900; - font-size: 10px; - padding-top: 0; - color: var(--gray-300); -} - -.sect > label.open::before { - font-family: "Font Awesome 5 Free"; - content: "\f077"; - display: inline-block; - /* padding-right: 3px; */ - vertical-align: middle; - font-weight: 900; - font-size: 10px; - padding-top: 0; - color: var(--gray-300); -} - -.leaf > a { - align-items: center; - position: relative; -} - - -.menu-title { - pointer-events: none; -} - -.sidebar ul.topics li.parent > a > .menu-title, -.sidebar ul.topics li.active > a > .menu-title, -.sidebar ul.topics li.alwaysopen > a > .menu-title { - font-weight: 400; - color: var(--color-electric-lime); -} - -.sidebar ul li li { - padding-left: 1rem; -} - - -/* end Menu */ - - - /* Main Article */ .container-main { max-width: 100%; @@ -2060,26 +1846,6 @@ nav.pagination .next { color: #130909; } -.sidebar ::-webkit-scrollbar { - width: 10px; -} - -.sidebar ::-webkit-scrollbar-thumb { - background: var(--gray-500); - width: 6px; - border-radius: 20px; -} - -.sidebar ::-webkit-scrollbar-thumb:hover { - background: var(--gray-200); -} - -.sidebar ::-webkit-scrollbar-track { - background: var(--gray-950); -} - - - .DocSearch.DocSearch-Container { z-index: 9999; } @@ -2177,6 +1943,20 @@ nav.pagination .next { scrollbar-width: thin; scrollbar-color: var(--gray-300) var(--gray-100); user-select: none; + z-index: 9999; +} + +.main-nav code { + color: var(--gray-100); + background: transparent; + border: 0; + padding: 0; +} + +@media screen and (max-width: 768px) { + .main-nav { + display: none; + } } .main-nav-ol, diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index ce19b16903..fb38ad128b 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -5,7 +5,7 @@ function closeAllEntries() { } function showSidebarHandler() { - document.querySelectorAll(".sidebar").forEach(el => el.classList.toggle("active")); + document.querySelectorAll(".main-nav").forEach(el => el.classList.toggle("active")); } @@ -355,60 +355,6 @@ function getVersionFromURL() { if (splitUrl[1] == "arangodb") return splitUrl[2]; } - -function setVersionSelector(version) { - for(let option of document.querySelector(".arangodb-version").options) { - if (option.value == version) { - option.selected = true; - } - } -} - -function getCurrentVersion(href) { - if (!stableVersion) return; // Only defined for /arangodb - var newVersion = stableVersion.name - - if (window.location.pathname.split("/").length > 0) { - newVersion = getVersionFromURL(); - if (newVersion !== "arangodb") { - return; - } - if ((href === "" || href === "/") && getVersionInfo(newVersion) == undefined) { - loadNotFoundPage(); - return; - } - } - - localStorage.setItem('docs-version', newVersion); - setVersionSelector(newVersion); -} - - -function changeVersion() { - var versionSelector = document.querySelector(".arangodb-version"); - var newVersion = versionSelector.options[versionSelector.selectedIndex].value; - - try { - localStorage.setItem('docs-version', newVersion); - //renderVersion(); - window.setupDocSearch(newVersion); - } catch(exception) { - console.log({exception}) - changeVersion(); - } - - var currentVersion = getVersionFromURL(); - //var newVersionAlias = getVersionInfo(newVersion).alias; - if (!currentVersion) { - //var newUrl = window.location.pathname = "/" + newVersion + "/"; - var newUrl = "/arangodb/" + newVersion + "/"; - } else { - var newUrl = window.location.pathname.replace(currentVersion, newVersion) + window.location.hash; - } - updateHistory(newUrl); -} - - /* Openapi @@ -667,8 +613,8 @@ function handleDocumentClick(event) { return; } - // Sidebar toggle - if (closest('.sidebar-toggle')) { + // Mobile menu toggle + if (closest('.sidebar-toggle-navigation')) { showSidebarHandler(); return; } @@ -698,8 +644,7 @@ window.onload = () => { var isMobile = window.innerWidth <= 768; if (isMobile) { - document.querySelectorAll('.sidebar').forEach(el => el.classList.add("mobile")); - document.querySelectorAll('.sidebar.mobile').forEach(el => el.classList.remove("active")); + document.querySelectorAll('.main-nav').forEach(el => el.classList.add("mobile", "active")); } //const pageWrapper = document.querySelector('.page-wrapper'); From 0cb14ce2bd26074e70c9d4ef197daf2be02f4d7c Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 6 Nov 2025 15:17:50 +0100 Subject: [PATCH 60/69] Fix version and error handling --- .../arangodb-docs-theme/layouts/404.html | 47 ++++---- .../arangodb-docs-theme/static/js/theme.js | 108 ++++++++++++------ 2 files changed, 98 insertions(+), 57 deletions(-) diff --git a/site/themes/arangodb-docs-theme/layouts/404.html b/site/themes/arangodb-docs-theme/layouts/404.html index a66212f726..d25eda6cfa 100644 --- a/site/themes/arangodb-docs-theme/layouts/404.html +++ b/site/themes/arangodb-docs-theme/layouts/404.html @@ -1,29 +1,26 @@ +{{/* Should match baseof.html but have breadcrumbs, toc, and main block removed */ -}} +{{ partial "shortcodes/version.html" (dict "page" .Page) -}} +{{ $isProduction := eq site.BaseURL "https://docs.arango.ai" -}} <!DOCTYPE html> <html lang="{{ .Page.Language | default "en" }}"> - - <head> - {{- partialCached "stylesheet.html" . }} - {{- partial "meta.html" . }} - {{- partialCached "favicon.html" . }} - {{- partialCached "javascript.html" . }} - </head> - -<body> + {{ partial "head.html" . -}} + <body> + {{ if $isProduction }}{{ partialCached "tracking/body-start.html" . }}{{ end -}} <noscript>You need to enable JavaScript to use the Arango documentation.</noscript> - <div class="page-wrapper page_content_splash" style="height: auto;opacity: 1;"> - <section class="page-main"> - <section class="page-container"> - {{ partialCached "header.html" . }} - <iframe src="/nav.html" title="description" class="menu-iframe active" style="opacity: 0;"></iframe> - - - <div class="container-main"> - <div class="row-main"> - </div> - </main><!-- #body-inner --> - </div><!-- #body --> - {{- partialCached "back-to-top.html" . }} - {{ partialCached "search.html" . }} - </body> -</html> + <div class="page-wrapper page_content_splash" style="height: auto; opacity: 1;"> + <section class="page-main"> + <section class="page-container"> + {{ partialCached "header.html" . -}} + <nav class="main-nav" aria-label="Main"></nav> + <div class="container-main"> + <div class="row-main"></div> + </div> + </section> + </section> + </div> + {{ partialCached "back-to-top.html" . -}} + {{ partialCached "search.html" . -}} + {{ if $isProduction }}{{ partialCached "tracking/body-end.html" . }}{{ end -}} + </body> +</html> \ No newline at end of file diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index fb38ad128b..664d795818 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -92,6 +92,10 @@ function loadPage(target) { fetch(href) .then(response => { + if (!response.ok) { + // Handle 404 and other HTTP errors + throw new Error(`HTTP ${response.status}: ${response.statusText}`); + } if (response.url && href.replace(/#.*/, "") !== response.url) { updateHistory(response.url.replace(version, getVersionFromURL())); return; @@ -112,7 +116,8 @@ function loadPage(target) { return true; }) .catch(error => { - loadNotFoundPage(href) + console.error('Error loading page:', error); + loadNotFoundPage(href); }); } @@ -120,6 +125,17 @@ function getSelectedVersion() { const version = getVersionFromURL(); if (version) return version; return localStorage.getItem("docs-version") ?? "stable"; + + /* + const storedVersion = localStorage.getItem("docs-version"); + let alias = "stable"; + if (version) { + alias = getVersionInfo(version).alias; + } else if (storedVersion) { + alias = getVersionInfo(storedVersion).alias; + } + return alias; + */ } function updateActiveNavItem(pathname) { @@ -139,35 +155,58 @@ function updateActiveNavItem(pathname) { } async function loadNav() { - const res = await fetch("/nav.html"); - if (!res.ok) { - throw new Error("Failed to fetch navigation"); + const mainNavPlaceholder = document.querySelector(".main-nav"); + if (!mainNavPlaceholder) { + console.error("Main navigation placeholder not found"); + return; } - const text = await res.text(); - const doc = new DOMParser().parseFromString(text, "text/html"); - const mainNavContent = doc.querySelector(".main-nav-ol"); - // TODO: Support multiple versions - const selectedVersion = getSelectedVersion(); - const versionSelector = mainNavContent.querySelector(".version-selector"); - if (versionSelector && versionSelector.querySelector(`option[value="${selectedVersion}"]`)) { - versionSelector.value = selectedVersion; + + try { + const res = await fetch(window.location.origin + "/nav.html"); + if (!res.ok) { + mainNavPlaceholder.textContent = "Failed to fetch navigation"; + return; + } + const text = await res.text(); + const doc = new DOMParser().parseFromString(text, "text/html"); + + const mainNavContent = doc.querySelector(".main-nav-ol"); + if (!mainNavContent) { + mainNavPlaceholder.textContent = "Failed to find navigation content"; + return; + } + + // TODO: Support multiple versions + const selectedVersion = getSelectedVersion(); + const versionInfo = getVersionInfo(selectedVersion); + if (!versionInfo) { + console.log("Selected version not found in version info"); + } + const selectedVersionAlias = versionInfo.alias; + const versionSelector = mainNavContent.querySelector(".version-selector"); + if (versionSelector && versionSelector.querySelector(`option[value="${selectedVersionAlias}"]`)) { + versionSelector.value = selectedVersionAlias; + + versionSelector.parentElement.querySelectorAll(":scope > .nav-ol").forEach(navList => { + if (navList.dataset.version == selectedVersion) { + navList.classList.add("selected-version"); + } else { + navList.classList.remove("selected-version"); + } + }); + } else { + console.log("Selected/stored version not available in version selector"); + } + + mainNavPlaceholder.appendChild(mainNavContent); - versionSelector.parentElement.querySelectorAll(":scope > .nav-ol").forEach(navList => { - if (navList.dataset.version == selectedVersion) { - navList.classList.add("selected-version"); - } else { - navList.classList.remove("selected-version"); - } - }); - } else { - throw new Error("Stored version not available in version selector"); + // Set initial active state + updateActiveNavItem(window.location.pathname); + } catch (error) { + console.error("Error loading navigation:", error); + mainNavPlaceholder.textContent = "Failed to load navigation"; } - - const mainNavPlaceholder = document.querySelector(".main-nav"); - mainNavPlaceholder.appendChild(mainNavContent); - - // Set initial active state - updateActiveNavItem(window.location.pathname); + return true; } function trackPageView(title, urlPath) { @@ -461,12 +500,12 @@ function linkToVersionedContent() { const originalUrl = el.getAttribute("href"); const matches = originalUrl.match(/^\/arangodb\/(.+?)(\/.*)/); const previousVersion = localStorage.getItem('docs-version') ?? "stable"; - if (matches && matches.length > 2 && previousVersion) { + if (matches && matches.length > 2 && previousVersion) { const newUrl = "/arangodb/" + previousVersion + matches[2]; console.log("linkToVersionedContent: " + originalUrl + " -> " + newUrl); el.setAttribute("href", newUrl); - } - }); + } + }); } } @@ -477,6 +516,8 @@ function handleDocumentChange(event) { const currentPath = window.location.pathname; //const versionedPath = target.dataset.path; + window.setupDocSearch(selectedVersion); + localStorage.setItem('docs-version', selectedVersion); // TODO: handle multiple target.closest(".nav-section").querySelectorAll(":scope > .nav-ol").forEach( el => { @@ -622,12 +663,15 @@ function handleDocumentClick(event) { window.onload = () => { - loadNav(); + loadNav().catch(err => console.error("Failed to initialize navigation:", err)); window.history.pushState("popstate", "Arango Documentation", window.location.href); trackPageView(document.title, window.location.pathname); - getCurrentVersion(window.location.href); + const currentVersion = getVersionFromURL(); + if (currentVersion) { + localStorage.setItem('docs-version', currentVersion); + } loadPage(window.location.href) From 8fded54ded38fe903d16128cdcc62e6c342af08b Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 6 Nov 2025 15:47:26 +0100 Subject: [PATCH 61/69] Hide mobile navigation on click --- site/themes/arangodb-docs-theme/static/js/theme.js | 1 + 1 file changed, 1 insertion(+) diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index 664d795818..06e379375a 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -557,6 +557,7 @@ function handleDocumentClick(event) { // Menu link clicks if (target.classList.contains("link-nav")) { event.preventDefault(); + target.closest(".main-nav").classList.remove("active"); document.querySelectorAll(".link-nav-active").forEach(el => el.classList.remove("link-nav-active")); target.classList.add("link-nav-active"); closeAllEntries(); From 7d5c4287d376c356580879fcd727ef73de77c602 Mon Sep 17 00:00:00 2001 From: Paula Mihu <97217318+nerpaula@users.noreply.github.com> Date: Thu, 6 Nov 2025 16:21:22 +0100 Subject: [PATCH 62/69] Data Platform & AI Suite | October release notes (#824) * add release notes * Review --------- Co-authored-by: Simran Spiller <simran@arangodb.com> --- site/content/ai-suite/release-notes.md | 69 +++++++++++++ site/content/data-platform/release-notes.md | 101 +++++++++++++++----- 2 files changed, 148 insertions(+), 22 deletions(-) create mode 100644 site/content/ai-suite/release-notes.md diff --git a/site/content/ai-suite/release-notes.md b/site/content/ai-suite/release-notes.md new file mode 100644 index 0000000000..429b7dc4d3 --- /dev/null +++ b/site/content/ai-suite/release-notes.md @@ -0,0 +1,69 @@ +--- +title: What's new in the AI Suite +menuTitle: Release notes +weight: 100 +description: >- + Features and improvements in the AI Suite of the Arango Data Platform +--- +{{< tip >}} +The AI Suite is available as a pre-release. To get exclusive early access, +[get in touch](https://arango.ai/contact-us/) with the Arango team. +{{< /tip >}} + +## October 2024 (pre-release) + +This release introduces new features and enhancements to the AI Suite components. +See also the [Arango Data Platform Release Notes](../data-platform/release-notes.md). + +### GraphRAG enhancements + +- **Instant and Deep Search**: New [Retriever](reference/retriever.md#search-methods) search methods + optimized for different use cases. Instant Search provides fast responses with + streaming support. Deep Search offers detailed, accurate responses for complex queries + requiring high accuracy. Both methods are accessible via the API or the + [GraphRAG web interface](graphrag/web-interface.md#chat-with-your-knowledge-graph). + +- **Update Knowledge Graphs**: [Add additional data sources](graphrag/web-interface.md#update-the-knowledge-graph) + to existing Knowledge Graphs through the web interface. Upload new files to + automatically update the Knowledge Graph and underlying collections with new data. + +- **Unified LLM provider configuration**: Simplified deployment configuration using + OpenAI-compatible APIs. Mix and match providers for chat and embeddings (e.g., + use OpenRouter for chat and OpenAI for embeddings). Support for OpenAI, OpenRouter, + Gemini, Anthropic, and any self-hosted LLM with OpenAI-compatible endpoints. + +### AQLizer + +The [Natural Language to AQL Translation Service](reference/natural-language-to-aql.md) +enables you to query your ArangoDB database using natural language or get +LLM-powered answers to general questions. + +You can generate AQL queries from natural language directly in the Query Editor using the +[AQLizer](aqlizer.md) mode. More advanced features are available via the API. + +## July 2024 (pre-release) + +This release marks the initial internal launch of the AI Suite with the following +components. For Data Platform features in this release, see +[Arango Data Platform Release Notes](../data-platform/release-notes.md). + +- **[GraphRAG](graphrag/_index.md)**: Transform unstructured documents into + intelligent knowledge graphs and natural language querying through Importer + and Retriever services. + +- **[GraphML](graphml/_index.md)**: Apply machine learning to graphs with node + classification and embedding generation, built on GraphSAGE framework. + +- **[Graph Analytics](graph-analytics.md)**: Run algorithms like PageRank, + Connected Components, and more. + +- **[Jupyter Notebooks](notebook-servers.md)**: Launch integrated Jupyter + notebook servers with pre-installed ArangoDB drivers and data science libraries + for interactive experimentation. + +- **[MLflow Integration](reference/mlflow.md)**: Use MLflow as a model registry + for private LLMs and machine learning experiment tracking. + +- **[Triton Inference Server](reference/triton-inference-server.md)**: Host + private Large Language Models using NVIDIA Triton Inference Server for secure, + on-premises AI capabilities. diff --git a/site/content/data-platform/release-notes.md b/site/content/data-platform/release-notes.md index cc3c53b7a2..2dd38f8f65 100644 --- a/site/content/data-platform/release-notes.md +++ b/site/content/data-platform/release-notes.md @@ -6,34 +6,91 @@ description: >- Features and improvements in the Arango Data Platform --- {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get -exclusive early access, [get in touch](https://arango.ai/contact-us/) with -the Arango team. +The Arango Data Platform is available as a pre-release. To get exclusive early access, +[get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} -## Arango Data Platform +## October 2024 (pre-release) -<small>Introduced in: v3.12.5</small> +<small>ArangoDB Enterprise Edition: v3.12.6</small> -The Arango Data Platform is a scalable architecture that offers you all features -of the core ArangoDB database system along with graph-powered machine learning -and AI capabilities as a single solution with a unified interface. Deploy the -Platform on-premise or in the cloud on top of Kubernetes. +This release includes new features and enhancements for the Data Platform web +interface, running with ArangoDB Enterprise Edition v3.12.6. For AI Suite updates +in this release, see [AI Suite Release Notes](../ai-suite/release-notes.md). -To get started, see [Self-host the Arango Data Platform](./get-started.md#self-host-the-arango-data-platform). +### Query Editor -### AI Suite +A new [Query Editor](query-editor.md) has been integrated into the +Arango Data Platform web interface for writing, executing, and managing AQL queries. -The Arango AI Data Platform features dedicated AI and data science services, built upon -the powerful ArangoDB database core. +Key features: -The AI Suite consists of the following components, each featuring an intuitive, -user-friendly interface seamlessly integrated into the Arango Data Platform web interface: -- GraphRAG -- GraphML -- Jupyter Notebooks -- MLflow integration -- Graph Visualizer +- **Tabbed interface**: Work on multiple queries concurrently with side-by-side + query and results views. +- **Query operations**: Run, explain, and profile queries with dedicated buttons + and result history tracking. +- **Saved queries**: Save and share frequently used queries with all users in the + database, persisted across sessions. +- **Query monitoring**: View running queries and slow query logs, with the ability + to kill long-running operations. +- **Flexible viewport**: Drag and drop tabs to reorganize panels horizontally or + vertically. -To learn more, see [AI Suite](../ai-suite/_index.md) -documentation. +### Graph Visualizer enhancements + +The [Graph Visualizer](graph-visualizer.md) has been significantly enhanced with +new visual customization capabilities, improved navigation features, and better +performance for exploring large-scale graphs. + +Key improvements: + +- **Icon assignment**: Assign pictograms to node collections for quick visual + identification of entity types on the canvas. +- **Theme support**: Create and manage multiple themes to highlight different + aspects of graph data, with default themes that automatically color different + collections on the canvas. +- **Shortest path**: Find and visualize the shortest path between two selected + nodes directly on the canvas. +- **Enhanced tooltips**: Hover over nodes and edges to view document IDs and + customizable additional attributes without opening the full properties dialog. +- **Bulk selection**: Select all nodes or edges of a specific type (collection) + from the Legend panel, showing the count of elements per collection. +- **Edge properties view**: View and edit edge properties through a dedicated + properties dialog with Form and JSON editing modes. +- **Attribute-based styling**: Define conditional styling rules based on document + attributes to dynamically color and style nodes and edges (e.g., apply colors + based on genre or other field values). +- **Performance improvements**: Optimized rendering for large graphs with + millions of nodes and edges. + +## July 2024 (pre-release) + +<small>ArangoDB Enterprise Edition: v3.12.5</small> + +This release marks the initial internal launch of the Arango Data Platform, running with +ArangoDB Enterprise Edition v3.12.5. For AI Suite features in this release, see +[AI Suite Release Notes](../ai-suite/release-notes.md). + +### Arango Data Platform + +The Arango Data Platform is a Kubernetes-native technical infrastructure that +brings together the entire ArangoDB offering into a unified solution. +See [Get Started with the Arango Data Platform](get-started.md). + +What's included: + +- **ArangoDB Enterprise Edition**: Multi-model database foundation supporting + graphs, documents, key-value, vector search, and full-text search capabilities. +- **Graph Visualizer**: Sophisticated web-based interface for interactive graph + exploration, visual customization, and direct graph editing. +- **Arango Platform Suite**: Enterprise-grade features including high availability + and monitoring, comprehensive APIs and connectors, and centralized orchestration + and resource management. +- **Kubernetes orchestration**: Powered by the official ArangoDB Kubernetes + Operator for automated deployment, scaling, and management. +- **Unified web interface**: Single interface for accessing all Platform services + and components. + +The Platform can be extended with the [AI Suite](../ai-suite/_index.md) for +advanced capabilities like GraphRAG, GraphML, Graph Analytics, AQLizer, and more +(requires separate license). From f7f8be04c230c19240d5e90951f7a2ef13b71375 Mon Sep 17 00:00:00 2001 From: Paula Mihu <97217318+nerpaula@users.noreply.github.com> Date: Thu, 6 Nov 2025 16:38:47 +0100 Subject: [PATCH 63/69] DOC-815 | MCP Server (#820) * add initial content for MCP server * remove installation content and just link to docker hub --- site/content/ecosystem/arangodb-mcp-server.md | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 site/content/ecosystem/arangodb-mcp-server.md diff --git a/site/content/ecosystem/arangodb-mcp-server.md b/site/content/ecosystem/arangodb-mcp-server.md new file mode 100644 index 0000000000..75465b0da1 --- /dev/null +++ b/site/content/ecosystem/arangodb-mcp-server.md @@ -0,0 +1,143 @@ +--- +title: ArangoDB Model Context Protocol (MCP) Server +menuTitle: MCP Server +weight: 10 +description: >- + A Model Context Protocol server for generating and executing AQL queries using AI assistants like Claude and Cursor IDE +--- +The ArangoDB MCP Server is a focused [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) implementation that enables AI assistants to generate and execute AQL queries based on natural language questions. It includes lightweight schema discovery and manuals to ground queries in actual database structure. + +## Features + +**AQL Generation & Execution:** +- Generate AQL grounded in actual database structure +- Execute AQL with optional bind variables and target database + +**Manuals for Guidance:** +- AQL reference and optimization guides built-in +- Context-aware query generation + +**Lightweight Schema Discovery:** +- List collections within accessible databases +- Sample documents via simple filters to learn fields + +## What You Can Do + +The server is purpose-built for safe, read-focused AQL operations: +- Execute AQL queries with optional bind variables and target database +- Access built-in manuals for syntax and optimization guidance +- Discover database schemas and collection structures +- Sample documents to understand field structures + +The following are not included: +- Graph/view/index/analyzer management tools +- Destructive admin operations (create/delete databases or collections) + +## Installation + +The ArangoDB MCP Server is available as a Docker image on Docker Hub: [arangodb/mcp-arangodb](https://hub.docker.com/r/arangodb/mcp-arangodb) + +See the Docker Hub page for installation and usage instructions. + +## Available Tools + +The MCP server exposes four main tools that AI assistants can use to interact with your ArangoDB database. + +### `get-aql-manual` + +Retrieves built-in documentation for AQL syntax and optimization. + +**Parameters:** +- `manual_name` (required): Either `aql_ref` or `optimization`. + +**Use when:** You need reference documentation for writing AQL queries. + +### `fetch-schemas` + +Lists all collections in a database (non-system collections only). + +**Parameters:** +- `database_name` (optional): Target database. Uses configured default if not specified. + +**Use when:** You need to discover what collections exist in your database. + +### `read-documents-with-filter` + +Samples documents from a collection using simple equality filters. + +**Parameters:** +- `collection_name` (required): Name of the collection to query. +- `filters` (required): Filter conditions as key-value pairs. +- `limit` (optional, default: 100): Maximum documents to return. +- `skip` (optional, default: 0): Number of documents to skip (pagination). + +**Use when:** You want to explore document structure or find specific documents by exact field matches. + +### `execute-aql-query` + +Executes AQL queries with optional bind variables. + +**Parameters:** +- `aql_query` (required): The AQL query to execute. +- `bind_vars` (optional): Bind variables for parameterized queries. +- `database_name` (optional): Target database. + +**Use when:** You need to run complex queries, aggregations, or graph traversals. + +## Workflow + +When working with the MCP server, AI assistants typically follow this pattern: + +1. **Discover**: Call `fetch-schemas()` to understand available collections. +2. **Explore**: Use `read-documents-with-filter()` to see document structures. +3. **Reference**: Call `get-aql-manual()` if complex query syntax is needed. +4. **Execute**: Run queries with `execute-aql-query()` using bind variables for safety. + +## Practical Examples + +**Example 1: Exploring Your Database** + +*Prompt:* "Show me all collections in the database" + +The AI will call `fetch-schemas()` and display the available collections with their types and document counts. + +**Example 2: Finding Specific Records** + +*Prompt:* "Find all active users who are verified" + +The AI will: +1. Confirm the `users` collection exists with `fetch-schemas()` +2. Sample the structure with `read-documents-with-filter()` +3. Generate and execute an AQL query: + ```aql + FOR user IN users + FILTER user.status == "active" AND user.verified == true + RETURN user + ``` + +**Example 3: Complex Graph Traversal** + +*Prompt:* "Find all friends of friends for user 'john' up to 3 levels deep" + +The AI will: +1. Retrieve the AQL reference manual for graph traversal syntax +2. Identify edge collections using `fetch-schemas()` +3. Generate an optimized graph query: + ```aql + FOR v, e, p IN 1..3 OUTBOUND 'users/john' friends + RETURN DISTINCT v + ``` +4. Execute with appropriate bind variables for safety + +**Example 4: Data Analysis** + +*Prompt:* "What's the average age of users by country?" + +The AI will generate and execute an aggregation query: +```aql +FOR user IN users +COLLECT country = user.address.country +AGGREGATE avgAge = AVG(user.age) +RETURN { country, avgAge } +``` + From 97d035c16dbe9b9d69aef5705f5bc1a0dec71c0d Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 6 Nov 2025 17:18:54 +0100 Subject: [PATCH 64/69] Leave the navigation closed by default on mobile --- site/themes/arangodb-docs-theme/static/js/theme.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index 06e379375a..def35481ca 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -689,7 +689,7 @@ window.onload = () => { var isMobile = window.innerWidth <= 768; if (isMobile) { - document.querySelectorAll('.main-nav').forEach(el => el.classList.add("mobile", "active")); + document.querySelectorAll('.main-nav').forEach(el => el.classList.add("mobile")); } //const pageWrapper = document.querySelector('.page-wrapper'); From 2b8184230c61f79913ec14a893d092229fa85e54 Mon Sep 17 00:00:00 2001 From: Simran <Simran-B@users.noreply.github.com> Date: Thu, 6 Nov 2025 17:31:04 +0100 Subject: [PATCH 65/69] Restructuring and version for Data Platform (#823) * Data Platform is version 3 * Rename AQL > Graphs to AQL > Graph queries * Change Data Platform version to "v3.0" * Rename index-and-search -> indexes-and-search * Move arango-datasets to Ecosystem * Different admonitions for Data Platform and AI Suite * Rename 3.13 to 4.0 --- .circleci/config.yml | 4 +- PULL_REQUEST_TEMPLATE.md | 2 +- site/config/_default/config.yaml | 4 +- site/content/_index.md | 2 +- site/content/ai-suite/_index.md | 10 ++- site/content/ai-suite/graphml/_index.md | 2 +- .../content/ai-suite/graphml/notebooks-api.md | 2 +- site/content/ai-suite/graphrag/_index.md | 2 +- .../ai-suite/graphrag/technical-overview.md | 3 +- .../ai-suite/graphrag/tutorial-notebook.md | 2 +- .../ai-suite/graphrag/web-interface.md | 2 +- site/content/ai-suite/notebook-servers.md | 2 +- site/content/ai-suite/reference/gen-ai.md | 2 +- site/content/ai-suite/reference/importer.md | 2 +- site/content/ai-suite/reference/mlflow.md | 2 +- site/content/ai-suite/reference/retriever.md | 2 +- .../reference/triton-inference-server.md | 2 +- .../reference-version-3/_index.md | 2 +- .../3.11/about/features/community-edition.md | 28 ++++----- .../3.11/about/features/enterprise-edition.md | 10 +-- .../about/features/highlights-by-version.md | 52 ++++++++-------- site/content/arangodb/3.11/about/use-cases.md | 2 +- .../aql/examples-and-query-patterns/joins.md | 2 +- .../examples-and-query-patterns/traversals.md | 2 +- .../3.11/aql/functions/arangosearch.md | 24 +++---- .../arangodb/3.11/aql/functions/date.md | 4 +- .../arangodb/3.11/aql/functions/fulltext.md | 6 +- .../arangodb/3.11/aql/functions/geo.md | 16 ++--- .../arangodb/3.11/aql/functions/string.md | 4 +- .../3.11/aql/fundamentals/limitations.md | 2 +- .../arangodb/3.11/aql/fundamentals/syntax.md | 16 ++--- .../aql/{graphs => graph-queries}/_index.md | 4 +- .../all-shortest-paths.md | 0 .../aql/{graphs => graph-queries}/k-paths.md | 0 .../k-shortest-paths.md | 0 .../shortest-path.md | 0 .../traversals-explained.md | 0 .../{graphs => graph-queries}/traversals.md | 0 .../3.11/aql/high-level-operations/for.md | 8 +-- .../3.11/aql/high-level-operations/search.md | 22 +++---- .../3.11/aql/high-level-operations/with.md | 2 +- site/content/arangodb/3.11/aql/operators.md | 4 +- .../arangodb-server/environment-variables.md | 2 +- .../arangodb/3.11/components/tools/_index.md | 2 +- .../3.11/components/tools/arango-datasets.md | 62 ------------------- .../arangodb/3.11/concepts/data-retrieval.md | 6 +- .../3.11/concepts/data-structure/views.md | 10 +-- .../arangodb/3.11/data-science/_index.md | 4 +- .../arangographml/getting-started.md | 4 +- .../3.11/data-science/pregel/_index.md | 2 +- .../3.11/develop/http-api/analyzers.md | 2 +- .../http-api/views/arangosearch-views.md | 16 ++--- .../integrations/spring-boot-arangodb.md | 2 +- .../reference-version-3/_index.md | 2 +- .../reference-version-3/mapping/indexes.md | 2 +- .../reference-version-4/mapping/indexes.md | 2 +- .../@arangodb/collection-object.md | 10 +-- .../javascript-api/@arangodb/db-object.md | 8 +-- .../javascript-api/@arangodb/view-object.md | 4 +- .../3.11/develop/javascript-api/analyzers.md | 2 +- .../3.11/develop/operational-factors.md | 4 +- .../3.11/get-started/start-using-aql/geo.md | 2 +- .../get-started/start-using-aql/graphs.md | 6 +- site/content/arangodb/3.11/graphs/_index.md | 12 ++-- .../3.11/graphs/enterprisegraphs/_index.md | 2 +- .../arangodb/3.11/graphs/example-graphs.md | 6 +- .../3.11/graphs/smartgraphs/_index.md | 2 +- .../arangodb/3.11/index-and-search/_index.md | 6 -- .../3.11/indexes-and-search/_index.md | 6 ++ .../analyzers.md | 0 .../arangosearch/_index.md | 0 .../arangosearch-views-reference.md | 0 .../case-sensitivity-and-diacritics.md | 0 .../arangosearch/exact-value-matching.md | 0 .../arangosearch/example-datasets.md | 0 .../arangosearch/faceted-search.md | 0 .../arangosearch/full-text-token-search.md | 0 .../arangosearch/fuzzy-search.md | 0 .../arangosearch/geospatial-search.md | 0 .../arangosearch/nested-search.md | 0 .../arangosearch/performance.md | 0 .../phrase-and-proximity-search.md | 0 .../arangosearch/prefix-matching.md | 0 .../arangosearch/range-queries.md | 0 .../arangosearch/ranking.md | 0 .../search-alias-views-reference.md | 0 .../arangosearch/search-highlighting.md | 0 .../arangosearch/wildcard-search.md | 0 .../indexing/_index.md | 0 .../indexing/basics.md | 0 .../indexing/index-utilization.md | 0 .../indexing/which-index-to-use-when.md | 0 .../indexing/working-with-indexes/_index.md | 0 .../working-with-indexes/fulltext-indexes.md | 0 .../geo-spatial-indexes.md | 0 .../working-with-indexes/inverted-indexes.md | 0 .../multi-dimensional-indexes.md | 0 .../persistent-indexes.md | 0 .../working-with-indexes/ttl-indexes.md | 0 .../vertex-centric-indexes.md | 0 .../deprecated-and-removed-features.md | 6 +- .../incompatible-changes-in-3-0.md | 2 +- .../version-3.10/api-changes-in-3-10.md | 14 ++--- .../incompatible-changes-in-3-10.md | 10 +-- .../version-3.10/whats-new-in-3-10.md | 42 ++++++------- .../version-3.11/api-changes-in-3-11.md | 4 +- .../version-3.11/whats-new-in-3-11.md | 14 ++--- .../version-3.4/whats-new-in-3-4.md | 2 +- .../version-3.5/whats-new-in-3-5.md | 12 ++-- .../version-3.6/whats-new-in-3-6.md | 4 +- .../version-3.7/whats-new-in-3-7.md | 10 +-- .../version-3.8/whats-new-in-3-8.md | 14 ++--- .../version-3.9/api-changes-in-3-9.md | 2 +- .../version-3.9/whats-new-in-3-9.md | 12 ++-- .../aql/examples-and-query-patterns/joins.md | 4 +- .../examples-and-query-patterns/traversals.md | 2 +- .../3.12/aql/functions/arangosearch.md | 24 +++---- .../arangodb/3.12/aql/functions/date.md | 4 +- .../arangodb/3.12/aql/functions/fulltext.md | 6 +- .../arangodb/3.12/aql/functions/geo.md | 16 ++--- .../arangodb/3.12/aql/functions/string.md | 4 +- .../arangodb/3.12/aql/functions/vector.md | 2 +- .../3.12/aql/fundamentals/limitations.md | 2 +- .../arangodb/3.12/aql/fundamentals/syntax.md | 20 +++--- .../aql/graph-queries}/_index.md | 4 +- .../all-shortest-paths.md | 0 .../aql/{graphs => graph-queries}/k-paths.md | 0 .../k-shortest-paths.md | 0 .../shortest-path.md | 0 .../traversals-explained.md | 0 .../{graphs => graph-queries}/traversals.md | 2 +- .../3.12/aql/high-level-operations/for.md | 8 +-- .../3.12/aql/high-level-operations/search.md | 22 +++---- .../3.12/aql/high-level-operations/with.md | 2 +- site/content/arangodb/3.12/aql/operators.md | 4 +- .../arangodb-server/environment-variables.md | 2 +- .../arangodb/3.12/components/tools/_index.md | 2 +- .../arangodb/3.12/concepts/data-retrieval.md | 6 +- .../3.12/concepts/data-structure/views.md | 10 +-- .../3.12/develop/http-api/analyzers.md | 2 +- .../http-api/views/arangosearch-views.md | 16 ++--- .../@arangodb/collection-object.md | 10 +-- .../javascript-api/@arangodb/db-object.md | 8 +-- .../javascript-api/@arangodb/view-object.md | 4 +- .../3.12/develop/javascript-api/analyzers.md | 2 +- .../3.12/develop/operational-factors.md | 4 +- .../3.12/features/highlights-by-version.md | 58 ++++++++--------- site/content/arangodb/3.12/features/list.md | 42 ++++++------- .../3.12/get-started/start-using-aql/geo.md | 2 +- .../get-started/start-using-aql/graphs.md | 6 +- site/content/arangodb/3.12/graphs/_index.md | 12 ++-- .../3.12/graphs/enterprisegraphs/_index.md | 2 +- .../arangodb/3.12/graphs/example-graphs.md | 6 +- .../3.12/graphs/smartgraphs/_index.md | 2 +- .../arangodb/3.12/index-and-search/_index.md | 6 -- .../3.12/indexes-and-search/_index.md | 6 ++ .../analyzers.md | 0 .../arangosearch/_index.md | 0 .../arangosearch-views-reference.md | 0 .../case-sensitivity-and-diacritics.md | 0 .../arangosearch/exact-value-matching.md | 0 .../arangosearch/example-datasets.md | 0 .../arangosearch/faceted-search.md | 0 .../arangosearch/full-text-token-search.md | 0 .../arangosearch/fuzzy-search.md | 0 .../arangosearch/geospatial-search.md | 0 .../arangosearch/nested-search.md | 0 .../arangosearch/performance.md | 0 .../phrase-and-proximity-search.md | 0 .../arangosearch/prefix-matching.md | 0 .../arangosearch/range-queries.md | 0 .../arangosearch/ranking.md | 0 .../search-alias-views-reference.md | 0 .../arangosearch/search-highlighting.md | 0 .../arangosearch/wildcard-search.md | 0 .../indexing/_index.md | 0 .../indexing/basics.md | 0 .../indexing/index-utilization.md | 0 .../indexing/which-index-to-use-when.md | 0 .../indexing/working-with-indexes/_index.md | 0 .../working-with-indexes/fulltext-indexes.md | 0 .../geo-spatial-indexes.md | 0 .../working-with-indexes/inverted-indexes.md | 0 .../multi-dimensional-indexes.md | 0 .../persistent-indexes.md | 0 .../working-with-indexes/ttl-indexes.md | 0 .../working-with-indexes/vector-indexes.md | 0 .../vertex-centric-indexes.md | 0 .../deprecated-and-removed-features.md | 8 +-- .../incompatible-changes-in-3-0.md | 2 +- .../version-3.10/api-changes-in-3-10.md | 14 ++--- .../incompatible-changes-in-3-10.md | 10 +-- .../version-3.10/whats-new-in-3-10.md | 42 ++++++------- .../version-3.11/api-changes-in-3-11.md | 4 +- .../version-3.11/whats-new-in-3-11.md | 14 ++--- .../version-3.12/api-changes-in-3-12.md | 8 +-- .../incompatible-changes-in-3-12.md | 6 +- .../version-3.12/whats-new-in-3-12.md | 28 ++++----- .../version-3.4/whats-new-in-3-4.md | 2 +- .../version-3.5/whats-new-in-3-5.md | 12 ++-- .../version-3.6/whats-new-in-3-6.md | 4 +- .../version-3.7/whats-new-in-3-7.md | 10 +-- .../version-3.8/whats-new-in-3-8.md | 14 ++--- .../version-3.9/api-changes-in-3-9.md | 2 +- .../version-3.9/whats-new-in-3-9.md | 12 ++-- site/content/arangodb/3.12/use-cases.md | 2 +- .../3.13/components/tools/arango-datasets.md | 62 ------------------- .../arangodb/3.13/index-and-search/_index.md | 6 -- .../3.13/release-notes/version-3.13/_index.md | 6 -- site/content/arangodb/{3.13 => 4.0}/_index.md | 2 +- .../arangodb/{3.13 => 4.0}/aql/_index.md | 0 .../{3.13 => 4.0}/aql/common-errors.md | 0 .../{3.13 => 4.0}/aql/data-queries.md | 0 .../aql/examples-and-query-patterns/_index.md | 0 .../actors-and-movies-dataset-queries.md | 0 .../examples-and-query-patterns/counting.md | 0 .../create-test-data.md | 0 .../diffing-two-documents.md | 0 .../dynamic-attribute-names.md | 0 .../examples-and-query-patterns/grouping.md | 0 .../aql/examples-and-query-patterns/joins.md | 4 +- .../projections-and-filters.md | 0 .../queries-without-collections.md | 0 .../remove-nodes.md | 0 .../examples-and-query-patterns/traversals.md | 2 +- .../upsert-repsert-guide.md | 0 .../aql/execution-and-performance/_index.md | 0 .../caching-query-plans.md | 0 .../caching-query-results.md | 0 .../explaining-queries.md | 0 .../parsing-queries.md | 0 .../query-logging.md | 0 .../query-optimization.md | 0 .../query-profiling.md | 0 .../query-statistics.md | 0 .../{3.13 => 4.0}/aql/functions/_index.md | 0 .../aql/functions/arangosearch.md | 28 ++++----- .../{3.13 => 4.0}/aql/functions/array.md | 0 .../{3.13 => 4.0}/aql/functions/bit.md | 0 .../{3.13 => 4.0}/aql/functions/date.md | 4 +- .../aql/functions/document-object.md | 0 .../{3.13 => 4.0}/aql/functions/fulltext.md | 6 +- .../{3.13 => 4.0}/aql/functions/geo.md | 16 ++--- .../aql/functions/miscellaneous.md | 0 .../{3.13 => 4.0}/aql/functions/numeric.md | 0 .../{3.13 => 4.0}/aql/functions/string.md | 4 +- .../aql/functions/type-check-and-cast.md | 0 .../{3.13 => 4.0}/aql/functions/vector.md | 2 +- .../{3.13 => 4.0}/aql/fundamentals/_index.md | 0 .../accessing-data-from-collections.md | 0 .../aql/fundamentals/bind-parameters.md | 0 .../aql/fundamentals/data-types.md | 0 .../aql/fundamentals/limitations.md | 2 +- .../aql/fundamentals/query-errors.md | 0 .../aql/fundamentals/query-results.md | 0 .../aql/fundamentals/subqueries.md | 0 .../{3.13 => 4.0}/aql/fundamentals/syntax.md | 20 +++--- .../aql/fundamentals/type-and-value-order.md | 0 .../aql/graph-queries}/_index.md | 4 +- .../aql/graph-queries}/all-shortest-paths.md | 0 .../aql/graph-queries}/k-paths.md | 0 .../aql/graph-queries}/k-shortest-paths.md | 0 .../aql/graph-queries}/shortest-path.md | 0 .../graph-queries}/traversals-explained.md | 0 .../aql/graph-queries}/traversals.md | 2 +- .../aql/high-level-operations/_index.md | 0 .../aql/high-level-operations/collect.md | 0 .../aql/high-level-operations/filter.md | 0 .../aql/high-level-operations/for.md | 8 +-- .../aql/high-level-operations/insert.md | 0 .../aql/high-level-operations/let.md | 0 .../aql/high-level-operations/limit.md | 0 .../aql/high-level-operations/remove.md | 0 .../aql/high-level-operations/replace.md | 0 .../aql/high-level-operations/return.md | 0 .../aql/high-level-operations/search.md | 24 +++---- .../aql/high-level-operations/sort.md | 0 .../aql/high-level-operations/update.md | 0 .../aql/high-level-operations/upsert.md | 0 .../aql/high-level-operations/window.md | 0 .../aql/high-level-operations/with.md | 2 +- .../aql/how-to-invoke-aql/_index.md | 0 .../aql/how-to-invoke-aql/with-arangosh.md | 0 .../with-the-web-interface.md | 0 .../arangodb/{3.13 => 4.0}/aql/operators.md | 4 +- .../aql/user-defined-functions.md | 0 .../{3.13 => 4.0}/components/_index.md | 0 .../components/arangodb-server/_index.md | 0 .../arangodb-server/environment-variables.md | 2 +- .../components/arangodb-server/options.md | 0 .../arangodb-server/storage-engine.md | 0 .../{3.13 => 4.0}/components/tools/_index.md | 2 +- .../components/tools/arangobackup/_index.md | 0 .../components/tools/arangobackup/examples.md | 0 .../components/tools/arangobackup/options.md | 0 .../components/tools/arangobench/_index.md | 0 .../components/tools/arangobench/options.md | 0 .../components/tools/arangodb-shell/_index.md | 0 .../tools/arangodb-shell/details.md | 0 .../tools/arangodb-shell/examples.md | 0 .../tools/arangodb-shell/options.md | 0 .../tools/arangodb-starter/_index.md | 0 .../tools/arangodb-starter/architecture.md | 0 .../tools/arangodb-starter/options.md | 0 .../tools/arangodb-starter/security.md | 0 .../components/tools/arangodump/_index.md | 0 .../components/tools/arangodump/examples.md | 0 .../tools/arangodump/limitations.md | 0 .../components/tools/arangodump/maskings.md | 0 .../components/tools/arangodump/options.md | 0 .../components/tools/arangoexport/_index.md | 0 .../components/tools/arangoexport/examples.md | 0 .../components/tools/arangoexport/options.md | 0 .../components/tools/arangoimport/_index.md | 0 .../components/tools/arangoimport/details.md | 0 .../tools/arangoimport/examples-csv.md | 0 .../tools/arangoimport/examples-json.md | 0 .../components/tools/arangoimport/options.md | 0 .../components/tools/arangoinspect/_index.md | 0 .../tools/arangoinspect/examples.md | 0 .../components/tools/arangoinspect/options.md | 0 .../components/tools/arangorestore/_index.md | 0 .../tools/arangorestore/examples.md | 0 .../components/tools/arangorestore/options.md | 0 .../components/tools/arangovpack/_index.md | 0 .../components/tools/arangovpack/options.md | 0 .../components/tools/foxx-cli/_index.md | 0 .../components/tools/foxx-cli/details.md | 0 .../components/web-interface/_index.md | 0 .../components/web-interface/cluster.md | 0 .../components/web-interface/collections.md | 0 .../components/web-interface/dashboard.md | 0 .../components/web-interface/document.md | 0 .../components/web-interface/graphs.md | 0 .../components/web-interface/logs.md | 0 .../components/web-interface/queries.md | 0 .../components/web-interface/services.md | 0 .../components/web-interface/users.md | 0 .../arangodb/{3.13 => 4.0}/concepts/_index.md | 0 .../{3.13 => 4.0}/concepts/data-models.md | 0 .../{3.13 => 4.0}/concepts/data-retrieval.md | 6 +- .../concepts/data-structure/_index.md | 0 .../concepts/data-structure/collections.md | 0 .../concepts/data-structure/databases.md | 0 .../data-structure/documents/_index.md | 0 .../documents/computed-values.md | 0 .../documents/schema-validation.md | 0 .../concepts/data-structure/views.md | 10 +-- .../arangodb/{3.13 => 4.0}/deploy/_index.md | 0 .../deploy/architecture/_index.md | 0 .../deploy/architecture/data-sharding.md | 0 .../deploy/architecture/replication.md | 0 .../deploy/architecture/scalability.md | 0 .../{3.13 => 4.0}/deploy/cluster/_index.md | 0 .../deploy/cluster/administration.md | 0 .../deploy/cluster/deployment/_index.md | 0 .../deploy/cluster/deployment/manual-start.md | 0 .../deployment/using-the-arangodb-starter.md | 0 .../deploy/cluster/limitations.md | 0 .../{3.13 => 4.0}/deploy/in-the-cloud.md | 0 .../{3.13 => 4.0}/deploy/kubernetes.md | 0 .../arangodb/{3.13 => 4.0}/deploy/oneshard.md | 0 .../deploy/production-checklist.md | 0 .../deploy/single-instance-vs-cluster.md | 0 .../deploy/single-instance/_index.md | 0 .../deploy/single-instance/manual-start.md | 0 .../using-the-arangodb-starter.md | 0 .../arangodb/{3.13 => 4.0}/develop/_index.md | 0 .../{3.13 => 4.0}/develop/error-codes.md | 0 .../{3.13 => 4.0}/develop/exit-codes.md | 0 .../develop/foxx-microservices/_index.md | 0 .../develop/foxx-microservices/deployment.md | 0 .../foxx-microservices/getting-started.md | 0 .../foxx-microservices/guides/_index.md | 0 .../guides/access-from-the-browser.md | 0 .../guides/authentication-and-sessions.md | 0 .../guides/development-mode.md | 0 .../guides/foxx-in-a-cluster.md | 0 .../guides/linking-services-together.md | 0 .../guides/making-requests.md | 0 .../guides/scripts-and-scheduling.md | 0 .../guides/testing-foxx-services.md | 0 .../guides/using-node-modules.md | 0 .../guides/using-webpack-with-foxx.md | 0 .../guides/working-with-collections.md | 0 .../guides/working-with-files.md | 0 .../guides/working-with-routers.md | 0 .../guides/writing-queries.md | 0 .../foxx-microservices/reference/_index.md | 0 .../reference/configuration.md | 0 .../reference/related-modules/_index.md | 0 .../related-modules/authentication.md | 0 .../reference/related-modules/graphql.md | 0 .../reference/related-modules/oauth-1-0a.md | 0 .../reference/related-modules/oauth-2-0.md | 0 .../reference/related-modules/queues.md | 0 .../reference/routers/_index.md | 0 .../reference/routers/endpoints.md | 0 .../reference/routers/middleware.md | 0 .../reference/routers/request.md | 0 .../reference/routers/response.md | 0 .../reference/service-context.md | 0 .../reference/service-manifest.md | 0 .../reference/sessions-middleware/_index.md | 0 .../session-storages/_index.md | 0 .../session-storages/collection-storage.md | 0 .../session-storages/jwt-storage.md | 0 .../session-transports/_index.md | 0 .../session-transports/cookie-transport.md | 0 .../session-transports/header-transport.md | 0 .../{3.13 => 4.0}/develop/http-api/_index.md | 0 .../develop/http-api/administration.md | 0 .../develop/http-api/analyzers.md | 2 +- .../develop/http-api/authentication.md | 0 .../{3.13 => 4.0}/develop/http-api/cluster.md | 0 .../develop/http-api/collections.md | 0 .../develop/http-api/databases.md | 0 .../develop/http-api/documents.md | 0 .../{3.13 => 4.0}/develop/http-api/foxx.md | 0 .../http-api/general-request-handling.md | 0 .../develop/http-api/graphs/_index.md | 0 .../develop/http-api/graphs/edges.md | 0 .../develop/http-api/graphs/named-graphs.md | 0 .../develop/http-api/hot-backups.md | 0 .../{3.13 => 4.0}/develop/http-api/import.md | 0 .../develop/http-api/indexes/_index.md | 0 .../develop/http-api/indexes/fulltext.md | 0 .../develop/http-api/indexes/geo-spatial.md | 0 .../develop/http-api/indexes/inverted.md | 0 .../http-api/indexes/multi-dimensional.md | 0 .../develop/http-api/indexes/persistent.md | 0 .../develop/http-api/indexes/ttl.md | 0 .../develop/http-api/indexes/vector.md | 0 .../{3.13 => 4.0}/develop/http-api/jobs.md | 0 .../develop/http-api/monitoring/_index.md | 0 .../develop/http-api/monitoring/logs.md | 0 .../develop/http-api/monitoring/metrics.md | 0 .../develop/http-api/monitoring/statistics.md | 0 .../develop/http-api/queries/_index.md | 0 .../develop/http-api/queries/aql-queries.md | 0 .../http-api/queries/aql-query-plan-cache.md | 0 .../queries/aql-query-results-cache.md | 0 .../queries/user-defined-aql-functions.md | 0 .../develop/http-api/replication/_index.md | 0 .../replication/other-replication-commands.md | 0 .../replication/replication-applier.md | 0 .../http-api/replication/replication-dump.md | 0 .../replication/replication-logger.md | 0 .../http-api/replication/write-ahead-log.md | 0 .../develop/http-api/security.md | 0 .../{3.13 => 4.0}/develop/http-api/tasks.md | 0 .../develop/http-api/transactions/_index.md | 0 .../transactions/javascript-transactions.md | 0 .../transactions/stream-transactions.md | 0 .../{3.13 => 4.0}/develop/http-api/users.md | 0 .../develop/http-api/views/_index.md | 0 .../http-api/views/arangosearch-views.md | 16 ++--- .../http-api/views/search-alias-views.md | 0 .../javascript-api/@arangodb/_index.md | 0 .../@arangodb/collection-object.md | 10 +-- .../javascript-api/@arangodb/cursor-object.md | 0 .../javascript-api/@arangodb/db-object.md | 8 +-- .../javascript-api/@arangodb/view-object.md | 4 +- .../develop/javascript-api/_index.md | 0 .../develop/javascript-api/actions.md | 0 .../develop/javascript-api/analyzers.md | 2 +- .../develop/javascript-api/aql-queries.md | 0 .../develop/javascript-api/console.md | 0 .../develop/javascript-api/crypto.md | 0 .../develop/javascript-api/fs.md | 0 .../develop/javascript-api/request.md | 0 .../develop/javascript-api/tasks.md | 0 .../develop/operational-factors.md | 4 +- .../develop/satellitecollections.md | 0 .../{3.13 => 4.0}/develop/smartjoins.md | 0 .../develop/transactions/_index.md | 0 .../develop/transactions/durability.md | 0 .../transactions/javascript-transactions.md | 0 .../develop/transactions/limitations.md | 0 .../transactions/locking-and-isolation.md | 0 .../transactions/stream-transactions.md | 0 .../arangodb/{3.13 => 4.0}/features/_index.md | 0 .../features/highlights-by-version.md | 62 +++++++++---------- .../arangodb/{3.13 => 4.0}/features/list.md | 42 ++++++------- .../{3.13 => 4.0}/get-started/_index.md | 0 .../how-to-interact-with-arangodb.md | 0 .../get-started/on-premises-installation.md | 0 .../get-started/set-up-a-cloud-instance.md | 0 .../get-started/start-using-aql/_index.md | 0 .../get-started/start-using-aql/crud.md | 0 .../get-started/start-using-aql/dataset.md | 0 .../get-started/start-using-aql/filter.md | 0 .../get-started/start-using-aql/geo.md | 2 +- .../get-started/start-using-aql/graphs.md | 6 +- .../get-started/start-using-aql/joins.md | 0 .../get-started/start-using-aql/sort-limit.md | 0 .../arangodb/{3.13 => 4.0}/graphs/_index.md | 12 ++-- .../graphs/enterprisegraphs/_index.md | 2 +- .../enterprisegraphs/getting-started.md | 0 .../graphs/enterprisegraphs/management.md | 0 .../{3.13 => 4.0}/graphs/example-graphs.md | 6 +- .../graphs/general-graphs/_index.md | 0 .../graphs/general-graphs/functions.md | 0 .../graphs/general-graphs/management.md | 0 .../graphs/satellitegraphs/_index.md | 0 .../graphs/satellitegraphs/details.md | 0 .../graphs/satellitegraphs/management.md | 0 .../graphs/smartgraphs/_index.md | 2 +- .../graphs/smartgraphs/getting-started.md | 0 .../graphs/smartgraphs/management.md | 0 .../testing-graphs-on-single-server.md | 0 .../graphs/working-with-edges.md | 0 .../arangodb/4.0/indexes-and-search/_index.md | 6 ++ .../indexes-and-search}/analyzers.md | 2 +- .../arangosearch/_index.md | 0 .../arangosearch-views-reference.md | 0 .../case-sensitivity-and-diacritics.md | 0 .../arangosearch/exact-value-matching.md | 0 .../arangosearch/example-datasets.md | 0 .../arangosearch/faceted-search.md | 0 .../arangosearch/full-text-token-search.md | 0 .../arangosearch/fuzzy-search.md | 0 .../arangosearch/geospatial-search.md | 0 .../arangosearch/nested-search.md | 0 .../arangosearch/performance.md | 0 .../phrase-and-proximity-search.md | 0 .../arangosearch/prefix-matching.md | 0 .../arangosearch/range-queries.md | 2 +- .../arangosearch/ranking.md | 0 .../search-alias-views-reference.md | 0 .../arangosearch/search-highlighting.md | 0 .../arangosearch/wildcard-search.md | 0 .../indexes-and-search}/indexing/_index.md | 0 .../indexes-and-search}/indexing/basics.md | 0 .../indexing/index-utilization.md | 0 .../indexing/which-index-to-use-when.md | 0 .../indexing/working-with-indexes/_index.md | 0 .../working-with-indexes/fulltext-indexes.md | 0 .../geo-spatial-indexes.md | 0 .../working-with-indexes/inverted-indexes.md | 2 +- .../multi-dimensional-indexes.md | 0 .../persistent-indexes.md | 0 .../working-with-indexes/ttl-indexes.md | 0 .../working-with-indexes/vector-indexes.md | 0 .../vertex-centric-indexes.md | 0 .../{3.13 => 4.0}/operations/_index.md | 0 .../operations/administration/_index.md | 0 .../administration/arangodb-starter/_index.md | 0 .../arangodb-starter/recovery-procedure.md | 0 .../arangodb-starter/removal-procedure.md | 0 .../administration/configuration.md | 0 .../administration/import-and-export.md | 0 .../administration/license-management.md | 2 +- .../operations/administration/log-levels.md | 0 .../administration/reduce-memory-footprint.md | 0 .../operations/administration/telemetrics.md | 0 .../administration/user-management/_index.md | 0 .../user-management/in-arangosh.md | 0 .../operations/backup-and-restore.md | 2 +- .../operations/installation/_index.md | 0 .../operations/installation/docker.md | 0 .../operations/installation/linux/_index.md | 0 .../linux/linux-os-tuning-script-examples.md | 0 .../linux/operating-system-configuration.md | 0 .../operations/installation/uninstallation.md | 0 .../operations/security/_index.md | 0 .../operations/security/audit-logging.md | 0 .../security/change-root-password.md | 0 .../operations/security/encryption-at-rest.md | 0 .../security/securing-starter-deployments.md | 0 .../operations/security/security-options.md | 0 .../operations/troubleshooting/_index.md | 0 .../operations/troubleshooting/arangod.md | 0 .../troubleshooting/cluster/_index.md | 0 .../troubleshooting/cluster/agency-dump.md | 0 .../troubleshooting/emergency-console.md | 0 .../troubleshooting/query-debug-packages.md | 0 .../operations/upgrading/_index.md | 0 .../operations/upgrading/downgrading.md | 0 .../upgrading/manual-deployments/_index.md | 0 .../upgrading/manual-deployments/cluster.md | 0 .../manual-deployments/single-server.md | 0 .../upgrading/starter-deployments.md | 0 .../{3.13 => 4.0}/release-notes/_index.md | 20 ++++-- .../deprecated-and-removed-features.md | 8 +-- .../release-notes/version-3.0/_index.md | 0 .../incompatible-changes-in-3-0.md | 2 +- .../version-3.0/whats-new-in-3-0.md | 0 .../release-notes/version-3.1/_index.md | 0 .../incompatible-changes-in-3-1.md | 0 .../version-3.1/whats-new-in-3-1.md | 0 .../release-notes/version-3.10/_index.md | 0 .../version-3.10/api-changes-in-3-10.md | 14 ++--- .../incompatible-changes-in-3-10.md | 10 +-- .../version-3.10/known-issues-in-3-10.md | 0 .../version-3.10/whats-new-in-3-10.md | 42 ++++++------- .../release-notes/version-3.11/_index.md | 0 .../version-3.11/api-changes-in-3-11.md | 4 +- .../incompatible-changes-in-3-11.md | 0 .../version-3.11/known-issues-in-3-11.md | 0 .../version-3.11/whats-new-in-3-11.md | 14 ++--- .../release-notes/version-3.12/_index.md | 0 .../version-3.12/api-changes-in-3-12.md | 8 +-- .../incompatible-changes-in-3-12.md | 6 +- .../version-3.12/known-issues-in-3-12.md | 0 .../version-3.12/whats-new-in-3-12.md | 28 ++++----- .../release-notes/version-3.2/_index.md | 0 .../incompatible-changes-in-3-2.md | 0 .../version-3.2/known-issues-in-3-2.md | 0 .../version-3.2/whats-new-in-3-2.md | 0 .../release-notes/version-3.3/_index.md | 0 .../incompatible-changes-in-3-3.md | 0 .../version-3.3/known-issues-in-3-3.md | 0 .../version-3.3/whats-new-in-3-3.md | 0 .../release-notes/version-3.4/_index.md | 0 .../incompatible-changes-in-3-4.md | 0 .../version-3.4/known-issues-in-3-4.md | 0 .../version-3.4/whats-new-in-3-4.md | 2 +- .../release-notes/version-3.5/_index.md | 0 .../incompatible-changes-in-3-5.md | 0 .../version-3.5/known-issues-in-3-5.md | 0 .../version-3.5/whats-new-in-3-5.md | 12 ++-- .../release-notes/version-3.6/_index.md | 0 .../incompatible-changes-in-3-6.md | 0 .../version-3.6/known-issues-in-3-6.md | 0 .../version-3.6/whats-new-in-3-6.md | 4 +- .../release-notes/version-3.7/_index.md | 0 .../version-3.7/api-changes-in-3-7.md | 0 .../incompatible-changes-in-3-7.md | 0 .../version-3.7/known-issues-in-3-7.md | 0 .../version-3.7/whats-new-in-3-7.md | 10 +-- .../release-notes/version-3.8/_index.md | 0 .../version-3.8/api-changes-in-3-8.md | 0 .../incompatible-changes-in-3-8.md | 0 .../version-3.8/known-issues-in-3-8.md | 0 .../version-3.8/whats-new-in-3-8.md | 14 ++--- .../release-notes/version-3.9/_index.md | 0 .../version-3.9/api-changes-in-3-9.md | 2 +- .../incompatible-changes-in-3-9.md | 0 .../version-3.9/known-issues-in-3-9.md | 0 .../version-3.9/whats-new-in-3-9.md | 12 ++-- .../4.0/release-notes/version-4.0/_index.md | 6 ++ .../version-4.0/api-changes-in-4-0.md} | 4 +- .../incompatible-changes-in-4-0.md} | 4 +- .../version-4.0/known-issues-in-4-0.md} | 34 +++++----- .../version-4.0/whats-new-in-4-0.md} | 6 +- .../arangodb/{3.13 => 4.0}/use-cases.md | 2 +- site/content/data-platform/_index.md | 5 +- site/content/data-platform/features.md | 2 +- site/content/data-platform/get-started.md | 4 +- .../content/data-platform/graph-visualizer.md | 4 +- site/content/ecosystem/adapters/_index.md | 2 +- .../tools => ecosystem}/arango-datasets.md | 2 +- .../integrations/spring-boot-arangodb.md | 2 +- .../reference-version-3/mapping/indexes.md | 2 +- .../reference-version-4/mapping/indexes.md | 2 +- site/data/{3.13 => 4.0}/allMetrics.yaml | 0 site/data/{3.13 => 4.0}/arangobackup.json | 0 site/data/{3.13 => 4.0}/arangobench.json | 0 site/data/{3.13 => 4.0}/arangod.json | 0 site/data/{3.13 => 4.0}/arangodump.json | 0 site/data/{3.13 => 4.0}/arangoexport.json | 0 site/data/{3.13 => 4.0}/arangoimport.json | 0 site/data/{3.13 => 4.0}/arangoinspect.json | 0 site/data/{3.13 => 4.0}/arangorestore.json | 0 site/data/{3.13 => 4.0}/arangosh.json | 0 site/data/{3.13 => 4.0}/arangovpack.json | 0 site/data/{3.13 => 4.0}/cache.json | 0 site/data/{3.13 => 4.0}/errors.yaml | 0 site/data/{3.13 => 4.0}/exitcodes.yaml | 0 site/data/{3.13 => 4.0}/optimizer-rules.json | 0 site/data/versions.yaml | 4 +- toolchain/docker/amd64/docker-compose.yml | 6 +- toolchain/docker/arm64/docker-compose.yml | 6 +- toolchain/docker/docker-compose.local.yml | 4 +- toolchain/scripts/toolchain.sh | 6 +- 676 files changed, 877 insertions(+), 987 deletions(-) rename site/content/arangodb/3.11/aql/{graphs => graph-queries}/_index.md (97%) rename site/content/arangodb/3.11/aql/{graphs => graph-queries}/all-shortest-paths.md (100%) rename site/content/arangodb/3.11/aql/{graphs => graph-queries}/k-paths.md (100%) rename site/content/arangodb/3.11/aql/{graphs => graph-queries}/k-shortest-paths.md (100%) rename site/content/arangodb/3.11/aql/{graphs => graph-queries}/shortest-path.md (100%) rename site/content/arangodb/3.11/aql/{graphs => graph-queries}/traversals-explained.md (100%) rename site/content/arangodb/3.11/aql/{graphs => graph-queries}/traversals.md (100%) delete mode 100644 site/content/arangodb/3.11/components/tools/arango-datasets.md delete mode 100644 site/content/arangodb/3.11/index-and-search/_index.md create mode 100644 site/content/arangodb/3.11/indexes-and-search/_index.md rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/analyzers.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/_index.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/arangosearch-views-reference.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/case-sensitivity-and-diacritics.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/exact-value-matching.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/example-datasets.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/faceted-search.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/full-text-token-search.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/fuzzy-search.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/geospatial-search.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/nested-search.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/performance.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/phrase-and-proximity-search.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/prefix-matching.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/range-queries.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/ranking.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/search-alias-views-reference.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/search-highlighting.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/arangosearch/wildcard-search.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/indexing/_index.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/indexing/basics.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/indexing/index-utilization.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/indexing/which-index-to-use-when.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/indexing/working-with-indexes/_index.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/indexing/working-with-indexes/fulltext-indexes.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/indexing/working-with-indexes/geo-spatial-indexes.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/indexing/working-with-indexes/inverted-indexes.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/indexing/working-with-indexes/multi-dimensional-indexes.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/indexing/working-with-indexes/persistent-indexes.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/indexing/working-with-indexes/ttl-indexes.md (100%) rename site/content/arangodb/3.11/{index-and-search => indexes-and-search}/indexing/working-with-indexes/vertex-centric-indexes.md (100%) rename site/content/arangodb/{3.13/aql/graphs => 3.12/aql/graph-queries}/_index.md (97%) rename site/content/arangodb/3.12/aql/{graphs => graph-queries}/all-shortest-paths.md (100%) rename site/content/arangodb/3.12/aql/{graphs => graph-queries}/k-paths.md (100%) rename site/content/arangodb/3.12/aql/{graphs => graph-queries}/k-shortest-paths.md (100%) rename site/content/arangodb/3.12/aql/{graphs => graph-queries}/shortest-path.md (100%) rename site/content/arangodb/3.12/aql/{graphs => graph-queries}/traversals-explained.md (100%) rename site/content/arangodb/3.12/aql/{graphs => graph-queries}/traversals.md (99%) delete mode 100644 site/content/arangodb/3.12/index-and-search/_index.md create mode 100644 site/content/arangodb/3.12/indexes-and-search/_index.md rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/analyzers.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/_index.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/arangosearch-views-reference.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/case-sensitivity-and-diacritics.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/exact-value-matching.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/example-datasets.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/faceted-search.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/full-text-token-search.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/fuzzy-search.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/geospatial-search.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/nested-search.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/performance.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/phrase-and-proximity-search.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/prefix-matching.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/range-queries.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/ranking.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/search-alias-views-reference.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/search-highlighting.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/arangosearch/wildcard-search.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/indexing/_index.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/indexing/basics.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/indexing/index-utilization.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/indexing/which-index-to-use-when.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/indexing/working-with-indexes/_index.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/indexing/working-with-indexes/fulltext-indexes.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/indexing/working-with-indexes/geo-spatial-indexes.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/indexing/working-with-indexes/inverted-indexes.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/indexing/working-with-indexes/multi-dimensional-indexes.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/indexing/working-with-indexes/persistent-indexes.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/indexing/working-with-indexes/ttl-indexes.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/indexing/working-with-indexes/vector-indexes.md (100%) rename site/content/arangodb/3.12/{index-and-search => indexes-and-search}/indexing/working-with-indexes/vertex-centric-indexes.md (100%) delete mode 100644 site/content/arangodb/3.13/components/tools/arango-datasets.md delete mode 100644 site/content/arangodb/3.13/index-and-search/_index.md delete mode 100644 site/content/arangodb/3.13/release-notes/version-3.13/_index.md rename site/content/arangodb/{3.13 => 4.0}/_index.md (98%) rename site/content/arangodb/{3.13 => 4.0}/aql/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/common-errors.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/data-queries.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/examples-and-query-patterns/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/examples-and-query-patterns/counting.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/examples-and-query-patterns/create-test-data.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/examples-and-query-patterns/diffing-two-documents.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/examples-and-query-patterns/dynamic-attribute-names.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/examples-and-query-patterns/grouping.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/examples-and-query-patterns/joins.md (99%) rename site/content/arangodb/{3.13 => 4.0}/aql/examples-and-query-patterns/projections-and-filters.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/examples-and-query-patterns/queries-without-collections.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/examples-and-query-patterns/remove-nodes.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/examples-and-query-patterns/traversals.md (96%) rename site/content/arangodb/{3.13 => 4.0}/aql/examples-and-query-patterns/upsert-repsert-guide.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/execution-and-performance/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/execution-and-performance/caching-query-plans.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/execution-and-performance/caching-query-results.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/execution-and-performance/explaining-queries.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/execution-and-performance/parsing-queries.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/execution-and-performance/query-logging.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/execution-and-performance/query-optimization.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/execution-and-performance/query-profiling.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/execution-and-performance/query-statistics.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/functions/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/functions/arangosearch.md (97%) rename site/content/arangodb/{3.13 => 4.0}/aql/functions/array.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/functions/bit.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/functions/date.md (99%) rename site/content/arangodb/{3.13 => 4.0}/aql/functions/document-object.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/functions/fulltext.md (91%) rename site/content/arangodb/{3.13 => 4.0}/aql/functions/geo.md (97%) rename site/content/arangodb/{3.13 => 4.0}/aql/functions/miscellaneous.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/functions/numeric.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/functions/string.md (99%) rename site/content/arangodb/{3.13 => 4.0}/aql/functions/type-check-and-cast.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/functions/vector.md (99%) rename site/content/arangodb/{3.13 => 4.0}/aql/fundamentals/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/fundamentals/accessing-data-from-collections.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/fundamentals/bind-parameters.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/fundamentals/data-types.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/fundamentals/limitations.md (98%) rename site/content/arangodb/{3.13 => 4.0}/aql/fundamentals/query-errors.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/fundamentals/query-results.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/fundamentals/subqueries.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/fundamentals/syntax.md (94%) rename site/content/arangodb/{3.13 => 4.0}/aql/fundamentals/type-and-value-order.md (100%) rename site/content/arangodb/{3.12/aql/graphs => 4.0/aql/graph-queries}/_index.md (97%) rename site/content/arangodb/{3.13/aql/graphs => 4.0/aql/graph-queries}/all-shortest-paths.md (100%) rename site/content/arangodb/{3.13/aql/graphs => 4.0/aql/graph-queries}/k-paths.md (100%) rename site/content/arangodb/{3.13/aql/graphs => 4.0/aql/graph-queries}/k-shortest-paths.md (100%) rename site/content/arangodb/{3.13/aql/graphs => 4.0/aql/graph-queries}/shortest-path.md (100%) rename site/content/arangodb/{3.13/aql/graphs => 4.0/aql/graph-queries}/traversals-explained.md (100%) rename site/content/arangodb/{3.13/aql/graphs => 4.0/aql/graph-queries}/traversals.md (99%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/collect.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/filter.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/for.md (95%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/insert.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/let.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/limit.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/remove.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/replace.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/return.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/search.md (91%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/sort.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/update.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/upsert.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/window.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/high-level-operations/with.md (97%) rename site/content/arangodb/{3.13 => 4.0}/aql/how-to-invoke-aql/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/how-to-invoke-aql/with-arangosh.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/how-to-invoke-aql/with-the-web-interface.md (100%) rename site/content/arangodb/{3.13 => 4.0}/aql/operators.md (99%) rename site/content/arangodb/{3.13 => 4.0}/aql/user-defined-functions.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/arangodb-server/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/arangodb-server/environment-variables.md (98%) rename site/content/arangodb/{3.13 => 4.0}/components/arangodb-server/options.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/arangodb-server/storage-engine.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/_index.md (94%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangobackup/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangobackup/examples.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangobackup/options.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangobench/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangobench/options.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangodb-shell/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangodb-shell/details.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangodb-shell/examples.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangodb-shell/options.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangodb-starter/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangodb-starter/architecture.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangodb-starter/options.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangodb-starter/security.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangodump/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangodump/examples.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangodump/limitations.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangodump/maskings.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangodump/options.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangoexport/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangoexport/examples.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangoexport/options.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangoimport/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangoimport/details.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangoimport/examples-csv.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangoimport/examples-json.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangoimport/options.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangoinspect/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangoinspect/examples.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangoinspect/options.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangorestore/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangorestore/examples.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangorestore/options.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangovpack/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/arangovpack/options.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/foxx-cli/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/tools/foxx-cli/details.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/web-interface/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/web-interface/cluster.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/web-interface/collections.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/web-interface/dashboard.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/web-interface/document.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/web-interface/graphs.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/web-interface/logs.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/web-interface/queries.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/web-interface/services.md (100%) rename site/content/arangodb/{3.13 => 4.0}/components/web-interface/users.md (100%) rename site/content/arangodb/{3.13 => 4.0}/concepts/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/concepts/data-models.md (100%) rename site/content/arangodb/{3.13 => 4.0}/concepts/data-retrieval.md (77%) rename site/content/arangodb/{3.13 => 4.0}/concepts/data-structure/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/concepts/data-structure/collections.md (100%) rename site/content/arangodb/{3.13 => 4.0}/concepts/data-structure/databases.md (100%) rename site/content/arangodb/{3.13 => 4.0}/concepts/data-structure/documents/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/concepts/data-structure/documents/computed-values.md (100%) rename site/content/arangodb/{3.13 => 4.0}/concepts/data-structure/documents/schema-validation.md (100%) rename site/content/arangodb/{3.13 => 4.0}/concepts/data-structure/views.md (97%) rename site/content/arangodb/{3.13 => 4.0}/deploy/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/architecture/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/architecture/data-sharding.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/architecture/replication.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/architecture/scalability.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/cluster/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/cluster/administration.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/cluster/deployment/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/cluster/deployment/manual-start.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/cluster/deployment/using-the-arangodb-starter.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/cluster/limitations.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/in-the-cloud.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/kubernetes.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/oneshard.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/production-checklist.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/single-instance-vs-cluster.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/single-instance/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/single-instance/manual-start.md (100%) rename site/content/arangodb/{3.13 => 4.0}/deploy/single-instance/using-the-arangodb-starter.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/error-codes.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/exit-codes.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/deployment.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/getting-started.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/access-from-the-browser.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/authentication-and-sessions.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/development-mode.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/foxx-in-a-cluster.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/linking-services-together.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/making-requests.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/scripts-and-scheduling.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/testing-foxx-services.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/using-node-modules.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/using-webpack-with-foxx.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/working-with-collections.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/working-with-files.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/working-with-routers.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/guides/writing-queries.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/configuration.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/related-modules/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/related-modules/authentication.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/related-modules/graphql.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/related-modules/oauth-2-0.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/related-modules/queues.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/routers/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/routers/endpoints.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/routers/middleware.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/routers/request.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/routers/response.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/service-context.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/service-manifest.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/sessions-middleware/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/administration.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/analyzers.md (99%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/authentication.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/cluster.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/collections.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/databases.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/documents.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/foxx.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/general-request-handling.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/graphs/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/graphs/edges.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/graphs/named-graphs.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/hot-backups.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/import.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/indexes/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/indexes/fulltext.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/indexes/geo-spatial.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/indexes/inverted.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/indexes/multi-dimensional.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/indexes/persistent.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/indexes/ttl.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/indexes/vector.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/jobs.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/monitoring/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/monitoring/logs.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/monitoring/metrics.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/monitoring/statistics.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/queries/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/queries/aql-queries.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/queries/aql-query-plan-cache.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/queries/aql-query-results-cache.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/queries/user-defined-aql-functions.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/replication/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/replication/other-replication-commands.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/replication/replication-applier.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/replication/replication-dump.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/replication/replication-logger.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/replication/write-ahead-log.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/security.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/tasks.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/transactions/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/transactions/javascript-transactions.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/transactions/stream-transactions.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/users.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/views/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/views/arangosearch-views.md (99%) rename site/content/arangodb/{3.13 => 4.0}/develop/http-api/views/search-alias-views.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/@arangodb/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/@arangodb/collection-object.md (98%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/@arangodb/cursor-object.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/@arangodb/db-object.md (98%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/@arangodb/view-object.md (93%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/actions.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/analyzers.md (97%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/aql-queries.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/console.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/crypto.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/fs.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/request.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/javascript-api/tasks.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/operational-factors.md (99%) rename site/content/arangodb/{3.13 => 4.0}/develop/satellitecollections.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/smartjoins.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/transactions/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/transactions/durability.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/transactions/javascript-transactions.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/transactions/limitations.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/transactions/locking-and-isolation.md (100%) rename site/content/arangodb/{3.13 => 4.0}/develop/transactions/stream-transactions.md (100%) rename site/content/arangodb/{3.13 => 4.0}/features/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/features/highlights-by-version.md (88%) rename site/content/arangodb/{3.13 => 4.0}/features/list.md (90%) rename site/content/arangodb/{3.13 => 4.0}/get-started/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/get-started/how-to-interact-with-arangodb.md (100%) rename site/content/arangodb/{3.13 => 4.0}/get-started/on-premises-installation.md (100%) rename site/content/arangodb/{3.13 => 4.0}/get-started/set-up-a-cloud-instance.md (100%) rename site/content/arangodb/{3.13 => 4.0}/get-started/start-using-aql/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/get-started/start-using-aql/crud.md (100%) rename site/content/arangodb/{3.13 => 4.0}/get-started/start-using-aql/dataset.md (100%) rename site/content/arangodb/{3.13 => 4.0}/get-started/start-using-aql/filter.md (100%) rename site/content/arangodb/{3.13 => 4.0}/get-started/start-using-aql/geo.md (97%) rename site/content/arangodb/{3.13 => 4.0}/get-started/start-using-aql/graphs.md (97%) rename site/content/arangodb/{3.13 => 4.0}/get-started/start-using-aql/joins.md (100%) rename site/content/arangodb/{3.13 => 4.0}/get-started/start-using-aql/sort-limit.md (100%) rename site/content/arangodb/{3.13 => 4.0}/graphs/_index.md (98%) rename site/content/arangodb/{3.13 => 4.0}/graphs/enterprisegraphs/_index.md (98%) rename site/content/arangodb/{3.13 => 4.0}/graphs/enterprisegraphs/getting-started.md (100%) rename site/content/arangodb/{3.13 => 4.0}/graphs/enterprisegraphs/management.md (100%) rename site/content/arangodb/{3.13 => 4.0}/graphs/example-graphs.md (96%) rename site/content/arangodb/{3.13 => 4.0}/graphs/general-graphs/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/graphs/general-graphs/functions.md (100%) rename site/content/arangodb/{3.13 => 4.0}/graphs/general-graphs/management.md (100%) rename site/content/arangodb/{3.13 => 4.0}/graphs/satellitegraphs/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/graphs/satellitegraphs/details.md (100%) rename site/content/arangodb/{3.13 => 4.0}/graphs/satellitegraphs/management.md (100%) rename site/content/arangodb/{3.13 => 4.0}/graphs/smartgraphs/_index.md (99%) rename site/content/arangodb/{3.13 => 4.0}/graphs/smartgraphs/getting-started.md (100%) rename site/content/arangodb/{3.13 => 4.0}/graphs/smartgraphs/management.md (100%) rename site/content/arangodb/{3.13 => 4.0}/graphs/smartgraphs/testing-graphs-on-single-server.md (100%) rename site/content/arangodb/{3.13 => 4.0}/graphs/working-with-edges.md (100%) create mode 100644 site/content/arangodb/4.0/indexes-and-search/_index.md rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/analyzers.md (99%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/_index.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/arangosearch-views-reference.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/case-sensitivity-and-diacritics.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/exact-value-matching.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/example-datasets.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/faceted-search.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/full-text-token-search.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/fuzzy-search.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/geospatial-search.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/nested-search.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/performance.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/phrase-and-proximity-search.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/prefix-matching.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/range-queries.md (98%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/ranking.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/search-alias-views-reference.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/search-highlighting.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/arangosearch/wildcard-search.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/indexing/_index.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/indexing/basics.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/indexing/index-utilization.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/indexing/which-index-to-use-when.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/indexing/working-with-indexes/_index.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/indexing/working-with-indexes/fulltext-indexes.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/indexing/working-with-indexes/geo-spatial-indexes.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/indexing/working-with-indexes/inverted-indexes.md (99%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/indexing/working-with-indexes/multi-dimensional-indexes.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/indexing/working-with-indexes/persistent-indexes.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/indexing/working-with-indexes/ttl-indexes.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/indexing/working-with-indexes/vector-indexes.md (100%) rename site/content/arangodb/{3.13/index-and-search => 4.0/indexes-and-search}/indexing/working-with-indexes/vertex-centric-indexes.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/administration/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/administration/arangodb-starter/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/administration/arangodb-starter/recovery-procedure.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/administration/arangodb-starter/removal-procedure.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/administration/configuration.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/administration/import-and-export.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/administration/license-management.md (99%) rename site/content/arangodb/{3.13 => 4.0}/operations/administration/log-levels.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/administration/reduce-memory-footprint.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/administration/telemetrics.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/administration/user-management/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/administration/user-management/in-arangosh.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/backup-and-restore.md (99%) rename site/content/arangodb/{3.13 => 4.0}/operations/installation/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/installation/docker.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/installation/linux/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/installation/linux/linux-os-tuning-script-examples.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/installation/linux/operating-system-configuration.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/installation/uninstallation.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/security/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/security/audit-logging.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/security/change-root-password.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/security/encryption-at-rest.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/security/securing-starter-deployments.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/security/security-options.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/troubleshooting/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/troubleshooting/arangod.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/troubleshooting/cluster/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/troubleshooting/cluster/agency-dump.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/troubleshooting/emergency-console.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/troubleshooting/query-debug-packages.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/upgrading/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/upgrading/downgrading.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/upgrading/manual-deployments/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/upgrading/manual-deployments/cluster.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/upgrading/manual-deployments/single-server.md (100%) rename site/content/arangodb/{3.13 => 4.0}/operations/upgrading/starter-deployments.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/_index.md (91%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/deprecated-and-removed-features.md (97%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.0/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.0/incompatible-changes-in-3-0.md (99%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.0/whats-new-in-3-0.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.1/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.1/incompatible-changes-in-3-1.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.1/whats-new-in-3-1.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.10/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.10/api-changes-in-3-10.md (98%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.10/incompatible-changes-in-3-10.md (97%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.10/known-issues-in-3-10.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.10/whats-new-in-3-10.md (97%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.11/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.11/api-changes-in-3-11.md (99%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.11/incompatible-changes-in-3-11.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.11/known-issues-in-3-11.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.11/whats-new-in-3-11.md (98%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.12/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.12/api-changes-in-3-12.md (98%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.12/incompatible-changes-in-3-12.md (99%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.12/known-issues-in-3-12.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.12/whats-new-in-3-12.md (98%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.2/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.2/incompatible-changes-in-3-2.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.2/known-issues-in-3-2.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.2/whats-new-in-3-2.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.3/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.3/incompatible-changes-in-3-3.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.3/known-issues-in-3-3.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.3/whats-new-in-3-3.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.4/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.4/incompatible-changes-in-3-4.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.4/known-issues-in-3-4.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.4/whats-new-in-3-4.md (99%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.5/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.5/incompatible-changes-in-3-5.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.5/known-issues-in-3-5.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.5/whats-new-in-3-5.md (98%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.6/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.6/incompatible-changes-in-3-6.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.6/known-issues-in-3-6.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.6/whats-new-in-3-6.md (99%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.7/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.7/api-changes-in-3-7.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.7/incompatible-changes-in-3-7.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.7/known-issues-in-3-7.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.7/whats-new-in-3-7.md (98%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.8/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.8/api-changes-in-3-8.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.8/incompatible-changes-in-3-8.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.8/known-issues-in-3-8.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.8/whats-new-in-3-8.md (98%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.9/_index.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.9/api-changes-in-3-9.md (99%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.9/incompatible-changes-in-3-9.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.9/known-issues-in-3-9.md (100%) rename site/content/arangodb/{3.13 => 4.0}/release-notes/version-3.9/whats-new-in-3-9.md (98%) create mode 100644 site/content/arangodb/4.0/release-notes/version-4.0/_index.md rename site/content/arangodb/{3.13/release-notes/version-3.13/api-changes-in-3-13.md => 4.0/release-notes/version-4.0/api-changes-in-4-0.md} (92%) rename site/content/arangodb/{3.13/release-notes/version-3.13/incompatible-changes-in-3-13.md => 4.0/release-notes/version-4.0/incompatible-changes-in-4-0.md} (92%) rename site/content/arangodb/{3.13/release-notes/version-3.13/known-issues-in-3-13.md => 4.0/release-notes/version-4.0/known-issues-in-4-0.md} (75%) rename site/content/arangodb/{3.13/release-notes/version-3.13/whats-new-in-3-13.md => 4.0/release-notes/version-4.0/whats-new-in-4-0.md} (65%) rename site/content/arangodb/{3.13 => 4.0}/use-cases.md (99%) rename site/content/{arangodb/3.12/components/tools => ecosystem}/arango-datasets.md (99%) rename site/data/{3.13 => 4.0}/allMetrics.yaml (100%) rename site/data/{3.13 => 4.0}/arangobackup.json (100%) rename site/data/{3.13 => 4.0}/arangobench.json (100%) rename site/data/{3.13 => 4.0}/arangod.json (100%) rename site/data/{3.13 => 4.0}/arangodump.json (100%) rename site/data/{3.13 => 4.0}/arangoexport.json (100%) rename site/data/{3.13 => 4.0}/arangoimport.json (100%) rename site/data/{3.13 => 4.0}/arangoinspect.json (100%) rename site/data/{3.13 => 4.0}/arangorestore.json (100%) rename site/data/{3.13 => 4.0}/arangosh.json (100%) rename site/data/{3.13 => 4.0}/arangovpack.json (100%) rename site/data/{3.13 => 4.0}/cache.json (100%) rename site/data/{3.13 => 4.0}/errors.yaml (100%) rename site/data/{3.13 => 4.0}/exitcodes.yaml (100%) rename site/data/{3.13 => 4.0}/optimizer-rules.json (100%) diff --git a/.circleci/config.yml b/.circleci/config.yml index 23bd8011e4..671353907a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -43,7 +43,7 @@ parameters: type: string default: "undefined" - arangodb-3_13: + arangodb-4_0: type: string default: "undefined" @@ -116,7 +116,7 @@ jobs: python3 generate_config.py \ --workflow << pipeline.parameters.workflow >> \ - --arangodb-branches << pipeline.parameters.arangodb-3_10 >> << pipeline.parameters.arangodb-3_11 >> << pipeline.parameters.arangodb-3_12 >> << pipeline.parameters.arangodb-3_13 >> \ + --arangodb-branches << pipeline.parameters.arangodb-3_10 >> << pipeline.parameters.arangodb-3_11 >> << pipeline.parameters.arangodb-3_12 >> << pipeline.parameters.arangodb-4_0 >> \ --arangodb-branch << pipeline.parameters.arangodb-branch >> \ --release-type << pipeline.parameters.release-type >> \ --docs-version << pipeline.parameters.docs-version >> \ diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index dbba69abb0..0b9a7638fa 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -9,4 +9,4 @@ - 3.10: - 3.11: - 3.12: -- 3.13: +- 4.0: diff --git a/site/config/_default/config.yaml b/site/config/_default/config.yaml index 88c629b699..921ec587fb 100644 --- a/site/config/_default/config.yaml +++ b/site/config/_default/config.yaml @@ -26,12 +26,12 @@ module: excludeFiles: # - arangodb/3.10/* # - arangodb/3.11/* -# - arangodb/3.13/* +# - arangodb/4.0/* - source: content/arangodb/3.12 target: content/arangodb/stable - - source: content/arangodb/3.13 + - source: content/arangodb/4.0 target: content/arangodb/devel markup: diff --git a/site/content/_index.md b/site/content/_index.md index b95a8b3a4e..66ed7f78a9 100644 --- a/site/content/_index.md +++ b/site/content/_index.md @@ -62,7 +62,7 @@ data management, monitoring, and automation. ### Graph Queries -Utilizing connected data starts with running simple [graph queries](arangodb/3.12/aql/graphs/_index.md). +Utilizing connected data starts with running simple [graph queries](arangodb/3.12/aql/graph-queries/_index.md). Using ArangoDB and its query language, you can determine the shortest paths between nodes as well as execute graph traversals. A traversal starts at a given node of a graph and follows the directly connected edges. The edges indicate what the next connected nodes are, and this discovery of neighbors can repeat. diff --git a/site/content/ai-suite/_index.md b/site/content/ai-suite/_index.md index 2a2521db9c..98cc535c97 100644 --- a/site/content/ai-suite/_index.md +++ b/site/content/ai-suite/_index.md @@ -1,5 +1,5 @@ --- -title: The AI Suite of the Arango AI Data Platform +title: The AI Suite of the Arango AI Data Platform (v3.0) menuTitle: AI Suite weight: 2 description: >- @@ -9,6 +9,12 @@ description: >- natural language querying, and AI-powered insights, all through an intuitive web interface --- +{{< tip >}} +The Arango AI Data Platform is available as a pre-release. To get +exclusive early access, [get in touch](https://arango.ai/contact-us/) with +the Arango team. +{{< /tip >}} + ## What's included The AI Suite is composed of three major components: @@ -43,5 +49,5 @@ Alongside these components, you also get the following additional features: ## Sample datasets If you want to try out ArangoDB's data science features, you may use the -[`arango-datasets` Python package](../arangodb/3.12/components/tools/arango-datasets.md) +[`arango-datasets` Python package](../ecosystem/arango-datasets.md) to load sample datasets into a deployment. \ No newline at end of file diff --git a/site/content/ai-suite/graphml/_index.md b/site/content/ai-suite/graphml/_index.md index e8ec422dd7..df8d340f82 100644 --- a/site/content/ai-suite/graphml/_index.md +++ b/site/content/ai-suite/graphml/_index.md @@ -8,7 +8,7 @@ aliases: - arangographml --- {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango AI Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/ai-suite/graphml/notebooks-api.md b/site/content/ai-suite/graphml/notebooks-api.md index 790de442dd..579f2a6051 100644 --- a/site/content/ai-suite/graphml/notebooks-api.md +++ b/site/content/ai-suite/graphml/notebooks-api.md @@ -79,7 +79,7 @@ news sources, and locations are interconnected into a large graph. ![Example Event](../../images/ArangoML_open_intelligence_visualization.png) -The [`arango-datasets`](../../arangodb/3.12/components/tools/arango-datasets.md) Python package +The [`arango-datasets`](../../ecosystem/arango-datasets.md) Python package allows you to load pre-defined datasets into Arango Data Platform. It comes pre-installed in the GraphML notebook environment. diff --git a/site/content/ai-suite/graphrag/_index.md b/site/content/ai-suite/graphrag/_index.md index 55b66214f3..d624896910 100644 --- a/site/content/ai-suite/graphrag/_index.md +++ b/site/content/ai-suite/graphrag/_index.md @@ -9,7 +9,7 @@ aliases: llm-knowledge-graphs --- {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango AI Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/ai-suite/graphrag/technical-overview.md b/site/content/ai-suite/graphrag/technical-overview.md index 56415fb211..4c1b032d58 100644 --- a/site/content/ai-suite/graphrag/technical-overview.md +++ b/site/content/ai-suite/graphrag/technical-overview.md @@ -6,9 +6,8 @@ description: >- Technical overview of ArangoDB's GraphRAG solution, including architecture, services, and deployment options --- - {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango AI Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/ai-suite/graphrag/tutorial-notebook.md b/site/content/ai-suite/graphrag/tutorial-notebook.md index 66d05f766b..7a25a8a4a4 100644 --- a/site/content/ai-suite/graphrag/tutorial-notebook.md +++ b/site/content/ai-suite/graphrag/tutorial-notebook.md @@ -6,7 +6,7 @@ description: >- weight: 25 --- {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango AI Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/ai-suite/graphrag/web-interface.md b/site/content/ai-suite/graphrag/web-interface.md index 927da744a2..388eacb8f3 100644 --- a/site/content/ai-suite/graphrag/web-interface.md +++ b/site/content/ai-suite/graphrag/web-interface.md @@ -6,7 +6,7 @@ description: >- Learn how to create, configure, and run a full GraphRAG workflow in just a few steps --- {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango AI Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/ai-suite/notebook-servers.md b/site/content/ai-suite/notebook-servers.md index 8f17158b9f..474319691e 100644 --- a/site/content/ai-suite/notebook-servers.md +++ b/site/content/ai-suite/notebook-servers.md @@ -8,7 +8,7 @@ aliases: - arangograph-notebooks --- {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango AI Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/ai-suite/reference/gen-ai.md b/site/content/ai-suite/reference/gen-ai.md index f545a7e255..e951deb8ad 100644 --- a/site/content/ai-suite/reference/gen-ai.md +++ b/site/content/ai-suite/reference/gen-ai.md @@ -7,7 +7,7 @@ description: >- weight: 5 --- {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango AI Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/ai-suite/reference/importer.md b/site/content/ai-suite/reference/importer.md index e4cce5d200..f65ddd642d 100644 --- a/site/content/ai-suite/reference/importer.md +++ b/site/content/ai-suite/reference/importer.md @@ -7,7 +7,7 @@ description: >- weight: 10 --- {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango AI Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/ai-suite/reference/mlflow.md b/site/content/ai-suite/reference/mlflow.md index f2b3d05031..c53c67f375 100644 --- a/site/content/ai-suite/reference/mlflow.md +++ b/site/content/ai-suite/reference/mlflow.md @@ -7,7 +7,7 @@ description: >- weight: 25 --- {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango AI Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/ai-suite/reference/retriever.md b/site/content/ai-suite/reference/retriever.md index 5949d8a369..6b9de85563 100644 --- a/site/content/ai-suite/reference/retriever.md +++ b/site/content/ai-suite/reference/retriever.md @@ -7,7 +7,7 @@ description: >- weight: 15 --- {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango AI Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/ai-suite/reference/triton-inference-server.md b/site/content/ai-suite/reference/triton-inference-server.md index 458226743e..5541df6505 100644 --- a/site/content/ai-suite/reference/triton-inference-server.md +++ b/site/content/ai-suite/reference/triton-inference-server.md @@ -6,7 +6,7 @@ description: >- weight: 30 --- {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango AI Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/_index.md b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/_index.md index e35a9f0e33..c77f38c282 100644 --- a/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/_index.md +++ b/site/content/arangodb/3.10/develop/integrations/spring-data-arangodb/reference-version-3/_index.md @@ -1,5 +1,5 @@ --- -title: Spring Data ArangoDB - Reference (version 3) +title: Spring Data ArangoDB - Reference (v3.0) menuTitle: Reference version 3 weight: 6 description: '' diff --git a/site/content/arangodb/3.11/about/features/community-edition.md b/site/content/arangodb/3.11/about/features/community-edition.md index 9953335cf1..2571373961 100644 --- a/site/content/arangodb/3.11/about/features/community-edition.md +++ b/site/content/arangodb/3.11/about/features/community-edition.md @@ -117,23 +117,23 @@ see [arangodb.com/community-server/](https://www.arangodb.com/community-server/) match up documents from different collections, allowing normalized data models. - **Advanced Path-Finding with Multiple Algorithms**: - Graphs can be [traversed](../../aql/graphs/traversals-explained.md) with AQL to + Graphs can be [traversed](../../aql/graph-queries/traversals-explained.md) with AQL to retrieve direct and indirect neighbor nodes using a fixed or variable depth. - The [traversal order](../../aql/graphs/traversals.md) can be + The [traversal order](../../aql/graph-queries/traversals.md) can be depth-first, breadth-first, or in order of increasing edge weights ("Weighted Traversals"). Stop conditions for pruning paths are supported. - Traversal algorithms to get a [shortest path](../../aql/graphs/shortest-path.md), - [all shortest paths](../../aql/graphs/all-shortest-paths.md), paths in order of - increasing length ("[k Shortest Paths](../../aql/graphs/k-shortest-paths.md)"), + Traversal algorithms to get a [shortest path](../../aql/graph-queries/shortest-path.md), + [all shortest paths](../../aql/graph-queries/all-shortest-paths.md), paths in order of + increasing length ("[k Shortest Paths](../../aql/graph-queries/k-shortest-paths.md)"), and to enumerate all paths between two vertices - ("[k Paths](../../aql/graphs/k-paths.md)") are available, too. + ("[k Paths](../../aql/graph-queries/k-paths.md)") are available, too. - [**Pregel**](../../data-science/pregel/_index.md): Iterative graph processing for single servers with pre-built algorithms like PageRank, Connected Components, and Label Propagation. Cluster support requires the Enterprise Edition. -- [**ArangoSearch for Text Search and Ranking**](../../index-and-search/arangosearch/_index.md): +- [**ArangoSearch for Text Search and Ranking**](../../indexes-and-search/arangosearch/_index.md): A built-in search engine for full-text, complex data structures, and more. Exact value matching, range queries, prefix matching, case-insensitive and accent-insensitive search. Token, phrase, wildcard, and fuzzy search support @@ -185,34 +185,34 @@ see [arangodb.com/community-server/](https://www.arangodb.com/community-server/) ## Performance -- [**Persistent Indexes**](../../index-and-search/indexing/basics.md#persistent-index): +- [**Persistent Indexes**](../../indexes-and-search/indexing/basics.md#persistent-index): Indexes are stored on disk to enable fast server restarts. You can create secondary indexes over one or multiple fields, optionally with a uniqueness constraint. A "sparse" option to only index non-null values is also available. The elements of an array can be indexed individually. -- [**Inverted indexes**](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md): +- [**Inverted indexes**](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md): An eventually consistent index type that can accelerate a broad range of queries from simple to complex, including full-text search. -- [**Vertex-centric Indexes**](../../index-and-search/indexing/basics.md#vertex-centric-indexes): +- [**Vertex-centric Indexes**](../../indexes-and-search/indexing/basics.md#vertex-centric-indexes): Secondary indexes for more efficient graph traversals with filter conditions. -- [**Time-to-Live (TTL) Indexes**](../../index-and-search/indexing/basics.md#ttl-time-to-live-index): +- [**Time-to-Live (TTL) Indexes**](../../indexes-and-search/indexing/basics.md#ttl-time-to-live-index): Time-based removal of expired documents. -- [**Geo-spatial Indexes**](../../index-and-search/indexing/basics.md#geo-index): +- [**Geo-spatial Indexes**](../../indexes-and-search/indexing/basics.md#geo-index): Accelerated geo-spatial queries for locations and GeoJSON objects, based on the S2 library. <!-- TODO: list supported queries? Centroid-limitations? --> Support for composable, distance-based geo-queries ("geo cursors"). {{% comment %}} Experimental feature -- [**Multi-dimensional indexes**](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): +- [**Multi-dimensional indexes**](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): An index type to efficiently intersect multiple range queries, like finding all appointments that intersect a time range. {{% /comment %}} -- [**Background Indexing**](../../index-and-search/indexing/basics.md#creating-indexes-in-background): +- [**Background Indexing**](../../indexes-and-search/indexing/basics.md#creating-indexes-in-background): Indexes can be created in the background to not block queries in the meantime. - [**Index cache refilling**](../../release-notes/version-3.11/whats-new-in-3-11.md#index-cache-refilling): diff --git a/site/content/arangodb/3.11/about/features/enterprise-edition.md b/site/content/arangodb/3.11/about/features/enterprise-edition.md index 8e962a4a34..e764fb7b78 100644 --- a/site/content/arangodb/3.11/about/features/enterprise-edition.md +++ b/site/content/arangodb/3.11/about/features/enterprise-edition.md @@ -54,11 +54,11 @@ features outlined below. For additional information, see - [**Parallel index creation**](../../release-notes/version-3.10/whats-new-in-3-10.md#parallel-index-creation-enterprise-edition): Non-unique indexes can be created with multiple threads in parallel. -- [**`minhash` Analyzer**](../../index-and-search/analyzers.md#minhash): +- [**`minhash` Analyzer**](../../indexes-and-search/analyzers.md#minhash): Jaccard similarity approximation for entity resolution, such as for finding duplicate records, based on how many elements they have in common -- [**`geo_s2` Analyzer**](../../index-and-search/analyzers.md#geo_s2): +- [**`geo_s2` Analyzer**](../../indexes-and-search/analyzers.md#geo_s2): Efficiently index geo-spatial data using different binary formats, tuning the size on disk, the precision, and query performance. @@ -76,15 +76,15 @@ features outlined below. For additional information, see - [**Pregel in Cluster**](../../data-science/pregel/_index.md#prerequisites): Distributed iterative graph analytics for cluster deployments. -- [**Search highlighting**](../../index-and-search/arangosearch/search-highlighting.md): +- [**Search highlighting**](../../indexes-and-search/arangosearch/search-highlighting.md): Get the substring positions of matched terms, phrases, or _n_-grams. -- [**Nested search**](../../index-and-search/arangosearch/nested-search.md): +- [**Nested search**](../../indexes-and-search/arangosearch/nested-search.md): Match arrays of objects with all the conditions met by a single sub-object, and define for how many of the elements this must be true. {{% comment %}} Experimental feature -- **[`classification`](../../index-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../../index-and-search/analyzers.md#nearest_neighbors)**: +- **[`classification`](../../indexes-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../../indexes-and-search/analyzers.md#nearest_neighbors)**: Classification of text tokens and finding similar tokens using supervised fastText word embedding models. {{% /comment %}} diff --git a/site/content/arangodb/3.11/about/features/highlights-by-version.md b/site/content/arangodb/3.11/about/features/highlights-by-version.md index db66538908..31b1aabf21 100644 --- a/site/content/arangodb/3.11/about/features/highlights-by-version.md +++ b/site/content/arangodb/3.11/about/features/highlights-by-version.md @@ -28,7 +28,7 @@ aliases: stored values, primary sort columns, and primary key columns in memory to improve the performance of Views and inverted indexes. -- [**`geo_s2` Analyzer**](../../index-and-search/analyzers.md#geo_s2): +- [**`geo_s2` Analyzer**](../../indexes-and-search/analyzers.md#geo_s2): Efficiently index geo-spatial data using different binary formats, tuning the size on disk, the precision, and query performance. @@ -46,7 +46,7 @@ Also see [What's New in 3.11](../../release-notes/version-3.11/whats-new-in-3-11 Persistent document attributes that are generated when documents are created or modified, using an AQL expression. -- [**Inverted indexes**](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md): +- [**Inverted indexes**](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md): A new, eventually consistent index type that can accelerate a broad range of queries, providing similar search capabilities as `arangosearch` Views, but defined per collection and simpler to use. @@ -57,12 +57,12 @@ Also see [What's New in 3.11](../../release-notes/version-3.11/whats-new-in-3-11 alternative to `arangosearch` Views. - **Persistent indexes**: - An optional [**In-memory Cache**](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values) - for faster lookups and [**Stored Values**](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes) + An optional [**In-memory Cache**](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values) + for faster lookups and [**Stored Values**](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes) to let persistent indexes cover additional attributes of projections. - **AQL Graph Traversals**: - [All Shortest Paths](../../aql/graphs/all-shortest-paths.md) allows you to query + [All Shortest Paths](../../aql/graph-queries/all-shortest-paths.md) allows you to query for all paths of shortest length between two documents. **Enterprise Edition** @@ -70,15 +70,15 @@ Also see [What's New in 3.11](../../release-notes/version-3.11/whats-new-in-3-11 - [**EnterpriseGraphs**](../../graphs/enterprisegraphs/_index.md): A new specialized version of SmartGraphs, with an automatic sharding key selection. -- [**Search highlighting**](../../index-and-search/arangosearch/search-highlighting.md): +- [**Search highlighting**](../../indexes-and-search/arangosearch/search-highlighting.md): Get the substring positions of matched terms, phrases, or _n_-grams. -- [**Nested search**](../../index-and-search/arangosearch/nested-search.md): +- [**Nested search**](../../indexes-and-search/arangosearch/nested-search.md): Match arrays of objects with all the conditions met by a single sub-object, and define for how many of the elements this must be true. - **ArangoSearch**: - New [`minhash` Analyzer](../../index-and-search/analyzers.md#minhash) for locality-sensitive hashing + New [`minhash` Analyzer](../../indexes-and-search/analyzers.md#minhash) for locality-sensitive hashing to approximate the Jaccard similarity, with inverted index and `arangosearch` View support that allows you to implement entity resolution. @@ -101,9 +101,9 @@ Also see [What's New in 3.10](../../release-notes/version-3.10/whats-new-in-3-10 **All Editions** - **ArangoSearch**: - New [**Segmentation Analyzer**](../../index-and-search/analyzers.md#segmentation) + New [**Segmentation Analyzer**](../../indexes-and-search/analyzers.md#segmentation) for language-agnostic tokenization of text. - A [**Collation Analyzer**](../../index-and-search/analyzers.md#collation) + A [**Collation Analyzer**](../../indexes-and-search/analyzers.md#collation) to honor the alphabetical order of the specified language in range queries. **Enterprise Edition** @@ -125,16 +125,16 @@ Also see [What's New in 3.9](../../release-notes/version-3.9/whats-new-in-3-9.md match a given length. - **ArangoSearch**: - New [**Pipeline Analyzer**](../../index-and-search/analyzers.md#pipeline) + New [**Pipeline Analyzer**](../../indexes-and-search/analyzers.md#pipeline) that allows you to combine multiple Analyzers, enabling case-insensitive _n_-gram-based fuzzy search and more. New - [**AQL Analyzer**](../../index-and-search/analyzers.md#aql) + [**AQL Analyzer**](../../indexes-and-search/analyzers.md#aql) so that you can use an AQL query to pre-process and filter your data for indexing. Support for **geo-spatial queries** through new - [Geo](../../index-and-search/analyzers.md#geojson) - [Analyzers](../../index-and-search/analyzers.md#geopoint) and + [Geo](../../indexes-and-search/analyzers.md#geojson) + [Analyzers](../../indexes-and-search/analyzers.md#geopoint) and [ArangoSearch Geo functions](../../aql/functions/arangosearch.md#geo-functions). - A new [**Stop words Analyzer**](../../index-and-search/analyzers.md#stopwords) that + A new [**Stop words Analyzer**](../../indexes-and-search/analyzers.md#stopwords) that can be used standalone or in an Analyzer pipeline. - A [**`WINDOW` operation**](../../aql/high-level-operations/window.md) for aggregations over @@ -243,15 +243,15 @@ Also see [What's New in 3.6](../../release-notes/version-3.6/whats-new-in-3-6.md - **ArangoSearch**: The search and ranking engine received an upgrade and now features - [Configurable Analyzers](../../index-and-search/analyzers.md), - [Sorted Views](../../index-and-search/arangosearch/performance.md#primary-sort-order) + [Configurable Analyzers](../../indexes-and-search/analyzers.md), + [Sorted Views](../../indexes-and-search/arangosearch/performance.md#primary-sort-order) and several improvements to the [AQL integration](../../release-notes/version-3.5/whats-new-in-3-5.md#arangosearch). - **AQL Graph Traversals**: - [k Shortest Paths](../../aql/graphs/k-shortest-paths.md) allows you to query not + [k Shortest Paths](../../aql/graph-queries/k-shortest-paths.md) allows you to query not just for one shortest path between two documents but multiple, sorted by - length or weight. With [PRUNE](../../aql/graphs/traversals.md#pruning) you can + length or weight. With [PRUNE](../../aql/graph-queries/traversals.md#pruning) you can stop walking down certain paths early in a graph traversal to improve its efficiency. @@ -259,8 +259,8 @@ Also see [What's New in 3.6](../../release-notes/version-3.6/whats-new-in-3-6.md Perform multi-document transactions with individual begin and commit / abort commands using the new HTTP endpoints or via a supported driver. -- [**Time-to-Live**](../../index-and-search/indexing/basics.md#ttl-time-to-live-index) - [**Indexes**](../../index-and-search/indexing/working-with-indexes/ttl-indexes.md): +- [**Time-to-Live**](../../indexes-and-search/indexing/basics.md#ttl-time-to-live-index) + [**Indexes**](../../indexes-and-search/indexing/working-with-indexes/ttl-indexes.md): TTL indexes can be used to automatically remove documents in collections for use cases like expiring sessions or automatic purging of statistics or logs. @@ -298,7 +298,7 @@ Also see [What's New in 3.5](../../release-notes/version-3.5/whats-new-in-3-5.md **All Editions** -- [**ArangoSearch**](../../index-and-search/arangosearch/_index.md): +- [**ArangoSearch**](../../indexes-and-search/arangosearch/_index.md): Search and similarity ranking engine integrated natively into ArangoDB and AQL. ArangoSearch combines Boolean retrieval capabilities with generalized ranking algorithms (BM25, TFDIF). Support of e.g. relevance-based searching, @@ -308,7 +308,7 @@ Also see [What's New in 3.5](../../release-notes/version-3.5/whats-new-in-3-5.md English, German, French, Chinese, Spanish and many other language. - [**GeoJSON Support**](../../aql/functions/geo.md) and - [**S2 Geo Index**](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ArangoDB now supports all geo primitives. + [**S2 Geo Index**](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ArangoDB now supports all geo primitives. (Multi-)Point, (Multi-)LineStrings, (Multi-)Polygons or intersections can be defined and queried for. The Google S2 geo index is optimized for RocksDB and enables efficient querying. Geo query results are automatically visualized @@ -403,7 +403,7 @@ Also see [What's New in 3.2](../../release-notes/version-3.2/whats-new-in-3-2.md **All Editions** -- [**Vertex-centric indexes**](../../index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md): +- [**Vertex-centric indexes**](../../indexes-and-search/indexing/working-with-indexes/vertex-centric-indexes.md): AQL traversal queries can utilize secondary edge collection indexes for better performance against graphs with supernodes. @@ -432,12 +432,12 @@ Also see [What's New in 3.1](../../release-notes/version-3.1/whats-new-in-3-1.md synchronous replication, master/master setup, shared nothing architecture, cluster management Agency. -- Deeply integrated, native [**AQL graph traversal**](../../aql/graphs/_index.md) +- Deeply integrated, native [**AQL graph traversal**](../../aql/graph-queries/_index.md) - [**VelocyPack**](https://github.com/arangodb/velocypack) as new internal binary storage format as well as for intermediate AQL values. -- [**Persistent indexes**](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md) via RocksDB suitable +- [**Persistent indexes**](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md) via RocksDB suitable for sorting and range queries. - [**Foxx 3.0**](../../develop/foxx-microservices/_index.md): overhauled JS framework for data-centric diff --git a/site/content/arangodb/3.11/about/use-cases.md b/site/content/arangodb/3.11/about/use-cases.md index 0128025595..bb315658b9 100644 --- a/site/content/arangodb/3.11/about/use-cases.md +++ b/site/content/arangodb/3.11/about/use-cases.md @@ -148,7 +148,7 @@ It also features natural language processing (NLP) capabilities. and can classify or find similar terms using word embedding models. {{% /comment %}} -For more information about the search engine, see [ArangoSearch](../index-and-search/arangosearch/_index.md). +For more information about the search engine, see [ArangoSearch](../indexes-and-search/arangosearch/_index.md). ## ArangoDB for Machine Learning diff --git a/site/content/arangodb/3.11/aql/examples-and-query-patterns/joins.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/joins.md index ae2ec7b2b5..5c7e3d3c48 100644 --- a/site/content/arangodb/3.11/aql/examples-and-query-patterns/joins.md +++ b/site/content/arangodb/3.11/aql/examples-and-query-patterns/joins.md @@ -431,7 +431,7 @@ arangosh> db.written.save("authors/2938210813", ``` In order to get all books with their authors, you can use a -[graph traversal](../graphs/traversals.md#working-with-collection-sets): +[graph traversal](../graph-queries/traversals.md#working-with-collection-sets): ```js arangosh> db._query( diff --git a/site/content/arangodb/3.11/aql/examples-and-query-patterns/traversals.md b/site/content/arangodb/3.11/aql/examples-and-query-patterns/traversals.md index 08296c64e4..ed6745de4a 100644 --- a/site/content/arangodb/3.11/aql/examples-and-query-patterns/traversals.md +++ b/site/content/arangodb/3.11/aql/examples-and-query-patterns/traversals.md @@ -7,7 +7,7 @@ description: >- --- ## Finding the start vertex via a geo query -Our first example will locate the start vertex for a graph traversal via [a geo index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). +Our first example will locate the start vertex for a graph traversal via [a geo index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). We use the [City Graph](../../graphs/example-graphs.md#city-graph) and its geo indexes: ![Cities Example Graph](../../../../images/cities_graph.png) diff --git a/site/content/arangodb/3.11/aql/functions/arangosearch.md b/site/content/arangodb/3.11/aql/functions/arangosearch.md index 2672ed25dd..e38d698345 100644 --- a/site/content/arangodb/3.11/aql/functions/arangosearch.md +++ b/site/content/arangodb/3.11/aql/functions/arangosearch.md @@ -16,7 +16,7 @@ such as `PHRASE(doc.text, "foo bar", "text_en")`, for querying Views. You can combine ArangoSearch filter and context functions as well as operators like `AND` and `OR` to form complex search conditions. Similarly, the [`FILTER` operation](../high-level-operations/filter.md) accepts such search expressions -when using [inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md). +when using [inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md). Scoring functions allow you to rank matches and to sort results by relevance. They are limited to Views. @@ -27,7 +27,7 @@ They are limited to Views. You can use most functions also without an inverted index or a View and the `SEARCH` keyword, but then they are not accelerated by an index. -See [Information Retrieval with ArangoSearch](../../index-and-search/arangosearch/_index.md) for an +See [Information Retrieval with ArangoSearch](../../indexes-and-search/arangosearch/_index.md) for an introduction. ## Context Functions @@ -59,7 +59,7 @@ not an ArangoSearch function but a regular string function which can be used outside of `SEARCH` operations. - **expr** (expression): any valid search expression -- **analyzer** (string): name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string): name of an [Analyzer](../../indexes-and-search/analyzers.md). - returns **retVal** (any): the expression result that it wraps #### Example: Using a custom Analyzer @@ -266,7 +266,7 @@ by the specified `analyzer`. - **path** (attribute path expression): the attribute to test in the document - **type** (string): string literal `"analyzer"` -- **analyzer** (string, _optional_): name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string, _optional_): name of an [Analyzer](../../indexes-and-search/analyzers.md). Uses the Analyzer of a wrapping `ANALYZER()` call if not specified or defaults to `"identity"` - returns nothing: the function evaluates to a boolean, but this value cannot be @@ -285,8 +285,8 @@ FOR doc IN viewName `EXISTS(path, "nested")` Match documents where the attribute at `path` is present _and_ is indexed -as a nested field for [nested search with Views](../../index-and-search/arangosearch/nested-search.md) -or [inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search-enterprise-edition). +as a nested field for [nested search with Views](../../indexes-and-search/arangosearch/nested-search.md) +or [inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search-enterprise-edition). - **path** (attribute path expression): the attribute to test in the document - **type** (string): string literal `"nested"` @@ -355,7 +355,7 @@ and `false`), but the data type must be the same for both. The alphabetical order of characters is not taken into account by ArangoSearch, i.e. range queries in SEARCH operations against Views will not follow the language rules as per the defined Analyzer locale (except for the -[`collation` Analyzer](../../index-and-search/analyzers.md#collation)) nor the server language +[`collation` Analyzer](../../indexes-and-search/analyzers.md#collation)) nor the server language (startup option `--default-language`)! Also see [Known Issues](../../release-notes/version-3.11/known-issues-in-3-11.md#arangosearch). {{< /warning >}} @@ -461,7 +461,7 @@ To only compute the MinHash signatures, see the - **target** (string): the string to hash with the specified Analyzer and to compare against the stored attribute - **threshold** (number, _optional_): a value between `0.0` and `1.0`. -- **analyzer** (string): the name of a [`minhash` Analyzer](../../index-and-search/analyzers.md#minhash). +- **analyzer** (string): the name of a [`minhash` Analyzer](../../indexes-and-search/analyzers.md#minhash). - returns **fulfilled** (bool): `true` if the approximate Jaccard similarity is greater than or equal to the specified threshold, `false` otherwise @@ -509,7 +509,7 @@ for calculating _n_-gram similarity that cannot be accelerated by a View index. - **target** (string): the string to compare against the stored attribute - **threshold** (number, _optional_): a value between `0.0` and `1.0`. Defaults to `0.7` if none is specified. -- **analyzer** (string): the name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string): the name of an [Analyzer](../../indexes-and-search/analyzers.md). - returns **fulfilled** (bool): `true` if the evaluated _n_-gram similarity value is greater than or equal to the specified threshold, `false` otherwise @@ -590,7 +590,7 @@ array as second argument. to string and array tokens, but not for object tokens. - **skipTokens** (number, _optional_): amount of tokens to treat as wildcards -- **analyzer** (string, _optional_): name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string, _optional_): name of an [Analyzer](../../indexes-and-search/analyzers.md). Uses the Analyzer of a wrapping `ANALYZER()` call if not specified or defaults to `"identity"` - returns nothing: the function evaluates to a boolean, but this value cannot be @@ -779,7 +779,7 @@ to match the document. The alphabetical order of characters is not taken into account by ArangoSearch, i.e. range queries in SEARCH operations against Views will not follow the language rules as per the defined Analyzer locale (except for the -[`collation` Analyzer](../../index-and-search/analyzers.md#collation)) nor the server language +[`collation` Analyzer](../../indexes-and-search/analyzers.md#collation)) nor the server language (startup option `--default-language`)! Also see [Known Issues](../../release-notes/version-3.11/known-issues-in-3-11.md#arangosearch). {{< /warning >}} @@ -1358,4 +1358,4 @@ db._query(` ~analyzers.remove(analyzer.name); ``` -For full examples, see [Search Highlighting](../../index-and-search/arangosearch/search-highlighting.md). +For full examples, see [Search Highlighting](../../indexes-and-search/arangosearch/search-highlighting.md). diff --git a/site/content/arangodb/3.11/aql/functions/date.md b/site/content/arangodb/3.11/aql/functions/date.md index 272e384e0b..8e6904215b 100644 --- a/site/content/arangodb/3.11/aql/functions/date.md +++ b/site/content/arangodb/3.11/aql/functions/date.md @@ -72,7 +72,7 @@ You are free to store age determinations of specimens, incomplete or fuzzy dates the like in different, more appropriate ways of course. AQL's date functions are most certainly not of any help for such dates, but you can still use language constructs like [SORT](../high-level-operations/sort.md) (which also supports sorting of arrays) -and [indexes](../../index-and-search/indexing/_index.md). +and [indexes](../../indexes-and-search/indexing/_index.md). ## Current date and time @@ -1283,7 +1283,7 @@ There are two recommended ways to store timestamps in ArangoDB: The sort order of both is identical due to the sort properties of ISO date strings. You can't mix both types, numbers and strings, in a single attribute however. -You can use [persistent indexes](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md) with both date types. +You can use [persistent indexes](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md) with both date types. When choosing string representations, you can work with string comparisons (less than, greater than etc.) to express time ranges in your queries while still utilizing persistent indexes: diff --git a/site/content/arangodb/3.11/aql/functions/fulltext.md b/site/content/arangodb/3.11/aql/functions/fulltext.md index 54a0cd35bc..ce1c8f738c 100644 --- a/site/content/arangodb/3.11/aql/functions/fulltext.md +++ b/site/content/arangodb/3.11/aql/functions/fulltext.md @@ -5,13 +5,13 @@ weight: 30 description: >- AQL offers functions to filter data using fulltext indexes --- -See [fulltext indexes](../../index-and-search/indexing/working-with-indexes/fulltext-indexes.md) +See [fulltext indexes](../../indexes-and-search/indexing/working-with-indexes/fulltext-indexes.md) for details. {{< warning >}} The fulltext index type is deprecated from version 3.10 onwards. -It is recommended to use [Inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md) or -[ArangoSearch](../../index-and-search/arangosearch/_index.md) for advanced full-text search capabilities. +It is recommended to use [Inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md) or +[ArangoSearch](../../indexes-and-search/arangosearch/_index.md) for advanced full-text search capabilities. {{< /warning >}} ## FULLTEXT() diff --git a/site/content/arangodb/3.11/aql/functions/geo.md b/site/content/arangodb/3.11/aql/functions/geo.md index cf5b3f8a2d..a34fbc1738 100644 --- a/site/content/arangodb/3.11/aql/functions/geo.md +++ b/site/content/arangodb/3.11/aql/functions/geo.md @@ -12,7 +12,7 @@ You can model geo-spatial information in different ways using the data types available in ArangoDB. The recommended way is to use objects with **GeoJSON** geometry but you can also use **longitude and latitude coordinate pairs** for points. Both models are supported by -[Geo-Spatial Indexes](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). +[Geo-Spatial Indexes](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). ### Coordinate pairs @@ -332,7 +332,7 @@ lies South of the parallel of latitude at 54 degrees. {{< info >}} ArangoDB version before 3.10 did an inconsistent special detection of "rectangle" polygons that later versions from 3.10 onward no longer do, see -[Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons). +[Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons). {{< /info >}} Furthermore, there is an issue with the interpretation of linear rings @@ -381,7 +381,7 @@ ArangoDB versions before 3.10 did not follow this rule and always took the "smaller" connected component of the surface as the "interior" of the polygon. This made it impossible to specify polygons which covered more than half of the sphere. From version 3.10 onward, ArangoDB recognizes this correctly. -See [Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) +See [Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for how to deal with this issue. ## Geo utility functions @@ -389,7 +389,7 @@ for how to deal with this issue. The following helper functions **can** use geo indexes, but do not have to in all cases. You can use all of these functions in combination with each other, and if you have configured a geo index it may be utilized, -see [Geo Indexing](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). +see [Geo Indexing](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). ### DISTANCE() @@ -444,7 +444,7 @@ boundary edges! {{< /info >}} You can optimize queries that contain a `FILTER` expression of the following -form with an S2-based [geospatial index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): +form with an S2-based [geospatial index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ```aql FOR doc IN coll @@ -488,7 +488,7 @@ FOR doc IN collectionName ``` You can optimize queries that contain a `FILTER` expression of the following -form with an S2-based [geospatial index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): +form with an S2-based [geospatial index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ```aql FOR doc IN coll @@ -578,7 +578,7 @@ intersects with `geoJsonB` (i.e. at least one point in B is also in A or vice-ve - returns **bool** (bool): true if B intersects A, false otherwise You can optimize queries that contain a `FILTER` expression of the following -form with an S2-based [geospatial index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): +form with an S2-based [geospatial index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ```aql FOR doc IN coll @@ -843,7 +843,7 @@ Please use the [Geo utility functions](#geo-utility-functions) instead. {{< /warning >}} AQL offers the following functions to filter data based on -[geo indexes](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). These functions require the collection +[geo indexes](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). These functions require the collection to have at least one geo index. If no geo index can be found, calling this function will fail with an error at runtime. There is no error when explaining the query however. diff --git a/site/content/arangodb/3.11/aql/functions/string.md b/site/content/arangodb/3.11/aql/functions/string.md index 772f3c663e..56313056d7 100644 --- a/site/content/arangodb/3.11/aql/functions/string.md +++ b/site/content/arangodb/3.11/aql/functions/string.md @@ -1704,7 +1704,7 @@ of in number of characters. This function is intended to be used together with the [`OFFSET_INFO()` function](arangosearch.md#offset_info) for -[search highlighting](../../index-and-search/arangosearch/search-highlighting.md). +[search highlighting](../../indexes-and-search/arangosearch/search-highlighting.md). - **value** (string): a string - **offset** (number): start at this byte of the UTF-8 encoded string. @@ -1783,7 +1783,7 @@ A wrapping `ANALYZER()` call in a search expression does not affect the - **input** (string\|array): text to tokenize. Accepts recursive arrays of strings. -- **analyzer** (string): name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string): name of an [Analyzer](../../indexes-and-search/analyzers.md). - returns **tokenArray** (array): array of strings with zero or more elements, each element being a token. diff --git a/site/content/arangodb/3.11/aql/fundamentals/limitations.md b/site/content/arangodb/3.11/aql/fundamentals/limitations.md index 1eeb785116..35c488c31d 100644 --- a/site/content/arangodb/3.11/aql/fundamentals/limitations.md +++ b/site/content/arangodb/3.11/aql/fundamentals/limitations.md @@ -50,7 +50,7 @@ The following design limitations are known for AQL queries: - It is not possible to use a collection in a read operation after it was used for a write operation in the same AQL query. - In the cluster, all collections that are accessed **dynamically** by - [traversals working with collection sets](../graphs/traversals.md#working-with-collection-sets) + [traversals working with collection sets](../graph-queries/traversals.md#working-with-collection-sets) (instead of named graphs) must be stated in the query's initial [`WITH` statement](../high-level-operations/with.md). To make the `WITH` statement required in single server as well (e.g. for testing a migration to cluster), diff --git a/site/content/arangodb/3.11/aql/fundamentals/syntax.md b/site/content/arangodb/3.11/aql/fundamentals/syntax.md index dd2177a519..f07b1ee2ad 100644 --- a/site/content/arangodb/3.11/aql/fundamentals/syntax.md +++ b/site/content/arangodb/3.11/aql/fundamentals/syntax.md @@ -167,18 +167,18 @@ based on the context: [REPLACE](../high-level-operations/replace.md#query-options) / [UPSERT](../high-level-operations/upsert.md#query-options) / [REMOVE](../high-level-operations/remove.md#query-options) operation / - [Graph Traversal](../graphs/traversals.md) / - [Shortest Path](../graphs/shortest-path.md#path-search-options) / - [k Shortest Paths](../graphs/k-shortest-paths.md#path-search-options) / + [Graph Traversal](../graph-queries/traversals.md) / + [Shortest Path](../graph-queries/shortest-path.md#path-search-options) / + [k Shortest Paths](../graph-queries/k-shortest-paths.md#path-search-options) / - `PRUNE` – - [Graph Traversal](../graphs/traversals.md#pruning) (`FOR` operation variant) + [Graph Traversal](../graph-queries/traversals.md#pruning) (`FOR` operation variant) - `SEARCH` – [SEARCH](../high-level-operations/search.md) operation - `TO` – - [Shortest Path](../graphs/shortest-path.md) / - [All Shortest Paths](../graphs/all-shortest-paths.md) / - [k Shortest Paths](../graphs/k-shortest-paths.md) / - [k Paths](../graphs/k-paths.md) + [Shortest Path](../graph-queries/shortest-path.md) / + [All Shortest Paths](../graph-queries/all-shortest-paths.md) / + [k Shortest Paths](../graph-queries/k-shortest-paths.md) / + [k Paths](../graph-queries/k-paths.md) Last but not least, there are special variables which are available in certain contexts. Unlike keywords, they are **case-sensitive**: diff --git a/site/content/arangodb/3.11/aql/graphs/_index.md b/site/content/arangodb/3.11/aql/graph-queries/_index.md similarity index 97% rename from site/content/arangodb/3.11/aql/graphs/_index.md rename to site/content/arangodb/3.11/aql/graph-queries/_index.md index ef7d7d79e1..99bf3dd6e7 100644 --- a/site/content/arangodb/3.11/aql/graphs/_index.md +++ b/site/content/arangodb/3.11/aql/graph-queries/_index.md @@ -1,6 +1,6 @@ --- -title: Graphs in AQL -menuTitle: Graphs +title: Graph queries in AQL +menuTitle: Graph queries weight: 35 description: >- You can perform graph traversals and path searches on named graphs as well as diff --git a/site/content/arangodb/3.11/aql/graphs/all-shortest-paths.md b/site/content/arangodb/3.11/aql/graph-queries/all-shortest-paths.md similarity index 100% rename from site/content/arangodb/3.11/aql/graphs/all-shortest-paths.md rename to site/content/arangodb/3.11/aql/graph-queries/all-shortest-paths.md diff --git a/site/content/arangodb/3.11/aql/graphs/k-paths.md b/site/content/arangodb/3.11/aql/graph-queries/k-paths.md similarity index 100% rename from site/content/arangodb/3.11/aql/graphs/k-paths.md rename to site/content/arangodb/3.11/aql/graph-queries/k-paths.md diff --git a/site/content/arangodb/3.11/aql/graphs/k-shortest-paths.md b/site/content/arangodb/3.11/aql/graph-queries/k-shortest-paths.md similarity index 100% rename from site/content/arangodb/3.11/aql/graphs/k-shortest-paths.md rename to site/content/arangodb/3.11/aql/graph-queries/k-shortest-paths.md diff --git a/site/content/arangodb/3.11/aql/graphs/shortest-path.md b/site/content/arangodb/3.11/aql/graph-queries/shortest-path.md similarity index 100% rename from site/content/arangodb/3.11/aql/graphs/shortest-path.md rename to site/content/arangodb/3.11/aql/graph-queries/shortest-path.md diff --git a/site/content/arangodb/3.11/aql/graphs/traversals-explained.md b/site/content/arangodb/3.11/aql/graph-queries/traversals-explained.md similarity index 100% rename from site/content/arangodb/3.11/aql/graphs/traversals-explained.md rename to site/content/arangodb/3.11/aql/graph-queries/traversals-explained.md diff --git a/site/content/arangodb/3.11/aql/graphs/traversals.md b/site/content/arangodb/3.11/aql/graph-queries/traversals.md similarity index 100% rename from site/content/arangodb/3.11/aql/graphs/traversals.md rename to site/content/arangodb/3.11/aql/graph-queries/traversals.md diff --git a/site/content/arangodb/3.11/aql/high-level-operations/for.md b/site/content/arangodb/3.11/aql/high-level-operations/for.md index 6c80f9d921..fd5fb14275 100644 --- a/site/content/arangodb/3.11/aql/high-level-operations/for.md +++ b/site/content/arangodb/3.11/aql/high-level-operations/for.md @@ -12,7 +12,7 @@ The general syntax for iterating over collections and arrays is: <pre><code>FOR <em>variableName</em> IN <em>expression</em></code></pre> -There is also a special variant for [graph traversals](../graphs/traversals.md): +There is also a special variant for [graph traversals](../graph-queries/traversals.md): <pre><code>FOR <em>vertexVariableName</em> [, <em>edgeVariableName</em> [, <em>pathVariableName</em> ] ] IN <em>traversalExpression</em></code></pre> @@ -208,7 +208,7 @@ there are a few corner cases where it can make sense: {{< info >}} Starting with version 3.10, `maxProjections` can be used in -[Graph Traversals](../graphs/traversals.md#working-with-named-graphs) (Enterprise Edition only). +[Graph Traversals](../graph-queries/traversals.md#working-with-named-graphs) (Enterprise Edition only). {{< /info >}} ### `useCache` @@ -237,7 +237,7 @@ cache cannot be used (i.e. because the query's filter condition does not contain equality lookups for all index attributes). It cannot be used for `FOR` operations that iterate over Views or perform graph traversals. -Also see [Caching of index values](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values). +Also see [Caching of index values](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values). ### `lookahead` @@ -248,4 +248,4 @@ tweaking performance: FOR … IN … OPTIONS { lookahead: 32 } ``` -See [Multi-dimensional indexes](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md#lookahead-index-hint). +See [Multi-dimensional indexes](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md#lookahead-index-hint). diff --git a/site/content/arangodb/3.11/aql/high-level-operations/search.md b/site/content/arangodb/3.11/aql/high-level-operations/search.md index c0a3084152..ae0fdfded0 100644 --- a/site/content/arangodb/3.11/aql/high-level-operations/search.md +++ b/site/content/arangodb/3.11/aql/high-level-operations/search.md @@ -26,8 +26,8 @@ The optional `SEARCH` operation provides the capabilities to: - sort the result set based on how closely each document matched the search conditions -See [`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) and -[`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md) on how to set up Views. +See [`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) and +[`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md) on how to set up Views. ## Syntax @@ -121,7 +121,7 @@ FOR doc IN viewName The alphabetical order of characters is not taken into account by ArangoSearch, i.e. range queries in SEARCH operations against Views will not follow the language rules as per the defined Analyzer locale (except for the -[`collation` Analyzer](../../index-and-search/analyzers.md#collation)) nor the server language +[`collation` Analyzer](../../indexes-and-search/analyzers.md#collation)) nor the server language (startup option `--default-language`)! Also see [Known Issues](../../release-notes/version-3.11/known-issues-in-3-11.md#arangosearch). {{< /warning >}} @@ -163,7 +163,7 @@ different outside of `SEARCH`, where `IN` needs to be followed by an array. ### Question mark operator You can use the [Question mark operator](../operators.md#question-mark-operator) -to perform [Nested searches with ArangoSearch](../../index-and-search/arangosearch/nested-search.md) +to perform [Nested searches with ArangoSearch](../../indexes-and-search/arangosearch/nested-search.md) (Enterprise Edition only): ```aql @@ -175,9 +175,9 @@ FOR doc IN myView It allows you to match nested objects in arrays that satisfy multiple conditions each, and optionally define how often these conditions should be fulfilled for the entire array. You need to configure the View specifically for this type of -search using the `nested` property in [`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) -or in the definition of [Inverted Indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search-enterprise-edition) -that you can add to [`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md). +search using the `nested` property in [`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +or in the definition of [Inverted Indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search-enterprise-edition) +that you can add to [`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md). ## Handling of non-indexed fields @@ -233,7 +233,7 @@ FOR doc IN myView ``` You can use the special `includeAllFields` -[`arangosearch` View property](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +[`arangosearch` View property](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) to index all (sub-)attributes of the source documents if desired. ## `SEARCH` with `SORT` @@ -249,7 +249,7 @@ FOR doc IN viewName ``` If the (left-most) fields and their sorting directions match up with the -[primary sort order](../../index-and-search/arangosearch/performance.md#primary-sort-order) definition +[primary sort order](../../indexes-and-search/arangosearch/performance.md#primary-sort-order) definition of the View then the `SORT` operation is optimized away. Apart from simple sorting, it is possible to sort the matched View documents by @@ -317,7 +317,7 @@ search criteria get optimized: - `"none"`: search the index without optimizing the conditions. <!-- Internal only: nodnf, noneg --> -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md#condition-optimization-options) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md#condition-optimization-options) for an example. ### `countApproximate` @@ -333,5 +333,5 @@ You can set it to one of the following values: only (e.g. `SEARCH doc.field == "value"`), the usual eventual consistency of Views aside. -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md#count-approximation) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md#count-approximation) for an example. diff --git a/site/content/arangodb/3.11/aql/high-level-operations/with.md b/site/content/arangodb/3.11/aql/high-level-operations/with.md index d14c1e67b0..66742365dd 100644 --- a/site/content/arangodb/3.11/aql/high-level-operations/with.md +++ b/site/content/arangodb/3.11/aql/high-level-operations/with.md @@ -52,7 +52,7 @@ involved collections. Using named graphs in traversals (`GRAPH "graph-name"`) does not require it either, assuming that all vertices are in collections that are part of the graph, as enforced by the [Graph API](../../develop/http-api/graphs/named-graphs.md). That means, it is only necessary for traversals using anonymous graphs / -[collection sets](../graphs/traversals.md#working-with-collection-sets). +[collection sets](../graph-queries/traversals.md#working-with-collection-sets). The following example query specifies an edge collection `usersHaveManagers` to perform a graph traversal. It is the only explicitly specified collection in diff --git a/site/content/arangodb/3.11/aql/operators.md b/site/content/arangodb/3.11/aql/operators.md index f3bef216f7..d4c551fc29 100644 --- a/site/content/arangodb/3.11/aql/operators.md +++ b/site/content/arangodb/3.11/aql/operators.md @@ -725,8 +725,8 @@ surrounding length check. The following table compares both variants: {.fixed} The question mark operator can be used for nested search (Enterprise Edition only): -- [Nested search with ArangoSearch](../index-and-search/arangosearch/nested-search.md) using Views -- Nested search using [Inverted indexes](../index-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search-enterprise-edition) +- [Nested search with ArangoSearch](../indexes-and-search/arangosearch/nested-search.md) using Views +- Nested search using [Inverted indexes](../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search-enterprise-edition) ## Object operators diff --git a/site/content/arangodb/3.11/components/arangodb-server/environment-variables.md b/site/content/arangodb/3.11/components/arangodb-server/environment-variables.md index 62f73290c9..4188515b33 100644 --- a/site/content/arangodb/3.11/components/arangodb-server/environment-variables.md +++ b/site/content/arangodb/3.11/components/arangodb-server/environment-variables.md @@ -100,7 +100,7 @@ description: >- - `IRESEARCH_TEXT_STOPWORD_PATH` Path to a directory with stop word files for - [ArangoSearch Text Analyzers](../../index-and-search/analyzers.md#text). + [ArangoSearch Text Analyzers](../../indexes-and-search/analyzers.md#text). <!-- ARANGODB_CONFIG_PATH, ICU_DATA, ... (TRI_GETENV, iresearch::getenv) --> diff --git a/site/content/arangodb/3.11/components/tools/_index.md b/site/content/arangodb/3.11/components/tools/_index.md index 318e0379eb..a3b1311828 100644 --- a/site/content/arangodb/3.11/components/tools/_index.md +++ b/site/content/arangodb/3.11/components/tools/_index.md @@ -32,4 +32,4 @@ Additional tools which are available separately: | [Foxx CLI](foxx-cli/_index.md) | Command line tool for managing and developing Foxx services | [kube-arangodb](../../deploy/kubernetes.md) | Operators to manage Kubernetes deployments | [oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) -| [ArangoDB Datasets](arango-datasets.md) | A Python package for loading sample datasets into ArangoDB +| [ArangoDB Datasets](../../../../ecosystem/arango-datasets.md) | A Python package for loading sample datasets into ArangoDB diff --git a/site/content/arangodb/3.11/components/tools/arango-datasets.md b/site/content/arangodb/3.11/components/tools/arango-datasets.md deleted file mode 100644 index a24903550f..0000000000 --- a/site/content/arangodb/3.11/components/tools/arango-datasets.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: ArangoDB Datasets -menuTitle: ArangoDB Datasets -weight: 60 -description: >- - `arango-datasets` is a Python package for loading sample datasets into ArangoDB ---- -You can use the `arango-datasets` package in conjunction with the `python-arango` -driver to load example data into your ArangoDB deployments. The data is hosted -on AWS S3. There are a number of existing datasets already available and you can -view them by calling the `list_datasets()` method as shown below. - -## Install - -To install the Python package, you can use the `pip` command to directly install -it from [PyPi](https://pypi.org/project/arango-datasets/): - -```sh -pip install arango-datasets -``` - -You can find the source code repository of the module on GitHub: -<https://github.com/arangoml/arangodb_datasets> - -## Usage - -Once you have installed the `arango-datasets` package, you can use it to -download and import datasets into your deployment with `arango_datasets.Datasets`. - -The `Datasets` constructor requires a valid [python-arango](../../develop/drivers/python.md) -database object as input. It defines the target deployment, database, and -credentials to load a dataset. - -```py -from arango import ArangoClient -db = ArangoClient(hosts='http://localhost:8529').db("dbName", username="root", password="") -``` - -Pass the database object to the `Datasets` constructor: - -```py -from arango_datasets import Datasets -datasets = Datasets(db) -``` - -List the available datasets: - -```py -print(datasets.list_datasets()) -``` - -List more information about a particular dataset: - -```py -print(datasets.dataset_info("IMDB_X")) -``` - -Import the dataset: - -```py -datasets.load("IMDB_X") -``` diff --git a/site/content/arangodb/3.11/concepts/data-retrieval.md b/site/content/arangodb/3.11/concepts/data-retrieval.md index 76dbbfe4e4..8958156773 100644 --- a/site/content/arangodb/3.11/concepts/data-retrieval.md +++ b/site/content/arangodb/3.11/concepts/data-retrieval.md @@ -17,8 +17,8 @@ collections. Queries are written in the [ArangoDB Query Language](../aql/_index. easily processable batches instead of one big hunk. **Indexes** are used to speed up queries. There are multiple types of indexes, -such as [persistent indexes](../index-and-search/indexing/working-with-indexes/persistent-indexes.md) and -[geo-spatial indexes](../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). +such as [persistent indexes](../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md) and +[geo-spatial indexes](../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). **Views** are another type of index, primarily for full-text search. See -[ArangoSearch](../index-and-search/arangosearch/_index.md). +[ArangoSearch](../indexes-and-search/arangosearch/_index.md). diff --git a/site/content/arangodb/3.11/concepts/data-structure/views.md b/site/content/arangodb/3.11/concepts/data-structure/views.md index 319904609b..4b9d594792 100644 --- a/site/content/arangodb/3.11/concepts/data-structure/views.md +++ b/site/content/arangodb/3.11/concepts/data-structure/views.md @@ -15,15 +15,15 @@ more collections. The transformation depends on the View type and the View configuration. Views are powered by ArangoDB's built-in search engine. -See [ArangoSearch](../../index-and-search/arangosearch/_index.md) for details. +See [ArangoSearch](../../indexes-and-search/arangosearch/_index.md) for details. ## View types Available View types: -- The traditional [`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) to which +- The traditional [`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) to which you link collections to. -- The modern [`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md) +- The modern [`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md) that can reference inverted indexes that are defined on the collection-level. You need to specify the type when you create the View. @@ -127,8 +127,8 @@ The examples are limited to the basic usage of the View interfaces. See the following for more details about the different View types and their configuration: -- [`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) -- [`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md) +- [`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) +- [`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md) ### Create a View diff --git a/site/content/arangodb/3.11/data-science/_index.md b/site/content/arangodb/3.11/data-science/_index.md index 45a4bfd813..75864e6c97 100644 --- a/site/content/arangodb/3.11/data-science/_index.md +++ b/site/content/arangodb/3.11/data-science/_index.md @@ -40,7 +40,7 @@ Graph queries can answer questions like _**Who can introduce me to person X**_? ![Graph Query](../../../images/graph-query.png) -See [Graphs in AQL](../aql/graphs/_index.md) for the supported graph queries. +See [Graphs in AQL](../aql/graph-queries/_index.md) for the supported graph queries. ### Graph Analytics @@ -129,5 +129,5 @@ an AQL query, a custom graph visualization for each movie, and more. ## Sample datasets If you want to try out ArangoDB's data science features, you may use the -[`arango_datasets` Python package](../components/tools/arango-datasets.md) +[`arango_datasets` Python package](../../../ecosystem/arango-datasets.md) to load sample datasets into a deployment. diff --git a/site/content/arangodb/3.11/data-science/arangographml/getting-started.md b/site/content/arangodb/3.11/data-science/arangographml/getting-started.md index de9d2ae042..2d61b13f71 100644 --- a/site/content/arangodb/3.11/data-science/arangographml/getting-started.md +++ b/site/content/arangodb/3.11/data-science/arangographml/getting-started.md @@ -186,7 +186,7 @@ Let's get started! {{< tab "ArangoGraphML" >}} -The [`arango-datasets`](../../components/tools/arango-datasets.md) Python package +The [`arango-datasets`](../../../../ecosystem/arango-datasets.md) Python package allows you to load pre-defined datasets into ArangoDB. It comes pre-installed in the ArangoGraphML notebook environment. @@ -203,7 +203,7 @@ DATASET_NAME = "OPEN_INTELLIGENCE_ANGOLA" {{< tab "Self-managed" >}} -The [`arango-datasets`](../../components/tools/arango-datasets.md) Python package +The [`arango-datasets`](../../../../ecosystem/arango-datasets.md) Python package allows you to load pre-defined datasets into ArangoDB. It can be installed with the following command: diff --git a/site/content/arangodb/3.11/data-science/pregel/_index.md b/site/content/arangodb/3.11/data-science/pregel/_index.md index 3b73ad40be..848991956e 100644 --- a/site/content/arangodb/3.11/data-science/pregel/_index.md +++ b/site/content/arangodb/3.11/data-science/pregel/_index.md @@ -26,7 +26,7 @@ need for distributed global locking. This system is not useful for typical online queries, where you just work on a small set of vertices. These kind of tasks are better suited for -[AQL traversals](../../aql/graphs/_index.md). +[AQL traversals](../../aql/graph-queries/_index.md). ## Prerequisites diff --git a/site/content/arangodb/3.11/develop/http-api/analyzers.md b/site/content/arangodb/3.11/develop/http-api/analyzers.md index feb941feda..3010b67f25 100644 --- a/site/content/arangodb/3.11/develop/http-api/analyzers.md +++ b/site/content/arangodb/3.11/develop/http-api/analyzers.md @@ -9,7 +9,7 @@ description: >- The RESTful API for managing ArangoSearch Analyzers is accessible via the `/_api/analyzer` endpoint. -See the description of [Analyzers](../../index-and-search/analyzers.md) for an +See the description of [Analyzers](../../indexes-and-search/analyzers.md) for an introduction and the available types, properties and features. ## Create an Analyzer diff --git a/site/content/arangodb/3.11/develop/http-api/views/arangosearch-views.md b/site/content/arangodb/3.11/develop/http-api/views/arangosearch-views.md index b8958aa29c..801c184358 100644 --- a/site/content/arangodb/3.11/develop/http-api/views/arangosearch-views.md +++ b/site/content/arangodb/3.11/develop/http-api/views/arangosearch-views.md @@ -68,7 +68,7 @@ paths: } ``` - See [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + See [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -422,7 +422,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -889,7 +889,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -1301,7 +1301,7 @@ paths: } ``` - See [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + See [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object cleanupIntervalStep: @@ -1486,7 +1486,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -1808,7 +1808,7 @@ paths: } ``` - See [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + See [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object cleanupIntervalStep: @@ -1989,7 +1989,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -2351,7 +2351,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: diff --git a/site/content/arangodb/3.11/develop/integrations/spring-boot-arangodb.md b/site/content/arangodb/3.11/develop/integrations/spring-boot-arangodb.md index 4633df80a8..dbc2e56451 100644 --- a/site/content/arangodb/3.11/develop/integrations/spring-boot-arangodb.md +++ b/site/content/arangodb/3.11/develop/integrations/spring-boot-arangodb.md @@ -1229,7 +1229,7 @@ Character [id=9014, name=Cersei, surname=Lannister, alive=true, age=36] ### Graph traversal -To finish the query method topic, add a [graph traversal](../../aql/graphs/traversals.md) +To finish the query method topic, add a [graph traversal](../../aql/graph-queries/traversals.md) written in AQL to this demo where the `ChildOf` edges are involved. The following query searches for every `Character` connected (through `ChildOf`) diff --git a/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/_index.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/_index.md index e35a9f0e33..c77f38c282 100644 --- a/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/_index.md +++ b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/_index.md @@ -1,5 +1,5 @@ --- -title: Spring Data ArangoDB - Reference (version 3) +title: Spring Data ArangoDB - Reference (v3.0) menuTitle: Reference version 3 weight: 6 description: '' diff --git a/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md index 83dd5a0f86..c1e7f02236 100644 --- a/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md +++ b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md @@ -5,7 +5,7 @@ weight: 25 description: '' --- Indexes can be ensured using the following annotations. For reference see the -[indexing](../../../../../index-and-search/indexing/_index.md) documentation +[indexing](../../../../../indexes-and-search/indexing/_index.md) documentation and specific aspects that apply to [indexes on shards](../../../../../deploy/architecture/data-sharding.md#indexes-on-shards). diff --git a/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md index d21f2b1061..87c7546ef1 100644 --- a/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md +++ b/site/content/arangodb/3.11/develop/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md @@ -5,7 +5,7 @@ weight: 25 description: '' --- Indexes can be ensured using the following annotations. For reference see the -[indexing](../../../../../index-and-search/indexing/_index.md) documentation +[indexing](../../../../../indexes-and-search/indexing/_index.md) documentation and specific aspects that apply to [indexes on shards](../../../../../deploy/architecture/data-sharding.md#indexes-on-shards). diff --git a/site/content/arangodb/3.11/develop/javascript-api/@arangodb/collection-object.md b/site/content/arangodb/3.11/develop/javascript-api/@arangodb/collection-object.md index ef4a638933..a52ef13017 100644 --- a/site/content/arangodb/3.11/develop/javascript-api/@arangodb/collection-object.md +++ b/site/content/arangodb/3.11/develop/javascript-api/@arangodb/collection-object.md @@ -179,7 +179,7 @@ any need to load a collection with the RocksDB storage engine. Loads suitable indexes of this collection into memory. -See [`collection.loadIndexesIntoMemory()`](../../../index-and-search/indexing/working-with-indexes/_index.md#load-indexes-into-memory). +See [`collection.loadIndexesIntoMemory()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#load-indexes-into-memory). ### `collection.name()` @@ -504,13 +504,13 @@ any need to unload a collection with the RocksDB storage engine. Creates an index if it doesn't exist already. -See [`collection.ensureIndex()`](../../../index-and-search/indexing/working-with-indexes/_index.md#creating-an-index). +See [`collection.ensureIndex()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#creating-an-index). ### `collection.indexes([withStats [, withHidden]])` Lists all indexes of the collection. -See [`collection.indexes()`](../../../index-and-search/indexing/working-with-indexes/_index.md#listing-all-indexes-of-a-collection). +See [`collection.indexes()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#listing-all-indexes-of-a-collection). ### `collection.getIndexes([withStats [, withHidden]])` @@ -520,13 +520,13 @@ Same as [`collection.indexes([withStats [, withHidden]])`](#collectionindexeswit Gets an index by identifier. -See [`collection.index()`](../../../index-and-search/indexing/working-with-indexes/_index.md#index-identifiers). +See [`collection.index()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#index-identifiers). ### `collection.dropIndex(index)` Drops an index by identifier. -See [`collection.dropIndex()`](../../../index-and-search/indexing/working-with-indexes/_index.md#dropping-an-index-via-a-collection-object). +See [`collection.dropIndex()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#dropping-an-index-via-a-collection-object). ## Documents diff --git a/site/content/arangodb/3.11/develop/javascript-api/@arangodb/db-object.md b/site/content/arangodb/3.11/develop/javascript-api/@arangodb/db-object.md index 83d66b096e..ae1fce1195 100644 --- a/site/content/arangodb/3.11/develop/javascript-api/@arangodb/db-object.md +++ b/site/content/arangodb/3.11/develop/javascript-api/@arangodb/db-object.md @@ -1047,8 +1047,8 @@ supported View type. `properties` is an optional object containing View configuration specific to each View-type. -- [`arangosearch` View definition](../../../index-and-search/arangosearch/arangosearch-views-reference.md#view-definitionmodification) -- [`search-alias` View definition](../../../index-and-search/arangosearch/search-alias-views-reference.md#view-definition) +- [`arangosearch` View definition](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-definitionmodification) +- [`search-alias` View definition](../../../indexes-and-search/arangosearch/search-alias-views-reference.md#view-definition) **Examples** @@ -1192,13 +1192,13 @@ See [`db._profileQuery()`](../../../aql/execution-and-performance/query-profilin Fetches an index by identifier. -See [`db._index()`](../../../index-and-search/indexing/working-with-indexes/_index.md#fetching-an-index-by-identifier). +See [`db._index()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#fetching-an-index-by-identifier). ### `db._dropIndex(index)` Drops an index by identifier. -See [`db._dropIndex()`](../../../index-and-search/indexing/working-with-indexes/_index.md#dropping-an-index-via-a-database-object). +See [`db._dropIndex()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#dropping-an-index-via-a-database-object). ## Transactions diff --git a/site/content/arangodb/3.11/develop/javascript-api/@arangodb/view-object.md b/site/content/arangodb/3.11/develop/javascript-api/@arangodb/view-object.md index 783e162dc0..7dea144d70 100644 --- a/site/content/arangodb/3.11/develop/javascript-api/@arangodb/view-object.md +++ b/site/content/arangodb/3.11/develop/javascript-api/@arangodb/view-object.md @@ -86,8 +86,8 @@ determines how the `new-properties` object is merged with current View propertie properties if `false`). For the available properties of the supported View types, see: -- [`arangosearch` View Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#view-properties) -- [`search-alias` View Modification](../../../index-and-search/arangosearch/search-alias-views-reference.md#view-modification) +- [`arangosearch` View Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-properties) +- [`search-alias` View Modification](../../../indexes-and-search/arangosearch/search-alias-views-reference.md#view-modification) **Examples** diff --git a/site/content/arangodb/3.11/develop/javascript-api/analyzers.md b/site/content/arangodb/3.11/develop/javascript-api/analyzers.md index c25f28b077..a735c2449b 100644 --- a/site/content/arangodb/3.11/develop/javascript-api/analyzers.md +++ b/site/content/arangodb/3.11/develop/javascript-api/analyzers.md @@ -13,7 +13,7 @@ both server-side and client-side code (arangosh, Foxx): var analyzers = require("@arangodb/analyzers"); ``` -See [Analyzers](../../index-and-search/analyzers.md) for general information and +See [Analyzers](../../indexes-and-search/analyzers.md) for general information and details about the attributes. ## Analyzer Module Methods diff --git a/site/content/arangodb/3.11/develop/operational-factors.md b/site/content/arangodb/3.11/develop/operational-factors.md index b51bd8a9fb..4bfbf6c26b 100644 --- a/site/content/arangodb/3.11/develop/operational-factors.md +++ b/site/content/arangodb/3.11/develop/operational-factors.md @@ -142,7 +142,7 @@ Should you decide to create an index you should consider a few things: - Indexes are a trade-off between storage space, maintenance cost and query speed. - Each new index increases the amount of RAM and the amount of disk space needed. -- Indexes with [indexed array values](../index-and-search/indexing/basics.md#indexing-array-values) +- Indexes with [indexed array values](../indexes-and-search/indexing/basics.md#indexing-array-values) need an extra index entry per array entry - Adding indexes increases the write-amplification i.e. it negatively affects the write performance (how much depends on the storage engine) @@ -163,7 +163,7 @@ to understand the bottlenecks in your queries. Always consider the additional space requirements of extra indexes when planning server capacities. For more information on indexes see -[Index Basics](../index-and-search/indexing/basics.md). +[Index Basics](../indexes-and-search/indexing/basics.md). ## Number of Databases and Collections diff --git a/site/content/arangodb/3.11/get-started/start-using-aql/geo.md b/site/content/arangodb/3.11/get-started/start-using-aql/geo.md index 9f7d008620..e722ccc35f 100644 --- a/site/content/arangodb/3.11/get-started/start-using-aql/geo.md +++ b/site/content/arangodb/3.11/get-started/start-using-aql/geo.md @@ -37,7 +37,7 @@ latitude with GeoJSON, whereas the dataset uses latitude, longitude. ## Geospatial index -To query based on coordinates, a [geo index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md) +To query based on coordinates, a [geo index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md) is required. It determines which fields contain the latitude and longitude values. diff --git a/site/content/arangodb/3.11/get-started/start-using-aql/graphs.md b/site/content/arangodb/3.11/get-started/start-using-aql/graphs.md index 2bc5ff07b2..6b6b6667ac 100644 --- a/site/content/arangodb/3.11/get-started/start-using-aql/graphs.md +++ b/site/content/arangodb/3.11/get-started/start-using-aql/graphs.md @@ -96,7 +96,7 @@ Breakdown of the query: Now that edges link character documents (vertices), it is a graph you can query to find out who the parents are of another character – or in graph terms, you want to start at a vertex and follow the edges to other -vertices in an [AQL graph traversal](../../aql/graphs/traversals.md): +vertices in an [AQL graph traversal](../../aql/graph-queries/traversals.md): ```aql // Declare collection of start vertex (cluster only) @@ -110,7 +110,7 @@ This `FOR` loop doesn't iterate over a collection or an array, it walks the graph and iterates over the connected vertices it finds, with the vertex document assigned to a variable (here: `v`). It can also emit the edges it walked as well as the full path from start to end to -[another two variables](../../aql/graphs/traversals.md#syntax). +[another two variables](../../aql/graph-queries/traversals.md#syntax). In above query, the traversal is restricted to a minimum and maximum traversal depth of 1 (how many steps to take from the start vertex), and to only follow @@ -261,7 +261,7 @@ Tywin <- Cersei <- Joffrey As a quick fix, change the last line of the query to `RETURN DISTINCT v.name` to return each value only once. However, there are -[traversal options](../../aql/graphs/traversals.md#syntax) including one to +[traversal options](../../aql/graph-queries/traversals.md#syntax) including one to suppress duplicate vertices early on for the entire traversal (which requires breadth-first search): diff --git a/site/content/arangodb/3.11/graphs/_index.md b/site/content/arangodb/3.11/graphs/_index.md index e0f8c3da89..5dbe960b70 100644 --- a/site/content/arangodb/3.11/graphs/_index.md +++ b/site/content/arangodb/3.11/graphs/_index.md @@ -94,7 +94,7 @@ direction and follow them in both directions (**any**) as if it were an undirected graph. You can query graphs with ArangoDB's query language, see -[Graphs in AQL](../aql/graphs/_index.md). +[Graphs in AQL](../aql/graph-queries/_index.md). ## Comparison to relational database systems @@ -119,15 +119,15 @@ In queries, you can define in which directions the edge relations may be followe ## Supported graph algorithms -- [Traversal](../aql/graphs/traversals.md) +- [Traversal](../aql/graph-queries/traversals.md) - following edges in outbound, inbound, or any direction - variable traversal depth between a defined minimum and maximum - breadth-first, depth-first, and weighted traversals - optionally with prune conditions -- [Shortest Path](../aql/graphs/shortest-path.md) -- [All Shortest Paths](../aql/graphs/all-shortest-paths.md) -- [k Shortest Paths](../aql/graphs/k-shortest-paths.md) -- [k Paths](../aql/graphs/k-paths.md) +- [Shortest Path](../aql/graph-queries/shortest-path.md) +- [All Shortest Paths](../aql/graph-queries/all-shortest-paths.md) +- [k Shortest Paths](../aql/graph-queries/k-shortest-paths.md) +- [k Paths](../aql/graph-queries/k-paths.md) - [Distributed Iterative Graph Processing (Pregel)](../data-science/pregel/_index.md) - Page Rank - Seeded Page Rank diff --git a/site/content/arangodb/3.11/graphs/enterprisegraphs/_index.md b/site/content/arangodb/3.11/graphs/enterprisegraphs/_index.md index f0614e1e83..b35e0f6717 100644 --- a/site/content/arangodb/3.11/graphs/enterprisegraphs/_index.md +++ b/site/content/arangodb/3.11/graphs/enterprisegraphs/_index.md @@ -14,7 +14,7 @@ It will give a vast performance benefit for all graphs sharded in an ArangoDB Cluster, reducing network hops substantially. In terms of querying there is no difference between SmartGraphs and EnterpriseGraphs. -For graph querying please refer to [AQL Graph Operations](../../aql/graphs/_index.md) +For graph querying please refer to [AQL Graph Operations](../../aql/graph-queries/_index.md) and [General Graph Functions](../general-graphs/functions.md) sections. Creating and modifying the underlying collections of an EnterpriseGraph are diff --git a/site/content/arangodb/3.11/graphs/example-graphs.md b/site/content/arangodb/3.11/graphs/example-graphs.md index 58b269cbf0..fde0d9d620 100644 --- a/site/content/arangodb/3.11/graphs/example-graphs.md +++ b/site/content/arangodb/3.11/graphs/example-graphs.md @@ -95,7 +95,7 @@ with the travel time for both directions as edge weight. ![Train Connection Map](../../../images/train_map.png) -See the [k Shortest Paths page](../aql/graphs/k-shortest-paths.md) for query examples. +See the [k Shortest Paths page](../aql/graph-queries/k-shortest-paths.md) for query examples. ```js --- @@ -120,9 +120,9 @@ in the `mps_edges` collection. It is a simple traversal graph with start node ![Mps Graph](../../../images/mps_graph.png) -With the [Shortest Path](../aql/graphs/shortest-path.md) algorithm, you either +With the [Shortest Path](../aql/graph-queries/shortest-path.md) algorithm, you either get the shortest path *A* - *B* - *C* or *A* - *D* - *C*. With the -[All Shortest Paths](../aql/graphs/all-shortest-paths.md) algorithm, both +[All Shortest Paths](../aql/graph-queries/all-shortest-paths.md) algorithm, both shortest paths are returned. Example of how to create the graph, inspect its vertices and edges, and delete diff --git a/site/content/arangodb/3.11/graphs/smartgraphs/_index.md b/site/content/arangodb/3.11/graphs/smartgraphs/_index.md index e3faa431ba..e9d9c540ad 100644 --- a/site/content/arangodb/3.11/graphs/smartgraphs/_index.md +++ b/site/content/arangodb/3.11/graphs/smartgraphs/_index.md @@ -33,7 +33,7 @@ Examples for such graphs are: category are often bought together. In terms of querying there is no difference between SmartGraphs and General Graphs. -For graph querying please refer to [AQL Graph Operations](../../aql/graphs/_index.md) +For graph querying please refer to [AQL Graph Operations](../../aql/graph-queries/_index.md) and [General Graph Functions](../general-graphs/functions.md) sections. The optimizer is clever enough to identify whether it is a SmartGraph or not. diff --git a/site/content/arangodb/3.11/index-and-search/_index.md b/site/content/arangodb/3.11/index-and-search/_index.md deleted file mode 100644 index dc765f1be0..0000000000 --- a/site/content/arangodb/3.11/index-and-search/_index.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Index and Search -menuTitle: Index and Search -weight: 145 -description: '' ---- diff --git a/site/content/arangodb/3.11/indexes-and-search/_index.md b/site/content/arangodb/3.11/indexes-and-search/_index.md new file mode 100644 index 0000000000..1a740c65df --- /dev/null +++ b/site/content/arangodb/3.11/indexes-and-search/_index.md @@ -0,0 +1,6 @@ +--- +title: Indexes and Search +menuTitle: Indexes and Search +weight: 145 +description: '' +--- diff --git a/site/content/arangodb/3.11/index-and-search/analyzers.md b/site/content/arangodb/3.11/indexes-and-search/analyzers.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/analyzers.md rename to site/content/arangodb/3.11/indexes-and-search/analyzers.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/_index.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/_index.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/_index.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/_index.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/arangosearch-views-reference.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/arangosearch-views-reference.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/arangosearch-views-reference.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/arangosearch-views-reference.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/case-sensitivity-and-diacritics.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/case-sensitivity-and-diacritics.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/case-sensitivity-and-diacritics.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/case-sensitivity-and-diacritics.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/exact-value-matching.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/exact-value-matching.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/exact-value-matching.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/exact-value-matching.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/example-datasets.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/example-datasets.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/example-datasets.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/example-datasets.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/faceted-search.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/faceted-search.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/faceted-search.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/faceted-search.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/full-text-token-search.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/full-text-token-search.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/full-text-token-search.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/full-text-token-search.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/fuzzy-search.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/fuzzy-search.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/fuzzy-search.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/fuzzy-search.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/geospatial-search.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/geospatial-search.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/geospatial-search.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/geospatial-search.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/nested-search.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/nested-search.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/nested-search.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/nested-search.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/performance.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/performance.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/performance.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/performance.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/phrase-and-proximity-search.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/phrase-and-proximity-search.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/phrase-and-proximity-search.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/phrase-and-proximity-search.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/prefix-matching.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/prefix-matching.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/prefix-matching.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/prefix-matching.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/range-queries.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/range-queries.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/range-queries.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/range-queries.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/ranking.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/ranking.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/ranking.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/ranking.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/search-alias-views-reference.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/search-alias-views-reference.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/search-alias-views-reference.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/search-alias-views-reference.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/search-highlighting.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/search-highlighting.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/search-highlighting.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/search-highlighting.md diff --git a/site/content/arangodb/3.11/index-and-search/arangosearch/wildcard-search.md b/site/content/arangodb/3.11/indexes-and-search/arangosearch/wildcard-search.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/arangosearch/wildcard-search.md rename to site/content/arangodb/3.11/indexes-and-search/arangosearch/wildcard-search.md diff --git a/site/content/arangodb/3.11/index-and-search/indexing/_index.md b/site/content/arangodb/3.11/indexes-and-search/indexing/_index.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/indexing/_index.md rename to site/content/arangodb/3.11/indexes-and-search/indexing/_index.md diff --git a/site/content/arangodb/3.11/index-and-search/indexing/basics.md b/site/content/arangodb/3.11/indexes-and-search/indexing/basics.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/indexing/basics.md rename to site/content/arangodb/3.11/indexes-and-search/indexing/basics.md diff --git a/site/content/arangodb/3.11/index-and-search/indexing/index-utilization.md b/site/content/arangodb/3.11/indexes-and-search/indexing/index-utilization.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/indexing/index-utilization.md rename to site/content/arangodb/3.11/indexes-and-search/indexing/index-utilization.md diff --git a/site/content/arangodb/3.11/index-and-search/indexing/which-index-to-use-when.md b/site/content/arangodb/3.11/indexes-and-search/indexing/which-index-to-use-when.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/indexing/which-index-to-use-when.md rename to site/content/arangodb/3.11/indexes-and-search/indexing/which-index-to-use-when.md diff --git a/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/_index.md b/site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/_index.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/_index.md rename to site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/_index.md diff --git a/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/fulltext-indexes.md b/site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/fulltext-indexes.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/fulltext-indexes.md rename to site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/fulltext-indexes.md diff --git a/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md b/site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md rename to site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md diff --git a/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/inverted-indexes.md b/site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/inverted-indexes.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/inverted-indexes.md rename to site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/inverted-indexes.md diff --git a/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md b/site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md rename to site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md diff --git a/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/persistent-indexes.md b/site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/persistent-indexes.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/persistent-indexes.md rename to site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/persistent-indexes.md diff --git a/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/ttl-indexes.md b/site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/ttl-indexes.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/ttl-indexes.md rename to site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/ttl-indexes.md diff --git a/site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md b/site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/vertex-centric-indexes.md similarity index 100% rename from site/content/arangodb/3.11/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md rename to site/content/arangodb/3.11/indexes-and-search/indexing/working-with-indexes/vertex-centric-indexes.md diff --git a/site/content/arangodb/3.11/release-notes/deprecated-and-removed-features.md b/site/content/arangodb/3.11/release-notes/deprecated-and-removed-features.md index 53501c13f4..4845bfa480 100644 --- a/site/content/arangodb/3.11/release-notes/deprecated-and-removed-features.md +++ b/site/content/arangodb/3.11/release-notes/deprecated-and-removed-features.md @@ -62,7 +62,7 @@ detailed information about breaking changes before upgrading. - **Skiplist and hash indexes**: Skiplist and hash indexes have been deprecated in 3.9 and will be removed in a future version of ArangoDB. Currently, they are an alias for a - [persistent index](../index-and-search/indexing/basics.md#persistent-index). + [persistent index](../indexes-and-search/indexing/basics.md#persistent-index). - **Bundled NPM modules**: The bundled NPM modules `aqb`, `chai`, `dedent`, `error-stack-parser`, @@ -88,7 +88,7 @@ detailed information about breaking changes before upgrading. - **Fulltext indexes**: The fulltext index type is deprecated from version 3.10 onwards. - It is recommended to use [ArangoSearch](../index-and-search/arangosearch/_index.md) for advanced full-text search capabilities. + It is recommended to use [ArangoSearch](../indexes-and-search/arangosearch/_index.md) for advanced full-text search capabilities. - **Simple Queries**: Idiomatic interface in arangosh to perform trivial queries. They are superseded by [AQL queries](../aql/_index.md), which can also @@ -280,4 +280,4 @@ detailed information about breaking changes before upgrading. Instead of using these methods, you should use the generic `collection.ensureIndex(...)` method, which provides a superset of all the deprecated methods. Also see - [Creating an index](../index-and-search/indexing/working-with-indexes/_index.md#creating-an-index). + [Creating an index](../indexes-and-search/indexing/working-with-indexes/_index.md#creating-an-index). diff --git a/site/content/arangodb/3.11/release-notes/version-3.0/incompatible-changes-in-3-0.md b/site/content/arangodb/3.11/release-notes/version-3.0/incompatible-changes-in-3-0.md index 0babc90491..0531c995bf 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.0/incompatible-changes-in-3-0.md +++ b/site/content/arangodb/3.11/release-notes/version-3.0/incompatible-changes-in-3-0.md @@ -126,7 +126,7 @@ are missing from the replacement document, an `REPLACE` operation will fail. #### Graph functions In version 3.0 all former graph related functions have been removed from AQL to -be replaced by [native AQL constructs](../../aql/graphs/_index.md). +be replaced by [native AQL constructs](../../aql/graph-queries/_index.md). These constructs allow for more fine-grained filtering on several graph levels. Also this allows the AQL optimizer to automatically improve these queries by enhancing them with appropriate indexes. diff --git a/site/content/arangodb/3.11/release-notes/version-3.10/api-changes-in-3-10.md b/site/content/arangodb/3.11/release-notes/version-3.10/api-changes-in-3-10.md index bac507b0c2..ea612fc532 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.10/api-changes-in-3-10.md +++ b/site/content/arangodb/3.11/release-notes/version-3.10/api-changes-in-3-10.md @@ -568,20 +568,20 @@ search highlighting capabilities for Views. The `/_api/analyzer` endpoint supports new Analyzer types in the Enterprise Edition: -- [`minhash`](../../index-and-search/analyzers.md#minhash): +- [`minhash`](../../indexes-and-search/analyzers.md#minhash): It has two properties, `analyzer` (object) and `numHashes` (number). The `analyzer` object is an Analyzer-like definition with a `type` (string) and a `properties` attribute (object). The properties depend on the Analyzer type. -- [`classification`](../../index-and-search/analyzers.md#classification) (experimental): +- [`classification`](../../indexes-and-search/analyzers.md#classification) (experimental): It has three properties, `model_location` (string), `top_k` (number, optional, default: `1`), and `threshold` (number, optional, default: `0.99`). -- [`nearest_neighbors`](../../index-and-search/analyzers.md#nearest_neighbors) (experimental): +- [`nearest_neighbors`](../../indexes-and-search/analyzers.md#nearest_neighbors) (experimental): It has two properties, `model_location` (string) and `top_k` (number, optional, default: `1`). -- [`geo_s2`](../../index-and-search/analyzers.md#geo_s2) (introduced in v3.10.5): +- [`geo_s2`](../../indexes-and-search/analyzers.md#geo_s2) (introduced in v3.10.5): Like the existing `geojson` Analyzer, but with an additional `format` property that can be set to `"latLngDouble"` (default), `"latLngInt"`, or `"s2Point"`. @@ -592,7 +592,7 @@ Enterprise Edition: Analyzers of the `geojson` type have a new `legacy` property. The default is `false`. This option controls how GeoJSON Polygons are interpreted. -See the [`geojson` Analyzer](../../index-and-search/analyzers.md#geojson). +See the [`geojson` Analyzer](../../indexes-and-search/analyzers.md#geojson). #### Views API @@ -622,7 +622,7 @@ You may use a shorthand notations on `arangosearch` View creation or the `storedValues` option, like `["attr1", "attr2"]`, instead of using an array of objects. -See the [`arangosearch` Views Reference](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +See the [`arangosearch` Views Reference](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. #### Geo-spatial indexes @@ -630,7 +630,7 @@ for details. Indexes of the `geo` type have a new `legacyPolygons` option. If `geoJson` is set to `true`, then this option controls how GeoJSON Polygons -are interpreted. Also see [Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons). +are interpreted. Also see [Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons). The default is `true` for geo indexes that were created in versions before 3.10, and `false` for geo indexes created in 3.10 or later. diff --git a/site/content/arangodb/3.11/release-notes/version-3.10/incompatible-changes-in-3-10.md b/site/content/arangodb/3.11/release-notes/version-3.10/incompatible-changes-in-3-10.md index 6ae62977a3..d31d834a16 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.10/incompatible-changes-in-3-10.md +++ b/site/content/arangodb/3.11/release-notes/version-3.10/incompatible-changes-in-3-10.md @@ -12,7 +12,7 @@ In cluster deployments, you need to declare collections that an AQL query implicitly reads from using the [`WITH` operation](../../aql/high-level-operations/with.md). From version 3.10.0 onward, it is necessary to also declare the collections of -start vertices that are used for [graph traversals](../../aql/graphs/traversals.md) +start vertices that are used for [graph traversals](../../aql/graph-queries/traversals.md) if you specify start vertices using strings. In previous versions, the following query would work: @@ -75,7 +75,7 @@ instead. ## Indexes -The fulltext index type is now deprecated in favor of [ArangoSearch](../../index-and-search/arangosearch/_index.md). +The fulltext index type is now deprecated in favor of [ArangoSearch](../../indexes-and-search/arangosearch/_index.md). Fulltext indexes are still usable in this version of ArangoDB, although their usage is now discouraged. @@ -107,7 +107,7 @@ interpretation of GeoJSON polygons in version 3.9 and older: This can mean that old polygon GeoJSON data in the database is suddenly interpreted in a different way. See -[Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details. +[Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details. Also see the definition of [Polygons](../../aql/functions/geo.md#polygon) and [GeoJSON interpretation](../../aql/functions/geo.md#geojson-interpretation). @@ -125,7 +125,7 @@ Whether a clockwise boundary specifies the complement of the small region intentionally or not cannot be determined automatically. Please test the new behavior manually. -See [Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details. +See [Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details. --- @@ -148,7 +148,7 @@ the new Analyzers. | A ring can at most enclose half the Earth's surface | A ring can enclose the entire surface of the Earth | Also see the definition of [Polygons](../../aql/functions/geo.md#polygon) and the -[`geojson` Analyzer](../../index-and-search/analyzers.md#geojson) documentation. +[`geojson` Analyzer](../../indexes-and-search/analyzers.md#geojson) documentation. ## Maximum Array / Object Nesting diff --git a/site/content/arangodb/3.11/release-notes/version-3.10/whats-new-in-3-10.md b/site/content/arangodb/3.11/release-notes/version-3.10/whats-new-in-3-10.md index e416b5c2aa..0b79f08a9b 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.10/whats-new-in-3-10.md +++ b/site/content/arangodb/3.11/release-notes/version-3.10/whats-new-in-3-10.md @@ -147,7 +147,7 @@ function in queries. Like Views, this type of index is eventually consistent. -See [Inverted index](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md) for details. +See [Inverted index](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md) for details. ### `search-alias` Views @@ -175,7 +175,7 @@ need to specify an Analyzer context with the `ANALYZER()` function in queries because it is inferred from the inverted index definition, which only supports a single Analyzer per field. -Also see [Getting started with ArangoSearch](../../index-and-search/arangosearch/_index.md#getting-started-with-arangosearch). +Also see [Getting started with ArangoSearch](../../indexes-and-search/arangosearch/_index.md#getting-started-with-arangosearch). ### Search highlighting (Enterprise Edition) @@ -248,7 +248,7 @@ db._query(`FOR doc IN food_view */ ``` -See [Search highlighting with ArangoSearch](../../index-and-search/arangosearch/search-highlighting.md) +See [Search highlighting with ArangoSearch](../../indexes-and-search/arangosearch/search-highlighting.md) for details. ### Nested search (Enterprise Edition) @@ -296,8 +296,8 @@ FOR doc IN viewName RETURN doc ``` -See [Nested search with ArangoSearch](../../index-and-search/arangosearch/nested-search.md) using Views -and the nested search example using [Inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search-enterprise-edition) +See [Nested search with ArangoSearch](../../indexes-and-search/arangosearch/nested-search.md) using Views +and the nested search example using [Inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search-enterprise-edition) for details. This feature is only available in the Enterprise Edition. @@ -310,7 +310,7 @@ enumeration node, if using just scoring for a sort operation. ### ArangoSearch column cache (Enterprise Edition) -[`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) support new caching options. +[`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) support new caching options. <small>Introduced in: v3.9.5, v3.10.2</small> @@ -366,7 +366,7 @@ metric. ArangoSearch caching is only available in the Enterprise Edition. -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md) for examples. {{< info >}} @@ -435,7 +435,7 @@ Additionally, the JavaScript and HTTP API for indexes has been extended with figures for `arangosearch` View links and inverted indexes. In arangosh, you can call `db.<collection>.indexes(true, true);` to get at this -information. Also see [Listing all indexes of a collection](../../index-and-search/indexing/working-with-indexes/_index.md#listing-all-indexes-of-a-collection). +information. Also see [Listing all indexes of a collection](../../indexes-and-search/indexing/working-with-indexes/_index.md#listing-all-indexes-of-a-collection). The information has the following structure: ```js @@ -472,7 +472,7 @@ to perform. This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#minhash) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#minhash) for details. ### `classification` Analyzer (Enterprise Edition) @@ -481,7 +481,7 @@ using a supervised fastText word embedding model that you provide. This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#classification) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#classification) for details. ### `nearest_neighbors` Analyzer (Enterprise Edition) @@ -490,7 +490,7 @@ using a supervised fastText word embedding model that you provide. This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#nearest_neighbors) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#nearest_neighbors) for details. ### `geo_s2` Analyzer (Enterprise Edition) @@ -511,7 +511,7 @@ disk, the precision, and query performance: This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#geo_s2) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#geo_s2) for details. ## Web Interface @@ -533,7 +533,7 @@ FOR p IN OUTBOUND ALL_SHORTEST_PATHS 'places/Carlisle' TO 'places/London' RETURN { places: p.vertices[*].label } ``` -See [All Shortest Paths in AQL](../../aql/graphs/all-shortest-paths.md) for details. +See [All Shortest Paths in AQL](../../aql/graph-queries/all-shortest-paths.md) for details. ### Parallelism for Sharded Graphs (Enterprise Edition) @@ -568,7 +568,7 @@ This feature is only available in the Enterprise Edition. The 3.10 release of ArangoDB conforms to the standards specified in [GeoJSON](https://datatracker.ietf.org/doc/html/rfc7946) -and [GeoJSON Mode](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#geojson-mode). +and [GeoJSON Mode](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#geojson-mode). This diverges from the previous implementation in two fundamental ways: 1. The syntax of GeoJSON objects is interpreted so that lines on the @@ -593,13 +593,13 @@ has been introduced to guarantee backwards compatibility. For existing users who wish to take advantage of the new standard behavior, geo indexes need to be dropped and recreated after an upgrade. -See [Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for +See [Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details and for hints about upgrading to version 3.10 or later. If you use `geojson` Analyzers including in `arangosearch` Views and upgrade from a version below 3.10 to a version of 3.10 or higher, the interpretation of GeoJSON Polygons changes. See the `legacy` property of the -[`geojson` Analyzer](../../index-and-search/analyzers.md#geojson) for details and how to restore the +[`geojson` Analyzer](../../indexes-and-search/analyzers.md#geojson) for details and how to restore the old behavior. ### Traversal Projections (Enterprise Edition) @@ -611,7 +611,7 @@ but only access small parts of the documents. By default, up to 5 attributes are extracted instead of loading the full document. You can control this number with the `maxProjections` option, which is now -supported for [graph traversals](../../aql/graphs/traversals.md#working-with-named-graphs). +supported for [graph traversals](../../aql/graph-queries/traversals.md#working-with-named-graphs). See also [how to use `maxProjections` with FOR loops](../../aql/high-level-operations/for.md#maxprojections). In the following query, the accessed attributes are the `name` attribute of the @@ -786,7 +786,7 @@ index hint for tweaking performance: FOR … IN … OPTIONS { lookahead: 32 } ``` -See [Lookahead Index Hint](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md#lookahead-index-hint). +See [Lookahead Index Hint](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md#lookahead-index-hint). ### Question mark operator @@ -832,7 +832,7 @@ AQL functions added to the 3.10 Enterprise Edition: - [`OFFSET_INFO()`](../../aql/functions/arangosearch.md#offset_info): An ArangoSearch function to get the start offsets and lengths of matches for - [search highlighting](../../index-and-search/arangosearch/search-highlighting.md). + [search highlighting](../../indexes-and-search/arangosearch/search-highlighting.md). - [`MINHASH()`](../../aql/functions/miscellaneous.md#minhash): A new function for locality-sensitive hashing to approximate the @@ -993,7 +993,7 @@ db.<collection>.ensureIndex({ }); ``` -See [Persistent Indexes](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes). +See [Persistent Indexes](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes). ### Enabling caching for index values @@ -1015,7 +1015,7 @@ scanned index entries is large. As the cache is hash-based and unsorted, it cannot be used for full or partial range scans, for sorting, or for lookups that do not include all index attributes. -See [Persistent Indexes](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values). +See [Persistent Indexes](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values). ## Document keys diff --git a/site/content/arangodb/3.11/release-notes/version-3.11/api-changes-in-3-11.md b/site/content/arangodb/3.11/release-notes/version-3.11/api-changes-in-3-11.md index 22304d5112..37ab31df5a 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.11/api-changes-in-3-11.md +++ b/site/content/arangodb/3.11/release-notes/version-3.11/api-changes-in-3-11.md @@ -482,7 +482,7 @@ and [Monitoring per collection/database/user](../version-3.11/whats-new-in-3-11. The `/_api/analyzer` endpoint supports a new Analyzer type in the Enterprise Edition: -- [`geo_s2`](../../index-and-search/analyzers.md#geo_s2) (introduced in v3.10.5): +- [`geo_s2`](../../indexes-and-search/analyzers.md#geo_s2) (introduced in v3.10.5): Like the existing `geojson` Analyzer, but with an additional `format` property that can be set to `"latLngDouble"` (default), `"latLngInt"`, or `"s2Point"`. @@ -579,7 +579,7 @@ You may use a shorthand notations on `arangosearch` View creation or the `storedValues` option, like `["attr1", "attr2"]`, instead of using an array of objects. -See the [`arangosearch` Views Reference](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +See the [`arangosearch` Views Reference](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. #### Pregel API diff --git a/site/content/arangodb/3.11/release-notes/version-3.11/whats-new-in-3-11.md b/site/content/arangodb/3.11/release-notes/version-3.11/whats-new-in-3-11.md index b0bcd27fe8..c01a2a99f4 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.11/whats-new-in-3-11.md +++ b/site/content/arangodb/3.11/release-notes/version-3.11/whats-new-in-3-11.md @@ -20,7 +20,7 @@ to be requested from the RocksDB storage engine. ### ArangoSearch column cache (Enterprise Edition) -[`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) support new caching options. +[`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) support new caching options. <small>Introduced in: v3.9.5, v3.10.2</small> @@ -76,7 +76,7 @@ metric. ArangoSearch caching is only available in the Enterprise Edition. -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md) for examples. {{< info >}} @@ -107,7 +107,7 @@ disk, the precision, and query performance: This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#geo_s2) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#geo_s2) for details. ## Web interface @@ -137,7 +137,7 @@ details. ### `search-alias` Views The 3.11 release of ArangoDB introduces a new web interface for Views that lets -you to create and manage [`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md). +you to create and manage [`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md). Through this dialog, you can easily create a new View and add to it one or more inverted indexes from your collections that you could otherwise do via the HTTP @@ -149,7 +149,7 @@ the same settings to multiple Views. In addition, the JSON editor offers the option to directly write the definition of your View in JSON format. For more information, see the -[detailed guide](../../index-and-search/arangosearch/search-alias-views-reference.md#create-search-alias-views-using-the-web-interface). +[detailed guide](../../indexes-and-search/arangosearch/search-alias-views-reference.md#create-search-alias-views-using-the-web-interface). ### `arangosearch` Views @@ -159,12 +159,12 @@ or modify the definition of your View. The settings, links, and JSON editor have been merged into a single page, allowing for a much quicker workflow. For more information, see the -[detailed guide](../../index-and-search/arangosearch/arangosearch-views-reference.md#create-arangosearch-views-using-the-web-interface). +[detailed guide](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#create-arangosearch-views-using-the-web-interface). ### Inverted indexes The web interface now includes the option for creating -[inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md) on collections. You can set all the +[inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md) on collections. You can set all the properties directly in the web interface, which previously required the JavaScript or HTTP API. It also offers an editor where you can write the definition of your inverted index in JSON format. diff --git a/site/content/arangodb/3.11/release-notes/version-3.4/whats-new-in-3-4.md b/site/content/arangodb/3.11/release-notes/version-3.4/whats-new-in-3-4.md index 981ec834ee..17ed630dcf 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.4/whats-new-in-3-4.md +++ b/site/content/arangodb/3.11/release-notes/version-3.4/whats-new-in-3-4.md @@ -17,7 +17,7 @@ a user-defined set of attributes and collections. It is the first type of view in ArangoDB. - [ArangoSearch tutorial](https://www.arangodb.com/learn/search/tutorial/) -- [ArangoSearch overview](../../index-and-search/arangosearch/_index.md) +- [ArangoSearch overview](../../indexes-and-search/arangosearch/_index.md) - ArangoSearch in AQL: - [SEARCH operation](../../aql/high-level-operations/search.md) - [ArangoSearch functions](../../aql/functions/arangosearch.md) diff --git a/site/content/arangodb/3.11/release-notes/version-3.5/whats-new-in-3-5.md b/site/content/arangodb/3.11/release-notes/version-3.5/whats-new-in-3-5.md index 9875c19b12..fd8b175c57 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.5/whats-new-in-3-5.md +++ b/site/content/arangodb/3.11/release-notes/version-3.5/whats-new-in-3-5.md @@ -28,7 +28,7 @@ word stemming, remove user-defined stop-words, split by a delimiting character only, perform case conversion and/or removal of diacritic characters against the full input without tokenization and more. -See [Analyzers](../../index-and-search/analyzers.md) for all available options. +See [Analyzers](../../indexes-and-search/analyzers.md) for all available options. ### Sorted Index @@ -99,7 +99,7 @@ Note that the `primarySort` option is immutable: it cannot be changed after View creation. It is therefore not possible to configure it through the Web UI. The View needs to be created via the HTTP or JavaScript API (arangosh) to set it. -See [Primary Sort Order](../../index-and-search/arangosearch/performance.md#primary-sort-order) +See [Primary Sort Order](../../indexes-and-search/arangosearch/performance.md#primary-sort-order) of ArangoSearch Views. ### AQL Integration @@ -155,7 +155,7 @@ cases. Using `PRUNE`, the traverser will not follow any more edges on the current path if the pruning condition is met, but will emit the traversal variables for whatever stopped it. -See: [Graph Traversal Pruning](../../aql/graphs/traversals.md#pruning) +See: [Graph Traversal Pruning](../../aql/graph-queries/traversals.md#pruning) ### SORT-LIMIT optimization @@ -231,7 +231,7 @@ Also see: [AQL Numeric Literals](../../aql/fundamentals/data-types.md#numeric-li AQL now allows to perform k Shortest Paths queries, that is, query a number of paths of increasing length from a start vertex to a target vertex. -See: [AQL k Shortest Paths](../../aql/graphs/k-shortest-paths.md) +See: [AQL k Shortest Paths](../../aql/graph-queries/k-shortest-paths.md) ## SmartJoins @@ -363,7 +363,7 @@ Please note that background index creation is useful only in combination with th storage engine. With the MMFiles storage engine, creating an index will always block any other operations on the collection. -Also see: [Creating Indexes in Background](../../index-and-search/indexing/basics.md#creating-indexes-in-background) +Also see: [Creating Indexes in Background](../../indexes-and-search/indexing/basics.md#creating-indexes-in-background) ## TTL (time-to-live) Indexes @@ -385,7 +385,7 @@ always numerical version of the index attribute value even if it was originally as a datestring. As a result TTL indexes will likely not be used for filtering and sort operations in user-land AQL queries. -Also see: [TTL Indexes](../../index-and-search/indexing/working-with-indexes/ttl-indexes.md) +Also see: [TTL Indexes](../../indexes-and-search/indexing/working-with-indexes/ttl-indexes.md) ## Collections diff --git a/site/content/arangodb/3.11/release-notes/version-3.6/whats-new-in-3-6.md b/site/content/arangodb/3.11/release-notes/version-3.6/whats-new-in-3-6.md index b25cb21b69..35050b10a3 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.6/whats-new-in-3-6.md +++ b/site/content/arangodb/3.11/release-notes/version-3.6/whats-new-in-3-6.md @@ -452,7 +452,7 @@ In addition, ArangoDB 3.6 provides the following new AQL functionality: ### Analyzers - Added UTF-8 support and ability to mark beginning/end of the sequence to - the [`ngram` Analyzer type](../../index-and-search/analyzers.md#ngram). + the [`ngram` Analyzer type](../../indexes-and-search/analyzers.md#ngram). The following optional properties can be provided for an `ngram` Analyzer definition: @@ -466,7 +466,7 @@ In addition, ArangoDB 3.6 provides the following new AQL functionality: - `streamType` : `"binary"|"utf8"`, default: "binary"\ type of the input stream (support for UTF-8 is new) -- Added _edge n-gram_ support to the [`text` Analyzer type](../../index-and-search/analyzers.md#text). +- Added _edge n-gram_ support to the [`text` Analyzer type](../../indexes-and-search/analyzers.md#text). The input gets tokenized as usual, but then _n_-grams are generated from each token. UTF-8 encoding is assumed (whereas the `ngram` Analyzer has a configurable stream type and defaults to binary). diff --git a/site/content/arangodb/3.11/release-notes/version-3.7/whats-new-in-3-7.md b/site/content/arangodb/3.11/release-notes/version-3.7/whats-new-in-3-7.md index f366ab69c1..7eab352e93 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.7/whats-new-in-3-7.md +++ b/site/content/arangodb/3.11/release-notes/version-3.7/whats-new-in-3-7.md @@ -99,7 +99,7 @@ Optimization rules applied: 3 handle-arangosearch-views ``` -See [ArangoSearch Views](../../index-and-search/arangosearch/arangosearch-views-reference.md#view-properties). +See [ArangoSearch Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-properties). ### Stemming support for more languages @@ -140,7 +140,7 @@ db._query(`RETURN TOKENS("αυτοκινητουσ πρωταγωνιστούσ // [ [ "αυτοκινητ", "πρωταγωνιστ" ] ] ``` -Also see [Analyzers: Supported Languages](../../index-and-search/analyzers.md#supported-languages) +Also see [Analyzers: Supported Languages](../../indexes-and-search/analyzers.md#supported-languages) ### Condition Optimization Option @@ -183,7 +183,7 @@ creation to enable or disable the compression of the primary sort data: It defaults to LZ4 compression (`"lz4"`), which was already used in ArangoDB v3.5 and v3.6. Set it to `"none"` on View creation to trade space for speed. -See [ArangoSearch Views](../../index-and-search/arangosearch/arangosearch-views-reference.md#view-properties). +See [ArangoSearch Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-properties). ## SatelliteGraphs @@ -340,7 +340,7 @@ FOR v, e, p IN 1..3 OUTBOUND 'products/123' GRAPH 'components' RETURN v ``` -Also see [AQL Traversal Options](../../aql/graphs/traversals.md#working-with-named-graphs) +Also see [AQL Traversal Options](../../aql/graph-queries/traversals.md#working-with-named-graphs) ### Traversal parallelization (Enterprise Edition) @@ -375,7 +375,7 @@ deployments and to cluster traversals that are running in a OneShard setup. Cluster traversals that run on a coordinator node and SmartGraph traversals are currently not parallelized. -See [Graph traversal options](../../aql/graphs/traversals.md#working-with-named-graphs) +See [Graph traversal options](../../aql/graph-queries/traversals.md#working-with-named-graphs) ### AQL functions added diff --git a/site/content/arangodb/3.11/release-notes/version-3.8/whats-new-in-3-8.md b/site/content/arangodb/3.11/release-notes/version-3.8/whats-new-in-3-8.md index 0423b45d3a..166ecb56e4 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.8/whats-new-in-3-8.md +++ b/site/content/arangodb/3.11/release-notes/version-3.8/whats-new-in-3-8.md @@ -81,7 +81,7 @@ The preferred way to start a breadth-first search from now on is with `order: "bfs"`. The default remains depth-first search if no `order` is specified, but can also be explicitly requested with `order: "dfs"`. -Also see [AQL graph traversals](../../aql/graphs/traversals.md) +Also see [AQL graph traversals](../../aql/graph-queries/traversals.md) ### k Paths @@ -107,7 +107,7 @@ FOR path IN 2..4 OUTBOUND K_PATHS "v/source" TO "v/target" GRAPH "g" … that have length of exactly 2 or 3 or 4, start at `v/source` and end at `v/target`. No order is guaranteed for those paths in the result set. -For more details see [AQL k Paths](../../aql/graphs/k-paths.md) +For more details see [AQL k Paths](../../aql/graph-queries/k-paths.md) ### AQL bit functions @@ -263,19 +263,19 @@ into one. It allows you to combine text normalization for a case insensitive search with _n_-gram tokenization, or to split text at multiple delimiting characters followed by stemming. -See [ArangoSearch Pipeline Analyzer](../../index-and-search/analyzers.md#pipeline) +See [ArangoSearch Pipeline Analyzer](../../indexes-and-search/analyzers.md#pipeline) ### AQL Analyzer Added new Analyzer type `"aql"` capable of running an AQL query (with some restrictions) to perform data manipulation/filtering. -See [ArangoSearch AQL Analyzer](../../index-and-search/analyzers.md#aql) +See [ArangoSearch AQL Analyzer](../../indexes-and-search/analyzers.md#aql) ### Geo-spatial queries -Added two Geo Analyzers [`"geojson"`](../../index-and-search/analyzers.md#geojson) -and [`"geopoint"`](../../index-and-search/analyzers.md#geopoint) as well as the +Added two Geo Analyzers [`"geojson"`](../../indexes-and-search/analyzers.md#geojson) +and [`"geopoint"`](../../indexes-and-search/analyzers.md#geopoint) as well as the following [ArangoSearch Geo functions](../../aql/functions/arangosearch.md#geo-functions) which enable geo-spatial queries backed by View indexes: - `GEO_CONTAINS()` @@ -292,7 +292,7 @@ input. It can be used standalone or be combined with other Analyzers via a pipeline Analyzer to add stop word functionality to them. Previously, only the text Analyzer type provided stop word support. -See [ArangoSearch `stopwords` Analyzer](../../index-and-search/analyzers.md#stopwords) +See [ArangoSearch `stopwords` Analyzer](../../indexes-and-search/analyzers.md#stopwords) ### Approximate count diff --git a/site/content/arangodb/3.11/release-notes/version-3.9/api-changes-in-3-9.md b/site/content/arangodb/3.11/release-notes/version-3.9/api-changes-in-3-9.md index 93816f9036..41e74a0f4b 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.9/api-changes-in-3-9.md +++ b/site/content/arangodb/3.11/release-notes/version-3.9/api-changes-in-3-9.md @@ -325,7 +325,7 @@ options, and you can change the `cache` View link/field property with the `PUT /_api/view/<view-name>/properties` and `PATCH /_api/view/<view-name>/properties` endpoints. -See the [`arangosearch` Views Reference](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +See the [`arangosearch` Views Reference](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. #### Document API diff --git a/site/content/arangodb/3.11/release-notes/version-3.9/whats-new-in-3-9.md b/site/content/arangodb/3.11/release-notes/version-3.9/whats-new-in-3-9.md index f77f661cbc..286b53a8d2 100644 --- a/site/content/arangodb/3.11/release-notes/version-3.9/whats-new-in-3-9.md +++ b/site/content/arangodb/3.11/release-notes/version-3.9/whats-new-in-3-9.md @@ -57,8 +57,8 @@ tokens. This makes comparisons follow the rules of the respective language, most notable in range queries against Views. See: -- [`segmentation` Analyzer](../../index-and-search/analyzers.md#segmentation) -- [`collation` Analyzer](../../index-and-search/analyzers.md#collation) +- [`segmentation` Analyzer](../../indexes-and-search/analyzers.md#segmentation) +- [`collation` Analyzer](../../indexes-and-search/analyzers.md#collation) ### Analyzer locale normalization @@ -110,10 +110,10 @@ The cache size can be controlled with the new `--arangosearch.columns-cache-limi startup option and monitored via the new `arangodb_search_columns_cache_size` metric. -[ArangoSearch caching](../../index-and-search/arangosearch/arangosearch-views-reference.md) is only available in the +[ArangoSearch caching](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) is only available in the Enterprise Edition. -See [Optimizing View query performance](../../index-and-search/arangosearch/performance.md) +See [Optimizing View query performance](../../indexes-and-search/arangosearch/performance.md) for examples. ## UI @@ -347,7 +347,7 @@ FOR v, e, p IN 10 OUTBOUND @start GRAPH "myGraph" The `v.isRelevant == true` condition is stored in the `pruneCondition` variable and used as a condition for `FILTER` later. -See [Pruning](../../aql/graphs/traversals.md#pruning). +See [Pruning](../../aql/graph-queries/traversals.md#pruning). ### Warnings on invalid OPTIONS @@ -618,7 +618,7 @@ the emerging performance is much more dependent on the distribution of the dataset, making it less predictable. A third limitation is that `zkd` indexes can only be created for index values which are IEEE 754 doubles. -[Multi-dimensional Indexes](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) are an experimental feature. +[Multi-dimensional Indexes](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) are an experimental feature. ## Server options diff --git a/site/content/arangodb/3.12/aql/examples-and-query-patterns/joins.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/joins.md index 190c27391b..ee6426b2de 100644 --- a/site/content/arangodb/3.12/aql/examples-and-query-patterns/joins.md +++ b/site/content/arangodb/3.12/aql/examples-and-query-patterns/joins.md @@ -431,7 +431,7 @@ arangosh> db.written.save("authors/2938210813", ``` In order to get all books with their authors, you can use a -[graph traversal](../graphs/traversals.md#working-with-collection-sets): +[graph traversal](../graph-queries/traversals.md#working-with-collection-sets): ```js arangosh> db._query( @@ -880,7 +880,7 @@ FOR o IN orders The `_key` attribute is covered by the primary index of the `users` collection. If the `orders` collection has a persistent index defined over the `user` attribute and additionally includes the `total` attribute in -[`storedValues`](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes), +[`storedValues`](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes), then the query is eligible for a merge join. You can check the query explain output for `JoinNode` entries: diff --git a/site/content/arangodb/3.12/aql/examples-and-query-patterns/traversals.md b/site/content/arangodb/3.12/aql/examples-and-query-patterns/traversals.md index f495de1e4b..5801a6af57 100644 --- a/site/content/arangodb/3.12/aql/examples-and-query-patterns/traversals.md +++ b/site/content/arangodb/3.12/aql/examples-and-query-patterns/traversals.md @@ -7,7 +7,7 @@ description: >- --- ## Finding the start node via a geo query -Our first example will locate the start node for a graph traversal via [a geo index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). +Our first example will locate the start node for a graph traversal via [a geo index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). We use the [City Graph](../../graphs/example-graphs.md#city-graph) and its geo indexes: ![Cities Example Graph](../../../../images/cities_graph.png) diff --git a/site/content/arangodb/3.12/aql/functions/arangosearch.md b/site/content/arangodb/3.12/aql/functions/arangosearch.md index f5ced9f064..267aa1d25e 100644 --- a/site/content/arangodb/3.12/aql/functions/arangosearch.md +++ b/site/content/arangodb/3.12/aql/functions/arangosearch.md @@ -16,7 +16,7 @@ such as `PHRASE(doc.text, "foo bar", "text_en")`, for querying Views. You can combine ArangoSearch filter and context functions as well as operators like `AND` and `OR` to form complex search conditions. Similarly, the [`FILTER` operation](../high-level-operations/filter.md) accepts such search expressions -when using [inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md). +when using [inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md). Scoring functions allow you to rank matches and to sort results by relevance. They are limited to Views. @@ -27,7 +27,7 @@ They are limited to Views. You can use most functions also without an inverted index or a View and the `SEARCH` keyword, but then they are not accelerated by an index. -See [Information Retrieval with ArangoSearch](../../index-and-search/arangosearch/_index.md) for an +See [Information Retrieval with ArangoSearch](../../indexes-and-search/arangosearch/_index.md) for an introduction. ## Context Functions @@ -59,7 +59,7 @@ not an ArangoSearch function but a regular string function which can be used outside of `SEARCH` operations. - **expr** (expression): any valid search expression -- **analyzer** (string): name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string): name of an [Analyzer](../../indexes-and-search/analyzers.md). - returns **retVal** (any): the expression result that it wraps #### Example: Using a custom Analyzer @@ -266,7 +266,7 @@ by the specified `analyzer`. - **path** (attribute path expression): the attribute to test in the document - **type** (string): string literal `"analyzer"` -- **analyzer** (string, _optional_): name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string, _optional_): name of an [Analyzer](../../indexes-and-search/analyzers.md). Uses the Analyzer of a wrapping `ANALYZER()` call if not specified or defaults to `"identity"` - returns nothing: the function evaluates to a boolean, but this value cannot be @@ -285,8 +285,8 @@ FOR doc IN viewName `EXISTS(path, "nested")` Match documents where the attribute at `path` is present _and_ is indexed -as a nested field for [nested search with Views](../../index-and-search/arangosearch/nested-search.md) -or [inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search). +as a nested field for [nested search with Views](../../indexes-and-search/arangosearch/nested-search.md) +or [inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search). - **path** (attribute path expression): the attribute to test in the document - **type** (string): string literal `"nested"` @@ -355,7 +355,7 @@ and `false`), but the data type must be the same for both. The alphabetical order of characters is not taken into account by ArangoSearch, i.e. range queries in SEARCH operations against Views will not follow the language rules as per the defined Analyzer locale (except for the -[`collation` Analyzer](../../index-and-search/analyzers.md#collation)) nor the server language +[`collation` Analyzer](../../indexes-and-search/analyzers.md#collation)) nor the server language (startup option `--default-language`)! Also see [Known Issues](../../release-notes/version-3.12/known-issues-in-3-12.md#arangosearch). {{< /warning >}} @@ -465,7 +465,7 @@ To only compute the MinHash signatures, see the - **target** (string): the string to hash with the specified Analyzer and to compare against the stored attribute - **threshold** (number, _optional_): a value between `0.0` and `1.0`. -- **analyzer** (string): the name of a [`minhash` Analyzer](../../index-and-search/analyzers.md#minhash). +- **analyzer** (string): the name of a [`minhash` Analyzer](../../indexes-and-search/analyzers.md#minhash). - returns **fulfilled** (bool): `true` if the approximate Jaccard similarity is greater than or equal to the specified threshold, `false` otherwise @@ -513,7 +513,7 @@ for calculating _n_-gram similarity that cannot be accelerated by a View index. - **target** (string): the string to compare against the stored attribute - **threshold** (number, _optional_): a value between `0.0` and `1.0`. Defaults to `0.7` if none is specified. -- **analyzer** (string): the name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string): the name of an [Analyzer](../../indexes-and-search/analyzers.md). - returns **fulfilled** (bool): `true` if the evaluated _n_-gram similarity value is greater than or equal to the specified threshold, `false` otherwise @@ -594,7 +594,7 @@ array as second argument. to string and array tokens, but not for object tokens. - **skipTokens** (number, _optional_): amount of tokens to treat as wildcards -- **analyzer** (string, _optional_): name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string, _optional_): name of an [Analyzer](../../indexes-and-search/analyzers.md). Uses the Analyzer of a wrapping `ANALYZER()` call if not specified or defaults to `"identity"` - returns nothing: the function evaluates to a boolean, but this value cannot be @@ -783,7 +783,7 @@ to match the document. The alphabetical order of characters is not taken into account by ArangoSearch, i.e. range queries in SEARCH operations against Views will not follow the language rules as per the defined Analyzer locale (except for the -[`collation` Analyzer](../../index-and-search/analyzers.md#collation)) nor the server language +[`collation` Analyzer](../../indexes-and-search/analyzers.md#collation)) nor the server language (startup option `--default-language`)! Also see [Known Issues](../../release-notes/version-3.12/known-issues-in-3-12.md#arangosearch). {{< /warning >}} @@ -1360,4 +1360,4 @@ db._query(` ~analyzers.remove(analyzer.name); ``` -For full examples, see [Search Highlighting](../../index-and-search/arangosearch/search-highlighting.md). +For full examples, see [Search Highlighting](../../indexes-and-search/arangosearch/search-highlighting.md). diff --git a/site/content/arangodb/3.12/aql/functions/date.md b/site/content/arangodb/3.12/aql/functions/date.md index 88abc7ec4c..155b99198b 100644 --- a/site/content/arangodb/3.12/aql/functions/date.md +++ b/site/content/arangodb/3.12/aql/functions/date.md @@ -72,7 +72,7 @@ You are free to store age determinations of specimens, incomplete or fuzzy dates the like in different, more appropriate ways of course. AQL's date functions are most certainly not of any help for such dates, but you can still use language constructs like [SORT](../high-level-operations/sort.md) (which also supports sorting of arrays) -and [indexes](../../index-and-search/indexing/_index.md). +and [indexes](../../indexes-and-search/indexing/_index.md). ## Current date and time @@ -1581,7 +1581,7 @@ There are two recommended ways to store timestamps in ArangoDB: The sort order of both is identical due to the sort properties of ISO date strings. You can't mix both types, numbers and strings, in a single attribute however. -You can use [persistent indexes](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md) with both date types. +You can use [persistent indexes](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md) with both date types. When choosing string representations, you can work with string comparisons (less than, greater than etc.) to express time ranges in your queries while still utilizing persistent indexes: diff --git a/site/content/arangodb/3.12/aql/functions/fulltext.md b/site/content/arangodb/3.12/aql/functions/fulltext.md index 54a0cd35bc..ce1c8f738c 100644 --- a/site/content/arangodb/3.12/aql/functions/fulltext.md +++ b/site/content/arangodb/3.12/aql/functions/fulltext.md @@ -5,13 +5,13 @@ weight: 30 description: >- AQL offers functions to filter data using fulltext indexes --- -See [fulltext indexes](../../index-and-search/indexing/working-with-indexes/fulltext-indexes.md) +See [fulltext indexes](../../indexes-and-search/indexing/working-with-indexes/fulltext-indexes.md) for details. {{< warning >}} The fulltext index type is deprecated from version 3.10 onwards. -It is recommended to use [Inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md) or -[ArangoSearch](../../index-and-search/arangosearch/_index.md) for advanced full-text search capabilities. +It is recommended to use [Inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md) or +[ArangoSearch](../../indexes-and-search/arangosearch/_index.md) for advanced full-text search capabilities. {{< /warning >}} ## FULLTEXT() diff --git a/site/content/arangodb/3.12/aql/functions/geo.md b/site/content/arangodb/3.12/aql/functions/geo.md index 71820df92a..3a819a76f9 100644 --- a/site/content/arangodb/3.12/aql/functions/geo.md +++ b/site/content/arangodb/3.12/aql/functions/geo.md @@ -12,7 +12,7 @@ You can model geo-spatial information in different ways using the data types available in ArangoDB. The recommended way is to use objects with **GeoJSON** geometry but you can also use **longitude and latitude coordinate pairs** for points. Both models are supported by -[Geo-Spatial Indexes](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). +[Geo-Spatial Indexes](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). ### Coordinate pairs @@ -344,7 +344,7 @@ lies South of the parallel of latitude at 54 degrees. {{< info >}} ArangoDB version before 3.10 did an inconsistent special detection of "rectangle" polygons that later versions from 3.10 onward no longer do, see -[Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons). +[Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons). {{< /info >}} Furthermore, there is an issue with the interpretation of linear rings @@ -393,7 +393,7 @@ ArangoDB versions before 3.10 did not follow this rule and always took the "smaller" connected component of the surface as the "interior" of the polygon. This made it impossible to specify polygons which covered more than half of the sphere. From version 3.10 onward, ArangoDB recognizes this correctly. -See [Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) +See [Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for how to deal with this issue. ## Geo utility functions @@ -401,7 +401,7 @@ for how to deal with this issue. The following helper functions **can** use geo indexes, but do not have to in all cases. You can use all of these functions in combination with each other, and if you have configured a geo index it may be utilized, -see [Geo Indexing](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). +see [Geo Indexing](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). ### DISTANCE() @@ -456,7 +456,7 @@ boundary edges! {{< /info >}} You can optimize queries that contain a `FILTER` expression of the following -form with an S2-based [geospatial index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): +form with an S2-based [geospatial index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ```aql FOR doc IN coll @@ -500,7 +500,7 @@ FOR doc IN collectionName ``` You can optimize queries that contain a `FILTER` expression of the following -form with an S2-based [geospatial index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): +form with an S2-based [geospatial index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ```aql FOR doc IN coll @@ -590,7 +590,7 @@ intersects with `geoJsonB` (i.e. at least one point in B is also in A or vice-ve - returns **bool** (bool): `true` if B intersects A, `false` otherwise. You can optimize queries that contain a `FILTER` expression of the following -form with an S2-based [geospatial index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): +form with an S2-based [geospatial index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ```aql FOR doc IN coll @@ -862,7 +862,7 @@ Please use the [Geo utility functions](#geo-utility-functions) instead. {{< /warning >}} AQL offers the following functions to filter data based on -[geo indexes](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). These functions require the collection +[geo indexes](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). These functions require the collection to have at least one geo index. If no geo index can be found, calling this function will fail with an error at runtime. There is no error when explaining the query however. diff --git a/site/content/arangodb/3.12/aql/functions/string.md b/site/content/arangodb/3.12/aql/functions/string.md index a1546e7a86..24e70099c3 100644 --- a/site/content/arangodb/3.12/aql/functions/string.md +++ b/site/content/arangodb/3.12/aql/functions/string.md @@ -1745,7 +1745,7 @@ of in number of characters. This function is intended to be used together with the [`OFFSET_INFO()` function](arangosearch.md#offset_info) for -[search highlighting](../../index-and-search/arangosearch/search-highlighting.md). +[search highlighting](../../indexes-and-search/arangosearch/search-highlighting.md). - **value** (string): a string - **offset** (number): start at this byte of the UTF-8 encoded string. @@ -1840,7 +1840,7 @@ A wrapping `ANALYZER()` call in a search expression does not affect the - **input** (string\|array): text to tokenize. Accepts recursive arrays of strings. -- **analyzer** (string): name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string): name of an [Analyzer](../../indexes-and-search/analyzers.md). - returns **tokenArray** (array): array of strings with zero or more elements, each element being a token. diff --git a/site/content/arangodb/3.12/aql/functions/vector.md b/site/content/arangodb/3.12/aql/functions/vector.md index 18c79bc7b8..e334b0d9ad 100644 --- a/site/content/arangodb/3.12/aql/functions/vector.md +++ b/site/content/arangodb/3.12/aql/functions/vector.md @@ -10,7 +10,7 @@ description: >- To use vector search, you need to have vector embeddings stored in documents and the attribute that stores them needs to be indexed by a -[vector index](../../index-and-search/indexing/working-with-indexes/vector-indexes.md). +[vector index](../../indexes-and-search/indexing/working-with-indexes/vector-indexes.md). You can calculate vector embeddings using [ArangoDB's GraphML](../../../../ai-suite/graphml/_index.md) capabilities (available in the Arango Managed Platform (AMP)) or using external tools. diff --git a/site/content/arangodb/3.12/aql/fundamentals/limitations.md b/site/content/arangodb/3.12/aql/fundamentals/limitations.md index 1cfe10977c..e3224019ac 100644 --- a/site/content/arangodb/3.12/aql/fundamentals/limitations.md +++ b/site/content/arangodb/3.12/aql/fundamentals/limitations.md @@ -56,7 +56,7 @@ The following design limitations are known for AQL queries: it was used for a write operation in the same AQL query. - In the cluster, all collections that are accessed **dynamically** by - [traversals working with collection sets](../graphs/traversals.md#working-with-collection-sets) + [traversals working with collection sets](../graph-queries/traversals.md#working-with-collection-sets) (instead of named graphs) must be stated in the query's initial [`WITH` statement](../high-level-operations/with.md). To make the `WITH` statement required in single server as well (e.g. for testing a migration to cluster), diff --git a/site/content/arangodb/3.12/aql/fundamentals/syntax.md b/site/content/arangodb/3.12/aql/fundamentals/syntax.md index 30e62f0480..635f4f417c 100644 --- a/site/content/arangodb/3.12/aql/fundamentals/syntax.md +++ b/site/content/arangodb/3.12/aql/fundamentals/syntax.md @@ -167,20 +167,20 @@ based on the context: [REPLACE](../high-level-operations/replace.md#query-options) / [UPSERT](../high-level-operations/upsert.md#query-options) / [REMOVE](../high-level-operations/remove.md#query-options) operation / - [Graph Traversal](../graphs/traversals.md) / - [Shortest Path](../graphs/shortest-path.md#path-search-options) / - [All Shortest Paths](../graphs/all-shortest-paths.md#path-search-options) / - [k Shortest Paths](../graphs/k-shortest-paths.md#path-search-options) / - [k Paths](../graphs/k-paths.md#path-search-options) + [Graph Traversal](../graph-queries/traversals.md) / + [Shortest Path](../graph-queries/shortest-path.md#path-search-options) / + [All Shortest Paths](../graph-queries/all-shortest-paths.md#path-search-options) / + [k Shortest Paths](../graph-queries/k-shortest-paths.md#path-search-options) / + [k Paths](../graph-queries/k-paths.md#path-search-options) - `PRUNE` – - [Graph Traversal](../graphs/traversals.md#pruning) (`FOR` operation variant) + [Graph Traversal](../graph-queries/traversals.md#pruning) (`FOR` operation variant) - `SEARCH` – [SEARCH](../high-level-operations/search.md) operation - `TO` – - [Shortest Path](../graphs/shortest-path.md) / - [All Shortest Paths](../graphs/all-shortest-paths.md) / - [k Shortest Paths](../graphs/k-shortest-paths.md) / - [k Paths](../graphs/k-paths.md) + [Shortest Path](../graph-queries/shortest-path.md) / + [All Shortest Paths](../graph-queries/all-shortest-paths.md) / + [k Shortest Paths](../graph-queries/k-shortest-paths.md) / + [k Paths](../graph-queries/k-paths.md) Last but not least, there are special variables which are available in certain contexts. Unlike keywords, they are **case-sensitive**: diff --git a/site/content/arangodb/3.13/aql/graphs/_index.md b/site/content/arangodb/3.12/aql/graph-queries/_index.md similarity index 97% rename from site/content/arangodb/3.13/aql/graphs/_index.md rename to site/content/arangodb/3.12/aql/graph-queries/_index.md index feaaf527fb..d0acfc0bd2 100644 --- a/site/content/arangodb/3.13/aql/graphs/_index.md +++ b/site/content/arangodb/3.12/aql/graph-queries/_index.md @@ -1,6 +1,6 @@ --- -title: Graphs in AQL -menuTitle: Graphs +title: Graph queries in AQL +menuTitle: Graph queries weight: 35 description: >- You can perform graph traversals and path searches on named graphs as well as diff --git a/site/content/arangodb/3.12/aql/graphs/all-shortest-paths.md b/site/content/arangodb/3.12/aql/graph-queries/all-shortest-paths.md similarity index 100% rename from site/content/arangodb/3.12/aql/graphs/all-shortest-paths.md rename to site/content/arangodb/3.12/aql/graph-queries/all-shortest-paths.md diff --git a/site/content/arangodb/3.12/aql/graphs/k-paths.md b/site/content/arangodb/3.12/aql/graph-queries/k-paths.md similarity index 100% rename from site/content/arangodb/3.12/aql/graphs/k-paths.md rename to site/content/arangodb/3.12/aql/graph-queries/k-paths.md diff --git a/site/content/arangodb/3.12/aql/graphs/k-shortest-paths.md b/site/content/arangodb/3.12/aql/graph-queries/k-shortest-paths.md similarity index 100% rename from site/content/arangodb/3.12/aql/graphs/k-shortest-paths.md rename to site/content/arangodb/3.12/aql/graph-queries/k-shortest-paths.md diff --git a/site/content/arangodb/3.12/aql/graphs/shortest-path.md b/site/content/arangodb/3.12/aql/graph-queries/shortest-path.md similarity index 100% rename from site/content/arangodb/3.12/aql/graphs/shortest-path.md rename to site/content/arangodb/3.12/aql/graph-queries/shortest-path.md diff --git a/site/content/arangodb/3.12/aql/graphs/traversals-explained.md b/site/content/arangodb/3.12/aql/graph-queries/traversals-explained.md similarity index 100% rename from site/content/arangodb/3.12/aql/graphs/traversals-explained.md rename to site/content/arangodb/3.12/aql/graph-queries/traversals-explained.md diff --git a/site/content/arangodb/3.12/aql/graphs/traversals.md b/site/content/arangodb/3.12/aql/graph-queries/traversals.md similarity index 99% rename from site/content/arangodb/3.12/aql/graphs/traversals.md rename to site/content/arangodb/3.12/aql/graph-queries/traversals.md index ed04514a58..126c7b32ee 100644 --- a/site/content/arangodb/3.12/aql/graphs/traversals.md +++ b/site/content/arangodb/3.12/aql/graph-queries/traversals.md @@ -218,7 +218,7 @@ versus the whole document. <small>Introduced in v3.12.1</small> You can provide index hints for traversals to let the optimizer prefer -the [vertex-centric indexes](../../index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md) +the [vertex-centric indexes](../../indexes-and-search/indexing/working-with-indexes/vertex-centric-indexes.md) you specify over the regular edge index. This is useful for cases where the selectively estimate of the edge index diff --git a/site/content/arangodb/3.12/aql/high-level-operations/for.md b/site/content/arangodb/3.12/aql/high-level-operations/for.md index e35306ea00..d9e1c4a502 100644 --- a/site/content/arangodb/3.12/aql/high-level-operations/for.md +++ b/site/content/arangodb/3.12/aql/high-level-operations/for.md @@ -12,7 +12,7 @@ The general syntax for iterating over collections and arrays is: <pre><code>FOR <em>variableName</em> IN <em>expression</em></code></pre> -There is also a special variant for [graph traversals](../graphs/traversals.md): +There is also a special variant for [graph traversals](../graph-queries/traversals.md): <pre><code>FOR <em>nodeVariableName</em> [, <em>edgeVariableName</em> [, <em>pathVariableName</em> ] ] IN <em>traversalExpression</em></code></pre> @@ -218,7 +218,7 @@ there are a few corner cases where it can make sense: {{< info >}} Starting with version 3.10, `maxProjections` can be used in -[Graph Traversals](../graphs/traversals.md#working-with-named-graphs). +[Graph Traversals](../graph-queries/traversals.md#working-with-named-graphs). {{< /info >}} ### `useCache` @@ -247,7 +247,7 @@ cache cannot be used (i.e. because the query's filter condition does not contain equality lookups for all index attributes). It cannot be used for `FOR` operations that iterate over Views or perform graph traversals. -Also see [Caching of index values](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values). +Also see [Caching of index values](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values). ### `lookahead` @@ -258,4 +258,4 @@ index hint for tweaking performance: FOR … IN … OPTIONS { lookahead: 32 } ``` -See [Multi-dimensional indexes](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md#lookahead-index-hint). +See [Multi-dimensional indexes](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md#lookahead-index-hint). diff --git a/site/content/arangodb/3.12/aql/high-level-operations/search.md b/site/content/arangodb/3.12/aql/high-level-operations/search.md index a8d8089a79..e913ed5ff1 100644 --- a/site/content/arangodb/3.12/aql/high-level-operations/search.md +++ b/site/content/arangodb/3.12/aql/high-level-operations/search.md @@ -26,8 +26,8 @@ The optional `SEARCH` operation provides the capabilities to: - sort the result set based on how closely each document matched the search conditions -See [`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) and -[`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md) on how to set up Views. +See [`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) and +[`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md) on how to set up Views. ## Syntax @@ -121,7 +121,7 @@ FOR doc IN viewName The alphabetical order of characters is not taken into account by ArangoSearch, i.e. range queries in SEARCH operations against Views will not follow the language rules as per the defined Analyzer locale (except for the -[`collation` Analyzer](../../index-and-search/analyzers.md#collation)) nor the server language +[`collation` Analyzer](../../indexes-and-search/analyzers.md#collation)) nor the server language (startup option `--default-language`)! Also see [Known Issues](../../release-notes/version-3.12/known-issues-in-3-12.md#arangosearch). {{< /warning >}} @@ -163,7 +163,7 @@ different outside of `SEARCH`, where `IN` needs to be followed by an array. ### Question mark operator You can use the [Question mark operator](../operators.md#question-mark-operator) -to perform [Nested searches with ArangoSearch](../../index-and-search/arangosearch/nested-search.md) +to perform [Nested searches with ArangoSearch](../../indexes-and-search/arangosearch/nested-search.md) : ```aql @@ -175,9 +175,9 @@ FOR doc IN myView It allows you to match nested objects in arrays that satisfy multiple conditions each, and optionally define how often these conditions should be fulfilled for the entire array. You need to configure the View specifically for this type of -search using the `nested` property in [`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) -or in the definition of [Inverted Indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search) -that you can add to [`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md). +search using the `nested` property in [`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +or in the definition of [Inverted Indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search) +that you can add to [`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md). ## Handling of non-indexed fields @@ -233,7 +233,7 @@ FOR doc IN myView ``` You can use the special `includeAllFields` -[`arangosearch` View property](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +[`arangosearch` View property](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) to index all (sub-)attributes of the source documents if desired. ## `SEARCH` with `SORT` @@ -249,7 +249,7 @@ FOR doc IN viewName ``` If the (left-most) fields and their sorting directions match up with the -[primary sort order](../../index-and-search/arangosearch/performance.md#primary-sort-order) definition +[primary sort order](../../indexes-and-search/arangosearch/performance.md#primary-sort-order) definition of the View then the `SORT` operation is optimized away. Apart from simple sorting, it is possible to sort the matched View documents by @@ -317,7 +317,7 @@ search criteria get optimized: - `"none"`: search the index without optimizing the conditions. <!-- Internal only: nodnf, noneg --> -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md#condition-optimization-options) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md#condition-optimization-options) for an example. ### `countApproximate` @@ -333,7 +333,7 @@ You can set it to one of the following values: only (e.g. `SEARCH doc.field == "value"`), the usual eventual consistency of Views aside. -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md#count-approximation) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md#count-approximation) for an example. ### `parallelism` diff --git a/site/content/arangodb/3.12/aql/high-level-operations/with.md b/site/content/arangodb/3.12/aql/high-level-operations/with.md index 7d0eff0888..581cd37a3f 100644 --- a/site/content/arangodb/3.12/aql/high-level-operations/with.md +++ b/site/content/arangodb/3.12/aql/high-level-operations/with.md @@ -52,7 +52,7 @@ involved collections. Using named graphs in traversals (`GRAPH "graph-name"`) does not require it either, assuming that all nodes are in collections that are part of the graph, as enforced by the [Graph API](../../develop/http-api/graphs/named-graphs.md). That means, it is only necessary for traversals using anonymous graphs / -[collection sets](../graphs/traversals.md#working-with-collection-sets). +[collection sets](../graph-queries/traversals.md#working-with-collection-sets). The following example query specifies an edge collection `usersHaveManagers` to perform a graph traversal. It is the only explicitly specified collection in diff --git a/site/content/arangodb/3.12/aql/operators.md b/site/content/arangodb/3.12/aql/operators.md index d925fc226d..4088ea013f 100644 --- a/site/content/arangodb/3.12/aql/operators.md +++ b/site/content/arangodb/3.12/aql/operators.md @@ -728,8 +728,8 @@ surrounding length check. The following table compares both variants: {.fixed} The question mark operator can be used for nested search: -- [Nested search with ArangoSearch](../index-and-search/arangosearch/nested-search.md) using Views -- Nested search using [Inverted indexes](../index-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search) +- [Nested search with ArangoSearch](../indexes-and-search/arangosearch/nested-search.md) using Views +- Nested search using [Inverted indexes](../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search) ### Array destructuring diff --git a/site/content/arangodb/3.12/components/arangodb-server/environment-variables.md b/site/content/arangodb/3.12/components/arangodb-server/environment-variables.md index 382b2a5168..887f7b030f 100644 --- a/site/content/arangodb/3.12/components/arangodb-server/environment-variables.md +++ b/site/content/arangodb/3.12/components/arangodb-server/environment-variables.md @@ -100,7 +100,7 @@ description: >- - `IRESEARCH_TEXT_STOPWORD_PATH` Path to a directory with stop word files for - [ArangoSearch Text Analyzers](../../index-and-search/analyzers.md#text). + [ArangoSearch Text Analyzers](../../indexes-and-search/analyzers.md#text). <!-- ARANGODB_CONFIG_PATH, ICU_DATA, ICU_DATA_LEGACY, ... (TRI_GETENV, iresearch::getenv) --> diff --git a/site/content/arangodb/3.12/components/tools/_index.md b/site/content/arangodb/3.12/components/tools/_index.md index 318e0379eb..a3b1311828 100644 --- a/site/content/arangodb/3.12/components/tools/_index.md +++ b/site/content/arangodb/3.12/components/tools/_index.md @@ -32,4 +32,4 @@ Additional tools which are available separately: | [Foxx CLI](foxx-cli/_index.md) | Command line tool for managing and developing Foxx services | [kube-arangodb](../../deploy/kubernetes.md) | Operators to manage Kubernetes deployments | [oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) -| [ArangoDB Datasets](arango-datasets.md) | A Python package for loading sample datasets into ArangoDB +| [ArangoDB Datasets](../../../../ecosystem/arango-datasets.md) | A Python package for loading sample datasets into ArangoDB diff --git a/site/content/arangodb/3.12/concepts/data-retrieval.md b/site/content/arangodb/3.12/concepts/data-retrieval.md index 76dbbfe4e4..8958156773 100644 --- a/site/content/arangodb/3.12/concepts/data-retrieval.md +++ b/site/content/arangodb/3.12/concepts/data-retrieval.md @@ -17,8 +17,8 @@ collections. Queries are written in the [ArangoDB Query Language](../aql/_index. easily processable batches instead of one big hunk. **Indexes** are used to speed up queries. There are multiple types of indexes, -such as [persistent indexes](../index-and-search/indexing/working-with-indexes/persistent-indexes.md) and -[geo-spatial indexes](../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). +such as [persistent indexes](../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md) and +[geo-spatial indexes](../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). **Views** are another type of index, primarily for full-text search. See -[ArangoSearch](../index-and-search/arangosearch/_index.md). +[ArangoSearch](../indexes-and-search/arangosearch/_index.md). diff --git a/site/content/arangodb/3.12/concepts/data-structure/views.md b/site/content/arangodb/3.12/concepts/data-structure/views.md index b3d51cb52e..2c67dcf920 100644 --- a/site/content/arangodb/3.12/concepts/data-structure/views.md +++ b/site/content/arangodb/3.12/concepts/data-structure/views.md @@ -15,15 +15,15 @@ more collections. The transformation depends on the View type and the View configuration. Views are powered by ArangoDB's built-in search engine. -See [ArangoSearch](../../index-and-search/arangosearch/_index.md) for details. +See [ArangoSearch](../../indexes-and-search/arangosearch/_index.md) for details. ## View types Available View types: -- The traditional [`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) to which +- The traditional [`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) to which you link collections to. -- The modern [`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md) +- The modern [`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md) that can reference inverted indexes that are defined on the collection-level. You need to specify the type when you create the View. @@ -126,8 +126,8 @@ The examples are limited to the basic usage of the View interfaces. See the following for more details about the different View types and their configuration: -- [`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) -- [`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md) +- [`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) +- [`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md) ### Create a View diff --git a/site/content/arangodb/3.12/develop/http-api/analyzers.md b/site/content/arangodb/3.12/develop/http-api/analyzers.md index feb941feda..3010b67f25 100644 --- a/site/content/arangodb/3.12/develop/http-api/analyzers.md +++ b/site/content/arangodb/3.12/develop/http-api/analyzers.md @@ -9,7 +9,7 @@ description: >- The RESTful API for managing ArangoSearch Analyzers is accessible via the `/_api/analyzer` endpoint. -See the description of [Analyzers](../../index-and-search/analyzers.md) for an +See the description of [Analyzers](../../indexes-and-search/analyzers.md) for an introduction and the available types, properties and features. ## Create an Analyzer diff --git a/site/content/arangodb/3.12/develop/http-api/views/arangosearch-views.md b/site/content/arangodb/3.12/develop/http-api/views/arangosearch-views.md index 84fbb8d078..c8f8fd9dba 100644 --- a/site/content/arangodb/3.12/develop/http-api/views/arangosearch-views.md +++ b/site/content/arangodb/3.12/develop/http-api/views/arangosearch-views.md @@ -68,7 +68,7 @@ paths: } ``` - See [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + See [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -446,7 +446,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -918,7 +918,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -1334,7 +1334,7 @@ paths: } ``` - See [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + See [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object cleanupIntervalStep: @@ -1520,7 +1520,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -1846,7 +1846,7 @@ paths: } ``` - See [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + See [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object cleanupIntervalStep: @@ -2028,7 +2028,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -2395,7 +2395,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: diff --git a/site/content/arangodb/3.12/develop/javascript-api/@arangodb/collection-object.md b/site/content/arangodb/3.12/develop/javascript-api/@arangodb/collection-object.md index 1073ed2e31..5598e363ae 100644 --- a/site/content/arangodb/3.12/develop/javascript-api/@arangodb/collection-object.md +++ b/site/content/arangodb/3.12/develop/javascript-api/@arangodb/collection-object.md @@ -179,7 +179,7 @@ any need to load a collection with the RocksDB storage engine. Loads suitable indexes of this collection into memory. -See [`collection.loadIndexesIntoMemory()`](../../../index-and-search/indexing/working-with-indexes/_index.md#load-indexes-into-memory). +See [`collection.loadIndexesIntoMemory()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#load-indexes-into-memory). ### `collection.name()` @@ -500,13 +500,13 @@ any need to unload a collection with the RocksDB storage engine. Creates an index if it doesn't exist already. -See [`collection.ensureIndex()`](../../../index-and-search/indexing/working-with-indexes/_index.md#creating-an-index). +See [`collection.ensureIndex()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#creating-an-index). ### `collection.indexes([withStats [, withHidden]])` Lists all indexes of the collection. -See [`collection.indexes()`](../../../index-and-search/indexing/working-with-indexes/_index.md#listing-all-indexes-of-a-collection). +See [`collection.indexes()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#listing-all-indexes-of-a-collection). ### `collection.getIndexes([withStats [, withHidden]])` @@ -516,13 +516,13 @@ Same as [`collection.indexes([withStats [, withHidden]])`](#collectionindexeswit Gets an index by identifier. -See [`collection.index()`](../../../index-and-search/indexing/working-with-indexes/_index.md#index-identifiers). +See [`collection.index()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#index-identifiers). ### `collection.dropIndex(index)` Drops an index by identifier. -See [`collection.dropIndex()`](../../../index-and-search/indexing/working-with-indexes/_index.md#dropping-an-index-via-a-collection-object). +See [`collection.dropIndex()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#dropping-an-index-via-a-collection-object). ## Documents diff --git a/site/content/arangodb/3.12/develop/javascript-api/@arangodb/db-object.md b/site/content/arangodb/3.12/develop/javascript-api/@arangodb/db-object.md index 375ac3c937..bcc82a55e1 100644 --- a/site/content/arangodb/3.12/develop/javascript-api/@arangodb/db-object.md +++ b/site/content/arangodb/3.12/develop/javascript-api/@arangodb/db-object.md @@ -1044,8 +1044,8 @@ supported View type. `properties` is an optional object containing View configuration specific to each View-type. -- [`arangosearch` View definition](../../../index-and-search/arangosearch/arangosearch-views-reference.md#view-definitionmodification) -- [`search-alias` View definition](../../../index-and-search/arangosearch/search-alias-views-reference.md#view-definition) +- [`arangosearch` View definition](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-definitionmodification) +- [`search-alias` View definition](../../../indexes-and-search/arangosearch/search-alias-views-reference.md#view-definition) **Examples** @@ -1189,13 +1189,13 @@ See [`db._profileQuery()`](../../../aql/execution-and-performance/query-profilin Fetches an index by identifier. -See [`db._index()`](../../../index-and-search/indexing/working-with-indexes/_index.md#fetching-an-index-by-identifier). +See [`db._index()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#fetching-an-index-by-identifier). ### `db._dropIndex(index)` Drops an index by identifier. -See [`db._dropIndex()`](../../../index-and-search/indexing/working-with-indexes/_index.md#dropping-an-index-via-a-database-object). +See [`db._dropIndex()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#dropping-an-index-via-a-database-object). ## Transactions diff --git a/site/content/arangodb/3.12/develop/javascript-api/@arangodb/view-object.md b/site/content/arangodb/3.12/develop/javascript-api/@arangodb/view-object.md index 783e162dc0..7dea144d70 100644 --- a/site/content/arangodb/3.12/develop/javascript-api/@arangodb/view-object.md +++ b/site/content/arangodb/3.12/develop/javascript-api/@arangodb/view-object.md @@ -86,8 +86,8 @@ determines how the `new-properties` object is merged with current View propertie properties if `false`). For the available properties of the supported View types, see: -- [`arangosearch` View Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#view-properties) -- [`search-alias` View Modification](../../../index-and-search/arangosearch/search-alias-views-reference.md#view-modification) +- [`arangosearch` View Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-properties) +- [`search-alias` View Modification](../../../indexes-and-search/arangosearch/search-alias-views-reference.md#view-modification) **Examples** diff --git a/site/content/arangodb/3.12/develop/javascript-api/analyzers.md b/site/content/arangodb/3.12/develop/javascript-api/analyzers.md index c25f28b077..a735c2449b 100644 --- a/site/content/arangodb/3.12/develop/javascript-api/analyzers.md +++ b/site/content/arangodb/3.12/develop/javascript-api/analyzers.md @@ -13,7 +13,7 @@ both server-side and client-side code (arangosh, Foxx): var analyzers = require("@arangodb/analyzers"); ``` -See [Analyzers](../../index-and-search/analyzers.md) for general information and +See [Analyzers](../../indexes-and-search/analyzers.md) for general information and details about the attributes. ## Analyzer Module Methods diff --git a/site/content/arangodb/3.12/develop/operational-factors.md b/site/content/arangodb/3.12/develop/operational-factors.md index 5e972dd866..af53a0c96e 100644 --- a/site/content/arangodb/3.12/develop/operational-factors.md +++ b/site/content/arangodb/3.12/develop/operational-factors.md @@ -142,7 +142,7 @@ Should you decide to create an index you should consider a few things: - Indexes are a trade-off between storage space, maintenance cost and query speed. - Each new index increases the amount of RAM and the amount of disk space needed. -- Indexes with [indexed array values](../index-and-search/indexing/basics.md#indexing-array-values) +- Indexes with [indexed array values](../indexes-and-search/indexing/basics.md#indexing-array-values) need an extra index entry per array entry - Adding indexes increases the write-amplification i.e. it negatively affects the write performance (how much depends on the storage engine) @@ -163,7 +163,7 @@ to understand the bottlenecks in your queries. Always consider the additional space requirements of extra indexes when planning server capacities. For more information on indexes see -[Index Basics](../index-and-search/indexing/basics.md). +[Index Basics](../indexes-and-search/indexing/basics.md). ## Number of Databases and Collections diff --git a/site/content/arangodb/3.12/features/highlights-by-version.md b/site/content/arangodb/3.12/features/highlights-by-version.md index bb3db66447..9ca68e096a 100644 --- a/site/content/arangodb/3.12/features/highlights-by-version.md +++ b/site/content/arangodb/3.12/features/highlights-by-version.md @@ -21,11 +21,11 @@ See [ArangoDB Editions](_index.md#arangodb-editions) for details. Better tracking and observability of memory consumption for ArangoDB deployments and reduced memory usage. -- [**`wildcard` Analyzer**](../index-and-search/analyzers.md#wildcard): +- [**`wildcard` Analyzer**](../indexes-and-search/analyzers.md#wildcard): Accelerate `LIKE` searches with `_` and `%` wildcards against Views and inverted indexes with _n_-grams to quickly find candidate matches. -- [**Multi-dimensional indexes**](../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): +- [**Multi-dimensional indexes**](../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): An index type to efficiently intersect multiple range queries, like finding all appointments that intersect a time range. Optionally with prefix fields, with support for using it as vertex-centric index in graph traversals. @@ -50,7 +50,7 @@ See [ArangoDB Editions](_index.md#arangodb-editions) for details. **Enterprise Edition** -- [**ArangoSearch WAND optimization**](../index-and-search/arangosearch/performance.md#wand-optimization): +- [**ArangoSearch WAND optimization**](../indexes-and-search/arangosearch/performance.md#wand-optimization): Retrieve search results for the highest-ranking matches from Views faster by defining a list of sort expressions to optimize. @@ -76,7 +76,7 @@ Also see [What's New in 3.12](../release-notes/version-3.12/whats-new-in-3-12.md stored values, primary sort columns, and primary key columns in memory to improve the performance of Views and inverted indexes. -- [**`geo_s2` Analyzer**](../index-and-search/analyzers.md#geo_s2): +- [**`geo_s2` Analyzer**](../indexes-and-search/analyzers.md#geo_s2): Efficiently index geo-spatial data using different binary formats, tuning the size on disk, the precision, and query performance. @@ -94,7 +94,7 @@ Also see [What's New in 3.11](../release-notes/version-3.11/whats-new-in-3-11.md Persistent document attributes that are generated when documents are created or modified, using an AQL expression. -- [**Inverted indexes**](../index-and-search/indexing/working-with-indexes/inverted-indexes.md): +- [**Inverted indexes**](../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md): A new, eventually consistent index type that can accelerate a broad range of queries, providing similar search capabilities as `arangosearch` Views, but defined per collection and simpler to use. @@ -105,12 +105,12 @@ Also see [What's New in 3.11](../release-notes/version-3.11/whats-new-in-3-11.md alternative to `arangosearch` Views. - **Persistent indexes**: - An optional [**In-memory Cache**](../index-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values) - for faster lookups and [**Stored Values**](../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes) + An optional [**In-memory Cache**](../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values) + for faster lookups and [**Stored Values**](../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes) to let persistent indexes cover additional attributes of projections. - **AQL Graph Traversals**: - [All Shortest Paths](../aql/graphs/all-shortest-paths.md) allows you to query + [All Shortest Paths](../aql/graph-queries/all-shortest-paths.md) allows you to query for all paths of shortest length between two documents. **Enterprise Edition** @@ -118,15 +118,15 @@ Also see [What's New in 3.11](../release-notes/version-3.11/whats-new-in-3-11.md - [**EnterpriseGraphs**](../graphs/enterprisegraphs/_index.md): A new specialized version of SmartGraphs, with an automatic sharding key selection. -- [**Search highlighting**](../index-and-search/arangosearch/search-highlighting.md): +- [**Search highlighting**](../indexes-and-search/arangosearch/search-highlighting.md): Get the substring positions of matched terms, phrases, or _n_-grams. -- [**Nested search**](../index-and-search/arangosearch/nested-search.md): +- [**Nested search**](../indexes-and-search/arangosearch/nested-search.md): Match arrays of objects with all the conditions met by a single sub-object, and define for how many of the elements this must be true. - **ArangoSearch**: - New [`minhash` Analyzer](../index-and-search/analyzers.md#minhash) for locality-sensitive hashing + New [`minhash` Analyzer](../indexes-and-search/analyzers.md#minhash) for locality-sensitive hashing to approximate the Jaccard similarity, with inverted index and `arangosearch` View support that allows you to implement entity resolution. @@ -149,9 +149,9 @@ Also see [What's New in 3.10](../release-notes/version-3.10/whats-new-in-3-10.md **All Editions** - **ArangoSearch**: - New [**Segmentation Analyzer**](../index-and-search/analyzers.md#segmentation) + New [**Segmentation Analyzer**](../indexes-and-search/analyzers.md#segmentation) for language-agnostic tokenization of text. - A [**Collation Analyzer**](../index-and-search/analyzers.md#collation) + A [**Collation Analyzer**](../indexes-and-search/analyzers.md#collation) to honor the alphabetical order of the specified language in range queries. **Enterprise Edition** @@ -173,16 +173,16 @@ Also see [What's New in 3.9](../release-notes/version-3.9/whats-new-in-3-9.md). match a given length. - **ArangoSearch**: - New [**Pipeline Analyzer**](../index-and-search/analyzers.md#pipeline) + New [**Pipeline Analyzer**](../indexes-and-search/analyzers.md#pipeline) that allows you to combine multiple Analyzers, enabling case-insensitive _n_-gram-based fuzzy search and more. New - [**AQL Analyzer**](../index-and-search/analyzers.md#aql) + [**AQL Analyzer**](../indexes-and-search/analyzers.md#aql) so that you can use an AQL query to pre-process and filter your data for indexing. Support for **geo-spatial queries** through new - [Geo](../index-and-search/analyzers.md#geojson) - [Analyzers](../index-and-search/analyzers.md#geopoint) and + [Geo](../indexes-and-search/analyzers.md#geojson) + [Analyzers](../indexes-and-search/analyzers.md#geopoint) and [ArangoSearch Geo functions](../aql/functions/arangosearch.md#geo-functions). - A new [**Stop words Analyzer**](../index-and-search/analyzers.md#stopwords) that + A new [**Stop words Analyzer**](../indexes-and-search/analyzers.md#stopwords) that can be used standalone or in an Analyzer pipeline. - A [**`WINDOW` operation**](../aql/high-level-operations/window.md) for aggregations over @@ -291,15 +291,15 @@ Also see [What's New in 3.6](../release-notes/version-3.6/whats-new-in-3-6.md). - **ArangoSearch**: The search and ranking engine received an upgrade and now features - [Configurable Analyzers](../index-and-search/analyzers.md), - [Sorted Views](../index-and-search/arangosearch/performance.md#primary-sort-order) + [Configurable Analyzers](../indexes-and-search/analyzers.md), + [Sorted Views](../indexes-and-search/arangosearch/performance.md#primary-sort-order) and several improvements to the [AQL integration](../release-notes/version-3.5/whats-new-in-3-5.md#arangosearch). - **AQL Graph Traversals**: - [k Shortest Paths](../aql/graphs/k-shortest-paths.md) allows you to query not + [k Shortest Paths](../aql/graph-queries/k-shortest-paths.md) allows you to query not just for one shortest path between two documents but multiple, sorted by - length or weight. With [PRUNE](../aql/graphs/traversals.md#pruning) you can + length or weight. With [PRUNE](../aql/graph-queries/traversals.md#pruning) you can stop walking down certain paths early in a graph traversal to improve its efficiency. @@ -307,8 +307,8 @@ Also see [What's New in 3.6](../release-notes/version-3.6/whats-new-in-3-6.md). Perform multi-document transactions with individual begin and commit / abort commands using the new HTTP endpoints or via a supported driver. -- [**Time-to-Live**](../index-and-search/indexing/basics.md#ttl-time-to-live-index) - [**Indexes**](../index-and-search/indexing/working-with-indexes/ttl-indexes.md): +- [**Time-to-Live**](../indexes-and-search/indexing/basics.md#ttl-time-to-live-index) + [**Indexes**](../indexes-and-search/indexing/working-with-indexes/ttl-indexes.md): TTL indexes can be used to automatically remove documents in collections for use cases like expiring sessions or automatic purging of statistics or logs. @@ -346,7 +346,7 @@ Also see [What's New in 3.5](../release-notes/version-3.5/whats-new-in-3-5.md). **All Editions** -- [**ArangoSearch**](../index-and-search/arangosearch/_index.md): +- [**ArangoSearch**](../indexes-and-search/arangosearch/_index.md): Search and similarity ranking engine integrated natively into ArangoDB and AQL. ArangoSearch combines Boolean retrieval capabilities with generalized ranking algorithms (BM25, TFDIF). Support of e.g. relevance-based searching, @@ -356,7 +356,7 @@ Also see [What's New in 3.5](../release-notes/version-3.5/whats-new-in-3-5.md). English, German, French, Chinese, Spanish and many other language. - [**GeoJSON Support**](../aql/functions/geo.md) and - [**S2 Geo Index**](../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ArangoDB now supports all geo primitives. + [**S2 Geo Index**](../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ArangoDB now supports all geo primitives. (Multi-)Point, (Multi-)LineStrings, (Multi-)Polygons or intersections can be defined and queried for. The Google S2 geo index is optimized for RocksDB and enables efficient querying. Geo query results are automatically visualized @@ -451,7 +451,7 @@ Also see [What's New in 3.2](../release-notes/version-3.2/whats-new-in-3-2.md). **All Editions** -- [**Vertex-centric indexes**](../index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md): +- [**Vertex-centric indexes**](../indexes-and-search/indexing/working-with-indexes/vertex-centric-indexes.md): AQL traversal queries can utilize secondary edge collection indexes for better performance against graphs with supernodes. @@ -479,12 +479,12 @@ Also see [What's New in 3.1](../release-notes/version-3.1/whats-new-in-3-1.md). synchronous replication, master/master setup, shared nothing architecture, cluster management Agency. -- Deeply integrated, native [**AQL graph traversal**](../aql/graphs/_index.md) +- Deeply integrated, native [**AQL graph traversal**](../aql/graph-queries/_index.md) - [**VelocyPack**](https://github.com/arangodb/velocypack) as new internal binary storage format as well as for intermediate AQL values. -- [**Persistent indexes**](../index-and-search/indexing/working-with-indexes/persistent-indexes.md) via RocksDB suitable +- [**Persistent indexes**](../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md) via RocksDB suitable for sorting and range queries. - [**Foxx 3.0**](../develop/foxx-microservices/_index.md): overhauled JS framework for data-centric diff --git a/site/content/arangodb/3.12/features/list.md b/site/content/arangodb/3.12/features/list.md index ca558677d2..20ee39483a 100644 --- a/site/content/arangodb/3.12/features/list.md +++ b/site/content/arangodb/3.12/features/list.md @@ -118,19 +118,19 @@ available from v3.12.5 onward. match up documents from different collections, allowing normalized data models. - **Advanced Path-Finding with Multiple Algorithms**: - Graphs can be [traversed](../aql/graphs/traversals-explained.md) with AQL + Graphs can be [traversed](../aql/graph-queries/traversals-explained.md) with AQL in outbound, inbound, or both directions to retrieve direct and indirect neighbor nodes using a fixed or variable depth. - The [traversal order](../aql/graphs/traversals.md) can be + The [traversal order](../aql/graph-queries/traversals.md) can be depth-first, breadth-first, or in order of increasing edge weights ("Weighted Traversals"). Stop conditions for pruning paths are supported. - Traversal algorithms to get a [shortest path](../aql/graphs/shortest-path.md), - [all shortest paths](../aql/graphs/all-shortest-paths.md), paths in order of - increasing length ("[k Shortest Paths](../aql/graphs/k-shortest-paths.md)"), + Traversal algorithms to get a [shortest path](../aql/graph-queries/shortest-path.md), + [all shortest paths](../aql/graph-queries/all-shortest-paths.md), paths in order of + increasing length ("[k Shortest Paths](../aql/graph-queries/k-shortest-paths.md)"), and to enumerate all paths between two nodes - ("[k Paths](../aql/graphs/k-paths.md)") are available, too. + ("[k Paths](../aql/graph-queries/k-paths.md)") are available, too. -- [**ArangoSearch for Text Search and Ranking**](../index-and-search/arangosearch/_index.md): +- [**ArangoSearch for Text Search and Ranking**](../indexes-and-search/arangosearch/_index.md): A built-in search engine for full-text, complex data structures, and more. Exact value matching, range queries, prefix matching, case-insensitive and accent-insensitive search. Token, phrase, wildcard, and fuzzy search support @@ -150,19 +150,19 @@ available from v3.12.5 onward. threshold is reached. {{% /comment %}} -- [**Vector search**](../index-and-search/indexing/working-with-indexes/vector-indexes.md): +- [**Vector search**](../indexes-and-search/indexing/working-with-indexes/vector-indexes.md): Find items with similar properties by comparing vector embeddings generated by machine learning models. -- [**Search highlighting**](../index-and-search/arangosearch/search-highlighting.md): +- [**Search highlighting**](../indexes-and-search/arangosearch/search-highlighting.md): Get the substring positions of matched terms, phrases, or _n_-grams. -- [**Nested search**](../index-and-search/arangosearch/nested-search.md): +- [**Nested search**](../indexes-and-search/arangosearch/nested-search.md): Match arrays of objects with all the conditions met by a single sub-object, and define for how many of the elements this must be true. {{% comment %}} Experimental feature -- **[`classification`](../index-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../index-and-search/analyzers.md#nearest_neighbors)**: +- **[`classification`](../indexes-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../indexes-and-search/analyzers.md#nearest_neighbors)**: Classification of text tokens and finding similar tokens using supervised fastText word embedding models. {{% /comment %}} @@ -241,11 +241,11 @@ available from v3.12.5 onward. - [**Parallel index creation**](../release-notes/version-3.10/whats-new-in-3-10.md#parallel-index-creation-enterprise-edition): Non-unique indexes can be created with multiple threads in parallel. -- [**`minhash` Analyzer**](../index-and-search/analyzers.md#minhash): +- [**`minhash` Analyzer**](../indexes-and-search/analyzers.md#minhash): Jaccard similarity approximation for entity resolution, such as for finding duplicate records, based on how many elements they have in common -- [**`geo_s2` Analyzer**](../index-and-search/analyzers.md#geo_s2): +- [**`geo_s2` Analyzer**](../indexes-and-search/analyzers.md#geo_s2): Efficiently index geo-spatial data using different binary formats, tuning the size on disk, the precision, and query performance. @@ -254,7 +254,7 @@ available from v3.12.5 onward. stored values, primary sort columns, and primary key columns in memory to improve the performance of Views and inverted indexes. -- [**ArangoSearch WAND optimization**](../index-and-search/arangosearch/performance.md#wand-optimization): +- [**ArangoSearch WAND optimization**](../indexes-and-search/arangosearch/performance.md#wand-optimization): Retrieve search results for the highest-ranking matches from Views faster by defining a list of sort expressions to optimize. @@ -262,32 +262,32 @@ available from v3.12.5 onward. Allow dirty reads so that Coordinators can read from any shard replica and not only from the leader, for scaling reads. -- [**Persistent Indexes**](../index-and-search/indexing/basics.md#persistent-index): +- [**Persistent Indexes**](../indexes-and-search/indexing/basics.md#persistent-index): Indexes are stored on disk to enable fast server restarts. You can create secondary indexes over one or multiple fields, optionally with a uniqueness constraint. A "sparse" option to only index non-null values is also available. The elements of an array can be indexed individually. -- [**Inverted indexes**](../index-and-search/indexing/working-with-indexes/inverted-indexes.md): +- [**Inverted indexes**](../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md): An eventually consistent index type that can accelerate a broad range of queries from simple to complex, including full-text search. -- [**Vertex-centric Indexes**](../index-and-search/indexing/basics.md#vertex-centric-indexes): +- [**Vertex-centric Indexes**](../indexes-and-search/indexing/basics.md#vertex-centric-indexes): Secondary indexes for more efficient graph traversals with filter conditions. -- [**Time-to-Live (TTL) Indexes**](../index-and-search/indexing/basics.md#ttl-time-to-live-index): +- [**Time-to-Live (TTL) Indexes**](../indexes-and-search/indexing/basics.md#ttl-time-to-live-index): Time-based removal of expired documents. -- [**Geo-spatial Indexes**](../index-and-search/indexing/basics.md#geo-index): +- [**Geo-spatial Indexes**](../indexes-and-search/indexing/basics.md#geo-index): Accelerated geo-spatial queries for locations and GeoJSON objects, based on the S2 library. <!-- TODO: list supported queries? Centroid-limitations? --> Support for composable, distance-based geo-queries ("geo cursors"). -- [**Multi-dimensional indexes**](../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): +- [**Multi-dimensional indexes**](../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): An index type to efficiently intersect multiple range queries, like finding all appointments that intersect a time range. -- [**Background Indexing**](../index-and-search/indexing/basics.md#creating-indexes-in-background): +- [**Background Indexing**](../indexes-and-search/indexing/basics.md#creating-indexes-in-background): Indexes can be created in the background to not block queries in the meantime. - [**Index cache refilling**](../release-notes/version-3.11/whats-new-in-3-11.md#index-cache-refilling): diff --git a/site/content/arangodb/3.12/get-started/start-using-aql/geo.md b/site/content/arangodb/3.12/get-started/start-using-aql/geo.md index bc19acbdef..6780a90904 100644 --- a/site/content/arangodb/3.12/get-started/start-using-aql/geo.md +++ b/site/content/arangodb/3.12/get-started/start-using-aql/geo.md @@ -37,7 +37,7 @@ latitude with GeoJSON, whereas the dataset uses latitude, longitude. ## Geospatial index -To query based on coordinates, a [geo index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md) +To query based on coordinates, a [geo index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md) is required. It determines which fields contain the latitude and longitude values. diff --git a/site/content/arangodb/3.12/get-started/start-using-aql/graphs.md b/site/content/arangodb/3.12/get-started/start-using-aql/graphs.md index 044f1cc4a3..0ef876507b 100644 --- a/site/content/arangodb/3.12/get-started/start-using-aql/graphs.md +++ b/site/content/arangodb/3.12/get-started/start-using-aql/graphs.md @@ -96,7 +96,7 @@ Breakdown of the query: Now that edges link character documents (nodes), it is a graph you can query to find out who the parents are of another character – or in graph terms, you want to start at a node and follow the edges to other -nodes in an [AQL graph traversal](../../aql/graphs/traversals.md): +nodes in an [AQL graph traversal](../../aql/graph-queries/traversals.md): ```aql // Declare collection of start node (cluster only) @@ -110,7 +110,7 @@ This `FOR` loop doesn't iterate over a collection or an array, it walks the graph and iterates over the connected nodes it finds, with the node document assigned to a variable (here: `v`). It can also emit the edges it walked as well as the full path from start to end to -[another two variables](../../aql/graphs/traversals.md#syntax). +[another two variables](../../aql/graph-queries/traversals.md#syntax). In above query, the traversal is restricted to a minimum and maximum traversal depth of 1 (how many steps to take from the start node), and to only follow @@ -261,7 +261,7 @@ Tywin <- Cersei <- Joffrey As a quick fix, change the last line of the query to `RETURN DISTINCT v.name` to return each value only once. However, there are -[traversal options](../../aql/graphs/traversals.md#syntax) including one to +[traversal options](../../aql/graph-queries/traversals.md#syntax) including one to suppress duplicate nodes early on for the entire traversal (which requires breadth-first search): diff --git a/site/content/arangodb/3.12/graphs/_index.md b/site/content/arangodb/3.12/graphs/_index.md index 29eb32cbe5..b7cca0ef0a 100644 --- a/site/content/arangodb/3.12/graphs/_index.md +++ b/site/content/arangodb/3.12/graphs/_index.md @@ -98,7 +98,7 @@ direction and follow them in both directions (**any**) as if it were an undirected graph. You can query graphs with ArangoDB's query language, see -[Graphs in AQL](../aql/graphs/_index.md). +[Graphs in AQL](../aql/graph-queries/_index.md). ## Comparison to relational database systems @@ -123,15 +123,15 @@ In queries, you can define in which directions the edge relations may be followe ## Supported graph algorithms -- [Traversal](../aql/graphs/traversals.md) +- [Traversal](../aql/graph-queries/traversals.md) - following edges in outbound, inbound, or any direction - variable traversal depth between a defined minimum and maximum - breadth-first, depth-first, and weighted traversals - optionally with prune conditions -- [Shortest Path](../aql/graphs/shortest-path.md) -- [All Shortest Paths](../aql/graphs/all-shortest-paths.md) -- [k Shortest Paths](../aql/graphs/k-shortest-paths.md) -- [k Paths](../aql/graphs/k-paths.md) +- [Shortest Path](../aql/graph-queries/shortest-path.md) +- [All Shortest Paths](../aql/graph-queries/all-shortest-paths.md) +- [k Shortest Paths](../aql/graph-queries/k-shortest-paths.md) +- [k Paths](../aql/graph-queries/k-paths.md) ## Managed and unmanaged graphs diff --git a/site/content/arangodb/3.12/graphs/enterprisegraphs/_index.md b/site/content/arangodb/3.12/graphs/enterprisegraphs/_index.md index 28ce9e5398..77dd78b27f 100644 --- a/site/content/arangodb/3.12/graphs/enterprisegraphs/_index.md +++ b/site/content/arangodb/3.12/graphs/enterprisegraphs/_index.md @@ -12,7 +12,7 @@ It will give a vast performance benefit for all graphs sharded in an ArangoDB Cluster, reducing network hops substantially. In terms of querying there is no difference between SmartGraphs and EnterpriseGraphs. -For graph querying please refer to [AQL Graph Operations](../../aql/graphs/_index.md) +For graph querying please refer to [AQL Graph Operations](../../aql/graph-queries/_index.md) and [General Graph Functions](../general-graphs/functions.md) sections. Creating and modifying the underlying collections of an EnterpriseGraph are diff --git a/site/content/arangodb/3.12/graphs/example-graphs.md b/site/content/arangodb/3.12/graphs/example-graphs.md index cfc699abad..8955e5b511 100644 --- a/site/content/arangodb/3.12/graphs/example-graphs.md +++ b/site/content/arangodb/3.12/graphs/example-graphs.md @@ -95,7 +95,7 @@ with the travel time for both directions as edge weight. ![Train Connection Map](../../../images/train_map.png) -See the [k Shortest Paths page](../aql/graphs/k-shortest-paths.md) for query examples. +See the [k Shortest Paths page](../aql/graph-queries/k-shortest-paths.md) for query examples. ```js --- @@ -120,9 +120,9 @@ in the `mps_edges` collection. It is a simple traversal graph with start node ![Mps Graph](../../../images/mps_graph.png) -With the [Shortest Path](../aql/graphs/shortest-path.md) algorithm, you either +With the [Shortest Path](../aql/graph-queries/shortest-path.md) algorithm, you either get the shortest path *A* - *B* - *C* or *A* - *D* - *C*. With the -[All Shortest Paths](../aql/graphs/all-shortest-paths.md) algorithm, both +[All Shortest Paths](../aql/graph-queries/all-shortest-paths.md) algorithm, both shortest paths are returned. Example of how to create the graph, inspect its nodes and edges, and delete diff --git a/site/content/arangodb/3.12/graphs/smartgraphs/_index.md b/site/content/arangodb/3.12/graphs/smartgraphs/_index.md index 9122893c10..c74639c592 100644 --- a/site/content/arangodb/3.12/graphs/smartgraphs/_index.md +++ b/site/content/arangodb/3.12/graphs/smartgraphs/_index.md @@ -30,7 +30,7 @@ Examples for such graphs are: category are often bought together. In terms of querying there is no difference between SmartGraphs and General Graphs. -For graph querying please refer to [AQL Graph Operations](../../aql/graphs/_index.md) +For graph querying please refer to [AQL Graph Operations](../../aql/graph-queries/_index.md) and [General Graph Functions](../general-graphs/functions.md) sections. The optimizer is clever enough to identify whether it is a SmartGraph or not. diff --git a/site/content/arangodb/3.12/index-and-search/_index.md b/site/content/arangodb/3.12/index-and-search/_index.md deleted file mode 100644 index dc765f1be0..0000000000 --- a/site/content/arangodb/3.12/index-and-search/_index.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Index and Search -menuTitle: Index and Search -weight: 145 -description: '' ---- diff --git a/site/content/arangodb/3.12/indexes-and-search/_index.md b/site/content/arangodb/3.12/indexes-and-search/_index.md new file mode 100644 index 0000000000..1a740c65df --- /dev/null +++ b/site/content/arangodb/3.12/indexes-and-search/_index.md @@ -0,0 +1,6 @@ +--- +title: Indexes and Search +menuTitle: Indexes and Search +weight: 145 +description: '' +--- diff --git a/site/content/arangodb/3.12/index-and-search/analyzers.md b/site/content/arangodb/3.12/indexes-and-search/analyzers.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/analyzers.md rename to site/content/arangodb/3.12/indexes-and-search/analyzers.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/_index.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/_index.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/_index.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/_index.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/arangosearch-views-reference.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/arangosearch-views-reference.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/arangosearch-views-reference.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/arangosearch-views-reference.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/case-sensitivity-and-diacritics.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/case-sensitivity-and-diacritics.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/case-sensitivity-and-diacritics.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/case-sensitivity-and-diacritics.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/exact-value-matching.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/exact-value-matching.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/exact-value-matching.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/exact-value-matching.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/example-datasets.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/example-datasets.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/example-datasets.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/example-datasets.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/faceted-search.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/faceted-search.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/faceted-search.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/faceted-search.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/full-text-token-search.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/full-text-token-search.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/full-text-token-search.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/full-text-token-search.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/fuzzy-search.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/fuzzy-search.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/fuzzy-search.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/fuzzy-search.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/geospatial-search.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/geospatial-search.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/geospatial-search.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/geospatial-search.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/nested-search.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/nested-search.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/nested-search.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/nested-search.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/performance.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/performance.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/performance.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/performance.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/phrase-and-proximity-search.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/phrase-and-proximity-search.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/phrase-and-proximity-search.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/phrase-and-proximity-search.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/prefix-matching.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/prefix-matching.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/prefix-matching.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/prefix-matching.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/range-queries.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/range-queries.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/range-queries.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/range-queries.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/ranking.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/ranking.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/ranking.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/ranking.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/search-alias-views-reference.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/search-alias-views-reference.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/search-alias-views-reference.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/search-alias-views-reference.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/search-highlighting.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/search-highlighting.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/search-highlighting.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/search-highlighting.md diff --git a/site/content/arangodb/3.12/index-and-search/arangosearch/wildcard-search.md b/site/content/arangodb/3.12/indexes-and-search/arangosearch/wildcard-search.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/arangosearch/wildcard-search.md rename to site/content/arangodb/3.12/indexes-and-search/arangosearch/wildcard-search.md diff --git a/site/content/arangodb/3.12/index-and-search/indexing/_index.md b/site/content/arangodb/3.12/indexes-and-search/indexing/_index.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/indexing/_index.md rename to site/content/arangodb/3.12/indexes-and-search/indexing/_index.md diff --git a/site/content/arangodb/3.12/index-and-search/indexing/basics.md b/site/content/arangodb/3.12/indexes-and-search/indexing/basics.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/indexing/basics.md rename to site/content/arangodb/3.12/indexes-and-search/indexing/basics.md diff --git a/site/content/arangodb/3.12/index-and-search/indexing/index-utilization.md b/site/content/arangodb/3.12/indexes-and-search/indexing/index-utilization.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/indexing/index-utilization.md rename to site/content/arangodb/3.12/indexes-and-search/indexing/index-utilization.md diff --git a/site/content/arangodb/3.12/index-and-search/indexing/which-index-to-use-when.md b/site/content/arangodb/3.12/indexes-and-search/indexing/which-index-to-use-when.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/indexing/which-index-to-use-when.md rename to site/content/arangodb/3.12/indexes-and-search/indexing/which-index-to-use-when.md diff --git a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/_index.md b/site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/_index.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/_index.md rename to site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/_index.md diff --git a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/fulltext-indexes.md b/site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/fulltext-indexes.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/fulltext-indexes.md rename to site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/fulltext-indexes.md diff --git a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md b/site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md rename to site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md diff --git a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/inverted-indexes.md b/site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/inverted-indexes.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/inverted-indexes.md rename to site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/inverted-indexes.md diff --git a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md b/site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md rename to site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md diff --git a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/persistent-indexes.md b/site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/persistent-indexes.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/persistent-indexes.md rename to site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/persistent-indexes.md diff --git a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/ttl-indexes.md b/site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/ttl-indexes.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/ttl-indexes.md rename to site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/ttl-indexes.md diff --git a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/vector-indexes.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md rename to site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/vector-indexes.md diff --git a/site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md b/site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/vertex-centric-indexes.md similarity index 100% rename from site/content/arangodb/3.12/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md rename to site/content/arangodb/3.12/indexes-and-search/indexing/working-with-indexes/vertex-centric-indexes.md diff --git a/site/content/arangodb/3.12/release-notes/deprecated-and-removed-features.md b/site/content/arangodb/3.12/release-notes/deprecated-and-removed-features.md index 82f225f36f..9c22370c1f 100644 --- a/site/content/arangodb/3.12/release-notes/deprecated-and-removed-features.md +++ b/site/content/arangodb/3.12/release-notes/deprecated-and-removed-features.md @@ -108,7 +108,7 @@ detailed information about breaking changes before upgrading. - **Skiplist and hash indexes**: Skiplist and hash indexes have been deprecated in 3.9 and will be removed in a future version of ArangoDB. Currently, they are an alias for a - [persistent index](../index-and-search/indexing/basics.md#persistent-index). + [persistent index](../indexes-and-search/indexing/basics.md#persistent-index). - **Bundled NPM modules**: The bundled NPM modules `aqb`, `chai`, `dedent`, `error-stack-parser`, @@ -134,7 +134,7 @@ detailed information about breaking changes before upgrading. - **Fulltext indexes**: The fulltext index type is deprecated from version 3.10 onwards. - It is recommended to use [ArangoSearch](../index-and-search/arangosearch/_index.md) for advanced full-text search capabilities. + It is recommended to use [ArangoSearch](../indexes-and-search/arangosearch/_index.md) for advanced full-text search capabilities. - **Simple Queries**: Idiomatic interface in arangosh to perform trivial queries. They are superseded by [AQL queries](../aql/_index.md), which can also @@ -264,7 +264,7 @@ detailed information about breaking changes before upgrading. - **HTTP and JavaScript traversal APIs**: The HTTP traversal API as well as the `@arangodb/graph/traversal` JavaScript traversal module were deprecated since version 3.4.0 and have been removed in version 3.12.0. You can - [traverse graphs with AQL](../aql/graphs/traversals.md) instead. + [traverse graphs with AQL](../aql/graph-queries/traversals.md) instead. - **Specialized index creation methods in JavaScript API**: The following JavaScript methods for creating indexes from the ArangoShell @@ -280,4 +280,4 @@ detailed information about breaking changes before upgrading. Instead of using these methods, you should use the generic `collection.ensureIndex(...)` method, which provides a superset of all the deprecated methods. Also see - [Creating an index](../index-and-search/indexing/working-with-indexes/_index.md#creating-an-index). + [Creating an index](../indexes-and-search/indexing/working-with-indexes/_index.md#creating-an-index). diff --git a/site/content/arangodb/3.12/release-notes/version-3.0/incompatible-changes-in-3-0.md b/site/content/arangodb/3.12/release-notes/version-3.0/incompatible-changes-in-3-0.md index 0babc90491..0531c995bf 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.0/incompatible-changes-in-3-0.md +++ b/site/content/arangodb/3.12/release-notes/version-3.0/incompatible-changes-in-3-0.md @@ -126,7 +126,7 @@ are missing from the replacement document, an `REPLACE` operation will fail. #### Graph functions In version 3.0 all former graph related functions have been removed from AQL to -be replaced by [native AQL constructs](../../aql/graphs/_index.md). +be replaced by [native AQL constructs](../../aql/graph-queries/_index.md). These constructs allow for more fine-grained filtering on several graph levels. Also this allows the AQL optimizer to automatically improve these queries by enhancing them with appropriate indexes. diff --git a/site/content/arangodb/3.12/release-notes/version-3.10/api-changes-in-3-10.md b/site/content/arangodb/3.12/release-notes/version-3.10/api-changes-in-3-10.md index 981c3a1e73..4600016e08 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.10/api-changes-in-3-10.md +++ b/site/content/arangodb/3.12/release-notes/version-3.10/api-changes-in-3-10.md @@ -568,20 +568,20 @@ search highlighting capabilities for Views. The `/_api/analyzer` endpoint supports new Analyzer types in the Enterprise Edition: -- [`minhash`](../../index-and-search/analyzers.md#minhash): +- [`minhash`](../../indexes-and-search/analyzers.md#minhash): It has two properties, `analyzer` (object) and `numHashes` (number). The `analyzer` object is an Analyzer-like definition with a `type` (string) and a `properties` attribute (object). The properties depend on the Analyzer type. -- [`classification`](../../index-and-search/analyzers.md#classification) (experimental): +- [`classification`](../../indexes-and-search/analyzers.md#classification) (experimental): It has three properties, `model_location` (string), `top_k` (number, optional, default: `1`), and `threshold` (number, optional, default: `0.99`). -- [`nearest_neighbors`](../../index-and-search/analyzers.md#nearest_neighbors) (experimental): +- [`nearest_neighbors`](../../indexes-and-search/analyzers.md#nearest_neighbors) (experimental): It has two properties, `model_location` (string) and `top_k` (number, optional, default: `1`). -- [`geo_s2`](../../index-and-search/analyzers.md#geo_s2) (introduced in v3.10.5): +- [`geo_s2`](../../indexes-and-search/analyzers.md#geo_s2) (introduced in v3.10.5): Like the existing `geojson` Analyzer, but with an additional `format` property that can be set to `"latLngDouble"` (default), `"latLngInt"`, or `"s2Point"`. @@ -592,7 +592,7 @@ Enterprise Edition: Analyzers of the `geojson` type have a new `legacy` property. The default is `false`. This option controls how GeoJSON Polygons are interpreted. -See the [`geojson` Analyzer](../../index-and-search/analyzers.md#geojson). +See the [`geojson` Analyzer](../../indexes-and-search/analyzers.md#geojson). #### Views API @@ -622,7 +622,7 @@ You may use a shorthand notations on `arangosearch` View creation or the `storedValues` option, like `["attr1", "attr2"]`, instead of using an array of objects. -See the [`arangosearch` Views Reference](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +See the [`arangosearch` Views Reference](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. #### Geo-spatial indexes @@ -630,7 +630,7 @@ for details. Indexes of the `geo` type have a new `legacyPolygons` option. If `geoJson` is set to `true`, then this option controls how GeoJSON Polygons -are interpreted. Also see [Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons). +are interpreted. Also see [Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons). The default is `true` for geo indexes that were created in versions before 3.10, and `false` for geo indexes created in 3.10 or later. diff --git a/site/content/arangodb/3.12/release-notes/version-3.10/incompatible-changes-in-3-10.md b/site/content/arangodb/3.12/release-notes/version-3.10/incompatible-changes-in-3-10.md index 6ae62977a3..d31d834a16 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.10/incompatible-changes-in-3-10.md +++ b/site/content/arangodb/3.12/release-notes/version-3.10/incompatible-changes-in-3-10.md @@ -12,7 +12,7 @@ In cluster deployments, you need to declare collections that an AQL query implicitly reads from using the [`WITH` operation](../../aql/high-level-operations/with.md). From version 3.10.0 onward, it is necessary to also declare the collections of -start vertices that are used for [graph traversals](../../aql/graphs/traversals.md) +start vertices that are used for [graph traversals](../../aql/graph-queries/traversals.md) if you specify start vertices using strings. In previous versions, the following query would work: @@ -75,7 +75,7 @@ instead. ## Indexes -The fulltext index type is now deprecated in favor of [ArangoSearch](../../index-and-search/arangosearch/_index.md). +The fulltext index type is now deprecated in favor of [ArangoSearch](../../indexes-and-search/arangosearch/_index.md). Fulltext indexes are still usable in this version of ArangoDB, although their usage is now discouraged. @@ -107,7 +107,7 @@ interpretation of GeoJSON polygons in version 3.9 and older: This can mean that old polygon GeoJSON data in the database is suddenly interpreted in a different way. See -[Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details. +[Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details. Also see the definition of [Polygons](../../aql/functions/geo.md#polygon) and [GeoJSON interpretation](../../aql/functions/geo.md#geojson-interpretation). @@ -125,7 +125,7 @@ Whether a clockwise boundary specifies the complement of the small region intentionally or not cannot be determined automatically. Please test the new behavior manually. -See [Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details. +See [Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details. --- @@ -148,7 +148,7 @@ the new Analyzers. | A ring can at most enclose half the Earth's surface | A ring can enclose the entire surface of the Earth | Also see the definition of [Polygons](../../aql/functions/geo.md#polygon) and the -[`geojson` Analyzer](../../index-and-search/analyzers.md#geojson) documentation. +[`geojson` Analyzer](../../indexes-and-search/analyzers.md#geojson) documentation. ## Maximum Array / Object Nesting diff --git a/site/content/arangodb/3.12/release-notes/version-3.10/whats-new-in-3-10.md b/site/content/arangodb/3.12/release-notes/version-3.10/whats-new-in-3-10.md index de79f8cb34..e23c1a223b 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.10/whats-new-in-3-10.md +++ b/site/content/arangodb/3.12/release-notes/version-3.10/whats-new-in-3-10.md @@ -147,7 +147,7 @@ function in queries. Like Views, this type of index is eventually consistent. -See [Inverted index](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md) for details. +See [Inverted index](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md) for details. ### `search-alias` Views @@ -175,7 +175,7 @@ need to specify an Analyzer context with the `ANALYZER()` function in queries because it is inferred from the inverted index definition, which only supports a single Analyzer per field. -Also see [Getting started with ArangoSearch](../../index-and-search/arangosearch/_index.md#getting-started-with-arangosearch). +Also see [Getting started with ArangoSearch](../../indexes-and-search/arangosearch/_index.md#getting-started-with-arangosearch). ### Search highlighting (Enterprise Edition) @@ -248,7 +248,7 @@ db._query(`FOR doc IN food_view */ ``` -See [Search highlighting with ArangoSearch](../../index-and-search/arangosearch/search-highlighting.md) +See [Search highlighting with ArangoSearch](../../indexes-and-search/arangosearch/search-highlighting.md) for details. ### Nested search (Enterprise Edition) @@ -296,8 +296,8 @@ FOR doc IN viewName RETURN doc ``` -See [Nested search with ArangoSearch](../../index-and-search/arangosearch/nested-search.md) using Views -and the nested search example using [Inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search) +See [Nested search with ArangoSearch](../../indexes-and-search/arangosearch/nested-search.md) using Views +and the nested search example using [Inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search) for details. This feature is only available in the Enterprise Edition. @@ -310,7 +310,7 @@ enumeration node, if using just scoring for a sort operation. ### ArangoSearch column cache (Enterprise Edition) -[`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) support new caching options. +[`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) support new caching options. <small>Introduced in: v3.9.5, v3.10.2</small> @@ -366,7 +366,7 @@ metric. ArangoSearch caching is only available in the Enterprise Edition. -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md) for examples. {{< info >}} @@ -435,7 +435,7 @@ Additionally, the JavaScript and HTTP API for indexes has been extended with figures for `arangosearch` View links and inverted indexes. In arangosh, you can call `db.<collection>.indexes(true, true);` to get at this -information. Also see [Listing all indexes of a collection](../../index-and-search/indexing/working-with-indexes/_index.md#listing-all-indexes-of-a-collection). +information. Also see [Listing all indexes of a collection](../../indexes-and-search/indexing/working-with-indexes/_index.md#listing-all-indexes-of-a-collection). The information has the following structure: ```js @@ -472,7 +472,7 @@ to perform. This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#minhash) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#minhash) for details. ### `classification` Analyzer (Enterprise Edition) @@ -481,7 +481,7 @@ using a supervised fastText word embedding model that you provide. This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#classification) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#classification) for details. ### `nearest_neighbors` Analyzer (Enterprise Edition) @@ -490,7 +490,7 @@ using a supervised fastText word embedding model that you provide. This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#nearest_neighbors) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#nearest_neighbors) for details. ### `geo_s2` Analyzer (Enterprise Edition) @@ -511,7 +511,7 @@ disk, the precision, and query performance: This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#geo_s2) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#geo_s2) for details. ## Web Interface @@ -533,7 +533,7 @@ FOR p IN OUTBOUND ALL_SHORTEST_PATHS 'places/Carlisle' TO 'places/London' RETURN { places: p.vertices[*].label } ``` -See [All Shortest Paths in AQL](../../aql/graphs/all-shortest-paths.md) for details. +See [All Shortest Paths in AQL](../../aql/graph-queries/all-shortest-paths.md) for details. ### Parallelism for Sharded Graphs (Enterprise Edition) @@ -568,7 +568,7 @@ This feature is only available in the Enterprise Edition. The 3.10 release of ArangoDB conforms to the standards specified in [GeoJSON](https://datatracker.ietf.org/doc/html/rfc7946) -and [GeoJSON Mode](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#geojson-mode). +and [GeoJSON Mode](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#geojson-mode). This diverges from the previous implementation in two fundamental ways: 1. The syntax of GeoJSON objects is interpreted so that lines on the @@ -593,13 +593,13 @@ has been introduced to guarantee backwards compatibility. For existing users who wish to take advantage of the new standard behavior, geo indexes need to be dropped and recreated after an upgrade. -See [Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for +See [Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details and for hints about upgrading to version 3.10 or later. If you use `geojson` Analyzers including in `arangosearch` Views and upgrade from a version below 3.10 to a version of 3.10 or higher, the interpretation of GeoJSON Polygons changes. See the `legacy` property of the -[`geojson` Analyzer](../../index-and-search/analyzers.md#geojson) for details and how to restore the +[`geojson` Analyzer](../../indexes-and-search/analyzers.md#geojson) for details and how to restore the old behavior. ### Traversal Projections (Enterprise Edition) @@ -611,7 +611,7 @@ but only access small parts of the documents. By default, up to 5 attributes are extracted instead of loading the full document. You can control this number with the `maxProjections` option, which is now -supported for [graph traversals](../../aql/graphs/traversals.md#working-with-named-graphs). +supported for [graph traversals](../../aql/graph-queries/traversals.md#working-with-named-graphs). See also [how to use `maxProjections` with FOR loops](../../aql/high-level-operations/for.md#maxprojections). In the following query, the accessed attributes are the `name` attribute of the @@ -786,7 +786,7 @@ index hint for tweaking performance: FOR … IN … OPTIONS { lookahead: 32 } ``` -See [Lookahead Index Hint](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md#lookahead-index-hint). +See [Lookahead Index Hint](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md#lookahead-index-hint). ### Question mark operator @@ -832,7 +832,7 @@ AQL functions added to the 3.10 Enterprise Edition: - [`OFFSET_INFO()`](../../aql/functions/arangosearch.md#offset_info): An ArangoSearch function to get the start offsets and lengths of matches for - [search highlighting](../../index-and-search/arangosearch/search-highlighting.md). + [search highlighting](../../indexes-and-search/arangosearch/search-highlighting.md). - [`MINHASH()`](../../aql/functions/miscellaneous.md#minhash): A new function for locality-sensitive hashing to approximate the @@ -993,7 +993,7 @@ db.<collection>.ensureIndex({ }); ``` -See [Persistent Indexes](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes). +See [Persistent Indexes](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes). ### Enabling caching for index values @@ -1015,7 +1015,7 @@ scanned index entries is large. As the cache is hash-based and unsorted, it cannot be used for full or partial range scans, for sorting, or for lookups that do not include all index attributes. -See [Persistent Indexes](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values). +See [Persistent Indexes](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values). ## Document keys diff --git a/site/content/arangodb/3.12/release-notes/version-3.11/api-changes-in-3-11.md b/site/content/arangodb/3.12/release-notes/version-3.11/api-changes-in-3-11.md index 232b181f0b..2b3b54b46e 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.11/api-changes-in-3-11.md +++ b/site/content/arangodb/3.12/release-notes/version-3.11/api-changes-in-3-11.md @@ -482,7 +482,7 @@ and [Monitoring per collection/database/user](../version-3.11/whats-new-in-3-11. The `/_api/analyzer` endpoint supports a new Analyzer type in the Enterprise Edition: -- [`geo_s2`](../../index-and-search/analyzers.md#geo_s2) (introduced in v3.10.5): +- [`geo_s2`](../../indexes-and-search/analyzers.md#geo_s2) (introduced in v3.10.5): Like the existing `geojson` Analyzer, but with an additional `format` property that can be set to `"latLngDouble"` (default), `"latLngInt"`, or `"s2Point"`. @@ -579,7 +579,7 @@ You may use a shorthand notations on `arangosearch` View creation or the `storedValues` option, like `["attr1", "attr2"]`, instead of using an array of objects. -See the [`arangosearch` Views Reference](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +See the [`arangosearch` Views Reference](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. #### Pregel API diff --git a/site/content/arangodb/3.12/release-notes/version-3.11/whats-new-in-3-11.md b/site/content/arangodb/3.12/release-notes/version-3.11/whats-new-in-3-11.md index 7d96233c6d..e742941f12 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.11/whats-new-in-3-11.md +++ b/site/content/arangodb/3.12/release-notes/version-3.11/whats-new-in-3-11.md @@ -20,7 +20,7 @@ to be requested from the RocksDB storage engine. ### ArangoSearch column cache (Enterprise Edition) -[`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) support new caching options. +[`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) support new caching options. <small>Introduced in: v3.9.5, v3.10.2</small> @@ -76,7 +76,7 @@ metric. ArangoSearch caching is only available in the Enterprise Edition. -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md) for examples. {{< info >}} @@ -107,7 +107,7 @@ disk, the precision, and query performance: This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#geo_s2) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#geo_s2) for details. ## Web interface @@ -137,7 +137,7 @@ details. ### `search-alias` Views The 3.11 release of ArangoDB introduces a new web interface for Views that lets -you to create and manage [`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md). +you to create and manage [`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md). Through this dialog, you can easily create a new View and add to it one or more inverted indexes from your collections that you could otherwise do via the HTTP @@ -149,7 +149,7 @@ the same settings to multiple Views. In addition, the JSON editor offers the option to directly write the definition of your View in JSON format. For more information, see the -[detailed guide](../../index-and-search/arangosearch/search-alias-views-reference.md#create-search-alias-views-using-the-web-interface). +[detailed guide](../../indexes-and-search/arangosearch/search-alias-views-reference.md#create-search-alias-views-using-the-web-interface). ### `arangosearch` Views @@ -159,12 +159,12 @@ or modify the definition of your View. The settings, links, and JSON editor have been merged into a single page, allowing for a much quicker workflow. For more information, see the -[detailed guide](../../index-and-search/arangosearch/arangosearch-views-reference.md#create-arangosearch-views-using-the-web-interface). +[detailed guide](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#create-arangosearch-views-using-the-web-interface). ### Inverted indexes The web interface now includes the option for creating -[inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md) on collections. You can set all the +[inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md) on collections. You can set all the properties directly in the web interface, which previously required the JavaScript or HTTP API. It also offers an editor where you can write the definition of your inverted index in JSON format. diff --git a/site/content/arangodb/3.12/release-notes/version-3.12/api-changes-in-3-12.md b/site/content/arangodb/3.12/release-notes/version-3.12/api-changes-in-3-12.md index 989fc09923..42bb95f864 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.12/api-changes-in-3-12.md +++ b/site/content/arangodb/3.12/release-notes/version-3.12/api-changes-in-3-12.md @@ -344,7 +344,7 @@ Views of type `arangosearch` accept a new `optimizeTopK` View property for the ArangoSearch WAND optimization. It is an immutable array of strings, optional, and defaults to `[]`. -See the [`optimizeTopK` View property](../../index-and-search/arangosearch/arangosearch-views-reference.md#view-properties) +See the [`optimizeTopK` View property](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-properties) for details. #### Document API @@ -445,7 +445,7 @@ Both multi-dimensional index variants now support a `sparse` setting (boolean) and `storedValues` setting (array of strings) that were not supported by the `zkd` index type in previous versions. -See [Working with multi-dimensional indexes](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) +See [Working with multi-dimensional indexes](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) for details. ##### Progress indication on the index generation @@ -721,7 +721,7 @@ v2.8.0. Additionally, the JavaScript-based traversal REST API could not handle larger amounts of data and was thus very limited. Users of the `/_api/traversal` REST API should use -[AQL traversal queries](../../aql/graphs/traversals.md) instead. +[AQL traversal queries](../../aql/graph-queries/traversals.md) instead. #### Pregel API @@ -762,7 +762,7 @@ AQL traversals in v2.8.0. Additionally, the JavaScript-based traversals could not handle larger amounts of data and were thus very limited. Users of the JavaScript-based traversal API should use -[AQL traversal queries](../../aql/graphs/traversals.md) instead. +[AQL traversal queries](../../aql/graph-queries/traversals.md) instead. ### `collection` object diff --git a/site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md b/site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md index a84a141025..7525eda89c 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md +++ b/site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md @@ -257,7 +257,7 @@ for the first time, typically when creating a new deployment. You can specify a locale for the initialization with the `--icu-language` startup option (or with the deprecated `--default-language` startup option). The server language that you set this way affects the sorting and comparison behavior for text globally, -with a few exceptions like the [`collation` Analyzer](../../index-and-search/analyzers.md#collation). +with a few exceptions like the [`collation` Analyzer](../../indexes-and-search/analyzers.md#collation). If you don't specify a language using a startup option, the `LANG` environment variable is checked. If it's not set or has an invalid value, the effective @@ -992,7 +992,7 @@ v2.8.0. Additionally, the JavaScript-based traversal REST API could not handle larger amounts of data and was thus very limited. Users of the `/_api/traversal` REST API should use -[AQL traversal queries](../../aql/graphs/traversals.md) instead. +[AQL traversal queries](../../aql/graph-queries/traversals.md) instead. ### HTTP server behavior @@ -1058,7 +1058,7 @@ AQL traversals in v2.8.0. Additionally, the JavaScript-based traversals could not handle larger amounts of data and were thus very limited. Users of the JavaScript-based traversal API should use -[AQL traversal queries](../../aql/graphs/traversals.md) instead. +[AQL traversal queries](../../aql/graph-queries/traversals.md) instead. ### Graph compatibility functions removed diff --git a/site/content/arangodb/3.12/release-notes/version-3.12/whats-new-in-3-12.md b/site/content/arangodb/3.12/release-notes/version-3.12/whats-new-in-3-12.md index c3f5d8935e..c487fa2419 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.12/whats-new-in-3-12.md +++ b/site/content/arangodb/3.12/release-notes/version-3.12/whats-new-in-3-12.md @@ -38,17 +38,17 @@ The following features are now available in the Community Edition: [Parallelization](../../release-notes/version-3.10/whats-new-in-3-10.md#parallelism-for-sharded-graphs-enterprise-edition) - [Traversal Projections](../../release-notes/version-3.10/whats-new-in-3-10.md#traversal-projections-enterprise-edition) - [Parallel index creation](../../release-notes/version-3.10/whats-new-in-3-10.md#parallel-index-creation-enterprise-edition) -- [`minhash` Analyzer](../../index-and-search/analyzers.md#minhash) -- [`geo_s2` Analyzer](../../index-and-search/analyzers.md#geo_s2) +- [`minhash` Analyzer](../../indexes-and-search/analyzers.md#minhash) +- [`geo_s2` Analyzer](../../indexes-and-search/analyzers.md#geo_s2) - [ArangoSearch column cache](../../release-notes/version-3.10/whats-new-in-3-10.md#arangosearch-column-cache-enterprise-edition) -- [ArangoSearch WAND optimization](../../index-and-search/arangosearch/performance.md#wand-optimization) +- [ArangoSearch WAND optimization](../../indexes-and-search/arangosearch/performance.md#wand-optimization) - [Read from followers in clusters](../../develop/http-api/documents.md#read-from-followers) **Querying** -- [Search highlighting](../../index-and-search/arangosearch/search-highlighting.md) -- [Nested search](../../index-and-search/arangosearch/nested-search.md) -- [`classification`](../../index-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../../index-and-search/analyzers.md#nearest_neighbors) (experimental) +- [Search highlighting](../../indexes-and-search/arangosearch/search-highlighting.md) +- [Nested search](../../indexes-and-search/arangosearch/nested-search.md) +- [`classification`](../../indexes-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../../indexes-and-search/analyzers.md#nearest_neighbors) (experimental) - [Skip inaccessible collections](../../aql/how-to-invoke-aql/with-arangosh.md#skipinaccessiblecollections) **Security** @@ -77,7 +77,7 @@ If you query a View with the `SEARCH` operation in combination with a Only sorting by highest rank is supported, that is, sorting by the result of a scoring function in descending order (`DESC`). -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md#wand-optimization) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md#wand-optimization) for examples. This feature is only available in the Enterprise Edition up to v3.12.4 and @@ -114,7 +114,7 @@ partial matches in long strings. The Analyzer can apply another Analyzer of your choice before creating _n_-grams that are then used in `LIKE` searches with `_` and `%` wildcards. -See [Transforming data with Analyzers](../../index-and-search/analyzers.md#wildcard) +See [Transforming data with Analyzers](../../indexes-and-search/analyzers.md#wildcard) for details. ### `multi_delimiter` Analyzer @@ -139,7 +139,7 @@ db._query(`RETURN TOKENS("differently,delimited;words||one|token", "delimiter_mu // [ ["differently", "delimited", "words", "one|token"] ] ``` -See [Analyzers](../../index-and-search/analyzers.md#multi_delimiter) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#multi_delimiter) for details. ## Improved memory accounting and usage @@ -356,7 +356,7 @@ FOR o IN orders The `_key` attribute is covered by the primary index of the `users` collection. If the `orders` collection has a persistent index defined over the `user` attribute and additionally includes the `total` attribute in -[`storedValues`](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes), +[`storedValues`](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes), then the query is eligible for a merge join. ```aql @@ -795,7 +795,7 @@ FILTER p.edges[1].foo == "bar" AND p.edges[2].baz == "qux" ``` -See the [Traversal options](../../aql/graphs/traversals.md#traversal-options) +See the [Traversal options](../../aql/graph-queries/traversals.md#traversal-options) for details. @@ -1393,7 +1393,7 @@ equality checks. It can be used as a vertex-centric index for graph traversals if created on an edge collection with the first attribute in `prefixFields` set to `_from` or `_to`. -See [Multi-dimensional indexes](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) +See [Multi-dimensional indexes](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) for details. #### Native strict ranges @@ -1461,7 +1461,7 @@ Execution plan: 5 ReturnNode 100 - RETURN d ``` -From v3.13.3 onward, such a query gets optimized to utilize the sparse +From v3.12.3 onward, such a query gets optimized to utilize the sparse multi-dimensional index and the condition for excluding `null` is removed from the query plan because it is unnecessary – a sparse index contains values other than `null` only: @@ -1497,7 +1497,7 @@ To use this feature, start an ArangoDB server (`arangod`) with the `--vector-ind startup option (or `--experimental-vector-index` in v3.12.4 and v3.12.5). You need to generate vector embeddings before creating a vector index. For more information about the vector index type including the available settings, see the -[Vector indexes](../../index-and-search/indexing/working-with-indexes/vector-indexes.md) +[Vector indexes](../../indexes-and-search/indexing/working-with-indexes/vector-indexes.md) documentation. You can also follow the guide in this blog post: diff --git a/site/content/arangodb/3.12/release-notes/version-3.4/whats-new-in-3-4.md b/site/content/arangodb/3.12/release-notes/version-3.4/whats-new-in-3-4.md index 52aed4cb08..1ed388dc5e 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.4/whats-new-in-3-4.md +++ b/site/content/arangodb/3.12/release-notes/version-3.4/whats-new-in-3-4.md @@ -17,7 +17,7 @@ a user-defined set of attributes and collections. It is the first type of view in ArangoDB. - [ArangoSearch tutorial](https://www.arangodb.com/learn/search/tutorial/) -- [ArangoSearch overview](../../index-and-search/arangosearch/_index.md) +- [ArangoSearch overview](../../indexes-and-search/arangosearch/_index.md) - ArangoSearch in AQL: - [SEARCH operation](../../aql/high-level-operations/search.md) - [ArangoSearch functions](../../aql/functions/arangosearch.md) diff --git a/site/content/arangodb/3.12/release-notes/version-3.5/whats-new-in-3-5.md b/site/content/arangodb/3.12/release-notes/version-3.5/whats-new-in-3-5.md index 9875c19b12..fd8b175c57 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.5/whats-new-in-3-5.md +++ b/site/content/arangodb/3.12/release-notes/version-3.5/whats-new-in-3-5.md @@ -28,7 +28,7 @@ word stemming, remove user-defined stop-words, split by a delimiting character only, perform case conversion and/or removal of diacritic characters against the full input without tokenization and more. -See [Analyzers](../../index-and-search/analyzers.md) for all available options. +See [Analyzers](../../indexes-and-search/analyzers.md) for all available options. ### Sorted Index @@ -99,7 +99,7 @@ Note that the `primarySort` option is immutable: it cannot be changed after View creation. It is therefore not possible to configure it through the Web UI. The View needs to be created via the HTTP or JavaScript API (arangosh) to set it. -See [Primary Sort Order](../../index-and-search/arangosearch/performance.md#primary-sort-order) +See [Primary Sort Order](../../indexes-and-search/arangosearch/performance.md#primary-sort-order) of ArangoSearch Views. ### AQL Integration @@ -155,7 +155,7 @@ cases. Using `PRUNE`, the traverser will not follow any more edges on the current path if the pruning condition is met, but will emit the traversal variables for whatever stopped it. -See: [Graph Traversal Pruning](../../aql/graphs/traversals.md#pruning) +See: [Graph Traversal Pruning](../../aql/graph-queries/traversals.md#pruning) ### SORT-LIMIT optimization @@ -231,7 +231,7 @@ Also see: [AQL Numeric Literals](../../aql/fundamentals/data-types.md#numeric-li AQL now allows to perform k Shortest Paths queries, that is, query a number of paths of increasing length from a start vertex to a target vertex. -See: [AQL k Shortest Paths](../../aql/graphs/k-shortest-paths.md) +See: [AQL k Shortest Paths](../../aql/graph-queries/k-shortest-paths.md) ## SmartJoins @@ -363,7 +363,7 @@ Please note that background index creation is useful only in combination with th storage engine. With the MMFiles storage engine, creating an index will always block any other operations on the collection. -Also see: [Creating Indexes in Background](../../index-and-search/indexing/basics.md#creating-indexes-in-background) +Also see: [Creating Indexes in Background](../../indexes-and-search/indexing/basics.md#creating-indexes-in-background) ## TTL (time-to-live) Indexes @@ -385,7 +385,7 @@ always numerical version of the index attribute value even if it was originally as a datestring. As a result TTL indexes will likely not be used for filtering and sort operations in user-land AQL queries. -Also see: [TTL Indexes](../../index-and-search/indexing/working-with-indexes/ttl-indexes.md) +Also see: [TTL Indexes](../../indexes-and-search/indexing/working-with-indexes/ttl-indexes.md) ## Collections diff --git a/site/content/arangodb/3.12/release-notes/version-3.6/whats-new-in-3-6.md b/site/content/arangodb/3.12/release-notes/version-3.6/whats-new-in-3-6.md index 0723591910..2ecc2b3d4d 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.6/whats-new-in-3-6.md +++ b/site/content/arangodb/3.12/release-notes/version-3.6/whats-new-in-3-6.md @@ -452,7 +452,7 @@ In addition, ArangoDB 3.6 provides the following new AQL functionality: ### Analyzers - Added UTF-8 support and ability to mark beginning/end of the sequence to - the [`ngram` Analyzer type](../../index-and-search/analyzers.md#ngram). + the [`ngram` Analyzer type](../../indexes-and-search/analyzers.md#ngram). The following optional properties can be provided for an `ngram` Analyzer definition: @@ -466,7 +466,7 @@ In addition, ArangoDB 3.6 provides the following new AQL functionality: - `streamType` : `"binary"|"utf8"`, default: "binary"\ type of the input stream (support for UTF-8 is new) -- Added _edge n-gram_ support to the [`text` Analyzer type](../../index-and-search/analyzers.md#text). +- Added _edge n-gram_ support to the [`text` Analyzer type](../../indexes-and-search/analyzers.md#text). The input gets tokenized as usual, but then _n_-grams are generated from each token. UTF-8 encoding is assumed (whereas the `ngram` Analyzer has a configurable stream type and defaults to binary). diff --git a/site/content/arangodb/3.12/release-notes/version-3.7/whats-new-in-3-7.md b/site/content/arangodb/3.12/release-notes/version-3.7/whats-new-in-3-7.md index 29bd20c8f4..f07e428bec 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.7/whats-new-in-3-7.md +++ b/site/content/arangodb/3.12/release-notes/version-3.7/whats-new-in-3-7.md @@ -99,7 +99,7 @@ Optimization rules applied: 3 handle-arangosearch-views ``` -See [ArangoSearch Views](../../index-and-search/arangosearch/arangosearch-views-reference.md#view-properties). +See [ArangoSearch Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-properties). ### Stemming support for more languages @@ -140,7 +140,7 @@ db._query(`RETURN TOKENS("αυτοκινητουσ πρωταγωνιστούσ // [ [ "αυτοκινητ", "πρωταγωνιστ" ] ] ``` -Also see [Analyzers: Supported Languages](../../index-and-search/analyzers.md#supported-languages) +Also see [Analyzers: Supported Languages](../../indexes-and-search/analyzers.md#supported-languages) ### Condition Optimization Option @@ -183,7 +183,7 @@ creation to enable or disable the compression of the primary sort data: It defaults to LZ4 compression (`"lz4"`), which was already used in ArangoDB v3.5 and v3.6. Set it to `"none"` on View creation to trade space for speed. -See [ArangoSearch Views](../../index-and-search/arangosearch/arangosearch-views-reference.md#view-properties). +See [ArangoSearch Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-properties). ## SatelliteGraphs @@ -340,7 +340,7 @@ FOR v, e, p IN 1..3 OUTBOUND 'products/123' GRAPH 'components' RETURN v ``` -Also see [AQL Traversal Options](../../aql/graphs/traversals.md#working-with-named-graphs) +Also see [AQL Traversal Options](../../aql/graph-queries/traversals.md#working-with-named-graphs) ### Traversal parallelization (Enterprise Edition) @@ -375,7 +375,7 @@ deployments and to cluster traversals that are running in a OneShard setup. Cluster traversals that run on a coordinator node and SmartGraph traversals are currently not parallelized. -See [Graph traversal options](../../aql/graphs/traversals.md#working-with-named-graphs) +See [Graph traversal options](../../aql/graph-queries/traversals.md#working-with-named-graphs) ### AQL functions added diff --git a/site/content/arangodb/3.12/release-notes/version-3.8/whats-new-in-3-8.md b/site/content/arangodb/3.12/release-notes/version-3.8/whats-new-in-3-8.md index 0423b45d3a..166ecb56e4 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.8/whats-new-in-3-8.md +++ b/site/content/arangodb/3.12/release-notes/version-3.8/whats-new-in-3-8.md @@ -81,7 +81,7 @@ The preferred way to start a breadth-first search from now on is with `order: "bfs"`. The default remains depth-first search if no `order` is specified, but can also be explicitly requested with `order: "dfs"`. -Also see [AQL graph traversals](../../aql/graphs/traversals.md) +Also see [AQL graph traversals](../../aql/graph-queries/traversals.md) ### k Paths @@ -107,7 +107,7 @@ FOR path IN 2..4 OUTBOUND K_PATHS "v/source" TO "v/target" GRAPH "g" … that have length of exactly 2 or 3 or 4, start at `v/source` and end at `v/target`. No order is guaranteed for those paths in the result set. -For more details see [AQL k Paths](../../aql/graphs/k-paths.md) +For more details see [AQL k Paths](../../aql/graph-queries/k-paths.md) ### AQL bit functions @@ -263,19 +263,19 @@ into one. It allows you to combine text normalization for a case insensitive search with _n_-gram tokenization, or to split text at multiple delimiting characters followed by stemming. -See [ArangoSearch Pipeline Analyzer](../../index-and-search/analyzers.md#pipeline) +See [ArangoSearch Pipeline Analyzer](../../indexes-and-search/analyzers.md#pipeline) ### AQL Analyzer Added new Analyzer type `"aql"` capable of running an AQL query (with some restrictions) to perform data manipulation/filtering. -See [ArangoSearch AQL Analyzer](../../index-and-search/analyzers.md#aql) +See [ArangoSearch AQL Analyzer](../../indexes-and-search/analyzers.md#aql) ### Geo-spatial queries -Added two Geo Analyzers [`"geojson"`](../../index-and-search/analyzers.md#geojson) -and [`"geopoint"`](../../index-and-search/analyzers.md#geopoint) as well as the +Added two Geo Analyzers [`"geojson"`](../../indexes-and-search/analyzers.md#geojson) +and [`"geopoint"`](../../indexes-and-search/analyzers.md#geopoint) as well as the following [ArangoSearch Geo functions](../../aql/functions/arangosearch.md#geo-functions) which enable geo-spatial queries backed by View indexes: - `GEO_CONTAINS()` @@ -292,7 +292,7 @@ input. It can be used standalone or be combined with other Analyzers via a pipeline Analyzer to add stop word functionality to them. Previously, only the text Analyzer type provided stop word support. -See [ArangoSearch `stopwords` Analyzer](../../index-and-search/analyzers.md#stopwords) +See [ArangoSearch `stopwords` Analyzer](../../indexes-and-search/analyzers.md#stopwords) ### Approximate count diff --git a/site/content/arangodb/3.12/release-notes/version-3.9/api-changes-in-3-9.md b/site/content/arangodb/3.12/release-notes/version-3.9/api-changes-in-3-9.md index f5ea88a469..7190a4d015 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.9/api-changes-in-3-9.md +++ b/site/content/arangodb/3.12/release-notes/version-3.9/api-changes-in-3-9.md @@ -325,7 +325,7 @@ options, and you can change the `cache` View link/field property with the `PUT /_api/view/<view-name>/properties` and `PATCH /_api/view/<view-name>/properties` endpoints. -See the [`arangosearch` Views Reference](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +See the [`arangosearch` Views Reference](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. #### Document API diff --git a/site/content/arangodb/3.12/release-notes/version-3.9/whats-new-in-3-9.md b/site/content/arangodb/3.12/release-notes/version-3.9/whats-new-in-3-9.md index e1e8318259..0ce24079fd 100644 --- a/site/content/arangodb/3.12/release-notes/version-3.9/whats-new-in-3-9.md +++ b/site/content/arangodb/3.12/release-notes/version-3.9/whats-new-in-3-9.md @@ -57,8 +57,8 @@ tokens. This makes comparisons follow the rules of the respective language, most notable in range queries against Views. See: -- [`segmentation` Analyzer](../../index-and-search/analyzers.md#segmentation) -- [`collation` Analyzer](../../index-and-search/analyzers.md#collation) +- [`segmentation` Analyzer](../../indexes-and-search/analyzers.md#segmentation) +- [`collation` Analyzer](../../indexes-and-search/analyzers.md#collation) ### Analyzer locale normalization @@ -110,10 +110,10 @@ The cache size can be controlled with the new `--arangosearch.columns-cache-limi startup option and monitored via the new `arangodb_search_columns_cache_size` metric. -[ArangoSearch caching](../../index-and-search/arangosearch/arangosearch-views-reference.md) is only available in the +[ArangoSearch caching](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) is only available in the Enterprise Edition. -See [Optimizing View query performance](../../index-and-search/arangosearch/performance.md) +See [Optimizing View query performance](../../indexes-and-search/arangosearch/performance.md) for examples. ## UI @@ -347,7 +347,7 @@ FOR v, e, p IN 10 OUTBOUND @start GRAPH "myGraph" The `v.isRelevant == true` condition is stored in the `pruneCondition` variable and used as a condition for `FILTER` later. -See [Pruning](../../aql/graphs/traversals.md#pruning). +See [Pruning](../../aql/graph-queries/traversals.md#pruning). ### Warnings on invalid OPTIONS @@ -618,7 +618,7 @@ the emerging performance is much more dependent on the distribution of the dataset, making it less predictable. A third limitation is that `zkd` indexes can only be created for index values which are IEEE 754 doubles. -[Multi-dimensional Indexes](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) are an experimental feature. +[Multi-dimensional Indexes](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) are an experimental feature. ## Server options diff --git a/site/content/arangodb/3.12/use-cases.md b/site/content/arangodb/3.12/use-cases.md index 4bc8b2517e..a9fd2a21f7 100644 --- a/site/content/arangodb/3.12/use-cases.md +++ b/site/content/arangodb/3.12/use-cases.md @@ -148,7 +148,7 @@ It also features natural language processing (NLP) capabilities. and can classify or find similar terms using word embedding models. {{% /comment %}} -For more information about the search engine, see [ArangoSearch](index-and-search/arangosearch/_index.md). +For more information about the search engine, see [ArangoSearch](indexes-and-search/arangosearch/_index.md). ## ArangoDB for Machine Learning diff --git a/site/content/arangodb/3.13/components/tools/arango-datasets.md b/site/content/arangodb/3.13/components/tools/arango-datasets.md deleted file mode 100644 index 10a4626f48..0000000000 --- a/site/content/arangodb/3.13/components/tools/arango-datasets.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: ArangoDB Datasets -menuTitle: ArangoDB Datasets -weight: 60 -description: >- - `arango-datasets` is a Python package for loading sample datasets into ArangoDB ---- -You can use the `arango-datasets` package in conjunction with the `python-arango` -driver to load example data into your ArangoDB deployments. The data is hosted -on AWS S3. There are a number of existing datasets already available and you can -view them by calling the `list_datasets()` method as shown below. - -## Install - -To install the Python package, you can use the `pip` command to directly install -it from [PyPi](https://pypi.org/project/arango-datasets/): - -```sh -pip install arango-datasets -``` - -You can find the source code repository of the module on GitHub: -<https://github.com/arangoml/arangodb_datasets> - -## Usage - -Once you have installed the `arango-datasets` package, you can use it to -download and import datasets into your deployment with `arango_datasets.Datasets`. - -The `Datasets` constructor requires a valid [python-arango](../../../../ecosystem/drivers/python.md) -database object as input. It defines the target deployment, database, and -credentials to load a dataset. - -```py -from arango import ArangoClient -db = ArangoClient(hosts='http://localhost:8529').db("dbName", username="root", password="") -``` - -Pass the database object to the `Datasets` constructor: - -```py -from arango_datasets import Datasets -datasets = Datasets(db) -``` - -List the available datasets: - -```py -print(datasets.list_datasets()) -``` - -List more information about a particular dataset: - -```py -print(datasets.dataset_info("IMDB_X")) -``` - -Import the dataset: - -```py -datasets.load("IMDB_X") -``` diff --git a/site/content/arangodb/3.13/index-and-search/_index.md b/site/content/arangodb/3.13/index-and-search/_index.md deleted file mode 100644 index dc765f1be0..0000000000 --- a/site/content/arangodb/3.13/index-and-search/_index.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Index and Search -menuTitle: Index and Search -weight: 145 -description: '' ---- diff --git a/site/content/arangodb/3.13/release-notes/version-3.13/_index.md b/site/content/arangodb/3.13/release-notes/version-3.13/_index.md deleted file mode 100644 index 6ccbbddbf0..0000000000 --- a/site/content/arangodb/3.13/release-notes/version-3.13/_index.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Version 3.13 -menuTitle: Version 3.13 -weight: 86 -description: '' ---- diff --git a/site/content/arangodb/3.13/_index.md b/site/content/arangodb/4.0/_index.md similarity index 98% rename from site/content/arangodb/3.13/_index.md rename to site/content/arangodb/4.0/_index.md index 00fd289406..9ae04ecd74 100644 --- a/site/content/arangodb/3.13/_index.md +++ b/site/content/arangodb/4.0/_index.md @@ -1,6 +1,6 @@ --- title: Recommended Resources -menuTitle: '3.13' +menuTitle: '4.0' weight: 96 layout: default --- diff --git a/site/content/arangodb/3.13/aql/_index.md b/site/content/arangodb/4.0/aql/_index.md similarity index 100% rename from site/content/arangodb/3.13/aql/_index.md rename to site/content/arangodb/4.0/aql/_index.md diff --git a/site/content/arangodb/3.13/aql/common-errors.md b/site/content/arangodb/4.0/aql/common-errors.md similarity index 100% rename from site/content/arangodb/3.13/aql/common-errors.md rename to site/content/arangodb/4.0/aql/common-errors.md diff --git a/site/content/arangodb/3.13/aql/data-queries.md b/site/content/arangodb/4.0/aql/data-queries.md similarity index 100% rename from site/content/arangodb/3.13/aql/data-queries.md rename to site/content/arangodb/4.0/aql/data-queries.md diff --git a/site/content/arangodb/3.13/aql/examples-and-query-patterns/_index.md b/site/content/arangodb/4.0/aql/examples-and-query-patterns/_index.md similarity index 100% rename from site/content/arangodb/3.13/aql/examples-and-query-patterns/_index.md rename to site/content/arangodb/4.0/aql/examples-and-query-patterns/_index.md diff --git a/site/content/arangodb/3.13/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md b/site/content/arangodb/4.0/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md similarity index 100% rename from site/content/arangodb/3.13/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md rename to site/content/arangodb/4.0/aql/examples-and-query-patterns/actors-and-movies-dataset-queries.md diff --git a/site/content/arangodb/3.13/aql/examples-and-query-patterns/counting.md b/site/content/arangodb/4.0/aql/examples-and-query-patterns/counting.md similarity index 100% rename from site/content/arangodb/3.13/aql/examples-and-query-patterns/counting.md rename to site/content/arangodb/4.0/aql/examples-and-query-patterns/counting.md diff --git a/site/content/arangodb/3.13/aql/examples-and-query-patterns/create-test-data.md b/site/content/arangodb/4.0/aql/examples-and-query-patterns/create-test-data.md similarity index 100% rename from site/content/arangodb/3.13/aql/examples-and-query-patterns/create-test-data.md rename to site/content/arangodb/4.0/aql/examples-and-query-patterns/create-test-data.md diff --git a/site/content/arangodb/3.13/aql/examples-and-query-patterns/diffing-two-documents.md b/site/content/arangodb/4.0/aql/examples-and-query-patterns/diffing-two-documents.md similarity index 100% rename from site/content/arangodb/3.13/aql/examples-and-query-patterns/diffing-two-documents.md rename to site/content/arangodb/4.0/aql/examples-and-query-patterns/diffing-two-documents.md diff --git a/site/content/arangodb/3.13/aql/examples-and-query-patterns/dynamic-attribute-names.md b/site/content/arangodb/4.0/aql/examples-and-query-patterns/dynamic-attribute-names.md similarity index 100% rename from site/content/arangodb/3.13/aql/examples-and-query-patterns/dynamic-attribute-names.md rename to site/content/arangodb/4.0/aql/examples-and-query-patterns/dynamic-attribute-names.md diff --git a/site/content/arangodb/3.13/aql/examples-and-query-patterns/grouping.md b/site/content/arangodb/4.0/aql/examples-and-query-patterns/grouping.md similarity index 100% rename from site/content/arangodb/3.13/aql/examples-and-query-patterns/grouping.md rename to site/content/arangodb/4.0/aql/examples-and-query-patterns/grouping.md diff --git a/site/content/arangodb/3.13/aql/examples-and-query-patterns/joins.md b/site/content/arangodb/4.0/aql/examples-and-query-patterns/joins.md similarity index 99% rename from site/content/arangodb/3.13/aql/examples-and-query-patterns/joins.md rename to site/content/arangodb/4.0/aql/examples-and-query-patterns/joins.md index 190c27391b..ee6426b2de 100644 --- a/site/content/arangodb/3.13/aql/examples-and-query-patterns/joins.md +++ b/site/content/arangodb/4.0/aql/examples-and-query-patterns/joins.md @@ -431,7 +431,7 @@ arangosh> db.written.save("authors/2938210813", ``` In order to get all books with their authors, you can use a -[graph traversal](../graphs/traversals.md#working-with-collection-sets): +[graph traversal](../graph-queries/traversals.md#working-with-collection-sets): ```js arangosh> db._query( @@ -880,7 +880,7 @@ FOR o IN orders The `_key` attribute is covered by the primary index of the `users` collection. If the `orders` collection has a persistent index defined over the `user` attribute and additionally includes the `total` attribute in -[`storedValues`](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes), +[`storedValues`](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes), then the query is eligible for a merge join. You can check the query explain output for `JoinNode` entries: diff --git a/site/content/arangodb/3.13/aql/examples-and-query-patterns/projections-and-filters.md b/site/content/arangodb/4.0/aql/examples-and-query-patterns/projections-and-filters.md similarity index 100% rename from site/content/arangodb/3.13/aql/examples-and-query-patterns/projections-and-filters.md rename to site/content/arangodb/4.0/aql/examples-and-query-patterns/projections-and-filters.md diff --git a/site/content/arangodb/3.13/aql/examples-and-query-patterns/queries-without-collections.md b/site/content/arangodb/4.0/aql/examples-and-query-patterns/queries-without-collections.md similarity index 100% rename from site/content/arangodb/3.13/aql/examples-and-query-patterns/queries-without-collections.md rename to site/content/arangodb/4.0/aql/examples-and-query-patterns/queries-without-collections.md diff --git a/site/content/arangodb/3.13/aql/examples-and-query-patterns/remove-nodes.md b/site/content/arangodb/4.0/aql/examples-and-query-patterns/remove-nodes.md similarity index 100% rename from site/content/arangodb/3.13/aql/examples-and-query-patterns/remove-nodes.md rename to site/content/arangodb/4.0/aql/examples-and-query-patterns/remove-nodes.md diff --git a/site/content/arangodb/3.13/aql/examples-and-query-patterns/traversals.md b/site/content/arangodb/4.0/aql/examples-and-query-patterns/traversals.md similarity index 96% rename from site/content/arangodb/3.13/aql/examples-and-query-patterns/traversals.md rename to site/content/arangodb/4.0/aql/examples-and-query-patterns/traversals.md index f495de1e4b..5801a6af57 100644 --- a/site/content/arangodb/3.13/aql/examples-and-query-patterns/traversals.md +++ b/site/content/arangodb/4.0/aql/examples-and-query-patterns/traversals.md @@ -7,7 +7,7 @@ description: >- --- ## Finding the start node via a geo query -Our first example will locate the start node for a graph traversal via [a geo index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). +Our first example will locate the start node for a graph traversal via [a geo index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). We use the [City Graph](../../graphs/example-graphs.md#city-graph) and its geo indexes: ![Cities Example Graph](../../../../images/cities_graph.png) diff --git a/site/content/arangodb/3.13/aql/examples-and-query-patterns/upsert-repsert-guide.md b/site/content/arangodb/4.0/aql/examples-and-query-patterns/upsert-repsert-guide.md similarity index 100% rename from site/content/arangodb/3.13/aql/examples-and-query-patterns/upsert-repsert-guide.md rename to site/content/arangodb/4.0/aql/examples-and-query-patterns/upsert-repsert-guide.md diff --git a/site/content/arangodb/3.13/aql/execution-and-performance/_index.md b/site/content/arangodb/4.0/aql/execution-and-performance/_index.md similarity index 100% rename from site/content/arangodb/3.13/aql/execution-and-performance/_index.md rename to site/content/arangodb/4.0/aql/execution-and-performance/_index.md diff --git a/site/content/arangodb/3.13/aql/execution-and-performance/caching-query-plans.md b/site/content/arangodb/4.0/aql/execution-and-performance/caching-query-plans.md similarity index 100% rename from site/content/arangodb/3.13/aql/execution-and-performance/caching-query-plans.md rename to site/content/arangodb/4.0/aql/execution-and-performance/caching-query-plans.md diff --git a/site/content/arangodb/3.13/aql/execution-and-performance/caching-query-results.md b/site/content/arangodb/4.0/aql/execution-and-performance/caching-query-results.md similarity index 100% rename from site/content/arangodb/3.13/aql/execution-and-performance/caching-query-results.md rename to site/content/arangodb/4.0/aql/execution-and-performance/caching-query-results.md diff --git a/site/content/arangodb/3.13/aql/execution-and-performance/explaining-queries.md b/site/content/arangodb/4.0/aql/execution-and-performance/explaining-queries.md similarity index 100% rename from site/content/arangodb/3.13/aql/execution-and-performance/explaining-queries.md rename to site/content/arangodb/4.0/aql/execution-and-performance/explaining-queries.md diff --git a/site/content/arangodb/3.13/aql/execution-and-performance/parsing-queries.md b/site/content/arangodb/4.0/aql/execution-and-performance/parsing-queries.md similarity index 100% rename from site/content/arangodb/3.13/aql/execution-and-performance/parsing-queries.md rename to site/content/arangodb/4.0/aql/execution-and-performance/parsing-queries.md diff --git a/site/content/arangodb/3.13/aql/execution-and-performance/query-logging.md b/site/content/arangodb/4.0/aql/execution-and-performance/query-logging.md similarity index 100% rename from site/content/arangodb/3.13/aql/execution-and-performance/query-logging.md rename to site/content/arangodb/4.0/aql/execution-and-performance/query-logging.md diff --git a/site/content/arangodb/3.13/aql/execution-and-performance/query-optimization.md b/site/content/arangodb/4.0/aql/execution-and-performance/query-optimization.md similarity index 100% rename from site/content/arangodb/3.13/aql/execution-and-performance/query-optimization.md rename to site/content/arangodb/4.0/aql/execution-and-performance/query-optimization.md diff --git a/site/content/arangodb/3.13/aql/execution-and-performance/query-profiling.md b/site/content/arangodb/4.0/aql/execution-and-performance/query-profiling.md similarity index 100% rename from site/content/arangodb/3.13/aql/execution-and-performance/query-profiling.md rename to site/content/arangodb/4.0/aql/execution-and-performance/query-profiling.md diff --git a/site/content/arangodb/3.13/aql/execution-and-performance/query-statistics.md b/site/content/arangodb/4.0/aql/execution-and-performance/query-statistics.md similarity index 100% rename from site/content/arangodb/3.13/aql/execution-and-performance/query-statistics.md rename to site/content/arangodb/4.0/aql/execution-and-performance/query-statistics.md diff --git a/site/content/arangodb/3.13/aql/functions/_index.md b/site/content/arangodb/4.0/aql/functions/_index.md similarity index 100% rename from site/content/arangodb/3.13/aql/functions/_index.md rename to site/content/arangodb/4.0/aql/functions/_index.md diff --git a/site/content/arangodb/3.13/aql/functions/arangosearch.md b/site/content/arangodb/4.0/aql/functions/arangosearch.md similarity index 97% rename from site/content/arangodb/3.13/aql/functions/arangosearch.md rename to site/content/arangodb/4.0/aql/functions/arangosearch.md index be11f69c0f..4abb3ca336 100644 --- a/site/content/arangodb/3.13/aql/functions/arangosearch.md +++ b/site/content/arangodb/4.0/aql/functions/arangosearch.md @@ -16,7 +16,7 @@ such as `PHRASE(doc.text, "foo bar", "text_en")`, for querying Views. You can combine ArangoSearch filter and context functions as well as operators like `AND` and `OR` to form complex search conditions. Similarly, the [`FILTER` operation](../high-level-operations/filter.md) accepts such search expressions -when using [inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md). +when using [inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md). Scoring functions allow you to rank matches and to sort results by relevance. They are limited to Views. @@ -27,7 +27,7 @@ They are limited to Views. You can use most functions also without an inverted index or a View and the `SEARCH` keyword, but then they are not accelerated by an index. -See [Information Retrieval with ArangoSearch](../../index-and-search/arangosearch/_index.md) for an +See [Information Retrieval with ArangoSearch](../../indexes-and-search/arangosearch/_index.md) for an introduction. ## Context Functions @@ -59,7 +59,7 @@ not an ArangoSearch function but a regular string function which can be used outside of `SEARCH` operations. - **expr** (expression): any valid search expression -- **analyzer** (string): name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string): name of an [Analyzer](../../indexes-and-search/analyzers.md). - returns **retVal** (any): the expression result that it wraps #### Example: Using a custom Analyzer @@ -266,7 +266,7 @@ by the specified `analyzer`. - **path** (attribute path expression): the attribute to test in the document - **type** (string): string literal `"analyzer"` -- **analyzer** (string, _optional_): name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string, _optional_): name of an [Analyzer](../../indexes-and-search/analyzers.md). Uses the Analyzer of a wrapping `ANALYZER()` call if not specified or defaults to `"identity"` - returns nothing: the function evaluates to a boolean, but this value cannot be @@ -285,8 +285,8 @@ FOR doc IN viewName `EXISTS(path, "nested")` Match documents where the attribute at `path` is present _and_ is indexed -as a nested field for [nested search with Views](../../index-and-search/arangosearch/nested-search.md) -or [inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search). +as a nested field for [nested search with Views](../../indexes-and-search/arangosearch/nested-search.md) +or [inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search). - **path** (attribute path expression): the attribute to test in the document - **type** (string): string literal `"nested"` @@ -355,9 +355,9 @@ and `false`), but the data type must be the same for both. The alphabetical order of characters is not taken into account by ArangoSearch, i.e. range queries in SEARCH operations against Views will not follow the language rules as per the defined Analyzer locale (except for the -[`collation` Analyzer](../../index-and-search/analyzers.md#collation)) nor the server language +[`collation` Analyzer](../../indexes-and-search/analyzers.md#collation)) nor the server language (startup option `--default-language`)! -Also see [Known Issues](../../release-notes/version-3.13/known-issues-in-3-13.md#arangosearch). +Also see [Known Issues](../../release-notes/version-4.0/known-issues-in-4-0.md#arangosearch). {{< /warning >}} There is a corresponding [`IN_RANGE()` Miscellaneous Function](miscellaneous.md#in_range) @@ -465,7 +465,7 @@ To only compute the MinHash signatures, see the - **target** (string): the string to hash with the specified Analyzer and to compare against the stored attribute - **threshold** (number, _optional_): a value between `0.0` and `1.0`. -- **analyzer** (string): the name of a [`minhash` Analyzer](../../index-and-search/analyzers.md#minhash). +- **analyzer** (string): the name of a [`minhash` Analyzer](../../indexes-and-search/analyzers.md#minhash). - returns **fulfilled** (bool): `true` if the approximate Jaccard similarity is greater than or equal to the specified threshold, `false` otherwise @@ -513,7 +513,7 @@ for calculating _n_-gram similarity that cannot be accelerated by a View index. - **target** (string): the string to compare against the stored attribute - **threshold** (number, _optional_): a value between `0.0` and `1.0`. Defaults to `0.7` if none is specified. -- **analyzer** (string): the name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string): the name of an [Analyzer](../../indexes-and-search/analyzers.md). - returns **fulfilled** (bool): `true` if the evaluated _n_-gram similarity value is greater than or equal to the specified threshold, `false` otherwise @@ -594,7 +594,7 @@ array as second argument. to string and array tokens, but not for object tokens. - **skipTokens** (number, _optional_): amount of tokens to treat as wildcards -- **analyzer** (string, _optional_): name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string, _optional_): name of an [Analyzer](../../indexes-and-search/analyzers.md). Uses the Analyzer of a wrapping `ANALYZER()` call if not specified or defaults to `"identity"` - returns nothing: the function evaluates to a boolean, but this value cannot be @@ -783,9 +783,9 @@ to match the document. The alphabetical order of characters is not taken into account by ArangoSearch, i.e. range queries in SEARCH operations against Views will not follow the language rules as per the defined Analyzer locale (except for the -[`collation` Analyzer](../../index-and-search/analyzers.md#collation)) nor the server language +[`collation` Analyzer](../../indexes-and-search/analyzers.md#collation)) nor the server language (startup option `--default-language`)! -Also see [Known Issues](../../release-notes/version-3.13/known-issues-in-3-13.md#arangosearch). +Also see [Known Issues](../../release-notes/version-4.0/known-issues-in-4-0.md#arangosearch). {{< /warning >}} There is a corresponding [`STARTS_WITH()` String function](string.md#starts_with) @@ -1360,4 +1360,4 @@ db._query(` ~analyzers.remove(analyzer.name); ``` -For full examples, see [Search Highlighting](../../index-and-search/arangosearch/search-highlighting.md). +For full examples, see [Search Highlighting](../../indexes-and-search/arangosearch/search-highlighting.md). diff --git a/site/content/arangodb/3.13/aql/functions/array.md b/site/content/arangodb/4.0/aql/functions/array.md similarity index 100% rename from site/content/arangodb/3.13/aql/functions/array.md rename to site/content/arangodb/4.0/aql/functions/array.md diff --git a/site/content/arangodb/3.13/aql/functions/bit.md b/site/content/arangodb/4.0/aql/functions/bit.md similarity index 100% rename from site/content/arangodb/3.13/aql/functions/bit.md rename to site/content/arangodb/4.0/aql/functions/bit.md diff --git a/site/content/arangodb/3.13/aql/functions/date.md b/site/content/arangodb/4.0/aql/functions/date.md similarity index 99% rename from site/content/arangodb/3.13/aql/functions/date.md rename to site/content/arangodb/4.0/aql/functions/date.md index 88abc7ec4c..155b99198b 100644 --- a/site/content/arangodb/3.13/aql/functions/date.md +++ b/site/content/arangodb/4.0/aql/functions/date.md @@ -72,7 +72,7 @@ You are free to store age determinations of specimens, incomplete or fuzzy dates the like in different, more appropriate ways of course. AQL's date functions are most certainly not of any help for such dates, but you can still use language constructs like [SORT](../high-level-operations/sort.md) (which also supports sorting of arrays) -and [indexes](../../index-and-search/indexing/_index.md). +and [indexes](../../indexes-and-search/indexing/_index.md). ## Current date and time @@ -1581,7 +1581,7 @@ There are two recommended ways to store timestamps in ArangoDB: The sort order of both is identical due to the sort properties of ISO date strings. You can't mix both types, numbers and strings, in a single attribute however. -You can use [persistent indexes](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md) with both date types. +You can use [persistent indexes](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md) with both date types. When choosing string representations, you can work with string comparisons (less than, greater than etc.) to express time ranges in your queries while still utilizing persistent indexes: diff --git a/site/content/arangodb/3.13/aql/functions/document-object.md b/site/content/arangodb/4.0/aql/functions/document-object.md similarity index 100% rename from site/content/arangodb/3.13/aql/functions/document-object.md rename to site/content/arangodb/4.0/aql/functions/document-object.md diff --git a/site/content/arangodb/3.13/aql/functions/fulltext.md b/site/content/arangodb/4.0/aql/functions/fulltext.md similarity index 91% rename from site/content/arangodb/3.13/aql/functions/fulltext.md rename to site/content/arangodb/4.0/aql/functions/fulltext.md index 54a0cd35bc..ce1c8f738c 100644 --- a/site/content/arangodb/3.13/aql/functions/fulltext.md +++ b/site/content/arangodb/4.0/aql/functions/fulltext.md @@ -5,13 +5,13 @@ weight: 30 description: >- AQL offers functions to filter data using fulltext indexes --- -See [fulltext indexes](../../index-and-search/indexing/working-with-indexes/fulltext-indexes.md) +See [fulltext indexes](../../indexes-and-search/indexing/working-with-indexes/fulltext-indexes.md) for details. {{< warning >}} The fulltext index type is deprecated from version 3.10 onwards. -It is recommended to use [Inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md) or -[ArangoSearch](../../index-and-search/arangosearch/_index.md) for advanced full-text search capabilities. +It is recommended to use [Inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md) or +[ArangoSearch](../../indexes-and-search/arangosearch/_index.md) for advanced full-text search capabilities. {{< /warning >}} ## FULLTEXT() diff --git a/site/content/arangodb/3.13/aql/functions/geo.md b/site/content/arangodb/4.0/aql/functions/geo.md similarity index 97% rename from site/content/arangodb/3.13/aql/functions/geo.md rename to site/content/arangodb/4.0/aql/functions/geo.md index 71820df92a..3a819a76f9 100644 --- a/site/content/arangodb/3.13/aql/functions/geo.md +++ b/site/content/arangodb/4.0/aql/functions/geo.md @@ -12,7 +12,7 @@ You can model geo-spatial information in different ways using the data types available in ArangoDB. The recommended way is to use objects with **GeoJSON** geometry but you can also use **longitude and latitude coordinate pairs** for points. Both models are supported by -[Geo-Spatial Indexes](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). +[Geo-Spatial Indexes](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). ### Coordinate pairs @@ -344,7 +344,7 @@ lies South of the parallel of latitude at 54 degrees. {{< info >}} ArangoDB version before 3.10 did an inconsistent special detection of "rectangle" polygons that later versions from 3.10 onward no longer do, see -[Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons). +[Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons). {{< /info >}} Furthermore, there is an issue with the interpretation of linear rings @@ -393,7 +393,7 @@ ArangoDB versions before 3.10 did not follow this rule and always took the "smaller" connected component of the surface as the "interior" of the polygon. This made it impossible to specify polygons which covered more than half of the sphere. From version 3.10 onward, ArangoDB recognizes this correctly. -See [Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) +See [Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for how to deal with this issue. ## Geo utility functions @@ -401,7 +401,7 @@ for how to deal with this issue. The following helper functions **can** use geo indexes, but do not have to in all cases. You can use all of these functions in combination with each other, and if you have configured a geo index it may be utilized, -see [Geo Indexing](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). +see [Geo Indexing](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). ### DISTANCE() @@ -456,7 +456,7 @@ boundary edges! {{< /info >}} You can optimize queries that contain a `FILTER` expression of the following -form with an S2-based [geospatial index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): +form with an S2-based [geospatial index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ```aql FOR doc IN coll @@ -500,7 +500,7 @@ FOR doc IN collectionName ``` You can optimize queries that contain a `FILTER` expression of the following -form with an S2-based [geospatial index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): +form with an S2-based [geospatial index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ```aql FOR doc IN coll @@ -590,7 +590,7 @@ intersects with `geoJsonB` (i.e. at least one point in B is also in A or vice-ve - returns **bool** (bool): `true` if B intersects A, `false` otherwise. You can optimize queries that contain a `FILTER` expression of the following -form with an S2-based [geospatial index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): +form with an S2-based [geospatial index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ```aql FOR doc IN coll @@ -862,7 +862,7 @@ Please use the [Geo utility functions](#geo-utility-functions) instead. {{< /warning >}} AQL offers the following functions to filter data based on -[geo indexes](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). These functions require the collection +[geo indexes](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). These functions require the collection to have at least one geo index. If no geo index can be found, calling this function will fail with an error at runtime. There is no error when explaining the query however. diff --git a/site/content/arangodb/3.13/aql/functions/miscellaneous.md b/site/content/arangodb/4.0/aql/functions/miscellaneous.md similarity index 100% rename from site/content/arangodb/3.13/aql/functions/miscellaneous.md rename to site/content/arangodb/4.0/aql/functions/miscellaneous.md diff --git a/site/content/arangodb/3.13/aql/functions/numeric.md b/site/content/arangodb/4.0/aql/functions/numeric.md similarity index 100% rename from site/content/arangodb/3.13/aql/functions/numeric.md rename to site/content/arangodb/4.0/aql/functions/numeric.md diff --git a/site/content/arangodb/3.13/aql/functions/string.md b/site/content/arangodb/4.0/aql/functions/string.md similarity index 99% rename from site/content/arangodb/3.13/aql/functions/string.md rename to site/content/arangodb/4.0/aql/functions/string.md index a1546e7a86..24e70099c3 100644 --- a/site/content/arangodb/3.13/aql/functions/string.md +++ b/site/content/arangodb/4.0/aql/functions/string.md @@ -1745,7 +1745,7 @@ of in number of characters. This function is intended to be used together with the [`OFFSET_INFO()` function](arangosearch.md#offset_info) for -[search highlighting](../../index-and-search/arangosearch/search-highlighting.md). +[search highlighting](../../indexes-and-search/arangosearch/search-highlighting.md). - **value** (string): a string - **offset** (number): start at this byte of the UTF-8 encoded string. @@ -1840,7 +1840,7 @@ A wrapping `ANALYZER()` call in a search expression does not affect the - **input** (string\|array): text to tokenize. Accepts recursive arrays of strings. -- **analyzer** (string): name of an [Analyzer](../../index-and-search/analyzers.md). +- **analyzer** (string): name of an [Analyzer](../../indexes-and-search/analyzers.md). - returns **tokenArray** (array): array of strings with zero or more elements, each element being a token. diff --git a/site/content/arangodb/3.13/aql/functions/type-check-and-cast.md b/site/content/arangodb/4.0/aql/functions/type-check-and-cast.md similarity index 100% rename from site/content/arangodb/3.13/aql/functions/type-check-and-cast.md rename to site/content/arangodb/4.0/aql/functions/type-check-and-cast.md diff --git a/site/content/arangodb/3.13/aql/functions/vector.md b/site/content/arangodb/4.0/aql/functions/vector.md similarity index 99% rename from site/content/arangodb/3.13/aql/functions/vector.md rename to site/content/arangodb/4.0/aql/functions/vector.md index 18c79bc7b8..e334b0d9ad 100644 --- a/site/content/arangodb/3.13/aql/functions/vector.md +++ b/site/content/arangodb/4.0/aql/functions/vector.md @@ -10,7 +10,7 @@ description: >- To use vector search, you need to have vector embeddings stored in documents and the attribute that stores them needs to be indexed by a -[vector index](../../index-and-search/indexing/working-with-indexes/vector-indexes.md). +[vector index](../../indexes-and-search/indexing/working-with-indexes/vector-indexes.md). You can calculate vector embeddings using [ArangoDB's GraphML](../../../../ai-suite/graphml/_index.md) capabilities (available in the Arango Managed Platform (AMP)) or using external tools. diff --git a/site/content/arangodb/3.13/aql/fundamentals/_index.md b/site/content/arangodb/4.0/aql/fundamentals/_index.md similarity index 100% rename from site/content/arangodb/3.13/aql/fundamentals/_index.md rename to site/content/arangodb/4.0/aql/fundamentals/_index.md diff --git a/site/content/arangodb/3.13/aql/fundamentals/accessing-data-from-collections.md b/site/content/arangodb/4.0/aql/fundamentals/accessing-data-from-collections.md similarity index 100% rename from site/content/arangodb/3.13/aql/fundamentals/accessing-data-from-collections.md rename to site/content/arangodb/4.0/aql/fundamentals/accessing-data-from-collections.md diff --git a/site/content/arangodb/3.13/aql/fundamentals/bind-parameters.md b/site/content/arangodb/4.0/aql/fundamentals/bind-parameters.md similarity index 100% rename from site/content/arangodb/3.13/aql/fundamentals/bind-parameters.md rename to site/content/arangodb/4.0/aql/fundamentals/bind-parameters.md diff --git a/site/content/arangodb/3.13/aql/fundamentals/data-types.md b/site/content/arangodb/4.0/aql/fundamentals/data-types.md similarity index 100% rename from site/content/arangodb/3.13/aql/fundamentals/data-types.md rename to site/content/arangodb/4.0/aql/fundamentals/data-types.md diff --git a/site/content/arangodb/3.13/aql/fundamentals/limitations.md b/site/content/arangodb/4.0/aql/fundamentals/limitations.md similarity index 98% rename from site/content/arangodb/3.13/aql/fundamentals/limitations.md rename to site/content/arangodb/4.0/aql/fundamentals/limitations.md index 1cfe10977c..e3224019ac 100644 --- a/site/content/arangodb/3.13/aql/fundamentals/limitations.md +++ b/site/content/arangodb/4.0/aql/fundamentals/limitations.md @@ -56,7 +56,7 @@ The following design limitations are known for AQL queries: it was used for a write operation in the same AQL query. - In the cluster, all collections that are accessed **dynamically** by - [traversals working with collection sets](../graphs/traversals.md#working-with-collection-sets) + [traversals working with collection sets](../graph-queries/traversals.md#working-with-collection-sets) (instead of named graphs) must be stated in the query's initial [`WITH` statement](../high-level-operations/with.md). To make the `WITH` statement required in single server as well (e.g. for testing a migration to cluster), diff --git a/site/content/arangodb/3.13/aql/fundamentals/query-errors.md b/site/content/arangodb/4.0/aql/fundamentals/query-errors.md similarity index 100% rename from site/content/arangodb/3.13/aql/fundamentals/query-errors.md rename to site/content/arangodb/4.0/aql/fundamentals/query-errors.md diff --git a/site/content/arangodb/3.13/aql/fundamentals/query-results.md b/site/content/arangodb/4.0/aql/fundamentals/query-results.md similarity index 100% rename from site/content/arangodb/3.13/aql/fundamentals/query-results.md rename to site/content/arangodb/4.0/aql/fundamentals/query-results.md diff --git a/site/content/arangodb/3.13/aql/fundamentals/subqueries.md b/site/content/arangodb/4.0/aql/fundamentals/subqueries.md similarity index 100% rename from site/content/arangodb/3.13/aql/fundamentals/subqueries.md rename to site/content/arangodb/4.0/aql/fundamentals/subqueries.md diff --git a/site/content/arangodb/3.13/aql/fundamentals/syntax.md b/site/content/arangodb/4.0/aql/fundamentals/syntax.md similarity index 94% rename from site/content/arangodb/3.13/aql/fundamentals/syntax.md rename to site/content/arangodb/4.0/aql/fundamentals/syntax.md index 30e62f0480..635f4f417c 100644 --- a/site/content/arangodb/3.13/aql/fundamentals/syntax.md +++ b/site/content/arangodb/4.0/aql/fundamentals/syntax.md @@ -167,20 +167,20 @@ based on the context: [REPLACE](../high-level-operations/replace.md#query-options) / [UPSERT](../high-level-operations/upsert.md#query-options) / [REMOVE](../high-level-operations/remove.md#query-options) operation / - [Graph Traversal](../graphs/traversals.md) / - [Shortest Path](../graphs/shortest-path.md#path-search-options) / - [All Shortest Paths](../graphs/all-shortest-paths.md#path-search-options) / - [k Shortest Paths](../graphs/k-shortest-paths.md#path-search-options) / - [k Paths](../graphs/k-paths.md#path-search-options) + [Graph Traversal](../graph-queries/traversals.md) / + [Shortest Path](../graph-queries/shortest-path.md#path-search-options) / + [All Shortest Paths](../graph-queries/all-shortest-paths.md#path-search-options) / + [k Shortest Paths](../graph-queries/k-shortest-paths.md#path-search-options) / + [k Paths](../graph-queries/k-paths.md#path-search-options) - `PRUNE` – - [Graph Traversal](../graphs/traversals.md#pruning) (`FOR` operation variant) + [Graph Traversal](../graph-queries/traversals.md#pruning) (`FOR` operation variant) - `SEARCH` – [SEARCH](../high-level-operations/search.md) operation - `TO` – - [Shortest Path](../graphs/shortest-path.md) / - [All Shortest Paths](../graphs/all-shortest-paths.md) / - [k Shortest Paths](../graphs/k-shortest-paths.md) / - [k Paths](../graphs/k-paths.md) + [Shortest Path](../graph-queries/shortest-path.md) / + [All Shortest Paths](../graph-queries/all-shortest-paths.md) / + [k Shortest Paths](../graph-queries/k-shortest-paths.md) / + [k Paths](../graph-queries/k-paths.md) Last but not least, there are special variables which are available in certain contexts. Unlike keywords, they are **case-sensitive**: diff --git a/site/content/arangodb/3.13/aql/fundamentals/type-and-value-order.md b/site/content/arangodb/4.0/aql/fundamentals/type-and-value-order.md similarity index 100% rename from site/content/arangodb/3.13/aql/fundamentals/type-and-value-order.md rename to site/content/arangodb/4.0/aql/fundamentals/type-and-value-order.md diff --git a/site/content/arangodb/3.12/aql/graphs/_index.md b/site/content/arangodb/4.0/aql/graph-queries/_index.md similarity index 97% rename from site/content/arangodb/3.12/aql/graphs/_index.md rename to site/content/arangodb/4.0/aql/graph-queries/_index.md index feaaf527fb..d0acfc0bd2 100644 --- a/site/content/arangodb/3.12/aql/graphs/_index.md +++ b/site/content/arangodb/4.0/aql/graph-queries/_index.md @@ -1,6 +1,6 @@ --- -title: Graphs in AQL -menuTitle: Graphs +title: Graph queries in AQL +menuTitle: Graph queries weight: 35 description: >- You can perform graph traversals and path searches on named graphs as well as diff --git a/site/content/arangodb/3.13/aql/graphs/all-shortest-paths.md b/site/content/arangodb/4.0/aql/graph-queries/all-shortest-paths.md similarity index 100% rename from site/content/arangodb/3.13/aql/graphs/all-shortest-paths.md rename to site/content/arangodb/4.0/aql/graph-queries/all-shortest-paths.md diff --git a/site/content/arangodb/3.13/aql/graphs/k-paths.md b/site/content/arangodb/4.0/aql/graph-queries/k-paths.md similarity index 100% rename from site/content/arangodb/3.13/aql/graphs/k-paths.md rename to site/content/arangodb/4.0/aql/graph-queries/k-paths.md diff --git a/site/content/arangodb/3.13/aql/graphs/k-shortest-paths.md b/site/content/arangodb/4.0/aql/graph-queries/k-shortest-paths.md similarity index 100% rename from site/content/arangodb/3.13/aql/graphs/k-shortest-paths.md rename to site/content/arangodb/4.0/aql/graph-queries/k-shortest-paths.md diff --git a/site/content/arangodb/3.13/aql/graphs/shortest-path.md b/site/content/arangodb/4.0/aql/graph-queries/shortest-path.md similarity index 100% rename from site/content/arangodb/3.13/aql/graphs/shortest-path.md rename to site/content/arangodb/4.0/aql/graph-queries/shortest-path.md diff --git a/site/content/arangodb/3.13/aql/graphs/traversals-explained.md b/site/content/arangodb/4.0/aql/graph-queries/traversals-explained.md similarity index 100% rename from site/content/arangodb/3.13/aql/graphs/traversals-explained.md rename to site/content/arangodb/4.0/aql/graph-queries/traversals-explained.md diff --git a/site/content/arangodb/3.13/aql/graphs/traversals.md b/site/content/arangodb/4.0/aql/graph-queries/traversals.md similarity index 99% rename from site/content/arangodb/3.13/aql/graphs/traversals.md rename to site/content/arangodb/4.0/aql/graph-queries/traversals.md index 2fae9b37b5..6e3d6ac0a8 100644 --- a/site/content/arangodb/3.13/aql/graphs/traversals.md +++ b/site/content/arangodb/4.0/aql/graph-queries/traversals.md @@ -218,7 +218,7 @@ versus the whole document. <small>Introduced in v3.12.1</small> You can provide index hints for traversals to let the optimizer prefer -the [vertex-centric indexes](../../index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md) +the [vertex-centric indexes](../../indexes-and-search/indexing/working-with-indexes/vertex-centric-indexes.md) you specify over the regular edge index. This is useful for cases where the selectively estimate of the edge index diff --git a/site/content/arangodb/3.13/aql/high-level-operations/_index.md b/site/content/arangodb/4.0/aql/high-level-operations/_index.md similarity index 100% rename from site/content/arangodb/3.13/aql/high-level-operations/_index.md rename to site/content/arangodb/4.0/aql/high-level-operations/_index.md diff --git a/site/content/arangodb/3.13/aql/high-level-operations/collect.md b/site/content/arangodb/4.0/aql/high-level-operations/collect.md similarity index 100% rename from site/content/arangodb/3.13/aql/high-level-operations/collect.md rename to site/content/arangodb/4.0/aql/high-level-operations/collect.md diff --git a/site/content/arangodb/3.13/aql/high-level-operations/filter.md b/site/content/arangodb/4.0/aql/high-level-operations/filter.md similarity index 100% rename from site/content/arangodb/3.13/aql/high-level-operations/filter.md rename to site/content/arangodb/4.0/aql/high-level-operations/filter.md diff --git a/site/content/arangodb/3.13/aql/high-level-operations/for.md b/site/content/arangodb/4.0/aql/high-level-operations/for.md similarity index 95% rename from site/content/arangodb/3.13/aql/high-level-operations/for.md rename to site/content/arangodb/4.0/aql/high-level-operations/for.md index e35306ea00..d9e1c4a502 100644 --- a/site/content/arangodb/3.13/aql/high-level-operations/for.md +++ b/site/content/arangodb/4.0/aql/high-level-operations/for.md @@ -12,7 +12,7 @@ The general syntax for iterating over collections and arrays is: <pre><code>FOR <em>variableName</em> IN <em>expression</em></code></pre> -There is also a special variant for [graph traversals](../graphs/traversals.md): +There is also a special variant for [graph traversals](../graph-queries/traversals.md): <pre><code>FOR <em>nodeVariableName</em> [, <em>edgeVariableName</em> [, <em>pathVariableName</em> ] ] IN <em>traversalExpression</em></code></pre> @@ -218,7 +218,7 @@ there are a few corner cases where it can make sense: {{< info >}} Starting with version 3.10, `maxProjections` can be used in -[Graph Traversals](../graphs/traversals.md#working-with-named-graphs). +[Graph Traversals](../graph-queries/traversals.md#working-with-named-graphs). {{< /info >}} ### `useCache` @@ -247,7 +247,7 @@ cache cannot be used (i.e. because the query's filter condition does not contain equality lookups for all index attributes). It cannot be used for `FOR` operations that iterate over Views or perform graph traversals. -Also see [Caching of index values](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values). +Also see [Caching of index values](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values). ### `lookahead` @@ -258,4 +258,4 @@ index hint for tweaking performance: FOR … IN … OPTIONS { lookahead: 32 } ``` -See [Multi-dimensional indexes](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md#lookahead-index-hint). +See [Multi-dimensional indexes](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md#lookahead-index-hint). diff --git a/site/content/arangodb/3.13/aql/high-level-operations/insert.md b/site/content/arangodb/4.0/aql/high-level-operations/insert.md similarity index 100% rename from site/content/arangodb/3.13/aql/high-level-operations/insert.md rename to site/content/arangodb/4.0/aql/high-level-operations/insert.md diff --git a/site/content/arangodb/3.13/aql/high-level-operations/let.md b/site/content/arangodb/4.0/aql/high-level-operations/let.md similarity index 100% rename from site/content/arangodb/3.13/aql/high-level-operations/let.md rename to site/content/arangodb/4.0/aql/high-level-operations/let.md diff --git a/site/content/arangodb/3.13/aql/high-level-operations/limit.md b/site/content/arangodb/4.0/aql/high-level-operations/limit.md similarity index 100% rename from site/content/arangodb/3.13/aql/high-level-operations/limit.md rename to site/content/arangodb/4.0/aql/high-level-operations/limit.md diff --git a/site/content/arangodb/3.13/aql/high-level-operations/remove.md b/site/content/arangodb/4.0/aql/high-level-operations/remove.md similarity index 100% rename from site/content/arangodb/3.13/aql/high-level-operations/remove.md rename to site/content/arangodb/4.0/aql/high-level-operations/remove.md diff --git a/site/content/arangodb/3.13/aql/high-level-operations/replace.md b/site/content/arangodb/4.0/aql/high-level-operations/replace.md similarity index 100% rename from site/content/arangodb/3.13/aql/high-level-operations/replace.md rename to site/content/arangodb/4.0/aql/high-level-operations/replace.md diff --git a/site/content/arangodb/3.13/aql/high-level-operations/return.md b/site/content/arangodb/4.0/aql/high-level-operations/return.md similarity index 100% rename from site/content/arangodb/3.13/aql/high-level-operations/return.md rename to site/content/arangodb/4.0/aql/high-level-operations/return.md diff --git a/site/content/arangodb/3.13/aql/high-level-operations/search.md b/site/content/arangodb/4.0/aql/high-level-operations/search.md similarity index 91% rename from site/content/arangodb/3.13/aql/high-level-operations/search.md rename to site/content/arangodb/4.0/aql/high-level-operations/search.md index 44a27234e5..1b941fa41d 100644 --- a/site/content/arangodb/3.13/aql/high-level-operations/search.md +++ b/site/content/arangodb/4.0/aql/high-level-operations/search.md @@ -26,8 +26,8 @@ The optional `SEARCH` operation provides the capabilities to: - sort the result set based on how closely each document matched the search conditions -See [`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) and -[`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md) on how to set up Views. +See [`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) and +[`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md) on how to set up Views. ## Syntax @@ -121,9 +121,9 @@ FOR doc IN viewName The alphabetical order of characters is not taken into account by ArangoSearch, i.e. range queries in SEARCH operations against Views will not follow the language rules as per the defined Analyzer locale (except for the -[`collation` Analyzer](../../index-and-search/analyzers.md#collation)) nor the server language +[`collation` Analyzer](../../indexes-and-search/analyzers.md#collation)) nor the server language (startup option `--default-language`)! -Also see [Known Issues](../../release-notes/version-3.13/known-issues-in-3-13.md#arangosearch). +Also see [Known Issues](../../release-notes/version-4.0/known-issues-in-4-0.md#arangosearch). {{< /warning >}} ### Array comparison operators @@ -163,7 +163,7 @@ different outside of `SEARCH`, where `IN` needs to be followed by an array. ### Question mark operator You can use the [Question mark operator](../operators.md#question-mark-operator) -to perform [Nested searches with ArangoSearch](../../index-and-search/arangosearch/nested-search.md) +to perform [Nested searches with ArangoSearch](../../indexes-and-search/arangosearch/nested-search.md) : ```aql @@ -175,9 +175,9 @@ FOR doc IN myView It allows you to match nested objects in arrays that satisfy multiple conditions each, and optionally define how often these conditions should be fulfilled for the entire array. You need to configure the View specifically for this type of -search using the `nested` property in [`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) -or in the definition of [Inverted Indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search) -that you can add to [`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md). +search using the `nested` property in [`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +or in the definition of [Inverted Indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search) +that you can add to [`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md). ## Handling of non-indexed fields @@ -233,7 +233,7 @@ FOR doc IN myView ``` You can use the special `includeAllFields` -[`arangosearch` View property](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +[`arangosearch` View property](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) to index all (sub-)attributes of the source documents if desired. ## `SEARCH` with `SORT` @@ -249,7 +249,7 @@ FOR doc IN viewName ``` If the (left-most) fields and their sorting directions match up with the -[primary sort order](../../index-and-search/arangosearch/performance.md#primary-sort-order) definition +[primary sort order](../../indexes-and-search/arangosearch/performance.md#primary-sort-order) definition of the View then the `SORT` operation is optimized away. Apart from simple sorting, it is possible to sort the matched View documents by @@ -317,7 +317,7 @@ search criteria get optimized: - `"none"`: search the index without optimizing the conditions. <!-- Internal only: nodnf, noneg --> -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md#condition-optimization-options) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md#condition-optimization-options) for an example. ### `countApproximate` @@ -333,7 +333,7 @@ You can set it to one of the following values: only (e.g. `SEARCH doc.field == "value"`), the usual eventual consistency of Views aside. -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md#count-approximation) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md#count-approximation) for an example. ### `parallelism` diff --git a/site/content/arangodb/3.13/aql/high-level-operations/sort.md b/site/content/arangodb/4.0/aql/high-level-operations/sort.md similarity index 100% rename from site/content/arangodb/3.13/aql/high-level-operations/sort.md rename to site/content/arangodb/4.0/aql/high-level-operations/sort.md diff --git a/site/content/arangodb/3.13/aql/high-level-operations/update.md b/site/content/arangodb/4.0/aql/high-level-operations/update.md similarity index 100% rename from site/content/arangodb/3.13/aql/high-level-operations/update.md rename to site/content/arangodb/4.0/aql/high-level-operations/update.md diff --git a/site/content/arangodb/3.13/aql/high-level-operations/upsert.md b/site/content/arangodb/4.0/aql/high-level-operations/upsert.md similarity index 100% rename from site/content/arangodb/3.13/aql/high-level-operations/upsert.md rename to site/content/arangodb/4.0/aql/high-level-operations/upsert.md diff --git a/site/content/arangodb/3.13/aql/high-level-operations/window.md b/site/content/arangodb/4.0/aql/high-level-operations/window.md similarity index 100% rename from site/content/arangodb/3.13/aql/high-level-operations/window.md rename to site/content/arangodb/4.0/aql/high-level-operations/window.md diff --git a/site/content/arangodb/3.13/aql/high-level-operations/with.md b/site/content/arangodb/4.0/aql/high-level-operations/with.md similarity index 97% rename from site/content/arangodb/3.13/aql/high-level-operations/with.md rename to site/content/arangodb/4.0/aql/high-level-operations/with.md index 7d0eff0888..581cd37a3f 100644 --- a/site/content/arangodb/3.13/aql/high-level-operations/with.md +++ b/site/content/arangodb/4.0/aql/high-level-operations/with.md @@ -52,7 +52,7 @@ involved collections. Using named graphs in traversals (`GRAPH "graph-name"`) does not require it either, assuming that all nodes are in collections that are part of the graph, as enforced by the [Graph API](../../develop/http-api/graphs/named-graphs.md). That means, it is only necessary for traversals using anonymous graphs / -[collection sets](../graphs/traversals.md#working-with-collection-sets). +[collection sets](../graph-queries/traversals.md#working-with-collection-sets). The following example query specifies an edge collection `usersHaveManagers` to perform a graph traversal. It is the only explicitly specified collection in diff --git a/site/content/arangodb/3.13/aql/how-to-invoke-aql/_index.md b/site/content/arangodb/4.0/aql/how-to-invoke-aql/_index.md similarity index 100% rename from site/content/arangodb/3.13/aql/how-to-invoke-aql/_index.md rename to site/content/arangodb/4.0/aql/how-to-invoke-aql/_index.md diff --git a/site/content/arangodb/3.13/aql/how-to-invoke-aql/with-arangosh.md b/site/content/arangodb/4.0/aql/how-to-invoke-aql/with-arangosh.md similarity index 100% rename from site/content/arangodb/3.13/aql/how-to-invoke-aql/with-arangosh.md rename to site/content/arangodb/4.0/aql/how-to-invoke-aql/with-arangosh.md diff --git a/site/content/arangodb/3.13/aql/how-to-invoke-aql/with-the-web-interface.md b/site/content/arangodb/4.0/aql/how-to-invoke-aql/with-the-web-interface.md similarity index 100% rename from site/content/arangodb/3.13/aql/how-to-invoke-aql/with-the-web-interface.md rename to site/content/arangodb/4.0/aql/how-to-invoke-aql/with-the-web-interface.md diff --git a/site/content/arangodb/3.13/aql/operators.md b/site/content/arangodb/4.0/aql/operators.md similarity index 99% rename from site/content/arangodb/3.13/aql/operators.md rename to site/content/arangodb/4.0/aql/operators.md index d925fc226d..4088ea013f 100644 --- a/site/content/arangodb/3.13/aql/operators.md +++ b/site/content/arangodb/4.0/aql/operators.md @@ -728,8 +728,8 @@ surrounding length check. The following table compares both variants: {.fixed} The question mark operator can be used for nested search: -- [Nested search with ArangoSearch](../index-and-search/arangosearch/nested-search.md) using Views -- Nested search using [Inverted indexes](../index-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search) +- [Nested search with ArangoSearch](../indexes-and-search/arangosearch/nested-search.md) using Views +- Nested search using [Inverted indexes](../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search) ### Array destructuring diff --git a/site/content/arangodb/3.13/aql/user-defined-functions.md b/site/content/arangodb/4.0/aql/user-defined-functions.md similarity index 100% rename from site/content/arangodb/3.13/aql/user-defined-functions.md rename to site/content/arangodb/4.0/aql/user-defined-functions.md diff --git a/site/content/arangodb/3.13/components/_index.md b/site/content/arangodb/4.0/components/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/_index.md rename to site/content/arangodb/4.0/components/_index.md diff --git a/site/content/arangodb/3.13/components/arangodb-server/_index.md b/site/content/arangodb/4.0/components/arangodb-server/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/arangodb-server/_index.md rename to site/content/arangodb/4.0/components/arangodb-server/_index.md diff --git a/site/content/arangodb/3.13/components/arangodb-server/environment-variables.md b/site/content/arangodb/4.0/components/arangodb-server/environment-variables.md similarity index 98% rename from site/content/arangodb/3.13/components/arangodb-server/environment-variables.md rename to site/content/arangodb/4.0/components/arangodb-server/environment-variables.md index 382b2a5168..887f7b030f 100644 --- a/site/content/arangodb/3.13/components/arangodb-server/environment-variables.md +++ b/site/content/arangodb/4.0/components/arangodb-server/environment-variables.md @@ -100,7 +100,7 @@ description: >- - `IRESEARCH_TEXT_STOPWORD_PATH` Path to a directory with stop word files for - [ArangoSearch Text Analyzers](../../index-and-search/analyzers.md#text). + [ArangoSearch Text Analyzers](../../indexes-and-search/analyzers.md#text). <!-- ARANGODB_CONFIG_PATH, ICU_DATA, ICU_DATA_LEGACY, ... (TRI_GETENV, iresearch::getenv) --> diff --git a/site/content/arangodb/3.13/components/arangodb-server/options.md b/site/content/arangodb/4.0/components/arangodb-server/options.md similarity index 100% rename from site/content/arangodb/3.13/components/arangodb-server/options.md rename to site/content/arangodb/4.0/components/arangodb-server/options.md diff --git a/site/content/arangodb/3.13/components/arangodb-server/storage-engine.md b/site/content/arangodb/4.0/components/arangodb-server/storage-engine.md similarity index 100% rename from site/content/arangodb/3.13/components/arangodb-server/storage-engine.md rename to site/content/arangodb/4.0/components/arangodb-server/storage-engine.md diff --git a/site/content/arangodb/3.13/components/tools/_index.md b/site/content/arangodb/4.0/components/tools/_index.md similarity index 94% rename from site/content/arangodb/3.13/components/tools/_index.md rename to site/content/arangodb/4.0/components/tools/_index.md index 318e0379eb..a3b1311828 100644 --- a/site/content/arangodb/3.13/components/tools/_index.md +++ b/site/content/arangodb/4.0/components/tools/_index.md @@ -32,4 +32,4 @@ Additional tools which are available separately: | [Foxx CLI](foxx-cli/_index.md) | Command line tool for managing and developing Foxx services | [kube-arangodb](../../deploy/kubernetes.md) | Operators to manage Kubernetes deployments | [oasisctl](../../../../amp/oasisctl/_index.md) | Command-line tool for managing the Arango Managed Platform (AMP) -| [ArangoDB Datasets](arango-datasets.md) | A Python package for loading sample datasets into ArangoDB +| [ArangoDB Datasets](../../../../ecosystem/arango-datasets.md) | A Python package for loading sample datasets into ArangoDB diff --git a/site/content/arangodb/3.13/components/tools/arangobackup/_index.md b/site/content/arangodb/4.0/components/tools/arangobackup/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangobackup/_index.md rename to site/content/arangodb/4.0/components/tools/arangobackup/_index.md diff --git a/site/content/arangodb/3.13/components/tools/arangobackup/examples.md b/site/content/arangodb/4.0/components/tools/arangobackup/examples.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangobackup/examples.md rename to site/content/arangodb/4.0/components/tools/arangobackup/examples.md diff --git a/site/content/arangodb/3.13/components/tools/arangobackup/options.md b/site/content/arangodb/4.0/components/tools/arangobackup/options.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangobackup/options.md rename to site/content/arangodb/4.0/components/tools/arangobackup/options.md diff --git a/site/content/arangodb/3.13/components/tools/arangobench/_index.md b/site/content/arangodb/4.0/components/tools/arangobench/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangobench/_index.md rename to site/content/arangodb/4.0/components/tools/arangobench/_index.md diff --git a/site/content/arangodb/3.13/components/tools/arangobench/options.md b/site/content/arangodb/4.0/components/tools/arangobench/options.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangobench/options.md rename to site/content/arangodb/4.0/components/tools/arangobench/options.md diff --git a/site/content/arangodb/3.13/components/tools/arangodb-shell/_index.md b/site/content/arangodb/4.0/components/tools/arangodb-shell/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangodb-shell/_index.md rename to site/content/arangodb/4.0/components/tools/arangodb-shell/_index.md diff --git a/site/content/arangodb/3.13/components/tools/arangodb-shell/details.md b/site/content/arangodb/4.0/components/tools/arangodb-shell/details.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangodb-shell/details.md rename to site/content/arangodb/4.0/components/tools/arangodb-shell/details.md diff --git a/site/content/arangodb/3.13/components/tools/arangodb-shell/examples.md b/site/content/arangodb/4.0/components/tools/arangodb-shell/examples.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangodb-shell/examples.md rename to site/content/arangodb/4.0/components/tools/arangodb-shell/examples.md diff --git a/site/content/arangodb/3.13/components/tools/arangodb-shell/options.md b/site/content/arangodb/4.0/components/tools/arangodb-shell/options.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangodb-shell/options.md rename to site/content/arangodb/4.0/components/tools/arangodb-shell/options.md diff --git a/site/content/arangodb/3.13/components/tools/arangodb-starter/_index.md b/site/content/arangodb/4.0/components/tools/arangodb-starter/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangodb-starter/_index.md rename to site/content/arangodb/4.0/components/tools/arangodb-starter/_index.md diff --git a/site/content/arangodb/3.13/components/tools/arangodb-starter/architecture.md b/site/content/arangodb/4.0/components/tools/arangodb-starter/architecture.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangodb-starter/architecture.md rename to site/content/arangodb/4.0/components/tools/arangodb-starter/architecture.md diff --git a/site/content/arangodb/3.13/components/tools/arangodb-starter/options.md b/site/content/arangodb/4.0/components/tools/arangodb-starter/options.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangodb-starter/options.md rename to site/content/arangodb/4.0/components/tools/arangodb-starter/options.md diff --git a/site/content/arangodb/3.13/components/tools/arangodb-starter/security.md b/site/content/arangodb/4.0/components/tools/arangodb-starter/security.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangodb-starter/security.md rename to site/content/arangodb/4.0/components/tools/arangodb-starter/security.md diff --git a/site/content/arangodb/3.13/components/tools/arangodump/_index.md b/site/content/arangodb/4.0/components/tools/arangodump/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangodump/_index.md rename to site/content/arangodb/4.0/components/tools/arangodump/_index.md diff --git a/site/content/arangodb/3.13/components/tools/arangodump/examples.md b/site/content/arangodb/4.0/components/tools/arangodump/examples.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangodump/examples.md rename to site/content/arangodb/4.0/components/tools/arangodump/examples.md diff --git a/site/content/arangodb/3.13/components/tools/arangodump/limitations.md b/site/content/arangodb/4.0/components/tools/arangodump/limitations.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangodump/limitations.md rename to site/content/arangodb/4.0/components/tools/arangodump/limitations.md diff --git a/site/content/arangodb/3.13/components/tools/arangodump/maskings.md b/site/content/arangodb/4.0/components/tools/arangodump/maskings.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangodump/maskings.md rename to site/content/arangodb/4.0/components/tools/arangodump/maskings.md diff --git a/site/content/arangodb/3.13/components/tools/arangodump/options.md b/site/content/arangodb/4.0/components/tools/arangodump/options.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangodump/options.md rename to site/content/arangodb/4.0/components/tools/arangodump/options.md diff --git a/site/content/arangodb/3.13/components/tools/arangoexport/_index.md b/site/content/arangodb/4.0/components/tools/arangoexport/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangoexport/_index.md rename to site/content/arangodb/4.0/components/tools/arangoexport/_index.md diff --git a/site/content/arangodb/3.13/components/tools/arangoexport/examples.md b/site/content/arangodb/4.0/components/tools/arangoexport/examples.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangoexport/examples.md rename to site/content/arangodb/4.0/components/tools/arangoexport/examples.md diff --git a/site/content/arangodb/3.13/components/tools/arangoexport/options.md b/site/content/arangodb/4.0/components/tools/arangoexport/options.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangoexport/options.md rename to site/content/arangodb/4.0/components/tools/arangoexport/options.md diff --git a/site/content/arangodb/3.13/components/tools/arangoimport/_index.md b/site/content/arangodb/4.0/components/tools/arangoimport/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangoimport/_index.md rename to site/content/arangodb/4.0/components/tools/arangoimport/_index.md diff --git a/site/content/arangodb/3.13/components/tools/arangoimport/details.md b/site/content/arangodb/4.0/components/tools/arangoimport/details.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangoimport/details.md rename to site/content/arangodb/4.0/components/tools/arangoimport/details.md diff --git a/site/content/arangodb/3.13/components/tools/arangoimport/examples-csv.md b/site/content/arangodb/4.0/components/tools/arangoimport/examples-csv.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangoimport/examples-csv.md rename to site/content/arangodb/4.0/components/tools/arangoimport/examples-csv.md diff --git a/site/content/arangodb/3.13/components/tools/arangoimport/examples-json.md b/site/content/arangodb/4.0/components/tools/arangoimport/examples-json.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangoimport/examples-json.md rename to site/content/arangodb/4.0/components/tools/arangoimport/examples-json.md diff --git a/site/content/arangodb/3.13/components/tools/arangoimport/options.md b/site/content/arangodb/4.0/components/tools/arangoimport/options.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangoimport/options.md rename to site/content/arangodb/4.0/components/tools/arangoimport/options.md diff --git a/site/content/arangodb/3.13/components/tools/arangoinspect/_index.md b/site/content/arangodb/4.0/components/tools/arangoinspect/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangoinspect/_index.md rename to site/content/arangodb/4.0/components/tools/arangoinspect/_index.md diff --git a/site/content/arangodb/3.13/components/tools/arangoinspect/examples.md b/site/content/arangodb/4.0/components/tools/arangoinspect/examples.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangoinspect/examples.md rename to site/content/arangodb/4.0/components/tools/arangoinspect/examples.md diff --git a/site/content/arangodb/3.13/components/tools/arangoinspect/options.md b/site/content/arangodb/4.0/components/tools/arangoinspect/options.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangoinspect/options.md rename to site/content/arangodb/4.0/components/tools/arangoinspect/options.md diff --git a/site/content/arangodb/3.13/components/tools/arangorestore/_index.md b/site/content/arangodb/4.0/components/tools/arangorestore/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangorestore/_index.md rename to site/content/arangodb/4.0/components/tools/arangorestore/_index.md diff --git a/site/content/arangodb/3.13/components/tools/arangorestore/examples.md b/site/content/arangodb/4.0/components/tools/arangorestore/examples.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangorestore/examples.md rename to site/content/arangodb/4.0/components/tools/arangorestore/examples.md diff --git a/site/content/arangodb/3.13/components/tools/arangorestore/options.md b/site/content/arangodb/4.0/components/tools/arangorestore/options.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangorestore/options.md rename to site/content/arangodb/4.0/components/tools/arangorestore/options.md diff --git a/site/content/arangodb/3.13/components/tools/arangovpack/_index.md b/site/content/arangodb/4.0/components/tools/arangovpack/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangovpack/_index.md rename to site/content/arangodb/4.0/components/tools/arangovpack/_index.md diff --git a/site/content/arangodb/3.13/components/tools/arangovpack/options.md b/site/content/arangodb/4.0/components/tools/arangovpack/options.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/arangovpack/options.md rename to site/content/arangodb/4.0/components/tools/arangovpack/options.md diff --git a/site/content/arangodb/3.13/components/tools/foxx-cli/_index.md b/site/content/arangodb/4.0/components/tools/foxx-cli/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/foxx-cli/_index.md rename to site/content/arangodb/4.0/components/tools/foxx-cli/_index.md diff --git a/site/content/arangodb/3.13/components/tools/foxx-cli/details.md b/site/content/arangodb/4.0/components/tools/foxx-cli/details.md similarity index 100% rename from site/content/arangodb/3.13/components/tools/foxx-cli/details.md rename to site/content/arangodb/4.0/components/tools/foxx-cli/details.md diff --git a/site/content/arangodb/3.13/components/web-interface/_index.md b/site/content/arangodb/4.0/components/web-interface/_index.md similarity index 100% rename from site/content/arangodb/3.13/components/web-interface/_index.md rename to site/content/arangodb/4.0/components/web-interface/_index.md diff --git a/site/content/arangodb/3.13/components/web-interface/cluster.md b/site/content/arangodb/4.0/components/web-interface/cluster.md similarity index 100% rename from site/content/arangodb/3.13/components/web-interface/cluster.md rename to site/content/arangodb/4.0/components/web-interface/cluster.md diff --git a/site/content/arangodb/3.13/components/web-interface/collections.md b/site/content/arangodb/4.0/components/web-interface/collections.md similarity index 100% rename from site/content/arangodb/3.13/components/web-interface/collections.md rename to site/content/arangodb/4.0/components/web-interface/collections.md diff --git a/site/content/arangodb/3.13/components/web-interface/dashboard.md b/site/content/arangodb/4.0/components/web-interface/dashboard.md similarity index 100% rename from site/content/arangodb/3.13/components/web-interface/dashboard.md rename to site/content/arangodb/4.0/components/web-interface/dashboard.md diff --git a/site/content/arangodb/3.13/components/web-interface/document.md b/site/content/arangodb/4.0/components/web-interface/document.md similarity index 100% rename from site/content/arangodb/3.13/components/web-interface/document.md rename to site/content/arangodb/4.0/components/web-interface/document.md diff --git a/site/content/arangodb/3.13/components/web-interface/graphs.md b/site/content/arangodb/4.0/components/web-interface/graphs.md similarity index 100% rename from site/content/arangodb/3.13/components/web-interface/graphs.md rename to site/content/arangodb/4.0/components/web-interface/graphs.md diff --git a/site/content/arangodb/3.13/components/web-interface/logs.md b/site/content/arangodb/4.0/components/web-interface/logs.md similarity index 100% rename from site/content/arangodb/3.13/components/web-interface/logs.md rename to site/content/arangodb/4.0/components/web-interface/logs.md diff --git a/site/content/arangodb/3.13/components/web-interface/queries.md b/site/content/arangodb/4.0/components/web-interface/queries.md similarity index 100% rename from site/content/arangodb/3.13/components/web-interface/queries.md rename to site/content/arangodb/4.0/components/web-interface/queries.md diff --git a/site/content/arangodb/3.13/components/web-interface/services.md b/site/content/arangodb/4.0/components/web-interface/services.md similarity index 100% rename from site/content/arangodb/3.13/components/web-interface/services.md rename to site/content/arangodb/4.0/components/web-interface/services.md diff --git a/site/content/arangodb/3.13/components/web-interface/users.md b/site/content/arangodb/4.0/components/web-interface/users.md similarity index 100% rename from site/content/arangodb/3.13/components/web-interface/users.md rename to site/content/arangodb/4.0/components/web-interface/users.md diff --git a/site/content/arangodb/3.13/concepts/_index.md b/site/content/arangodb/4.0/concepts/_index.md similarity index 100% rename from site/content/arangodb/3.13/concepts/_index.md rename to site/content/arangodb/4.0/concepts/_index.md diff --git a/site/content/arangodb/3.13/concepts/data-models.md b/site/content/arangodb/4.0/concepts/data-models.md similarity index 100% rename from site/content/arangodb/3.13/concepts/data-models.md rename to site/content/arangodb/4.0/concepts/data-models.md diff --git a/site/content/arangodb/3.13/concepts/data-retrieval.md b/site/content/arangodb/4.0/concepts/data-retrieval.md similarity index 77% rename from site/content/arangodb/3.13/concepts/data-retrieval.md rename to site/content/arangodb/4.0/concepts/data-retrieval.md index 76dbbfe4e4..8958156773 100644 --- a/site/content/arangodb/3.13/concepts/data-retrieval.md +++ b/site/content/arangodb/4.0/concepts/data-retrieval.md @@ -17,8 +17,8 @@ collections. Queries are written in the [ArangoDB Query Language](../aql/_index. easily processable batches instead of one big hunk. **Indexes** are used to speed up queries. There are multiple types of indexes, -such as [persistent indexes](../index-and-search/indexing/working-with-indexes/persistent-indexes.md) and -[geo-spatial indexes](../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). +such as [persistent indexes](../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md) and +[geo-spatial indexes](../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md). **Views** are another type of index, primarily for full-text search. See -[ArangoSearch](../index-and-search/arangosearch/_index.md). +[ArangoSearch](../indexes-and-search/arangosearch/_index.md). diff --git a/site/content/arangodb/3.13/concepts/data-structure/_index.md b/site/content/arangodb/4.0/concepts/data-structure/_index.md similarity index 100% rename from site/content/arangodb/3.13/concepts/data-structure/_index.md rename to site/content/arangodb/4.0/concepts/data-structure/_index.md diff --git a/site/content/arangodb/3.13/concepts/data-structure/collections.md b/site/content/arangodb/4.0/concepts/data-structure/collections.md similarity index 100% rename from site/content/arangodb/3.13/concepts/data-structure/collections.md rename to site/content/arangodb/4.0/concepts/data-structure/collections.md diff --git a/site/content/arangodb/3.13/concepts/data-structure/databases.md b/site/content/arangodb/4.0/concepts/data-structure/databases.md similarity index 100% rename from site/content/arangodb/3.13/concepts/data-structure/databases.md rename to site/content/arangodb/4.0/concepts/data-structure/databases.md diff --git a/site/content/arangodb/3.13/concepts/data-structure/documents/_index.md b/site/content/arangodb/4.0/concepts/data-structure/documents/_index.md similarity index 100% rename from site/content/arangodb/3.13/concepts/data-structure/documents/_index.md rename to site/content/arangodb/4.0/concepts/data-structure/documents/_index.md diff --git a/site/content/arangodb/3.13/concepts/data-structure/documents/computed-values.md b/site/content/arangodb/4.0/concepts/data-structure/documents/computed-values.md similarity index 100% rename from site/content/arangodb/3.13/concepts/data-structure/documents/computed-values.md rename to site/content/arangodb/4.0/concepts/data-structure/documents/computed-values.md diff --git a/site/content/arangodb/3.13/concepts/data-structure/documents/schema-validation.md b/site/content/arangodb/4.0/concepts/data-structure/documents/schema-validation.md similarity index 100% rename from site/content/arangodb/3.13/concepts/data-structure/documents/schema-validation.md rename to site/content/arangodb/4.0/concepts/data-structure/documents/schema-validation.md diff --git a/site/content/arangodb/3.13/concepts/data-structure/views.md b/site/content/arangodb/4.0/concepts/data-structure/views.md similarity index 97% rename from site/content/arangodb/3.13/concepts/data-structure/views.md rename to site/content/arangodb/4.0/concepts/data-structure/views.md index b3d51cb52e..2c67dcf920 100644 --- a/site/content/arangodb/3.13/concepts/data-structure/views.md +++ b/site/content/arangodb/4.0/concepts/data-structure/views.md @@ -15,15 +15,15 @@ more collections. The transformation depends on the View type and the View configuration. Views are powered by ArangoDB's built-in search engine. -See [ArangoSearch](../../index-and-search/arangosearch/_index.md) for details. +See [ArangoSearch](../../indexes-and-search/arangosearch/_index.md) for details. ## View types Available View types: -- The traditional [`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) to which +- The traditional [`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) to which you link collections to. -- The modern [`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md) +- The modern [`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md) that can reference inverted indexes that are defined on the collection-level. You need to specify the type when you create the View. @@ -126,8 +126,8 @@ The examples are limited to the basic usage of the View interfaces. See the following for more details about the different View types and their configuration: -- [`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) -- [`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md) +- [`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) +- [`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md) ### Create a View diff --git a/site/content/arangodb/3.13/deploy/_index.md b/site/content/arangodb/4.0/deploy/_index.md similarity index 100% rename from site/content/arangodb/3.13/deploy/_index.md rename to site/content/arangodb/4.0/deploy/_index.md diff --git a/site/content/arangodb/3.13/deploy/architecture/_index.md b/site/content/arangodb/4.0/deploy/architecture/_index.md similarity index 100% rename from site/content/arangodb/3.13/deploy/architecture/_index.md rename to site/content/arangodb/4.0/deploy/architecture/_index.md diff --git a/site/content/arangodb/3.13/deploy/architecture/data-sharding.md b/site/content/arangodb/4.0/deploy/architecture/data-sharding.md similarity index 100% rename from site/content/arangodb/3.13/deploy/architecture/data-sharding.md rename to site/content/arangodb/4.0/deploy/architecture/data-sharding.md diff --git a/site/content/arangodb/3.13/deploy/architecture/replication.md b/site/content/arangodb/4.0/deploy/architecture/replication.md similarity index 100% rename from site/content/arangodb/3.13/deploy/architecture/replication.md rename to site/content/arangodb/4.0/deploy/architecture/replication.md diff --git a/site/content/arangodb/3.13/deploy/architecture/scalability.md b/site/content/arangodb/4.0/deploy/architecture/scalability.md similarity index 100% rename from site/content/arangodb/3.13/deploy/architecture/scalability.md rename to site/content/arangodb/4.0/deploy/architecture/scalability.md diff --git a/site/content/arangodb/3.13/deploy/cluster/_index.md b/site/content/arangodb/4.0/deploy/cluster/_index.md similarity index 100% rename from site/content/arangodb/3.13/deploy/cluster/_index.md rename to site/content/arangodb/4.0/deploy/cluster/_index.md diff --git a/site/content/arangodb/3.13/deploy/cluster/administration.md b/site/content/arangodb/4.0/deploy/cluster/administration.md similarity index 100% rename from site/content/arangodb/3.13/deploy/cluster/administration.md rename to site/content/arangodb/4.0/deploy/cluster/administration.md diff --git a/site/content/arangodb/3.13/deploy/cluster/deployment/_index.md b/site/content/arangodb/4.0/deploy/cluster/deployment/_index.md similarity index 100% rename from site/content/arangodb/3.13/deploy/cluster/deployment/_index.md rename to site/content/arangodb/4.0/deploy/cluster/deployment/_index.md diff --git a/site/content/arangodb/3.13/deploy/cluster/deployment/manual-start.md b/site/content/arangodb/4.0/deploy/cluster/deployment/manual-start.md similarity index 100% rename from site/content/arangodb/3.13/deploy/cluster/deployment/manual-start.md rename to site/content/arangodb/4.0/deploy/cluster/deployment/manual-start.md diff --git a/site/content/arangodb/3.13/deploy/cluster/deployment/using-the-arangodb-starter.md b/site/content/arangodb/4.0/deploy/cluster/deployment/using-the-arangodb-starter.md similarity index 100% rename from site/content/arangodb/3.13/deploy/cluster/deployment/using-the-arangodb-starter.md rename to site/content/arangodb/4.0/deploy/cluster/deployment/using-the-arangodb-starter.md diff --git a/site/content/arangodb/3.13/deploy/cluster/limitations.md b/site/content/arangodb/4.0/deploy/cluster/limitations.md similarity index 100% rename from site/content/arangodb/3.13/deploy/cluster/limitations.md rename to site/content/arangodb/4.0/deploy/cluster/limitations.md diff --git a/site/content/arangodb/3.13/deploy/in-the-cloud.md b/site/content/arangodb/4.0/deploy/in-the-cloud.md similarity index 100% rename from site/content/arangodb/3.13/deploy/in-the-cloud.md rename to site/content/arangodb/4.0/deploy/in-the-cloud.md diff --git a/site/content/arangodb/3.13/deploy/kubernetes.md b/site/content/arangodb/4.0/deploy/kubernetes.md similarity index 100% rename from site/content/arangodb/3.13/deploy/kubernetes.md rename to site/content/arangodb/4.0/deploy/kubernetes.md diff --git a/site/content/arangodb/3.13/deploy/oneshard.md b/site/content/arangodb/4.0/deploy/oneshard.md similarity index 100% rename from site/content/arangodb/3.13/deploy/oneshard.md rename to site/content/arangodb/4.0/deploy/oneshard.md diff --git a/site/content/arangodb/3.13/deploy/production-checklist.md b/site/content/arangodb/4.0/deploy/production-checklist.md similarity index 100% rename from site/content/arangodb/3.13/deploy/production-checklist.md rename to site/content/arangodb/4.0/deploy/production-checklist.md diff --git a/site/content/arangodb/3.13/deploy/single-instance-vs-cluster.md b/site/content/arangodb/4.0/deploy/single-instance-vs-cluster.md similarity index 100% rename from site/content/arangodb/3.13/deploy/single-instance-vs-cluster.md rename to site/content/arangodb/4.0/deploy/single-instance-vs-cluster.md diff --git a/site/content/arangodb/3.13/deploy/single-instance/_index.md b/site/content/arangodb/4.0/deploy/single-instance/_index.md similarity index 100% rename from site/content/arangodb/3.13/deploy/single-instance/_index.md rename to site/content/arangodb/4.0/deploy/single-instance/_index.md diff --git a/site/content/arangodb/3.13/deploy/single-instance/manual-start.md b/site/content/arangodb/4.0/deploy/single-instance/manual-start.md similarity index 100% rename from site/content/arangodb/3.13/deploy/single-instance/manual-start.md rename to site/content/arangodb/4.0/deploy/single-instance/manual-start.md diff --git a/site/content/arangodb/3.13/deploy/single-instance/using-the-arangodb-starter.md b/site/content/arangodb/4.0/deploy/single-instance/using-the-arangodb-starter.md similarity index 100% rename from site/content/arangodb/3.13/deploy/single-instance/using-the-arangodb-starter.md rename to site/content/arangodb/4.0/deploy/single-instance/using-the-arangodb-starter.md diff --git a/site/content/arangodb/3.13/develop/_index.md b/site/content/arangodb/4.0/develop/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/_index.md rename to site/content/arangodb/4.0/develop/_index.md diff --git a/site/content/arangodb/3.13/develop/error-codes.md b/site/content/arangodb/4.0/develop/error-codes.md similarity index 100% rename from site/content/arangodb/3.13/develop/error-codes.md rename to site/content/arangodb/4.0/develop/error-codes.md diff --git a/site/content/arangodb/3.13/develop/exit-codes.md b/site/content/arangodb/4.0/develop/exit-codes.md similarity index 100% rename from site/content/arangodb/3.13/develop/exit-codes.md rename to site/content/arangodb/4.0/develop/exit-codes.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/_index.md b/site/content/arangodb/4.0/develop/foxx-microservices/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/_index.md rename to site/content/arangodb/4.0/develop/foxx-microservices/_index.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/deployment.md b/site/content/arangodb/4.0/develop/foxx-microservices/deployment.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/deployment.md rename to site/content/arangodb/4.0/develop/foxx-microservices/deployment.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/getting-started.md b/site/content/arangodb/4.0/develop/foxx-microservices/getting-started.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/getting-started.md rename to site/content/arangodb/4.0/develop/foxx-microservices/getting-started.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/_index.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/_index.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/_index.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/access-from-the-browser.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/access-from-the-browser.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/access-from-the-browser.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/access-from-the-browser.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/authentication-and-sessions.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/authentication-and-sessions.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/authentication-and-sessions.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/authentication-and-sessions.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/development-mode.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/development-mode.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/development-mode.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/development-mode.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/foxx-in-a-cluster.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/foxx-in-a-cluster.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/foxx-in-a-cluster.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/foxx-in-a-cluster.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/linking-services-together.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/linking-services-together.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/linking-services-together.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/linking-services-together.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/making-requests.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/making-requests.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/making-requests.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/making-requests.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/scripts-and-scheduling.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/scripts-and-scheduling.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/scripts-and-scheduling.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/scripts-and-scheduling.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/testing-foxx-services.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/testing-foxx-services.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/testing-foxx-services.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/testing-foxx-services.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/using-node-modules.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/using-node-modules.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/using-node-modules.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/using-node-modules.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/using-webpack-with-foxx.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/using-webpack-with-foxx.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/using-webpack-with-foxx.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/using-webpack-with-foxx.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/working-with-collections.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/working-with-collections.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/working-with-collections.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/working-with-collections.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/working-with-files.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/working-with-files.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/working-with-files.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/working-with-files.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/working-with-routers.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/working-with-routers.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/working-with-routers.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/working-with-routers.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/guides/writing-queries.md b/site/content/arangodb/4.0/develop/foxx-microservices/guides/writing-queries.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/guides/writing-queries.md rename to site/content/arangodb/4.0/develop/foxx-microservices/guides/writing-queries.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/_index.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/_index.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/_index.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/configuration.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/configuration.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/configuration.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/configuration.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/_index.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/related-modules/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/_index.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/related-modules/_index.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/authentication.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/related-modules/authentication.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/authentication.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/related-modules/authentication.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/graphql.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/related-modules/graphql.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/graphql.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/related-modules/graphql.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/related-modules/oauth-1-0a.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/oauth-2-0.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/related-modules/oauth-2-0.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/oauth-2-0.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/related-modules/oauth-2-0.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/queues.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/related-modules/queues.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/related-modules/queues.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/related-modules/queues.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/_index.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/routers/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/_index.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/routers/_index.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/endpoints.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/routers/endpoints.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/endpoints.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/routers/endpoints.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/middleware.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/routers/middleware.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/middleware.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/routers/middleware.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/request.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/routers/request.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/request.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/routers/request.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/response.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/routers/response.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/routers/response.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/routers/response.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/service-context.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/service-context.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/service-context.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/service-context.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/service-manifest.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/service-manifest.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/service-manifest.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/service-manifest.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/_index.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/_index.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/_index.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/session-storages/_index.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/session-storages/collection-storage.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/session-storages/jwt-storage.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/session-transports/_index.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/session-transports/cookie-transport.md diff --git a/site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md b/site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md similarity index 100% rename from site/content/arangodb/3.13/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md rename to site/content/arangodb/4.0/develop/foxx-microservices/reference/sessions-middleware/session-transports/header-transport.md diff --git a/site/content/arangodb/3.13/develop/http-api/_index.md b/site/content/arangodb/4.0/develop/http-api/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/_index.md rename to site/content/arangodb/4.0/develop/http-api/_index.md diff --git a/site/content/arangodb/3.13/develop/http-api/administration.md b/site/content/arangodb/4.0/develop/http-api/administration.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/administration.md rename to site/content/arangodb/4.0/develop/http-api/administration.md diff --git a/site/content/arangodb/3.13/develop/http-api/analyzers.md b/site/content/arangodb/4.0/develop/http-api/analyzers.md similarity index 99% rename from site/content/arangodb/3.13/develop/http-api/analyzers.md rename to site/content/arangodb/4.0/develop/http-api/analyzers.md index feb941feda..3010b67f25 100644 --- a/site/content/arangodb/3.13/develop/http-api/analyzers.md +++ b/site/content/arangodb/4.0/develop/http-api/analyzers.md @@ -9,7 +9,7 @@ description: >- The RESTful API for managing ArangoSearch Analyzers is accessible via the `/_api/analyzer` endpoint. -See the description of [Analyzers](../../index-and-search/analyzers.md) for an +See the description of [Analyzers](../../indexes-and-search/analyzers.md) for an introduction and the available types, properties and features. ## Create an Analyzer diff --git a/site/content/arangodb/3.13/develop/http-api/authentication.md b/site/content/arangodb/4.0/develop/http-api/authentication.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/authentication.md rename to site/content/arangodb/4.0/develop/http-api/authentication.md diff --git a/site/content/arangodb/3.13/develop/http-api/cluster.md b/site/content/arangodb/4.0/develop/http-api/cluster.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/cluster.md rename to site/content/arangodb/4.0/develop/http-api/cluster.md diff --git a/site/content/arangodb/3.13/develop/http-api/collections.md b/site/content/arangodb/4.0/develop/http-api/collections.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/collections.md rename to site/content/arangodb/4.0/develop/http-api/collections.md diff --git a/site/content/arangodb/3.13/develop/http-api/databases.md b/site/content/arangodb/4.0/develop/http-api/databases.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/databases.md rename to site/content/arangodb/4.0/develop/http-api/databases.md diff --git a/site/content/arangodb/3.13/develop/http-api/documents.md b/site/content/arangodb/4.0/develop/http-api/documents.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/documents.md rename to site/content/arangodb/4.0/develop/http-api/documents.md diff --git a/site/content/arangodb/3.13/develop/http-api/foxx.md b/site/content/arangodb/4.0/develop/http-api/foxx.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/foxx.md rename to site/content/arangodb/4.0/develop/http-api/foxx.md diff --git a/site/content/arangodb/3.13/develop/http-api/general-request-handling.md b/site/content/arangodb/4.0/develop/http-api/general-request-handling.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/general-request-handling.md rename to site/content/arangodb/4.0/develop/http-api/general-request-handling.md diff --git a/site/content/arangodb/3.13/develop/http-api/graphs/_index.md b/site/content/arangodb/4.0/develop/http-api/graphs/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/graphs/_index.md rename to site/content/arangodb/4.0/develop/http-api/graphs/_index.md diff --git a/site/content/arangodb/3.13/develop/http-api/graphs/edges.md b/site/content/arangodb/4.0/develop/http-api/graphs/edges.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/graphs/edges.md rename to site/content/arangodb/4.0/develop/http-api/graphs/edges.md diff --git a/site/content/arangodb/3.13/develop/http-api/graphs/named-graphs.md b/site/content/arangodb/4.0/develop/http-api/graphs/named-graphs.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/graphs/named-graphs.md rename to site/content/arangodb/4.0/develop/http-api/graphs/named-graphs.md diff --git a/site/content/arangodb/3.13/develop/http-api/hot-backups.md b/site/content/arangodb/4.0/develop/http-api/hot-backups.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/hot-backups.md rename to site/content/arangodb/4.0/develop/http-api/hot-backups.md diff --git a/site/content/arangodb/3.13/develop/http-api/import.md b/site/content/arangodb/4.0/develop/http-api/import.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/import.md rename to site/content/arangodb/4.0/develop/http-api/import.md diff --git a/site/content/arangodb/3.13/develop/http-api/indexes/_index.md b/site/content/arangodb/4.0/develop/http-api/indexes/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/indexes/_index.md rename to site/content/arangodb/4.0/develop/http-api/indexes/_index.md diff --git a/site/content/arangodb/3.13/develop/http-api/indexes/fulltext.md b/site/content/arangodb/4.0/develop/http-api/indexes/fulltext.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/indexes/fulltext.md rename to site/content/arangodb/4.0/develop/http-api/indexes/fulltext.md diff --git a/site/content/arangodb/3.13/develop/http-api/indexes/geo-spatial.md b/site/content/arangodb/4.0/develop/http-api/indexes/geo-spatial.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/indexes/geo-spatial.md rename to site/content/arangodb/4.0/develop/http-api/indexes/geo-spatial.md diff --git a/site/content/arangodb/3.13/develop/http-api/indexes/inverted.md b/site/content/arangodb/4.0/develop/http-api/indexes/inverted.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/indexes/inverted.md rename to site/content/arangodb/4.0/develop/http-api/indexes/inverted.md diff --git a/site/content/arangodb/3.13/develop/http-api/indexes/multi-dimensional.md b/site/content/arangodb/4.0/develop/http-api/indexes/multi-dimensional.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/indexes/multi-dimensional.md rename to site/content/arangodb/4.0/develop/http-api/indexes/multi-dimensional.md diff --git a/site/content/arangodb/3.13/develop/http-api/indexes/persistent.md b/site/content/arangodb/4.0/develop/http-api/indexes/persistent.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/indexes/persistent.md rename to site/content/arangodb/4.0/develop/http-api/indexes/persistent.md diff --git a/site/content/arangodb/3.13/develop/http-api/indexes/ttl.md b/site/content/arangodb/4.0/develop/http-api/indexes/ttl.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/indexes/ttl.md rename to site/content/arangodb/4.0/develop/http-api/indexes/ttl.md diff --git a/site/content/arangodb/3.13/develop/http-api/indexes/vector.md b/site/content/arangodb/4.0/develop/http-api/indexes/vector.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/indexes/vector.md rename to site/content/arangodb/4.0/develop/http-api/indexes/vector.md diff --git a/site/content/arangodb/3.13/develop/http-api/jobs.md b/site/content/arangodb/4.0/develop/http-api/jobs.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/jobs.md rename to site/content/arangodb/4.0/develop/http-api/jobs.md diff --git a/site/content/arangodb/3.13/develop/http-api/monitoring/_index.md b/site/content/arangodb/4.0/develop/http-api/monitoring/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/monitoring/_index.md rename to site/content/arangodb/4.0/develop/http-api/monitoring/_index.md diff --git a/site/content/arangodb/3.13/develop/http-api/monitoring/logs.md b/site/content/arangodb/4.0/develop/http-api/monitoring/logs.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/monitoring/logs.md rename to site/content/arangodb/4.0/develop/http-api/monitoring/logs.md diff --git a/site/content/arangodb/3.13/develop/http-api/monitoring/metrics.md b/site/content/arangodb/4.0/develop/http-api/monitoring/metrics.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/monitoring/metrics.md rename to site/content/arangodb/4.0/develop/http-api/monitoring/metrics.md diff --git a/site/content/arangodb/3.13/develop/http-api/monitoring/statistics.md b/site/content/arangodb/4.0/develop/http-api/monitoring/statistics.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/monitoring/statistics.md rename to site/content/arangodb/4.0/develop/http-api/monitoring/statistics.md diff --git a/site/content/arangodb/3.13/develop/http-api/queries/_index.md b/site/content/arangodb/4.0/develop/http-api/queries/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/queries/_index.md rename to site/content/arangodb/4.0/develop/http-api/queries/_index.md diff --git a/site/content/arangodb/3.13/develop/http-api/queries/aql-queries.md b/site/content/arangodb/4.0/develop/http-api/queries/aql-queries.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/queries/aql-queries.md rename to site/content/arangodb/4.0/develop/http-api/queries/aql-queries.md diff --git a/site/content/arangodb/3.13/develop/http-api/queries/aql-query-plan-cache.md b/site/content/arangodb/4.0/develop/http-api/queries/aql-query-plan-cache.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/queries/aql-query-plan-cache.md rename to site/content/arangodb/4.0/develop/http-api/queries/aql-query-plan-cache.md diff --git a/site/content/arangodb/3.13/develop/http-api/queries/aql-query-results-cache.md b/site/content/arangodb/4.0/develop/http-api/queries/aql-query-results-cache.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/queries/aql-query-results-cache.md rename to site/content/arangodb/4.0/develop/http-api/queries/aql-query-results-cache.md diff --git a/site/content/arangodb/3.13/develop/http-api/queries/user-defined-aql-functions.md b/site/content/arangodb/4.0/develop/http-api/queries/user-defined-aql-functions.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/queries/user-defined-aql-functions.md rename to site/content/arangodb/4.0/develop/http-api/queries/user-defined-aql-functions.md diff --git a/site/content/arangodb/3.13/develop/http-api/replication/_index.md b/site/content/arangodb/4.0/develop/http-api/replication/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/replication/_index.md rename to site/content/arangodb/4.0/develop/http-api/replication/_index.md diff --git a/site/content/arangodb/3.13/develop/http-api/replication/other-replication-commands.md b/site/content/arangodb/4.0/develop/http-api/replication/other-replication-commands.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/replication/other-replication-commands.md rename to site/content/arangodb/4.0/develop/http-api/replication/other-replication-commands.md diff --git a/site/content/arangodb/3.13/develop/http-api/replication/replication-applier.md b/site/content/arangodb/4.0/develop/http-api/replication/replication-applier.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/replication/replication-applier.md rename to site/content/arangodb/4.0/develop/http-api/replication/replication-applier.md diff --git a/site/content/arangodb/3.13/develop/http-api/replication/replication-dump.md b/site/content/arangodb/4.0/develop/http-api/replication/replication-dump.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/replication/replication-dump.md rename to site/content/arangodb/4.0/develop/http-api/replication/replication-dump.md diff --git a/site/content/arangodb/3.13/develop/http-api/replication/replication-logger.md b/site/content/arangodb/4.0/develop/http-api/replication/replication-logger.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/replication/replication-logger.md rename to site/content/arangodb/4.0/develop/http-api/replication/replication-logger.md diff --git a/site/content/arangodb/3.13/develop/http-api/replication/write-ahead-log.md b/site/content/arangodb/4.0/develop/http-api/replication/write-ahead-log.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/replication/write-ahead-log.md rename to site/content/arangodb/4.0/develop/http-api/replication/write-ahead-log.md diff --git a/site/content/arangodb/3.13/develop/http-api/security.md b/site/content/arangodb/4.0/develop/http-api/security.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/security.md rename to site/content/arangodb/4.0/develop/http-api/security.md diff --git a/site/content/arangodb/3.13/develop/http-api/tasks.md b/site/content/arangodb/4.0/develop/http-api/tasks.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/tasks.md rename to site/content/arangodb/4.0/develop/http-api/tasks.md diff --git a/site/content/arangodb/3.13/develop/http-api/transactions/_index.md b/site/content/arangodb/4.0/develop/http-api/transactions/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/transactions/_index.md rename to site/content/arangodb/4.0/develop/http-api/transactions/_index.md diff --git a/site/content/arangodb/3.13/develop/http-api/transactions/javascript-transactions.md b/site/content/arangodb/4.0/develop/http-api/transactions/javascript-transactions.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/transactions/javascript-transactions.md rename to site/content/arangodb/4.0/develop/http-api/transactions/javascript-transactions.md diff --git a/site/content/arangodb/3.13/develop/http-api/transactions/stream-transactions.md b/site/content/arangodb/4.0/develop/http-api/transactions/stream-transactions.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/transactions/stream-transactions.md rename to site/content/arangodb/4.0/develop/http-api/transactions/stream-transactions.md diff --git a/site/content/arangodb/3.13/develop/http-api/users.md b/site/content/arangodb/4.0/develop/http-api/users.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/users.md rename to site/content/arangodb/4.0/develop/http-api/users.md diff --git a/site/content/arangodb/3.13/develop/http-api/views/_index.md b/site/content/arangodb/4.0/develop/http-api/views/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/views/_index.md rename to site/content/arangodb/4.0/develop/http-api/views/_index.md diff --git a/site/content/arangodb/3.13/develop/http-api/views/arangosearch-views.md b/site/content/arangodb/4.0/develop/http-api/views/arangosearch-views.md similarity index 99% rename from site/content/arangodb/3.13/develop/http-api/views/arangosearch-views.md rename to site/content/arangodb/4.0/develop/http-api/views/arangosearch-views.md index 84fbb8d078..c8f8fd9dba 100644 --- a/site/content/arangodb/3.13/develop/http-api/views/arangosearch-views.md +++ b/site/content/arangodb/4.0/develop/http-api/views/arangosearch-views.md @@ -68,7 +68,7 @@ paths: } ``` - See [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + See [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -446,7 +446,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -918,7 +918,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -1334,7 +1334,7 @@ paths: } ``` - See [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + See [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object cleanupIntervalStep: @@ -1520,7 +1520,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -1846,7 +1846,7 @@ paths: } ``` - See [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + See [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object cleanupIntervalStep: @@ -2028,7 +2028,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: @@ -2395,7 +2395,7 @@ paths: description: | An object with the attribute keys being names of to be linked collections, and the link properties as attribute values. See - [`arangosearch` View Link Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) + [`arangosearch` View Link Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. type: object primarySort: diff --git a/site/content/arangodb/3.13/develop/http-api/views/search-alias-views.md b/site/content/arangodb/4.0/develop/http-api/views/search-alias-views.md similarity index 100% rename from site/content/arangodb/3.13/develop/http-api/views/search-alias-views.md rename to site/content/arangodb/4.0/develop/http-api/views/search-alias-views.md diff --git a/site/content/arangodb/3.13/develop/javascript-api/@arangodb/_index.md b/site/content/arangodb/4.0/develop/javascript-api/@arangodb/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/javascript-api/@arangodb/_index.md rename to site/content/arangodb/4.0/develop/javascript-api/@arangodb/_index.md diff --git a/site/content/arangodb/3.13/develop/javascript-api/@arangodb/collection-object.md b/site/content/arangodb/4.0/develop/javascript-api/@arangodb/collection-object.md similarity index 98% rename from site/content/arangodb/3.13/develop/javascript-api/@arangodb/collection-object.md rename to site/content/arangodb/4.0/develop/javascript-api/@arangodb/collection-object.md index c82b33039a..eeef951df2 100644 --- a/site/content/arangodb/3.13/develop/javascript-api/@arangodb/collection-object.md +++ b/site/content/arangodb/4.0/develop/javascript-api/@arangodb/collection-object.md @@ -170,7 +170,7 @@ in clusters. Loads suitable indexes of this collection into memory. -See [`collection.loadIndexesIntoMemory()`](../../../index-and-search/indexing/working-with-indexes/_index.md#load-indexes-into-memory). +See [`collection.loadIndexesIntoMemory()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#load-indexes-into-memory). ### `collection.name()` @@ -476,13 +476,13 @@ Returns the type of a collection. Possible values are: Creates an index if it doesn't exist already. -See [`collection.ensureIndex()`](../../../index-and-search/indexing/working-with-indexes/_index.md#creating-an-index). +See [`collection.ensureIndex()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#creating-an-index). ### `collection.indexes([withStats [, withHidden]])` Lists all indexes of the collection. -See [`collection.indexes()`](../../../index-and-search/indexing/working-with-indexes/_index.md#listing-all-indexes-of-a-collection). +See [`collection.indexes()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#listing-all-indexes-of-a-collection). ### `collection.getIndexes([withStats [, withHidden]])` @@ -492,13 +492,13 @@ Same as [`collection.indexes([withStats [, withHidden]])`](#collectionindexeswit Gets an index by identifier. -See [`collection.index()`](../../../index-and-search/indexing/working-with-indexes/_index.md#index-identifiers). +See [`collection.index()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#index-identifiers). ### `collection.dropIndex(index)` Drops an index by identifier. -See [`collection.dropIndex()`](../../../index-and-search/indexing/working-with-indexes/_index.md#dropping-an-index-via-a-collection-object). +See [`collection.dropIndex()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#dropping-an-index-via-a-collection-object). ## Documents diff --git a/site/content/arangodb/3.13/develop/javascript-api/@arangodb/cursor-object.md b/site/content/arangodb/4.0/develop/javascript-api/@arangodb/cursor-object.md similarity index 100% rename from site/content/arangodb/3.13/develop/javascript-api/@arangodb/cursor-object.md rename to site/content/arangodb/4.0/develop/javascript-api/@arangodb/cursor-object.md diff --git a/site/content/arangodb/3.13/develop/javascript-api/@arangodb/db-object.md b/site/content/arangodb/4.0/develop/javascript-api/@arangodb/db-object.md similarity index 98% rename from site/content/arangodb/3.13/develop/javascript-api/@arangodb/db-object.md rename to site/content/arangodb/4.0/develop/javascript-api/@arangodb/db-object.md index e900d5c0f4..d9d2dc1af7 100644 --- a/site/content/arangodb/3.13/develop/javascript-api/@arangodb/db-object.md +++ b/site/content/arangodb/4.0/develop/javascript-api/@arangodb/db-object.md @@ -1027,8 +1027,8 @@ supported View type. `properties` is an optional object containing View configuration specific to each View-type. -- [`arangosearch` View definition](../../../index-and-search/arangosearch/arangosearch-views-reference.md#view-definitionmodification) -- [`search-alias` View definition](../../../index-and-search/arangosearch/search-alias-views-reference.md#view-definition) +- [`arangosearch` View definition](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-definitionmodification) +- [`search-alias` View definition](../../../indexes-and-search/arangosearch/search-alias-views-reference.md#view-definition) **Examples** @@ -1172,13 +1172,13 @@ See [`db._profileQuery()`](../../../aql/execution-and-performance/query-profilin Fetches an index by identifier. -See [`db._index()`](../../../index-and-search/indexing/working-with-indexes/_index.md#fetching-an-index-by-identifier). +See [`db._index()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#fetching-an-index-by-identifier). ### `db._dropIndex(index)` Drops an index by identifier. -See [`db._dropIndex()`](../../../index-and-search/indexing/working-with-indexes/_index.md#dropping-an-index-via-a-database-object). +See [`db._dropIndex()`](../../../indexes-and-search/indexing/working-with-indexes/_index.md#dropping-an-index-via-a-database-object). ## Transactions diff --git a/site/content/arangodb/3.13/develop/javascript-api/@arangodb/view-object.md b/site/content/arangodb/4.0/develop/javascript-api/@arangodb/view-object.md similarity index 93% rename from site/content/arangodb/3.13/develop/javascript-api/@arangodb/view-object.md rename to site/content/arangodb/4.0/develop/javascript-api/@arangodb/view-object.md index 783e162dc0..7dea144d70 100644 --- a/site/content/arangodb/3.13/develop/javascript-api/@arangodb/view-object.md +++ b/site/content/arangodb/4.0/develop/javascript-api/@arangodb/view-object.md @@ -86,8 +86,8 @@ determines how the `new-properties` object is merged with current View propertie properties if `false`). For the available properties of the supported View types, see: -- [`arangosearch` View Properties](../../../index-and-search/arangosearch/arangosearch-views-reference.md#view-properties) -- [`search-alias` View Modification](../../../index-and-search/arangosearch/search-alias-views-reference.md#view-modification) +- [`arangosearch` View Properties](../../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-properties) +- [`search-alias` View Modification](../../../indexes-and-search/arangosearch/search-alias-views-reference.md#view-modification) **Examples** diff --git a/site/content/arangodb/3.13/develop/javascript-api/_index.md b/site/content/arangodb/4.0/develop/javascript-api/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/javascript-api/_index.md rename to site/content/arangodb/4.0/develop/javascript-api/_index.md diff --git a/site/content/arangodb/3.13/develop/javascript-api/actions.md b/site/content/arangodb/4.0/develop/javascript-api/actions.md similarity index 100% rename from site/content/arangodb/3.13/develop/javascript-api/actions.md rename to site/content/arangodb/4.0/develop/javascript-api/actions.md diff --git a/site/content/arangodb/3.13/develop/javascript-api/analyzers.md b/site/content/arangodb/4.0/develop/javascript-api/analyzers.md similarity index 97% rename from site/content/arangodb/3.13/develop/javascript-api/analyzers.md rename to site/content/arangodb/4.0/develop/javascript-api/analyzers.md index c25f28b077..a735c2449b 100644 --- a/site/content/arangodb/3.13/develop/javascript-api/analyzers.md +++ b/site/content/arangodb/4.0/develop/javascript-api/analyzers.md @@ -13,7 +13,7 @@ both server-side and client-side code (arangosh, Foxx): var analyzers = require("@arangodb/analyzers"); ``` -See [Analyzers](../../index-and-search/analyzers.md) for general information and +See [Analyzers](../../indexes-and-search/analyzers.md) for general information and details about the attributes. ## Analyzer Module Methods diff --git a/site/content/arangodb/3.13/develop/javascript-api/aql-queries.md b/site/content/arangodb/4.0/develop/javascript-api/aql-queries.md similarity index 100% rename from site/content/arangodb/3.13/develop/javascript-api/aql-queries.md rename to site/content/arangodb/4.0/develop/javascript-api/aql-queries.md diff --git a/site/content/arangodb/3.13/develop/javascript-api/console.md b/site/content/arangodb/4.0/develop/javascript-api/console.md similarity index 100% rename from site/content/arangodb/3.13/develop/javascript-api/console.md rename to site/content/arangodb/4.0/develop/javascript-api/console.md diff --git a/site/content/arangodb/3.13/develop/javascript-api/crypto.md b/site/content/arangodb/4.0/develop/javascript-api/crypto.md similarity index 100% rename from site/content/arangodb/3.13/develop/javascript-api/crypto.md rename to site/content/arangodb/4.0/develop/javascript-api/crypto.md diff --git a/site/content/arangodb/3.13/develop/javascript-api/fs.md b/site/content/arangodb/4.0/develop/javascript-api/fs.md similarity index 100% rename from site/content/arangodb/3.13/develop/javascript-api/fs.md rename to site/content/arangodb/4.0/develop/javascript-api/fs.md diff --git a/site/content/arangodb/3.13/develop/javascript-api/request.md b/site/content/arangodb/4.0/develop/javascript-api/request.md similarity index 100% rename from site/content/arangodb/3.13/develop/javascript-api/request.md rename to site/content/arangodb/4.0/develop/javascript-api/request.md diff --git a/site/content/arangodb/3.13/develop/javascript-api/tasks.md b/site/content/arangodb/4.0/develop/javascript-api/tasks.md similarity index 100% rename from site/content/arangodb/3.13/develop/javascript-api/tasks.md rename to site/content/arangodb/4.0/develop/javascript-api/tasks.md diff --git a/site/content/arangodb/3.13/develop/operational-factors.md b/site/content/arangodb/4.0/develop/operational-factors.md similarity index 99% rename from site/content/arangodb/3.13/develop/operational-factors.md rename to site/content/arangodb/4.0/develop/operational-factors.md index 5e972dd866..af53a0c96e 100644 --- a/site/content/arangodb/3.13/develop/operational-factors.md +++ b/site/content/arangodb/4.0/develop/operational-factors.md @@ -142,7 +142,7 @@ Should you decide to create an index you should consider a few things: - Indexes are a trade-off between storage space, maintenance cost and query speed. - Each new index increases the amount of RAM and the amount of disk space needed. -- Indexes with [indexed array values](../index-and-search/indexing/basics.md#indexing-array-values) +- Indexes with [indexed array values](../indexes-and-search/indexing/basics.md#indexing-array-values) need an extra index entry per array entry - Adding indexes increases the write-amplification i.e. it negatively affects the write performance (how much depends on the storage engine) @@ -163,7 +163,7 @@ to understand the bottlenecks in your queries. Always consider the additional space requirements of extra indexes when planning server capacities. For more information on indexes see -[Index Basics](../index-and-search/indexing/basics.md). +[Index Basics](../indexes-and-search/indexing/basics.md). ## Number of Databases and Collections diff --git a/site/content/arangodb/3.13/develop/satellitecollections.md b/site/content/arangodb/4.0/develop/satellitecollections.md similarity index 100% rename from site/content/arangodb/3.13/develop/satellitecollections.md rename to site/content/arangodb/4.0/develop/satellitecollections.md diff --git a/site/content/arangodb/3.13/develop/smartjoins.md b/site/content/arangodb/4.0/develop/smartjoins.md similarity index 100% rename from site/content/arangodb/3.13/develop/smartjoins.md rename to site/content/arangodb/4.0/develop/smartjoins.md diff --git a/site/content/arangodb/3.13/develop/transactions/_index.md b/site/content/arangodb/4.0/develop/transactions/_index.md similarity index 100% rename from site/content/arangodb/3.13/develop/transactions/_index.md rename to site/content/arangodb/4.0/develop/transactions/_index.md diff --git a/site/content/arangodb/3.13/develop/transactions/durability.md b/site/content/arangodb/4.0/develop/transactions/durability.md similarity index 100% rename from site/content/arangodb/3.13/develop/transactions/durability.md rename to site/content/arangodb/4.0/develop/transactions/durability.md diff --git a/site/content/arangodb/3.13/develop/transactions/javascript-transactions.md b/site/content/arangodb/4.0/develop/transactions/javascript-transactions.md similarity index 100% rename from site/content/arangodb/3.13/develop/transactions/javascript-transactions.md rename to site/content/arangodb/4.0/develop/transactions/javascript-transactions.md diff --git a/site/content/arangodb/3.13/develop/transactions/limitations.md b/site/content/arangodb/4.0/develop/transactions/limitations.md similarity index 100% rename from site/content/arangodb/3.13/develop/transactions/limitations.md rename to site/content/arangodb/4.0/develop/transactions/limitations.md diff --git a/site/content/arangodb/3.13/develop/transactions/locking-and-isolation.md b/site/content/arangodb/4.0/develop/transactions/locking-and-isolation.md similarity index 100% rename from site/content/arangodb/3.13/develop/transactions/locking-and-isolation.md rename to site/content/arangodb/4.0/develop/transactions/locking-and-isolation.md diff --git a/site/content/arangodb/3.13/develop/transactions/stream-transactions.md b/site/content/arangodb/4.0/develop/transactions/stream-transactions.md similarity index 100% rename from site/content/arangodb/3.13/develop/transactions/stream-transactions.md rename to site/content/arangodb/4.0/develop/transactions/stream-transactions.md diff --git a/site/content/arangodb/3.13/features/_index.md b/site/content/arangodb/4.0/features/_index.md similarity index 100% rename from site/content/arangodb/3.13/features/_index.md rename to site/content/arangodb/4.0/features/_index.md diff --git a/site/content/arangodb/3.13/features/highlights-by-version.md b/site/content/arangodb/4.0/features/highlights-by-version.md similarity index 88% rename from site/content/arangodb/3.13/features/highlights-by-version.md rename to site/content/arangodb/4.0/features/highlights-by-version.md index d8c369f251..ee68c6f649 100644 --- a/site/content/arangodb/3.13/features/highlights-by-version.md +++ b/site/content/arangodb/4.0/features/highlights-by-version.md @@ -7,11 +7,11 @@ description: >- aliases: - ../introduction/features/highlights-by-version --- -## Version 3.13 +## Version 4.0 - -Also see [What's New in 3.13](../release-notes/version-3.13/whats-new-in-3-13.md). +Also see [What's New in 4.0](../release-notes/version-4.0/whats-new-in-4-0.md). ## Version 3.12 @@ -27,11 +27,11 @@ See [ArangoDB Editions](_index.md#arangodb-editions) for details. Better tracking and observability of memory consumption for ArangoDB deployments and reduced memory usage. -- [**`wildcard` Analyzer**](../index-and-search/analyzers.md#wildcard): +- [**`wildcard` Analyzer**](../indexes-and-search/analyzers.md#wildcard): Accelerate `LIKE` searches with `_` and `%` wildcards against Views and inverted indexes with _n_-grams to quickly find candidate matches. -- [**Multi-dimensional indexes**](../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): +- [**Multi-dimensional indexes**](../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): An index type to efficiently intersect multiple range queries, like finding all appointments that intersect a time range. Optionally with prefix fields, with support for using it as vertex-centric index in graph traversals. @@ -56,7 +56,7 @@ See [ArangoDB Editions](_index.md#arangodb-editions) for details. **Enterprise Edition** -- [**ArangoSearch WAND optimization**](../index-and-search/arangosearch/performance.md#wand-optimization): +- [**ArangoSearch WAND optimization**](../indexes-and-search/arangosearch/performance.md#wand-optimization): Retrieve search results for the highest-ranking matches from Views faster by defining a list of sort expressions to optimize. @@ -82,7 +82,7 @@ Also see [What's New in 3.12](../release-notes/version-3.12/whats-new-in-3-12.md stored values, primary sort columns, and primary key columns in memory to improve the performance of Views and inverted indexes. -- [**`geo_s2` Analyzer**](../index-and-search/analyzers.md#geo_s2): +- [**`geo_s2` Analyzer**](../indexes-and-search/analyzers.md#geo_s2): Efficiently index geo-spatial data using different binary formats, tuning the size on disk, the precision, and query performance. @@ -100,7 +100,7 @@ Also see [What's New in 3.11](../release-notes/version-3.11/whats-new-in-3-11.md Persistent document attributes that are generated when documents are created or modified, using an AQL expression. -- [**Inverted indexes**](../index-and-search/indexing/working-with-indexes/inverted-indexes.md): +- [**Inverted indexes**](../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md): A new, eventually consistent index type that can accelerate a broad range of queries, providing similar search capabilities as `arangosearch` Views, but defined per collection and simpler to use. @@ -111,12 +111,12 @@ Also see [What's New in 3.11](../release-notes/version-3.11/whats-new-in-3-11.md alternative to `arangosearch` Views. - **Persistent indexes**: - An optional [**In-memory Cache**](../index-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values) - for faster lookups and [**Stored Values**](../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes) + An optional [**In-memory Cache**](../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values) + for faster lookups and [**Stored Values**](../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes) to let persistent indexes cover additional attributes of projections. - **AQL Graph Traversals**: - [All Shortest Paths](../aql/graphs/all-shortest-paths.md) allows you to query + [All Shortest Paths](../aql/graph-queries/all-shortest-paths.md) allows you to query for all paths of shortest length between two documents. **Enterprise Edition** @@ -124,15 +124,15 @@ Also see [What's New in 3.11](../release-notes/version-3.11/whats-new-in-3-11.md - [**EnterpriseGraphs**](../graphs/enterprisegraphs/_index.md): A new specialized version of SmartGraphs, with an automatic sharding key selection. -- [**Search highlighting**](../index-and-search/arangosearch/search-highlighting.md): +- [**Search highlighting**](../indexes-and-search/arangosearch/search-highlighting.md): Get the substring positions of matched terms, phrases, or _n_-grams. -- [**Nested search**](../index-and-search/arangosearch/nested-search.md): +- [**Nested search**](../indexes-and-search/arangosearch/nested-search.md): Match arrays of objects with all the conditions met by a single sub-object, and define for how many of the elements this must be true. - **ArangoSearch**: - New [`minhash` Analyzer](../index-and-search/analyzers.md#minhash) for locality-sensitive hashing + New [`minhash` Analyzer](../indexes-and-search/analyzers.md#minhash) for locality-sensitive hashing to approximate the Jaccard similarity, with inverted index and `arangosearch` View support that allows you to implement entity resolution. @@ -155,9 +155,9 @@ Also see [What's New in 3.10](../release-notes/version-3.10/whats-new-in-3-10.md **All Editions** - **ArangoSearch**: - New [**Segmentation Analyzer**](../index-and-search/analyzers.md#segmentation) + New [**Segmentation Analyzer**](../indexes-and-search/analyzers.md#segmentation) for language-agnostic tokenization of text. - A [**Collation Analyzer**](../index-and-search/analyzers.md#collation) + A [**Collation Analyzer**](../indexes-and-search/analyzers.md#collation) to honor the alphabetical order of the specified language in range queries. **Enterprise Edition** @@ -179,16 +179,16 @@ Also see [What's New in 3.9](../release-notes/version-3.9/whats-new-in-3-9.md). match a given length. - **ArangoSearch**: - New [**Pipeline Analyzer**](../index-and-search/analyzers.md#pipeline) + New [**Pipeline Analyzer**](../indexes-and-search/analyzers.md#pipeline) that allows you to combine multiple Analyzers, enabling case-insensitive _n_-gram-based fuzzy search and more. New - [**AQL Analyzer**](../index-and-search/analyzers.md#aql) + [**AQL Analyzer**](../indexes-and-search/analyzers.md#aql) so that you can use an AQL query to pre-process and filter your data for indexing. Support for **geo-spatial queries** through new - [Geo](../index-and-search/analyzers.md#geojson) - [Analyzers](../index-and-search/analyzers.md#geopoint) and + [Geo](../indexes-and-search/analyzers.md#geojson) + [Analyzers](../indexes-and-search/analyzers.md#geopoint) and [ArangoSearch Geo functions](../aql/functions/arangosearch.md#geo-functions). - A new [**Stop words Analyzer**](../index-and-search/analyzers.md#stopwords) that + A new [**Stop words Analyzer**](../indexes-and-search/analyzers.md#stopwords) that can be used standalone or in an Analyzer pipeline. - A [**`WINDOW` operation**](../aql/high-level-operations/window.md) for aggregations over @@ -297,15 +297,15 @@ Also see [What's New in 3.6](../release-notes/version-3.6/whats-new-in-3-6.md). - **ArangoSearch**: The search and ranking engine received an upgrade and now features - [Configurable Analyzers](../index-and-search/analyzers.md), - [Sorted Views](../index-and-search/arangosearch/performance.md#primary-sort-order) + [Configurable Analyzers](../indexes-and-search/analyzers.md), + [Sorted Views](../indexes-and-search/arangosearch/performance.md#primary-sort-order) and several improvements to the [AQL integration](../release-notes/version-3.5/whats-new-in-3-5.md#arangosearch). - **AQL Graph Traversals**: - [k Shortest Paths](../aql/graphs/k-shortest-paths.md) allows you to query not + [k Shortest Paths](../aql/graph-queries/k-shortest-paths.md) allows you to query not just for one shortest path between two documents but multiple, sorted by - length or weight. With [PRUNE](../aql/graphs/traversals.md#pruning) you can + length or weight. With [PRUNE](../aql/graph-queries/traversals.md#pruning) you can stop walking down certain paths early in a graph traversal to improve its efficiency. @@ -313,8 +313,8 @@ Also see [What's New in 3.6](../release-notes/version-3.6/whats-new-in-3-6.md). Perform multi-document transactions with individual begin and commit / abort commands using the new HTTP endpoints or via a supported driver. -- [**Time-to-Live**](../index-and-search/indexing/basics.md#ttl-time-to-live-index) - [**Indexes**](../index-and-search/indexing/working-with-indexes/ttl-indexes.md): +- [**Time-to-Live**](../indexes-and-search/indexing/basics.md#ttl-time-to-live-index) + [**Indexes**](../indexes-and-search/indexing/working-with-indexes/ttl-indexes.md): TTL indexes can be used to automatically remove documents in collections for use cases like expiring sessions or automatic purging of statistics or logs. @@ -352,7 +352,7 @@ Also see [What's New in 3.5](../release-notes/version-3.5/whats-new-in-3-5.md). **All Editions** -- [**ArangoSearch**](../index-and-search/arangosearch/_index.md): +- [**ArangoSearch**](../indexes-and-search/arangosearch/_index.md): Search and similarity ranking engine integrated natively into ArangoDB and AQL. ArangoSearch combines Boolean retrieval capabilities with generalized ranking algorithms (BM25, TFDIF). Support of e.g. relevance-based searching, @@ -362,7 +362,7 @@ Also see [What's New in 3.5](../release-notes/version-3.5/whats-new-in-3-5.md). English, German, French, Chinese, Spanish and many other language. - [**GeoJSON Support**](../aql/functions/geo.md) and - [**S2 Geo Index**](../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ArangoDB now supports all geo primitives. + [**S2 Geo Index**](../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md): ArangoDB now supports all geo primitives. (Multi-)Point, (Multi-)LineStrings, (Multi-)Polygons or intersections can be defined and queried for. The Google S2 geo index is optimized for RocksDB and enables efficient querying. Geo query results are automatically visualized @@ -457,7 +457,7 @@ Also see [What's New in 3.2](../release-notes/version-3.2/whats-new-in-3-2.md). **All Editions** -- [**Vertex-centric indexes**](../index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md): +- [**Vertex-centric indexes**](../indexes-and-search/indexing/working-with-indexes/vertex-centric-indexes.md): AQL traversal queries can utilize secondary edge collection indexes for better performance against graphs with supernodes. @@ -485,12 +485,12 @@ Also see [What's New in 3.1](../release-notes/version-3.1/whats-new-in-3-1.md). synchronous replication, master/master setup, shared nothing architecture, cluster management Agency. -- Deeply integrated, native [**AQL graph traversal**](../aql/graphs/_index.md) +- Deeply integrated, native [**AQL graph traversal**](../aql/graph-queries/_index.md) - [**VelocyPack**](https://github.com/arangodb/velocypack) as new internal binary storage format as well as for intermediate AQL values. -- [**Persistent indexes**](../index-and-search/indexing/working-with-indexes/persistent-indexes.md) via RocksDB suitable +- [**Persistent indexes**](../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md) via RocksDB suitable for sorting and range queries. - [**Foxx 3.0**](../develop/foxx-microservices/_index.md): overhauled JS framework for data-centric diff --git a/site/content/arangodb/3.13/features/list.md b/site/content/arangodb/4.0/features/list.md similarity index 90% rename from site/content/arangodb/3.13/features/list.md rename to site/content/arangodb/4.0/features/list.md index 93f6002d42..ad551e7722 100644 --- a/site/content/arangodb/3.13/features/list.md +++ b/site/content/arangodb/4.0/features/list.md @@ -113,19 +113,19 @@ aliases: match up documents from different collections, allowing normalized data models. - **Advanced Path-Finding with Multiple Algorithms**: - Graphs can be [traversed](../aql/graphs/traversals-explained.md) with AQL + Graphs can be [traversed](../aql/graph-queries/traversals-explained.md) with AQL in outbound, inbound, or both directions to retrieve direct and indirect neighbor nodes using a fixed or variable depth. - The [traversal order](../aql/graphs/traversals.md) can be + The [traversal order](../aql/graph-queries/traversals.md) can be depth-first, breadth-first, or in order of increasing edge weights ("Weighted Traversals"). Stop conditions for pruning paths are supported. - Traversal algorithms to get a [shortest path](../aql/graphs/shortest-path.md), - [all shortest paths](../aql/graphs/all-shortest-paths.md), paths in order of - increasing length ("[k Shortest Paths](../aql/graphs/k-shortest-paths.md)"), + Traversal algorithms to get a [shortest path](../aql/graph-queries/shortest-path.md), + [all shortest paths](../aql/graph-queries/all-shortest-paths.md), paths in order of + increasing length ("[k Shortest Paths](../aql/graph-queries/k-shortest-paths.md)"), and to enumerate all paths between two nodes - ("[k Paths](../aql/graphs/k-paths.md)") are available, too. + ("[k Paths](../aql/graph-queries/k-paths.md)") are available, too. -- [**ArangoSearch for Text Search and Ranking**](../index-and-search/arangosearch/_index.md): +- [**ArangoSearch for Text Search and Ranking**](../indexes-and-search/arangosearch/_index.md): A built-in search engine for full-text, complex data structures, and more. Exact value matching, range queries, prefix matching, case-insensitive and accent-insensitive search. Token, phrase, wildcard, and fuzzy search support @@ -145,19 +145,19 @@ aliases: threshold is reached. {{% /comment %}} -- [**Vector search**](../index-and-search/indexing/working-with-indexes/vector-indexes.md): +- [**Vector search**](../indexes-and-search/indexing/working-with-indexes/vector-indexes.md): Find items with similar properties by comparing vector embeddings generated by machine learning models. -- [**Search highlighting**](../index-and-search/arangosearch/search-highlighting.md): +- [**Search highlighting**](../indexes-and-search/arangosearch/search-highlighting.md): Get the substring positions of matched terms, phrases, or _n_-grams. -- [**Nested search**](../index-and-search/arangosearch/nested-search.md): +- [**Nested search**](../indexes-and-search/arangosearch/nested-search.md): Match arrays of objects with all the conditions met by a single sub-object, and define for how many of the elements this must be true. {{% comment %}} Experimental feature -- **[`classification`](../index-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../index-and-search/analyzers.md#nearest_neighbors)**: +- **[`classification`](../indexes-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../indexes-and-search/analyzers.md#nearest_neighbors)**: Classification of text tokens and finding similar tokens using supervised fastText word embedding models. {{% /comment %}} @@ -236,11 +236,11 @@ aliases: - [**Parallel index creation**](../release-notes/version-3.10/whats-new-in-3-10.md#parallel-index-creation-enterprise-edition): Non-unique indexes can be created with multiple threads in parallel. -- [**`minhash` Analyzer**](../index-and-search/analyzers.md#minhash): +- [**`minhash` Analyzer**](../indexes-and-search/analyzers.md#minhash): Jaccard similarity approximation for entity resolution, such as for finding duplicate records, based on how many elements they have in common -- [**`geo_s2` Analyzer**](../index-and-search/analyzers.md#geo_s2): +- [**`geo_s2` Analyzer**](../indexes-and-search/analyzers.md#geo_s2): Efficiently index geo-spatial data using different binary formats, tuning the size on disk, the precision, and query performance. @@ -249,7 +249,7 @@ aliases: stored values, primary sort columns, and primary key columns in memory to improve the performance of Views and inverted indexes. -- [**ArangoSearch WAND optimization**](../index-and-search/arangosearch/performance.md#wand-optimization): +- [**ArangoSearch WAND optimization**](../indexes-and-search/arangosearch/performance.md#wand-optimization): Retrieve search results for the highest-ranking matches from Views faster by defining a list of sort expressions to optimize. @@ -257,32 +257,32 @@ aliases: Allow dirty reads so that Coordinators can read from any shard replica and not only from the leader, for scaling reads. -- [**Persistent Indexes**](../index-and-search/indexing/basics.md#persistent-index): +- [**Persistent Indexes**](../indexes-and-search/indexing/basics.md#persistent-index): Indexes are stored on disk to enable fast server restarts. You can create secondary indexes over one or multiple fields, optionally with a uniqueness constraint. A "sparse" option to only index non-null values is also available. The elements of an array can be indexed individually. -- [**Inverted indexes**](../index-and-search/indexing/working-with-indexes/inverted-indexes.md): +- [**Inverted indexes**](../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md): An eventually consistent index type that can accelerate a broad range of queries from simple to complex, including full-text search. -- [**Vertex-centric Indexes**](../index-and-search/indexing/basics.md#vertex-centric-indexes): +- [**Vertex-centric Indexes**](../indexes-and-search/indexing/basics.md#vertex-centric-indexes): Secondary indexes for more efficient graph traversals with filter conditions. -- [**Time-to-Live (TTL) Indexes**](../index-and-search/indexing/basics.md#ttl-time-to-live-index): +- [**Time-to-Live (TTL) Indexes**](../indexes-and-search/indexing/basics.md#ttl-time-to-live-index): Time-based removal of expired documents. -- [**Geo-spatial Indexes**](../index-and-search/indexing/basics.md#geo-index): +- [**Geo-spatial Indexes**](../indexes-and-search/indexing/basics.md#geo-index): Accelerated geo-spatial queries for locations and GeoJSON objects, based on the S2 library. <!-- TODO: list supported queries? Centroid-limitations? --> Support for composable, distance-based geo-queries ("geo cursors"). -- [**Multi-dimensional indexes**](../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): +- [**Multi-dimensional indexes**](../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md): An index type to efficiently intersect multiple range queries, like finding all appointments that intersect a time range. -- [**Background Indexing**](../index-and-search/indexing/basics.md#creating-indexes-in-background): +- [**Background Indexing**](../indexes-and-search/indexing/basics.md#creating-indexes-in-background): Indexes can be created in the background to not block queries in the meantime. - [**Index cache refilling**](../release-notes/version-3.11/whats-new-in-3-11.md#index-cache-refilling): diff --git a/site/content/arangodb/3.13/get-started/_index.md b/site/content/arangodb/4.0/get-started/_index.md similarity index 100% rename from site/content/arangodb/3.13/get-started/_index.md rename to site/content/arangodb/4.0/get-started/_index.md diff --git a/site/content/arangodb/3.13/get-started/how-to-interact-with-arangodb.md b/site/content/arangodb/4.0/get-started/how-to-interact-with-arangodb.md similarity index 100% rename from site/content/arangodb/3.13/get-started/how-to-interact-with-arangodb.md rename to site/content/arangodb/4.0/get-started/how-to-interact-with-arangodb.md diff --git a/site/content/arangodb/3.13/get-started/on-premises-installation.md b/site/content/arangodb/4.0/get-started/on-premises-installation.md similarity index 100% rename from site/content/arangodb/3.13/get-started/on-premises-installation.md rename to site/content/arangodb/4.0/get-started/on-premises-installation.md diff --git a/site/content/arangodb/3.13/get-started/set-up-a-cloud-instance.md b/site/content/arangodb/4.0/get-started/set-up-a-cloud-instance.md similarity index 100% rename from site/content/arangodb/3.13/get-started/set-up-a-cloud-instance.md rename to site/content/arangodb/4.0/get-started/set-up-a-cloud-instance.md diff --git a/site/content/arangodb/3.13/get-started/start-using-aql/_index.md b/site/content/arangodb/4.0/get-started/start-using-aql/_index.md similarity index 100% rename from site/content/arangodb/3.13/get-started/start-using-aql/_index.md rename to site/content/arangodb/4.0/get-started/start-using-aql/_index.md diff --git a/site/content/arangodb/3.13/get-started/start-using-aql/crud.md b/site/content/arangodb/4.0/get-started/start-using-aql/crud.md similarity index 100% rename from site/content/arangodb/3.13/get-started/start-using-aql/crud.md rename to site/content/arangodb/4.0/get-started/start-using-aql/crud.md diff --git a/site/content/arangodb/3.13/get-started/start-using-aql/dataset.md b/site/content/arangodb/4.0/get-started/start-using-aql/dataset.md similarity index 100% rename from site/content/arangodb/3.13/get-started/start-using-aql/dataset.md rename to site/content/arangodb/4.0/get-started/start-using-aql/dataset.md diff --git a/site/content/arangodb/3.13/get-started/start-using-aql/filter.md b/site/content/arangodb/4.0/get-started/start-using-aql/filter.md similarity index 100% rename from site/content/arangodb/3.13/get-started/start-using-aql/filter.md rename to site/content/arangodb/4.0/get-started/start-using-aql/filter.md diff --git a/site/content/arangodb/3.13/get-started/start-using-aql/geo.md b/site/content/arangodb/4.0/get-started/start-using-aql/geo.md similarity index 97% rename from site/content/arangodb/3.13/get-started/start-using-aql/geo.md rename to site/content/arangodb/4.0/get-started/start-using-aql/geo.md index bc19acbdef..6780a90904 100644 --- a/site/content/arangodb/3.13/get-started/start-using-aql/geo.md +++ b/site/content/arangodb/4.0/get-started/start-using-aql/geo.md @@ -37,7 +37,7 @@ latitude with GeoJSON, whereas the dataset uses latitude, longitude. ## Geospatial index -To query based on coordinates, a [geo index](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md) +To query based on coordinates, a [geo index](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md) is required. It determines which fields contain the latitude and longitude values. diff --git a/site/content/arangodb/3.13/get-started/start-using-aql/graphs.md b/site/content/arangodb/4.0/get-started/start-using-aql/graphs.md similarity index 97% rename from site/content/arangodb/3.13/get-started/start-using-aql/graphs.md rename to site/content/arangodb/4.0/get-started/start-using-aql/graphs.md index 044f1cc4a3..0ef876507b 100644 --- a/site/content/arangodb/3.13/get-started/start-using-aql/graphs.md +++ b/site/content/arangodb/4.0/get-started/start-using-aql/graphs.md @@ -96,7 +96,7 @@ Breakdown of the query: Now that edges link character documents (nodes), it is a graph you can query to find out who the parents are of another character – or in graph terms, you want to start at a node and follow the edges to other -nodes in an [AQL graph traversal](../../aql/graphs/traversals.md): +nodes in an [AQL graph traversal](../../aql/graph-queries/traversals.md): ```aql // Declare collection of start node (cluster only) @@ -110,7 +110,7 @@ This `FOR` loop doesn't iterate over a collection or an array, it walks the graph and iterates over the connected nodes it finds, with the node document assigned to a variable (here: `v`). It can also emit the edges it walked as well as the full path from start to end to -[another two variables](../../aql/graphs/traversals.md#syntax). +[another two variables](../../aql/graph-queries/traversals.md#syntax). In above query, the traversal is restricted to a minimum and maximum traversal depth of 1 (how many steps to take from the start node), and to only follow @@ -261,7 +261,7 @@ Tywin <- Cersei <- Joffrey As a quick fix, change the last line of the query to `RETURN DISTINCT v.name` to return each value only once. However, there are -[traversal options](../../aql/graphs/traversals.md#syntax) including one to +[traversal options](../../aql/graph-queries/traversals.md#syntax) including one to suppress duplicate nodes early on for the entire traversal (which requires breadth-first search): diff --git a/site/content/arangodb/3.13/get-started/start-using-aql/joins.md b/site/content/arangodb/4.0/get-started/start-using-aql/joins.md similarity index 100% rename from site/content/arangodb/3.13/get-started/start-using-aql/joins.md rename to site/content/arangodb/4.0/get-started/start-using-aql/joins.md diff --git a/site/content/arangodb/3.13/get-started/start-using-aql/sort-limit.md b/site/content/arangodb/4.0/get-started/start-using-aql/sort-limit.md similarity index 100% rename from site/content/arangodb/3.13/get-started/start-using-aql/sort-limit.md rename to site/content/arangodb/4.0/get-started/start-using-aql/sort-limit.md diff --git a/site/content/arangodb/3.13/graphs/_index.md b/site/content/arangodb/4.0/graphs/_index.md similarity index 98% rename from site/content/arangodb/3.13/graphs/_index.md rename to site/content/arangodb/4.0/graphs/_index.md index 29eb32cbe5..b7cca0ef0a 100644 --- a/site/content/arangodb/3.13/graphs/_index.md +++ b/site/content/arangodb/4.0/graphs/_index.md @@ -98,7 +98,7 @@ direction and follow them in both directions (**any**) as if it were an undirected graph. You can query graphs with ArangoDB's query language, see -[Graphs in AQL](../aql/graphs/_index.md). +[Graphs in AQL](../aql/graph-queries/_index.md). ## Comparison to relational database systems @@ -123,15 +123,15 @@ In queries, you can define in which directions the edge relations may be followe ## Supported graph algorithms -- [Traversal](../aql/graphs/traversals.md) +- [Traversal](../aql/graph-queries/traversals.md) - following edges in outbound, inbound, or any direction - variable traversal depth between a defined minimum and maximum - breadth-first, depth-first, and weighted traversals - optionally with prune conditions -- [Shortest Path](../aql/graphs/shortest-path.md) -- [All Shortest Paths](../aql/graphs/all-shortest-paths.md) -- [k Shortest Paths](../aql/graphs/k-shortest-paths.md) -- [k Paths](../aql/graphs/k-paths.md) +- [Shortest Path](../aql/graph-queries/shortest-path.md) +- [All Shortest Paths](../aql/graph-queries/all-shortest-paths.md) +- [k Shortest Paths](../aql/graph-queries/k-shortest-paths.md) +- [k Paths](../aql/graph-queries/k-paths.md) ## Managed and unmanaged graphs diff --git a/site/content/arangodb/3.13/graphs/enterprisegraphs/_index.md b/site/content/arangodb/4.0/graphs/enterprisegraphs/_index.md similarity index 98% rename from site/content/arangodb/3.13/graphs/enterprisegraphs/_index.md rename to site/content/arangodb/4.0/graphs/enterprisegraphs/_index.md index 28ce9e5398..77dd78b27f 100644 --- a/site/content/arangodb/3.13/graphs/enterprisegraphs/_index.md +++ b/site/content/arangodb/4.0/graphs/enterprisegraphs/_index.md @@ -12,7 +12,7 @@ It will give a vast performance benefit for all graphs sharded in an ArangoDB Cluster, reducing network hops substantially. In terms of querying there is no difference between SmartGraphs and EnterpriseGraphs. -For graph querying please refer to [AQL Graph Operations](../../aql/graphs/_index.md) +For graph querying please refer to [AQL Graph Operations](../../aql/graph-queries/_index.md) and [General Graph Functions](../general-graphs/functions.md) sections. Creating and modifying the underlying collections of an EnterpriseGraph are diff --git a/site/content/arangodb/3.13/graphs/enterprisegraphs/getting-started.md b/site/content/arangodb/4.0/graphs/enterprisegraphs/getting-started.md similarity index 100% rename from site/content/arangodb/3.13/graphs/enterprisegraphs/getting-started.md rename to site/content/arangodb/4.0/graphs/enterprisegraphs/getting-started.md diff --git a/site/content/arangodb/3.13/graphs/enterprisegraphs/management.md b/site/content/arangodb/4.0/graphs/enterprisegraphs/management.md similarity index 100% rename from site/content/arangodb/3.13/graphs/enterprisegraphs/management.md rename to site/content/arangodb/4.0/graphs/enterprisegraphs/management.md diff --git a/site/content/arangodb/3.13/graphs/example-graphs.md b/site/content/arangodb/4.0/graphs/example-graphs.md similarity index 96% rename from site/content/arangodb/3.13/graphs/example-graphs.md rename to site/content/arangodb/4.0/graphs/example-graphs.md index cfc699abad..8955e5b511 100644 --- a/site/content/arangodb/3.13/graphs/example-graphs.md +++ b/site/content/arangodb/4.0/graphs/example-graphs.md @@ -95,7 +95,7 @@ with the travel time for both directions as edge weight. ![Train Connection Map](../../../images/train_map.png) -See the [k Shortest Paths page](../aql/graphs/k-shortest-paths.md) for query examples. +See the [k Shortest Paths page](../aql/graph-queries/k-shortest-paths.md) for query examples. ```js --- @@ -120,9 +120,9 @@ in the `mps_edges` collection. It is a simple traversal graph with start node ![Mps Graph](../../../images/mps_graph.png) -With the [Shortest Path](../aql/graphs/shortest-path.md) algorithm, you either +With the [Shortest Path](../aql/graph-queries/shortest-path.md) algorithm, you either get the shortest path *A* - *B* - *C* or *A* - *D* - *C*. With the -[All Shortest Paths](../aql/graphs/all-shortest-paths.md) algorithm, both +[All Shortest Paths](../aql/graph-queries/all-shortest-paths.md) algorithm, both shortest paths are returned. Example of how to create the graph, inspect its nodes and edges, and delete diff --git a/site/content/arangodb/3.13/graphs/general-graphs/_index.md b/site/content/arangodb/4.0/graphs/general-graphs/_index.md similarity index 100% rename from site/content/arangodb/3.13/graphs/general-graphs/_index.md rename to site/content/arangodb/4.0/graphs/general-graphs/_index.md diff --git a/site/content/arangodb/3.13/graphs/general-graphs/functions.md b/site/content/arangodb/4.0/graphs/general-graphs/functions.md similarity index 100% rename from site/content/arangodb/3.13/graphs/general-graphs/functions.md rename to site/content/arangodb/4.0/graphs/general-graphs/functions.md diff --git a/site/content/arangodb/3.13/graphs/general-graphs/management.md b/site/content/arangodb/4.0/graphs/general-graphs/management.md similarity index 100% rename from site/content/arangodb/3.13/graphs/general-graphs/management.md rename to site/content/arangodb/4.0/graphs/general-graphs/management.md diff --git a/site/content/arangodb/3.13/graphs/satellitegraphs/_index.md b/site/content/arangodb/4.0/graphs/satellitegraphs/_index.md similarity index 100% rename from site/content/arangodb/3.13/graphs/satellitegraphs/_index.md rename to site/content/arangodb/4.0/graphs/satellitegraphs/_index.md diff --git a/site/content/arangodb/3.13/graphs/satellitegraphs/details.md b/site/content/arangodb/4.0/graphs/satellitegraphs/details.md similarity index 100% rename from site/content/arangodb/3.13/graphs/satellitegraphs/details.md rename to site/content/arangodb/4.0/graphs/satellitegraphs/details.md diff --git a/site/content/arangodb/3.13/graphs/satellitegraphs/management.md b/site/content/arangodb/4.0/graphs/satellitegraphs/management.md similarity index 100% rename from site/content/arangodb/3.13/graphs/satellitegraphs/management.md rename to site/content/arangodb/4.0/graphs/satellitegraphs/management.md diff --git a/site/content/arangodb/3.13/graphs/smartgraphs/_index.md b/site/content/arangodb/4.0/graphs/smartgraphs/_index.md similarity index 99% rename from site/content/arangodb/3.13/graphs/smartgraphs/_index.md rename to site/content/arangodb/4.0/graphs/smartgraphs/_index.md index 9122893c10..c74639c592 100644 --- a/site/content/arangodb/3.13/graphs/smartgraphs/_index.md +++ b/site/content/arangodb/4.0/graphs/smartgraphs/_index.md @@ -30,7 +30,7 @@ Examples for such graphs are: category are often bought together. In terms of querying there is no difference between SmartGraphs and General Graphs. -For graph querying please refer to [AQL Graph Operations](../../aql/graphs/_index.md) +For graph querying please refer to [AQL Graph Operations](../../aql/graph-queries/_index.md) and [General Graph Functions](../general-graphs/functions.md) sections. The optimizer is clever enough to identify whether it is a SmartGraph or not. diff --git a/site/content/arangodb/3.13/graphs/smartgraphs/getting-started.md b/site/content/arangodb/4.0/graphs/smartgraphs/getting-started.md similarity index 100% rename from site/content/arangodb/3.13/graphs/smartgraphs/getting-started.md rename to site/content/arangodb/4.0/graphs/smartgraphs/getting-started.md diff --git a/site/content/arangodb/3.13/graphs/smartgraphs/management.md b/site/content/arangodb/4.0/graphs/smartgraphs/management.md similarity index 100% rename from site/content/arangodb/3.13/graphs/smartgraphs/management.md rename to site/content/arangodb/4.0/graphs/smartgraphs/management.md diff --git a/site/content/arangodb/3.13/graphs/smartgraphs/testing-graphs-on-single-server.md b/site/content/arangodb/4.0/graphs/smartgraphs/testing-graphs-on-single-server.md similarity index 100% rename from site/content/arangodb/3.13/graphs/smartgraphs/testing-graphs-on-single-server.md rename to site/content/arangodb/4.0/graphs/smartgraphs/testing-graphs-on-single-server.md diff --git a/site/content/arangodb/3.13/graphs/working-with-edges.md b/site/content/arangodb/4.0/graphs/working-with-edges.md similarity index 100% rename from site/content/arangodb/3.13/graphs/working-with-edges.md rename to site/content/arangodb/4.0/graphs/working-with-edges.md diff --git a/site/content/arangodb/4.0/indexes-and-search/_index.md b/site/content/arangodb/4.0/indexes-and-search/_index.md new file mode 100644 index 0000000000..1a740c65df --- /dev/null +++ b/site/content/arangodb/4.0/indexes-and-search/_index.md @@ -0,0 +1,6 @@ +--- +title: Indexes and Search +menuTitle: Indexes and Search +weight: 145 +description: '' +--- diff --git a/site/content/arangodb/3.13/index-and-search/analyzers.md b/site/content/arangodb/4.0/indexes-and-search/analyzers.md similarity index 99% rename from site/content/arangodb/3.13/index-and-search/analyzers.md rename to site/content/arangodb/4.0/indexes-and-search/analyzers.md index 43df3bfc69..df0bbfce6d 100644 --- a/site/content/arangodb/3.13/index-and-search/analyzers.md +++ b/site/content/arangodb/4.0/indexes-and-search/analyzers.md @@ -1765,7 +1765,7 @@ i.e. range queries in SEARCH operations against Views will not follow the language rules as per the defined Analyzer locale (except for the [`collation` Analyzer](#collation)) nor the server language (startup option `--default-language`)! -Also see [Known Issues](../release-notes/version-3.13/known-issues-in-3-13.md#arangosearch). +Also see [Known Issues](../release-notes/version-4.0/known-issues-in-4-0.md#arangosearch). {{< /warning >}} ### Stemming diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/_index.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/_index.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/_index.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/_index.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/arangosearch-views-reference.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/arangosearch-views-reference.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/arangosearch-views-reference.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/arangosearch-views-reference.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/case-sensitivity-and-diacritics.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/case-sensitivity-and-diacritics.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/case-sensitivity-and-diacritics.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/case-sensitivity-and-diacritics.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/exact-value-matching.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/exact-value-matching.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/exact-value-matching.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/exact-value-matching.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/example-datasets.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/example-datasets.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/example-datasets.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/example-datasets.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/faceted-search.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/faceted-search.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/faceted-search.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/faceted-search.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/full-text-token-search.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/full-text-token-search.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/full-text-token-search.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/full-text-token-search.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/fuzzy-search.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/fuzzy-search.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/fuzzy-search.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/fuzzy-search.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/geospatial-search.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/geospatial-search.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/geospatial-search.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/geospatial-search.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/nested-search.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/nested-search.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/nested-search.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/nested-search.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/performance.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/performance.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/performance.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/performance.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/phrase-and-proximity-search.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/phrase-and-proximity-search.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/phrase-and-proximity-search.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/phrase-and-proximity-search.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/prefix-matching.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/prefix-matching.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/prefix-matching.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/prefix-matching.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/range-queries.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/range-queries.md similarity index 98% rename from site/content/arangodb/3.13/index-and-search/arangosearch/range-queries.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/range-queries.md index 9a7ce376ff..51d1423a37 100644 --- a/site/content/arangodb/3.13/index-and-search/arangosearch/range-queries.md +++ b/site/content/arangodb/4.0/indexes-and-search/arangosearch/range-queries.md @@ -247,7 +247,7 @@ i.e. range queries in SEARCH operations against Views will not follow the language rules as per the defined Analyzer locale (except for the [`collation` Analyzer](../analyzers.md#collation)) nor the server language (startup option `--default-language`)! -Also see [Known Issues](../../release-notes/version-3.13/known-issues-in-3-13.md#arangosearch). +Also see [Known Issues](../../release-notes/version-4.0/known-issues-in-4-0.md#arangosearch). {{< /warning >}} ### View definition diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/ranking.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/ranking.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/ranking.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/ranking.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/search-alias-views-reference.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/search-alias-views-reference.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/search-alias-views-reference.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/search-alias-views-reference.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/search-highlighting.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/search-highlighting.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/search-highlighting.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/search-highlighting.md diff --git a/site/content/arangodb/3.13/index-and-search/arangosearch/wildcard-search.md b/site/content/arangodb/4.0/indexes-and-search/arangosearch/wildcard-search.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/arangosearch/wildcard-search.md rename to site/content/arangodb/4.0/indexes-and-search/arangosearch/wildcard-search.md diff --git a/site/content/arangodb/3.13/index-and-search/indexing/_index.md b/site/content/arangodb/4.0/indexes-and-search/indexing/_index.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/indexing/_index.md rename to site/content/arangodb/4.0/indexes-and-search/indexing/_index.md diff --git a/site/content/arangodb/3.13/index-and-search/indexing/basics.md b/site/content/arangodb/4.0/indexes-and-search/indexing/basics.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/indexing/basics.md rename to site/content/arangodb/4.0/indexes-and-search/indexing/basics.md diff --git a/site/content/arangodb/3.13/index-and-search/indexing/index-utilization.md b/site/content/arangodb/4.0/indexes-and-search/indexing/index-utilization.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/indexing/index-utilization.md rename to site/content/arangodb/4.0/indexes-and-search/indexing/index-utilization.md diff --git a/site/content/arangodb/3.13/index-and-search/indexing/which-index-to-use-when.md b/site/content/arangodb/4.0/indexes-and-search/indexing/which-index-to-use-when.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/indexing/which-index-to-use-when.md rename to site/content/arangodb/4.0/indexes-and-search/indexing/which-index-to-use-when.md diff --git a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/_index.md b/site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/_index.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/_index.md rename to site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/_index.md diff --git a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/fulltext-indexes.md b/site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/fulltext-indexes.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/fulltext-indexes.md rename to site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/fulltext-indexes.md diff --git a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md b/site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md rename to site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md diff --git a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/inverted-indexes.md b/site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/inverted-indexes.md similarity index 99% rename from site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/inverted-indexes.md rename to site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/inverted-indexes.md index 7eb5bb11b1..1edf1ac67a 100644 --- a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/inverted-indexes.md +++ b/site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/inverted-indexes.md @@ -390,7 +390,7 @@ i.e. range queries backed by inverted indexes do not follow the language rules as per the defined Analyzer locale (except for the [`collation` Analyzer](../../analyzers.md#collation)) nor the server language (startup option `--default-language`)! -Also see [Known Issues](../../../release-notes/version-3.13/known-issues-in-3-13.md#arangosearch). +Also see [Known Issues](../../../release-notes/version-4.0/known-issues-in-4-0.md#arangosearch). {{< /warning >}} ### Case-insensitive search diff --git a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md b/site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md rename to site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md diff --git a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/persistent-indexes.md b/site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/persistent-indexes.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/persistent-indexes.md rename to site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/persistent-indexes.md diff --git a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/ttl-indexes.md b/site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/ttl-indexes.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/ttl-indexes.md rename to site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/ttl-indexes.md diff --git a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/vector-indexes.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md rename to site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/vector-indexes.md diff --git a/site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md b/site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/vertex-centric-indexes.md similarity index 100% rename from site/content/arangodb/3.13/index-and-search/indexing/working-with-indexes/vertex-centric-indexes.md rename to site/content/arangodb/4.0/indexes-and-search/indexing/working-with-indexes/vertex-centric-indexes.md diff --git a/site/content/arangodb/3.13/operations/_index.md b/site/content/arangodb/4.0/operations/_index.md similarity index 100% rename from site/content/arangodb/3.13/operations/_index.md rename to site/content/arangodb/4.0/operations/_index.md diff --git a/site/content/arangodb/3.13/operations/administration/_index.md b/site/content/arangodb/4.0/operations/administration/_index.md similarity index 100% rename from site/content/arangodb/3.13/operations/administration/_index.md rename to site/content/arangodb/4.0/operations/administration/_index.md diff --git a/site/content/arangodb/3.13/operations/administration/arangodb-starter/_index.md b/site/content/arangodb/4.0/operations/administration/arangodb-starter/_index.md similarity index 100% rename from site/content/arangodb/3.13/operations/administration/arangodb-starter/_index.md rename to site/content/arangodb/4.0/operations/administration/arangodb-starter/_index.md diff --git a/site/content/arangodb/3.13/operations/administration/arangodb-starter/recovery-procedure.md b/site/content/arangodb/4.0/operations/administration/arangodb-starter/recovery-procedure.md similarity index 100% rename from site/content/arangodb/3.13/operations/administration/arangodb-starter/recovery-procedure.md rename to site/content/arangodb/4.0/operations/administration/arangodb-starter/recovery-procedure.md diff --git a/site/content/arangodb/3.13/operations/administration/arangodb-starter/removal-procedure.md b/site/content/arangodb/4.0/operations/administration/arangodb-starter/removal-procedure.md similarity index 100% rename from site/content/arangodb/3.13/operations/administration/arangodb-starter/removal-procedure.md rename to site/content/arangodb/4.0/operations/administration/arangodb-starter/removal-procedure.md diff --git a/site/content/arangodb/3.13/operations/administration/configuration.md b/site/content/arangodb/4.0/operations/administration/configuration.md similarity index 100% rename from site/content/arangodb/3.13/operations/administration/configuration.md rename to site/content/arangodb/4.0/operations/administration/configuration.md diff --git a/site/content/arangodb/3.13/operations/administration/import-and-export.md b/site/content/arangodb/4.0/operations/administration/import-and-export.md similarity index 100% rename from site/content/arangodb/3.13/operations/administration/import-and-export.md rename to site/content/arangodb/4.0/operations/administration/import-and-export.md diff --git a/site/content/arangodb/3.13/operations/administration/license-management.md b/site/content/arangodb/4.0/operations/administration/license-management.md similarity index 99% rename from site/content/arangodb/3.13/operations/administration/license-management.md rename to site/content/arangodb/4.0/operations/administration/license-management.md index bba5b2bfe2..45bce80509 100644 --- a/site/content/arangodb/3.13/operations/administration/license-management.md +++ b/site/content/arangodb/4.0/operations/administration/license-management.md @@ -5,7 +5,7 @@ weight: 20 description: >- How to apply a license and check the licensing status of an ArangoDB deployment aliases: - - ../upgrading/community-to-enterprise-upgrade # 3.12 -> 3.13 + - ../upgrading/community-to-enterprise-upgrade # 3.12 -> 4.0 --- The Enterprise Edition of ArangoDB requires a license so that you can use ArangoDB for commercial purposes and have a dataset size over 100 GiB. See diff --git a/site/content/arangodb/3.13/operations/administration/log-levels.md b/site/content/arangodb/4.0/operations/administration/log-levels.md similarity index 100% rename from site/content/arangodb/3.13/operations/administration/log-levels.md rename to site/content/arangodb/4.0/operations/administration/log-levels.md diff --git a/site/content/arangodb/3.13/operations/administration/reduce-memory-footprint.md b/site/content/arangodb/4.0/operations/administration/reduce-memory-footprint.md similarity index 100% rename from site/content/arangodb/3.13/operations/administration/reduce-memory-footprint.md rename to site/content/arangodb/4.0/operations/administration/reduce-memory-footprint.md diff --git a/site/content/arangodb/3.13/operations/administration/telemetrics.md b/site/content/arangodb/4.0/operations/administration/telemetrics.md similarity index 100% rename from site/content/arangodb/3.13/operations/administration/telemetrics.md rename to site/content/arangodb/4.0/operations/administration/telemetrics.md diff --git a/site/content/arangodb/3.13/operations/administration/user-management/_index.md b/site/content/arangodb/4.0/operations/administration/user-management/_index.md similarity index 100% rename from site/content/arangodb/3.13/operations/administration/user-management/_index.md rename to site/content/arangodb/4.0/operations/administration/user-management/_index.md diff --git a/site/content/arangodb/3.13/operations/administration/user-management/in-arangosh.md b/site/content/arangodb/4.0/operations/administration/user-management/in-arangosh.md similarity index 100% rename from site/content/arangodb/3.13/operations/administration/user-management/in-arangosh.md rename to site/content/arangodb/4.0/operations/administration/user-management/in-arangosh.md diff --git a/site/content/arangodb/3.13/operations/backup-and-restore.md b/site/content/arangodb/4.0/operations/backup-and-restore.md similarity index 99% rename from site/content/arangodb/3.13/operations/backup-and-restore.md rename to site/content/arangodb/4.0/operations/backup-and-restore.md index fab5dd241b..aed4f8b21a 100644 --- a/site/content/arangodb/3.13/operations/backup-and-restore.md +++ b/site/content/arangodb/4.0/operations/backup-and-restore.md @@ -311,4 +311,4 @@ not be suited for. - **Known Issues** - See the list of [Known Issues](../release-notes/version-3.13/known-issues-in-3-13.md#hot-backup). + See the list of [Known Issues](../release-notes/version-4.0/known-issues-in-4-0.md#hot-backup). diff --git a/site/content/arangodb/3.13/operations/installation/_index.md b/site/content/arangodb/4.0/operations/installation/_index.md similarity index 100% rename from site/content/arangodb/3.13/operations/installation/_index.md rename to site/content/arangodb/4.0/operations/installation/_index.md diff --git a/site/content/arangodb/3.13/operations/installation/docker.md b/site/content/arangodb/4.0/operations/installation/docker.md similarity index 100% rename from site/content/arangodb/3.13/operations/installation/docker.md rename to site/content/arangodb/4.0/operations/installation/docker.md diff --git a/site/content/arangodb/3.13/operations/installation/linux/_index.md b/site/content/arangodb/4.0/operations/installation/linux/_index.md similarity index 100% rename from site/content/arangodb/3.13/operations/installation/linux/_index.md rename to site/content/arangodb/4.0/operations/installation/linux/_index.md diff --git a/site/content/arangodb/3.13/operations/installation/linux/linux-os-tuning-script-examples.md b/site/content/arangodb/4.0/operations/installation/linux/linux-os-tuning-script-examples.md similarity index 100% rename from site/content/arangodb/3.13/operations/installation/linux/linux-os-tuning-script-examples.md rename to site/content/arangodb/4.0/operations/installation/linux/linux-os-tuning-script-examples.md diff --git a/site/content/arangodb/3.13/operations/installation/linux/operating-system-configuration.md b/site/content/arangodb/4.0/operations/installation/linux/operating-system-configuration.md similarity index 100% rename from site/content/arangodb/3.13/operations/installation/linux/operating-system-configuration.md rename to site/content/arangodb/4.0/operations/installation/linux/operating-system-configuration.md diff --git a/site/content/arangodb/3.13/operations/installation/uninstallation.md b/site/content/arangodb/4.0/operations/installation/uninstallation.md similarity index 100% rename from site/content/arangodb/3.13/operations/installation/uninstallation.md rename to site/content/arangodb/4.0/operations/installation/uninstallation.md diff --git a/site/content/arangodb/3.13/operations/security/_index.md b/site/content/arangodb/4.0/operations/security/_index.md similarity index 100% rename from site/content/arangodb/3.13/operations/security/_index.md rename to site/content/arangodb/4.0/operations/security/_index.md diff --git a/site/content/arangodb/3.13/operations/security/audit-logging.md b/site/content/arangodb/4.0/operations/security/audit-logging.md similarity index 100% rename from site/content/arangodb/3.13/operations/security/audit-logging.md rename to site/content/arangodb/4.0/operations/security/audit-logging.md diff --git a/site/content/arangodb/3.13/operations/security/change-root-password.md b/site/content/arangodb/4.0/operations/security/change-root-password.md similarity index 100% rename from site/content/arangodb/3.13/operations/security/change-root-password.md rename to site/content/arangodb/4.0/operations/security/change-root-password.md diff --git a/site/content/arangodb/3.13/operations/security/encryption-at-rest.md b/site/content/arangodb/4.0/operations/security/encryption-at-rest.md similarity index 100% rename from site/content/arangodb/3.13/operations/security/encryption-at-rest.md rename to site/content/arangodb/4.0/operations/security/encryption-at-rest.md diff --git a/site/content/arangodb/3.13/operations/security/securing-starter-deployments.md b/site/content/arangodb/4.0/operations/security/securing-starter-deployments.md similarity index 100% rename from site/content/arangodb/3.13/operations/security/securing-starter-deployments.md rename to site/content/arangodb/4.0/operations/security/securing-starter-deployments.md diff --git a/site/content/arangodb/3.13/operations/security/security-options.md b/site/content/arangodb/4.0/operations/security/security-options.md similarity index 100% rename from site/content/arangodb/3.13/operations/security/security-options.md rename to site/content/arangodb/4.0/operations/security/security-options.md diff --git a/site/content/arangodb/3.13/operations/troubleshooting/_index.md b/site/content/arangodb/4.0/operations/troubleshooting/_index.md similarity index 100% rename from site/content/arangodb/3.13/operations/troubleshooting/_index.md rename to site/content/arangodb/4.0/operations/troubleshooting/_index.md diff --git a/site/content/arangodb/3.13/operations/troubleshooting/arangod.md b/site/content/arangodb/4.0/operations/troubleshooting/arangod.md similarity index 100% rename from site/content/arangodb/3.13/operations/troubleshooting/arangod.md rename to site/content/arangodb/4.0/operations/troubleshooting/arangod.md diff --git a/site/content/arangodb/3.13/operations/troubleshooting/cluster/_index.md b/site/content/arangodb/4.0/operations/troubleshooting/cluster/_index.md similarity index 100% rename from site/content/arangodb/3.13/operations/troubleshooting/cluster/_index.md rename to site/content/arangodb/4.0/operations/troubleshooting/cluster/_index.md diff --git a/site/content/arangodb/3.13/operations/troubleshooting/cluster/agency-dump.md b/site/content/arangodb/4.0/operations/troubleshooting/cluster/agency-dump.md similarity index 100% rename from site/content/arangodb/3.13/operations/troubleshooting/cluster/agency-dump.md rename to site/content/arangodb/4.0/operations/troubleshooting/cluster/agency-dump.md diff --git a/site/content/arangodb/3.13/operations/troubleshooting/emergency-console.md b/site/content/arangodb/4.0/operations/troubleshooting/emergency-console.md similarity index 100% rename from site/content/arangodb/3.13/operations/troubleshooting/emergency-console.md rename to site/content/arangodb/4.0/operations/troubleshooting/emergency-console.md diff --git a/site/content/arangodb/3.13/operations/troubleshooting/query-debug-packages.md b/site/content/arangodb/4.0/operations/troubleshooting/query-debug-packages.md similarity index 100% rename from site/content/arangodb/3.13/operations/troubleshooting/query-debug-packages.md rename to site/content/arangodb/4.0/operations/troubleshooting/query-debug-packages.md diff --git a/site/content/arangodb/3.13/operations/upgrading/_index.md b/site/content/arangodb/4.0/operations/upgrading/_index.md similarity index 100% rename from site/content/arangodb/3.13/operations/upgrading/_index.md rename to site/content/arangodb/4.0/operations/upgrading/_index.md diff --git a/site/content/arangodb/3.13/operations/upgrading/downgrading.md b/site/content/arangodb/4.0/operations/upgrading/downgrading.md similarity index 100% rename from site/content/arangodb/3.13/operations/upgrading/downgrading.md rename to site/content/arangodb/4.0/operations/upgrading/downgrading.md diff --git a/site/content/arangodb/3.13/operations/upgrading/manual-deployments/_index.md b/site/content/arangodb/4.0/operations/upgrading/manual-deployments/_index.md similarity index 100% rename from site/content/arangodb/3.13/operations/upgrading/manual-deployments/_index.md rename to site/content/arangodb/4.0/operations/upgrading/manual-deployments/_index.md diff --git a/site/content/arangodb/3.13/operations/upgrading/manual-deployments/cluster.md b/site/content/arangodb/4.0/operations/upgrading/manual-deployments/cluster.md similarity index 100% rename from site/content/arangodb/3.13/operations/upgrading/manual-deployments/cluster.md rename to site/content/arangodb/4.0/operations/upgrading/manual-deployments/cluster.md diff --git a/site/content/arangodb/3.13/operations/upgrading/manual-deployments/single-server.md b/site/content/arangodb/4.0/operations/upgrading/manual-deployments/single-server.md similarity index 100% rename from site/content/arangodb/3.13/operations/upgrading/manual-deployments/single-server.md rename to site/content/arangodb/4.0/operations/upgrading/manual-deployments/single-server.md diff --git a/site/content/arangodb/3.13/operations/upgrading/starter-deployments.md b/site/content/arangodb/4.0/operations/upgrading/starter-deployments.md similarity index 100% rename from site/content/arangodb/3.13/operations/upgrading/starter-deployments.md rename to site/content/arangodb/4.0/operations/upgrading/starter-deployments.md diff --git a/site/content/arangodb/3.13/release-notes/_index.md b/site/content/arangodb/4.0/release-notes/_index.md similarity index 91% rename from site/content/arangodb/3.13/release-notes/_index.md rename to site/content/arangodb/4.0/release-notes/_index.md index a780366aba..1c00bf6c76 100644 --- a/site/content/arangodb/3.13/release-notes/_index.md +++ b/site/content/arangodb/4.0/release-notes/_index.md @@ -10,8 +10,10 @@ description: >- For a high level list of changes, please refer to one of the following sections: +- What's New in 4.x: + [4.0](version-4.0/whats-new-in-4-0.md) + - What's New in 3.x: - [3.13](version-3.13/whats-new-in-3-13.md), [3.12](version-3.12/whats-new-in-3-12.md), [3.11](version-3.11/whats-new-in-3-11.md), [3.10](version-3.10/whats-new-in-3-10.md), @@ -31,8 +33,10 @@ For a high level list of changes, please refer to one of the following sections: For a detailed list of changes to the ArangoDB core programs and tools, please refer to the version specific changelogs: +- Changelogs 4.x: + [4.0](https://raw.githubusercontent.com/arangodb/arangodb/devel/CHANGELOG) + - Changelogs 3.x: - [3.13](https://raw.githubusercontent.com/arangodb/arangodb/devel/CHANGELOG), [3.12](https://raw.githubusercontent.com/arangodb/arangodb/{{< full-version "3.12" >}}/CHANGELOG), [3.11](https://raw.githubusercontent.com/arangodb/arangodb/3.11/CHANGELOG), [3.10](https://raw.githubusercontent.com/arangodb/arangodb/3.10/CHANGELOG), @@ -57,8 +61,10 @@ Additional changelogs for tools not included in the main repository: For a list of incompatible changes, please refer to one of the following sections. +- Incompatible changes in 4.x: + [4.0](version-4.0/incompatible-changes-in-4-0.md) + - Incompatible changes in 3.x: - [3.13](version-3.13/incompatible-changes-in-3-13.md), [3.12](version-3.12/incompatible-changes-in-3-12.md), [3.11](version-3.11/incompatible-changes-in-3-11.md), [3.10](version-3.10/incompatible-changes-in-3-10.md), @@ -78,8 +84,10 @@ For a list of incompatible changes, please refer to one of the following section For an overview of changes to ArangoDB's interfaces, have a look at below sections. The HTTP API part is especially relevant for driver maintainers. +- API Changes in 4.x: + [4.0](version-4.0/api-changes-in-4-0.md) + - API Changes in 3.x: - [3.13](version-3.13/api-changes-in-3-13.md), [3.12](version-3.12/api-changes-in-3-12.md), [3.11](version-3.11/api-changes-in-3-11.md), [3.10](version-3.10/api-changes-in-3-10.md), @@ -91,8 +99,10 @@ sections. The HTTP API part is especially relevant for driver maintainers. For a list of known issues, please refer to one of the following sections: +- Known Issues in 4.x: + [4.0](version-4.0/known-issues-in-4-0.md) + - Known Issues in 3.x: - [3.13](version-3.13/known-issues-in-3-13.md), [3.12](version-3.12/known-issues-in-3-12.md), [3.11](version-3.11/known-issues-in-3-11.md), [3.10](version-3.10/known-issues-in-3-10.md), diff --git a/site/content/arangodb/3.13/release-notes/deprecated-and-removed-features.md b/site/content/arangodb/4.0/release-notes/deprecated-and-removed-features.md similarity index 97% rename from site/content/arangodb/3.13/release-notes/deprecated-and-removed-features.md rename to site/content/arangodb/4.0/release-notes/deprecated-and-removed-features.md index da77dfec95..d230237367 100644 --- a/site/content/arangodb/3.13/release-notes/deprecated-and-removed-features.md +++ b/site/content/arangodb/4.0/release-notes/deprecated-and-removed-features.md @@ -109,7 +109,7 @@ detailed information about breaking changes before upgrading. - **Skiplist and hash indexes**: Skiplist and hash indexes have been deprecated in 3.9 and will be removed in a future version of ArangoDB. Currently, they are an alias for a - [persistent index](../index-and-search/indexing/basics.md#persistent-index). + [persistent index](../indexes-and-search/indexing/basics.md#persistent-index). - **Bundled NPM modules**: The bundled NPM modules `aqb`, `chai`, `dedent`, `error-stack-parser`, @@ -135,7 +135,7 @@ detailed information about breaking changes before upgrading. - **Fulltext indexes**: The fulltext index type is deprecated from version 3.10 onwards. - It is recommended to use [ArangoSearch](../index-and-search/arangosearch/_index.md) for advanced full-text search capabilities. + It is recommended to use [ArangoSearch](../indexes-and-search/arangosearch/_index.md) for advanced full-text search capabilities. - **Simple Queries**: Idiomatic interface in arangosh to perform trivial queries. They are superseded by [AQL queries](../aql/_index.md), which can also @@ -265,7 +265,7 @@ detailed information about breaking changes before upgrading. - **HTTP and JavaScript traversal APIs**: The HTTP traversal API as well as the `@arangodb/graph/traversal` JavaScript traversal module were deprecated since version 3.4.0 and have been removed in version 3.12.0. You can - [traverse graphs with AQL](../aql/graphs/traversals.md) instead. + [traverse graphs with AQL](../aql/graph-queries/traversals.md) instead. - **Specialized index creation methods in JavaScript API**: The following JavaScript methods for creating indexes from the ArangoShell @@ -281,4 +281,4 @@ detailed information about breaking changes before upgrading. Instead of using these methods, you should use the generic `collection.ensureIndex(...)` method, which provides a superset of all the deprecated methods. Also see - [Creating an index](../index-and-search/indexing/working-with-indexes/_index.md#creating-an-index). + [Creating an index](../indexes-and-search/indexing/working-with-indexes/_index.md#creating-an-index). diff --git a/site/content/arangodb/3.13/release-notes/version-3.0/_index.md b/site/content/arangodb/4.0/release-notes/version-3.0/_index.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.0/_index.md rename to site/content/arangodb/4.0/release-notes/version-3.0/_index.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.0/incompatible-changes-in-3-0.md b/site/content/arangodb/4.0/release-notes/version-3.0/incompatible-changes-in-3-0.md similarity index 99% rename from site/content/arangodb/3.13/release-notes/version-3.0/incompatible-changes-in-3-0.md rename to site/content/arangodb/4.0/release-notes/version-3.0/incompatible-changes-in-3-0.md index 0babc90491..0531c995bf 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.0/incompatible-changes-in-3-0.md +++ b/site/content/arangodb/4.0/release-notes/version-3.0/incompatible-changes-in-3-0.md @@ -126,7 +126,7 @@ are missing from the replacement document, an `REPLACE` operation will fail. #### Graph functions In version 3.0 all former graph related functions have been removed from AQL to -be replaced by [native AQL constructs](../../aql/graphs/_index.md). +be replaced by [native AQL constructs](../../aql/graph-queries/_index.md). These constructs allow for more fine-grained filtering on several graph levels. Also this allows the AQL optimizer to automatically improve these queries by enhancing them with appropriate indexes. diff --git a/site/content/arangodb/3.13/release-notes/version-3.0/whats-new-in-3-0.md b/site/content/arangodb/4.0/release-notes/version-3.0/whats-new-in-3-0.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.0/whats-new-in-3-0.md rename to site/content/arangodb/4.0/release-notes/version-3.0/whats-new-in-3-0.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.1/_index.md b/site/content/arangodb/4.0/release-notes/version-3.1/_index.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.1/_index.md rename to site/content/arangodb/4.0/release-notes/version-3.1/_index.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.1/incompatible-changes-in-3-1.md b/site/content/arangodb/4.0/release-notes/version-3.1/incompatible-changes-in-3-1.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.1/incompatible-changes-in-3-1.md rename to site/content/arangodb/4.0/release-notes/version-3.1/incompatible-changes-in-3-1.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.1/whats-new-in-3-1.md b/site/content/arangodb/4.0/release-notes/version-3.1/whats-new-in-3-1.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.1/whats-new-in-3-1.md rename to site/content/arangodb/4.0/release-notes/version-3.1/whats-new-in-3-1.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.10/_index.md b/site/content/arangodb/4.0/release-notes/version-3.10/_index.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.10/_index.md rename to site/content/arangodb/4.0/release-notes/version-3.10/_index.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.10/api-changes-in-3-10.md b/site/content/arangodb/4.0/release-notes/version-3.10/api-changes-in-3-10.md similarity index 98% rename from site/content/arangodb/3.13/release-notes/version-3.10/api-changes-in-3-10.md rename to site/content/arangodb/4.0/release-notes/version-3.10/api-changes-in-3-10.md index 981c3a1e73..4600016e08 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.10/api-changes-in-3-10.md +++ b/site/content/arangodb/4.0/release-notes/version-3.10/api-changes-in-3-10.md @@ -568,20 +568,20 @@ search highlighting capabilities for Views. The `/_api/analyzer` endpoint supports new Analyzer types in the Enterprise Edition: -- [`minhash`](../../index-and-search/analyzers.md#minhash): +- [`minhash`](../../indexes-and-search/analyzers.md#minhash): It has two properties, `analyzer` (object) and `numHashes` (number). The `analyzer` object is an Analyzer-like definition with a `type` (string) and a `properties` attribute (object). The properties depend on the Analyzer type. -- [`classification`](../../index-and-search/analyzers.md#classification) (experimental): +- [`classification`](../../indexes-and-search/analyzers.md#classification) (experimental): It has three properties, `model_location` (string), `top_k` (number, optional, default: `1`), and `threshold` (number, optional, default: `0.99`). -- [`nearest_neighbors`](../../index-and-search/analyzers.md#nearest_neighbors) (experimental): +- [`nearest_neighbors`](../../indexes-and-search/analyzers.md#nearest_neighbors) (experimental): It has two properties, `model_location` (string) and `top_k` (number, optional, default: `1`). -- [`geo_s2`](../../index-and-search/analyzers.md#geo_s2) (introduced in v3.10.5): +- [`geo_s2`](../../indexes-and-search/analyzers.md#geo_s2) (introduced in v3.10.5): Like the existing `geojson` Analyzer, but with an additional `format` property that can be set to `"latLngDouble"` (default), `"latLngInt"`, or `"s2Point"`. @@ -592,7 +592,7 @@ Enterprise Edition: Analyzers of the `geojson` type have a new `legacy` property. The default is `false`. This option controls how GeoJSON Polygons are interpreted. -See the [`geojson` Analyzer](../../index-and-search/analyzers.md#geojson). +See the [`geojson` Analyzer](../../indexes-and-search/analyzers.md#geojson). #### Views API @@ -622,7 +622,7 @@ You may use a shorthand notations on `arangosearch` View creation or the `storedValues` option, like `["attr1", "attr2"]`, instead of using an array of objects. -See the [`arangosearch` Views Reference](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +See the [`arangosearch` Views Reference](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. #### Geo-spatial indexes @@ -630,7 +630,7 @@ for details. Indexes of the `geo` type have a new `legacyPolygons` option. If `geoJson` is set to `true`, then this option controls how GeoJSON Polygons -are interpreted. Also see [Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons). +are interpreted. Also see [Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons). The default is `true` for geo indexes that were created in versions before 3.10, and `false` for geo indexes created in 3.10 or later. diff --git a/site/content/arangodb/3.13/release-notes/version-3.10/incompatible-changes-in-3-10.md b/site/content/arangodb/4.0/release-notes/version-3.10/incompatible-changes-in-3-10.md similarity index 97% rename from site/content/arangodb/3.13/release-notes/version-3.10/incompatible-changes-in-3-10.md rename to site/content/arangodb/4.0/release-notes/version-3.10/incompatible-changes-in-3-10.md index 6ae62977a3..d31d834a16 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.10/incompatible-changes-in-3-10.md +++ b/site/content/arangodb/4.0/release-notes/version-3.10/incompatible-changes-in-3-10.md @@ -12,7 +12,7 @@ In cluster deployments, you need to declare collections that an AQL query implicitly reads from using the [`WITH` operation](../../aql/high-level-operations/with.md). From version 3.10.0 onward, it is necessary to also declare the collections of -start vertices that are used for [graph traversals](../../aql/graphs/traversals.md) +start vertices that are used for [graph traversals](../../aql/graph-queries/traversals.md) if you specify start vertices using strings. In previous versions, the following query would work: @@ -75,7 +75,7 @@ instead. ## Indexes -The fulltext index type is now deprecated in favor of [ArangoSearch](../../index-and-search/arangosearch/_index.md). +The fulltext index type is now deprecated in favor of [ArangoSearch](../../indexes-and-search/arangosearch/_index.md). Fulltext indexes are still usable in this version of ArangoDB, although their usage is now discouraged. @@ -107,7 +107,7 @@ interpretation of GeoJSON polygons in version 3.9 and older: This can mean that old polygon GeoJSON data in the database is suddenly interpreted in a different way. See -[Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details. +[Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details. Also see the definition of [Polygons](../../aql/functions/geo.md#polygon) and [GeoJSON interpretation](../../aql/functions/geo.md#geojson-interpretation). @@ -125,7 +125,7 @@ Whether a clockwise boundary specifies the complement of the small region intentionally or not cannot be determined automatically. Please test the new behavior manually. -See [Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details. +See [Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details. --- @@ -148,7 +148,7 @@ the new Analyzers. | A ring can at most enclose half the Earth's surface | A ring can enclose the entire surface of the Earth | Also see the definition of [Polygons](../../aql/functions/geo.md#polygon) and the -[`geojson` Analyzer](../../index-and-search/analyzers.md#geojson) documentation. +[`geojson` Analyzer](../../indexes-and-search/analyzers.md#geojson) documentation. ## Maximum Array / Object Nesting diff --git a/site/content/arangodb/3.13/release-notes/version-3.10/known-issues-in-3-10.md b/site/content/arangodb/4.0/release-notes/version-3.10/known-issues-in-3-10.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.10/known-issues-in-3-10.md rename to site/content/arangodb/4.0/release-notes/version-3.10/known-issues-in-3-10.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.10/whats-new-in-3-10.md b/site/content/arangodb/4.0/release-notes/version-3.10/whats-new-in-3-10.md similarity index 97% rename from site/content/arangodb/3.13/release-notes/version-3.10/whats-new-in-3-10.md rename to site/content/arangodb/4.0/release-notes/version-3.10/whats-new-in-3-10.md index de79f8cb34..e23c1a223b 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.10/whats-new-in-3-10.md +++ b/site/content/arangodb/4.0/release-notes/version-3.10/whats-new-in-3-10.md @@ -147,7 +147,7 @@ function in queries. Like Views, this type of index is eventually consistent. -See [Inverted index](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md) for details. +See [Inverted index](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md) for details. ### `search-alias` Views @@ -175,7 +175,7 @@ need to specify an Analyzer context with the `ANALYZER()` function in queries because it is inferred from the inverted index definition, which only supports a single Analyzer per field. -Also see [Getting started with ArangoSearch](../../index-and-search/arangosearch/_index.md#getting-started-with-arangosearch). +Also see [Getting started with ArangoSearch](../../indexes-and-search/arangosearch/_index.md#getting-started-with-arangosearch). ### Search highlighting (Enterprise Edition) @@ -248,7 +248,7 @@ db._query(`FOR doc IN food_view */ ``` -See [Search highlighting with ArangoSearch](../../index-and-search/arangosearch/search-highlighting.md) +See [Search highlighting with ArangoSearch](../../indexes-and-search/arangosearch/search-highlighting.md) for details. ### Nested search (Enterprise Edition) @@ -296,8 +296,8 @@ FOR doc IN viewName RETURN doc ``` -See [Nested search with ArangoSearch](../../index-and-search/arangosearch/nested-search.md) using Views -and the nested search example using [Inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search) +See [Nested search with ArangoSearch](../../indexes-and-search/arangosearch/nested-search.md) using Views +and the nested search example using [Inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md#nested-search) for details. This feature is only available in the Enterprise Edition. @@ -310,7 +310,7 @@ enumeration node, if using just scoring for a sort operation. ### ArangoSearch column cache (Enterprise Edition) -[`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) support new caching options. +[`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) support new caching options. <small>Introduced in: v3.9.5, v3.10.2</small> @@ -366,7 +366,7 @@ metric. ArangoSearch caching is only available in the Enterprise Edition. -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md) for examples. {{< info >}} @@ -435,7 +435,7 @@ Additionally, the JavaScript and HTTP API for indexes has been extended with figures for `arangosearch` View links and inverted indexes. In arangosh, you can call `db.<collection>.indexes(true, true);` to get at this -information. Also see [Listing all indexes of a collection](../../index-and-search/indexing/working-with-indexes/_index.md#listing-all-indexes-of-a-collection). +information. Also see [Listing all indexes of a collection](../../indexes-and-search/indexing/working-with-indexes/_index.md#listing-all-indexes-of-a-collection). The information has the following structure: ```js @@ -472,7 +472,7 @@ to perform. This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#minhash) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#minhash) for details. ### `classification` Analyzer (Enterprise Edition) @@ -481,7 +481,7 @@ using a supervised fastText word embedding model that you provide. This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#classification) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#classification) for details. ### `nearest_neighbors` Analyzer (Enterprise Edition) @@ -490,7 +490,7 @@ using a supervised fastText word embedding model that you provide. This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#nearest_neighbors) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#nearest_neighbors) for details. ### `geo_s2` Analyzer (Enterprise Edition) @@ -511,7 +511,7 @@ disk, the precision, and query performance: This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#geo_s2) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#geo_s2) for details. ## Web Interface @@ -533,7 +533,7 @@ FOR p IN OUTBOUND ALL_SHORTEST_PATHS 'places/Carlisle' TO 'places/London' RETURN { places: p.vertices[*].label } ``` -See [All Shortest Paths in AQL](../../aql/graphs/all-shortest-paths.md) for details. +See [All Shortest Paths in AQL](../../aql/graph-queries/all-shortest-paths.md) for details. ### Parallelism for Sharded Graphs (Enterprise Edition) @@ -568,7 +568,7 @@ This feature is only available in the Enterprise Edition. The 3.10 release of ArangoDB conforms to the standards specified in [GeoJSON](https://datatracker.ietf.org/doc/html/rfc7946) -and [GeoJSON Mode](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#geojson-mode). +and [GeoJSON Mode](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#geojson-mode). This diverges from the previous implementation in two fundamental ways: 1. The syntax of GeoJSON objects is interpreted so that lines on the @@ -593,13 +593,13 @@ has been introduced to guarantee backwards compatibility. For existing users who wish to take advantage of the new standard behavior, geo indexes need to be dropped and recreated after an upgrade. -See [Legacy Polygons](../../index-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for +See [Legacy Polygons](../../indexes-and-search/indexing/working-with-indexes/geo-spatial-indexes.md#legacy-polygons) for details and for hints about upgrading to version 3.10 or later. If you use `geojson` Analyzers including in `arangosearch` Views and upgrade from a version below 3.10 to a version of 3.10 or higher, the interpretation of GeoJSON Polygons changes. See the `legacy` property of the -[`geojson` Analyzer](../../index-and-search/analyzers.md#geojson) for details and how to restore the +[`geojson` Analyzer](../../indexes-and-search/analyzers.md#geojson) for details and how to restore the old behavior. ### Traversal Projections (Enterprise Edition) @@ -611,7 +611,7 @@ but only access small parts of the documents. By default, up to 5 attributes are extracted instead of loading the full document. You can control this number with the `maxProjections` option, which is now -supported for [graph traversals](../../aql/graphs/traversals.md#working-with-named-graphs). +supported for [graph traversals](../../aql/graph-queries/traversals.md#working-with-named-graphs). See also [how to use `maxProjections` with FOR loops](../../aql/high-level-operations/for.md#maxprojections). In the following query, the accessed attributes are the `name` attribute of the @@ -786,7 +786,7 @@ index hint for tweaking performance: FOR … IN … OPTIONS { lookahead: 32 } ``` -See [Lookahead Index Hint](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md#lookahead-index-hint). +See [Lookahead Index Hint](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md#lookahead-index-hint). ### Question mark operator @@ -832,7 +832,7 @@ AQL functions added to the 3.10 Enterprise Edition: - [`OFFSET_INFO()`](../../aql/functions/arangosearch.md#offset_info): An ArangoSearch function to get the start offsets and lengths of matches for - [search highlighting](../../index-and-search/arangosearch/search-highlighting.md). + [search highlighting](../../indexes-and-search/arangosearch/search-highlighting.md). - [`MINHASH()`](../../aql/functions/miscellaneous.md#minhash): A new function for locality-sensitive hashing to approximate the @@ -993,7 +993,7 @@ db.<collection>.ensureIndex({ }); ``` -See [Persistent Indexes](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes). +See [Persistent Indexes](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes). ### Enabling caching for index values @@ -1015,7 +1015,7 @@ scanned index entries is large. As the cache is hash-based and unsorted, it cannot be used for full or partial range scans, for sorting, or for lookups that do not include all index attributes. -See [Persistent Indexes](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values). +See [Persistent Indexes](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#caching-of-index-values). ## Document keys diff --git a/site/content/arangodb/3.13/release-notes/version-3.11/_index.md b/site/content/arangodb/4.0/release-notes/version-3.11/_index.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.11/_index.md rename to site/content/arangodb/4.0/release-notes/version-3.11/_index.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.11/api-changes-in-3-11.md b/site/content/arangodb/4.0/release-notes/version-3.11/api-changes-in-3-11.md similarity index 99% rename from site/content/arangodb/3.13/release-notes/version-3.11/api-changes-in-3-11.md rename to site/content/arangodb/4.0/release-notes/version-3.11/api-changes-in-3-11.md index 232b181f0b..2b3b54b46e 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.11/api-changes-in-3-11.md +++ b/site/content/arangodb/4.0/release-notes/version-3.11/api-changes-in-3-11.md @@ -482,7 +482,7 @@ and [Monitoring per collection/database/user](../version-3.11/whats-new-in-3-11. The `/_api/analyzer` endpoint supports a new Analyzer type in the Enterprise Edition: -- [`geo_s2`](../../index-and-search/analyzers.md#geo_s2) (introduced in v3.10.5): +- [`geo_s2`](../../indexes-and-search/analyzers.md#geo_s2) (introduced in v3.10.5): Like the existing `geojson` Analyzer, but with an additional `format` property that can be set to `"latLngDouble"` (default), `"latLngInt"`, or `"s2Point"`. @@ -579,7 +579,7 @@ You may use a shorthand notations on `arangosearch` View creation or the `storedValues` option, like `["attr1", "attr2"]`, instead of using an array of objects. -See the [`arangosearch` Views Reference](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +See the [`arangosearch` Views Reference](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. #### Pregel API diff --git a/site/content/arangodb/3.13/release-notes/version-3.11/incompatible-changes-in-3-11.md b/site/content/arangodb/4.0/release-notes/version-3.11/incompatible-changes-in-3-11.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.11/incompatible-changes-in-3-11.md rename to site/content/arangodb/4.0/release-notes/version-3.11/incompatible-changes-in-3-11.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.11/known-issues-in-3-11.md b/site/content/arangodb/4.0/release-notes/version-3.11/known-issues-in-3-11.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.11/known-issues-in-3-11.md rename to site/content/arangodb/4.0/release-notes/version-3.11/known-issues-in-3-11.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.11/whats-new-in-3-11.md b/site/content/arangodb/4.0/release-notes/version-3.11/whats-new-in-3-11.md similarity index 98% rename from site/content/arangodb/3.13/release-notes/version-3.11/whats-new-in-3-11.md rename to site/content/arangodb/4.0/release-notes/version-3.11/whats-new-in-3-11.md index 7d96233c6d..e742941f12 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.11/whats-new-in-3-11.md +++ b/site/content/arangodb/4.0/release-notes/version-3.11/whats-new-in-3-11.md @@ -20,7 +20,7 @@ to be requested from the RocksDB storage engine. ### ArangoSearch column cache (Enterprise Edition) -[`arangosearch` Views](../../index-and-search/arangosearch/arangosearch-views-reference.md) support new caching options. +[`arangosearch` Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) support new caching options. <small>Introduced in: v3.9.5, v3.10.2</small> @@ -76,7 +76,7 @@ metric. ArangoSearch caching is only available in the Enterprise Edition. -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md) for examples. {{< info >}} @@ -107,7 +107,7 @@ disk, the precision, and query performance: This feature is only available in the Enterprise Edition. -See [Analyzers](../../index-and-search/analyzers.md#geo_s2) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#geo_s2) for details. ## Web interface @@ -137,7 +137,7 @@ details. ### `search-alias` Views The 3.11 release of ArangoDB introduces a new web interface for Views that lets -you to create and manage [`search-alias` Views](../../index-and-search/arangosearch/search-alias-views-reference.md). +you to create and manage [`search-alias` Views](../../indexes-and-search/arangosearch/search-alias-views-reference.md). Through this dialog, you can easily create a new View and add to it one or more inverted indexes from your collections that you could otherwise do via the HTTP @@ -149,7 +149,7 @@ the same settings to multiple Views. In addition, the JSON editor offers the option to directly write the definition of your View in JSON format. For more information, see the -[detailed guide](../../index-and-search/arangosearch/search-alias-views-reference.md#create-search-alias-views-using-the-web-interface). +[detailed guide](../../indexes-and-search/arangosearch/search-alias-views-reference.md#create-search-alias-views-using-the-web-interface). ### `arangosearch` Views @@ -159,12 +159,12 @@ or modify the definition of your View. The settings, links, and JSON editor have been merged into a single page, allowing for a much quicker workflow. For more information, see the -[detailed guide](../../index-and-search/arangosearch/arangosearch-views-reference.md#create-arangosearch-views-using-the-web-interface). +[detailed guide](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#create-arangosearch-views-using-the-web-interface). ### Inverted indexes The web interface now includes the option for creating -[inverted indexes](../../index-and-search/indexing/working-with-indexes/inverted-indexes.md) on collections. You can set all the +[inverted indexes](../../indexes-and-search/indexing/working-with-indexes/inverted-indexes.md) on collections. You can set all the properties directly in the web interface, which previously required the JavaScript or HTTP API. It also offers an editor where you can write the definition of your inverted index in JSON format. diff --git a/site/content/arangodb/3.13/release-notes/version-3.12/_index.md b/site/content/arangodb/4.0/release-notes/version-3.12/_index.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.12/_index.md rename to site/content/arangodb/4.0/release-notes/version-3.12/_index.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.12/api-changes-in-3-12.md b/site/content/arangodb/4.0/release-notes/version-3.12/api-changes-in-3-12.md similarity index 98% rename from site/content/arangodb/3.13/release-notes/version-3.12/api-changes-in-3-12.md rename to site/content/arangodb/4.0/release-notes/version-3.12/api-changes-in-3-12.md index 989fc09923..42bb95f864 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.12/api-changes-in-3-12.md +++ b/site/content/arangodb/4.0/release-notes/version-3.12/api-changes-in-3-12.md @@ -344,7 +344,7 @@ Views of type `arangosearch` accept a new `optimizeTopK` View property for the ArangoSearch WAND optimization. It is an immutable array of strings, optional, and defaults to `[]`. -See the [`optimizeTopK` View property](../../index-and-search/arangosearch/arangosearch-views-reference.md#view-properties) +See the [`optimizeTopK` View property](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-properties) for details. #### Document API @@ -445,7 +445,7 @@ Both multi-dimensional index variants now support a `sparse` setting (boolean) and `storedValues` setting (array of strings) that were not supported by the `zkd` index type in previous versions. -See [Working with multi-dimensional indexes](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) +See [Working with multi-dimensional indexes](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) for details. ##### Progress indication on the index generation @@ -721,7 +721,7 @@ v2.8.0. Additionally, the JavaScript-based traversal REST API could not handle larger amounts of data and was thus very limited. Users of the `/_api/traversal` REST API should use -[AQL traversal queries](../../aql/graphs/traversals.md) instead. +[AQL traversal queries](../../aql/graph-queries/traversals.md) instead. #### Pregel API @@ -762,7 +762,7 @@ AQL traversals in v2.8.0. Additionally, the JavaScript-based traversals could not handle larger amounts of data and were thus very limited. Users of the JavaScript-based traversal API should use -[AQL traversal queries](../../aql/graphs/traversals.md) instead. +[AQL traversal queries](../../aql/graph-queries/traversals.md) instead. ### `collection` object diff --git a/site/content/arangodb/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md b/site/content/arangodb/4.0/release-notes/version-3.12/incompatible-changes-in-3-12.md similarity index 99% rename from site/content/arangodb/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md rename to site/content/arangodb/4.0/release-notes/version-3.12/incompatible-changes-in-3-12.md index a84a141025..7525eda89c 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.12/incompatible-changes-in-3-12.md +++ b/site/content/arangodb/4.0/release-notes/version-3.12/incompatible-changes-in-3-12.md @@ -257,7 +257,7 @@ for the first time, typically when creating a new deployment. You can specify a locale for the initialization with the `--icu-language` startup option (or with the deprecated `--default-language` startup option). The server language that you set this way affects the sorting and comparison behavior for text globally, -with a few exceptions like the [`collation` Analyzer](../../index-and-search/analyzers.md#collation). +with a few exceptions like the [`collation` Analyzer](../../indexes-and-search/analyzers.md#collation). If you don't specify a language using a startup option, the `LANG` environment variable is checked. If it's not set or has an invalid value, the effective @@ -992,7 +992,7 @@ v2.8.0. Additionally, the JavaScript-based traversal REST API could not handle larger amounts of data and was thus very limited. Users of the `/_api/traversal` REST API should use -[AQL traversal queries](../../aql/graphs/traversals.md) instead. +[AQL traversal queries](../../aql/graph-queries/traversals.md) instead. ### HTTP server behavior @@ -1058,7 +1058,7 @@ AQL traversals in v2.8.0. Additionally, the JavaScript-based traversals could not handle larger amounts of data and were thus very limited. Users of the JavaScript-based traversal API should use -[AQL traversal queries](../../aql/graphs/traversals.md) instead. +[AQL traversal queries](../../aql/graph-queries/traversals.md) instead. ### Graph compatibility functions removed diff --git a/site/content/arangodb/3.13/release-notes/version-3.12/known-issues-in-3-12.md b/site/content/arangodb/4.0/release-notes/version-3.12/known-issues-in-3-12.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.12/known-issues-in-3-12.md rename to site/content/arangodb/4.0/release-notes/version-3.12/known-issues-in-3-12.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.12/whats-new-in-3-12.md b/site/content/arangodb/4.0/release-notes/version-3.12/whats-new-in-3-12.md similarity index 98% rename from site/content/arangodb/3.13/release-notes/version-3.12/whats-new-in-3-12.md rename to site/content/arangodb/4.0/release-notes/version-3.12/whats-new-in-3-12.md index c3f5d8935e..c487fa2419 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.12/whats-new-in-3-12.md +++ b/site/content/arangodb/4.0/release-notes/version-3.12/whats-new-in-3-12.md @@ -38,17 +38,17 @@ The following features are now available in the Community Edition: [Parallelization](../../release-notes/version-3.10/whats-new-in-3-10.md#parallelism-for-sharded-graphs-enterprise-edition) - [Traversal Projections](../../release-notes/version-3.10/whats-new-in-3-10.md#traversal-projections-enterprise-edition) - [Parallel index creation](../../release-notes/version-3.10/whats-new-in-3-10.md#parallel-index-creation-enterprise-edition) -- [`minhash` Analyzer](../../index-and-search/analyzers.md#minhash) -- [`geo_s2` Analyzer](../../index-and-search/analyzers.md#geo_s2) +- [`minhash` Analyzer](../../indexes-and-search/analyzers.md#minhash) +- [`geo_s2` Analyzer](../../indexes-and-search/analyzers.md#geo_s2) - [ArangoSearch column cache](../../release-notes/version-3.10/whats-new-in-3-10.md#arangosearch-column-cache-enterprise-edition) -- [ArangoSearch WAND optimization](../../index-and-search/arangosearch/performance.md#wand-optimization) +- [ArangoSearch WAND optimization](../../indexes-and-search/arangosearch/performance.md#wand-optimization) - [Read from followers in clusters](../../develop/http-api/documents.md#read-from-followers) **Querying** -- [Search highlighting](../../index-and-search/arangosearch/search-highlighting.md) -- [Nested search](../../index-and-search/arangosearch/nested-search.md) -- [`classification`](../../index-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../../index-and-search/analyzers.md#nearest_neighbors) (experimental) +- [Search highlighting](../../indexes-and-search/arangosearch/search-highlighting.md) +- [Nested search](../../indexes-and-search/arangosearch/nested-search.md) +- [`classification`](../../indexes-and-search/analyzers.md#classification) and [`nearest_neighbors` Analyzers](../../indexes-and-search/analyzers.md#nearest_neighbors) (experimental) - [Skip inaccessible collections](../../aql/how-to-invoke-aql/with-arangosh.md#skipinaccessiblecollections) **Security** @@ -77,7 +77,7 @@ If you query a View with the `SEARCH` operation in combination with a Only sorting by highest rank is supported, that is, sorting by the result of a scoring function in descending order (`DESC`). -See [Optimizing View and inverted index query performance](../../index-and-search/arangosearch/performance.md#wand-optimization) +See [Optimizing View and inverted index query performance](../../indexes-and-search/arangosearch/performance.md#wand-optimization) for examples. This feature is only available in the Enterprise Edition up to v3.12.4 and @@ -114,7 +114,7 @@ partial matches in long strings. The Analyzer can apply another Analyzer of your choice before creating _n_-grams that are then used in `LIKE` searches with `_` and `%` wildcards. -See [Transforming data with Analyzers](../../index-and-search/analyzers.md#wildcard) +See [Transforming data with Analyzers](../../indexes-and-search/analyzers.md#wildcard) for details. ### `multi_delimiter` Analyzer @@ -139,7 +139,7 @@ db._query(`RETURN TOKENS("differently,delimited;words||one|token", "delimiter_mu // [ ["differently", "delimited", "words", "one|token"] ] ``` -See [Analyzers](../../index-and-search/analyzers.md#multi_delimiter) for details. +See [Analyzers](../../indexes-and-search/analyzers.md#multi_delimiter) for details. ## Improved memory accounting and usage @@ -356,7 +356,7 @@ FOR o IN orders The `_key` attribute is covered by the primary index of the `users` collection. If the `orders` collection has a persistent index defined over the `user` attribute and additionally includes the `total` attribute in -[`storedValues`](../../index-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes), +[`storedValues`](../../indexes-and-search/indexing/working-with-indexes/persistent-indexes.md#storing-additional-values-in-indexes), then the query is eligible for a merge join. ```aql @@ -795,7 +795,7 @@ FILTER p.edges[1].foo == "bar" AND p.edges[2].baz == "qux" ``` -See the [Traversal options](../../aql/graphs/traversals.md#traversal-options) +See the [Traversal options](../../aql/graph-queries/traversals.md#traversal-options) for details. @@ -1393,7 +1393,7 @@ equality checks. It can be used as a vertex-centric index for graph traversals if created on an edge collection with the first attribute in `prefixFields` set to `_from` or `_to`. -See [Multi-dimensional indexes](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) +See [Multi-dimensional indexes](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) for details. #### Native strict ranges @@ -1461,7 +1461,7 @@ Execution plan: 5 ReturnNode 100 - RETURN d ``` -From v3.13.3 onward, such a query gets optimized to utilize the sparse +From v3.12.3 onward, such a query gets optimized to utilize the sparse multi-dimensional index and the condition for excluding `null` is removed from the query plan because it is unnecessary – a sparse index contains values other than `null` only: @@ -1497,7 +1497,7 @@ To use this feature, start an ArangoDB server (`arangod`) with the `--vector-ind startup option (or `--experimental-vector-index` in v3.12.4 and v3.12.5). You need to generate vector embeddings before creating a vector index. For more information about the vector index type including the available settings, see the -[Vector indexes](../../index-and-search/indexing/working-with-indexes/vector-indexes.md) +[Vector indexes](../../indexes-and-search/indexing/working-with-indexes/vector-indexes.md) documentation. You can also follow the guide in this blog post: diff --git a/site/content/arangodb/3.13/release-notes/version-3.2/_index.md b/site/content/arangodb/4.0/release-notes/version-3.2/_index.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.2/_index.md rename to site/content/arangodb/4.0/release-notes/version-3.2/_index.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.2/incompatible-changes-in-3-2.md b/site/content/arangodb/4.0/release-notes/version-3.2/incompatible-changes-in-3-2.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.2/incompatible-changes-in-3-2.md rename to site/content/arangodb/4.0/release-notes/version-3.2/incompatible-changes-in-3-2.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.2/known-issues-in-3-2.md b/site/content/arangodb/4.0/release-notes/version-3.2/known-issues-in-3-2.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.2/known-issues-in-3-2.md rename to site/content/arangodb/4.0/release-notes/version-3.2/known-issues-in-3-2.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.2/whats-new-in-3-2.md b/site/content/arangodb/4.0/release-notes/version-3.2/whats-new-in-3-2.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.2/whats-new-in-3-2.md rename to site/content/arangodb/4.0/release-notes/version-3.2/whats-new-in-3-2.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.3/_index.md b/site/content/arangodb/4.0/release-notes/version-3.3/_index.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.3/_index.md rename to site/content/arangodb/4.0/release-notes/version-3.3/_index.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.3/incompatible-changes-in-3-3.md b/site/content/arangodb/4.0/release-notes/version-3.3/incompatible-changes-in-3-3.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.3/incompatible-changes-in-3-3.md rename to site/content/arangodb/4.0/release-notes/version-3.3/incompatible-changes-in-3-3.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.3/known-issues-in-3-3.md b/site/content/arangodb/4.0/release-notes/version-3.3/known-issues-in-3-3.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.3/known-issues-in-3-3.md rename to site/content/arangodb/4.0/release-notes/version-3.3/known-issues-in-3-3.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.3/whats-new-in-3-3.md b/site/content/arangodb/4.0/release-notes/version-3.3/whats-new-in-3-3.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.3/whats-new-in-3-3.md rename to site/content/arangodb/4.0/release-notes/version-3.3/whats-new-in-3-3.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.4/_index.md b/site/content/arangodb/4.0/release-notes/version-3.4/_index.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.4/_index.md rename to site/content/arangodb/4.0/release-notes/version-3.4/_index.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.4/incompatible-changes-in-3-4.md b/site/content/arangodb/4.0/release-notes/version-3.4/incompatible-changes-in-3-4.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.4/incompatible-changes-in-3-4.md rename to site/content/arangodb/4.0/release-notes/version-3.4/incompatible-changes-in-3-4.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.4/known-issues-in-3-4.md b/site/content/arangodb/4.0/release-notes/version-3.4/known-issues-in-3-4.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.4/known-issues-in-3-4.md rename to site/content/arangodb/4.0/release-notes/version-3.4/known-issues-in-3-4.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.4/whats-new-in-3-4.md b/site/content/arangodb/4.0/release-notes/version-3.4/whats-new-in-3-4.md similarity index 99% rename from site/content/arangodb/3.13/release-notes/version-3.4/whats-new-in-3-4.md rename to site/content/arangodb/4.0/release-notes/version-3.4/whats-new-in-3-4.md index 52aed4cb08..1ed388dc5e 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.4/whats-new-in-3-4.md +++ b/site/content/arangodb/4.0/release-notes/version-3.4/whats-new-in-3-4.md @@ -17,7 +17,7 @@ a user-defined set of attributes and collections. It is the first type of view in ArangoDB. - [ArangoSearch tutorial](https://www.arangodb.com/learn/search/tutorial/) -- [ArangoSearch overview](../../index-and-search/arangosearch/_index.md) +- [ArangoSearch overview](../../indexes-and-search/arangosearch/_index.md) - ArangoSearch in AQL: - [SEARCH operation](../../aql/high-level-operations/search.md) - [ArangoSearch functions](../../aql/functions/arangosearch.md) diff --git a/site/content/arangodb/3.13/release-notes/version-3.5/_index.md b/site/content/arangodb/4.0/release-notes/version-3.5/_index.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.5/_index.md rename to site/content/arangodb/4.0/release-notes/version-3.5/_index.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.5/incompatible-changes-in-3-5.md b/site/content/arangodb/4.0/release-notes/version-3.5/incompatible-changes-in-3-5.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.5/incompatible-changes-in-3-5.md rename to site/content/arangodb/4.0/release-notes/version-3.5/incompatible-changes-in-3-5.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.5/known-issues-in-3-5.md b/site/content/arangodb/4.0/release-notes/version-3.5/known-issues-in-3-5.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.5/known-issues-in-3-5.md rename to site/content/arangodb/4.0/release-notes/version-3.5/known-issues-in-3-5.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.5/whats-new-in-3-5.md b/site/content/arangodb/4.0/release-notes/version-3.5/whats-new-in-3-5.md similarity index 98% rename from site/content/arangodb/3.13/release-notes/version-3.5/whats-new-in-3-5.md rename to site/content/arangodb/4.0/release-notes/version-3.5/whats-new-in-3-5.md index 9875c19b12..fd8b175c57 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.5/whats-new-in-3-5.md +++ b/site/content/arangodb/4.0/release-notes/version-3.5/whats-new-in-3-5.md @@ -28,7 +28,7 @@ word stemming, remove user-defined stop-words, split by a delimiting character only, perform case conversion and/or removal of diacritic characters against the full input without tokenization and more. -See [Analyzers](../../index-and-search/analyzers.md) for all available options. +See [Analyzers](../../indexes-and-search/analyzers.md) for all available options. ### Sorted Index @@ -99,7 +99,7 @@ Note that the `primarySort` option is immutable: it cannot be changed after View creation. It is therefore not possible to configure it through the Web UI. The View needs to be created via the HTTP or JavaScript API (arangosh) to set it. -See [Primary Sort Order](../../index-and-search/arangosearch/performance.md#primary-sort-order) +See [Primary Sort Order](../../indexes-and-search/arangosearch/performance.md#primary-sort-order) of ArangoSearch Views. ### AQL Integration @@ -155,7 +155,7 @@ cases. Using `PRUNE`, the traverser will not follow any more edges on the current path if the pruning condition is met, but will emit the traversal variables for whatever stopped it. -See: [Graph Traversal Pruning](../../aql/graphs/traversals.md#pruning) +See: [Graph Traversal Pruning](../../aql/graph-queries/traversals.md#pruning) ### SORT-LIMIT optimization @@ -231,7 +231,7 @@ Also see: [AQL Numeric Literals](../../aql/fundamentals/data-types.md#numeric-li AQL now allows to perform k Shortest Paths queries, that is, query a number of paths of increasing length from a start vertex to a target vertex. -See: [AQL k Shortest Paths](../../aql/graphs/k-shortest-paths.md) +See: [AQL k Shortest Paths](../../aql/graph-queries/k-shortest-paths.md) ## SmartJoins @@ -363,7 +363,7 @@ Please note that background index creation is useful only in combination with th storage engine. With the MMFiles storage engine, creating an index will always block any other operations on the collection. -Also see: [Creating Indexes in Background](../../index-and-search/indexing/basics.md#creating-indexes-in-background) +Also see: [Creating Indexes in Background](../../indexes-and-search/indexing/basics.md#creating-indexes-in-background) ## TTL (time-to-live) Indexes @@ -385,7 +385,7 @@ always numerical version of the index attribute value even if it was originally as a datestring. As a result TTL indexes will likely not be used for filtering and sort operations in user-land AQL queries. -Also see: [TTL Indexes](../../index-and-search/indexing/working-with-indexes/ttl-indexes.md) +Also see: [TTL Indexes](../../indexes-and-search/indexing/working-with-indexes/ttl-indexes.md) ## Collections diff --git a/site/content/arangodb/3.13/release-notes/version-3.6/_index.md b/site/content/arangodb/4.0/release-notes/version-3.6/_index.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.6/_index.md rename to site/content/arangodb/4.0/release-notes/version-3.6/_index.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.6/incompatible-changes-in-3-6.md b/site/content/arangodb/4.0/release-notes/version-3.6/incompatible-changes-in-3-6.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.6/incompatible-changes-in-3-6.md rename to site/content/arangodb/4.0/release-notes/version-3.6/incompatible-changes-in-3-6.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.6/known-issues-in-3-6.md b/site/content/arangodb/4.0/release-notes/version-3.6/known-issues-in-3-6.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.6/known-issues-in-3-6.md rename to site/content/arangodb/4.0/release-notes/version-3.6/known-issues-in-3-6.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.6/whats-new-in-3-6.md b/site/content/arangodb/4.0/release-notes/version-3.6/whats-new-in-3-6.md similarity index 99% rename from site/content/arangodb/3.13/release-notes/version-3.6/whats-new-in-3-6.md rename to site/content/arangodb/4.0/release-notes/version-3.6/whats-new-in-3-6.md index 0723591910..2ecc2b3d4d 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.6/whats-new-in-3-6.md +++ b/site/content/arangodb/4.0/release-notes/version-3.6/whats-new-in-3-6.md @@ -452,7 +452,7 @@ In addition, ArangoDB 3.6 provides the following new AQL functionality: ### Analyzers - Added UTF-8 support and ability to mark beginning/end of the sequence to - the [`ngram` Analyzer type](../../index-and-search/analyzers.md#ngram). + the [`ngram` Analyzer type](../../indexes-and-search/analyzers.md#ngram). The following optional properties can be provided for an `ngram` Analyzer definition: @@ -466,7 +466,7 @@ In addition, ArangoDB 3.6 provides the following new AQL functionality: - `streamType` : `"binary"|"utf8"`, default: "binary"\ type of the input stream (support for UTF-8 is new) -- Added _edge n-gram_ support to the [`text` Analyzer type](../../index-and-search/analyzers.md#text). +- Added _edge n-gram_ support to the [`text` Analyzer type](../../indexes-and-search/analyzers.md#text). The input gets tokenized as usual, but then _n_-grams are generated from each token. UTF-8 encoding is assumed (whereas the `ngram` Analyzer has a configurable stream type and defaults to binary). diff --git a/site/content/arangodb/3.13/release-notes/version-3.7/_index.md b/site/content/arangodb/4.0/release-notes/version-3.7/_index.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.7/_index.md rename to site/content/arangodb/4.0/release-notes/version-3.7/_index.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.7/api-changes-in-3-7.md b/site/content/arangodb/4.0/release-notes/version-3.7/api-changes-in-3-7.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.7/api-changes-in-3-7.md rename to site/content/arangodb/4.0/release-notes/version-3.7/api-changes-in-3-7.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.7/incompatible-changes-in-3-7.md b/site/content/arangodb/4.0/release-notes/version-3.7/incompatible-changes-in-3-7.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.7/incompatible-changes-in-3-7.md rename to site/content/arangodb/4.0/release-notes/version-3.7/incompatible-changes-in-3-7.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.7/known-issues-in-3-7.md b/site/content/arangodb/4.0/release-notes/version-3.7/known-issues-in-3-7.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.7/known-issues-in-3-7.md rename to site/content/arangodb/4.0/release-notes/version-3.7/known-issues-in-3-7.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.7/whats-new-in-3-7.md b/site/content/arangodb/4.0/release-notes/version-3.7/whats-new-in-3-7.md similarity index 98% rename from site/content/arangodb/3.13/release-notes/version-3.7/whats-new-in-3-7.md rename to site/content/arangodb/4.0/release-notes/version-3.7/whats-new-in-3-7.md index 29bd20c8f4..f07e428bec 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.7/whats-new-in-3-7.md +++ b/site/content/arangodb/4.0/release-notes/version-3.7/whats-new-in-3-7.md @@ -99,7 +99,7 @@ Optimization rules applied: 3 handle-arangosearch-views ``` -See [ArangoSearch Views](../../index-and-search/arangosearch/arangosearch-views-reference.md#view-properties). +See [ArangoSearch Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-properties). ### Stemming support for more languages @@ -140,7 +140,7 @@ db._query(`RETURN TOKENS("αυτοκινητουσ πρωταγωνιστούσ // [ [ "αυτοκινητ", "πρωταγωνιστ" ] ] ``` -Also see [Analyzers: Supported Languages](../../index-and-search/analyzers.md#supported-languages) +Also see [Analyzers: Supported Languages](../../indexes-and-search/analyzers.md#supported-languages) ### Condition Optimization Option @@ -183,7 +183,7 @@ creation to enable or disable the compression of the primary sort data: It defaults to LZ4 compression (`"lz4"`), which was already used in ArangoDB v3.5 and v3.6. Set it to `"none"` on View creation to trade space for speed. -See [ArangoSearch Views](../../index-and-search/arangosearch/arangosearch-views-reference.md#view-properties). +See [ArangoSearch Views](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#view-properties). ## SatelliteGraphs @@ -340,7 +340,7 @@ FOR v, e, p IN 1..3 OUTBOUND 'products/123' GRAPH 'components' RETURN v ``` -Also see [AQL Traversal Options](../../aql/graphs/traversals.md#working-with-named-graphs) +Also see [AQL Traversal Options](../../aql/graph-queries/traversals.md#working-with-named-graphs) ### Traversal parallelization (Enterprise Edition) @@ -375,7 +375,7 @@ deployments and to cluster traversals that are running in a OneShard setup. Cluster traversals that run on a coordinator node and SmartGraph traversals are currently not parallelized. -See [Graph traversal options](../../aql/graphs/traversals.md#working-with-named-graphs) +See [Graph traversal options](../../aql/graph-queries/traversals.md#working-with-named-graphs) ### AQL functions added diff --git a/site/content/arangodb/3.13/release-notes/version-3.8/_index.md b/site/content/arangodb/4.0/release-notes/version-3.8/_index.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.8/_index.md rename to site/content/arangodb/4.0/release-notes/version-3.8/_index.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.8/api-changes-in-3-8.md b/site/content/arangodb/4.0/release-notes/version-3.8/api-changes-in-3-8.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.8/api-changes-in-3-8.md rename to site/content/arangodb/4.0/release-notes/version-3.8/api-changes-in-3-8.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.8/incompatible-changes-in-3-8.md b/site/content/arangodb/4.0/release-notes/version-3.8/incompatible-changes-in-3-8.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.8/incompatible-changes-in-3-8.md rename to site/content/arangodb/4.0/release-notes/version-3.8/incompatible-changes-in-3-8.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.8/known-issues-in-3-8.md b/site/content/arangodb/4.0/release-notes/version-3.8/known-issues-in-3-8.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.8/known-issues-in-3-8.md rename to site/content/arangodb/4.0/release-notes/version-3.8/known-issues-in-3-8.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.8/whats-new-in-3-8.md b/site/content/arangodb/4.0/release-notes/version-3.8/whats-new-in-3-8.md similarity index 98% rename from site/content/arangodb/3.13/release-notes/version-3.8/whats-new-in-3-8.md rename to site/content/arangodb/4.0/release-notes/version-3.8/whats-new-in-3-8.md index 0423b45d3a..166ecb56e4 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.8/whats-new-in-3-8.md +++ b/site/content/arangodb/4.0/release-notes/version-3.8/whats-new-in-3-8.md @@ -81,7 +81,7 @@ The preferred way to start a breadth-first search from now on is with `order: "bfs"`. The default remains depth-first search if no `order` is specified, but can also be explicitly requested with `order: "dfs"`. -Also see [AQL graph traversals](../../aql/graphs/traversals.md) +Also see [AQL graph traversals](../../aql/graph-queries/traversals.md) ### k Paths @@ -107,7 +107,7 @@ FOR path IN 2..4 OUTBOUND K_PATHS "v/source" TO "v/target" GRAPH "g" … that have length of exactly 2 or 3 or 4, start at `v/source` and end at `v/target`. No order is guaranteed for those paths in the result set. -For more details see [AQL k Paths](../../aql/graphs/k-paths.md) +For more details see [AQL k Paths](../../aql/graph-queries/k-paths.md) ### AQL bit functions @@ -263,19 +263,19 @@ into one. It allows you to combine text normalization for a case insensitive search with _n_-gram tokenization, or to split text at multiple delimiting characters followed by stemming. -See [ArangoSearch Pipeline Analyzer](../../index-and-search/analyzers.md#pipeline) +See [ArangoSearch Pipeline Analyzer](../../indexes-and-search/analyzers.md#pipeline) ### AQL Analyzer Added new Analyzer type `"aql"` capable of running an AQL query (with some restrictions) to perform data manipulation/filtering. -See [ArangoSearch AQL Analyzer](../../index-and-search/analyzers.md#aql) +See [ArangoSearch AQL Analyzer](../../indexes-and-search/analyzers.md#aql) ### Geo-spatial queries -Added two Geo Analyzers [`"geojson"`](../../index-and-search/analyzers.md#geojson) -and [`"geopoint"`](../../index-and-search/analyzers.md#geopoint) as well as the +Added two Geo Analyzers [`"geojson"`](../../indexes-and-search/analyzers.md#geojson) +and [`"geopoint"`](../../indexes-and-search/analyzers.md#geopoint) as well as the following [ArangoSearch Geo functions](../../aql/functions/arangosearch.md#geo-functions) which enable geo-spatial queries backed by View indexes: - `GEO_CONTAINS()` @@ -292,7 +292,7 @@ input. It can be used standalone or be combined with other Analyzers via a pipeline Analyzer to add stop word functionality to them. Previously, only the text Analyzer type provided stop word support. -See [ArangoSearch `stopwords` Analyzer](../../index-and-search/analyzers.md#stopwords) +See [ArangoSearch `stopwords` Analyzer](../../indexes-and-search/analyzers.md#stopwords) ### Approximate count diff --git a/site/content/arangodb/3.13/release-notes/version-3.9/_index.md b/site/content/arangodb/4.0/release-notes/version-3.9/_index.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.9/_index.md rename to site/content/arangodb/4.0/release-notes/version-3.9/_index.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.9/api-changes-in-3-9.md b/site/content/arangodb/4.0/release-notes/version-3.9/api-changes-in-3-9.md similarity index 99% rename from site/content/arangodb/3.13/release-notes/version-3.9/api-changes-in-3-9.md rename to site/content/arangodb/4.0/release-notes/version-3.9/api-changes-in-3-9.md index f5ea88a469..7190a4d015 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.9/api-changes-in-3-9.md +++ b/site/content/arangodb/4.0/release-notes/version-3.9/api-changes-in-3-9.md @@ -325,7 +325,7 @@ options, and you can change the `cache` View link/field property with the `PUT /_api/view/<view-name>/properties` and `PATCH /_api/view/<view-name>/properties` endpoints. -See the [`arangosearch` Views Reference](../../index-and-search/arangosearch/arangosearch-views-reference.md#link-properties) +See the [`arangosearch` Views Reference](../../indexes-and-search/arangosearch/arangosearch-views-reference.md#link-properties) for details. #### Document API diff --git a/site/content/arangodb/3.13/release-notes/version-3.9/incompatible-changes-in-3-9.md b/site/content/arangodb/4.0/release-notes/version-3.9/incompatible-changes-in-3-9.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.9/incompatible-changes-in-3-9.md rename to site/content/arangodb/4.0/release-notes/version-3.9/incompatible-changes-in-3-9.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.9/known-issues-in-3-9.md b/site/content/arangodb/4.0/release-notes/version-3.9/known-issues-in-3-9.md similarity index 100% rename from site/content/arangodb/3.13/release-notes/version-3.9/known-issues-in-3-9.md rename to site/content/arangodb/4.0/release-notes/version-3.9/known-issues-in-3-9.md diff --git a/site/content/arangodb/3.13/release-notes/version-3.9/whats-new-in-3-9.md b/site/content/arangodb/4.0/release-notes/version-3.9/whats-new-in-3-9.md similarity index 98% rename from site/content/arangodb/3.13/release-notes/version-3.9/whats-new-in-3-9.md rename to site/content/arangodb/4.0/release-notes/version-3.9/whats-new-in-3-9.md index e1e8318259..0ce24079fd 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.9/whats-new-in-3-9.md +++ b/site/content/arangodb/4.0/release-notes/version-3.9/whats-new-in-3-9.md @@ -57,8 +57,8 @@ tokens. This makes comparisons follow the rules of the respective language, most notable in range queries against Views. See: -- [`segmentation` Analyzer](../../index-and-search/analyzers.md#segmentation) -- [`collation` Analyzer](../../index-and-search/analyzers.md#collation) +- [`segmentation` Analyzer](../../indexes-and-search/analyzers.md#segmentation) +- [`collation` Analyzer](../../indexes-and-search/analyzers.md#collation) ### Analyzer locale normalization @@ -110,10 +110,10 @@ The cache size can be controlled with the new `--arangosearch.columns-cache-limi startup option and monitored via the new `arangodb_search_columns_cache_size` metric. -[ArangoSearch caching](../../index-and-search/arangosearch/arangosearch-views-reference.md) is only available in the +[ArangoSearch caching](../../indexes-and-search/arangosearch/arangosearch-views-reference.md) is only available in the Enterprise Edition. -See [Optimizing View query performance](../../index-and-search/arangosearch/performance.md) +See [Optimizing View query performance](../../indexes-and-search/arangosearch/performance.md) for examples. ## UI @@ -347,7 +347,7 @@ FOR v, e, p IN 10 OUTBOUND @start GRAPH "myGraph" The `v.isRelevant == true` condition is stored in the `pruneCondition` variable and used as a condition for `FILTER` later. -See [Pruning](../../aql/graphs/traversals.md#pruning). +See [Pruning](../../aql/graph-queries/traversals.md#pruning). ### Warnings on invalid OPTIONS @@ -618,7 +618,7 @@ the emerging performance is much more dependent on the distribution of the dataset, making it less predictable. A third limitation is that `zkd` indexes can only be created for index values which are IEEE 754 doubles. -[Multi-dimensional Indexes](../../index-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) are an experimental feature. +[Multi-dimensional Indexes](../../indexes-and-search/indexing/working-with-indexes/multi-dimensional-indexes.md) are an experimental feature. ## Server options diff --git a/site/content/arangodb/4.0/release-notes/version-4.0/_index.md b/site/content/arangodb/4.0/release-notes/version-4.0/_index.md new file mode 100644 index 0000000000..13bbacdecc --- /dev/null +++ b/site/content/arangodb/4.0/release-notes/version-4.0/_index.md @@ -0,0 +1,6 @@ +--- +title: Version 4.0 +menuTitle: Version 4.0 +weight: 86 +description: '' +--- diff --git a/site/content/arangodb/3.13/release-notes/version-3.13/api-changes-in-3-13.md b/site/content/arangodb/4.0/release-notes/version-4.0/api-changes-in-4-0.md similarity index 92% rename from site/content/arangodb/3.13/release-notes/version-3.13/api-changes-in-3-13.md rename to site/content/arangodb/4.0/release-notes/version-4.0/api-changes-in-4-0.md index 97b33973f6..0f18e9319c 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.13/api-changes-in-3-13.md +++ b/site/content/arangodb/4.0/release-notes/version-4.0/api-changes-in-4-0.md @@ -1,6 +1,6 @@ --- -title: API Changes in ArangoDB 3.13 -menuTitle: API changes in 3.13 +title: API Changes in ArangoDB 4.0 +menuTitle: API changes in 4.0 weight: 20 description: >- A summary of the changes to the HTTP API and other interfaces that are relevant diff --git a/site/content/arangodb/3.13/release-notes/version-3.13/incompatible-changes-in-3-13.md b/site/content/arangodb/4.0/release-notes/version-4.0/incompatible-changes-in-4-0.md similarity index 92% rename from site/content/arangodb/3.13/release-notes/version-3.13/incompatible-changes-in-3-13.md rename to site/content/arangodb/4.0/release-notes/version-4.0/incompatible-changes-in-4-0.md index 47075fd612..4bc17f67ff 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.13/incompatible-changes-in-3-13.md +++ b/site/content/arangodb/4.0/release-notes/version-4.0/incompatible-changes-in-4-0.md @@ -1,6 +1,6 @@ --- -title: Incompatible changes in ArangoDB 3.13 -menuTitle: Incompatible changes in 3.13 +title: Incompatible changes in ArangoDB 4.0 +menuTitle: Incompatible changes in 4.0 weight: 15 description: >- Check the following list of potential breaking changes **before** upgrading to diff --git a/site/content/arangodb/3.13/release-notes/version-3.13/known-issues-in-3-13.md b/site/content/arangodb/4.0/release-notes/version-4.0/known-issues-in-4-0.md similarity index 75% rename from site/content/arangodb/3.13/release-notes/version-3.13/known-issues-in-3-13.md rename to site/content/arangodb/4.0/release-notes/version-4.0/known-issues-in-4-0.md index 014b937c9c..d11efcea38 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.13/known-issues-in-3-13.md +++ b/site/content/arangodb/4.0/release-notes/version-4.0/known-issues-in-4-0.md @@ -1,9 +1,9 @@ --- -title: Known Issues in ArangoDB 3.13 -menuTitle: Known Issues in 3.13 +title: Known Issues in ArangoDB 4.0 +menuTitle: Known Issues in 4.0 weight: 10 description: >- - Important issues affecting the 3.13.x versions of the ArangoDB suite of products + Important issues affecting the 4.0.x versions of the ArangoDB suite of products --- Note that this page does not list all open issues. @@ -11,39 +11,39 @@ Note that this page does not list all open issues. | Issue | |------------| -| **Date Added:** 2018-12-19 <br> **Component:** ArangoSearch <br> **Deployment Mode:** Single-server <br> **Description:** Value of `_id` attribute indexed by `arangosearch` View may become inconsistent after renaming a collection <br> **Affected Versions:** 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/backlog#514](https://github.com/arangodb/backlog/issues/514) (internal) | -| **Date Added:** 2018-12-03 <br> **Component:** ArangoSearch <br> **Deployment Mode:** Cluster <br> **Description:** Score values evaluated by corresponding score functions (BM25/TFIDF) may differ in single-server and cluster with a collection having more than 1 shard <br> **Affected Versions:** 3.4.x, 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/backlog#508](https://github.com/arangodb/backlog/issues/508) (internal) | -| **Date Added:** 2018-12-03 <br> **Component:** ArangoSearch <br> **Deployment Mode:** All <br> **Description:** Using a loop variable in expressions within a corresponding SEARCH condition is not supported <br> **Affected Versions:** 3.4.x, 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/backlog#318](https://github.com/arangodb/backlog/issues/318) (internal) | -| **Date Added:** 2019-06-25 <br> **Component:** ArangoSearch <br> **Deployment Mode:** All <br> **Description:** The `primarySort` attribute in `arangosearch` View definitions cannot be set via the web interface. The option is immutable, but the web interface does not allow to set any View properties upfront (it creates a View with default parameters before the user has a chance to configure it). <br> **Affected Versions:** 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** N/A | -| **Date Added:** 2020-03-19 <br> **Component:** ArangoSearch <br> **Deployment Mode:** All <br> **Description:** Operators and functions in `SEARCH` clauses of AQL queries which compare values such as `>`, `>=`, `<`, `<=`, `IN_RANGE()` and `STARTS_WITH()` neither take the server language (`--default-language`) nor the Analyzer locale into account. The alphabetical order of characters as defined by a language is thus not honored and can lead to unexpected results in range queries. <br> **Affected Versions:** 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/backlog#679](https://github.com/arangodb/backlog/issues/679) (internal) | +| **Date Added:** 2018-12-19 <br> **Component:** ArangoSearch <br> **Deployment Mode:** Single-server <br> **Description:** Value of `_id` attribute indexed by `arangosearch` View may become inconsistent after renaming a collection <br> **Affected Versions:** 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/backlog#514](https://github.com/arangodb/backlog/issues/514) (internal) | +| **Date Added:** 2018-12-03 <br> **Component:** ArangoSearch <br> **Deployment Mode:** Cluster <br> **Description:** Score values evaluated by corresponding score functions (BM25/TFIDF) may differ in single-server and cluster with a collection having more than 1 shard <br> **Affected Versions:** 3.4.x, 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/backlog#508](https://github.com/arangodb/backlog/issues/508) (internal) | +| **Date Added:** 2018-12-03 <br> **Component:** ArangoSearch <br> **Deployment Mode:** All <br> **Description:** Using a loop variable in expressions within a corresponding SEARCH condition is not supported <br> **Affected Versions:** 3.4.x, 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/backlog#318](https://github.com/arangodb/backlog/issues/318) (internal) | +| **Date Added:** 2019-06-25 <br> **Component:** ArangoSearch <br> **Deployment Mode:** All <br> **Description:** The `primarySort` attribute in `arangosearch` View definitions cannot be set via the web interface. The option is immutable, but the web interface does not allow to set any View properties upfront (it creates a View with default parameters before the user has a chance to configure it). <br> **Affected Versions:** 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** N/A | +| **Date Added:** 2020-03-19 <br> **Component:** ArangoSearch <br> **Deployment Mode:** All <br> **Description:** Operators and functions in `SEARCH` clauses of AQL queries which compare values such as `>`, `>=`, `<`, `<=`, `IN_RANGE()` and `STARTS_WITH()` neither take the server language (`--default-language`) nor the Analyzer locale into account. The alphabetical order of characters as defined by a language is thus not honored and can lead to unexpected results in range queries. <br> **Affected Versions:** 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/backlog#679](https://github.com/arangodb/backlog/issues/679) (internal) | ## AQL | Issue | |------------| -| **Date Added:** 2018-09-05 <br> **Component:** AQL <br> **Deployment Mode:** Cluster <br> **Description:** In a very uncommon edge case there is an issue with an optimization rule in the cluster. If you are running a cluster and use a custom shard key on a collection (default is `_key`) **and** you provide a wrong shard key in a modifying query (`UPDATE`, `REPLACE`, `DELETE`) **and** the wrong shard key is on a different shard than the correct one, a `DOCUMENT NOT FOUND` error is returned instead of a modification (example query: `UPDATE { _key: "123", shardKey: "wrongKey"} WITH { foo: "bar" } IN mycollection`). Note that the modification always happens if the rule is switched off, so the suggested workaround is to [deactivate the optimizing rule](../../aql/execution-and-performance/query-optimization.md#turning-specific-optimizer-rules-off) `restrict-to-single-shard`. <br> **Affected Versions:** 3.4.x, 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/arangodb#6399](https://github.com/arangodb/arangodb/issues/6399) | +| **Date Added:** 2018-09-05 <br> **Component:** AQL <br> **Deployment Mode:** Cluster <br> **Description:** In a very uncommon edge case there is an issue with an optimization rule in the cluster. If you are running a cluster and use a custom shard key on a collection (default is `_key`) **and** you provide a wrong shard key in a modifying query (`UPDATE`, `REPLACE`, `DELETE`) **and** the wrong shard key is on a different shard than the correct one, a `DOCUMENT NOT FOUND` error is returned instead of a modification (example query: `UPDATE { _key: "123", shardKey: "wrongKey"} WITH { foo: "bar" } IN mycollection`). Note that the modification always happens if the rule is switched off, so the suggested workaround is to [deactivate the optimizing rule](../../aql/execution-and-performance/query-optimization.md#turning-specific-optimizer-rules-off) `restrict-to-single-shard`. <br> **Affected Versions:** 3.4.x, 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/arangodb#6399](https://github.com/arangodb/arangodb/issues/6399) | ## Upgrading | Issue | |------------| -| **Date Added:** 2019-05-16 <br> **Component:** arangod <br> **Deployment Mode:** All <br> **Description:** Bugfix release upgrades such as 3.4.4 to 3.4.5 may not create a backup of the database directory even if they should. Please create a copy manually before upgrading. <br> **Affected Versions:** 3.4.x, 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/planning#3745](https://github.com/arangodb/planning/issues/3745) (internal) | -| **Date Added:** 2023-06-06 <br> **Component:** arangod <br> **Deployment Mode:** Cluster <br> **Description:** During a cluster upgrade while the supervision is deactivated (maintenance mode), upgraded DB-Server nodes are incorrectly reported to still have the old server version. The versions are visible in the Agency as well as in the **NODES** section of the web interface. <br> **Affected Versions:** 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** [BTS-1409](https://arangodb.atlassian.net/browse/BTS-1409) (internal) | +| **Date Added:** 2019-05-16 <br> **Component:** arangod <br> **Deployment Mode:** All <br> **Description:** Bugfix release upgrades such as 3.4.4 to 3.4.5 may not create a backup of the database directory even if they should. Please create a copy manually before upgrading. <br> **Affected Versions:** 3.4.x, 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/planning#3745](https://github.com/arangodb/planning/issues/3745) (internal) | +| **Date Added:** 2023-06-06 <br> **Component:** arangod <br> **Deployment Mode:** Cluster <br> **Description:** During a cluster upgrade while the supervision is deactivated (maintenance mode), upgraded DB-Server nodes are incorrectly reported to still have the old server version. The versions are visible in the Agency as well as in the **NODES** section of the web interface. <br> **Affected Versions:** 3.9.x, 3.10.x, 3.11.x, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** [BTS-1409](https://arangodb.atlassian.net/browse/BTS-1409) (internal) | ## Hot Backup | Issue | |------------| -| **Date Added:** 2019-10-09 <br> **Component:** arangobackup <br> **Deployment Mode:** All <br> **Description:** The startup option `--operation` works as positional argument only, e.g. `arangobackup list`. The alternative syntax `arangobackup --operation list` is not accepted. <br> **Affected Versions:** 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** N/A | +| **Date Added:** 2019-10-09 <br> **Component:** arangobackup <br> **Deployment Mode:** All <br> **Description:** The startup option `--operation` works as positional argument only, e.g. `arangobackup list`. The alternative syntax `arangobackup --operation list` is not accepted. <br> **Affected Versions:** 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** N/A | ## Other | Issue | |------------| -| **Date Added:** 2019-04-03 <br> **Component:** arangod <br> **Deployment Mode:** Cluster <br> **Description:** Updating the properties of a collection in the cluster may return before the properties are updated consistently on all shards. This is especially visible when setting a schema for a collection with multiple shards, and then instantly starting to store non-conforming documents into the collection. These may be accepted until the properties change has been fully propagated to all shards. <br> **Affected Versions:** 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** N/A | -| **Date Added:** 2021-04-07 <br> **Component:** arangod <br> **Deployment Mode:** All <br> **Description:** The Batch API (HTTP endpoint `/_api/batch`) cannot be used in combination with Stream transactions to submit batched requests, because the required header `x-arango-trx-id` is not forwarded. It only processes `Content-Type` and `Content-Id`. <br> **Affected Versions:** 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/arangodb#13552](https://github.com/arangodb/arangodb/issues/13552) | -| **Date Added:** 2022-09-29 <br> **Component:** ArangoDB Starter <br> **Deployment Mode:** All <br> **Description:** The ArangoDB Starter may fail to pick a Docker container name from cgroups. <br> **Affected Versions:** 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** [GT-207](https://arangodb.atlassian.net/browse/GT-207) (internal) | -| **Date Added:** 2024-03-21 <br> **Component:** arangod <br> **Deployment Mode:** All <br> **Description:** When creating an `inverted` index with the `inBackground` option enabled, HTTP API calls like `http://localhost:8529/_api/index?collection=<coll>&withHidden=true` don't return the `isBuilding` and `progress` attributes and the progress of the index building can thus not be observed. <br> **Affected Versions:** 3.10.13, 3.11.17, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** [BTS-1788](https://arangodb.atlassian.net/browse/BTS-1788) (internal) | +| **Date Added:** 2019-04-03 <br> **Component:** arangod <br> **Deployment Mode:** Cluster <br> **Description:** Updating the properties of a collection in the cluster may return before the properties are updated consistently on all shards. This is especially visible when setting a schema for a collection with multiple shards, and then instantly starting to store non-conforming documents into the collection. These may be accepted until the properties change has been fully propagated to all shards. <br> **Affected Versions:** 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** N/A | +| **Date Added:** 2021-04-07 <br> **Component:** arangod <br> **Deployment Mode:** All <br> **Description:** The Batch API (HTTP endpoint `/_api/batch`) cannot be used in combination with Stream transactions to submit batched requests, because the required header `x-arango-trx-id` is not forwarded. It only processes `Content-Type` and `Content-Id`. <br> **Affected Versions:** 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** [arangodb/arangodb#13552](https://github.com/arangodb/arangodb/issues/13552) | +| **Date Added:** 2022-09-29 <br> **Component:** ArangoDB Starter <br> **Deployment Mode:** All <br> **Description:** The ArangoDB Starter may fail to pick a Docker container name from cgroups. <br> **Affected Versions:** 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** [GT-207](https://arangodb.atlassian.net/browse/GT-207) (internal) | +| **Date Added:** 2024-03-21 <br> **Component:** arangod <br> **Deployment Mode:** All <br> **Description:** When creating an `inverted` index with the `inBackground` option enabled, HTTP API calls like `http://localhost:8529/_api/index?collection=<coll>&withHidden=true` don't return the `isBuilding` and `progress` attributes and the progress of the index building can thus not be observed. <br> **Affected Versions:** 3.10.13, 3.11.17, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** [BTS-1788](https://arangodb.atlassian.net/browse/BTS-1788) (internal) | | **Date Added:** 2024-07-05 <br> **Component:** arangod <br> **Deployment Mode:** All <br> **Description:** ArangoDB can crash if run on bare metal and the Linux distribution uses a different glibc version, the `libnss-*` libraries are installed, the `--honor-nsswitch` startup option is enabled, and the `/etc/nsswitch.conf` configuration file contains settings other than for `files` and `dns` in the `hosts:` line, or the `passwd:` and `group:` lines contain something other than `files`. <br> **Affected Versions:** 3.11.10-1, 3.12.1 <br> **Fixed in Versions:** - <br> **Reference:** [Incompatibility due to switch to glibc](../version-3.12/incompatible-changes-in-3-12.md#incompatibilities-due-to-switch-to-glibc) | | **Date Added:** 2025-01-30 <br> **Component:** arangod <br> **Deployment Mode:** Cluster <br> **Description:** If the invariant is violated that ArangoDB's data is not modified while a server is down, manually as well as automatically triggered operations such as moving shards can make a DB-Server the leader (again) even though it may not have the correct data. ArangoDB does currently not protect against certain cases like bringing a DB-Server back without data (by accident or on purpose), which can lead to this empty state getting replicated across the cluster and thus causing data loss. <br> **Affected Versions:** 3.11.x, 3.12.x <br> **Fixed in Versions:** - <br> **Reference:** N/A | -| **Date Added:** 2025-06-25 <br> **Component:** Web interface <br> **Deployment Mode:** All <br> **Description:** Specifying an `X-Script-Name` HTTP header in requests to the web interface (`/_admin/aardvark`) to add a path prefix is non-functional. The feature was originally added in version 3.0 for basic proxy setups but doesn't adequately handle the requests of certain internal services. <br> **Affected Versions:** 3.11.x, 3.12.x, 3.13.x <br> **Fixed in Versions:** - <br> **Reference:** N/A | +| **Date Added:** 2025-06-25 <br> **Component:** Web interface <br> **Deployment Mode:** All <br> **Description:** Specifying an `X-Script-Name` HTTP header in requests to the web interface (`/_admin/aardvark`) to add a path prefix is non-functional. The feature was originally added in version 3.0 for basic proxy setups but doesn't adequately handle the requests of certain internal services. <br> **Affected Versions:** 3.11.x, 3.12.x, 4.0.x <br> **Fixed in Versions:** - <br> **Reference:** N/A | diff --git a/site/content/arangodb/3.13/release-notes/version-3.13/whats-new-in-3-13.md b/site/content/arangodb/4.0/release-notes/version-4.0/whats-new-in-4-0.md similarity index 65% rename from site/content/arangodb/3.13/release-notes/version-3.13/whats-new-in-3-13.md rename to site/content/arangodb/4.0/release-notes/version-4.0/whats-new-in-4-0.md index 7328bdd8ac..a315216902 100644 --- a/site/content/arangodb/3.13/release-notes/version-3.13/whats-new-in-3-13.md +++ b/site/content/arangodb/4.0/release-notes/version-4.0/whats-new-in-4-0.md @@ -1,12 +1,12 @@ --- -title: Features and Improvements in ArangoDB 3.13 -menuTitle: What's New in 3.13 +title: Features and Improvements in ArangoDB 4.0 +menuTitle: What's New in 4.0 weight: 5 description: >- TODO --- The following list shows in detail which features have been added or improved in -ArangoDB 3.13. ArangoDB 3.13 also contains several bug fixes that are not listed +ArangoDB 4.0. ArangoDB 4.0 also contains several bug fixes that are not listed here. ## ArangoSearch diff --git a/site/content/arangodb/3.13/use-cases.md b/site/content/arangodb/4.0/use-cases.md similarity index 99% rename from site/content/arangodb/3.13/use-cases.md rename to site/content/arangodb/4.0/use-cases.md index 4bc8b2517e..a9fd2a21f7 100644 --- a/site/content/arangodb/3.13/use-cases.md +++ b/site/content/arangodb/4.0/use-cases.md @@ -148,7 +148,7 @@ It also features natural language processing (NLP) capabilities. and can classify or find similar terms using word embedding models. {{% /comment %}} -For more information about the search engine, see [ArangoSearch](index-and-search/arangosearch/_index.md). +For more information about the search engine, see [ArangoSearch](indexes-and-search/arangosearch/_index.md). ## ArangoDB for Machine Learning diff --git a/site/content/data-platform/_index.md b/site/content/data-platform/_index.md index dd77dd39b2..69231e6696 100644 --- a/site/content/data-platform/_index.md +++ b/site/content/data-platform/_index.md @@ -1,14 +1,13 @@ --- -title: The Arango Data Platform +title: The Arango Data Platform (v3.0) menuTitle: Arango Data Platform weight: 1 description: >- The Arango Data Platform brings everything ArangoDB offers together to a single solution that you can deploy on-prem or use as a managed service --- - {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/data-platform/features.md b/site/content/data-platform/features.md index 23b02817a7..98eacbe3ac 100644 --- a/site/content/data-platform/features.md +++ b/site/content/data-platform/features.md @@ -1,5 +1,5 @@ --- -title: Architecture and Features of the Arango Data Platform +title: Architecture and Features of the Arango Data Platform (v3.0) menuTitle: Architecture and Features weight: 5 description: >- diff --git a/site/content/data-platform/get-started.md b/site/content/data-platform/get-started.md index dbe94f2ff2..c2f1795e1b 100644 --- a/site/content/data-platform/get-started.md +++ b/site/content/data-platform/get-started.md @@ -1,5 +1,5 @@ --- -title: Get Started with the Arango Data Platform +title: Get Started with the Arango Data Platform (v3.0) menuTitle: Get Started weight: 10 description: >- @@ -7,7 +7,7 @@ description: >- solution that you can deploy on-prem or use as a managed service --- {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/data-platform/graph-visualizer.md b/site/content/data-platform/graph-visualizer.md index d4f6a9e8e4..b121cba2d6 100644 --- a/site/content/data-platform/graph-visualizer.md +++ b/site/content/data-platform/graph-visualizer.md @@ -1,12 +1,12 @@ --- -title: Graph Visualizer +title: The Graph Visualizer of the Arango Data Platform menuTitle: Graph Visualizer weight: 20 description: >- Visually explore and interact with your ArangoDB graphs through an intuitive interface --- {{< tip >}} -The Arango Data Platform & AI Suite are available as a pre-release. To get +The Arango Data Platform is available as a pre-release. To get exclusive early access, [get in touch](https://arango.ai/contact-us/) with the Arango team. {{< /tip >}} diff --git a/site/content/ecosystem/adapters/_index.md b/site/content/ecosystem/adapters/_index.md index 26d456e16f..c69881881e 100644 --- a/site/content/ecosystem/adapters/_index.md +++ b/site/content/ecosystem/adapters/_index.md @@ -1,7 +1,7 @@ --- title: ArangoDB Adapters for data science menuTitle: Data Science Adapters -weight: 50 +weight: 30 description: >- ArangoDB offers multiple adapters that enable seamless integration with data science tools diff --git a/site/content/arangodb/3.12/components/tools/arango-datasets.md b/site/content/ecosystem/arango-datasets.md similarity index 99% rename from site/content/arangodb/3.12/components/tools/arango-datasets.md rename to site/content/ecosystem/arango-datasets.md index 10a4626f48..067d3205d2 100644 --- a/site/content/arangodb/3.12/components/tools/arango-datasets.md +++ b/site/content/ecosystem/arango-datasets.md @@ -1,7 +1,7 @@ --- title: ArangoDB Datasets menuTitle: ArangoDB Datasets -weight: 60 +weight: 40 description: >- `arango-datasets` is a Python package for loading sample datasets into ArangoDB --- diff --git a/site/content/ecosystem/integrations/spring-boot-arangodb.md b/site/content/ecosystem/integrations/spring-boot-arangodb.md index ccbb6f9223..c0cad0c46e 100644 --- a/site/content/ecosystem/integrations/spring-boot-arangodb.md +++ b/site/content/ecosystem/integrations/spring-boot-arangodb.md @@ -1232,7 +1232,7 @@ Character [id=9014, name=Cersei, surname=Lannister, alive=true, age=36] ### Graph traversal -To finish the query method topic, add a [graph traversal](../../../arangodb/3.12/aql/graphs/traversals.md) +To finish the query method topic, add a [graph traversal](../../arangodb/3.12/aql/graph-queries/traversals.md) written in AQL to this demo where the `ChildOf` edges are involved. The following query searches for every `Character` connected (through `ChildOf`) diff --git a/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md index 2e9c56af6d..1da4dbffd3 100644 --- a/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md +++ b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-3/mapping/indexes.md @@ -10,7 +10,7 @@ developed anymore. Upgrading to version 4 is recommended. {{< /warning >}} Indexes can be ensured using the following annotations. For reference see the -[indexing](../../../../../../arangodb/3.12/index-and-search/indexing/_index.md) documentation +[indexing](../../../../../../arangodb/3.12/indexes-and-search/indexing/_index.md) documentation and specific aspects that apply to [indexes on shards](../../../../../../arangodb/3.12/deploy/architecture/data-sharding.md#indexes-on-shards). diff --git a/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md index a2700254e3..b78992b480 100644 --- a/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md +++ b/site/content/ecosystem/integrations/spring-data-arangodb/reference-version-4/mapping/indexes.md @@ -5,7 +5,7 @@ weight: 25 description: '' --- Indexes can be ensured using the following annotations. For reference see the -[indexing](../../../../../arangodb/3.12/index-and-search/indexing/_index.md) documentation +[indexing](../../../../../arangodb/3.12/indexes-and-search/indexing/_index.md) documentation and specific aspects that apply to [indexes on shards](../../../../../arangodb/3.12/deploy/architecture/data-sharding.md#indexes-on-shards). diff --git a/site/data/3.13/allMetrics.yaml b/site/data/4.0/allMetrics.yaml similarity index 100% rename from site/data/3.13/allMetrics.yaml rename to site/data/4.0/allMetrics.yaml diff --git a/site/data/3.13/arangobackup.json b/site/data/4.0/arangobackup.json similarity index 100% rename from site/data/3.13/arangobackup.json rename to site/data/4.0/arangobackup.json diff --git a/site/data/3.13/arangobench.json b/site/data/4.0/arangobench.json similarity index 100% rename from site/data/3.13/arangobench.json rename to site/data/4.0/arangobench.json diff --git a/site/data/3.13/arangod.json b/site/data/4.0/arangod.json similarity index 100% rename from site/data/3.13/arangod.json rename to site/data/4.0/arangod.json diff --git a/site/data/3.13/arangodump.json b/site/data/4.0/arangodump.json similarity index 100% rename from site/data/3.13/arangodump.json rename to site/data/4.0/arangodump.json diff --git a/site/data/3.13/arangoexport.json b/site/data/4.0/arangoexport.json similarity index 100% rename from site/data/3.13/arangoexport.json rename to site/data/4.0/arangoexport.json diff --git a/site/data/3.13/arangoimport.json b/site/data/4.0/arangoimport.json similarity index 100% rename from site/data/3.13/arangoimport.json rename to site/data/4.0/arangoimport.json diff --git a/site/data/3.13/arangoinspect.json b/site/data/4.0/arangoinspect.json similarity index 100% rename from site/data/3.13/arangoinspect.json rename to site/data/4.0/arangoinspect.json diff --git a/site/data/3.13/arangorestore.json b/site/data/4.0/arangorestore.json similarity index 100% rename from site/data/3.13/arangorestore.json rename to site/data/4.0/arangorestore.json diff --git a/site/data/3.13/arangosh.json b/site/data/4.0/arangosh.json similarity index 100% rename from site/data/3.13/arangosh.json rename to site/data/4.0/arangosh.json diff --git a/site/data/3.13/arangovpack.json b/site/data/4.0/arangovpack.json similarity index 100% rename from site/data/3.13/arangovpack.json rename to site/data/4.0/arangovpack.json diff --git a/site/data/3.13/cache.json b/site/data/4.0/cache.json similarity index 100% rename from site/data/3.13/cache.json rename to site/data/4.0/cache.json diff --git a/site/data/3.13/errors.yaml b/site/data/4.0/errors.yaml similarity index 100% rename from site/data/3.13/errors.yaml rename to site/data/4.0/errors.yaml diff --git a/site/data/3.13/exitcodes.yaml b/site/data/4.0/exitcodes.yaml similarity index 100% rename from site/data/3.13/exitcodes.yaml rename to site/data/4.0/exitcodes.yaml diff --git a/site/data/3.13/optimizer-rules.json b/site/data/4.0/optimizer-rules.json similarity index 100% rename from site/data/3.13/optimizer-rules.json rename to site/data/4.0/optimizer-rules.json diff --git a/site/data/versions.yaml b/site/data/versions.yaml index d1d468b951..fa3c6500f2 100644 --- a/site/data/versions.yaml +++ b/site/data/versions.yaml @@ -1,7 +1,7 @@ /arangodb/: - - name: "3.13" - version: "3.13.0" + - name: "4.0" + version: "4.0.0" alias: "devel" deprecated: false inDevelopment: true diff --git a/toolchain/docker/amd64/docker-compose.yml b/toolchain/docker/amd64/docker-compose.yml index 3194cab15b..d1b275554f 100644 --- a/toolchain/docker/amd64/docker-compose.yml +++ b/toolchain/docker/amd64/docker-compose.yml @@ -7,7 +7,7 @@ services: - ${ARANGODB_SRC_3_10:-/dev/null}:/tmp/3.10 - ${ARANGODB_SRC_3_11:-/tmp/1}:/tmp/3.11 - ${ARANGODB_SRC_3_12:-/tmp/2}:/tmp/3.12 - - ${ARANGODB_SRC_3_13:-/tmp/3}:/tmp/3.13 + - ${ARANGODB_SRC_4_0:-/tmp/3}:/tmp/4.0 - ../../../:/home/ - /var/run/docker.sock:/var/run/docker.sock environment: @@ -19,8 +19,8 @@ services: ARANGODB_SRC_3_10: ${ARANGODB_SRC_3_10} ARANGODB_SRC_3_11: ${ARANGODB_SRC_3_11} ARANGODB_SRC_3_12: ${ARANGODB_SRC_3_12} - ARANGODB_SRC_3_13: ${ARANGODB_SRC_3_13} + ARANGODB_SRC_4_0: ${ARANGODB_SRC_4_0} ARANGODB_BRANCH_3_10: ${ARANGODB_BRANCH_3_10} ARANGODB_BRANCH_3_11: ${ARANGODB_BRANCH_3_11} ARANGODB_BRANCH_3_12: ${ARANGODB_BRANCH_3_12} - ARANGODB_BRANCH_3_13: ${ARANGODB_BRANCH_3_13} + ARANGODB_BRANCH_4_0: ${ARANGODB_BRANCH_4_0} diff --git a/toolchain/docker/arm64/docker-compose.yml b/toolchain/docker/arm64/docker-compose.yml index a8d85a4462..809d819b41 100644 --- a/toolchain/docker/arm64/docker-compose.yml +++ b/toolchain/docker/arm64/docker-compose.yml @@ -7,7 +7,7 @@ services: - ${ARANGODB_SRC_3_10:-/dev/null}:/tmp/3.10 - ${ARANGODB_SRC_3_11:-/tmp/1}:/tmp/3.11 - ${ARANGODB_SRC_3_12:-/tmp/2}:/tmp/3.12 - - ${ARANGODB_SRC_3_13:-/tmp/3}:/tmp/3.13 + - ${ARANGODB_SRC_4_0:-/tmp/3}:/tmp/4.0 - ../../../:/home/ - /var/run/docker.sock:/var/run/docker.sock environment: @@ -19,8 +19,8 @@ services: ARANGODB_SRC_3_10: ${ARANGODB_SRC_3_10} ARANGODB_SRC_3_11: ${ARANGODB_SRC_3_11} ARANGODB_SRC_3_12: ${ARANGODB_SRC_3_12} - ARANGODB_SRC_3_13: ${ARANGODB_SRC_3_13} + ARANGODB_SRC_4_0: ${ARANGODB_SRC_4_0} ARANGODB_BRANCH_3_10: ${ARANGODB_BRANCH_3_10} ARANGODB_BRANCH_3_11: ${ARANGODB_BRANCH_3_11} ARANGODB_BRANCH_3_12: ${ARANGODB_BRANCH_3_12} - ARANGODB_BRANCH_3_13: ${ARANGODB_BRANCH_3_13} + ARANGODB_BRANCH_4_0: ${ARANGODB_BRANCH_4_0} diff --git a/toolchain/docker/docker-compose.local.yml b/toolchain/docker/docker-compose.local.yml index b1eb18b9f0..76f76b01eb 100644 --- a/toolchain/docker/docker-compose.local.yml +++ b/toolchain/docker/docker-compose.local.yml @@ -20,8 +20,8 @@ services: ARANGODB_SRC_3_10: ${ARANGODB_SRC_3_10} ARANGODB_SRC_3_11: ${ARANGODB_SRC_3_11} ARANGODB_SRC_3_12: ${ARANGODB_SRC_3_12} - ARANGODB_SRC_3_13: ${ARANGODB_SRC_3_13} + ARANGODB_SRC_4_0: ${ARANGODB_SRC_4_0} ARANGODB_BRANCH_3_10: ${ARANGODB_BRANCH_3_10} ARANGODB_BRANCH_3_11: ${ARANGODB_BRANCH_3_11} ARANGODB_BRANCH_3_12: ${ARANGODB_BRANCH_3_12} - ARANGODB_BRANCH_3_13: ${ARANGODB_BRANCH_3_13} + ARANGODB_BRANCH_4_0: ${ARANGODB_BRANCH_4_0} diff --git a/toolchain/scripts/toolchain.sh b/toolchain/scripts/toolchain.sh index 17b43cad13..6fddae577e 100755 --- a/toolchain/scripts/toolchain.sh +++ b/toolchain/scripts/toolchain.sh @@ -53,9 +53,9 @@ if [ "$ARANGODB_BRANCH_3_12" != "" ] ; then export ARANGODB_BRANCH_3_12_VERSION="3.12" fi -if [ "$ARANGODB_BRANCH_3_13" != "" ] ; then - export ARANGODB_BRANCH_3_13_IMAGE="$ARANGODB_BRANCH_3_13" - export ARANGODB_BRANCH_3_13_VERSION="3.13" +if [ "$ARANGODB_BRANCH_4_0" != "" ] ; then + export ARANGODB_BRANCH_4_0_IMAGE="$ARANGODB_BRANCH_4_0" + export ARANGODB_BRANCH_4_0_VERSION="4.0" fi start_servers=false From 42c930d0676e55f5ef0918881d7af571326a651a Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 6 Nov 2025 22:03:01 +0100 Subject: [PATCH 66/69] Rename gen-ai.md service to ai-orchestrator.md --- site/content/ai-suite/graph-analytics.md | 2 +- .../reference/{gen-ai.md => ai-orchestrator.md} | 0 site/content/ai-suite/reference/importer.md | 2 +- site/content/ai-suite/reference/retriever.md | 2 +- site/themes/arangodb-docs-theme/static/css/theme.css | 12 ++++++++++++ 5 files changed, 15 insertions(+), 3 deletions(-) rename site/content/ai-suite/reference/{gen-ai.md => ai-orchestrator.md} (100%) diff --git a/site/content/ai-suite/graph-analytics.md b/site/content/ai-suite/graph-analytics.md index fffeeb63af..847524f4b8 100644 --- a/site/content/ai-suite/graph-analytics.md +++ b/site/content/ai-suite/graph-analytics.md @@ -137,7 +137,7 @@ The interface for managing the engines depends on the environment you use: {{< tag "AI Data Platform" >}} -GAEs are deployed and deleted via the [AI service](reference/gen-ai.md) +GAEs are deployed and deleted via the [AI orchestration service](reference/ai-orchestrator.md) in the AI Data Platform. If you use cURL, you need to use the `-k` / `--insecure` option for requests diff --git a/site/content/ai-suite/reference/gen-ai.md b/site/content/ai-suite/reference/ai-orchestrator.md similarity index 100% rename from site/content/ai-suite/reference/gen-ai.md rename to site/content/ai-suite/reference/ai-orchestrator.md diff --git a/site/content/ai-suite/reference/importer.md b/site/content/ai-suite/reference/importer.md index f65ddd642d..97a1eedd5e 100644 --- a/site/content/ai-suite/reference/importer.md +++ b/site/content/ai-suite/reference/importer.md @@ -95,7 +95,7 @@ The Importer service can be configured to use either: - OpenRouter (for public LLM deployments) To start the service, use the AI service endpoint `/v1/graphragimporter`. -Please refer to the documentation of [AI service](gen-ai.md) for more +Please refer to the documentation of the [AI orchestration service](ai-orchestrator.md) for more information on how to use it. ### Using Triton Inference Server (Private LLM) diff --git a/site/content/ai-suite/reference/retriever.md b/site/content/ai-suite/reference/retriever.md index 6b9de85563..17a4b2f2bc 100644 --- a/site/content/ai-suite/reference/retriever.md +++ b/site/content/ai-suite/reference/retriever.md @@ -85,7 +85,7 @@ The Retriever service can be configured to use either the Triton Inference Serve (for private LLM deployments) or OpenAI/OpenRouter (for public LLM deployments). To start the service, use the AI service endpoint `/v1/graphragretriever`. -Please refer to the documentation of [AI service](gen-ai.md) for more +Please refer to the documentation of the [AI orchestration service](ai-orchestrator.md) for more information on how to use it. ### Using Triton Inference Server (Private LLM) diff --git a/site/themes/arangodb-docs-theme/static/css/theme.css b/site/themes/arangodb-docs-theme/static/css/theme.css index 0f38344848..3647d40ea6 100644 --- a/site/themes/arangodb-docs-theme/static/css/theme.css +++ b/site/themes/arangodb-docs-theme/static/css/theme.css @@ -1966,6 +1966,14 @@ nav.pagination .next { margin-left: 10px; } +.main-nav-ol { + margin-left: 5px; +} + +.main-nav-ol > .nav-section { + margin-bottom: .5rem; +} + .nav-section-header { display: flex; } @@ -2029,6 +2037,10 @@ nav.pagination .next { font-weight: 400; } +.main-nav-ol > .nav-section > .nav-section-header > .link-nav { + font-weight: 500; +} + .link-nav-active, .link-nav-active + .expand-nav { background-color: rgba(255, 255, 255, 0.05); } From 9a4f76fb96f097b5eaa7de7378b165babc98c485 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 6 Nov 2025 22:27:20 +0100 Subject: [PATCH 67/69] Don't link to version root page, don't change page when on ArangoDB root --- site/content/data-platform/_index.md | 2 +- site/themes/arangodb-docs-theme/static/js/theme.js | 11 ++--------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/site/content/data-platform/_index.md b/site/content/data-platform/_index.md index 69231e6696..82ab7ea1d2 100644 --- a/site/content/data-platform/_index.md +++ b/site/content/data-platform/_index.md @@ -90,7 +90,7 @@ Explore your graph data with an intuitive web interface and sophisticated queryi Supercharge your platform with GraphRAG, GraphML, and advanced analytics for AI-powered data insights. {{% /card %}} -{{% card title="ArangoDB Core Database" link="../../arangodb/3.12/" %}} +{{% card title="ArangoDB Core Database" link="../../arangodb/" %}} Discover the multi-model database at the heart of the platform supporting graphs, documents, key-value, and vector search. {{% /card %}} diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index def35481ca..1eac52bbfb 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -516,7 +516,7 @@ function handleDocumentChange(event) { const currentPath = window.location.pathname; //const versionedPath = target.dataset.path; - window.setupDocSearch(selectedVersion); + window.setupDocSearch(selectedVersion); // TODO: Only if on versioned page? localStorage.setItem('docs-version', selectedVersion); // TODO: handle multiple target.closest(".nav-section").querySelectorAll(":scope > .nav-ol").forEach( @@ -528,21 +528,14 @@ function handleDocumentChange(event) { } } ); - - //if (currentPath.startsWith(versionedPath)) { - // currentPath.indexOf("/", versionedPath.length) - //} const corePath = "/arangodb/"; - if (currentPath.startsWith(corePath)) { + if (currentPath.startsWith(corePath) && currentPath !== corePath) { const idx = currentPath.indexOf("/", corePath.length); const newPath = window.location.origin + corePath + selectedVersion + currentPath.slice(idx) + window.location.hash; console.log("handleDocumentChange: " + newPath); updateHistory(newPath); loadPage(newPath); - } else { - alert("Not viewing versioned content, what to do?"); - // Should update localStorage! } } } From b73c8256b38d62616d193cbcaf829c34cd917997 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 6 Nov 2025 22:28:58 +0100 Subject: [PATCH 68/69] Change menu title AMP API -> API --- site/content/amp/api/_index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/content/amp/api/_index.md b/site/content/amp/api/_index.md index dd3aa14ea9..49251b52dc 100644 --- a/site/content/amp/api/_index.md +++ b/site/content/amp/api/_index.md @@ -1,6 +1,6 @@ --- -title: The Arango Managed Platform (AMP) API -menuTitle: AMP API +title: The API of the Arango Managed Platform (AMP) +menuTitle: API weight: 60 description: >- The interface to control all resources inside the Arango Managed Platform in From 6bcac1fed179a0927741f6f60440b65b5aa7bd79 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Fri, 7 Nov 2025 11:32:19 +0100 Subject: [PATCH 69/69] Update Graph Visualizer screenshot --- site/content/images/graph-visualizer.png | Bin 158120 -> 277720 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/site/content/images/graph-visualizer.png b/site/content/images/graph-visualizer.png index 4bdee4f799614ba5853deba888091321c2b1d40e..33492012baa728ac87c216a50244cbad6a298d70 100644 GIT binary patch literal 277720 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 PtW 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 UQ`t0BqI%U0Y5U#4 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ࣰ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�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 JWH<!e{0{?QfZ_lE literal 158120 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%0DShXn&>giVwO=F7;u~r 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®bPm)fxk8L6i2#>P#l*nCX5nQt< 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