From 1783eb3d8913579fb2be9adaa4e087228af4908f Mon Sep 17 00:00:00 2001 From: Alexander Emelin Date: Thu, 8 Feb 2024 21:44:28 +0200 Subject: [PATCH] Deploy website - based on 8dca878cf8509b68d632ab5c7e4bb9f8b28d33f5 --- 404.html | 2 +- assets/js/6574fcee.01a04f59.js | 1 + assets/js/6574fcee.e297c5ce.js | 1 - .../js/{runtime~main.b889a854.js => runtime~main.88cba950.js} | 2 +- blog.html | 2 +- blog/2020/02/10/million-connections-with-centrifugo.html | 2 +- blog/2020/10/16/experimenting-with-quic-transport.html | 2 +- blog/2020/11/12/scaling-websocket.html | 2 +- blog/2021/01/15/centrifuge-intro.html | 2 +- blog/2021/08/31/hello-centrifugo-v3.html | 2 +- blog/2021/10/18/integrating-with-nodejs.html | 2 +- .../04/integrating-with-django-building-chat-application.html | 2 +- blog/2021/12/14/laravel-multi-room-chat-tutorial.html | 2 +- blog/2022/07/19/centrifugo-v4-released.html | 2 +- blog/2022/07/29/101-way-to-subscribe.html | 2 +- blog/2022/12/20/improving-redis-engine-performance.html | 2 +- blog/2023/03/31/keycloak-sso-centrifugo.html | 2 +- blog/2023/06/29/centrifugo-v5-released.html | 2 +- ...chronous-message-streaming-to-centrifugo-with-benthos.html | 2 +- blog/2023/08/29/using-centrifugo-in-rabbitx.html | 2 +- .../10/29/discovering-centrifugo-pro-push-notifications.html | 2 +- blog/archive.html | 2 +- blog/tags.html | 2 +- blog/tags/authentication.html | 2 +- blog/tags/benthos.html | 2 +- blog/tags/centrifuge.html | 2 +- blog/tags/centrifugo.html | 2 +- blog/tags/django.html | 2 +- blog/tags/go.html | 2 +- blog/tags/interview.html | 2 +- blog/tags/keycloak.html | 2 +- blog/tags/laravel.html | 2 +- blog/tags/php.html | 2 +- blog/tags/pro.html | 2 +- blog/tags/proxy.html | 2 +- blog/tags/push-notifications.html | 2 +- blog/tags/quic.html | 2 +- blog/tags/redis.html | 2 +- blog/tags/release.html | 2 +- blog/tags/sso.html | 2 +- blog/tags/tutorial.html | 2 +- blog/tags/usecase.html | 2 +- blog/tags/websocket.html | 2 +- blog/tags/webtransport.html | 2 +- components/Highlight.html | 2 +- components/logo.html | 2 +- components/logos/Badoo.html | 2 +- components/logos/Grafana.html | 2 +- components/logos/ManyChat.html | 2 +- components/logos/OpenWeb.html | 2 +- docs/3/attributions.html | 2 +- docs/3/ecosystem/centrifuge.html | 2 +- docs/3/ecosystem/integrations.html | 2 +- docs/3/faq.html | 2 +- docs/3/flow_diagrams.html | 2 +- docs/3/getting-started/client_api.html | 2 +- docs/3/getting-started/design.html | 2 +- docs/3/getting-started/highlights.html | 2 +- docs/3/getting-started/installation.html | 2 +- docs/3/getting-started/integration.html | 2 +- docs/3/getting-started/introduction.html | 2 +- docs/3/getting-started/migration_v3.html | 2 +- docs/3/getting-started/quickstart.html | 2 +- docs/3/pro/analytics.html | 2 +- docs/3/pro/db_namespaces.html | 2 +- docs/3/pro/install_and_run.html | 2 +- docs/3/pro/overview.html | 2 +- docs/3/pro/performance.html | 2 +- docs/3/pro/process_stats.html | 2 +- docs/3/pro/singleflight.html | 2 +- docs/3/pro/throttling.html | 2 +- docs/3/pro/token_revocation.html | 2 +- docs/3/pro/tracing.html | 2 +- docs/3/pro/user_block.html | 2 +- docs/3/pro/user_connections.html | 2 +- docs/3/pro/user_status.html | 2 +- docs/3/server/admin_web.html | 2 +- docs/3/server/authentication.html | 2 +- docs/3/server/channels.html | 2 +- docs/3/server/codes.html | 2 +- docs/3/server/configuration.html | 2 +- docs/3/server/console_commands.html | 2 +- docs/3/server/engines.html | 2 +- docs/3/server/history_and_recovery.html | 2 +- docs/3/server/infra_tuning.html | 2 +- docs/3/server/load_balancing.html | 2 +- docs/3/server/monitoring.html | 2 +- docs/3/server/private_channels.html | 2 +- docs/3/server/proxy.html | 2 +- docs/3/server/server_api.html | 2 +- docs/3/server/server_subs.html | 2 +- docs/3/server/tls.html | 2 +- docs/3/transports/client_protocol.html | 2 +- docs/3/transports/client_sdk.html | 2 +- docs/3/transports/overview.html | 2 +- docs/3/transports/sockjs.html | 2 +- docs/3/transports/uni_grpc.html | 2 +- docs/3/transports/uni_http_stream.html | 2 +- docs/3/transports/uni_sse.html | 2 +- docs/3/transports/uni_websocket.html | 2 +- docs/3/transports/websocket.html | 2 +- docs/4/attributions.html | 2 +- docs/4/faq.html | 2 +- docs/4/flow_diagrams.html | 2 +- docs/4/getting-started/client_api.html | 2 +- docs/4/getting-started/community.html | 2 +- docs/4/getting-started/design.html | 2 +- docs/4/getting-started/ecosystem.html | 2 +- docs/4/getting-started/highlights.html | 2 +- docs/4/getting-started/installation.html | 2 +- docs/4/getting-started/integration.html | 2 +- docs/4/getting-started/introduction.html | 2 +- docs/4/getting-started/migration_v4.html | 2 +- docs/4/getting-started/quickstart.html | 2 +- docs/4/pro/analytics.html | 2 +- docs/4/pro/capabilities.html | 2 +- docs/4/pro/cel_expressions.html | 2 +- docs/4/pro/channel_patterns.html | 2 +- docs/4/pro/client_message_batching.html | 2 +- docs/4/pro/connections.html | 2 +- docs/4/pro/install_and_run.html | 2 +- docs/4/pro/overview.html | 2 +- docs/4/pro/performance.html | 2 +- docs/4/pro/process_stats.html | 2 +- docs/4/pro/push_notifications.html | 2 +- docs/4/pro/singleflight.html | 2 +- docs/4/pro/throttling.html | 2 +- docs/4/pro/token_revocation.html | 2 +- docs/4/pro/tracing.html | 2 +- docs/4/pro/user_block.html | 2 +- docs/4/pro/user_status.html | 2 +- docs/4/server/admin_web.html | 2 +- docs/4/server/authentication.html | 2 +- docs/4/server/channel_permissions.html | 2 +- docs/4/server/channel_token_auth.html | 2 +- docs/4/server/channels.html | 2 +- docs/4/server/codes.html | 2 +- docs/4/server/configuration.html | 2 +- docs/4/server/console_commands.html | 2 +- docs/4/server/engines.html | 2 +- docs/4/server/history_and_recovery.html | 2 +- docs/4/server/infra_tuning.html | 2 +- docs/4/server/load_balancing.html | 2 +- docs/4/server/monitoring.html | 2 +- docs/4/server/presence.html | 2 +- docs/4/server/proxy.html | 2 +- docs/4/server/server_api.html | 2 +- docs/4/server/server_subs.html | 2 +- docs/4/server/tls.html | 2 +- docs/4/transports/client_api.html | 2 +- docs/4/transports/client_protocol.html | 2 +- docs/4/transports/client_sdk.html | 2 +- docs/4/transports/http_stream.html | 2 +- docs/4/transports/overview.html | 2 +- docs/4/transports/sockjs.html | 2 +- docs/4/transports/sse.html | 2 +- docs/4/transports/uni_grpc.html | 2 +- docs/4/transports/uni_http_stream.html | 2 +- docs/4/transports/uni_sse.html | 2 +- docs/4/transports/uni_websocket.html | 2 +- docs/4/transports/websocket.html | 2 +- docs/4/transports/webtransport.html | 2 +- docs/attributions.html | 2 +- docs/faq.html | 2 +- docs/flow_diagrams.html | 2 +- docs/getting-started/community.html | 2 +- docs/getting-started/comparisons.html | 2 +- docs/getting-started/design.html | 2 +- docs/getting-started/ecosystem.html | 2 +- docs/getting-started/highlights.html | 2 +- docs/getting-started/installation.html | 2 +- docs/getting-started/integration.html | 2 +- docs/getting-started/introduction.html | 2 +- docs/getting-started/migration_v4.html | 2 +- docs/getting-started/migration_v5.html | 2 +- docs/getting-started/quickstart.html | 2 +- docs/pro/admin_idp_auth.html | 2 +- docs/pro/analytics.html | 2 +- docs/pro/capabilities.html | 2 +- docs/pro/cel_expressions.html | 2 +- docs/pro/channel_patterns.html | 2 +- docs/pro/channel_state_events.html | 2 +- docs/pro/client_message_batching.html | 2 +- docs/pro/connections.html | 2 +- docs/pro/distributed_rate_limit.html | 2 +- docs/pro/install_and_run.html | 2 +- docs/pro/observability_enhancements.html | 2 +- docs/pro/overview.html | 2 +- docs/pro/performance.html | 2 +- docs/pro/process_stats.html | 2 +- docs/pro/push_notifications.html | 2 +- docs/pro/rate_limiting.html | 2 +- docs/pro/singleflight.html | 2 +- docs/pro/token_revocation.html | 2 +- docs/pro/tracing.html | 2 +- docs/pro/user_block.html | 2 +- docs/pro/user_status.html | 2 +- docs/server/admin_web.html | 2 +- docs/server/authentication.html | 2 +- docs/server/channel_permissions.html | 2 +- docs/server/channel_token_auth.html | 2 +- docs/server/channels.html | 2 +- docs/server/codes.html | 2 +- docs/server/configuration.html | 2 +- docs/server/console_commands.html | 2 +- docs/server/consumers.html | 2 +- docs/server/engines.html | 2 +- docs/server/history_and_recovery.html | 2 +- docs/server/infra_tuning.html | 2 +- docs/server/load_balancing.html | 2 +- docs/server/monitoring.html | 2 +- docs/server/observability.html | 2 +- docs/server/presence.html | 2 +- docs/server/proxy.html | 2 +- docs/server/proxy_streams.html | 2 +- docs/server/server_api.html | 2 +- docs/server/server_subs.html | 2 +- docs/server/tls.html | 2 +- docs/transports/client_api.html | 2 +- docs/transports/client_protocol.html | 2 +- docs/transports/client_sdk.html | 4 ++-- docs/transports/http_stream.html | 2 +- docs/transports/overview.html | 2 +- docs/transports/sockjs.html | 2 +- docs/transports/sse.html | 2 +- docs/transports/uni_client_protocol.html | 2 +- docs/transports/uni_grpc.html | 2 +- docs/transports/uni_http_stream.html | 2 +- docs/transports/uni_sse.html | 2 +- docs/transports/uni_websocket.html | 2 +- docs/transports/websocket.html | 2 +- docs/transports/webtransport.html | 2 +- docs/tutorial/backend.html | 2 +- docs/tutorial/centrifugo.html | 2 +- docs/tutorial/frontend.html | 2 +- docs/tutorial/improvements.html | 2 +- docs/tutorial/intro.html | 2 +- docs/tutorial/layout.html | 2 +- docs/tutorial/outbox_cdc.html | 2 +- docs/tutorial/outro.html | 2 +- docs/tutorial/recovery.html | 2 +- docs/tutorial/reverse_proxy.html | 2 +- docs/tutorial/scale.html | 2 +- docs/tutorial/tips_and_tricks.html | 2 +- index.html | 2 +- license.html | 2 +- license_exchange_lemon.html | 2 +- search.html | 2 +- 248 files changed, 248 insertions(+), 248 deletions(-) create mode 100644 assets/js/6574fcee.01a04f59.js delete mode 100644 assets/js/6574fcee.e297c5ce.js rename assets/js/{runtime~main.b889a854.js => runtime~main.88cba950.js} (99%) diff --git a/404.html b/404.html index fb8588c31..e642dd967 100644 --- a/404.html +++ b/404.html @@ -15,7 +15,7 @@ - + diff --git a/assets/js/6574fcee.01a04f59.js b/assets/js/6574fcee.01a04f59.js new file mode 100644 index 000000000..08de94943 --- /dev/null +++ b/assets/js/6574fcee.01a04f59.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcentrifugal_dev=self.webpackChunkcentrifugal_dev||[]).push([[6720],{9294:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>d,default:()=>a,frontMatter:()=>r,metadata:()=>c,toc:()=>o});var i=n(85893),s=n(11151);const r={id:"client_sdk",title:"Client real-time SDKs"},d=void 0,c={id:"transports/client_sdk",title:"Client real-time SDKs",description:"In the previous chapter we investigated common principles of Centrifugo client SDK API. Here we will provide a list of available bidirectional connectors you can use to communicate with Centrifugo.",source:"@site/docs/transports/client_sdk.md",sourceDirName:"transports",slug:"/transports/client_sdk",permalink:"/docs/transports/client_sdk",draft:!1,unlisted:!1,editUrl:"https://github.com/centrifugal/centrifugal.dev/edit/main/docs/transports/client_sdk.md",tags:[],version:"current",frontMatter:{id:"client_sdk",title:"Client real-time SDKs"},sidebar:"Transports",previous:{title:"Client SDK API",permalink:"/docs/transports/client_api"},next:{title:"WebSocket",permalink:"/docs/transports/websocket"}},l={},o=[{value:"List of client SDKs",id:"list-of-client-sdks",level:2},{value:"Protobuf and JSON formats in SDKs",id:"protobuf-and-json-formats-in-sdks",level:2},{value:"SDK feature matrix",id:"sdk-feature-matrix",level:2},{value:"Connection related features",id:"connection-related-features",level:3},{value:"Client-side subscription related features",id:"client-side-subscription-related-features",level:3}];function h(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.a,{href:"/docs/transports/client_api",children:"In the previous chapter"})," we investigated common principles of Centrifugo client SDK API. Here we will provide a list of available bidirectional connectors you can use to communicate with Centrifugo."]}),"\n",(0,i.jsx)(t.admonition,{title:"No need in SDK for unidirectional approach",type:"tip",children:(0,i.jsxs)(t.p,{children:["Real-time SDKs listed here speak Centrifugo bidirectional protocol (with WebSocket as main transport). If you aim to use unidirectional approach you don't need client connector dependency \u2013 just use standard APIs. See the difference ",(0,i.jsx)(t.a,{href:"/docs/transports/overview",children:"here"}),"."]})}),"\n",(0,i.jsx)(t.h2,{id:"list-of-client-sdks",children:"List of client SDKs"}),"\n",(0,i.jsx)(t.p,{children:"Here is a list of SDKs maintained by Centrifugal Labs:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-js",children:"centrifuge-js"})," \u2013 for a browser, NodeJS and React Native"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-go",children:"centrifuge-go"})," - for Go language"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-dart",children:"centrifuge-dart"})," - for Dart and Flutter (mobile and web)"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-swift",children:"centrifuge-swift"})," \u2013 for native iOS development"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-java",children:"centrifuge-java"})," \u2013 for native Android development and general Java"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-python",children:"centrifuge-python"})," \u2013 real-time SDK for Python on top of asyncio"]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"SDKs driven by the community:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/charmy/centrifuge-csharp",children:"centrifuge-csharp"})," - SDK in C# for .NET and Unity 2022.3+"]}),"\n"]}),"\n",(0,i.jsxs)(t.p,{children:["See a description of ",(0,i.jsx)(t.a,{href:"/docs/transports/client_protocol",children:"client protocol"})," if you want to write a custom bidirectional connector or eager to learn how Centrifugo protocol internals are structured. In case of any question how protocol works take a look at existing SDK source code or reach out in the community rooms."]}),"\n",(0,i.jsx)(t.h2,{id:"protobuf-and-json-formats-in-sdks",children:"Protobuf and JSON formats in SDKs"}),"\n",(0,i.jsxs)(t.p,{children:["Centrifugo real-time SDKs work using two possible serialization formats: JSON and Protobuf. The entire bidirectional client protocol is described by the ",(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/protocol/blob/master/definitions/client.proto",children:"Protobuf schema"}),". But those Protobuf messages may be also encoded as JSON objects (in JSON representation ",(0,i.jsx)(t.code,{children:"bytes"})," fields in the Protobuf schema is replaced by the embedded JSON object in Centrifugo case)."]}),"\n",(0,i.jsxs)(t.p,{children:["Our Javascript SDK - ",(0,i.jsx)(t.code,{children:"centrifuge-js"})," - uses JSON serialization for protocol frames by default. This makes communication with Centrifugo server convenient as we are exchanging human-readable JSON frames between client and server. And it makes it possible to use ",(0,i.jsx)(t.code,{children:"centrifuge-js"})," without extra dependency to ",(0,i.jsx)(t.code,{children:"protobuf.js"})," library. It's possible to switch to Protobuf protocol with ",(0,i.jsx)(t.code,{children:"centrifuge-js"})," SDK though, in case you want more compact Centrifuge protocol representation, faster decode/encode speeds on Centrifugo server side, or payloads you need to pass are custom binary. See more details on how to use ",(0,i.jsx)(t.code,{children:"centrifuge-js"})," with Protobuf serialization in ",(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-js#protobuf-support",children:"README"}),"."]}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.code,{children:"centrifuge-go"})," real-time SDK for Go language also supports both JSON and Protobuf formats when communicating with Centrifugo server."]}),"\n",(0,i.jsxs)(t.p,{children:["Other SDKs, like ",(0,i.jsx)(t.code,{children:"centrifuge-dart"}),", ",(0,i.jsx)(t.code,{children:"centrifuge-swift"}),", ",(0,i.jsx)(t.code,{children:"centrifuge-java"})," work using only Protobuf serialization for Centrifuge protocol internally. So they utilize the fastest and the most compact wire representation by default. Note, that while internally in those SDKs the serialization format is Protobuf, you can still send JSON towards these clients as JSON objects may be encoded as UTF-8 bytes. So these SDKs may work with both custom binary and JSON payloads."]}),"\n",(0,i.jsxs)(t.p,{children:["There are some important notes about ",(0,i.jsx)(t.a,{href:"/docs/faq/#can-i-have-both-binary-and-json-clients-in-one-channel",children:"JSON and Protobuf interoperability"})," mentioned in our FAQ."]}),"\n",(0,i.jsx)(t.h2,{id:"sdk-feature-matrix",children:"SDK feature matrix"}),"\n",(0,i.jsx)(t.p,{children:"Below you can find an information regarding support of different features in our official client SDKs"}),"\n",(0,i.jsx)(t.h3,{id:"connection-related-features",children:"Connection related features"}),"\n",(0,i.jsx)("div",{className:"features",children:(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Client feature"}),(0,i.jsx)(t.th,{children:"js"}),(0,i.jsx)(t.th,{children:"dart"}),(0,i.jsx)(t.th,{children:"swift"}),(0,i.jsx)(t.th,{children:"go"}),(0,i.jsx)(t.th,{children:"java"}),(0,i.jsx)(t.th,{children:"python"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"connect to a server"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"setting client options"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"automatic reconnect with backoff algorithm"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"client state changes"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"command-reply"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"command timeouts"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"async pushes"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"ping-pong"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"connection token refresh"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"handle disconnect advice from server"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"server-side subscriptions"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"batching API"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"bidirectional WebSocket emulation"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{})]})]})]})}),"\n",(0,i.jsx)(t.h3,{id:"client-side-subscription-related-features",children:"Client-side subscription related features"}),"\n",(0,i.jsx)("div",{className:"features",children:(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Client feature"}),(0,i.jsx)(t.th,{children:"js"}),(0,i.jsx)(t.th,{children:"dart"}),(0,i.jsx)(t.th,{children:"swift"}),(0,i.jsx)(t.th,{children:"go"}),(0,i.jsx)(t.th,{children:"java"}),(0,i.jsx)(t.th,{children:"python"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"subscrbe to a channel"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"setting subscription options"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"automatic resubscribe with backoff algorithm"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"subscription state changes"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"subscription command-reply"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"subscription async pushes"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"subscription token refresh"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"handle unsubscribe advice from server"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"manage subscription registry"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"optimistic subscriptions"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{})]})]})]})})]})}function a(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},11151:(e,t,n)=>{n.d(t,{Z:()=>c,a:()=>d});var i=n(67294);const s={},r=i.createContext(s);function d(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6574fcee.e297c5ce.js b/assets/js/6574fcee.e297c5ce.js deleted file mode 100644 index 27674bb23..000000000 --- a/assets/js/6574fcee.e297c5ce.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcentrifugal_dev=self.webpackChunkcentrifugal_dev||[]).push([[6720],{9294:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>d,default:()=>a,frontMatter:()=>r,metadata:()=>c,toc:()=>o});var i=n(85893),s=n(11151);const r={id:"client_sdk",title:"Client real-time SDKs"},d=void 0,c={id:"transports/client_sdk",title:"Client real-time SDKs",description:"In the previous chapter we investigated common principles of Centrifugo client SDK API. Here we will provide a list of available bidirectional connectors you can use to communicate with Centrifugo.",source:"@site/docs/transports/client_sdk.md",sourceDirName:"transports",slug:"/transports/client_sdk",permalink:"/docs/transports/client_sdk",draft:!1,unlisted:!1,editUrl:"https://github.com/centrifugal/centrifugal.dev/edit/main/docs/transports/client_sdk.md",tags:[],version:"current",frontMatter:{id:"client_sdk",title:"Client real-time SDKs"},sidebar:"Transports",previous:{title:"Client SDK API",permalink:"/docs/transports/client_api"},next:{title:"WebSocket",permalink:"/docs/transports/websocket"}},l={},o=[{value:"List of client SDKs",id:"list-of-client-sdks",level:2},{value:"Protobuf and JSON formats in SDKs",id:"protobuf-and-json-formats-in-sdks",level:2},{value:"SDK feature matrix",id:"sdk-feature-matrix",level:2},{value:"Connection related features",id:"connection-related-features",level:3},{value:"Client-side subscription related features",id:"client-side-subscription-related-features",level:3}];function h(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.a,{href:"/docs/transports/client_api",children:"In the previous chapter"})," we investigated common principles of Centrifugo client SDK API. Here we will provide a list of available bidirectional connectors you can use to communicate with Centrifugo."]}),"\n",(0,i.jsx)(t.admonition,{title:"No need in SDK for unidirectional approach",type:"tip",children:(0,i.jsxs)(t.p,{children:["Real-time SDKs listed here speak Centrifugo bidirectional protocol (with WebSocket as main transport). If you aim to use unidirectional approach you don't need client connector dependency \u2013 just use standard APIs. See the difference ",(0,i.jsx)(t.a,{href:"/docs/transports/overview",children:"here"}),"."]})}),"\n",(0,i.jsx)(t.h2,{id:"list-of-client-sdks",children:"List of client SDKs"}),"\n",(0,i.jsx)(t.p,{children:"Here is a list of SDKs maintained by Centrifugal Labs:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-js",children:"centrifuge-js"})," \u2013 for a browser, NodeJS and React Native"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-go",children:"centrifuge-go"})," - for Go language"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-dart",children:"centrifuge-dart"})," - for Dart and Flutter (mobile and web)"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-swift",children:"centrifuge-swift"})," \u2013 for native iOS development"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-java",children:"centrifuge-java"})," \u2013 for native Android development and general Java"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-python",children:"centrifuge-python"})," \u2013 real-time SDK for Python on top of asyncio (curently in BETA)"]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"SDKs driven by the community:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://github.com/charmy/centrifuge-csharp",children:"centrifuge-csharp"})," - SDK in C# for .NET and Unity 2022.3+"]}),"\n"]}),"\n",(0,i.jsxs)(t.p,{children:["See a description of ",(0,i.jsx)(t.a,{href:"/docs/transports/client_protocol",children:"client protocol"})," if you want to write a custom bidirectional connector or eager to learn how Centrifugo protocol internals are structured. In case of any question how protocol works take a look at existing SDK source code or reach out in the community rooms."]}),"\n",(0,i.jsx)(t.h2,{id:"protobuf-and-json-formats-in-sdks",children:"Protobuf and JSON formats in SDKs"}),"\n",(0,i.jsxs)(t.p,{children:["Centrifugo real-time SDKs work using two possible serialization formats: JSON and Protobuf. The entire bidirectional client protocol is described by the ",(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/protocol/blob/master/definitions/client.proto",children:"Protobuf schema"}),". But those Protobuf messages may be also encoded as JSON objects (in JSON representation ",(0,i.jsx)(t.code,{children:"bytes"})," fields in the Protobuf schema is replaced by the embedded JSON object in Centrifugo case)."]}),"\n",(0,i.jsxs)(t.p,{children:["Our Javascript SDK - ",(0,i.jsx)(t.code,{children:"centrifuge-js"})," - uses JSON serialization for protocol frames by default. This makes communication with Centrifugo server convenient as we are exchanging human-readable JSON frames between client and server. And it makes it possible to use ",(0,i.jsx)(t.code,{children:"centrifuge-js"})," without extra dependency to ",(0,i.jsx)(t.code,{children:"protobuf.js"})," library. It's possible to switch to Protobuf protocol with ",(0,i.jsx)(t.code,{children:"centrifuge-js"})," SDK though, in case you want more compact Centrifuge protocol representation, faster decode/encode speeds on Centrifugo server side, or payloads you need to pass are custom binary. See more details on how to use ",(0,i.jsx)(t.code,{children:"centrifuge-js"})," with Protobuf serialization in ",(0,i.jsx)(t.a,{href:"https://github.com/centrifugal/centrifuge-js#protobuf-support",children:"README"}),"."]}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.code,{children:"centrifuge-go"})," real-time SDK for Go language also supports both JSON and Protobuf formats when communicating with Centrifugo server."]}),"\n",(0,i.jsxs)(t.p,{children:["Other SDKs, like ",(0,i.jsx)(t.code,{children:"centrifuge-dart"}),", ",(0,i.jsx)(t.code,{children:"centrifuge-swift"}),", ",(0,i.jsx)(t.code,{children:"centrifuge-java"})," work using only Protobuf serialization for Centrifuge protocol internally. So they utilize the fastest and the most compact wire representation by default. Note, that while internally in those SDKs the serialization format is Protobuf, you can still send JSON towards these clients as JSON objects may be encoded as UTF-8 bytes. So these SDKs may work with both custom binary and JSON payloads."]}),"\n",(0,i.jsxs)(t.p,{children:["There are some important notes about ",(0,i.jsx)(t.a,{href:"/docs/faq/#can-i-have-both-binary-and-json-clients-in-one-channel",children:"JSON and Protobuf interoperability"})," mentioned in our FAQ."]}),"\n",(0,i.jsx)(t.h2,{id:"sdk-feature-matrix",children:"SDK feature matrix"}),"\n",(0,i.jsx)(t.p,{children:"Below you can find an information regarding support of different features in our official client SDKs"}),"\n",(0,i.jsx)(t.h3,{id:"connection-related-features",children:"Connection related features"}),"\n",(0,i.jsx)("div",{className:"features",children:(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Client feature"}),(0,i.jsx)(t.th,{children:"js"}),(0,i.jsx)(t.th,{children:"dart"}),(0,i.jsx)(t.th,{children:"swift"}),(0,i.jsx)(t.th,{children:"go"}),(0,i.jsx)(t.th,{children:"java"}),(0,i.jsx)(t.th,{children:"python"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"connect to a server"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"setting client options"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"automatic reconnect with backoff algorithm"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"client state changes"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"command-reply"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"command timeouts"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"async pushes"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"ping-pong"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"connection token refresh"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"handle disconnect advice from server"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"server-side subscriptions"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"batching API"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"bidirectional WebSocket emulation"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{})]})]})]})}),"\n",(0,i.jsx)(t.h3,{id:"client-side-subscription-related-features",children:"Client-side subscription related features"}),"\n",(0,i.jsx)("div",{className:"features",children:(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Client feature"}),(0,i.jsx)(t.th,{children:"js"}),(0,i.jsx)(t.th,{children:"dart"}),(0,i.jsx)(t.th,{children:"swift"}),(0,i.jsx)(t.th,{children:"go"}),(0,i.jsx)(t.th,{children:"java"}),(0,i.jsx)(t.th,{children:"python"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"subscrbe to a channel"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"setting subscription options"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"automatic resubscribe with backoff algorithm"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"subscription state changes"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"subscription command-reply"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"subscription async pushes"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"subscription token refresh"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"handle unsubscribe advice from server"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"manage subscription registry"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{children:"\u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"optimistic subscriptions"}),(0,i.jsx)(t.td,{children:"\u2705"}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{}),(0,i.jsx)(t.td,{})]})]})]})})]})}function a(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},11151:(e,t,n)=>{n.d(t,{Z:()=>c,a:()=>d});var i=n(67294);const s={},r=i.createContext(s);function d(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.b889a854.js b/assets/js/runtime~main.88cba950.js similarity index 99% rename from assets/js/runtime~main.b889a854.js rename to assets/js/runtime~main.88cba950.js index 2b0c02a65..12b5b3c48 100644 --- a/assets/js/runtime~main.b889a854.js +++ b/assets/js/runtime~main.88cba950.js @@ -1 +1 @@ -(()=>{"use strict";var e,d,c,f,a,b={},t={};function r(e){var d=t[e];if(void 0!==d)return d.exports;var c=t[e]={exports:{}};return b[e].call(c.exports,c,c.exports,r),c.exports}r.m=b,e=[],r.O=(d,c,f,a)=>{if(!c){var b=1/0;for(i=0;i=a)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,a0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[c,f,a]},r.n=e=>{var d=e&&e.__esModule?()=>e.default:()=>e;return r.d(d,{a:d}),d},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var a=Object.create(null);r.r(a);var b={};d=d||[null,c({}),c([]),c(c)];for(var t=2&f&&e;"object"==typeof t&&!~d.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((d=>b[d]=()=>e[d]));return b.default=()=>e,r.d(a,b),a},r.d=(e,d)=>{for(var c in d)r.o(d,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:d[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((d,c)=>(r.f[c](e,d),d)),[])),r.u=e=>"assets/js/"+({8:"23855fe2",53:"935f2afb",70:"dc4f2258",102:"52bba951",152:"54f44165",205:"83d480e9",216:"3630fee7",347:"54aee988",408:"b325d9c4",410:"84a9b932",430:"c9a3329e",477:"84b8e2b1",509:"629b5641",532:"d1cb7448",533:"b2b675dd",562:"a2d1b113",624:"ab8e6500",628:"0a4443e6",630:"5ffc8930",674:"bd17143e",683:"40537b69",811:"893c1918",895:"4268d52f",902:"d4ca9753",926:"70aa60b8",992:"0fe76b3c",1002:"fe6343fd",1028:"79ee6175",1151:"9475880e",1152:"0136d6f0",1178:"f90eb0d6",1196:"6e37598f",1313:"2114e513",1385:"3a890c2d",1420:"5fe24874",1428:"4ab79476",1439:"b301b932",1477:"b2f554cd",1530:"a728857c",1616:"0d0ff016",1633:"1fadf4c6",1658:"07703c67",1695:"d2c1944d",1713:"a7023ddc",1714:"45dfef24",1752:"a05caef7",1792:"b910a859",1875:"129cb555",1888:"d4dfc5db",1977:"9db3c45b",1983:"d6627831",1994:"f1b7a7af",2005:"3dfd29d6",2026:"21e8a749",2040:"7a7ba156",2069:"cf0e38ba",2089:"945c690d",2128:"be4c395a",2157:"dd818855",2165:"6b2be476",2203:"46627d28",2278:"18793598",2291:"29839967",2292:"3b028b51",2309:"ba0d3b30",2321:"0a1a814f",2352:"6e07cb60",2353:"9ff4038f",2413:"3bb37b67",2438:"bfbfeea3",2442:"ee88d6e4",2469:"d1c7a4f7",2479:"ed785809",2535:"814f3328",2540:"211f1d7a",2569:"c3677326",2578:"71fc0044",2605:"6e81f787",2624:"03e522d9",2635:"7bd30152",2637:"6ef9986d",2639:"24f2bde3",2735:"ff64321a",2757:"2b147458",2853:"43c444d2",2865:"ad7c169e",2901:"a4ddbaa1",2906:"60271c2c",2918:"332362b2",2925:"555afbe5",2983:"3529cd5b",3001:"bbd14fff",3039:"fbd7a87c",3073:"b2eaf182",3085:"1f391b9e",3089:"a6aa9e1f",3165:"cac93e67",3190:"4ebb2955",3205:"21c2d27e",3255:"06f11616",3321:"6aa961d8",3343:"25c94216",3352:"69d81c34",3461:"7df4dfbf",3468:"f26176d2",3556:"984c0c66",3581:"2dbf7ee0",3608:"9e4087bc",3655:"694566b3",3672:"1248e41e",3676:"c0434fb9",3711:"56e32e60",3734:"3d15ab27",3784:"041d543b",3812:"41068141",3895:"4f64b982",3981:"1d3c9151",4013:"01a85c17",4016:"d9829201",4020:"e8314be4",4035:"2b8ad662",4073:"3e15fc9c",4085:"230ca58d",4114:"631e3db1",4131:"238ce909",4156:"64e125c9",4160:"3c51ccb2",4225:"633b2ed2",4282:"e6b6a8f8",4295:"237c01c3",4368:"a94703ab",4435:"a82fa8b7",4491:"e6afaed9",4566:"b3216779",4586:"c98fa109",4633:"2f70c421",4655:"776d934d",4691:"0a7ca2d6",4787:"1117f49a",4841:"0312644c",4864:"ee10dcb9",4890:"b4b43a34",4901:"8a978eb4",4964:"ea108d2f",4968:"2eb9c429",5028:"94d5cf4c",5048:"0eae5577",5069:"192a8b1e",5074:"77e23114",5107:"936398dc",5146:"ffdd667d",5148:"679046a6",5180:"d016d150",5214:"c318ab3c",5270:"13f6d888",5304:"30b3ad4a",5312:"fd3209d2",5343:"1335c7a1",5358:"3c4ec49c",5391:"369bd8f8",5407:"56231886",5421:"6eaeadff",5432:"16c9b55b",5484:"ee78c395",5507:"9179a2e2",5625:"39d4d18a",5731:"32663f72",5734:"b4a3c16e",5736:"89734ed6",5755:"a564e6ff",5758:"85196f1f",5847:"c1817076",5853:"aa73fb9a",5859:"369aea06",5861:"9c1ee1d6",5863:"f178572b",5878:"d835c886",5901:"d2fe6fea",5990:"32e1c903",6050:"81e12894",6103:"ccc49370",6253:"3f0e28d9",6274:"a41a0a70",6295:"ecd5d374",6386:"f346273e",6447:"cce51cf2",6484:"4bd4488a",6515:"fcb790ab",6533:"1cd70467",6562:"f762c5da",6567:"a74df3cd",6685:"db2f115c",6686:"267fbc4e",6705:"fe52e117",6709:"0295581e",6720:"6574fcee",6738:"861598a7",6791:"2daf4703",6867:"93f9db65",6877:"91c5cac2",6889:"aacb0ae1",6953:"b4f0bebf",6979:"5f78e650",6990:"0dc36dc4",7040:"ab6f12ff",7049:"c2f60b05",7054:"9dd8a0d2",7092:"b05011d9",7115:"2a42cb18",7140:"e19d40c8",7262:"e66faea1",7270:"9c3b1acf",7272:"4529506a",7287:"2e854b47",7318:"f2e9cf2f",7330:"b5547432",7339:"3270d7e8",7401:"0d503bfe",7417:"18b1e3cf",7422:"11a20880",7423:"58246c43",7438:"9c021584",7445:"a8fc9e46",7459:"05ba4f60",7482:"66eb7538",7566:"8e068dda",7572:"6fbe284c",7578:"cc50533f",7659:"fc3deafd",7660:"f4f2dadf",7670:"91116fee",7717:"01eca2db",7725:"b9cceeee",7765:"fe91fc6f",7810:"19e7756f",7815:"2bf25d27",7824:"c5dc0dc4",7918:"17896441",7920:"1a4e3797",7965:"4a4109ec",7973:"20c4d804",8007:"5706869d",8072:"31c58a66",8238:"4fc58f03",8246:"0d57d15e",8356:"04ac3258",8375:"5de4a79c",8499:"b479c509",8518:"a7bd4aaa",8523:"f2f7592a",8589:"7672fb2a",8599:"91fdfcd5",8610:"6875c492",8648:"8e9fe0eb",8650:"cadfeb4f",8655:"c8380abd",8665:"9b9e219e",8693:"b0ea8d09",8695:"02c21cfa",8702:"73c943f6",8791:"e257283f",8896:"06f9ead7",8899:"4ec37bcb",8951:"09382599",8973:"d4c029c2",8982:"5934e2d7",8983:"79276c30",9027:"9b70d0cc",9040:"02080b57",9054:"b89c2c0a",9093:"386a3726",9109:"a1538072",9201:"4efbf0bc",9217:"fd93cfee",9226:"2acc7b89",9235:"e7893f84",9240:"bbb9e52d",9247:"92b58ac1",9309:"250ad80d",9334:"9c87bba9",9347:"b1f4df52",9362:"8db697a0",9443:"155d95c4",9474:"b6f2a3eb",9476:"498554e3",9523:"2391cf3d",9565:"fd1fdc14",9571:"195b633a",9602:"b62a3811",9604:"49012ebf",9620:"58b29436",9630:"e9cbd346",9661:"5e95c892",9668:"267a22d2",9727:"1d4d4d48",9804:"209857dd",9878:"7747d83f",9925:"73e61bcc",9934:"1d223b96"}[e]||e)+"."+{8:"02086359",53:"8ed04548",70:"6e957083",102:"0fc3a49c",152:"b049c7d5",205:"26bfbdd5",216:"366eca28",252:"cdbb986b",347:"2f8525a7",408:"20cc5e53",410:"e5d3231b",430:"7b7237d1",477:"00a01503",509:"5d64d611",532:"0e153895",533:"6b2ce39c",562:"f57fa187",624:"181d30b4",628:"d791006f",630:"1977bbf8",674:"185130c1",683:"153d7331",811:"4f10393a",895:"ee202a05",902:"e234425f",926:"a743c33e",992:"4c6ed1f4",1002:"fd80d66c",1028:"1d891058",1151:"5088e675",1152:"a687bcf1",1178:"81211f8c",1196:"180e65b8",1313:"e2844e66",1343:"4ee858c8",1385:"1ea84dad",1420:"36e85b90",1426:"3ae8906c",1428:"a38f2e5e",1439:"7d6c9c6d",1477:"fac77ba3",1530:"0e6a53d0",1616:"06661121",1633:"a1e0aae4",1658:"a0f4760a",1695:"0b4b53d6",1713:"c10c4b80",1714:"20091116",1752:"9d5601d0",1792:"00f4ffbf",1875:"2038c711",1888:"bbf0386e",1977:"f27b462b",1983:"3774b0d3",1994:"b4455ae6",2005:"5a9f236b",2026:"363e4a43",2040:"abef088e",2069:"b4bac076",2089:"87109ff5",2128:"377d064a",2157:"ef64a14f",2165:"2d60cb81",2203:"1c22fa74",2278:"7f7e1c8d",2291:"1fad80ae",2292:"9e374f29",2309:"550e1aad",2321:"044983d0",2352:"e143fe17",2353:"9aeb5acf",2413:"6074a974",2438:"a9c63372",2442:"3fbf7502",2469:"9d5dfa3c",2479:"7418efcc",2535:"80094057",2540:"ee74edb8",2569:"0e791369",2578:"34826da8",2605:"8a576cf2",2624:"f5ad11aa",2635:"87620c16",2637:"4d308a10",2639:"38c40e88",2735:"f8223717",2757:"2d5b460b",2853:"00971164",2865:"d3096993",2901:"6054a7b7",2906:"daf35bfd",2918:"b8aa190f",2925:"b8918cfa",2983:"6037893f",3001:"6bb9d4e6",3039:"3dd580b7",3073:"89ee78b6",3085:"ecf105b9",3089:"aedcfb27",3165:"7e04668b",3190:"7d5433eb",3205:"ee6f19eb",3255:"ec1a9f30",3321:"61375824",3343:"2b343735",3352:"70be561c",3461:"d7654115",3468:"41222fda",3556:"09fa31a7",3581:"2cb15b63",3608:"57e243bc",3655:"b36b0672",3672:"7306178e",3676:"98344dff",3711:"e396c16c",3734:"af304823",3784:"1e621dc2",3812:"9f3cd32d",3895:"12d3ebba",3981:"84a6d2bd",4013:"da48d15e",4016:"790508c0",4020:"c931abe2",4035:"8607d01e",4073:"e5c550f5",4085:"85bd36e8",4114:"33d6028e",4131:"3e237ade",4156:"df5d3d22",4160:"57855bec",4225:"297a8942",4282:"c912fd04",4295:"bc9ea20c",4368:"73548d5e",4435:"c43da8d6",4491:"cb29c1d0",4566:"2341b6ea",4586:"a3ab5555",4633:"34c9f5e8",4655:"8ded348a",4691:"4b6c2d6c",4787:"8c86210f",4841:"751bfd34",4864:"3f6cd347",4890:"2fc88c02",4901:"f8f62f0c",4964:"3d7d9e1e",4968:"95a18056",5028:"eb42778a",5048:"3a546a76",5069:"ca623d21",5072:"311f97d1",5074:"3531397b",5107:"858e7640",5146:"b61f071a",5148:"5abb9abe",5180:"105c590a",5214:"b92dec4b",5270:"bf61a0aa",5304:"3224c254",5312:"179153f2",5343:"a3dbd100",5358:"02870763",5391:"82e467fe",5407:"0d3d77fe",5421:"ccf958c3",5432:"969181b4",5484:"e5aeb3e1",5507:"960140a1",5625:"61fa3e35",5731:"28534265",5734:"c4dcf1e9",5736:"271de030",5755:"f6721a42",5758:"a47b0116",5847:"78677984",5853:"293a106b",5859:"5426b854",5861:"3a034c33",5863:"a8d9998a",5878:"953b25c7",5901:"8f81c84d",5990:"369df1d0",6050:"a6333a8c",6103:"59cb558a",6253:"2011a943",6274:"ccc82104",6295:"6d822073",6386:"2e41c3da",6447:"0a7756ee",6484:"b6ed66c3",6515:"984c7534",6533:"7c2dc797",6562:"ab76536c",6567:"3ed923ae",6685:"006a5139",6686:"72bf1caa",6705:"95947139",6709:"02b6ca79",6720:"e297c5ce",6738:"dc326d76",6791:"111501da",6867:"3ea3112f",6877:"0ddb15bb",6889:"bbada35a",6945:"b25b2ba8",6953:"dab3c897",6979:"4da80a6b",6990:"5a84cb5d",7040:"a74f0f7d",7049:"2d9859d8",7054:"a5b35eb5",7092:"6e8f50f2",7115:"bf71becf",7140:"2afb93cd",7262:"5f3a1e01",7270:"5025df44",7272:"664a18d1",7287:"fb6d8c31",7318:"a2109a62",7330:"9e412743",7339:"19e88c8a",7401:"a27685cc",7417:"fa86b7b5",7422:"08c54c32",7423:"2dc2ce1f",7438:"9570aeef",7445:"d57a297b",7459:"f1e8e4f9",7482:"c87cb3ff",7566:"99d21e2f",7572:"39e4d39a",7578:"18fc8d60",7659:"f04e20a5",7660:"3b223441",7670:"49f04be5",7717:"0559605e",7725:"a21c59e2",7765:"c1e475f0",7810:"da453788",7815:"313e6ff1",7824:"a008b204",7918:"b732b708",7920:"322c3e6b",7965:"48e3597b",7973:"3c831ba1",8007:"35de0fe7",8072:"f8d1cd02",8238:"ab83c0d7",8246:"8271dc55",8356:"dc3fa22f",8375:"4cea45af",8499:"0d3cf6c3",8518:"2b9e79d7",8523:"f9f2ed16",8589:"3eb525cd",8599:"f5ab030a",8610:"3506d76d",8648:"42e25f8d",8650:"84a1bff8",8655:"7c07e02a",8665:"d9b1b299",8693:"7b505e6e",8695:"0ba13655",8702:"2bb30d5c",8791:"0235546c",8894:"82ffb7b5",8896:"54a93740",8899:"3b8ebc2a",8951:"d2d33efd",8973:"0014c4fe",8982:"9146f194",8983:"2a97314c",9027:"387e71f6",9040:"dd81be33",9054:"703006b2",9093:"43bd95f3",9109:"ec8ac8e9",9201:"65147a77",9217:"e8a808c3",9226:"8bd4dc11",9235:"3c004445",9240:"66d13bc5",9247:"77dccd61",9309:"13a665ad",9334:"825c4ec3",9347:"d87683ca",9362:"665db87b",9443:"664e184e",9474:"0aafea3b",9476:"e35e3975",9523:"0da3dbbb",9565:"39680eb2",9571:"4079ba8e",9602:"79113a1f",9604:"79ab17d6",9620:"d72498d7",9630:"f5d6d6f5",9661:"4f6040e5",9668:"fac79ce0",9727:"240887d6",9804:"c6a58497",9878:"2d326f7e",9925:"539b7b75",9934:"b1e887fd"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,d)=>Object.prototype.hasOwnProperty.call(e,d),f={},a="centrifugal.dev:",r.l=(e,d,c,b)=>{if(f[e])f[e].push(d);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var a=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),a&&a.forEach((e=>e(c))),d)return d(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"7918",18793598:"2278",29839967:"2291",41068141:"3812",56231886:"5407","23855fe2":"8","935f2afb":"53",dc4f2258:"70","52bba951":"102","54f44165":"152","83d480e9":"205","3630fee7":"216","54aee988":"347",b325d9c4:"408","84a9b932":"410",c9a3329e:"430","84b8e2b1":"477","629b5641":"509",d1cb7448:"532",b2b675dd:"533",a2d1b113:"562",ab8e6500:"624","0a4443e6":"628","5ffc8930":"630",bd17143e:"674","40537b69":"683","893c1918":"811","4268d52f":"895",d4ca9753:"902","70aa60b8":"926","0fe76b3c":"992",fe6343fd:"1002","79ee6175":"1028","9475880e":"1151","0136d6f0":"1152",f90eb0d6:"1178","6e37598f":"1196","2114e513":"1313","3a890c2d":"1385","5fe24874":"1420","4ab79476":"1428",b301b932:"1439",b2f554cd:"1477",a728857c:"1530","0d0ff016":"1616","1fadf4c6":"1633","07703c67":"1658",d2c1944d:"1695",a7023ddc:"1713","45dfef24":"1714",a05caef7:"1752",b910a859:"1792","129cb555":"1875",d4dfc5db:"1888","9db3c45b":"1977",d6627831:"1983",f1b7a7af:"1994","3dfd29d6":"2005","21e8a749":"2026","7a7ba156":"2040",cf0e38ba:"2069","945c690d":"2089",be4c395a:"2128",dd818855:"2157","6b2be476":"2165","46627d28":"2203","3b028b51":"2292",ba0d3b30:"2309","0a1a814f":"2321","6e07cb60":"2352","9ff4038f":"2353","3bb37b67":"2413",bfbfeea3:"2438",ee88d6e4:"2442",d1c7a4f7:"2469",ed785809:"2479","814f3328":"2535","211f1d7a":"2540",c3677326:"2569","71fc0044":"2578","6e81f787":"2605","03e522d9":"2624","7bd30152":"2635","6ef9986d":"2637","24f2bde3":"2639",ff64321a:"2735","2b147458":"2757","43c444d2":"2853",ad7c169e:"2865",a4ddbaa1:"2901","60271c2c":"2906","332362b2":"2918","555afbe5":"2925","3529cd5b":"2983",bbd14fff:"3001",fbd7a87c:"3039",b2eaf182:"3073","1f391b9e":"3085",a6aa9e1f:"3089",cac93e67:"3165","4ebb2955":"3190","21c2d27e":"3205","06f11616":"3255","6aa961d8":"3321","25c94216":"3343","69d81c34":"3352","7df4dfbf":"3461",f26176d2:"3468","984c0c66":"3556","2dbf7ee0":"3581","9e4087bc":"3608","694566b3":"3655","1248e41e":"3672",c0434fb9:"3676","56e32e60":"3711","3d15ab27":"3734","041d543b":"3784","4f64b982":"3895","1d3c9151":"3981","01a85c17":"4013",d9829201:"4016",e8314be4:"4020","2b8ad662":"4035","3e15fc9c":"4073","230ca58d":"4085","631e3db1":"4114","238ce909":"4131","64e125c9":"4156","3c51ccb2":"4160","633b2ed2":"4225",e6b6a8f8:"4282","237c01c3":"4295",a94703ab:"4368",a82fa8b7:"4435",e6afaed9:"4491",b3216779:"4566",c98fa109:"4586","2f70c421":"4633","776d934d":"4655","0a7ca2d6":"4691","1117f49a":"4787","0312644c":"4841",ee10dcb9:"4864",b4b43a34:"4890","8a978eb4":"4901",ea108d2f:"4964","2eb9c429":"4968","94d5cf4c":"5028","0eae5577":"5048","192a8b1e":"5069","77e23114":"5074","936398dc":"5107",ffdd667d:"5146","679046a6":"5148",d016d150:"5180",c318ab3c:"5214","13f6d888":"5270","30b3ad4a":"5304",fd3209d2:"5312","1335c7a1":"5343","3c4ec49c":"5358","369bd8f8":"5391","6eaeadff":"5421","16c9b55b":"5432",ee78c395:"5484","9179a2e2":"5507","39d4d18a":"5625","32663f72":"5731",b4a3c16e:"5734","89734ed6":"5736",a564e6ff:"5755","85196f1f":"5758",c1817076:"5847",aa73fb9a:"5853","369aea06":"5859","9c1ee1d6":"5861",f178572b:"5863",d835c886:"5878",d2fe6fea:"5901","32e1c903":"5990","81e12894":"6050",ccc49370:"6103","3f0e28d9":"6253",a41a0a70:"6274",ecd5d374:"6295",f346273e:"6386",cce51cf2:"6447","4bd4488a":"6484",fcb790ab:"6515","1cd70467":"6533",f762c5da:"6562",a74df3cd:"6567",db2f115c:"6685","267fbc4e":"6686",fe52e117:"6705","0295581e":"6709","6574fcee":"6720","861598a7":"6738","2daf4703":"6791","93f9db65":"6867","91c5cac2":"6877",aacb0ae1:"6889",b4f0bebf:"6953","5f78e650":"6979","0dc36dc4":"6990",ab6f12ff:"7040",c2f60b05:"7049","9dd8a0d2":"7054",b05011d9:"7092","2a42cb18":"7115",e19d40c8:"7140",e66faea1:"7262","9c3b1acf":"7270","4529506a":"7272","2e854b47":"7287",f2e9cf2f:"7318",b5547432:"7330","3270d7e8":"7339","0d503bfe":"7401","18b1e3cf":"7417","11a20880":"7422","58246c43":"7423","9c021584":"7438",a8fc9e46:"7445","05ba4f60":"7459","66eb7538":"7482","8e068dda":"7566","6fbe284c":"7572",cc50533f:"7578",fc3deafd:"7659",f4f2dadf:"7660","91116fee":"7670","01eca2db":"7717",b9cceeee:"7725",fe91fc6f:"7765","19e7756f":"7810","2bf25d27":"7815",c5dc0dc4:"7824","1a4e3797":"7920","4a4109ec":"7965","20c4d804":"7973","5706869d":"8007","31c58a66":"8072","4fc58f03":"8238","0d57d15e":"8246","04ac3258":"8356","5de4a79c":"8375",b479c509:"8499",a7bd4aaa:"8518",f2f7592a:"8523","7672fb2a":"8589","91fdfcd5":"8599","6875c492":"8610","8e9fe0eb":"8648",cadfeb4f:"8650",c8380abd:"8655","9b9e219e":"8665",b0ea8d09:"8693","02c21cfa":"8695","73c943f6":"8702",e257283f:"8791","06f9ead7":"8896","4ec37bcb":"8899","09382599":"8951",d4c029c2:"8973","5934e2d7":"8982","79276c30":"8983","9b70d0cc":"9027","02080b57":"9040",b89c2c0a:"9054","386a3726":"9093",a1538072:"9109","4efbf0bc":"9201",fd93cfee:"9217","2acc7b89":"9226",e7893f84:"9235",bbb9e52d:"9240","92b58ac1":"9247","250ad80d":"9309","9c87bba9":"9334",b1f4df52:"9347","8db697a0":"9362","155d95c4":"9443",b6f2a3eb:"9474","498554e3":"9476","2391cf3d":"9523",fd1fdc14:"9565","195b633a":"9571",b62a3811:"9602","49012ebf":"9604","58b29436":"9620",e9cbd346:"9630","5e95c892":"9661","267a22d2":"9668","1d4d4d48":"9727","209857dd":"9804","7747d83f":"9878","73e61bcc":"9925","1d223b96":"9934"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,3312:0};r.f.j=(d,c)=>{var f=r.o(e,d)?e[d]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1303|3312)$/.test(d))e[d]=0;else{var a=new Promise(((c,a)=>f=e[d]=[c,a]));c.push(f[2]=a);var b=r.p+r.u(d),t=new Error;r.l(b,(c=>{if(r.o(e,d)&&(0!==(f=e[d])&&(e[d]=void 0),f)){var a=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+d+" failed.\n("+a+": "+b+")",t.name="ChunkLoadError",t.type=a,t.request=b,f[1](t)}}),"chunk-"+d,d)}},r.O.j=d=>0===e[d];var d=(d,c)=>{var f,a,b=c[0],t=c[1],o=c[2],n=0;if(b.some((d=>0!==e[d]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(d&&d(c);n{"use strict";var e,d,c,f,a,b={},t={};function r(e){var d=t[e];if(void 0!==d)return d.exports;var c=t[e]={exports:{}};return b[e].call(c.exports,c,c.exports,r),c.exports}r.m=b,e=[],r.O=(d,c,f,a)=>{if(!c){var b=1/0;for(i=0;i=a)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,a0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[c,f,a]},r.n=e=>{var d=e&&e.__esModule?()=>e.default:()=>e;return r.d(d,{a:d}),d},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var a=Object.create(null);r.r(a);var b={};d=d||[null,c({}),c([]),c(c)];for(var t=2&f&&e;"object"==typeof t&&!~d.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((d=>b[d]=()=>e[d]));return b.default=()=>e,r.d(a,b),a},r.d=(e,d)=>{for(var c in d)r.o(d,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:d[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((d,c)=>(r.f[c](e,d),d)),[])),r.u=e=>"assets/js/"+({8:"23855fe2",53:"935f2afb",70:"dc4f2258",102:"52bba951",152:"54f44165",205:"83d480e9",216:"3630fee7",347:"54aee988",408:"b325d9c4",410:"84a9b932",430:"c9a3329e",477:"84b8e2b1",509:"629b5641",532:"d1cb7448",533:"b2b675dd",562:"a2d1b113",624:"ab8e6500",628:"0a4443e6",630:"5ffc8930",674:"bd17143e",683:"40537b69",811:"893c1918",895:"4268d52f",902:"d4ca9753",926:"70aa60b8",992:"0fe76b3c",1002:"fe6343fd",1028:"79ee6175",1151:"9475880e",1152:"0136d6f0",1178:"f90eb0d6",1196:"6e37598f",1313:"2114e513",1385:"3a890c2d",1420:"5fe24874",1428:"4ab79476",1439:"b301b932",1477:"b2f554cd",1530:"a728857c",1616:"0d0ff016",1633:"1fadf4c6",1658:"07703c67",1695:"d2c1944d",1713:"a7023ddc",1714:"45dfef24",1752:"a05caef7",1792:"b910a859",1875:"129cb555",1888:"d4dfc5db",1977:"9db3c45b",1983:"d6627831",1994:"f1b7a7af",2005:"3dfd29d6",2026:"21e8a749",2040:"7a7ba156",2069:"cf0e38ba",2089:"945c690d",2128:"be4c395a",2157:"dd818855",2165:"6b2be476",2203:"46627d28",2278:"18793598",2291:"29839967",2292:"3b028b51",2309:"ba0d3b30",2321:"0a1a814f",2352:"6e07cb60",2353:"9ff4038f",2413:"3bb37b67",2438:"bfbfeea3",2442:"ee88d6e4",2469:"d1c7a4f7",2479:"ed785809",2535:"814f3328",2540:"211f1d7a",2569:"c3677326",2578:"71fc0044",2605:"6e81f787",2624:"03e522d9",2635:"7bd30152",2637:"6ef9986d",2639:"24f2bde3",2735:"ff64321a",2757:"2b147458",2853:"43c444d2",2865:"ad7c169e",2901:"a4ddbaa1",2906:"60271c2c",2918:"332362b2",2925:"555afbe5",2983:"3529cd5b",3001:"bbd14fff",3039:"fbd7a87c",3073:"b2eaf182",3085:"1f391b9e",3089:"a6aa9e1f",3165:"cac93e67",3190:"4ebb2955",3205:"21c2d27e",3255:"06f11616",3321:"6aa961d8",3343:"25c94216",3352:"69d81c34",3461:"7df4dfbf",3468:"f26176d2",3556:"984c0c66",3581:"2dbf7ee0",3608:"9e4087bc",3655:"694566b3",3672:"1248e41e",3676:"c0434fb9",3711:"56e32e60",3734:"3d15ab27",3784:"041d543b",3812:"41068141",3895:"4f64b982",3981:"1d3c9151",4013:"01a85c17",4016:"d9829201",4020:"e8314be4",4035:"2b8ad662",4073:"3e15fc9c",4085:"230ca58d",4114:"631e3db1",4131:"238ce909",4156:"64e125c9",4160:"3c51ccb2",4225:"633b2ed2",4282:"e6b6a8f8",4295:"237c01c3",4368:"a94703ab",4435:"a82fa8b7",4491:"e6afaed9",4566:"b3216779",4586:"c98fa109",4633:"2f70c421",4655:"776d934d",4691:"0a7ca2d6",4787:"1117f49a",4841:"0312644c",4864:"ee10dcb9",4890:"b4b43a34",4901:"8a978eb4",4964:"ea108d2f",4968:"2eb9c429",5028:"94d5cf4c",5048:"0eae5577",5069:"192a8b1e",5074:"77e23114",5107:"936398dc",5146:"ffdd667d",5148:"679046a6",5180:"d016d150",5214:"c318ab3c",5270:"13f6d888",5304:"30b3ad4a",5312:"fd3209d2",5343:"1335c7a1",5358:"3c4ec49c",5391:"369bd8f8",5407:"56231886",5421:"6eaeadff",5432:"16c9b55b",5484:"ee78c395",5507:"9179a2e2",5625:"39d4d18a",5731:"32663f72",5734:"b4a3c16e",5736:"89734ed6",5755:"a564e6ff",5758:"85196f1f",5847:"c1817076",5853:"aa73fb9a",5859:"369aea06",5861:"9c1ee1d6",5863:"f178572b",5878:"d835c886",5901:"d2fe6fea",5990:"32e1c903",6050:"81e12894",6103:"ccc49370",6253:"3f0e28d9",6274:"a41a0a70",6295:"ecd5d374",6386:"f346273e",6447:"cce51cf2",6484:"4bd4488a",6515:"fcb790ab",6533:"1cd70467",6562:"f762c5da",6567:"a74df3cd",6685:"db2f115c",6686:"267fbc4e",6705:"fe52e117",6709:"0295581e",6720:"6574fcee",6738:"861598a7",6791:"2daf4703",6867:"93f9db65",6877:"91c5cac2",6889:"aacb0ae1",6953:"b4f0bebf",6979:"5f78e650",6990:"0dc36dc4",7040:"ab6f12ff",7049:"c2f60b05",7054:"9dd8a0d2",7092:"b05011d9",7115:"2a42cb18",7140:"e19d40c8",7262:"e66faea1",7270:"9c3b1acf",7272:"4529506a",7287:"2e854b47",7318:"f2e9cf2f",7330:"b5547432",7339:"3270d7e8",7401:"0d503bfe",7417:"18b1e3cf",7422:"11a20880",7423:"58246c43",7438:"9c021584",7445:"a8fc9e46",7459:"05ba4f60",7482:"66eb7538",7566:"8e068dda",7572:"6fbe284c",7578:"cc50533f",7659:"fc3deafd",7660:"f4f2dadf",7670:"91116fee",7717:"01eca2db",7725:"b9cceeee",7765:"fe91fc6f",7810:"19e7756f",7815:"2bf25d27",7824:"c5dc0dc4",7918:"17896441",7920:"1a4e3797",7965:"4a4109ec",7973:"20c4d804",8007:"5706869d",8072:"31c58a66",8238:"4fc58f03",8246:"0d57d15e",8356:"04ac3258",8375:"5de4a79c",8499:"b479c509",8518:"a7bd4aaa",8523:"f2f7592a",8589:"7672fb2a",8599:"91fdfcd5",8610:"6875c492",8648:"8e9fe0eb",8650:"cadfeb4f",8655:"c8380abd",8665:"9b9e219e",8693:"b0ea8d09",8695:"02c21cfa",8702:"73c943f6",8791:"e257283f",8896:"06f9ead7",8899:"4ec37bcb",8951:"09382599",8973:"d4c029c2",8982:"5934e2d7",8983:"79276c30",9027:"9b70d0cc",9040:"02080b57",9054:"b89c2c0a",9093:"386a3726",9109:"a1538072",9201:"4efbf0bc",9217:"fd93cfee",9226:"2acc7b89",9235:"e7893f84",9240:"bbb9e52d",9247:"92b58ac1",9309:"250ad80d",9334:"9c87bba9",9347:"b1f4df52",9362:"8db697a0",9443:"155d95c4",9474:"b6f2a3eb",9476:"498554e3",9523:"2391cf3d",9565:"fd1fdc14",9571:"195b633a",9602:"b62a3811",9604:"49012ebf",9620:"58b29436",9630:"e9cbd346",9661:"5e95c892",9668:"267a22d2",9727:"1d4d4d48",9804:"209857dd",9878:"7747d83f",9925:"73e61bcc",9934:"1d223b96"}[e]||e)+"."+{8:"02086359",53:"8ed04548",70:"6e957083",102:"0fc3a49c",152:"b049c7d5",205:"26bfbdd5",216:"366eca28",252:"cdbb986b",347:"2f8525a7",408:"20cc5e53",410:"e5d3231b",430:"7b7237d1",477:"00a01503",509:"5d64d611",532:"0e153895",533:"6b2ce39c",562:"f57fa187",624:"181d30b4",628:"d791006f",630:"1977bbf8",674:"185130c1",683:"153d7331",811:"4f10393a",895:"ee202a05",902:"e234425f",926:"a743c33e",992:"4c6ed1f4",1002:"fd80d66c",1028:"1d891058",1151:"5088e675",1152:"a687bcf1",1178:"81211f8c",1196:"180e65b8",1313:"e2844e66",1343:"4ee858c8",1385:"1ea84dad",1420:"36e85b90",1426:"3ae8906c",1428:"a38f2e5e",1439:"7d6c9c6d",1477:"fac77ba3",1530:"0e6a53d0",1616:"06661121",1633:"a1e0aae4",1658:"a0f4760a",1695:"0b4b53d6",1713:"c10c4b80",1714:"20091116",1752:"9d5601d0",1792:"00f4ffbf",1875:"2038c711",1888:"bbf0386e",1977:"f27b462b",1983:"3774b0d3",1994:"b4455ae6",2005:"5a9f236b",2026:"363e4a43",2040:"abef088e",2069:"b4bac076",2089:"87109ff5",2128:"377d064a",2157:"ef64a14f",2165:"2d60cb81",2203:"1c22fa74",2278:"7f7e1c8d",2291:"1fad80ae",2292:"9e374f29",2309:"550e1aad",2321:"044983d0",2352:"e143fe17",2353:"9aeb5acf",2413:"6074a974",2438:"a9c63372",2442:"3fbf7502",2469:"9d5dfa3c",2479:"7418efcc",2535:"80094057",2540:"ee74edb8",2569:"0e791369",2578:"34826da8",2605:"8a576cf2",2624:"f5ad11aa",2635:"87620c16",2637:"4d308a10",2639:"38c40e88",2735:"f8223717",2757:"2d5b460b",2853:"00971164",2865:"d3096993",2901:"6054a7b7",2906:"daf35bfd",2918:"b8aa190f",2925:"b8918cfa",2983:"6037893f",3001:"6bb9d4e6",3039:"3dd580b7",3073:"89ee78b6",3085:"ecf105b9",3089:"aedcfb27",3165:"7e04668b",3190:"7d5433eb",3205:"ee6f19eb",3255:"ec1a9f30",3321:"61375824",3343:"2b343735",3352:"70be561c",3461:"d7654115",3468:"41222fda",3556:"09fa31a7",3581:"2cb15b63",3608:"57e243bc",3655:"b36b0672",3672:"7306178e",3676:"98344dff",3711:"e396c16c",3734:"af304823",3784:"1e621dc2",3812:"9f3cd32d",3895:"12d3ebba",3981:"84a6d2bd",4013:"da48d15e",4016:"790508c0",4020:"c931abe2",4035:"8607d01e",4073:"e5c550f5",4085:"85bd36e8",4114:"33d6028e",4131:"3e237ade",4156:"df5d3d22",4160:"57855bec",4225:"297a8942",4282:"c912fd04",4295:"bc9ea20c",4368:"73548d5e",4435:"c43da8d6",4491:"cb29c1d0",4566:"2341b6ea",4586:"a3ab5555",4633:"34c9f5e8",4655:"8ded348a",4691:"4b6c2d6c",4787:"8c86210f",4841:"751bfd34",4864:"3f6cd347",4890:"2fc88c02",4901:"f8f62f0c",4964:"3d7d9e1e",4968:"95a18056",5028:"eb42778a",5048:"3a546a76",5069:"ca623d21",5072:"311f97d1",5074:"3531397b",5107:"858e7640",5146:"b61f071a",5148:"5abb9abe",5180:"105c590a",5214:"b92dec4b",5270:"bf61a0aa",5304:"3224c254",5312:"179153f2",5343:"a3dbd100",5358:"02870763",5391:"82e467fe",5407:"0d3d77fe",5421:"ccf958c3",5432:"969181b4",5484:"e5aeb3e1",5507:"960140a1",5625:"61fa3e35",5731:"28534265",5734:"c4dcf1e9",5736:"271de030",5755:"f6721a42",5758:"a47b0116",5847:"78677984",5853:"293a106b",5859:"5426b854",5861:"3a034c33",5863:"a8d9998a",5878:"953b25c7",5901:"8f81c84d",5990:"369df1d0",6050:"a6333a8c",6103:"59cb558a",6253:"2011a943",6274:"ccc82104",6295:"6d822073",6386:"2e41c3da",6447:"0a7756ee",6484:"b6ed66c3",6515:"984c7534",6533:"7c2dc797",6562:"ab76536c",6567:"3ed923ae",6685:"006a5139",6686:"72bf1caa",6705:"95947139",6709:"02b6ca79",6720:"01a04f59",6738:"dc326d76",6791:"111501da",6867:"3ea3112f",6877:"0ddb15bb",6889:"bbada35a",6945:"b25b2ba8",6953:"dab3c897",6979:"4da80a6b",6990:"5a84cb5d",7040:"a74f0f7d",7049:"2d9859d8",7054:"a5b35eb5",7092:"6e8f50f2",7115:"bf71becf",7140:"2afb93cd",7262:"5f3a1e01",7270:"5025df44",7272:"664a18d1",7287:"fb6d8c31",7318:"a2109a62",7330:"9e412743",7339:"19e88c8a",7401:"a27685cc",7417:"fa86b7b5",7422:"08c54c32",7423:"2dc2ce1f",7438:"9570aeef",7445:"d57a297b",7459:"f1e8e4f9",7482:"c87cb3ff",7566:"99d21e2f",7572:"39e4d39a",7578:"18fc8d60",7659:"f04e20a5",7660:"3b223441",7670:"49f04be5",7717:"0559605e",7725:"a21c59e2",7765:"c1e475f0",7810:"da453788",7815:"313e6ff1",7824:"a008b204",7918:"b732b708",7920:"322c3e6b",7965:"48e3597b",7973:"3c831ba1",8007:"35de0fe7",8072:"f8d1cd02",8238:"ab83c0d7",8246:"8271dc55",8356:"dc3fa22f",8375:"4cea45af",8499:"0d3cf6c3",8518:"2b9e79d7",8523:"f9f2ed16",8589:"3eb525cd",8599:"f5ab030a",8610:"3506d76d",8648:"42e25f8d",8650:"84a1bff8",8655:"7c07e02a",8665:"d9b1b299",8693:"7b505e6e",8695:"0ba13655",8702:"2bb30d5c",8791:"0235546c",8894:"82ffb7b5",8896:"54a93740",8899:"3b8ebc2a",8951:"d2d33efd",8973:"0014c4fe",8982:"9146f194",8983:"2a97314c",9027:"387e71f6",9040:"dd81be33",9054:"703006b2",9093:"43bd95f3",9109:"ec8ac8e9",9201:"65147a77",9217:"e8a808c3",9226:"8bd4dc11",9235:"3c004445",9240:"66d13bc5",9247:"77dccd61",9309:"13a665ad",9334:"825c4ec3",9347:"d87683ca",9362:"665db87b",9443:"664e184e",9474:"0aafea3b",9476:"e35e3975",9523:"0da3dbbb",9565:"39680eb2",9571:"4079ba8e",9602:"79113a1f",9604:"79ab17d6",9620:"d72498d7",9630:"f5d6d6f5",9661:"4f6040e5",9668:"fac79ce0",9727:"240887d6",9804:"c6a58497",9878:"2d326f7e",9925:"539b7b75",9934:"b1e887fd"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,d)=>Object.prototype.hasOwnProperty.call(e,d),f={},a="centrifugal.dev:",r.l=(e,d,c,b)=>{if(f[e])f[e].push(d);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var a=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),a&&a.forEach((e=>e(c))),d)return d(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"7918",18793598:"2278",29839967:"2291",41068141:"3812",56231886:"5407","23855fe2":"8","935f2afb":"53",dc4f2258:"70","52bba951":"102","54f44165":"152","83d480e9":"205","3630fee7":"216","54aee988":"347",b325d9c4:"408","84a9b932":"410",c9a3329e:"430","84b8e2b1":"477","629b5641":"509",d1cb7448:"532",b2b675dd:"533",a2d1b113:"562",ab8e6500:"624","0a4443e6":"628","5ffc8930":"630",bd17143e:"674","40537b69":"683","893c1918":"811","4268d52f":"895",d4ca9753:"902","70aa60b8":"926","0fe76b3c":"992",fe6343fd:"1002","79ee6175":"1028","9475880e":"1151","0136d6f0":"1152",f90eb0d6:"1178","6e37598f":"1196","2114e513":"1313","3a890c2d":"1385","5fe24874":"1420","4ab79476":"1428",b301b932:"1439",b2f554cd:"1477",a728857c:"1530","0d0ff016":"1616","1fadf4c6":"1633","07703c67":"1658",d2c1944d:"1695",a7023ddc:"1713","45dfef24":"1714",a05caef7:"1752",b910a859:"1792","129cb555":"1875",d4dfc5db:"1888","9db3c45b":"1977",d6627831:"1983",f1b7a7af:"1994","3dfd29d6":"2005","21e8a749":"2026","7a7ba156":"2040",cf0e38ba:"2069","945c690d":"2089",be4c395a:"2128",dd818855:"2157","6b2be476":"2165","46627d28":"2203","3b028b51":"2292",ba0d3b30:"2309","0a1a814f":"2321","6e07cb60":"2352","9ff4038f":"2353","3bb37b67":"2413",bfbfeea3:"2438",ee88d6e4:"2442",d1c7a4f7:"2469",ed785809:"2479","814f3328":"2535","211f1d7a":"2540",c3677326:"2569","71fc0044":"2578","6e81f787":"2605","03e522d9":"2624","7bd30152":"2635","6ef9986d":"2637","24f2bde3":"2639",ff64321a:"2735","2b147458":"2757","43c444d2":"2853",ad7c169e:"2865",a4ddbaa1:"2901","60271c2c":"2906","332362b2":"2918","555afbe5":"2925","3529cd5b":"2983",bbd14fff:"3001",fbd7a87c:"3039",b2eaf182:"3073","1f391b9e":"3085",a6aa9e1f:"3089",cac93e67:"3165","4ebb2955":"3190","21c2d27e":"3205","06f11616":"3255","6aa961d8":"3321","25c94216":"3343","69d81c34":"3352","7df4dfbf":"3461",f26176d2:"3468","984c0c66":"3556","2dbf7ee0":"3581","9e4087bc":"3608","694566b3":"3655","1248e41e":"3672",c0434fb9:"3676","56e32e60":"3711","3d15ab27":"3734","041d543b":"3784","4f64b982":"3895","1d3c9151":"3981","01a85c17":"4013",d9829201:"4016",e8314be4:"4020","2b8ad662":"4035","3e15fc9c":"4073","230ca58d":"4085","631e3db1":"4114","238ce909":"4131","64e125c9":"4156","3c51ccb2":"4160","633b2ed2":"4225",e6b6a8f8:"4282","237c01c3":"4295",a94703ab:"4368",a82fa8b7:"4435",e6afaed9:"4491",b3216779:"4566",c98fa109:"4586","2f70c421":"4633","776d934d":"4655","0a7ca2d6":"4691","1117f49a":"4787","0312644c":"4841",ee10dcb9:"4864",b4b43a34:"4890","8a978eb4":"4901",ea108d2f:"4964","2eb9c429":"4968","94d5cf4c":"5028","0eae5577":"5048","192a8b1e":"5069","77e23114":"5074","936398dc":"5107",ffdd667d:"5146","679046a6":"5148",d016d150:"5180",c318ab3c:"5214","13f6d888":"5270","30b3ad4a":"5304",fd3209d2:"5312","1335c7a1":"5343","3c4ec49c":"5358","369bd8f8":"5391","6eaeadff":"5421","16c9b55b":"5432",ee78c395:"5484","9179a2e2":"5507","39d4d18a":"5625","32663f72":"5731",b4a3c16e:"5734","89734ed6":"5736",a564e6ff:"5755","85196f1f":"5758",c1817076:"5847",aa73fb9a:"5853","369aea06":"5859","9c1ee1d6":"5861",f178572b:"5863",d835c886:"5878",d2fe6fea:"5901","32e1c903":"5990","81e12894":"6050",ccc49370:"6103","3f0e28d9":"6253",a41a0a70:"6274",ecd5d374:"6295",f346273e:"6386",cce51cf2:"6447","4bd4488a":"6484",fcb790ab:"6515","1cd70467":"6533",f762c5da:"6562",a74df3cd:"6567",db2f115c:"6685","267fbc4e":"6686",fe52e117:"6705","0295581e":"6709","6574fcee":"6720","861598a7":"6738","2daf4703":"6791","93f9db65":"6867","91c5cac2":"6877",aacb0ae1:"6889",b4f0bebf:"6953","5f78e650":"6979","0dc36dc4":"6990",ab6f12ff:"7040",c2f60b05:"7049","9dd8a0d2":"7054",b05011d9:"7092","2a42cb18":"7115",e19d40c8:"7140",e66faea1:"7262","9c3b1acf":"7270","4529506a":"7272","2e854b47":"7287",f2e9cf2f:"7318",b5547432:"7330","3270d7e8":"7339","0d503bfe":"7401","18b1e3cf":"7417","11a20880":"7422","58246c43":"7423","9c021584":"7438",a8fc9e46:"7445","05ba4f60":"7459","66eb7538":"7482","8e068dda":"7566","6fbe284c":"7572",cc50533f:"7578",fc3deafd:"7659",f4f2dadf:"7660","91116fee":"7670","01eca2db":"7717",b9cceeee:"7725",fe91fc6f:"7765","19e7756f":"7810","2bf25d27":"7815",c5dc0dc4:"7824","1a4e3797":"7920","4a4109ec":"7965","20c4d804":"7973","5706869d":"8007","31c58a66":"8072","4fc58f03":"8238","0d57d15e":"8246","04ac3258":"8356","5de4a79c":"8375",b479c509:"8499",a7bd4aaa:"8518",f2f7592a:"8523","7672fb2a":"8589","91fdfcd5":"8599","6875c492":"8610","8e9fe0eb":"8648",cadfeb4f:"8650",c8380abd:"8655","9b9e219e":"8665",b0ea8d09:"8693","02c21cfa":"8695","73c943f6":"8702",e257283f:"8791","06f9ead7":"8896","4ec37bcb":"8899","09382599":"8951",d4c029c2:"8973","5934e2d7":"8982","79276c30":"8983","9b70d0cc":"9027","02080b57":"9040",b89c2c0a:"9054","386a3726":"9093",a1538072:"9109","4efbf0bc":"9201",fd93cfee:"9217","2acc7b89":"9226",e7893f84:"9235",bbb9e52d:"9240","92b58ac1":"9247","250ad80d":"9309","9c87bba9":"9334",b1f4df52:"9347","8db697a0":"9362","155d95c4":"9443",b6f2a3eb:"9474","498554e3":"9476","2391cf3d":"9523",fd1fdc14:"9565","195b633a":"9571",b62a3811:"9602","49012ebf":"9604","58b29436":"9620",e9cbd346:"9630","5e95c892":"9661","267a22d2":"9668","1d4d4d48":"9727","209857dd":"9804","7747d83f":"9878","73e61bcc":"9925","1d223b96":"9934"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,3312:0};r.f.j=(d,c)=>{var f=r.o(e,d)?e[d]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1303|3312)$/.test(d))e[d]=0;else{var a=new Promise(((c,a)=>f=e[d]=[c,a]));c.push(f[2]=a);var b=r.p+r.u(d),t=new Error;r.l(b,(c=>{if(r.o(e,d)&&(0!==(f=e[d])&&(e[d]=void 0),f)){var a=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+d+" failed.\n("+a+": "+b+")",t.name="ChunkLoadError",t.type=a,t.request=b,f[1](t)}}),"chunk-"+d,d)}},r.O.j=d=>0===e[d];var d=(d,c)=>{var f,a,b=c[0],t=c[1],o=c[2],n=0;if(b.some((d=>0!==e[d]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(d&&d(c);n