From f7a11bc0b4ee380d46d1ee974707d37c633521ce Mon Sep 17 00:00:00 2001
From: chaoless <64477804+chaoless@users.noreply.github.com>
Date: Tue, 28 May 2024 00:19:21 +0800
Subject: [PATCH 01/14] =?UTF-8?q?=F0=9F=8C=90=20Update=20Chinese=20transla?=
=?UTF-8?q?tion=20for=20`docs/zh/docs/advanced/templates.md`=20(#11620)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/zh/docs/advanced/templates.md | 71 +++++++++++++++++++++---------
1 file changed, 49 insertions(+), 22 deletions(-)
diff --git a/docs/zh/docs/advanced/templates.md b/docs/zh/docs/advanced/templates.md
index d735f1697..612b69176 100644
--- a/docs/zh/docs/advanced/templates.md
+++ b/docs/zh/docs/advanced/templates.md
@@ -20,24 +20,12 @@ $ pip install jinja2
-如需使用静态文件,还要安装 `aiofiles`:
-
-
-
-```console
-$ pip install aiofiles
-
----> 100%
-```
-
-
-
## 使用 `Jinja2Templates`
* 导入 `Jinja2Templates`
* 创建可复用的 `templates` 对象
* 在返回模板的*路径操作*中声明 `Request` 参数
-* 使用 `templates` 渲染并返回 `TemplateResponse`, 以键值对方式在 Jinja2 的 **context** 中传递 `request`
+* 使用 `templates` 渲染并返回 `TemplateResponse`, 传递模板的名称、request对象以及一个包含多个键值对(用于Jinja2模板)的"context"字典,
```Python hl_lines="4 11 15-16"
{!../../../docs_src/templates/tutorial001.py!}
@@ -45,7 +33,8 @@ $ pip install aiofiles
!!! note "笔记"
- 注意,必须为 Jinja2 以键值对方式在上下文中传递 `request`。因此,还要在*路径操作*中声明。
+ 在FastAPI 0.108.0,Starlette 0.29.0之前,`name`是第一个参数。
+ 并且,在此之前,`request`对象是作为context的一部分以键值对的形式传递的。
!!! tip "提示"
@@ -65,30 +54,68 @@ $ pip install aiofiles
{!../../../docs_src/templates/templates/item.html!}
```
-它会显示从 **context** 字典中提取的 `id`:
+### 模板上下文
+
+在包含如下语句的html中:
+
+{% raw %}
+
+```jinja
+Item ID: {{ id }}
+```
+
+{% endraw %}
+
+...这将显示你从"context"字典传递的 `id`:
```Python
-{"request": request, "id": id}
+{"id": id}
+```
+
+例如。当ID为 `42`时, 会渲染成:
+
+```html
+Item ID: 42
+```
+
+### 模板 `url_for` 参数
+
+你还可以在模板内使用 `url_for()`,其参数与*路径操作函数*的参数相同.
+
+所以,该部分:
+
+{% raw %}
+
+```jinja
+
+```
+
+{% endraw %}
+
+...将生成一个与处理*路径操作函数* `read_item(id=id)`的URL相同的链接
+
+例如。当ID为 `42`时, 会渲染成:
+
+```html
+
```
## 模板与静态文件
-在模板内部使用 `url_for()`,例如,与挂载的 `StaticFiles` 一起使用。
+你还可以在模板内部将 `url_for()`用于静态文件,例如你挂载的 `name="static"`的 `StaticFiles`。
```jinja hl_lines="4"
{!../../../docs_src/templates/templates/item.html!}
```
-本例中,使用 `url_for()` 为模板添加 CSS 文件 `static/styles.css` 链接:
+本例中,它将链接到 `static/styles.css`中的CSS文件:
```CSS hl_lines="4"
{!../../../docs_src/templates/static/styles.css!}
```
-因为使用了 `StaticFiles`, **FastAPI** 应用自动提供位于 URL `/static/styles.css`
-
-的 CSS 文件。
+因为使用了 `StaticFiles`, **FastAPI** 应用会自动提供位于 URL `/static/styles.css`的 CSS 文件。
## 更多说明
-包括测试模板等更多详情,请参阅 Starlette 官档 - 模板。
+包括测试模板等更多详情,请参阅 Starlette 官方文档 - 模板。
From 36269edf6aeed87edd3e1ac1aacf2a15d83a365e Mon Sep 17 00:00:00 2001
From: github-actions
Date: Mon, 27 May 2024 16:19:42 +0000
Subject: [PATCH 02/14] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/en/docs/release-notes.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md
index 2ac70c0da..55b6caf2b 100644
--- a/docs/en/docs/release-notes.md
+++ b/docs/en/docs/release-notes.md
@@ -23,6 +23,7 @@ hide:
### Translations
+* 🌐 Update Chinese translation for `docs/zh/docs/advanced/templates.md`. PR [#11620](https://github.com/tiangolo/fastapi/pull/11620) by [@chaoless](https://github.com/chaoless).
* 🌐 Add Turkish translation for `docs/tr/docs/deployment/index.md`. PR [#11605](https://github.com/tiangolo/fastapi/pull/11605) by [@hasansezertasan](https://github.com/hasansezertasan).
* 🌐 Add Turkish translation for `docs/tr/docs/tutorial/static-files.md`. PR [#11599](https://github.com/tiangolo/fastapi/pull/11599) by [@hasansezertasan](https://github.com/hasansezertasan).
* 🌐 Polish translation for `docs/pl/docs/fastapi-people.md`. PR [#10196](https://github.com/tiangolo/fastapi/pull/10196) by [@isulim](https://github.com/isulim).
From 54d0be2388c2decc4a2cfb94d73869488859d4cd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hasan=20Sezer=20Ta=C5=9Fan?=
<13135006+hasansezertasan@users.noreply.github.com>
Date: Mon, 27 May 2024 19:20:52 +0300
Subject: [PATCH 03/14] =?UTF-8?q?=F0=9F=8C=90=20Add=20Turkish=20translatio?=
=?UTF-8?q?n=20for=20`docs/tr/docs/how-to/general.md`=20(#11607)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/tr/docs/how-to/general.md | 39 ++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
create mode 100644 docs/tr/docs/how-to/general.md
diff --git a/docs/tr/docs/how-to/general.md b/docs/tr/docs/how-to/general.md
new file mode 100644
index 000000000..cbfa7beb2
--- /dev/null
+++ b/docs/tr/docs/how-to/general.md
@@ -0,0 +1,39 @@
+# Genel - Nasıl Yapılır - Tarifler
+
+Bu sayfada genel ve sıkça sorulan sorular için dokümantasyonun diğer sayfalarına yönlendirmeler bulunmaktadır.
+
+## Veri Filtreleme - Güvenlik
+
+Döndürmeniz gereken veriden fazlasını döndürmediğinizden emin olmak için, [Tutorial - Response Model - Return Type](../tutorial/response-model.md){.internal-link target=_blank} sayfasını okuyun.
+
+## Dokümantasyon Etiketleri - OpenAPI
+
+*Yol operasyonlarınıza* etiketler ekleyerek dokümantasyon arayüzünde gruplar halinde görünmesini sağlamak için, [Tutorial - Path Operation Configurations - Tags](../tutorial/path-operation-configuration.md#tags){.internal-link target=_blank} sayfasını okuyun.
+
+## Dokümantasyon Özeti ve Açıklaması - OpenAPI
+
+*Yol operasyonlarınıza* özet ve açıklama ekleyip dokümantasyon arayüzünde görünmesini sağlamak için, [Tutorial - Path Operation Configurations - Summary and Description](../tutorial/path-operation-configuration.md#summary-and-description){.internal-link target=_blank} sayfasını okuyun.
+
+## Yanıt Açıklaması Dokümantasyonu - OpenAPI
+
+Dokümantasyon arayüzünde yer alan yanıt açıklamasını tanımlamak için, [Tutorial - Path Operation Configurations - Response description](../tutorial/path-operation-configuration.md#response-description){.internal-link target=_blank} sayfasını okuyun.
+
+## *Yol Operasyonunu* Kullanımdan Kaldırma - OpenAPI
+
+Bir *yol işlemi*ni kullanımdan kaldırmak ve bunu dokümantasyon arayüzünde göstermek için, [Tutorial - Path Operation Configurations - Deprecation](../tutorial/path-operation-configuration.md#deprecate-a-path-operation){.internal-link target=_blank} sayfasını okuyun.
+
+## Herhangi Bir Veriyi JSON Uyumlu Hale Getirme
+
+Herhangi bir veriyi JSON uyumlu hale getirmek için, [Tutorial - JSON Compatible Encoder](../tutorial/encoder.md){.internal-link target=_blank} sayfasını okuyun.
+
+## OpenAPI Meta Verileri - Dokümantasyon
+
+OpenAPI şemanıza lisans, sürüm, iletişim vb. meta veriler eklemek için, [Tutorial - Metadata and Docs URLs](../tutorial/metadata.md){.internal-link target=_blank} sayfasını okuyun.
+
+## OpenAPI Bağlantı Özelleştirme
+
+OpenAPI bağlantısını özelleştirmek (veya kaldırmak) için, [Tutorial - Metadata and Docs URLs](../tutorial/metadata.md#openapi-url){.internal-link target=_blank} sayfasını okuyun.
+
+## OpenAPI Dokümantasyon Bağlantıları
+
+Dokümantasyonu arayüzünde kullanılan bağlantıları güncellemek için, [Tutorial - Metadata and Docs URLs](../tutorial/metadata.md#docs-urls){.internal-link target=_blank} sayfasını okuyun.
From 59b17ce8044c14819f930bfb1e855edcc7c8973e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hasan=20Sezer=20Ta=C5=9Fan?=
<13135006+hasansezertasan@users.noreply.github.com>
Date: Mon, 27 May 2024 19:21:03 +0300
Subject: [PATCH 04/14] =?UTF-8?q?=F0=9F=8C=90=20Add=20Turkish=20translatio?=
=?UTF-8?q?n=20for=20`docs/tr/docs/advanced/testing-websockets.md`=20(#116?=
=?UTF-8?q?08)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/tr/docs/advanced/testing-websockets.md | 12 ++++++++++++
1 file changed, 12 insertions(+)
create mode 100644 docs/tr/docs/advanced/testing-websockets.md
diff --git a/docs/tr/docs/advanced/testing-websockets.md b/docs/tr/docs/advanced/testing-websockets.md
new file mode 100644
index 000000000..cdd5b7ae5
--- /dev/null
+++ b/docs/tr/docs/advanced/testing-websockets.md
@@ -0,0 +1,12 @@
+# WebSockets'i Test Etmek
+
+WebSockets testi yapmak için `TestClient`'ı kullanabilirsiniz.
+
+Bu işlem için, `TestClient`'ı bir `with` ifadesinde kullanarak WebSocket'e bağlanabilirsiniz:
+
+```Python hl_lines="27-31"
+{!../../../docs_src/app_testing/tutorial002.py!}
+```
+
+!!! note "Not"
+ Daha fazla detay için Starlette'in Websockets'i Test Etmek dokümantasyonunu inceleyin.
From a8a3971a995a953e1c3da8944bea4608847542dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hasan=20Sezer=20Ta=C5=9Fan?=
<13135006+hasansezertasan@users.noreply.github.com>
Date: Mon, 27 May 2024 19:21:37 +0300
Subject: [PATCH 05/14] =?UTF-8?q?=F0=9F=8C=90=20Add=20Turkish=20translatio?=
=?UTF-8?q?n=20for=20`docs/tr/docs/advanced/security/index.md`=20(#11609)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/tr/docs/advanced/security/index.md | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
create mode 100644 docs/tr/docs/advanced/security/index.md
diff --git a/docs/tr/docs/advanced/security/index.md b/docs/tr/docs/advanced/security/index.md
new file mode 100644
index 000000000..89a431687
--- /dev/null
+++ b/docs/tr/docs/advanced/security/index.md
@@ -0,0 +1,16 @@
+# Gelişmiş Güvenlik
+
+## Ek Özellikler
+
+[Tutorial - User Guide: Security](../../tutorial/security/index.md){.internal-link target=_blank} sayfasında ele alınanların dışında güvenlikle ilgili bazı ek özellikler vardır.
+
+!!! tip "İpucu"
+ Sonraki bölümler **mutlaka "gelişmiş" olmak zorunda değildir**.
+
+ Kullanım şeklinize bağlı olarak, çözümünüz bu bölümlerden birinde olabilir.
+
+## Önce Öğreticiyi Okuyun
+
+Sonraki bölümler [Tutorial - User Guide: Security](../../tutorial/security/index.md){.internal-link target=_blank} sayfasını okuduğunuzu varsayarak hazırlanmıştır.
+
+Bu bölümler aynı kavramlara dayanır, ancak bazı ek işlevsellikler sağlar.
From aadc3e7dc13be9a180374ee0dcbbc349901d4295 Mon Sep 17 00:00:00 2001
From: github-actions
Date: Mon, 27 May 2024 16:21:46 +0000
Subject: [PATCH 06/14] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/en/docs/release-notes.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md
index 55b6caf2b..6ea9ed7c7 100644
--- a/docs/en/docs/release-notes.md
+++ b/docs/en/docs/release-notes.md
@@ -23,6 +23,7 @@ hide:
### Translations
+* 🌐 Add Turkish translation for `docs/tr/docs/how-to/general.md`. PR [#11607](https://github.com/tiangolo/fastapi/pull/11607) by [@hasansezertasan](https://github.com/hasansezertasan).
* 🌐 Update Chinese translation for `docs/zh/docs/advanced/templates.md`. PR [#11620](https://github.com/tiangolo/fastapi/pull/11620) by [@chaoless](https://github.com/chaoless).
* 🌐 Add Turkish translation for `docs/tr/docs/deployment/index.md`. PR [#11605](https://github.com/tiangolo/fastapi/pull/11605) by [@hasansezertasan](https://github.com/hasansezertasan).
* 🌐 Add Turkish translation for `docs/tr/docs/tutorial/static-files.md`. PR [#11599](https://github.com/tiangolo/fastapi/pull/11599) by [@hasansezertasan](https://github.com/hasansezertasan).
From d523f7f340275a4d6e446c04eb93397c916fb518 Mon Sep 17 00:00:00 2001
From: github-actions
Date: Mon, 27 May 2024 16:22:14 +0000
Subject: [PATCH 07/14] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/en/docs/release-notes.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md
index 6ea9ed7c7..ae24ca8de 100644
--- a/docs/en/docs/release-notes.md
+++ b/docs/en/docs/release-notes.md
@@ -23,6 +23,7 @@ hide:
### Translations
+* 🌐 Add Turkish translation for `docs/tr/docs/advanced/testing-websockets.md`. PR [#11608](https://github.com/tiangolo/fastapi/pull/11608) by [@hasansezertasan](https://github.com/hasansezertasan).
* 🌐 Add Turkish translation for `docs/tr/docs/how-to/general.md`. PR [#11607](https://github.com/tiangolo/fastapi/pull/11607) by [@hasansezertasan](https://github.com/hasansezertasan).
* 🌐 Update Chinese translation for `docs/zh/docs/advanced/templates.md`. PR [#11620](https://github.com/tiangolo/fastapi/pull/11620) by [@chaoless](https://github.com/chaoless).
* 🌐 Add Turkish translation for `docs/tr/docs/deployment/index.md`. PR [#11605](https://github.com/tiangolo/fastapi/pull/11605) by [@hasansezertasan](https://github.com/hasansezertasan).
From 8b4ce06065d796974c09aa8a93b67dac97437bb7 Mon Sep 17 00:00:00 2001
From: github-actions
Date: Mon, 27 May 2024 16:23:10 +0000
Subject: [PATCH 08/14] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/en/docs/release-notes.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md
index ae24ca8de..906728b09 100644
--- a/docs/en/docs/release-notes.md
+++ b/docs/en/docs/release-notes.md
@@ -23,6 +23,7 @@ hide:
### Translations
+* 🌐 Add Turkish translation for `docs/tr/docs/advanced/security/index.md`. PR [#11609](https://github.com/tiangolo/fastapi/pull/11609) by [@hasansezertasan](https://github.com/hasansezertasan).
* 🌐 Add Turkish translation for `docs/tr/docs/advanced/testing-websockets.md`. PR [#11608](https://github.com/tiangolo/fastapi/pull/11608) by [@hasansezertasan](https://github.com/hasansezertasan).
* 🌐 Add Turkish translation for `docs/tr/docs/how-to/general.md`. PR [#11607](https://github.com/tiangolo/fastapi/pull/11607) by [@hasansezertasan](https://github.com/hasansezertasan).
* 🌐 Update Chinese translation for `docs/zh/docs/advanced/templates.md`. PR [#11620](https://github.com/tiangolo/fastapi/pull/11620) by [@chaoless](https://github.com/chaoless).
From a751cdd17f1f1d3d3e87a3d41b98a60776236d06 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hasan=20Sezer=20Ta=C5=9Fan?=
<13135006+hasansezertasan@users.noreply.github.com>
Date: Tue, 28 May 2024 17:05:55 +0300
Subject: [PATCH 09/14] =?UTF-8?q?=F0=9F=8C=90=20Add=20Turkish=20translatio?=
=?UTF-8?q?n=20for=20`docs/tr/docs/deployment/cloud.md`=20(#11610)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/tr/docs/deployment/cloud.md | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
create mode 100644 docs/tr/docs/deployment/cloud.md
diff --git a/docs/tr/docs/deployment/cloud.md b/docs/tr/docs/deployment/cloud.md
new file mode 100644
index 000000000..5639567d4
--- /dev/null
+++ b/docs/tr/docs/deployment/cloud.md
@@ -0,0 +1,17 @@
+# FastAPI Uygulamasını Bulut Sağlayıcılar Üzerinde Yayınlama
+
+FastAPI uygulamasını yayınlamak için hemen hemen **herhangi bir bulut sağlayıcıyı** kullanabilirsiniz.
+
+Büyük bulut sağlayıcıların çoğu FastAPI uygulamasını yayınlamak için kılavuzlara sahiptir.
+
+## Bulut Sağlayıcılar - Sponsorlar
+
+Bazı bulut sağlayıcılar ✨ [**FastAPI destekçileridir**](../help-fastapi.md#sponsor-the-author){.internal-link target=_blank} ✨, bu FastAPI ve **ekosisteminin** sürekli ve sağlıklı bir şekilde **gelişmesini** sağlar.
+
+Ayrıca, size **iyi servisler** sağlamakla kalmayıp, **iyi ve sağlıklı bir framework** olan FastAPI'a bağlılıklarını gösterir.
+
+Bu hizmetleri denemek ve kılavuzlarını incelemek isteyebilirsiniz:
+
+* Platform.sh
+* Porter
+* Coherence
From ba1ac2b1f6689b1588b8bec33eb67d426d03abf1 Mon Sep 17 00:00:00 2001
From: github-actions
Date: Tue, 28 May 2024 14:06:23 +0000
Subject: [PATCH 10/14] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/en/docs/release-notes.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md
index 906728b09..968dddf7d 100644
--- a/docs/en/docs/release-notes.md
+++ b/docs/en/docs/release-notes.md
@@ -23,6 +23,7 @@ hide:
### Translations
+* 🌐 Add Turkish translation for `docs/tr/docs/deployment/cloud.md`. PR [#11610](https://github.com/tiangolo/fastapi/pull/11610) by [@hasansezertasan](https://github.com/hasansezertasan).
* 🌐 Add Turkish translation for `docs/tr/docs/advanced/security/index.md`. PR [#11609](https://github.com/tiangolo/fastapi/pull/11609) by [@hasansezertasan](https://github.com/hasansezertasan).
* 🌐 Add Turkish translation for `docs/tr/docs/advanced/testing-websockets.md`. PR [#11608](https://github.com/tiangolo/fastapi/pull/11608) by [@hasansezertasan](https://github.com/hasansezertasan).
* 🌐 Add Turkish translation for `docs/tr/docs/how-to/general.md`. PR [#11607](https://github.com/tiangolo/fastapi/pull/11607) by [@hasansezertasan](https://github.com/hasansezertasan).
From 803b9fca980611452c58a2b3421717e7f5078634 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?=
Date: Thu, 30 May 2024 08:28:20 -0500
Subject: [PATCH 11/14] =?UTF-8?q?=F0=9F=94=A7=20Add=20sponsor=20Kong=20(#1?=
=?UTF-8?q?1662)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 1 +
docs/en/data/sponsors.yml | 3 +++
docs/en/docs/img/sponsors/kong-banner.png | Bin 0 -> 21116 bytes
docs/en/docs/img/sponsors/kong.png | Bin 0 -> 30723 bytes
docs/en/overrides/main.html | 6 ++++++
5 files changed, 10 insertions(+)
create mode 100644 docs/en/docs/img/sponsors/kong-banner.png
create mode 100644 docs/en/docs/img/sponsors/kong.png
diff --git a/README.md b/README.md
index 1db8a8949..55f3e300f 100644
--- a/README.md
+++ b/README.md
@@ -55,6 +55,7 @@ The key features are:
+
diff --git a/docs/en/data/sponsors.yml b/docs/en/data/sponsors.yml
index 85ac30d6d..6285e8fd4 100644
--- a/docs/en/data/sponsors.yml
+++ b/docs/en/data/sponsors.yml
@@ -26,6 +26,9 @@ gold:
- url: https://www.mongodb.com/developer/languages/python/python-quickstart-fastapi/?utm_campaign=fastapi_framework&utm_source=fastapi_sponsorship&utm_medium=web_referral
title: Simplify Full Stack Development with FastAPI & MongoDB
img: https://fastapi.tiangolo.com/img/sponsors/mongodb.png
+ - url: https://konghq.com/products/kong-konnect/register?utm_medium=referral&utm_source=github&utm_campaign=platform&utm_content=fast-api
+ title: Kong Konnect - API management platform
+ img: https://fastapi.tiangolo.com/img/sponsors/kong.png
silver:
- url: https://training.talkpython.fm/fastapi-courses
title: FastAPI video courses on demand from people you trust
diff --git a/docs/en/docs/img/sponsors/kong-banner.png b/docs/en/docs/img/sponsors/kong-banner.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f5b55a0fe8bc997f99faef278e21dfbc7a32b9d
GIT binary patch
literal 21116
zcmV)AK*Ya^P)l00009a7bBm000XU
z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP#LKhPTjt5@b_JK)7|%0ICZM({7aV4lASitWgL5cF#cb26>E97$wZ*Sf0=*JJDlh
zS=mOjem3ie1`XI!2Rhn=@ygTOQWiKmz%fTj2-xIVOIx5(7B&;R{=k-U(r?FuqW>Fx
ziY@fC-7o4>UivmdgTHMT<`1nW69bs4M9h6x3ID3fjSpY9rx!gVD3cTtA5|3<$mxSt
z#P@T0zR4wrSVI-_rt)KzIy#jA`wpI#fPi@rYuls{wA-OzLrQ9C(MFiH!!bU!Q?sMw
zK%*LM;01j`#RM%AjUP&|rSmjsTjg0*RmB{Sc>^ksjTn^sMzE13&58fL>1`XrwtH<2
z&ph!cTy^dR@Z=-^fO4w1fzg}?E%O3l#c8k@Uf3u%|DG^B369$Pf8bYt`Z_FH`ik{t
z5Vm(z8pVG@-8%o7w`oq;t@wY{iCOyX^WWx;pH)1vf=?(PS%kFCfADixXvlpSWHeNu
z(~60cp(>3GIx=LaYoA)>ItF4gvCH(QdufnV3EwEqeHD|*GH-0~jS5#43M;xf)XsJU_
znr58wbfobpPZ>O@CqnJ{>g9rfl0pgCd@_9*^1R~#)0ji1o0zg79j;_aeO$OEPQ3;8
zTdLAA8RuZ#*XNBsz)UrD{eT6MQx=-{V1En>o+7^&S`AQW6-JJ!tsny>U_j${@hr4h
zJ56ESMu)Ep1_5XQAPc6Hg4*-6pr?7Qpp7_AI%x7A$G4h_^o=yldxbC$gH~x95QY{&
z#AexTv_p9%WC*2J>jk-K?@3gX;1=1O1anbj*(b@G$b!-dZxhC$Ibp0E`Ifb75`H#i
zMXVOIC264iG;2pEx5)$aeLt>1%QYAfIj}*<1!TbSLR8BQ31%}0=JHT25U13-4mMs1
zk;Obg1u+a6L-KeSv{bO*YrZN5-7R*S4I94Y-(ddBFT(FnKO0_r_IcM8|3AQypEW_E
zpuq#6-aBH?|A9aK5PbQj=y;T`7vU1#O4n@ulo@{hBSR$(C95x
zV!1kibYumWEUQ+rYs!3L6b=%^O}t!+#Yah2zj&+;ZPvO)#f&J?OwVR|{R^S}_el-`0*5
z0dCV0X-m68D`PyMSrPEH(BGDKyfIPmLZ3GklQcF|jW+=w+(Z}QnS`uq-#jrWVMwX6
zB!Dc8tHc0I-pVY70Sdw5HGE|_KeJpQ28NW$wN_QpzGfazw*v?h#|h9n^^s;70)-uL2y2M^4cwfx~~#19Pp{z5#aG@^JXwHD8D2
z-DM1L#MMr;CVCMNxGzFq@>S0D8Dw5mNG_|IZ9rCb`rV+`1D4&01M|ND7V@>Oom?s9
zD(F3Bw3)^=bm;ymoHGQv}f;uz1yh6M7-zHdA
z2rzBec$Nf|!m6qDhDI?(S{M}4D|$AdeS7+iKfc|ryf!ds(p7*EjvwzBNY|*d6=0g}
z45d}qq~wGdCNukX8<<8jua0+$U&4
z51^R;tE@HyUcbqDVT4oG-SFZw&szh*Uv0nvIA~c2sSV&5M@H?j^+#du
z{5f#vBbP;MYA7bEVJHGfABO;kBLC_x+m<{mWXSOpmJS?(UauFsWGEUTH4Ey%uAv~j
z&X*Z?eBVJv6Hw%L?X4KO&yY+mL(5I$z<^xmjo26!C_ady0y6edh$avrRET%A4uXgX
zT&jG?P*ZnmA%t7BW&gcZur<>H44PH{sutTU7fP)eGd~BwZa`2q1Zb)UO0J`;16BkK
z;nl4aXyIc4wvLt}?RfXwz#2+$!dL4v{XQ@$8*Oa1w@LE=IJNPqrJht*!-5(Z7fr#g
zvk-LBtEfSzm*@L|;|%dfE!kA=Vgd#Gt{QqNb-ZvE;a6#F#Dt!HwMOSavk)7U;^3vF
zCe?N&MNr*XG`BH}0~4h=#^D8P1Fp0xT1wpD0oYn?TfSV^H$87v~OW&Pf4^V;!
zK<1mQ9T2`%ST)8lvb^Ga6$EQcvQoSjD_??{N|gxp?0U(_ES6Hdz5d4Q!P|D;5|%7{
z5w5-H3b^;qzZuJ1mtyf9o50byk15Z<{N~$JC$9?oY<~h=a`X3K@v?b<(ejAV4;b!r
zLQeweQO0sCL|vf5D$?aCZ9f7G4o`r7w`R`}3xDMqxwL{Ck=`BY5;=Jmf|G4xS7;6@
zgT@t)VRd84z^%~e2|5z$fGQYJdcb&HGk^fAFAQ|G&|%>}Hxe@9!K(_rHp`?C?&DY^
zA+)=p2Eb=L0UcUa_gH$Pr%j+WX&;Zy22IAJW*GqOK;s2rXac3r>)KSbyUF`;%4qU`
zTu=-Dg5|d&5ML2L8+>mY6RmA%((Lo+bda<{(@YT(K!|(5q5w8q1WtlUDPe9}dE(iv
z^(SkDb6UJ3Jy$X3etU79YqxUcX-Ej=0IG7rI+KHqw&y@}E&;Iw)sR7xwPXQ}021(b
zWtwWJKu|T5j$B5fDg(0?lgFyXEtK{&RxrDs%uVOqTMf`F!P*0kb01Wx_snt<5Yx6B
zfDlJ*om)&dBU&YU9<&QgpRp2L`G@o2)@%L@OBOE%*SItyK*tppU}61&?z836e4D<0
zSD3ZNY`E-}A1IxDm^_SO`54FGFhti>2pRX8(wJ_j6J1yxrk^d{y5C1==&>Q;L>@}%
zX)qBJQ1O6sfQ~f!%8tzlXq1n!y|U>MWFZIfocS(R5o1FT;FdBpHdb?Q#HI<Ty
z6_RN)am15dS2v0Lt`gBw23pY8gjd;tkm3&dv-09K(`ohVeTqNuN-E2o3lM>;!aOwE
z3#BzuT077-=Fsy-z^Fo5D4^~llgfr2UmGI_6)egC&nJa|t2GgetQfAgSqF@4O{$yyb@Q%8PU0oYT&P
z7oL62I4S*W`7p0oLvt}{1)eY7dJ~YB=lkvW-*Erq*TJJt-x`SCAr)QZndzBq5tB70lqg(&bGXv#U;~B*H(8Jv`}6x
zt}y`GwzLu#nWbi4_#?pVY3P?ybbj
z1a6QPDhVG$=95?#2&NH00uhAVDg`9hj!c=h>ou#b0(-xIH|$hnaP!sI!5=TWoCT)=
zNF^VVGhoptiPu)B0)QzC)K6=yvH|S!)??tjYrhC%y=7d=gh>;yJK77h^jaP8nIDipkwKj_D
zi3VHEAkrZa3FPOh>xy#76krod1{|%)R#Dk)@K#3>WNM)pEoST}2tr=11OZG+
zCXh2yq)e()g7!&Rr~1vBaFVfMIfUF=tHObV8%qsyy>#6eyxHCrE!yLg)f<#%)dVZW
zva}j(Ah=%uI%1xjylxfd!5eM{%EN!dMxWu0e;d4}80g7Dp5KG>*1{&IVX`
z9=Fo#_~Xki09?y4dVTxR+R~uO%4*V8ln(_v>`T(bl|c^qT>}xdbTq;1#(;=?<4+!yn!#zw=!Fr8
zP=+L+wf$A*1E>ODjAdOQ&>Z|JPa&c`cAy6=Yk(U76=OrnqI|=Q#MVd2jaA7CAH*DU
zvZ5WpO4*LjU=0I9N-dDAFtnS-tGp^M_pP^v0$9{oVp^KM+wH@%Pdo>=+;|UELzCfs
zhrS=S+HOl2UAh$JKL0`#HRRXnfVj6RFiSvOP8C~~mHs(K^Y@qLKM8N!_#l|K_*qyw
zIuBT8Pn;m2R0lZ?foO@JosmhrUjzv_LajVtizv8x$$ypRgS3bMrESQl5zFh4tsG-2
zRRqFFTSqM`T9-(ksvxVdIu&X*4tqdVfmIoJn@y)Op<{2XwWXQx=9w^Y>o?%?yB>$I
zba|@A)s^VU0!SrPOOV{rViGH*@srY}^?(UYjX4a)V3J^UJZK2W3^EPt3|*b6OB_GJ
zT?70b$BOa!3h*~tniiSy#{p%k4>KsF{5}sP`C5XXqtja<=*mb#DW$PKFn5CrB7LC3
zOWB#}!YsEWnYcm{0BJu$mQ+fY6O5@3ZJb+ou<$S;mG5FBaBWknF%c4gcx57uO*iHw
zz!B8g$`E8zG}tT_{$v`how_0lAU_bGvG!p34?wZ6CGo|zDGd=zn+6v8vFUhVkcDpk
zqsAKyV6_*6b*{P$eV3mEs7PVKebJmJ{7ab6;K%?!N0`ocrQJ
zcCG7zU~^zVrXdVFiglA~;-K
zMr@MHp4>FGb(M~*uCV5W#2{I~uHU46t_H0w^WT1{@GaP?QXlfY)V~?Hg~fgYA{dV<
z_Lrxal`EsP;0zlKCbW!@D`ANbM;&Cq`62hU0ChOx2bFz4}q!kstXiyORYb~yCt!*P?%Hip>8
zFz=NGG1(9U2Uf$fOqW1}N2zruStKzS9{-k&&WEX!UJI{#&4%#O%a7uOYH}FDi8vA_
z#8O5=CzdfhG6_4wD@D)Gn3%{KH)1dlNnpj|BG65C!37
z?K;IWsOJbgIw*TNcwGsIy9*`cA-%yS3MzP1U=~=c4|$s-JEYXs2)vZnIy9?sZoE_f
z4K>_Rg#d*H7&Kfdmx&eG1AVbrNIpT;T;DaChU{MtPGk^Ykxagvbxa|!9
z7#Ea%-NqxU*S8x6{3g!he1C<0ZfK^WOU(
z#-IG;Z20FtpG`N9Ir=c%V~<_<`+N2~5~M3F;8}n@02J1`aYNfEc$UX*4(L)5m25@XlSfh5g^N8~*S|XA9?K>0L1F
zP7XO6Yi7M^2XWt%CeK(B;eiYi#^(;)cKzLW)Ajd;*Q~w@9`TWn!r15{`0E{ig{v;T
zMuaQ5iD(&89b*?1e%3Rg#LXiz>A@$ihTY!&X?SVwKVad4=Wx=*Y0=K;Vt*_G1}$Y8
zrhs(~qp_q;B_lonuf$S$k!1*5L1gjp=0xNbv*H^Ky10Ubd++8XAgRvv)>{uQxZna#PvG&6cf7+&E`)CbM9|ljaj^iL
zfwnaP2OIz^V?6j3;MJ1fPvk=Aj#D<5MLgJPr=8%!3om5Qu#4`!=RNO%9e3Ojk2>n8
z0+d>4EWo*?z0E}gejz|B@CN5P^YrEm^QVff`STaTJ@?#`lLT-PejA^*CQ(VVxCJDO
z+5?{NM~T+rACju5IJ}L*Bn1?7QC)aR2=eF+Odw
z@rJPNHgCvR1it8s7+(PKwQ~h
z9bD%tTTlbJdbC(2LMx#zQ&T6H3U+WnP}pXEq5%k-9V|h4Un$2AFvI{lcKRwLBW;v;
z?%c)U%+oJp9&EqUZ20ym?}B;r=EB)O{~f#(V_J+n_C=AE+vE3sh(5)9kr=CFeK_tH)8?~HQYUy%VnKD!=SvME8*C-+JWrJ`*awEMkcDR$hafs809zCdou8tERp)pbm;1J*woJ7kMhw=!6rnc&ZMxjNA(v8xV)(Z@r
zwAI_8Gvl=&(fpbP#>xlp2QPo?$Dwn@Ex6Ji+awdC_tJbDTrz<(afN2ws4L8vF$1o>
z_S*F9$Rm%88tqfy25V}g(whXIJp%_ez6wp3W}^wGHkukh(=4kHq-}s3T7uG+ywNWy
z?DpoJT5xFK0#%{Dda@qBLbrYO6Su4y%;cKdQd$T%fwl%1-X
zZn4D{P)6x852aYWhYBsaAPAf#>8%7=$C&tKj26KTVlqsdJ`HBgT1TcbsJpkpb(wBe
zu;n#q)=QFS2wCk;#D|PVHb20(iL)Pk@Oz884mouf1MR*~z1&wb%*5hxz!doyRQ
z1z-K2|Blwn%5c#Izks)Fxf?EwZZ~L-CvYpfGSH<>f)J9i5K0TzK}P}rd87;oSfT5&
zI`MJ|>Bfh`Eq{I#H{4`a_;^%M5thK!S6mM_UUzHE-?6O0bP7Da3z*V&^1=k
zM$u)s5nE(0M@3ddMbQq~g2YAho%OLrRLqV1o-27-}@eGA=lnft)JW;mXbHutuY$h-rFD?A
zWWe)%&;(L!SQW8NNB|P85CRa9-0>o-B)YvgF|~t$MuC<HA=5M#8`LALm>Z&PaFpqUUX5|e6!7QhaGl+v(Nq|Tp#nF
zc;Xk~-h1zh*3`u;7>+pNaGW-6IzRu!amT`}b!WkXXr-KW);W03z4sQDV{`$*amRfO
z){XIt`LRu>oN^k>p8aN=HER}}dg|%QFqMIE7|x!(3GDOkypT@36x*aOj~2u@JoR##`W5zdFwWp~%ziwtG9i``x=UKWM!C=*MRQSrOorb_J*`
zoa5j0DEL2chycia_dN)2e)C4~(PNH)Z+`0(sUVwPsh{t=?;*JP=D&y#yS0h{xH5e8
zD+D4_VcYHA3YTAgO*tkM2OJvk?cH~O2duNsnsCNXf0Yuhv-X;J&;jp;tNwTcJn-P(
zt(|yaytneoQ{ZQ3{#FSJu=U%wfOqY-Q{?*;Sg>$0{Qmb>a2}PeFfFG4_oEJkTW`B7
zmb(VLeXGsksz2QXS6_2;>I*;Esr)0OYipggUIz;nFM;zfy$QctF+;Rje2=STUG%I6D3CqtD}$|9BqOc5)<841-;Cu-*tqs)r}J_`1_
z?m}OW2I&*HQp~;Iqc8`F;s`VoaCl+`%VR5sB7k&zQT%ts`UrhqbQ@_LQQIN9v9O0j
z9fHCbJL!tsjp8%V>#7A;)6!n{TOr2<`tg$hMqGemm-rB0Og9wEkMWy&tcRi32VFwV
zXME{vPXu7Hu8jsDNs~12Kl*=7YW*hRwD+-A|@NuXudb=O@taL@AtU|_L<2j7MkSXhJ}Jeok09%(v^
z!i>L@(6;<1opcgJUI7Vx5_Z&f0t~X&sQr|O0Fyu`#!yoKQyxldU_o^gf9QS$n^ZaR
z!_rat1f-NE#-tdmX3Ut*zxUnuJ-FFsvl);tzW8F!`=u|P2xmpGxbUJ&xB(wL{ICcD
zn-X{+<)!jw?J$dhVwYX_hywl3+|pSQG_L;B6_MvN;f5P;f>|-|qkq3Imi;tK6#|eD
zk}}MLl=AGb!?vuw(?#F!z4w0jCH&Sr>@kpjbky=^BHf?0?mBSj2M&TAw%-;$^3mf{
zX`lP=6X5fo`%k#>&$mL<{@EpU=m!pjJ@+~Y@4fHAko!Zr5itip_S*BEiEm&3<`3cA
zb53V^$SrmA&3EV|D?@NVbVW6ok%YVd8m(Hrp7pZX~L=C>Dz
zMT-{mj>>Jf-V#4`!ZA$4i6?yrOou%Aq!aMUtFE`P1t%PTG@kIEN5h;s&%tfC-3`0%
zwj+G#sDt2p-~Ty${|7(gs-{LjIR3b!;C=h=fon$qp|lS?^ccqk+!*G@O`SRgFTL=m
zuyzEG2OoY67A;x|M;^96EL^lCr!9wi!rEe5fFTS!2U%2t_agN^$TW+xd{O9NPf|p-<2ClpI);Lxkjmd_Sh4aV@
z*TWm%v==<`^cA7gU(POyx<3XJM~0x+k8Z0700biadRhD%3uGz8=dziPMiU|2
zpbjbq!Ah(#pg0H)kA%+16bwt3ie-qpI3caeQHxVtg*>f>pwx1~eVV!J{n|-e#&(yL
zAMs(OUEYIX`BGST;csEu!AAn`QsF)Fx^XD}H@w!`Fm<2kd;Hn2wd!*JMAN!yUJ)EP
zm`s;h2;~^X1RkVSQ*hbZXx0P83oPJlnaLkdU_=+CAq$5t(rPIkfsI)-&2kB_{1qC(
z=?3U}pd7HUl&8sp2;~BRBAxFS15^^`l%A{(65a%^^k)_U34Ll?q@O^C0fIn<0=p!*
zsqMx;0|zQE@+?_ubP+hw^ZobVKSX};GXf$4R9f_K^2uKoPXzOGTD0C?&tRO_7J_pN
zS-R=)!yldsCx7K@e1F}@`^O%8D1ytOaN`Ys=Hw@S@pB9wyS{VJc<&}2-0Mbb<&N9`
z%%GKYe`on!e97f-$t73789zA{4m)fn?Dnqrcs}z*R?S8mZyC#2#PwWx#UG+Iav*%>
zvnS$$g^MD%ti#~(@5B=>*J=I
zZimaSxSFk&nKRdpZmjoW1dsuq7-zgLzUQ91q$eCm2j>OUbcyKzX-(EGx8BKPWslw8
zfxkQNVovg|ckRT9cHey`1`v9_@y2fmE3Z5iZn^cZJnqP9A@I2BsvF@WM}Hn{@xm8R
z{5X8__#@%=+y54=j=vQoY`5b9;pqqQAfOw!Q(4m`w{%&oC`>c4m01l
z0bY34H;q}r);+NM#avm`ua)#F1lKxkYEWOPtYwuIzr6p0-I27oiJV$Ppi7fTmyR+t
zS`D--Q}>nw>(-3vAzfj&>fAI$_NZ~$3o4nrA~;k
zk{H*B7C@)RF_607r>*Q1$PX2rpM}wa==aSc2?*RMJ>93@BRT*yKpAPFH$kF(A?Tij-djV5xo
zBx0U?@~H?sUsHN3c=D;I`5sviW{dB$&)yNl{v7{qN+aWmC!PxA4wHNtz(e{+`vG(R
zc&&-9uYUDAv2BYqoDJ~jXl2k9<0c#^`PhH_JO4iQ)H6_RgJ^{;f^(vqYy0iDW-!p|
zF;^?qQ2ZjgzWDdKzdoNI@+XjGvTJndtPC1~51uuj`OL9+>JPt;r=IdPxcGvz;FzNi
z=lf4T{S4fE%U_y|OkoRW(XzCS0D?s8Hrs3|ZHg|i2qy58Gk!&`EZAh@H*(r-w%&p>
z-g?_#nV1tk`C(3f^2tAtsyHg%fggPTY`*`#_w6BSp*HsS=U+kAhsZoINnc#}&Rw^Q
zX`Y9lpZ$lRzAb!lw1#VMyI)giX2HgE9Fy=T6paNJpA!qDQdd(5;&IZ&r@RAS*SPY|
z_n|;bS)(NqK$p^Dj4e<=TRnL^US4^55&YuJYhrt^j67QlKK;of;S(QwFRZuWM$lVn
z2&T_^J-lVtU10W(JHWqfvOTOeb90!!+WIhg+UhWQ@)Ve~(zGz4GXf(KJSLF%jsQUB
z4lTW6cT#kBksGZd;GpxfP}Yr+#S{bo^htj)M|6|Ld-P5cI;>Gva8WvS&+$Tm3N3QZ
zt>;Bm6+f3H%6x_#baW#nWgm)Rg{d2EiejBrfaTmkXvz{@}UVhp6O3X|Tpb(V;j)Ml8n_wEpuE`!C<2diZ^
z-B|;Ef4WF$nTAZ7Gzlycl;c?}ZI^RZ{p*<;R|w^5s=>!0sbCF@4SgBV4id@f*k+AU
z9K&DKeiHa}UwIKCAfUOMeE$;v=psO%`xg5lt1NzJmsWH$u~k8qNd)8&pL0xvz=!gz
z7h^#L)Rd1bLM0lqcw8>1CPMg@qPpwvTm4mvOxYBtqJ<8SbHY~
zso8x;Ah6M!Hc*ssN}wP6AyK70h_KOy>%;jMTxAXtX5=a>PmXd@z3YN{sC{U5Mp}6l
zwClj{MlhW_{}dcS!?N^;x)&mUvRjIUEz+_l+4s}8ft8ezTW^01{<=;dN`QitpX?
z?XYT$nYi)xcy0cLX?TiLnO4F}bA#d#j;g
zc*DADz}!mSj0G0W(1j;ptL3s%Br%ZC2<~QFC|6o3*S)JGP3Vam?*bDy-3f-)SQl~9
zL^MDZtN=xD5
zp{2UE;)sM8SpYllyz_Vg_wXv({=gg@6e=sen&}%n4UKkrVeVri*aqg{z#d$?NPv?@
z?_6a~HyAGv@GG@^StR(0cUBL%|CHD|S&GRF1!>POUc#paZBlX}D>E
zk02)$(FN(6Nra;2pzXG$LX)%)6Q1c!d|7&V9?8Zj?@q%^BNV(0=>ZA*b=FxMO4}t`
zD-jeH%wNEQG=wDVk{~tr6#>wXfAlSY5;tM5z1|6@|KHi3O?>_OHy1D{k@Y}swEOOV
zI6Uyc!^&9`3AtS&$pxpCH#UFa%B!x!_aC%xq<<}-pgIA?!bs0=es@U(jxCsn+s01<
z6`KYzAkOYP`axcK)RT~@ZUT_C*Ir#=6iVJ=W?cFP&N9rO?68_UH@Y6j{Am;+VKgU0
z_0D7sK!y>g3fj}`J&`+sw>E@6uQKK{M}T7tq?C}Bt6A9D$nScpV;*uJQ2?8w54ET}
zRiDqFqIZ8ljB!8=bieT8TsY_VcfjheTMgd0{_3#o<=4RjPxj%3=N^aoFV2A_3toU_
zOBX;ly7FmNRw
zHU_N2`TPWqgV2+Tw|oFYW<{ZPkQoz;i2?WrAAA(t9N?*Biil_<5=fV~XVnq|X;>0T
zpm|N%$_y^JZCX{e@@g>UUB^d?YToBT%n^ly@=D-rD4KE84?Pa%o%RiQ&G9EfXVp~z
z-7v6GHzT?R=AQiR==PcijXI$*Fu`ahpFX)-NO)Obm^AQa+RzAA+kFy@ZRIzFH#F{#
z2TslVzTSe*jeG<2YTtkd1cP@}KBIm1Gn+)`K=JRHkm!B1{DYcGKXxunPnp=V^J
z&@*z=8J`UpsCac_ApuVW8*YCIoT!amzR!C9`L||mk
zPXb~n`i=z&rWlmHW22!g7>;4yXClgVU|~xDu;*R}Dy^7R-c+}l`ym-K+ikm*xwjaA
zw%cwiXkL_N`t+3eU3-&_bc-F&-&DyXzJ;4D-4%@{0bd;ZH^L^1&W6>LJw7v)*w6IUEA3bAIS4#&h
zT)3E5VHux@%-*8;(e>YTEk|pz_CLQ_oZ}&w6a&|J!Q@GhHvslQg3v+VX+c*62icn#
z3!pdyQC?RRW9CU#6NuEJt@Bn#1bLqan*pT3*YQa=h9yR!JGLx5J-P^=eP#}9@cPwY
z?bSAg=jM;X;#Z!4#S347(WMJvth)?)-BGN&UFi3_vC1AWkbtNz{c0qJN0uY+At7pd
zv7UaPL50tY=a*ImKIl-6a~Ib)>*?Hv{PHJT%$^3Ujd`>a8$`Fs^GZZa9b-15PdsXZ
z(z-4wH*BTQ5aUy>B_>iqi$E@V4ZypOoGVu_v6{L%Oxy39v2ha9;A3Cq_>?Q2Zx;=jFYhJ{CH!nbFkdS>Ux;1nkS-Z@>N04RU3X
zONK7L!H$F>#XI63dQI7-Y2!r!Hg=y@ZrN`t)0Vp064sV-d|U^dlI+1FGy&Y6H^5`S
z*J9;cnU)t6gh==kfM~oYfm$Qj&d;J{!3B{uNB1SzjeK9*m|R~}2l0=7Q&|*zxAxH=
z)feyC*@uqJxgkx#orQgVD1ss+Aw;|81wvPh
zckr|CfA^&5s(Kb4h^{Pa;H|gb#XtVBXAn5=50`=5^UNyrnc!74
zqMBA-ZS}UzVCvMB)U1w4#>Qaf$rGB{QbY*Vq|@;l6#NSXB_y*W$jP;qiv8*$kONr~
zbp$FFQe8fFr0#e54T7N_i$(MZCIW2&?AQI!>vy9}UmkkB2pZibIJSIo7+tn78cPds
z+2VO&(SqmUZ-2WN)?4Rg=q;WI6KZl@&4~idlu=`i~MbAJd}VB;34NX%iB0;7E-`%anI~8mg7nNFd>Z
z$hl;1+o~3KCR?X)V3z}AA_pkQNwK!8iYV;Ak~pl1X`XPHqe(zp)h<%g5u6I}Y!<>n^GXp=fs~`C(#B4V8vLpPq3V?6AZ3
zuNMT~)PAYJ#6z(*s1
zgaULEQF$k(eCWzmESAY;TAdqKc>o$%xZR^z^Ypl`%oNUqag5uQ-03ibLoX=
z;8t&)4ZH5Vb@==VN5ZZf8N14A2y1k{*o3$KAqXn{z
zKxD})uzYl3_~&yk!qCXQFk_`1VInQOB`bx%V{{qxyOei%APc15r?Mjrk-q3Y3Q>R~
zTOMOQsQNvmW8kYE0ZA0p6b2FUxi82#;uF{VjM*r!p_Nrq!e6!1QBO5t{G=6Gw1-5j
z6n#sGS>zEzBY;I$o4ja5%=tX)&`yxnX)3uY6)-uO-`R@;fos!k-@oaSLtCC3`Quf{KwxVCV|7s-^qb0|i$im`6X9$#IHoKgXFqeytQJ@SLUwj#Sa-Tn~%0O+x0}ebU-oF99`<)Zv
zs>^>FKflO9^#cz653Mo{?W_nH%>dpY;cvIyes?(LV_)F!=brsNIQ@rT#y7oTJ-GV1
z+k$p9W(&SnASQ*o2Gfy~d8tl%7K*$UmQ9Z+f9oihW7H;)wCx3UOGV3rERdS5jVQe9
zF#?15i1uwnE2KxCqqG-;)6|ll_jd@8#28JVoLD^=8(W6GD0n5#u?#P}_=d30KAXcM
z|F{I!T6JHX+=)QIn+baiAa#%G>M}q@aN-v_h2EH0Cf%5ptdDLlAZ_NO_V?(38CqsM
zCG>}9V1L4E!}1BMjE~QVZJ)vm8+hLbMLL4SIP{f-Iu6-739=Ku20Ne2
zBoW7aA{}gC(Cw%RSaiM(Rxiw~P@HkZ^*Qd*>GOBczvU1A36|dW
z>+AxcZeF&8_k}nO8CQDezA$CCeK>E3K`J?un9AfgrNH7#uYkpuTp1cP7W8Geoo>ESWf9(?WmrzX8(P^mt!a
zdj+m@{sO%EPnYmsj<>yiCx=5Bx9N+%P>NSfEnKiD%#)ak92tcEXbl$u7y61o;PhAz
zSwWPS4q?n=2(8Jw3;-MLx6OT`0jBq(NF&_~uUhg#gQuuif(9KwGyJIOo%T5;Nev?Lc@FUQnt
zt^GRo(a(AQC1C--P8D45q03uAvcW_r28{$sw^f}`4-fGhq((+MFliWJn1pM$it&g}
z=wS!>?c}_a*G|MmI#iJ3!$X8T^gp|adf9YEecwhEh4rKkbfc)QdhvN*g5o116X_H%
z_^;0$5j`Hq!|T^RJeIT+UVQFCn723rOrKvRC~*XBT~&=B4s~QVJnaOp*+U3ko8nf*
zzX?>wP;_w(^*P=@8Wr$fY*S|}LQJ$?hN5MI*k$?Ii88rjnOd`ajt`?=-w#}TthyUH
z(!=362!^2tlcVlFAp*y8etTkwf6>H>BADLS+t(LO_4zOuvt)=tLo0F(={Oh=fGJPE
z%B`~jNQTj(7huT^KMm7A@B<`w6rCJN;6T7IdgrCE_>Z!}gvwj|#|xn|otF1*qh*Qk
zwMr+vVFOqUSDJtYowzoC(}0I8fZYU!0w7$m0|zI%3E3j)j9edhm2$~FLw^3Y%g!ch
z(CO=3kzQV0O<-#X{UX@jAUd_pzLN!^?wg|Tn}8O|MFE~K!H)xP>CmUdhjQ|!_K|+6
zz;X;V*AYO{JVFwP%u7?JRJPNm!NU*x0G#}luTxN)@6De5=IGAa4u1K|Unhy@+L_k#
zlHy0f;HSuKB&&Qv_O-ddc`iVjXguI7RRqZxP>&Xe3ZWJSq?}^X=8)=AhL(IrJtt`(
zGpGQ~+JPD#sAZbbBfIHxvk}`sT(%TzalwkrPeXE+=X9}>MKSmtL02~OrLiSFseNbC
zFR%w)jqI9*k5>XPNsc+sydX64a#JV=3v)vjB?v0XQGigHgGL;cRyY$u!kP~Bh=Q+6
zG1iLS3NFA?=apEfTh^6a-ZK%yvN86c?~PUKUiybuxDMf@kzN?>QQV-%F&17`MOF4m
z=yvcozr6wuJaB(F^Jizkwr@EZmaeoV)T6h-{9bfr)n-9a6g<*GTT$u`FQWxs<)yTQ
z+*{PSm8@7`0nTnO8Z+$L3ZWzKFz2qSw6iki)lz_ca;NgL0aYB-A|VT{?g#a7souf6
zD&>7+#HPN`po$4LPvZ@teVJ<#8juAvxti*uuJcY!NIt|FaNcM896}5_G1m&Q3Z|
zNA#pE_lA1@Tv&R?_|tsKXXf$!Q^g~ij-4uI1787Qa0
zXMdqf-yAD4zeU7z`E=|8&xg8<=cPVU!W1FUiU}&vO$oQEm0+%V#~rtaFMjdA;PAr_
z;iF9G*9cUbP`Ig(4?P8u3z@wNQAtB~Op~hZJ0?UiKyyl#c3lb4
zT$(f{F}Y-{Q!*%_9uU+ByJ?gO?*!T0a*Sfj;lo_2^!Y7!>2@K&d-=rC)%?j
z;Rm}PWCkRzaaEqLN<`8aME>(3<8nV0RI@wMkEjiSS7Ox!Hf%2FPIjD7^?@k^n%_ufFAbR>l_}S$Ej@n2
zA}@0e=Gm$-jXbU&fmfJh_He)jD$dK>)ZPjd-DVXOc+k(~*ZrL)d8k%XZLdoU@OR}MjT$%HJ=0cmIY
zamRfWW^ejta$mtc_ufxuV1@Z)k?8ajqXSb&*6LNf13A4{rL(;x5Fo9A2Zv!vD?oeG
zU}+U5LRDz%JH-oLSbH%^do4S^nHa$f~q
zDolqwqMn7-G5`jIgdb=sy>wMo9uUj!K9j)1l0bjK3sArKBvk8c3^F$j*(w;GwJ`w*
z+FJusS;VOrDS>azc8M4;2J2$@L;@<5QpdT&kYZRQ86#v>HVPeL|8%Xi|`=78ahh
zp{oflVQxOe!CW+H-uNyNpMQQ7ng9%LV~O%1^<+qDyl~$(D-@#-Z8u8xvjrOiA=6AW
z)w%B#6vZIXR;B2S^}W#qg>ev6$cAG61A03xkJ(BNT+)8P#4Ix}I@13d%m@K>m#0%=
z0%EcYbn*vG3V@U?7EM|Nq*a;^4{FF<3Zz`i8wPE<>mEzvs1U=8kjc%(Iy;|)rL3xZmqKJ;)||^qd#&8{N?t)z~fI{1QRE$4(rT12p)Ol
zv@oHX5J4tt{dA>4^IrC|uK)+5(+fDgiEYnYglaQ=
zY6~>3hBn`3*@RG9G=oy3VG*?OwXhZtOG}}p-Jyjq1yB8R-<%cD1Z{0J8X7z<_?Ly0
z0Ei|ISr$~vB$V;MUn{5kNgBsP6Q+<9L-g9Q2R)-trJX{x)i0W>D^nX%39yxoSDILM
zrzIx3r5k)O0gF1_APSg-q^mK*ZWjKSbzc+ADkpP*TM0}PBcWinHW>I^w^q4x0GuKv
zAgTQrGLw^NbxM_zoaj<=m6cWQBlM7$ln>65=t#OfDgf#f&uo)>6@~)2g=7WqLgUgl
zD1)=|2bc(z06D!NoR7MSh0r_2d1E=h?g9({V?sG9(%yBV;*zMMldC$DD(sH-X%9xi
zF((wc3p~6jF3Rz$*d=(GU@&-;eIAv97ee4z>|WEumOiCko;~N2&KIAcD)sy141=
z4dAXj|H=Y+!Lr9-{h5bCH!Q}5OP_|}&Lp7CiC}ZpthO{J=|kN{e8h@uJr}bm$VNln
zKuD*5^di9Y*mZ>!yRXP~#lLA6OrPJbNMRc~!i0{19|CbGP|OH)x039-$vPp4lHjYk=1ar_jugNkhrjik63t7XEE%LUvmvq2{#bVuJX5
zj+R6~XmJm@&vak^jAp9`&}lm%nb5iT@ycuAX`&sR^*3rQTS^Wnmo@SXq{!ugc6{VzX(+d`Tmhq_Kz~6=!cNklo>33^@1LIVx
zAx9V(b7?^U_eaRyea}z(2&n~W4D!Tcez+9{(ypT05-~EaOz>fDZyH}gMRiCF024m0
z8z9RF-eheR26Zc@eiQN(R062s7lQa4GeV{LA9x>$9s|PTlQtFh^-tau7=oiU{YN{{
zLoNH)u^)vdot6&6p-*RYN!J8=jYo&ym0N{MPsL?V6LLI|PqcmL!GFM;H{TMbO`p!Z
zT(amHxbM;L!OXSygUKtc9lHIon0ErEo$-ohN=|Ag1?nkyPOHZ#_#wxf&|l0Gy0KaU
zH35-;-G~YNM<5bgNtQ>SPe@?{hbOPN%EVQtFYO9J-iKZXTg8Q{M#)hxMi=K2<&chO
zJPES!MK6TF319a+Y1!Ze3}T^WTNw#l@&GKX0MnGvPb^0axcbxJ@O45%_`19{DX`Iw
z)V_w5;KskIpQUg`-)>*8r>)VZ#KWd0kEKSRcnVgm>!tt)%)ssY
z+4C+1VjKO{R(^8~WKi&$va%CF%K=TBgt{@$Q=Ke~P_`ja1$NiI>rhavK!CLDSKU;C
z6lhk05^b^xAt}8^UvML#0AHn6$dp-DVR6qIo~5+6gq*^V?V8N=qNZZbxe*8GGv{0>
z8DeUepPRwgl_h`9>}t0K0+4%1=+_;|!C_S412%dzKV}%KY!qADF^!j$221+DjbAI;
zAT-H0`w5VEiwS$Ubatmv)pbTo&?(_$lm^7a`ZEAys~}nyJ=!@=J6J{9qFM{|%3OZ!
z?a=TDRud=Ta168$cld>|w3rJ=MuuU%*RKT++;=}$+wCoaZg(lXVf_!`+?Q^{-q^xO
zK@5?HzMW7deGY1UaN~n8fdP?CCnSrc;vap&uvk}gT@6XRgZJb`*A*}561Nv0oJcRY
z?eTHLrW;m!-PPD+_1LrAu5$yjJ;O-UO8Cm>Bb(C_IJGg!0=
zd@r=HF$tZ3O=-QgVVX4}dNrjOq)=+`=xFtI7)`+e+rT}aw_%|qOUGMDmIWJtf`b5I
zbQaIR$&8RKFVFMB?d98pSj4Rcz#t4N{K4@!@yU4Xz8f7dUOkO|(zcYc!|+!ag$eLv
zzZM!ZO15hQH5Zvto-Q8aI($gs&VGI&EO
zNqd%5wFRp4BX2ciObV)1hcsfO>9$+g%_IFwZnb1_6u6OrF1XtYw%WTUjI8{morly^
zV|ys(zp=s3aZrIBoM9~PuyV{5Wv7W3GJPzok|ij{LO$%!c$L2CxXFX2&d(K0#fNG9
z;PadW5Q1pbeD+kbT$nyN=EQ2LC6E3VumKHh_j*zP?~Vb#TU;4cv-gJz@5b7@ari8c
zV{}^|Wa6Lv4q80Pp3)jM&IoH5O8=ny479+eHp281e
z>yn#_g5J@Zi0-MHmfi-kH29!Ff`GsN^2wPLM`v!FXISuk5
z1`Rp#3WHf3yz8Hu*6)M*18A=x=n4nSPMBcA7R>@N!REE`QoD4Q6D~<;LPLOKwh%lZ
zS($}DAE3}b!Rigp$8SR1-*?(Lw3Llr_=8KB2B8YTM!O5}1Ax}&;6TIi#nXdWT5Jpf=syKLNR(h>&AknfGjpXzLug{8$-v=d8(Ao1DG#sP5FX;m2%n7}p(hoGn4
zTHrjFUyw)wHCqw}1Bqs#LzkK&rwy5ZCa)9l0TlfoLe}Pex%RI}+>9PZoBDb~CMvte
z40wVDQneXcr|fce%}Z9E4IsCsK1=D$6pO#0vs)nZ7RBYHtPyr44_<0O>hC-v`H?JD
zO>@VO>Bjuex6u>?*T-1SQ@zI!8H|6@RQ*J7lOz-h6iI#{r$haojoQUaMFW>_c#jmBN
zp{%;%-zoP>T
z*QUffUzclZ6UaTC)<3ctxDfnF1SXm)6+z%*Led~pEujPmEef*6ofr}<>i`c6zN$9F
zb*Pg{Wm%@tq_Hx?9!pt>D%8P5N?t_)*#hu=D0K>3%uOZ$TaHN+T7Ha_GBTA1N##zX
z3o{$o27m-b+V*5kHOpzJaVEz3R1L`U)6?XLvNq@bMl6!#`CqwvxklF7Av+YzoIpO)
z!*y~RLcvM;0EPj|;Kp3{b1wa5YsLVgHcNvO%8??#mXJaN9oOD>agm^-jW!Arqa-c@
z9L%Oe5PLBu5&!xTCAu*T5o7BxHWpxcG*m|8=U6u?^J5gR2zc3r*T5co?;-C=isjL9
z^;FiQ|M)44OneQjv+jXFRt8bo4`Z?F9tB_60^x%n_4Hf$-qYQK@iT_wAqLDtrQo4f
zNR4WJ@!m&y?*{=$1PwlfQ5|`Regl0v;i`uF$$utU>;QHsZANE9?AFx=;LMEbdtn
z`^4;?Y7=NatrtcEX`@`cszf?po^xUQ=g%>y9r<(AkwGR?b3U?d>UVd
z|vD+H42|GXm4lbl{iC%pD=F7Xy)joMJGkJXYY;n1GonKA(ZJ
zo#$pknPn}MeJ$Xls(a8btPAv#w3q=YJI+E%qTp*%8|2VL29=P)+FF(MTjE418-ldW
zY7ro*C0eYd@dHsPfsYh15P|geCU*D$LlwU{P+VWCgvL8Hud)&gfsS0Kv!c53kItc@
z^G)dcSRXpQ8hMv_yuW1OVwkb&>afz3$sjAKYCc?%K;f@>iK5dr`ge<4THklr_F`y5Orwify&?aSujm1pE%^8zSimKghu|GxmwHH%;!Td$x?b~gR
zf4lQ8*GF{q;JN2-f;VmWaqM-M;Ic)JfsiM1+B67E-}~%W;$yk0T3W}icMlx#CdXCH
zFvWgm3b9AZhT?BpVobX^Iw(E>1`i9H@QY!^Z58N@ALs~QV)?an4hHM-WI_HvrDhPD
TwDzM`00000NkvXXu0mjfCQmq!
literal 0
HcmV?d00001
diff --git a/docs/en/docs/img/sponsors/kong.png b/docs/en/docs/img/sponsors/kong.png
new file mode 100644
index 0000000000000000000000000000000000000000..e54cdac2cfc3ab17df39c24d20c5437837a7643f
GIT binary patch
literal 30723
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