From 08f58e25d429566f83310b777ac3696d547dcfca Mon Sep 17 00:00:00 2001 From: sheepbox8646 Date: Sun, 19 Apr 2026 06:17:37 +0000 Subject: [PATCH] deploy: 8e013ad1ad91afbb0e7187fed0dc6d3be8790af0 --- 404.html | 4 +-- about.html | 8 +++--- assets/{app.B_ClTvoY.js => app.Bwo_ecyo.js} | 2 +- ...HtBeW.js => channels_index.md.BYBYUJgL.js} | 2 +- ....js => channels_index.md.BYBYUJgL.lean.js} | 2 +- assets/channels_slack.md.DYyx2j2i.js | 1 + assets/channels_slack.md.DYyx2j2i.lean.js | 1 + .../chunks/@localSearchIndexroot.CEeliA4L.js | 1 + .../chunks/@localSearchIndexroot.Tiqps2K_.js | 1 - ...jIPF0W.js => VPLocalSearchBox.ppjlRfVe.js} | 2 +- .../{theme.D3TMuosU.js => theme.PItBixWd.js} | 4 +-- .../getting-started_channels.md.CIKhbgq7.js | 1 + ...ting-started_channels.md.CIKhbgq7.lean.js} | 2 +- .../getting-started_channels.md.DtCQrK76.js | 1 - blogs/2026-02-16.html | 6 ++--- blogs/index.html | 6 ++--- channels/dingtalk.html | 8 +++--- channels/discord.html | 8 +++--- channels/feishu.html | 8 +++--- channels/index.html | 10 +++---- channels/matrix.html | 8 +++--- channels/misskey.html | 8 +++--- channels/qq.html | 8 +++--- channels/slack.html | 26 +++++++++++++++++++ channels/telegram.html | 8 +++--- channels/wechatoa.html | 8 +++--- channels/wecom.html | 8 +++--- channels/weixin.html | 8 +++--- getting-started/access.html | 8 +++--- getting-started/bot.html | 8 +++--- getting-started/browser.html | 8 +++--- getting-started/channels.html | 10 +++---- getting-started/compaction.html | 8 +++--- getting-started/container.html | 8 +++--- getting-started/email.html | 8 +++--- getting-started/files.html | 8 +++--- getting-started/heartbeat.html | 8 +++--- getting-started/mcp.html | 8 +++--- getting-started/memory.html | 8 +++--- getting-started/provider-and-model.html | 8 +++--- getting-started/schedule.html | 8 +++--- getting-started/search-provider.html | 8 +++--- getting-started/sessions.html | 8 +++--- getting-started/skills.html | 8 +++--- getting-started/slash-commands.html | 8 +++--- getting-started/supermarket.html | 8 +++--- hashmap.json | 2 +- index.html | 8 +++--- installation/docker.html | 8 +++--- memory-providers/builtin.html | 8 +++--- memory-providers/index.html | 8 +++--- memory-providers/mem0.html | 8 +++--- memory-providers/openviking.html | 8 +++--- tts-providers/edge.html | 8 +++--- tts-providers/index.html | 8 +++--- zh/concepts/identity-and-binding.html | 6 ++--- zh/concepts/index.html | 6 ++--- zh/index.html | 6 ++--- zh/style/terminology.html | 6 ++--- 59 files changed, 212 insertions(+), 184 deletions(-) rename assets/{app.B_ClTvoY.js => app.Bwo_ecyo.js} (95%) rename assets/{channels_index.md.DqjHtBeW.js => channels_index.md.BYBYUJgL.js} (92%) rename assets/{channels_index.md.DqjHtBeW.lean.js => channels_index.md.BYBYUJgL.lean.js} (70%) create mode 100644 assets/channels_slack.md.DYyx2j2i.js create mode 100644 assets/channels_slack.md.DYyx2j2i.lean.js create mode 100644 assets/chunks/@localSearchIndexroot.CEeliA4L.js delete mode 100644 assets/chunks/@localSearchIndexroot.Tiqps2K_.js rename assets/chunks/{VPLocalSearchBox.CpjIPF0W.js => VPLocalSearchBox.ppjlRfVe.js} (99%) rename assets/chunks/{theme.D3TMuosU.js => theme.PItBixWd.js} (99%) create mode 100644 assets/getting-started_channels.md.CIKhbgq7.js rename assets/{getting-started_channels.md.DtCQrK76.lean.js => getting-started_channels.md.CIKhbgq7.lean.js} (86%) delete mode 100644 assets/getting-started_channels.md.DtCQrK76.js create mode 100644 channels/slack.html diff --git a/404.html b/404.html index b85d5904..e0dff9a4 100644 --- a/404.html +++ b/404.html @@ -9,7 +9,7 @@ - + @@ -17,7 +17,7 @@
- + \ No newline at end of file diff --git a/about.html b/about.html index 67a05cdb..c0009d02 100644 --- a/about.html +++ b/about.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

About Memoh

What Is Memoh?

Memoh is a multi-member, structured long-memory, containerized AI agent platform. You can create multiple AI bots, give each bot its own isolated workspace and long-term memory, and interact with them through Telegram, Discord, Lark (Feishu), QQ, Matrix, Misskey, DingTalk, WeCom, WeChat, WeChat Official Account, Email, or the built-in Web UI.

Every bot has its own execution environment, tools, memory configuration, and channel integrations. In practice, that means each bot behaves more like its own computer-backed agent than a shared chat preset.

What Makes Memoh Different

Multi-Bot And Multi-User

Memoh is built for real sharing and real separation at the same time:

  • create multiple bots for different roles or people
  • let humans and bots interact in private chats, groups, or delegated workflows
  • distinguish individual users in shared conversations
  • bind identities across channels so the same person can be recognized consistently

Containerized Workspaces

Each bot runs in its own isolated container workspace with a separate filesystem and network boundary. Bots can read and write files, run commands, and use tools inside that workspace without interfering with other bots.

Long-Term Memory And Context Management

Memoh separates two different problems:

  • Long-term memory stores durable facts and recalls them across conversations through memory providers
  • Session context compaction reduces the prompt size of an active session when the current conversation gets too large

This distinction is important: context compaction changes the active session window, while memory compaction rewrites stored memory entries.

Sessions And Discuss Mode

Each bot maintains independent sessions that preserve context. Memoh currently uses five session types:

  • Chat — regular user-facing conversations
  • Discuss — deliberative sessions where the bot can think through work and decide what to send outward
  • Heartbeat — periodic autonomous sessions
  • Schedule — cron-triggered task sessions
  • Subagent — delegated task sessions

You can start or route sessions with slash commands such as /new, and the Web UI exposes a session status panel with metrics like context usage, cache hit rate, and used skills.

Broad Channel Coverage

Memoh uses a unified channel adapter system so one bot can be reachable from many places at once.

Current user-facing integrations include:

  • Telegram
  • Discord
  • Lark (Feishu)
  • QQ
  • Matrix
  • Misskey
  • DingTalk
  • WeCom
  • WeChat
  • WeChat Official Account
  • Email
  • Web

Memoh also distinguishes between the personal WeChat QR-login integration and the webhook-based WeChat Official Account integration.

Tools, Skills, MCP, And Supermarket

Bots can use a rich set of built-in capabilities, including:

  • web search and web fetch
  • browser automation
  • file editing and command execution inside the bot workspace
  • memory search and management
  • messaging, email, and TTS
  • subagents for delegated work
  • skills for reusable behavior modules
  • MCP connections for external tool servers
  • Supermarket for curated skill and MCP template installation

Providers And Models

Memoh supports multiple provider client types, including:

  • OpenAI-compatible chat completions
  • OpenAI Responses API
  • Anthropic Messages
  • Google Generative AI
  • OpenAI Codex
  • GitHub Copilot
  • Edge Speech / TTS

Models are also separated by role:

  • chat models for normal interaction
  • embedding models for vector memory and search
  • speech models for TTS

Image generation is configured through compatible chat/image models rather than a separate image-provider system.

Operations And UI

The Web UI is designed so you can manage the whole system without editing config files by hand every day. It includes:

  • bot configuration tabs for general settings, access, channels, heartbeat, compaction, and more
  • provider and model management with OAuth flows where supported
  • session-side controls such as immediate compaction and status inspection
  • skill management with effective / shadowed / disabled visibility
  • slash-command driven control from channels

Where To Start

Published under AGPLv3

- +
Skip to content

About Memoh

What Is Memoh?

Memoh is a multi-member, structured long-memory, containerized AI agent platform. You can create multiple AI bots, give each bot its own isolated workspace and long-term memory, and interact with them through Telegram, Discord, Lark (Feishu), QQ, Matrix, Misskey, DingTalk, WeCom, WeChat, WeChat Official Account, Email, or the built-in Web UI.

Every bot has its own execution environment, tools, memory configuration, and channel integrations. In practice, that means each bot behaves more like its own computer-backed agent than a shared chat preset.

What Makes Memoh Different

Multi-Bot And Multi-User

Memoh is built for real sharing and real separation at the same time:

  • create multiple bots for different roles or people
  • let humans and bots interact in private chats, groups, or delegated workflows
  • distinguish individual users in shared conversations
  • bind identities across channels so the same person can be recognized consistently

Containerized Workspaces

Each bot runs in its own isolated container workspace with a separate filesystem and network boundary. Bots can read and write files, run commands, and use tools inside that workspace without interfering with other bots.

Long-Term Memory And Context Management

Memoh separates two different problems:

  • Long-term memory stores durable facts and recalls them across conversations through memory providers
  • Session context compaction reduces the prompt size of an active session when the current conversation gets too large

This distinction is important: context compaction changes the active session window, while memory compaction rewrites stored memory entries.

Sessions And Discuss Mode

Each bot maintains independent sessions that preserve context. Memoh currently uses five session types:

  • Chat — regular user-facing conversations
  • Discuss — deliberative sessions where the bot can think through work and decide what to send outward
  • Heartbeat — periodic autonomous sessions
  • Schedule — cron-triggered task sessions
  • Subagent — delegated task sessions

You can start or route sessions with slash commands such as /new, and the Web UI exposes a session status panel with metrics like context usage, cache hit rate, and used skills.

Broad Channel Coverage

Memoh uses a unified channel adapter system so one bot can be reachable from many places at once.

Current user-facing integrations include:

  • Telegram
  • Discord
  • Lark (Feishu)
  • QQ
  • Matrix
  • Misskey
  • DingTalk
  • WeCom
  • WeChat
  • WeChat Official Account
  • Email
  • Web

Memoh also distinguishes between the personal WeChat QR-login integration and the webhook-based WeChat Official Account integration.

Tools, Skills, MCP, And Supermarket

Bots can use a rich set of built-in capabilities, including:

  • web search and web fetch
  • browser automation
  • file editing and command execution inside the bot workspace
  • memory search and management
  • messaging, email, and TTS
  • subagents for delegated work
  • skills for reusable behavior modules
  • MCP connections for external tool servers
  • Supermarket for curated skill and MCP template installation

Providers And Models

Memoh supports multiple provider client types, including:

  • OpenAI-compatible chat completions
  • OpenAI Responses API
  • Anthropic Messages
  • Google Generative AI
  • OpenAI Codex
  • GitHub Copilot
  • Edge Speech / TTS

Models are also separated by role:

  • chat models for normal interaction
  • embedding models for vector memory and search
  • speech models for TTS

Image generation is configured through compatible chat/image models rather than a separate image-provider system.

Operations And UI

The Web UI is designed so you can manage the whole system without editing config files by hand every day. It includes:

  • bot configuration tabs for general settings, access, channels, heartbeat, compaction, and more
  • provider and model management with OAuth flows where supported
  • session-side controls such as immediate compaction and status inspection
  • skill management with effective / shadowed / disabled visibility
  • slash-command driven control from channels

Where To Start

Published under AGPLv3

+ \ No newline at end of file diff --git a/assets/app.B_ClTvoY.js b/assets/app.Bwo_ecyo.js similarity index 95% rename from assets/app.B_ClTvoY.js rename to assets/app.Bwo_ecyo.js index ebfa6382..f952c7b0 100644 --- a/assets/app.B_ClTvoY.js +++ b/assets/app.Bwo_ecyo.js @@ -1 +1 @@ -import{t as p}from"./chunks/theme.D3TMuosU.js";import{R as s,a2 as i,a3 as u,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,d as v,u as y,v as C,s as P,ac as b,ad as w,ae as R,af as E}from"./chunks/framework.DXGyWiRo.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; +import{t as p}from"./chunks/theme.PItBixWd.js";import{R as s,a2 as i,a3 as u,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,d as v,u as y,v as C,s as P,ac as b,ad as w,ae as R,af as E}from"./chunks/framework.DXGyWiRo.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; diff --git a/assets/channels_index.md.DqjHtBeW.js b/assets/channels_index.md.BYBYUJgL.js similarity index 92% rename from assets/channels_index.md.DqjHtBeW.js rename to assets/channels_index.md.BYBYUJgL.js index 99f67ac3..309299ac 100644 --- a/assets/channels_index.md.DqjHtBeW.js +++ b/assets/channels_index.md.BYBYUJgL.js @@ -1 +1 @@ -import{_ as t,o as a,c as o,ag as n}from"./chunks/framework.DXGyWiRo.js";const p=JSON.parse('{"title":"Channels Overview","description":"","frontmatter":{},"headers":[],"relativePath":"channels/index.md","filePath":"channels/index.md","lastUpdated":1776332711000}'),i={name:"channels/index.md"};function r(s,e,l,c,h,g){return a(),o("div",null,[...e[0]||(e[0]=[n('

Channels Overview

Channels are the gateways that connect your Memoh Bots to the outside world. By configuring channels, you can interact with your bots via your favorite messaging platforms.

Memoh currently supports the following channels:

WeChat vs WeChat Official Account

Memoh supports two different WeChat-related adapters:

Choose the one that matches your actual WeChat deployment model.

General Setup Flow

  1. Create an external app/bot: Register your bot on the target platform.
  2. Obtain credentials: Fetch API tokens, App IDs, app secrets, or access tokens.
  3. Configure in Memoh: Add the channel from your bot's Platforms tab.
  4. Save and enable: Activate the channel to start receiving and sending messages.

Depending on the platform, the final step may involve:

Choose a channel from the sidebar to see detailed configuration guides for each platform.

',13)])])}const f=t(i,[["render",r]]);export{p as __pageData,f as default}; +import{_ as t,o as a,c as o,ag as n}from"./chunks/framework.DXGyWiRo.js";const p=JSON.parse('{"title":"Channels Overview","description":"","frontmatter":{},"headers":[],"relativePath":"channels/index.md","filePath":"channels/index.md","lastUpdated":1776579425000}'),i={name:"channels/index.md"};function r(s,e,l,c,h,g){return a(),o("div",null,[...e[0]||(e[0]=[n('

Channels Overview

Channels are the gateways that connect your Memoh Bots to the outside world. By configuring channels, you can interact with your bots via your favorite messaging platforms.

Memoh currently supports the following channels:

WeChat vs WeChat Official Account

Memoh supports two different WeChat-related adapters:

Choose the one that matches your actual WeChat deployment model.

General Setup Flow

  1. Create an external app/bot: Register your bot on the target platform.
  2. Obtain credentials: Fetch API tokens, App IDs, app secrets, or access tokens.
  3. Configure in Memoh: Add the channel from your bot's Platforms tab.
  4. Save and enable: Activate the channel to start receiving and sending messages.

Depending on the platform, the final step may involve:

Choose a channel from the sidebar to see detailed configuration guides for each platform.

',13)])])}const f=t(i,[["render",r]]);export{p as __pageData,f as default}; diff --git a/assets/channels_index.md.DqjHtBeW.lean.js b/assets/channels_index.md.BYBYUJgL.lean.js similarity index 70% rename from assets/channels_index.md.DqjHtBeW.lean.js rename to assets/channels_index.md.BYBYUJgL.lean.js index d058ebe0..5c0c6965 100644 --- a/assets/channels_index.md.DqjHtBeW.lean.js +++ b/assets/channels_index.md.BYBYUJgL.lean.js @@ -1 +1 @@ -import{_ as t,o as a,c as o,ag as n}from"./chunks/framework.DXGyWiRo.js";const p=JSON.parse('{"title":"Channels Overview","description":"","frontmatter":{},"headers":[],"relativePath":"channels/index.md","filePath":"channels/index.md","lastUpdated":1776332711000}'),i={name:"channels/index.md"};function r(s,e,l,c,h,g){return a(),o("div",null,[...e[0]||(e[0]=[n("",13)])])}const f=t(i,[["render",r]]);export{p as __pageData,f as default}; +import{_ as t,o as a,c as o,ag as n}from"./chunks/framework.DXGyWiRo.js";const p=JSON.parse('{"title":"Channels Overview","description":"","frontmatter":{},"headers":[],"relativePath":"channels/index.md","filePath":"channels/index.md","lastUpdated":1776579425000}'),i={name:"channels/index.md"};function r(s,e,l,c,h,g){return a(),o("div",null,[...e[0]||(e[0]=[n("",13)])])}const f=t(i,[["render",r]]);export{p as __pageData,f as default}; diff --git a/assets/channels_slack.md.DYyx2j2i.js b/assets/channels_slack.md.DYyx2j2i.js new file mode 100644 index 00000000..d1a735e7 --- /dev/null +++ b/assets/channels_slack.md.DYyx2j2i.js @@ -0,0 +1 @@ +import{_ as o,o as t,c as a,ag as n}from"./chunks/framework.DXGyWiRo.js";const u=JSON.parse('{"title":"Slack Channel Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"channels/slack.md","filePath":"channels/slack.md","lastUpdated":1776579425000}'),s={name:"channels/slack.md"};function i(l,e,r,c,d,p){return t(),a("div",null,[...e[0]||(e[0]=[n('

Slack Channel Configuration

Connecting your Memoh Bot to Slack allows it to receive direct messages, participate in channels and threads, read attachments, send files, and use streaming replies.

Step 1: Create a Slack App

  1. Go to the Slack API dashboard and create a new app.
  2. Choose the workspace where you want to install the bot.
  3. Open Basic Information and keep this app page open for the next steps.

Step 2: Enable Socket Mode

Memoh's Slack adapter uses Socket Mode, so you need an app-level token in addition to the bot token.

  1. In Basic Information, enable Socket Mode.
  2. Create an App-Level Token with the connections:write scope.
  3. Copy the generated token. It starts with xapp-.

Step 3: Configure Bot Token Scopes

In OAuth & Permissions, add the bot token scopes required by the current Slack adapter:

You should also add these recommended scopes if you want Slack conversation names and metadata to show up more completely in Memoh:

Step 4: Subscribe to Bot Events

In Event Subscriptions, enable bot events and add:

These are the inbound event types currently handled by the Slack adapter.

Step 5: Install the App to Your Workspace

  1. In OAuth & Permissions, click Install to Workspace.
  2. Review the permission screen.
  3. Authorize the app.
  4. Copy the Bot User OAuth Token. It starts with xoxb-.

Make sure the xoxb-... bot token and the xapp-... app-level token come from the same Slack app and workspace.

Step 6: Configure Memoh

  1. Open your Bot detail page in the Memoh Web UI.
  2. Go to the Platforms tab.
  3. Click Add Channel and select Slack.
  4. Fill in:
    • Bot Token: your xoxb-... token
    • App-Level Token: your xapp-... token
  5. Click Save and Enable.

Step 7: Add the Bot to Conversations

After the channel is enabled, the Slack app still needs to be present in the conversations where you want it to work.

If the bot can send messages but cannot read uploaded images or files, check that files:read is enabled. If it connects but receives no incoming messages, check the bot events and the matching history scopes again.

Features Supported

',27)])])}const m=o(s,[["render",i]]);export{u as __pageData,m as default}; diff --git a/assets/channels_slack.md.DYyx2j2i.lean.js b/assets/channels_slack.md.DYyx2j2i.lean.js new file mode 100644 index 00000000..93b51abd --- /dev/null +++ b/assets/channels_slack.md.DYyx2j2i.lean.js @@ -0,0 +1 @@ +import{_ as o,o as t,c as a,ag as n}from"./chunks/framework.DXGyWiRo.js";const u=JSON.parse('{"title":"Slack Channel Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"channels/slack.md","filePath":"channels/slack.md","lastUpdated":1776579425000}'),s={name:"channels/slack.md"};function i(l,e,r,c,d,p){return t(),a("div",null,[...e[0]||(e[0]=[n("",27)])])}const m=o(s,[["render",i]]);export{u as __pageData,m as default}; diff --git a/assets/chunks/@localSearchIndexroot.CEeliA4L.js b/assets/chunks/@localSearchIndexroot.CEeliA4L.js new file mode 100644 index 00000000..eddb929b --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.CEeliA4L.js @@ -0,0 +1 @@ +const e='{"documentCount":361,"nextId":361,"documentIds":{"0":"/about.html#about-memoh","1":"/about.html#what-is-memoh","2":"/about.html#what-makes-memoh-different","3":"/about.html#multi-bot-and-multi-user","4":"/about.html#containerized-workspaces","5":"/about.html#long-term-memory-and-context-management","6":"/about.html#sessions-and-discuss-mode","7":"/about.html#broad-channel-coverage","8":"/about.html#tools-skills-mcp-and-supermarket","9":"/about.html#providers-and-models","10":"/about.html#operations-and-ui","11":"/about.html#where-to-start","12":"/blogs/2026-02-16.html#introduction-to-memoh-the-case-for-an-always-on-containerized-home-agent","13":"/blogs/2026-02-16.html#overview","14":"/blogs/2026-02-16.html#story-time","15":"/blogs/2026-02-16.html#what","16":"/blogs/2026-02-16.html#why","17":"/blogs/2026-02-16.html#how","18":"/blogs/2026-02-16.html#features","19":"/blogs/2026-02-16.html#compare-to-openclaw","20":"/blogs/2026-02-16.html#conclusion","21":"/blogs/#blogs","22":"/channels/dingtalk.html#dingtalk-channel-configuration","23":"/channels/dingtalk.html#step-1-create-a-dingtalk-app","24":"/channels/dingtalk.html#step-2-configure-memoh","25":"/channels/dingtalk.html#step-3-verify-messaging","26":"/channels/dingtalk.html#features-supported","27":"/channels/discord.html#discord-channel-configuration","28":"/channels/discord.html#step-1-create-a-discord-application","29":"/channels/discord.html#step-2-configure-bot-settings","30":"/channels/discord.html#step-3-invite-the-bot-to-your-server","31":"/channels/discord.html#step-4-configure-memoh","32":"/channels/discord.html#features-supported","33":"/channels/#channels-overview","34":"/channels/#wechat-vs-wechat-official-account","35":"/channels/#general-setup-flow","36":"/channels/matrix.html#matrix-channel-configuration","37":"/channels/matrix.html#step-1-create-a-matrix-bot-account","38":"/channels/matrix.html#step-2-configure-memoh","39":"/channels/matrix.html#step-3-invite-the-bot","40":"/channels/matrix.html#features-supported","41":"/channels/matrix.html#official-resources","42":"/channels/misskey.html#misskey-channel-configuration","43":"/channels/misskey.html#step-1-prepare-a-misskey-account-and-token","44":"/channels/misskey.html#step-2-configure-memoh","45":"/channels/misskey.html#step-3-start-chatting","46":"/channels/misskey.html#features-supported","47":"/channels/qq.html#qq-channel-configuration","48":"/channels/qq.html#step-1-create-a-qq-bot","49":"/channels/qq.html#step-2-configure-memoh","50":"/channels/qq.html#step-3-bind-your-identity-optional","51":"/channels/qq.html#features-supported","52":"/channels/qq.html#official-resources","53":"/channels/feishu.html#feishu-lark-channel-configuration","54":"/channels/feishu.html#step-1-create-a-feishu-app","55":"/channels/feishu.html#step-2-enable-bot-capability","56":"/channels/feishu.html#step-3-configure-permissions","57":"/channels/feishu.html#step-4-configure-events-webhook-mode","58":"/channels/feishu.html#step-5-publish-your-app","59":"/channels/slack.html#slack-channel-configuration","60":"/channels/slack.html#step-1-create-a-slack-app","61":"/channels/slack.html#step-2-enable-socket-mode","62":"/channels/slack.html#step-3-configure-bot-token-scopes","63":"/channels/slack.html#step-4-subscribe-to-bot-events","64":"/channels/slack.html#step-5-install-the-app-to-your-workspace","65":"/channels/slack.html#step-6-configure-memoh","66":"/channels/slack.html#step-7-add-the-bot-to-conversations","67":"/channels/slack.html#features-supported","68":"/channels/telegram.html#telegram-channel-configuration","69":"/channels/telegram.html#step-1-create-a-telegram-bot","70":"/channels/telegram.html#step-2-configure-memoh","71":"/channels/telegram.html#step-3-bind-your-identity-optional","72":"/channels/telegram.html#features-supported","73":"/channels/wechatoa.html#wechat-official-account-channel-configuration","74":"/channels/wechatoa.html#step-1-prepare-official-account-credentials","75":"/channels/wechatoa.html#step-2-add-the-channel-in-memoh","76":"/channels/wechatoa.html#step-3-configure-the-wechat-platform","77":"/channels/wechatoa.html#step-4-enable-and-test","78":"/channels/wechatoa.html#features-supported","79":"/channels/wecom.html#wecom-wework-channel-configuration","80":"/channels/wecom.html#step-1-create-a-wecom-bot","81":"/channels/wecom.html#step-2-configure-memoh","82":"/channels/wecom.html#step-3-start-chatting","83":"/channels/wecom.html#features-supported","84":"/channels/wecom.html#official-resources","85":"/channels/weixin.html#wechat-channel-configuration","86":"/channels/weixin.html#step-1-add-wechat-channel-in-memoh","87":"/channels/weixin.html#step-2-scan-the-qr-code","88":"/channels/weixin.html#step-3-start-chatting","89":"/channels/weixin.html#optional-settings","90":"/channels/weixin.html#features-supported","91":"/getting-started/access.html#bot-access-control","92":"/getting-started/access.html#quick-start-acl-presets","93":"/getting-started/access.html#concepts","94":"/getting-started/access.html#default-effect","95":"/getting-started/access.html#subject-types","96":"/getting-started/access.html#rule-effects","97":"/getting-started/access.html#priority-based-evaluation","98":"/getting-started/access.html#managing-access","99":"/getting-started/access.html#start-with-a-preset-then-refine","100":"/getting-started/access.html#adding-rules","101":"/getting-started/access.html#reordering-rules","102":"/getting-started/access.html#source-scope","103":"/getting-started/access.html#what-the-presets-actually-mean","104":"/getting-started/access.html#examples","105":"/getting-started/access.html#open-bot-anyone-can-chat","106":"/getting-started/access.html#private-bot-with-selected-users","107":"/getting-started/access.html#open-bot-with-blocked-users","108":"/getting-started/access.html#platform-specific-access","109":"/getting-started/access.html#channel-scoped-access","110":"/getting-started/access.html#debugging-access-decisions","111":"/getting-started/bot.html#bot-management","112":"/getting-started/bot.html#creating-a-bot","113":"/getting-started/bot.html#bot-detail-page","114":"/getting-started/bot.html#tab-overview","115":"/getting-started/bot.html#configuring-the-bot-s-core-settings","116":"/getting-started/bot.html#general-tab-reference","117":"/getting-started/bot.html#heartbeat-tab-reference","118":"/getting-started/bot.html#compaction-tab-reference","119":"/getting-started/bot.html#access-and-acl","120":"/getting-started/bot.html#discuss-related-advanced-settings","121":"/getting-started/bot.html#terminal-tab","122":"/getting-started/bot.html#deleting-a-bot","123":"/getting-started/browser.html#browser-contexts","124":"/getting-started/browser.html#concept-browser-gateway","125":"/getting-started/browser.html#creating-a-browser-context","126":"/getting-started/browser.html#configuring-a-browser-context","127":"/getting-started/browser.html#managing-contexts","128":"/getting-started/browser.html#assigning-a-browser-context-to-a-bot","129":"/getting-started/browser.html#bot-interaction","130":"/getting-started/browser.html#browser-core-selection","131":"/getting-started/browser.html#next-steps","132":"/getting-started/channels.html#bot-channels","133":"/getting-started/channels.html#concept-unified-communication","134":"/getting-started/channels.html#supported-channels","135":"/getting-started/channels.html#platform-guides","136":"/getting-started/channels.html#configuration-flow","137":"/getting-started/channels.html#_1-adding-a-channel","138":"/getting-started/channels.html#_2-common-fields","139":"/getting-started/channels.html#_3-special-case-feishu-webhook","140":"/getting-started/channels.html#_4-special-case-wechat-qr-login","141":"/getting-started/channels.html#_5-special-case-wechat-official-account-webhook","142":"/getting-started/channels.html#_6-special-case-dingtalk-stream-connection","143":"/getting-started/channels.html#operations","144":"/getting-started/compaction.html#context-compaction","145":"/getting-started/compaction.html#why-it-exists","146":"/getting-started/compaction.html#what-it-changes","147":"/getting-started/compaction.html#automatic-compaction","148":"/getting-started/compaction.html#immediate-compaction","149":"/getting-started/compaction.html#from-the-session-status-panel","150":"/getting-started/compaction.html#from-slash-commands","151":"/getting-started/compaction.html#status-and-logs","152":"/getting-started/compaction.html#relationship-to-context-window","153":"/getting-started/compaction.html#context-compaction-vs-memory-compaction","154":"/getting-started/compaction.html#next-steps","155":"/getting-started/container.html#bot-container-management","156":"/getting-started/container.html#concept-the-isolated-workspace","157":"/getting-started/container.html#operations","158":"/getting-started/container.html#lifecycle-actions","159":"/getting-started/container.html#container-information","160":"/getting-started/container.html#advanced-provide-cdi-devices","161":"/getting-started/container.html#configure-cdi-devices","162":"/getting-started/container.html#host-requirements","163":"/getting-started/container.html#important-behavior","164":"/getting-started/container.html#snapshots","165":"/getting-started/container.html#creating-a-snapshot","166":"/getting-started/container.html#restoring-a-snapshot","167":"/getting-started/container.html#managing-snapshots","168":"/getting-started/container.html#data-export-and-import","169":"/getting-started/container.html#export","170":"/getting-started/container.html#import","171":"/getting-started/container.html#restore","172":"/getting-started/container.html#container-versioning","173":"/getting-started/email.html#email-providers-and-bindings","174":"/getting-started/email.html#concept-email-as-a-bot-channel","175":"/getting-started/email.html#email-provider","176":"/getting-started/email.html#creating-a-provider","177":"/getting-started/email.html#bot-email-bindings","178":"/getting-started/email.html#adding-a-binding","179":"/getting-started/email.html#outbox-and-history","180":"/getting-started/email.html#bot-interaction","181":"/getting-started/files.html#bot-files-management","182":"/getting-started/files.html#operations","183":"/getting-started/files.html#browsing-and-navigation","184":"/getting-started/files.html#managing-files","185":"/getting-started/files.html#viewing-and-editing","186":"/getting-started/files.html#text-files","187":"/getting-started/files.html#images","188":"/getting-started/files.html#bot-interaction-with-files","189":"/getting-started/heartbeat.html#bot-heartbeat","190":"/getting-started/heartbeat.html#concept-scheduled-autonomy","191":"/getting-started/heartbeat.html#configuration","192":"/getting-started/heartbeat.html#logs-and-monitoring","193":"/getting-started/heartbeat.html#managing-logs","194":"/getting-started/heartbeat.html#bot-interaction","195":"/getting-started/mcp.html#mcp-connections","196":"/getting-started/mcp.html#concept-extending-bot-capabilities","197":"/getting-started/mcp.html#connection-types","198":"/getting-started/mcp.html#_1-stdio-local-process","199":"/getting-started/mcp.html#_2-remote-http-sse","200":"/getting-started/mcp.html#oauth-authentication","201":"/getting-started/mcp.html#operations","202":"/getting-started/mcp.html#tool-discovery","203":"/getting-started/mcp.html#bot-interaction","204":"/getting-started/memory.html#bot-memory-management","205":"/getting-started/memory.html#prerequisites","206":"/getting-started/memory.html#concept-memory-retrieval","207":"/getting-started/memory.html#operations","208":"/getting-started/memory.html#_1-creating-memories","209":"/getting-started/memory.html#_2-searching-and-managing","210":"/getting-started/memory.html#memory-compaction","211":"/getting-started/memory.html#rebuild","212":"/getting-started/memory.html#status","213":"/getting-started/memory.html#usage-statistics","214":"/getting-started/memory.html#memory-vs-session-context","215":"/getting-started/memory.html#bot-interaction","216":"/getting-started/provider-and-model.html#providers-and-models","217":"/getting-started/provider-and-model.html#provider-basics","218":"/getting-started/provider-and-model.html#creating-a-provider","219":"/getting-started/provider-and-model.html#client-types","220":"/getting-started/provider-and-model.html#oauth-based-providers","221":"/getting-started/provider-and-model.html#openai-codex","222":"/getting-started/provider-and-model.html#github-copilot","223":"/getting-started/provider-and-model.html#importing-models","224":"/getting-started/provider-and-model.html#model-types","225":"/getting-started/provider-and-model.html#chat-model-configuration","226":"/getting-started/provider-and-model.html#compatibilities","227":"/getting-started/provider-and-model.html#context-window","228":"/getting-started/provider-and-model.html#image-generation-models","229":"/getting-started/provider-and-model.html#embedding-models","230":"/getting-started/provider-and-model.html#speech-models","231":"/getting-started/provider-and-model.html#recommended-mental-model","232":"/getting-started/provider-and-model.html#next-steps","233":"/getting-started/schedule.html#scheduled-tasks","234":"/getting-started/schedule.html#concept-cron-based-automation","235":"/getting-started/schedule.html#schedule-fields","236":"/getting-started/schedule.html#cron-pattern-reference","237":"/getting-started/schedule.html#viewing-schedules","238":"/getting-started/schedule.html#creating-schedules","239":"/getting-started/schedule.html#via-the-bot-conversational","240":"/getting-started/schedule.html#via-the-api","241":"/getting-started/schedule.html#execution-flow","242":"/getting-started/schedule.html#schedule-vs-heartbeat","243":"/getting-started/search-provider.html#search-providers","244":"/getting-started/search-provider.html#concept-real-time-knowledge","245":"/getting-started/search-provider.html#supported-search-engines","246":"/getting-started/search-provider.html#configuration-flow","247":"/getting-started/search-provider.html#_1-adding-a-search-provider","248":"/getting-started/search-provider.html#_2-managing-providers","249":"/getting-started/search-provider.html#assigning-a-search-provider-to-a-bot","250":"/getting-started/search-provider.html#bot-interaction","251":"/getting-started/sessions.html#sessions","252":"/getting-started/sessions.html#concept-conversation-isolation","253":"/getting-started/sessions.html#session-types","254":"/getting-started/sessions.html#chat-vs-discuss","255":"/getting-started/sessions.html#starting-a-new-session-with-new","256":"/getting-started/sessions.html#in-external-channels-telegram-discord-feishu-etc","257":"/getting-started/sessions.html#in-the-web-ui","258":"/getting-started/sessions.html#managing-sessions","259":"/getting-started/sessions.html#viewing-sessions","260":"/getting-started/sessions.html#renaming-sessions","261":"/getting-started/sessions.html#deleting-sessions","262":"/getting-started/sessions.html#session-status-panel","263":"/getting-started/sessions.html#how-sessions-relate-to-other-features","264":"/getting-started/skills.html#bot-skills","265":"/getting-started/skills.html#what-a-skill-looks-like","266":"/getting-started/skills.html#where-skills-come-from","267":"/getting-started/skills.html#skill-states","268":"/getting-started/skills.html#typical-examples","269":"/getting-started/skills.html#managing-skills-in-the-ui","270":"/getting-started/skills.html#add-skill","271":"/getting-started/skills.html#edit-skill","272":"/getting-started/skills.html#delete-skill","273":"/getting-started/skills.html#disable-enable","274":"/getting-started/skills.html#adopt","275":"/getting-started/skills.html#effective-skills-at-runtime","276":"/getting-started/skills.html#supermarket-and-imported-skills","277":"/getting-started/skills.html#recommended-workflow","278":"/getting-started/slash-commands.html#slash-commands","279":"/getting-started/slash-commands.html#command-model","280":"/getting-started/slash-commands.html#built-in-help","281":"/getting-started/slash-commands.html#parsing-rules","282":"/getting-started/slash-commands.html#permissions","283":"/getting-started/slash-commands.html#quick-reference","284":"/getting-started/slash-commands.html#top-level-commands","285":"/getting-started/slash-commands.html#resource-groups","286":"/getting-started/slash-commands.html#session-commands","287":"/getting-started/slash-commands.html#new","288":"/getting-started/slash-commands.html#stop","289":"/getting-started/slash-commands.html#status-and-inspection-commands","290":"/getting-started/slash-commands.html#status","291":"/getting-started/slash-commands.html#access","292":"/getting-started/slash-commands.html#usage","293":"/getting-started/slash-commands.html#heartbeat","294":"/getting-started/slash-commands.html#email","295":"/getting-started/slash-commands.html#configuration-commands","296":"/getting-started/slash-commands.html#settings","297":"/getting-started/slash-commands.html#model","298":"/getting-started/slash-commands.html#memory","299":"/getting-started/slash-commands.html#search","300":"/getting-started/slash-commands.html#browser","301":"/getting-started/slash-commands.html#mcp","302":"/getting-started/slash-commands.html#automation-and-filesystem-commands","303":"/getting-started/slash-commands.html#schedule","304":"/getting-started/slash-commands.html#skill","305":"/getting-started/slash-commands.html#fs","306":"/getting-started/slash-commands.html#context-compaction-command","307":"/getting-started/slash-commands.html#compact","308":"/getting-started/supermarket.html#supermarket","309":"/getting-started/supermarket.html#install-a-skill","310":"/getting-started/supermarket.html#install-an-mcp-template","311":"/getting-started/supermarket.html#contribute","312":"/#memoh-documentation","313":"/#start-here","314":"/#feature-guides","315":"/installation/docker.html#docker-installation","316":"/installation/docker.html#service-architecture","317":"/installation/docker.html#sparse-service","318":"/installation/docker.html#prerequisites","319":"/installation/docker.html#one-click-install-recommended","320":"/installation/docker.html#manual-install","321":"/installation/docker.html#china-mainland-mirror","322":"/installation/docker.html#access-points","323":"/installation/docker.html#configuration-reference","324":"/installation/docker.html#common-commands","325":"/installation/docker.html#environment-variables","326":"/memory-providers/builtin.html#built-in-memory-provider","327":"/memory-providers/builtin.html#memory-modes","328":"/memory-providers/builtin.html#how-sparse-mode-works","329":"/memory-providers/builtin.html#creating-a-built-in-provider","330":"/memory-providers/builtin.html#configuring-a-built-in-provider","331":"/memory-providers/builtin.html#managing-providers","332":"/memory-providers/builtin.html#infrastructure-requirements","333":"/memory-providers/builtin.html#off-mode","334":"/memory-providers/builtin.html#sparse-mode","335":"/memory-providers/builtin.html#dense-mode","336":"/memory-providers/builtin.html#assigning-a-memory-provider-to-a-bot","337":"/memory-providers/builtin.html#using-memory-after-setup","338":"/memory-providers/#memory-providers","339":"/memory-providers/#available-providers","340":"/memory-providers/#basic-flow","341":"/memory-providers/#next-steps","342":"/memory-providers/mem0.html#mem0-memory-provider","343":"/memory-providers/mem0.html#creating-a-mem0-provider","344":"/memory-providers/mem0.html#configuring-a-mem0-provider","345":"/memory-providers/mem0.html#assigning-a-mem0-provider-to-a-bot","346":"/memory-providers/mem0.html#usage","347":"/memory-providers/openviking.html#openviking-memory-provider","348":"/memory-providers/openviking.html#creating-an-openviking-provider","349":"/memory-providers/openviking.html#configuring-an-openviking-provider","350":"/memory-providers/openviking.html#assigning-an-openviking-provider-to-a-bot","351":"/memory-providers/openviking.html#usage","352":"/tts-providers/edge.html#edge-tts","353":"/tts-providers/edge.html#creating-an-edge-tts-provider","354":"/tts-providers/edge.html#configuring-the-model","355":"/tts-providers/edge.html#assigning-to-a-bot","356":"/tts-providers/edge.html#testing","357":"/tts-providers/#tts-providers","358":"/tts-providers/#basic-flow","359":"/tts-providers/#available-providers","360":"/tts-providers/#next-steps"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,1],"1":[4,2,71],"2":[4,2,1],"3":[4,5,44],"4":[2,5,32],"5":[6,5,46],"6":[4,5,67],"7":[3,5,49],"8":[5,5,49],"9":[3,5,52],"10":[3,5,61],"11":[3,2,42],"12":[12,1,1],"13":[1,12,74],"14":[2,12,215],"15":[1,12,29],"16":[1,12,54],"17":[1,12,65],"18":[1,12,104],"19":[3,12,83],"20":[1,12,62],"21":[1,1,12],"22":[3,1,24],"23":[6,3,45],"24":[4,3,41],"25":[4,3,25],"26":[2,3,24],"27":[3,1,16],"28":[6,3,28],"29":[5,3,19],"30":[8,3,42],"31":[4,3,23],"32":[2,3,25],"33":[2,1,111],"34":[4,2,41],"35":[3,2,72],"36":[3,1,31],"37":[7,3,74],"38":[4,3,67],"39":[5,3,31],"40":[2,3,49],"41":[2,3,6],"42":[3,1,33],"43":[8,3,50],"44":[4,3,33],"45":[4,3,32],"46":[2,3,13],"47":[3,1,16],"48":[6,3,46],"49":[4,3,37],"50":[7,3,44],"51":[2,3,36],"52":[2,3,6],"53":[4,1,24],"54":[6,4,34],"55":[5,4,13],"56":[4,4,31],"57":[7,4,56],"58":[5,4,30],"59":[3,1,24],"60":[6,3,29],"61":[5,3,37],"62":[6,3,60],"63":[6,3,27],"64":[8,3,35],"65":[4,3,30],"66":[7,3,58],"67":[2,3,21],"68":[3,1,28],"69":[6,3,55],"70":[4,3,30],"71":[7,3,53],"72":[2,3,35],"73":[5,1,31],"74":[6,5,38],"75":[7,5,53],"76":[6,5,38],"77":[5,5,22],"78":[2,5,29],"79":[4,1,17],"80":[6,4,26],"81":[4,4,44],"82":[4,4,27],"83":[2,4,26],"84":[2,4,6],"85":[3,1,24],"86":[7,3,19],"87":[6,3,55],"88":[4,3,20],"89":[2,3,11],"90":[2,3,29],"91":[3,1,35],"92":[4,3,63],"93":[1,3,1],"94":[2,4,43],"95":[2,4,54],"96":[2,4,19],"97":[3,4,56],"98":[2,3,12],"99":[6,4,28],"100":[2,4,60],"101":[2,4,26],"102":[2,4,49],"103":[5,3,63],"104":[1,3,1],"105":[6,4,19],"106":[5,4,30],"107":[5,4,31],"108":[3,4,37],"109":[3,4,27],"110":[3,3,40],"111":[2,1,34],"112":[3,2,55],"113":[3,2,22],"114":[2,4,106],"115":[6,2,79],"116":[3,2,138],"117":[3,2,48],"118":[3,2,57],"119":[3,2,51],"120":[4,2,46],"121":[2,2,25],"122":[3,2,44],"123":[2,1,45],"124":[3,2,45],"125":[4,2,27],"126":[4,2,81],"127":[2,5,15],"128":[6,2,33],"129":[2,2,55],"130":[3,2,47],"131":[2,2,27],"132":[2,1,18],"133":[3,2,30],"134":[2,2,14],"135":[2,3,64],"136":[2,2,1],"137":[4,4,24],"138":[3,4,33],"139":[5,4,32],"140":[6,4,21],"141":[7,4,35],"142":[6,4,33],"143":[1,2,20],"144":[2,1,45],"145":[3,2,52],"146":[3,2,41],"147":[2,2,69],"148":[2,2,13],"149":[5,3,33],"150":[3,3,22],"151":[3,2,68],"152":[4,2,44],"153":[4,2,55],"154":[2,2,24],"155":[3,1,35],"156":[4,3,30],"157":[1,3,16],"158":[2,4,52],"159":[2,3,55],"160":[4,3,53],"161":[3,7,50],"162":[2,7,79],"163":[2,7,54],"164":[1,3,32],"165":[3,4,18],"166":[3,4,17],"167":[2,4,23],"168":[4,3,16],"169":[1,7,21],"170":[1,7,21],"171":[1,7,29],"172":[2,3,37],"173":[4,1,18],"174":[6,4,28],"175":[2,4,13],"176":[3,5,38],"177":[3,4,15],"178":[3,5,41],"179":[3,4,34],"180":[2,4,45],"181":[3,1,24],"182":[1,3,17],"183":[3,4,31],"184":[2,4,42],"185":[3,3,17],"186":[2,6,39],"187":[1,6,20],"188":[4,3,36],"189":[2,1,24],"190":[3,2,38],"191":[1,2,41],"192":[3,2,46],"193":[2,5,29],"194":[2,2,36],"195":[2,1,21],"196":[4,2,43],"197":[2,2,11],"198":[5,4,54],"199":[5,4,36],"200":[2,2,56],"201":[1,2,53],"202":[2,2,51],"203":[2,2,32],"204":[3,1,22],"205":[1,3,42],"206":[3,3,67],"207":[1,3,14],"208":[3,4,25],"209":[4,4,25],"210":[2,3,85],"211":[1,3,49],"212":[1,3,40],"213":[2,3,28],"214":[4,3,58],"215":[2,3,48],"216":[3,1,44],"217":[2,3,40],"218":[3,5,52],"219":[2,5,67],"220":[3,3,18],"221":[2,5,46],"222":[2,5,47],"223":[2,3,38],"224":[2,3,45],"225":[3,3,51],"226":[1,6,48],"227":[2,6,47],"228":[3,6,32],"229":[2,3,37],"230":[2,3,39],"231":[3,3,37],"232":[2,3,21],"233":[2,1,33],"234":[4,2,37],"235":[2,2,77],"236":[3,2,67],"237":[2,2,31],"238":[2,2,8],"239":[5,4,46],"240":[3,4,42],"241":[2,2,48],"242":[3,2,52],"243":[2,1,23],"244":[4,2,28],"245":[3,2,53],"246":[2,2,1],"247":[5,4,44],"248":[3,4,21],"249":[6,2,22],"250":[2,2,35],"251":[1,1,36],"252":[3,1,43],"253":[2,1,87],"254":[3,3,83],"255":[6,1,69],"256":[8,7,61],"257":[4,7,39],"258":[2,1,1],"259":[2,2,51],"260":[2,2,15],"261":[2,2,15],"262":[3,1,68],"263":[6,1,75],"264":[2,1,31],"265":[5,2,74],"266":[4,2,80],"267":[2,2,49],"268":[2,4,43],"269":[5,2,8],"270":[2,6,20],"271":[2,6,25],"272":[2,6,22],"273":[2,6,34],"274":[1,6,50],"275":[4,2,40],"276":[4,2,51],"277":[2,2,38],"278":[2,1,53],"279":[2,2,73],"280":[3,2,45],"281":[2,2,59],"282":[1,2,30],"283":[2,2,1],"284":[3,4,16],"285":[2,4,62],"286":[2,2,1],"287":[2,3,66],"288":[2,3,36],"289":[4,2,1],"290":[2,5,43],"291":[2,5,45],"292":[2,5,16],"293":[2,5,12],"294":[2,5,16],"295":[2,2,1],"296":[2,3,50],"297":[2,3,31],"298":[2,3,20],"299":[2,3,20],"300":[2,3,20],"301":[2,3,23],"302":[4,2,1],"303":[2,5,39],"304":[2,5,13],"305":[2,5,28],"306":[3,2,1],"307":[2,5,52],"308":[1,1,13],"309":[3,1,26],"310":[4,1,45],"311":[1,1,10],"312":[2,1,40],"313":[2,2,51],"314":[2,2,56],"315":[2,1,45],"316":[2,2,62],"317":[2,4,143],"318":[1,2,5],"319":[5,2,112],"320":[2,2,97],"321":[3,4,48],"322":[2,2,37],"323":[2,2,94],"324":[2,2,33],"325":[2,2,58],"326":[4,1,44],"327":[2,4,38],"328":[4,5,58],"329":[5,4,25],"330":[5,4,46],"331":[2,6,15],"332":[2,4,1],"333":[2,6,15],"334":[2,6,44],"335":[2,6,30],"336":[6,4,37],"337":[4,4,38],"338":[2,1,33],"339":[2,2,44],"340":[2,2,31],"341":[2,2,28],"342":[3,1,28],"343":[4,3,25],"344":[4,3,44],"345":[6,3,24],"346":[1,3,28],"347":[3,1,26],"348":[4,3,25],"349":[4,3,36],"350":[7,3,24],"351":[1,3,28],"352":[2,1,26],"353":[5,2,25],"354":[3,2,58],"355":[4,2,24],"356":[1,2,26],"357":[2,1,64],"358":[2,2,48],"359":[2,2,21],"360":[2,2,12]},"averageFieldLength":[3.083102493074793,3.1994459833795013,38.41274238227144],"storedFields":{"0":{"title":"About Memoh","titles":[]},"1":{"title":"What Is Memoh?","titles":["About Memoh"]},"2":{"title":"What Makes Memoh Different","titles":["About Memoh"]},"3":{"title":"Multi-Bot And Multi-User","titles":["About Memoh","What Makes Memoh Different"]},"4":{"title":"Containerized Workspaces","titles":["About Memoh","What Makes Memoh Different"]},"5":{"title":"Long-Term Memory And Context Management","titles":["About Memoh","What Makes Memoh Different"]},"6":{"title":"Sessions And Discuss Mode","titles":["About Memoh","What Makes Memoh Different"]},"7":{"title":"Broad Channel Coverage","titles":["About Memoh","What Makes Memoh Different"]},"8":{"title":"Tools, Skills, MCP, And Supermarket","titles":["About Memoh","What Makes Memoh Different"]},"9":{"title":"Providers And Models","titles":["About Memoh","What Makes Memoh Different"]},"10":{"title":"Operations And UI","titles":["About Memoh","What Makes Memoh Different"]},"11":{"title":"Where To Start","titles":["About Memoh"]},"12":{"title":"Introduction to Memoh - The Case for an Always-On, Containerized Home Agent","titles":[]},"13":{"title":"Overview","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"14":{"title":"Story Time","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"15":{"title":"What","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"16":{"title":"Why","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"17":{"title":"How","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"18":{"title":"Features","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"19":{"title":"Compare to OpenClaw","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"20":{"title":"Conclusion","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"21":{"title":"Blogs","titles":[]},"22":{"title":"DingTalk Channel Configuration","titles":[]},"23":{"title":"Step 1: Create A DingTalk App","titles":["DingTalk Channel Configuration"]},"24":{"title":"Step 2: Configure Memoh","titles":["DingTalk Channel Configuration"]},"25":{"title":"Step 3: Verify Messaging","titles":["DingTalk Channel Configuration"]},"26":{"title":"Features Supported","titles":["DingTalk Channel Configuration"]},"27":{"title":"Discord Channel Configuration","titles":[]},"28":{"title":"Step 1: Create a Discord Application","titles":["Discord Channel Configuration"]},"29":{"title":"Step 2: Configure Bot Settings","titles":["Discord Channel Configuration"]},"30":{"title":"Step 3: Invite the Bot to Your Server","titles":["Discord Channel Configuration"]},"31":{"title":"Step 4: Configure Memoh","titles":["Discord Channel Configuration"]},"32":{"title":"Features Supported","titles":["Discord Channel Configuration"]},"33":{"title":"Channels Overview","titles":[]},"34":{"title":"WeChat vs WeChat Official Account","titles":["Channels Overview"]},"35":{"title":"General Setup Flow","titles":["Channels Overview"]},"36":{"title":"Matrix Channel Configuration","titles":[]},"37":{"title":"Step 1: Create a Matrix Bot Account","titles":["Matrix Channel Configuration"]},"38":{"title":"Step 2: Configure Memoh","titles":["Matrix Channel Configuration"]},"39":{"title":"Step 3: Invite the Bot","titles":["Matrix Channel Configuration"]},"40":{"title":"Features Supported","titles":["Matrix Channel Configuration"]},"41":{"title":"Official Resources","titles":["Matrix Channel Configuration"]},"42":{"title":"Misskey Channel Configuration","titles":[]},"43":{"title":"Step 1: Prepare A Misskey Account And Token","titles":["Misskey Channel Configuration"]},"44":{"title":"Step 2: Configure Memoh","titles":["Misskey Channel Configuration"]},"45":{"title":"Step 3: Start Chatting","titles":["Misskey Channel Configuration"]},"46":{"title":"Features Supported","titles":["Misskey Channel Configuration"]},"47":{"title":"QQ Channel Configuration","titles":[]},"48":{"title":"Step 1: Create a QQ Bot","titles":["QQ Channel Configuration"]},"49":{"title":"Step 2: Configure Memoh","titles":["QQ Channel Configuration"]},"50":{"title":"Step 3: Bind Your Identity (Optional)","titles":["QQ Channel Configuration"]},"51":{"title":"Features Supported","titles":["QQ Channel Configuration"]},"52":{"title":"Official Resources","titles":["QQ Channel Configuration"]},"53":{"title":"Feishu (Lark) Channel Configuration","titles":[]},"54":{"title":"Step 1: Create a Feishu App","titles":["Feishu (Lark) Channel Configuration"]},"55":{"title":"Step 2: Enable Bot Capability","titles":["Feishu (Lark) Channel Configuration"]},"56":{"title":"Step 3: Configure Permissions","titles":["Feishu (Lark) Channel Configuration"]},"57":{"title":"Step 4: Configure Events (Webhook Mode)","titles":["Feishu (Lark) Channel Configuration"]},"58":{"title":"Step 5: Publish Your App","titles":["Feishu (Lark) Channel Configuration"]},"59":{"title":"Slack Channel Configuration","titles":[]},"60":{"title":"Step 1: Create a Slack App","titles":["Slack Channel Configuration"]},"61":{"title":"Step 2: Enable Socket Mode","titles":["Slack Channel Configuration"]},"62":{"title":"Step 3: Configure Bot Token Scopes","titles":["Slack Channel Configuration"]},"63":{"title":"Step 4: Subscribe to Bot Events","titles":["Slack Channel Configuration"]},"64":{"title":"Step 5: Install the App to Your Workspace","titles":["Slack Channel Configuration"]},"65":{"title":"Step 6: Configure Memoh","titles":["Slack Channel Configuration"]},"66":{"title":"Step 7: Add the Bot to Conversations","titles":["Slack Channel Configuration"]},"67":{"title":"Features Supported","titles":["Slack Channel Configuration"]},"68":{"title":"Telegram Channel Configuration","titles":[]},"69":{"title":"Step 1: Create a Telegram Bot","titles":["Telegram Channel Configuration"]},"70":{"title":"Step 2: Configure Memoh","titles":["Telegram Channel Configuration"]},"71":{"title":"Step 3: Bind Your Identity (Optional)","titles":["Telegram Channel Configuration"]},"72":{"title":"Features Supported","titles":["Telegram Channel Configuration"]},"73":{"title":"WeChat Official Account Channel Configuration","titles":[]},"74":{"title":"Step 1: Prepare Official Account Credentials","titles":["WeChat Official Account Channel Configuration"]},"75":{"title":"Step 2: Add The Channel In Memoh","titles":["WeChat Official Account Channel Configuration"]},"76":{"title":"Step 3: Configure The WeChat Platform","titles":["WeChat Official Account Channel Configuration"]},"77":{"title":"Step 4: Enable And Test","titles":["WeChat Official Account Channel Configuration"]},"78":{"title":"Features Supported","titles":["WeChat Official Account Channel Configuration"]},"79":{"title":"WeCom (WeWork) Channel Configuration","titles":[]},"80":{"title":"Step 1: Create a WeCom Bot","titles":["WeCom (WeWork) Channel Configuration"]},"81":{"title":"Step 2: Configure Memoh","titles":["WeCom (WeWork) Channel Configuration"]},"82":{"title":"Step 3: Start Chatting","titles":["WeCom (WeWork) Channel Configuration"]},"83":{"title":"Features Supported","titles":["WeCom (WeWork) Channel Configuration"]},"84":{"title":"Official Resources","titles":["WeCom (WeWork) Channel Configuration"]},"85":{"title":"WeChat Channel Configuration","titles":[]},"86":{"title":"Step 1: Add WeChat Channel in Memoh","titles":["WeChat Channel Configuration"]},"87":{"title":"Step 2: Scan the QR Code","titles":["WeChat Channel Configuration"]},"88":{"title":"Step 3: Start Chatting","titles":["WeChat Channel Configuration"]},"89":{"title":"Optional Settings","titles":["WeChat Channel Configuration"]},"90":{"title":"Features Supported","titles":["WeChat Channel Configuration"]},"91":{"title":"Bot Access Control","titles":[]},"92":{"title":"Quick Start: ACL Presets","titles":["Bot Access Control"]},"93":{"title":"Concepts","titles":["Bot Access Control"]},"94":{"title":"Default Effect","titles":["Bot Access Control","Concepts"]},"95":{"title":"Subject Types","titles":["Bot Access Control","Concepts"]},"96":{"title":"Rule Effects","titles":["Bot Access Control","Concepts"]},"97":{"title":"Priority-Based Evaluation","titles":["Bot Access Control","Concepts"]},"98":{"title":"Managing Access","titles":["Bot Access Control"]},"99":{"title":"Start With A Preset, Then Refine","titles":["Bot Access Control","Managing Access"]},"100":{"title":"Adding Rules","titles":["Bot Access Control","Managing Access"]},"101":{"title":"Reordering Rules","titles":["Bot Access Control","Managing Access"]},"102":{"title":"Source Scope","titles":["Bot Access Control","Managing Access"]},"103":{"title":"What The Presets Actually Mean","titles":["Bot Access Control"]},"104":{"title":"Examples","titles":["Bot Access Control"]},"105":{"title":"Open Bot (Anyone Can Chat)","titles":["Bot Access Control","Examples"]},"106":{"title":"Private Bot with Selected Users","titles":["Bot Access Control","Examples"]},"107":{"title":"Open Bot with Blocked Users","titles":["Bot Access Control","Examples"]},"108":{"title":"Platform-Specific Access","titles":["Bot Access Control","Examples"]},"109":{"title":"Channel-Scoped Access","titles":["Bot Access Control","Examples"]},"110":{"title":"Debugging Access Decisions","titles":["Bot Access Control"]},"111":{"title":"Bot Management","titles":[]},"112":{"title":"Creating a Bot","titles":["Bot Management"]},"113":{"title":"Bot Detail Page","titles":["Bot Management"]},"114":{"title":"Tab Overview","titles":["Bot Management","Bot Detail Page"]},"115":{"title":"Configuring the Bot\'s Core Settings","titles":["Bot Management"]},"116":{"title":"General Tab Reference","titles":["Bot Management"]},"117":{"title":"Heartbeat Tab Reference","titles":["Bot Management"]},"118":{"title":"Compaction Tab Reference","titles":["Bot Management"]},"119":{"title":"Access And ACL","titles":["Bot Management"]},"120":{"title":"Discuss-Related Advanced Settings","titles":["Bot Management"]},"121":{"title":"Terminal Tab","titles":["Bot Management"]},"122":{"title":"Deleting a Bot","titles":["Bot Management"]},"123":{"title":"Browser Contexts","titles":[]},"124":{"title":"Concept: Browser Gateway","titles":["Browser Contexts"]},"125":{"title":"Creating a Browser Context","titles":["Browser Contexts"]},"126":{"title":"Configuring a Browser Context","titles":["Browser Contexts"]},"127":{"title":"Managing Contexts","titles":["Browser Contexts","Configuring a Browser Context"]},"128":{"title":"Assigning a Browser Context to a Bot","titles":["Browser Contexts"]},"129":{"title":"Bot Interaction","titles":["Browser Contexts"]},"130":{"title":"Browser Core Selection","titles":["Browser Contexts"]},"131":{"title":"Next Steps","titles":["Browser Contexts"]},"132":{"title":"Bot Channels","titles":[]},"133":{"title":"Concept: Unified Communication","titles":["Bot Channels"]},"134":{"title":"Supported Channels","titles":["Bot Channels"]},"135":{"title":"Platform Guides","titles":["Bot Channels","Supported Channels"]},"136":{"title":"Configuration Flow","titles":["Bot Channels"]},"137":{"title":"1. Adding a Channel","titles":["Bot Channels","Configuration Flow"]},"138":{"title":"2. Common Fields","titles":["Bot Channels","Configuration Flow"]},"139":{"title":"3. Special Case: Feishu Webhook","titles":["Bot Channels","Configuration Flow"]},"140":{"title":"4. Special Case: WeChat QR Login","titles":["Bot Channels","Configuration Flow"]},"141":{"title":"5. Special Case: WeChat Official Account Webhook","titles":["Bot Channels","Configuration Flow"]},"142":{"title":"6. Special Case: DingTalk Stream Connection","titles":["Bot Channels","Configuration Flow"]},"143":{"title":"Operations","titles":["Bot Channels"]},"144":{"title":"Context Compaction","titles":[]},"145":{"title":"Why It Exists","titles":["Context Compaction"]},"146":{"title":"What It Changes","titles":["Context Compaction"]},"147":{"title":"Automatic Compaction","titles":["Context Compaction"]},"148":{"title":"Immediate Compaction","titles":["Context Compaction"]},"149":{"title":"From The Session Status Panel","titles":["Context Compaction","Immediate Compaction"]},"150":{"title":"From Slash Commands","titles":["Context Compaction","Immediate Compaction"]},"151":{"title":"Status And Logs","titles":["Context Compaction"]},"152":{"title":"Relationship To context_window","titles":["Context Compaction"]},"153":{"title":"Context Compaction vs Memory Compaction","titles":["Context Compaction"]},"154":{"title":"Next Steps","titles":["Context Compaction"]},"155":{"title":"Bot Container Management","titles":[]},"156":{"title":"Concept: The Isolated Workspace","titles":["Bot Container Management"]},"157":{"title":"Operations","titles":["Bot Container Management"]},"158":{"title":"Lifecycle Actions","titles":["Bot Container Management","Operations"]},"159":{"title":"Container Information","titles":["Bot Container Management"]},"160":{"title":"Advanced: Provide CDI Devices","titles":["Bot Container Management"]},"161":{"title":"Configure CDI Devices","titles":["Bot Container Management","Advanced: Provide CDI Devices"]},"162":{"title":"Host Requirements","titles":["Bot Container Management","Advanced: Provide CDI Devices"]},"163":{"title":"Important Behavior","titles":["Bot Container Management","Advanced: Provide CDI Devices"]},"164":{"title":"Snapshots","titles":["Bot Container Management"]},"165":{"title":"Creating a Snapshot","titles":["Bot Container Management","Snapshots"]},"166":{"title":"Restoring a Snapshot","titles":["Bot Container Management","Snapshots"]},"167":{"title":"Managing Snapshots","titles":["Bot Container Management","Snapshots"]},"168":{"title":"Data Export and Import","titles":["Bot Container Management"]},"169":{"title":"Export","titles":["Bot Container Management","Data Export and Import"]},"170":{"title":"Import","titles":["Bot Container Management","Data Export and Import"]},"171":{"title":"Restore","titles":["Bot Container Management","Data Export and Import"]},"172":{"title":"Container Versioning","titles":["Bot Container Management"]},"173":{"title":"Email Providers and Bindings","titles":[]},"174":{"title":"Concept: Email as a Bot Channel","titles":["Email Providers and Bindings"]},"175":{"title":"Email Provider","titles":["Email Providers and Bindings"]},"176":{"title":"Creating a Provider","titles":["Email Providers and Bindings","Email Provider"]},"177":{"title":"Bot Email Bindings","titles":["Email Providers and Bindings"]},"178":{"title":"Adding a Binding","titles":["Email Providers and Bindings","Bot Email Bindings"]},"179":{"title":"Outbox and History","titles":["Email Providers and Bindings"]},"180":{"title":"Bot Interaction","titles":["Email Providers and Bindings"]},"181":{"title":"Bot Files Management","titles":[]},"182":{"title":"Operations","titles":["Bot Files Management"]},"183":{"title":"Browsing and Navigation","titles":["Bot Files Management","Operations"]},"184":{"title":"Managing Files","titles":["Bot Files Management","Operations"]},"185":{"title":"Viewing and Editing","titles":["Bot Files Management"]},"186":{"title":"Text Files","titles":["Bot Files Management","Viewing and Editing"]},"187":{"title":"Images","titles":["Bot Files Management","Viewing and Editing"]},"188":{"title":"Bot Interaction with Files","titles":["Bot Files Management"]},"189":{"title":"Bot Heartbeat","titles":[]},"190":{"title":"Concept: Scheduled Autonomy","titles":["Bot Heartbeat"]},"191":{"title":"Configuration","titles":["Bot Heartbeat"]},"192":{"title":"Logs and Monitoring","titles":["Bot Heartbeat"]},"193":{"title":"Managing Logs","titles":["Bot Heartbeat","Logs and Monitoring"]},"194":{"title":"Bot Interaction","titles":["Bot Heartbeat"]},"195":{"title":"MCP Connections","titles":[]},"196":{"title":"Concept: Extending Bot Capabilities","titles":["MCP Connections"]},"197":{"title":"Connection Types","titles":["MCP Connections"]},"198":{"title":"1. Stdio (Local Process)","titles":["MCP Connections","Connection Types"]},"199":{"title":"2. Remote (HTTP/SSE)","titles":["MCP Connections","Connection Types"]},"200":{"title":"OAuth Authentication","titles":["MCP Connections"]},"201":{"title":"Operations","titles":["MCP Connections"]},"202":{"title":"Tool Discovery","titles":["MCP Connections"]},"203":{"title":"Bot Interaction","titles":["MCP Connections"]},"204":{"title":"Bot Memory Management","titles":[]},"205":{"title":"Prerequisites","titles":["Bot Memory Management"]},"206":{"title":"Concept: Memory Retrieval","titles":["Bot Memory Management"]},"207":{"title":"Operations","titles":["Bot Memory Management"]},"208":{"title":"1. Creating Memories","titles":["Bot Memory Management","Operations"]},"209":{"title":"2. Searching and Managing","titles":["Bot Memory Management","Operations"]},"210":{"title":"Memory Compaction","titles":["Bot Memory Management"]},"211":{"title":"Rebuild","titles":["Bot Memory Management"]},"212":{"title":"Status","titles":["Bot Memory Management"]},"213":{"title":"Usage Statistics","titles":["Bot Memory Management"]},"214":{"title":"Memory vs Session Context","titles":["Bot Memory Management"]},"215":{"title":"Bot Interaction","titles":["Bot Memory Management"]},"216":{"title":"Providers And Models","titles":[]},"217":{"title":"Provider Basics","titles":["Providers And Models"]},"218":{"title":"Creating A Provider","titles":["Providers And Models","Provider Basics"]},"219":{"title":"Client Types","titles":["Providers And Models","Provider Basics"]},"220":{"title":"OAuth-Based Providers","titles":["Providers And Models"]},"221":{"title":"OpenAI Codex","titles":["Providers And Models","OAuth-Based Providers"]},"222":{"title":"GitHub Copilot","titles":["Providers And Models","OAuth-Based Providers"]},"223":{"title":"Importing Models","titles":["Providers And Models"]},"224":{"title":"Model Types","titles":["Providers And Models"]},"225":{"title":"Chat Model Configuration","titles":["Providers And Models"]},"226":{"title":"Compatibilities","titles":["Providers And Models","Chat Model Configuration"]},"227":{"title":"context_window","titles":["Providers And Models","Chat Model Configuration"]},"228":{"title":"Image Generation Models","titles":["Providers And Models","Chat Model Configuration"]},"229":{"title":"Embedding Models","titles":["Providers And Models"]},"230":{"title":"Speech Models","titles":["Providers And Models"]},"231":{"title":"Recommended Mental Model","titles":["Providers And Models"]},"232":{"title":"Next Steps","titles":["Providers And Models"]},"233":{"title":"Scheduled Tasks","titles":[]},"234":{"title":"Concept: Cron-Based Automation","titles":["Scheduled Tasks"]},"235":{"title":"Schedule Fields","titles":["Scheduled Tasks"]},"236":{"title":"Cron Pattern Reference","titles":["Scheduled Tasks"]},"237":{"title":"Viewing Schedules","titles":["Scheduled Tasks"]},"238":{"title":"Creating Schedules","titles":["Scheduled Tasks"]},"239":{"title":"Via the Bot (Conversational)","titles":["Scheduled Tasks","Creating Schedules"]},"240":{"title":"Via the API","titles":["Scheduled Tasks","Creating Schedules"]},"241":{"title":"Execution Flow","titles":["Scheduled Tasks"]},"242":{"title":"Schedule vs. Heartbeat","titles":["Scheduled Tasks"]},"243":{"title":"Search Providers","titles":[]},"244":{"title":"Concept: Real-Time Knowledge","titles":["Search Providers"]},"245":{"title":"Supported Search Engines","titles":["Search Providers"]},"246":{"title":"Configuration Flow","titles":["Search Providers"]},"247":{"title":"1. Adding a Search Provider","titles":["Search Providers","Configuration Flow"]},"248":{"title":"2. Managing Providers","titles":["Search Providers","Configuration Flow"]},"249":{"title":"Assigning a Search Provider to a Bot","titles":["Search Providers"]},"250":{"title":"Bot Interaction","titles":["Search Providers"]},"251":{"title":"Sessions","titles":[]},"252":{"title":"Concept: Conversation Isolation","titles":["Sessions"]},"253":{"title":"Session Types","titles":["Sessions"]},"254":{"title":"Chat vs Discuss","titles":["Sessions","Session Types"]},"255":{"title":"Starting a New Session with /new","titles":["Sessions"]},"256":{"title":"In External Channels (Telegram, Discord, Feishu, etc.)","titles":["Sessions","Starting a New Session with /new"]},"257":{"title":"In the Web UI","titles":["Sessions","Starting a New Session with /new"]},"258":{"title":"Managing Sessions","titles":["Sessions"]},"259":{"title":"Viewing Sessions","titles":["Sessions","Managing Sessions"]},"260":{"title":"Renaming Sessions","titles":["Sessions","Managing Sessions"]},"261":{"title":"Deleting Sessions","titles":["Sessions","Managing Sessions"]},"262":{"title":"Session Status Panel","titles":["Sessions"]},"263":{"title":"How Sessions Relate to Other Features","titles":["Sessions"]},"264":{"title":"Bot Skills","titles":[]},"265":{"title":"What A Skill Looks Like","titles":["Bot Skills"]},"266":{"title":"Where Skills Come From","titles":["Bot Skills"]},"267":{"title":"Skill States","titles":["Bot Skills"]},"268":{"title":"Typical Examples","titles":["Bot Skills","Skill States"]},"269":{"title":"Managing Skills In The UI","titles":["Bot Skills"]},"270":{"title":"Add Skill","titles":["Bot Skills","Managing Skills In The UI"]},"271":{"title":"Edit Skill","titles":["Bot Skills","Managing Skills In The UI"]},"272":{"title":"Delete Skill","titles":["Bot Skills","Managing Skills In The UI"]},"273":{"title":"Disable / Enable","titles":["Bot Skills","Managing Skills In The UI"]},"274":{"title":"Adopt","titles":["Bot Skills","Managing Skills In The UI"]},"275":{"title":"Effective Skills At Runtime","titles":["Bot Skills"]},"276":{"title":"Supermarket And Imported Skills","titles":["Bot Skills"]},"277":{"title":"Recommended Workflow","titles":["Bot Skills"]},"278":{"title":"Slash Commands","titles":[]},"279":{"title":"Command Model","titles":["Slash Commands"]},"280":{"title":"Built-in Help","titles":["Slash Commands"]},"281":{"title":"Parsing Rules","titles":["Slash Commands"]},"282":{"title":"Permissions","titles":["Slash Commands"]},"283":{"title":"Quick Reference","titles":["Slash Commands"]},"284":{"title":"Top-Level Commands","titles":["Slash Commands","Quick Reference"]},"285":{"title":"Resource Groups","titles":["Slash Commands","Quick Reference"]},"286":{"title":"Session Commands","titles":["Slash Commands"]},"287":{"title":"/new","titles":["Slash Commands","Session Commands"]},"288":{"title":"/stop","titles":["Slash Commands","Session Commands"]},"289":{"title":"Status And Inspection Commands","titles":["Slash Commands"]},"290":{"title":"/status","titles":["Slash Commands","Status And Inspection Commands"]},"291":{"title":"/access","titles":["Slash Commands","Status And Inspection Commands"]},"292":{"title":"/usage","titles":["Slash Commands","Status And Inspection Commands"]},"293":{"title":"/heartbeat","titles":["Slash Commands","Status And Inspection Commands"]},"294":{"title":"/email","titles":["Slash Commands","Status And Inspection Commands"]},"295":{"title":"Configuration Commands","titles":["Slash Commands"]},"296":{"title":"/settings","titles":["Slash Commands","Configuration Commands"]},"297":{"title":"/model","titles":["Slash Commands","Configuration Commands"]},"298":{"title":"/memory","titles":["Slash Commands","Configuration Commands"]},"299":{"title":"/search","titles":["Slash Commands","Configuration Commands"]},"300":{"title":"/browser","titles":["Slash Commands","Configuration Commands"]},"301":{"title":"/mcp","titles":["Slash Commands","Configuration Commands"]},"302":{"title":"Automation And Filesystem Commands","titles":["Slash Commands"]},"303":{"title":"/schedule","titles":["Slash Commands","Automation And Filesystem Commands"]},"304":{"title":"/skill","titles":["Slash Commands","Automation And Filesystem Commands"]},"305":{"title":"/fs","titles":["Slash Commands","Automation And Filesystem Commands"]},"306":{"title":"Context Compaction Command","titles":["Slash Commands"]},"307":{"title":"/compact","titles":["Slash Commands","Context Compaction Command"]},"308":{"title":"Supermarket","titles":[]},"309":{"title":"Install A Skill","titles":["Supermarket"]},"310":{"title":"Install An MCP Template","titles":["Supermarket"]},"311":{"title":"Contribute","titles":["Supermarket"]},"312":{"title":"Memoh Documentation","titles":[]},"313":{"title":"Start Here","titles":["Memoh Documentation"]},"314":{"title":"Feature Guides","titles":["Memoh Documentation"]},"315":{"title":"Docker Installation","titles":[]},"316":{"title":"Service Architecture","titles":["Docker Installation"]},"317":{"title":"Sparse Service","titles":["Docker Installation","Service Architecture"]},"318":{"title":"Prerequisites","titles":["Docker Installation"]},"319":{"title":"One-Click Install (Recommended)","titles":["Docker Installation"]},"320":{"title":"Manual Install","titles":["Docker Installation"]},"321":{"title":"China Mainland Mirror","titles":["Docker Installation","Manual Install"]},"322":{"title":"Access Points","titles":["Docker Installation"]},"323":{"title":"Configuration Reference","titles":["Docker Installation"]},"324":{"title":"Common Commands","titles":["Docker Installation"]},"325":{"title":"Environment Variables","titles":["Docker Installation"]},"326":{"title":"Built-in Memory Provider","titles":[]},"327":{"title":"Memory Modes","titles":["Built-in Memory Provider"]},"328":{"title":"How Sparse Mode Works","titles":["Built-in Memory Provider","Memory Modes"]},"329":{"title":"Creating a Built-in Provider","titles":["Built-in Memory Provider"]},"330":{"title":"Configuring a Built-in Provider","titles":["Built-in Memory Provider"]},"331":{"title":"Managing Providers","titles":["Built-in Memory Provider","Configuring a Built-in Provider"]},"332":{"title":"Infrastructure Requirements","titles":["Built-in Memory Provider"]},"333":{"title":"Off Mode","titles":["Built-in Memory Provider","Infrastructure Requirements"]},"334":{"title":"Sparse Mode","titles":["Built-in Memory Provider","Infrastructure Requirements"]},"335":{"title":"Dense Mode","titles":["Built-in Memory Provider","Infrastructure Requirements"]},"336":{"title":"Assigning a Memory Provider to a Bot","titles":["Built-in Memory Provider"]},"337":{"title":"Using Memory After Setup","titles":["Built-in Memory Provider"]},"338":{"title":"Memory Providers","titles":[]},"339":{"title":"Available Providers","titles":["Memory Providers"]},"340":{"title":"Basic Flow","titles":["Memory Providers"]},"341":{"title":"Next Steps","titles":["Memory Providers"]},"342":{"title":"Mem0 Memory Provider","titles":[]},"343":{"title":"Creating a Mem0 Provider","titles":["Mem0 Memory Provider"]},"344":{"title":"Configuring a Mem0 Provider","titles":["Mem0 Memory Provider"]},"345":{"title":"Assigning a Mem0 Provider to a Bot","titles":["Mem0 Memory Provider"]},"346":{"title":"Usage","titles":["Mem0 Memory Provider"]},"347":{"title":"OpenViking Memory Provider","titles":[]},"348":{"title":"Creating an OpenViking Provider","titles":["OpenViking Memory Provider"]},"349":{"title":"Configuring an OpenViking Provider","titles":["OpenViking Memory Provider"]},"350":{"title":"Assigning an OpenViking Provider to a Bot","titles":["OpenViking Memory Provider"]},"351":{"title":"Usage","titles":["OpenViking Memory Provider"]},"352":{"title":"Edge TTS","titles":[]},"353":{"title":"Creating an Edge TTS Provider","titles":["Edge TTS"]},"354":{"title":"Configuring the Model","titles":["Edge TTS"]},"355":{"title":"Assigning to a Bot","titles":["Edge TTS"]},"356":{"title":"Testing","titles":["Edge TTS"]},"357":{"title":"TTS Providers","titles":[]},"358":{"title":"Basic Flow","titles":["TTS Providers"]},"359":{"title":"Available Providers","titles":["TTS Providers"]},"360":{"title":"Next Steps","titles":["TTS Providers"]}},"dirtCount":0,"index":[["=",{"2":{"321":1,"334":2,"335":1}}],["~",{"2":{"319":2}}],["|",{"2":{"319":6}}],["ˈmemoʊ",{"2":{"312":1}}],["`",{"2":{"284":2}}],["│",{"2":{"236":15}}],["┌─────────────",{"2":{"236":5}}],["96kbitrate",{"2":{"354":1}}],["9",{"2":{"235":2,"236":2,"279":1,"281":1,"303":1}}],["8088",{"2":{"349":1}}],["8083",{"2":{"322":1}}],["8080",{"2":{"322":1,"323":1}}],["8082",{"2":{"322":1}}],["8085",{"2":{"317":1,"334":1}}],["8",{"2":{"210":1,"236":3,"239":1,"240":1}}],["00",{"2":{"235":1,"236":3}}],["0",{"2":{"210":3,"235":1,"236":9,"240":1,"279":1,"281":1,"303":1,"319":3,"325":1,"354":5}}],["zh",{"2":{"126":1,"296":1}}],["zone",{"2":{"114":1,"122":1}}],["→",{"2":{"97":2,"102":3}}],["企业微信",{"2":{"79":1}}],["7",{"0":{"66":1},"2":{"292":1}}],["6334",{"2":{"334":1,"335":1}}],["6",{"0":{"65":1,"142":1},"2":{"225":1,"236":1,"319":3,"325":1}}],["50+",{"2":{"352":1,"354":1,"359":1}}],["59",{"2":{"236":1}}],["5",{"0":{"58":1,"64":1,"141":1},"2":{"48":1,"210":1,"354":1}}],["创建机器人",{"2":{"48":1}}],["x26",{"2":{"324":2}}],["xhigh",{"2":{"226":1}}],["xoxb",{"2":{"64":2,"65":1}}],["xapp",{"2":{"61":1,"64":1,"65":1}}],["x3c",{"2":{"37":3}}],["x",{"2":{"37":1}}],["48kbitrate",{"2":{"354":1}}],["4o",{"2":{"225":1,"297":2}}],["4",{"0":{"31":1,"57":1,"63":1,"77":1,"140":1},"2":{"225":1}}],["32",{"2":{"320":1}}],["31",{"2":{"236":1}}],["30",{"2":{"38":1,"191":1,"236":2,"296":1}}],["3",{"0":{"25":1,"30":1,"39":1,"45":1,"50":1,"56":1,"62":1,"71":1,"76":1,"82":1,"88":1,"139":1},"2":{"210":1,"316":1,"354":1}}],["100",{"2":{"354":1}}],["16bit",{"2":{"354":1}}],["12",{"2":{"236":1}}],["123456789",{"2":{"69":1}}],["1536",{"2":{"229":1}}],["1",{"0":{"23":1,"28":1,"37":1,"43":1,"48":1,"54":1,"60":1,"69":1,"74":1,"80":1,"86":1,"137":1,"198":1,"208":1,"247":1},"2":{"236":4,"322":1,"354":1}}],["+100",{"2":{"354":1}}],["+",{"2":{"19":1,"268":1,"317":1,"327":2,"354":1}}],["jwt",{"2":{"319":2,"320":1,"323":1}}],["jina",{"2":{"245":1}}],["jpg",{"2":{"187":1}}],["js",{"2":{"186":1}}],["json",{"2":{"37":1,"201":3,"240":1,"323":1}}],["join",{"2":{"27":1,"36":1,"38":2,"39":2,"40":1,"254":1}}],["jobs",{"2":{"19":1}}],["just",{"2":{"14":1,"85":1,"92":1,"180":1,"268":1,"278":1}}],["256",{"2":{"354":1}}],["256+",{"2":{"352":1,"359":1}}],["20",{"2":{"236":1}}],["2026",{"2":{"13":1,"21":1}}],["23",{"2":{"236":1}}],["2",{"0":{"24":1,"29":1,"38":1,"44":1,"49":1,"55":1,"61":1,"70":1,"75":1,"81":1,"87":1,"138":1,"199":1,"209":1,"248":1},"2":{"322":1,"354":1}}],["24khz",{"2":{"354":3}}],["24",{"2":{"18":1}}],["known",{"2":{"164":1,"281":1}}],["know",{"2":{"50":1,"71":1,"223":1}}],["knowledge",{"0":{"244":1},"2":{"15":1,"131":1,"215":1,"243":1}}],["keyword",{"2":{"317":1,"328":1}}],["keys",{"2":{"138":1,"215":1}}],["key",{"2":{"23":1,"24":1,"74":1,"75":1,"76":1,"87":1,"142":1,"176":1,"198":1,"217":1,"218":1,"220":1,"221":1,"247":1,"262":1,"279":1,"317":1,"323":1,"328":1,"339":1,"344":2,"349":2,"352":1,"359":1}}],["keeps",{"2":{"228":1}}],["keeping",{"2":{"144":1}}],["keep",{"2":{"14":1,"20":2,"37":1,"60":1,"69":1,"141":1,"193":1,"277":1}}],["kept",{"2":{"13":1}}],["kinds",{"2":{"95":1,"253":1}}],["kind",{"2":{"14":1}}],["yml",{"2":{"320":1,"321":2}}],["yaml",{"2":{"265":2}}],["yandex",{"2":{"245":1}}],["y",{"2":{"198":1,"319":1}}],["yet",{"2":{"115":1,"131":1}}],["yes",{"2":{"38":3,"81":2,"344":1,"349":1}}],["year",{"2":{"13":1,"14":1}}],["yourself",{"2":{"264":1,"342":1}}],["yours",{"2":{"20":1}}],["your",{"0":{"30":1,"50":1,"58":1,"64":1,"71":1},"2":{"14":1,"15":1,"18":1,"23":3,"24":1,"27":1,"30":1,"31":2,"33":3,"34":1,"35":2,"36":2,"37":2,"38":2,"39":1,"43":1,"44":1,"47":1,"48":1,"49":2,"50":3,"53":1,"54":1,"56":1,"57":2,"59":1,"65":3,"68":1,"69":1,"70":2,"71":4,"74":1,"75":1,"79":2,"81":1,"82":1,"85":1,"86":1,"87":2,"91":1,"108":1,"109":1,"115":1,"128":1,"132":2,"134":1,"139":1,"157":1,"169":1,"170":1,"173":1,"174":1,"175":1,"177":1,"184":2,"188":1,"189":1,"195":1,"205":2,"207":1,"219":1,"228":1,"243":1,"244":1,"245":2,"247":1,"249":1,"252":1,"274":1,"280":1,"315":1,"319":1,"320":1,"324":1,"336":1,"342":1,"345":1,"350":1}}],["you",{"2":{"1":1,"6":1,"10":1,"14":5,"17":1,"20":1,"23":1,"24":1,"30":1,"33":1,"37":1,"43":1,"50":2,"60":1,"61":1,"62":2,"66":1,"68":1,"69":2,"71":2,"74":2,"75":1,"87":1,"91":1,"92":5,"102":1,"103":2,"113":2,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"127":1,"128":1,"131":1,"132":1,"133":1,"142":1,"144":1,"148":1,"149":1,"151":1,"152":1,"161":2,"162":1,"163":1,"164":1,"171":1,"178":1,"181":1,"185":1,"189":2,"195":1,"196":1,"200":2,"202":2,"210":1,"211":3,"214":2,"216":2,"221":1,"222":1,"223":4,"224":1,"227":1,"228":1,"231":1,"233":1,"236":1,"239":1,"240":1,"243":1,"247":1,"249":1,"252":2,"254":1,"255":1,"256":4,"257":1,"261":1,"263":1,"264":2,"265":1,"266":1,"268":4,"271":1,"273":1,"274":3,"276":1,"277":2,"287":1,"288":3,"290":1,"307":1,"310":1,"315":1,"317":2,"320":1,"321":1,"331":1,"336":1,"337":1,"345":1,"350":1,"357":1}}],["v0",{"2":{"319":1,"325":1}}],["v2",{"2":{"318":1}}],["vue",{"2":{"316":1}}],["voice",{"2":{"230":1,"354":3,"356":1,"357":2,"358":1}}],["voices",{"2":{"116":1,"352":1,"354":1,"359":1}}],["volume",{"2":{"176":1}}],["v1",{"2":{"57":1,"317":1,"328":1,"334":1}}],["v3",{"2":{"37":1}}],["view",{"2":{"167":1,"193":1,"200":1,"202":1,"263":1,"285":8,"324":1}}],["viewport",{"2":{"116":1,"123":1,"126":4}}],["viewing",{"0":{"185":1,"237":1,"259":1},"1":{"186":1,"187":1},"2":{"48":1,"278":1}}],["vision",{"2":{"225":1,"226":1}}],["visible",{"2":{"162":1,"254":1,"275":1}}],["visibility",{"2":{"10":1}}],["visual",{"2":{"51":1,"90":1,"116":1,"187":1}}],["via",{"0":{"239":1,"240":1},"2":{"32":1,"33":4,"36":1,"37":1,"53":1,"82":1,"85":1,"102":1,"109":1,"111":1,"156":1,"158":1,"180":2,"198":1,"230":1,"315":1,"316":1,"339":1,"341":1}}],["var",{"2":{"162":1,"320":1}}],["variable",{"2":{"319":1,"325":1}}],["variables",{"0":{"325":1},"2":{"198":1,"319":1}}],["varies",{"2":{"43":1}}],["various",{"2":{"18":1,"111":1,"132":1,"243":1}}],["valuable",{"2":{"152":1}}],["values",{"2":{"130":1,"210":1,"279":1}}],["value",{"2":{"13":1,"198":1,"210":1,"236":1,"279":1}}],["valid",{"2":{"130":1,"162":1,"254":1}}],["validity",{"2":{"87":1}}],["vendor",{"2":{"162":2}}],["very",{"2":{"305":1}}],["version=v0",{"2":{"319":2}}],["versions",{"2":{"172":1,"319":1,"325":1}}],["versioning",{"0":{"172":1},"2":{"164":1}}],["version",{"2":{"58":2,"172":5,"267":1,"280":1,"319":2,"325":1}}],["versioned",{"2":{"17":1}}],["verification",{"2":{"57":1,"163":1,"222":1}}],["verify",{"0":{"25":1},"2":{"76":1,"151":1,"212":1}}],["vectors",{"2":{"206":1,"317":1,"327":1,"328":1,"339":1}}],["vector",{"2":{"9":1,"17":1,"211":1,"213":1,"224":1,"229":2,"316":1,"317":1,"320":1,"323":1,"327":1,"330":1,"334":1}}],["vs",{"0":{"34":1,"153":1,"214":1,"242":1,"254":1},"2":{"11":1,"313":1}}],["null",{"2":{"240":1}}],["number",{"2":{"159":1,"213":1,"235":2,"277":1}}],["npx",{"2":{"198":1}}],["nvidia",{"2":{"161":2,"162":2}}],["navigation",{"0":{"183":1},"2":{"126":1,"129":1,"183":1}}],["navigating",{"2":{"124":1}}],["navigate",{"2":{"80":1,"112":1,"115":1,"122":1,"125":1,"128":1,"176":1,"237":1,"247":1,"249":1,"329":1,"336":1,"343":1,"345":1,"348":1,"350":1,"353":1,"358":1}}],["narrow",{"2":{"99":1}}],["named",{"2":{"265":1,"266":1,"357":1}}],["namespace",{"2":{"323":1}}],["names",{"2":{"62":1,"161":2,"162":1,"202":1,"277":1}}],["name",{"2":{"28":1,"54":1,"69":2,"112":2,"125":2,"126":2,"162":2,"165":1,"201":1,"218":2,"225":2,"235":2,"237":1,"240":1,"247":2,"259":1,"265":5,"266":2,"267":3,"268":2,"272":2,"274":1,"297":5,"298":1,"299":1,"300":1,"301":2,"303":6,"329":2,"330":1,"343":2,"348":2}}],["natural",{"2":{"13":1,"235":1,"239":1,"242":1}}],["night",{"2":{"14":1}}],["noise",{"2":{"210":1,"214":1}}],["noisy",{"2":{"153":1}}],["nobody",{"2":{"92":1}}],["now",{"2":{"88":1,"118":1,"149":2,"228":1,"262":1,"355":1,"358":1}}],["none",{"2":{"226":1,"285":8,"327":1}}],["non",{"2":{"26":1,"78":1}}],["no",{"2":{"18":1,"38":2,"46":2,"48":1,"66":1,"81":1,"87":1,"94":1,"97":1,"105":1,"119":1,"127":1,"135":2,"209":1,"256":1,"261":1,"290":1,"317":1,"319":1,"320":1,"327":1,"328":1,"331":1,"333":1,"336":1,"344":3,"349":1,"352":1,"359":1}}],["node",{"2":{"14":1,"17":1}}],["notable",{"2":{"220":1}}],["notifications",{"2":{"190":1}}],["noticed",{"2":{"14":1}}],["notes",{"2":{"78":1,"116":1,"135":1,"245":1}}],["note",{"2":{"26":1,"37":1,"80":1}}],["not",{"2":{"13":1,"14":3,"17":1,"24":1,"78":1,"102":1,"103":1,"115":1,"116":1,"118":1,"131":1,"142":1,"144":1,"146":1,"161":1,"162":1,"163":1,"205":1,"219":2,"230":2,"231":1,"255":1,"267":1,"274":1,"275":1,"278":1,"281":1,"287":1,"315":1,"320":1,"324":1,"336":1}}],["normally",{"2":{"162":1}}],["normal",{"2":{"9":1,"24":1,"116":2,"120":1,"220":1,"221":1,"231":1,"254":2,"255":1,"276":1,"281":1,"287":1}}],["neural",{"2":{"316":1,"317":3,"327":1,"328":1,"334":1,"339":1}}],["nerdctl",{"2":{"315":1}}],["next",{"0":{"131":1,"154":1,"232":1,"341":1,"360":1},"2":{"60":1,"145":1,"167":1}}],["needing",{"2":{"317":1}}],["needed",{"2":{"87":1,"105":1,"209":1,"228":1}}],["needs",{"2":{"43":1,"66":1,"145":1,"160":1,"163":1,"217":1}}],["need",{"2":{"17":1,"23":1,"24":1,"61":1,"69":1,"74":1,"120":1,"142":1,"146":1,"161":1,"231":1,"247":1,"261":1,"288":1,"315":1,"317":1,"347":1}}],["newest",{"2":{"290":1}}],["newer",{"2":{"145":1}}],["news",{"2":{"235":2,"279":1,"281":1,"303":3}}],["newbot",{"2":{"69":1}}],["new",{"0":{"255":2,"287":1},"1":{"256":2,"257":2},"2":{"6":1,"14":1,"28":1,"37":1,"60":1,"71":1,"80":1,"101":1,"119":1,"183":1,"208":1,"252":1,"255":6,"256":5,"257":1,"279":2,"284":1,"287":4,"311":1}}],["network",{"2":{"4":1,"18":1,"19":1,"199":1}}],["qdrant",{"2":{"316":3,"317":2,"320":2,"321":1,"323":2,"327":3,"330":2,"334":4,"335":5}}],["queries",{"2":{"317":1}}],["question",{"2":{"250":1}}],["questions",{"2":{"13":2}}],["quality",{"2":{"210":1,"317":1,"327":2,"328":1}}],["quarter",{"2":{"13":1}}],["quoted",{"2":{"281":1}}],["quotes",{"2":{"279":1}}],["quot",{"2":{"72":2,"156":2,"180":2,"190":2,"194":4,"214":2,"235":4,"239":2,"242":2,"247":2}}],["quickly",{"2":{"138":1,"183":1,"193":1,"201":2,"212":1,"317":1}}],["quick",{"0":{"92":1,"283":1},"1":{"284":1,"285":1},"2":{"33":1,"112":1}}],["quietly",{"2":{"14":1}}],["qr",{"0":{"87":1,"140":1},"2":{"7":1,"33":1,"34":1,"35":1,"73":1,"85":1,"87":5,"88":1,"135":2,"140":2}}],["qq",{"0":{"47":1,"48":1},"1":{"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"1":1,"7":1,"33":1,"47":2,"48":2,"49":1,"50":3,"52":2,"114":1,"135":2,"312":1}}],["duplicates",{"2":{"266":1}}],["duckduckgo",{"2":{"245":1}}],["duration",{"2":{"192":1}}],["durable",{"2":{"5":1,"16":1,"17":1,"20":1}}],["during",{"2":{"117":1,"130":1,"147":1,"158":1,"192":1,"194":2,"202":1,"215":1,"244":1,"263":1,"275":1,"317":1,"326":1}}],["dynamic",{"2":{"137":1}}],["draft",{"2":{"196":1,"310":1}}],["drag",{"2":{"101":1}}],["drivers",{"2":{"162":1}}],["driven",{"2":{"10":1}}],["dropdown",{"2":{"128":1,"249":1,"336":1,"345":1,"350":1,"355":1}}],["dropped",{"2":{"101":1}}],["d",{"2":{"37":1,"317":1,"320":2,"321":1,"324":2,"334":1,"335":1}}],["dms",{"2":{"67":1,"103":1}}],["dm",{"2":{"33":1,"66":1,"135":1}}],["daily",{"2":{"235":1,"239":1,"240":1,"279":1,"313":1}}],["date",{"2":{"213":1}}],["data",{"0":{"168":1},"1":{"169":1,"170":1,"171":1},"2":{"114":1,"122":2,"159":2,"168":1,"169":2,"170":1,"171":1,"190":1,"196":1,"198":1,"233":1,"266":5,"294":1,"319":3,"323":1}}],["database",{"2":{"18":1,"114":1,"316":2,"320":1,"323":2,"334":1}}],["danger",{"2":{"114":1,"122":1}}],["dashboard",{"2":{"60":1}}],["days",{"2":{"210":1,"292":1}}],["day",{"2":{"10":1,"16":1,"236":5,"239":1,"337":2,"346":2,"351":2}}],["db",{"2":{"17":1,"320":3}}],["domain",{"2":{"176":1}}],["document",{"2":{"317":1}}],["documentation",{"0":{"312":1},"1":{"313":1,"314":1},"2":{"52":1,"84":1}}],["docs",{"2":{"265":1}}],["docker",{"0":{"315":1},"1":{"316":1,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1},"2":{"11":1,"130":1,"159":1,"313":1,"315":2,"316":1,"317":1,"318":2,"319":6,"320":5,"321":5,"324":6,"325":2,"334":1}}],["downloaded",{"2":{"317":1}}],["downloads",{"2":{"276":1}}],["download",{"2":{"184":1}}],["downloadable",{"2":{"169":1}}],["down",{"2":{"29":1,"158":1,"324":1}}],["don",{"2":{"14":2,"16":2,"317":1}}],["doing",{"2":{"14":1}}],["doesn",{"2":{"14":1,"158":1}}],["does",{"2":{"13":1,"146":1,"161":1,"162":1,"163":1,"180":1,"235":1,"281":1,"317":1}}],["do",{"2":{"11":1,"24":1,"37":1,"142":1,"230":1,"231":2,"278":1,"315":1}}],["debug",{"2":{"323":1}}],["debugging",{"0":{"110":1},"2":{"291":1}}],["dedicate",{"2":{"116":1}}],["dedicated",{"2":{"33":1,"117":1,"118":1,"152":1,"155":1,"181":1,"347":1}}],["demos",{"2":{"103":1}}],["determined",{"2":{"130":1}}],["determines",{"2":{"97":1}}],["detail",{"0":{"113":1},"1":{"114":1},"2":{"65":1,"70":1,"113":1,"115":1,"122":1,"134":1,"145":1,"151":1,"157":1,"177":1,"181":1,"191":1,"197":1,"207":1,"237":1}}],["details",{"2":{"58":1,"202":1,"310":1,"317":1}}],["detailed",{"2":{"35":1,"192":1,"280":1}}],["dense",{"0":{"335":1},"2":{"206":1,"316":1,"317":1,"327":2,"328":1,"330":3,"339":1}}],["density",{"2":{"14":2}}],["denied",{"2":{"94":1,"107":1,"108":1,"291":1}}],["deny",{"2":{"91":1,"92":6,"94":2,"95":1,"96":1,"97":1,"100":1,"103":2,"106":2,"107":1,"108":1,"296":1}}],["definitions",{"2":{"323":1}}],["defined",{"2":{"259":1}}],["defines",{"2":{"235":1}}],["define",{"2":{"91":1,"92":1,"114":1,"116":1,"216":1,"338":1}}],["defaults",{"2":{"255":1,"287":1,"319":2,"330":1,"344":1}}],["default",{"0":{"94":1},"2":{"18":1,"19":1,"38":2,"49":2,"81":1,"92":5,"94":1,"97":1,"99":1,"105":2,"106":1,"107":1,"110":1,"114":1,"119":2,"126":1,"130":1,"191":1,"228":1,"236":1,"253":2,"254":1,"255":4,"279":1,"285":1,"287":4,"296":1,"320":1,"322":1,"323":2,"325":1,"330":1,"339":1,"341":1,"353":1,"354":4,"358":1}}],["desirable",{"2":{"254":1}}],["desired",{"2":{"166":1}}],["designed",{"2":{"10":1,"245":1}}],["described",{"2":{"120":1}}],["descriptions",{"2":{"202":1,"277":1}}],["description",{"2":{"38":1,"54":1,"81":1,"89":1,"95":1,"114":1,"116":1,"117":1,"118":1,"126":1,"138":1,"147":1,"191":1,"198":1,"199":1,"218":1,"225":1,"229":1,"235":2,"240":1,"253":1,"265":2,"284":1,"285":1,"296":1,"316":1,"323":1,"325":1,"330":1,"344":1,"349":1,"354":1,"359":1}}],["declare",{"2":{"226":1}}],["decay",{"2":{"210":1}}],["decisions",{"0":{"110":1}}],["decides",{"2":{"253":1}}],["decide",{"2":{"6":1,"14":1,"149":1,"226":1,"227":1,"254":1}}],["decentralized",{"2":{"33":1,"36":1,"135":1}}],["developer",{"2":{"23":1,"28":1,"30":1,"55":1}}],["devices",{"0":{"160":1,"161":1},"1":{"161":1,"162":1,"163":1},"2":{"159":2,"160":3,"161":1,"162":2,"163":2}}],["device",{"2":{"14":1,"17":1,"19":1,"126":2,"160":1,"161":2,"162":6,"163":1,"219":1,"222":1}}],["deployment",{"2":{"34":1,"74":1,"313":1}}],["deployable",{"2":{"17":1}}],["depending",{"2":{"23":1,"35":1,"108":1,"206":1,"247":1}}],["dependable",{"2":{"16":1}}],["delegates",{"2":{"253":1}}],["delegated",{"2":{"3":1,"6":1,"8":1,"263":1}}],["deletes",{"2":{"301":1}}],["delete",{"0":{"272":1},"2":{"122":1,"127":1,"143":1,"146":1,"158":1,"167":1,"178":1,"184":1,"201":2,"209":1,"248":2,"257":1,"272":1,"277":1,"282":1,"301":2,"303":2,"331":1,"337":1}}],["deleting",{"0":{"122":1,"261":1},"2":{"201":1,"255":1,"261":1,"272":1,"273":1,"287":1}}],["delivered",{"2":{"241":1}}],["deliver",{"2":{"234":1}}],["delivering",{"2":{"76":1}}],["delivery",{"2":{"74":1,"176":1,"179":1}}],["deliberative",{"2":{"6":1}}],["digest",{"2":{"239":1,"240":1}}],["dimensions",{"2":{"229":1}}],["diagnose",{"2":{"151":1}}],["directories",{"2":{"183":1,"184":1,"266":1}}],["directory",{"2":{"171":1,"182":1,"183":1,"198":1,"265":1,"268":1,"270":1,"272":1,"274":1,"276":1,"319":2,"323":1}}],["direct",{"2":{"33":1,"36":1,"39":1,"40":1,"50":1,"51":1,"59":1,"62":2,"66":1,"67":1,"83":1,"90":1,"103":1,"218":1,"254":3,"287":1}}],["directly",{"2":{"11":1,"82":1,"85":1,"88":1,"121":1,"139":1,"181":1,"187":1,"209":1,"253":1,"266":1,"271":1,"321":1}}],["differ",{"2":{"117":1,"287":1}}],["differs",{"2":{"19":1}}],["different",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"2":{"3":1,"5":1,"34":1,"73":1,"133":1,"153":1,"191":1,"210":1,"214":1,"253":1,"256":1,"307":1,"326":1}}],["did",{"2":{"14":1,"117":1,"263":1}}],["displays",{"2":{"159":1,"213":1}}],["display",{"2":{"69":1,"112":1,"125":1,"126":1,"218":1,"225":1,"235":1,"329":1,"343":1,"348":1}}],["displayed",{"2":{"48":1,"87":1}}],["disable",{"0":{"273":1},"2":{"117":1,"118":1,"138":1,"143":1,"147":1,"201":1,"268":1,"273":1,"277":1,"282":1,"303":3}}],["disabled",{"2":{"10":1,"138":1,"241":1,"267":2,"273":1,"275":1}}],["disappears",{"2":{"14":1}}],["discovered",{"2":{"266":5,"268":1,"272":1,"274":1,"276":2}}],["discovers",{"2":{"202":1,"276":1}}],["discovery",{"0":{"202":1},"2":{"310":1}}],["discover",{"2":{"44":1,"162":1,"200":1,"203":1,"280":1}}],["discord",{"0":{"27":1,"28":1,"256":1},"1":{"28":1,"29":1,"30":1,"31":1,"32":1},"2":{"1":1,"7":1,"27":1,"28":1,"30":1,"31":1,"32":1,"33":1,"95":2,"102":1,"114":1,"133":1,"135":2,"255":1,"287":1,"312":1}}],["discuss",{"0":{"6":1,"120":1,"254":1},"2":{"6":1,"11":1,"120":3,"253":2,"254":3,"255":5,"256":1,"257":1,"259":1,"263":1,"284":1,"287":6,"313":1}}],["distinction",{"2":{"5":1,"224":1}}],["distinguishes",{"2":{"7":1,"224":1,"266":1}}],["distinguish",{"2":{"3":1}}],["dingtalk",{"0":{"22":1,"23":1,"142":1},"1":{"23":1,"24":1,"25":1,"26":1},"2":{"1":1,"7":1,"22":2,"23":2,"24":2,"25":1,"26":1,"33":1,"114":1,"135":2,"142":1,"312":1}}],["guidance",{"2":{"264":1}}],["guides",{"0":{"135":1,"314":1},"2":{"35":1,"314":1}}],["guide",{"2":{"30":1,"57":2,"68":1,"69":1,"73":1,"135":1,"227":1}}],["gpt",{"2":{"225":1,"297":2}}],["gpu=all",{"2":{"161":2}}],["gpu=0",{"2":{"161":2}}],["gpus",{"2":{"160":1}}],["gpu",{"2":{"159":1,"161":3,"162":1}}],["gather",{"2":{"129":1}}],["gateways",{"2":{"33":1}}],["gateway",{"0":{"124":1},"2":{"29":1,"123":1,"124":1,"316":1,"322":1,"323":2}}],["global",{"2":{"95":1,"245":1}}],["g",{"2":{"37":2,"38":2,"69":3,"95":2,"176":1,"183":1,"186":1,"187":1,"198":2,"199":1,"211":1,"235":3,"241":1,"247":2,"319":1,"325":1,"349":1,"357":2,"358":1}}],["gmail",{"2":{"33":1}}],["gt",{"2":{"30":1,"50":1,"54":1,"55":1,"56":1,"57":1,"58":1,"71":1,"80":1,"266":1,"280":3,"297":6,"298":1,"299":1,"300":1,"301":2,"303":8,"305":1}}],["grown",{"2":{"307":1}}],["grows",{"2":{"145":1}}],["grounded",{"2":{"250":1}}],["grouped",{"2":{"252":1}}],["group",{"2":{"22":1,"25":1,"26":1,"33":1,"36":1,"40":1,"51":1,"56":1,"62":1,"78":1,"82":1,"83":2,"92":3,"100":2,"102":2,"103":3,"110":1,"119":1,"135":1,"254":1,"255":1,"263":1,"279":2,"280":3,"281":1,"285":1,"287":1,"320":1,"324":1}}],["groups",{"0":{"285":1},"2":{"3":1,"18":1,"53":1,"62":2,"63":1,"92":1,"279":2}}],["gracefully",{"2":{"158":1}}],["grained",{"2":{"102":1,"119":1}}],["granting",{"2":{"200":1}}],["grants",{"2":{"96":1}}],["grant",{"2":{"23":1}}],["graphical",{"2":{"18":1}}],["grade",{"2":{"15":1}}],["good",{"2":{"135":1,"164":1,"221":1,"317":1,"327":1}}],["google",{"2":{"9":1,"217":1,"219":2,"244":1,"245":1}}],["goal",{"2":{"108":1}}],["go",{"2":{"24":1,"28":2,"30":1,"31":1,"38":1,"44":1,"48":1,"49":1,"50":1,"54":2,"55":1,"56":1,"57":2,"58":1,"60":1,"65":1,"70":1,"71":1,"75":1,"81":1,"86":1,"128":1,"249":1,"269":1,"336":1,"345":1,"350":1}}],["got",{"2":{"14":1}}],["git",{"2":{"318":1,"320":1,"325":1}}],["github",{"0":{"222":1},"2":{"9":1,"217":1,"219":2,"220":1,"222":3,"319":1,"320":1}}],["giving",{"2":{"252":1}}],["gives",{"2":{"119":1}}],["give",{"2":{"1":1,"14":1,"19":1,"28":1,"123":1,"265":1}}],["giant",{"2":{"115":1}}],["gemini",{"2":{"217":1,"219":1}}],["generic",{"2":{"174":1,"176":1,"242":1}}],["generator",{"2":{"30":1}}],["generates",{"2":{"75":1,"141":1}}],["generate",{"2":{"28":1,"43":1,"50":1,"57":1,"71":1,"116":1,"139":1,"226":1,"319":1,"320":1}}],["generated",{"2":{"14":1,"30":1,"40":1,"61":1,"259":1,"319":1}}],["generating",{"2":{"51":1,"89":1,"90":1,"116":1}}],["generation",{"0":{"228":1},"2":{"9":1,"116":4,"224":1,"228":2,"231":1,"279":1,"284":1,"288":1}}],["generative",{"2":{"9":1,"219":1}}],["generally",{"2":{"45":1}}],["general",{"0":{"35":1,"116":1},"2":{"10":1,"114":1,"115":1,"116":1,"122":1,"128":1,"147":1,"205":1,"242":1,"249":1,"336":1,"338":1,"340":1,"345":1,"350":1,"355":1,"358":1}}],["get",{"2":{"11":1,"13":1,"69":1,"87":1,"279":2,"285":1,"296":2,"301":2,"303":2}}],["gets",{"2":{"5":1,"19":1,"152":1}}],["hub",{"2":{"133":1,"321":1}}],["human",{"2":{"14":1}}],["humans",{"2":{"3":1,"18":1}}],["html",{"2":{"129":1}}],["http",{"0":{"199":1},"2":{"74":1,"199":2,"322":3,"323":1,"334":2,"335":1,"349":1}}],["https",{"2":{"37":1,"38":1,"43":1,"126":2,"221":1,"319":6,"320":1,"344":1}}],["h",{"2":{"37":1}}],["hybrid",{"2":{"19":1}}],["here",{"0":{"313":1},"2":{"311":1,"323":1}}],["height",{"2":{"126":2}}],["headers",{"2":{"199":2}}],["headless",{"2":{"123":1}}],["health",{"2":{"114":1}}],["heartbeat",{"0":{"117":1,"189":1,"242":1,"293":1},"1":{"190":1,"191":1,"192":1,"193":1,"194":1},"2":{"6":1,"10":1,"114":2,"115":1,"117":8,"189":1,"190":1,"191":5,"192":4,"193":1,"194":3,"242":2,"253":2,"257":1,"263":3,"285":2,"293":3,"296":6,"297":4}}],["helper",{"2":{"265":1}}],["help",{"0":{"280":1},"2":{"265":1,"280":7,"281":2,"282":1,"284":2}}],["helps",{"2":{"145":1,"149":1,"172":1,"260":1}}],["helpful",{"2":{"110":1}}],["held",{"2":{"19":1}}],["hour",{"2":{"236":1}}],["hours",{"2":{"18":1}}],["host",{"0":{"162":1},"2":{"155":1,"159":1,"160":3,"162":5,"176":1,"315":1,"323":3}}],["hosted",{"2":{"42":1,"245":1,"339":2,"341":2,"347":1}}],["how",{"0":{"17":1,"263":1,"328":1},"2":{"117":1,"118":1,"138":1,"146":1,"147":2,"151":1,"191":1,"192":1,"216":1,"262":1,"287":1,"330":1,"338":1,"356":1}}],["homeserver>",{"2":{"37":1}}],["homeserver",{"2":{"33":1,"36":1,"37":1,"38":2,"135":1}}],["home",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"14":2,"15":1,"19":1,"20":1,"305":2}}],["historical",{"2":{"146":1}}],["history",{"0":{"179":1},"2":{"15":1,"30":1,"62":4,"66":1,"153":1,"172":1,"193":1,"208":1,"214":1,"251":1,"252":1,"255":1,"256":1,"261":1,"287":1,"307":1}}],["highlighting",{"2":{"186":1}}],["highly",{"2":{"103":1,"245":1}}],["high",{"2":{"116":1,"176":1,"226":1,"296":1}}],["higher",{"2":{"101":1}}],["highest",{"2":{"97":1,"327":1}}],["hierarchy",{"2":{"102":1}}],["hint",{"2":{"49":1}}],["hide",{"2":{"14":1}}],["hit",{"2":{"6":1,"149":1,"262":1,"290":1}}],["happened",{"2":{"151":1}}],["happening",{"2":{"14":1}}],["have",{"2":{"19":1,"115":1,"131":1,"153":1,"158":1,"196":1,"205":1,"211":1,"222":1,"230":1,"279":1,"288":1,"357":1}}],["having",{"2":{"18":1}}],["half",{"2":{"14":1}}],["hardware",{"2":{"13":1,"14":1}}],["handles",{"2":{"180":1,"321":1,"342":1}}],["handled",{"2":{"63":1}}],["hand",{"2":{"10":1}}],["has",{"2":{"1":1,"14":1,"75":1,"87":1,"94":1,"96":1,"100":1,"153":1,"171":1,"181":1,"205":1,"211":1,"214":1,"235":1,"239":1,"256":1,"267":2,"280":1,"290":1,"307":1}}],["right",{"2":{"149":1,"248":1}}],["rich",{"2":{"8":1,"33":1,"51":1}}],["rule",{"0":{"96":1},"2":{"94":2,"96":1,"97":6,"100":2,"103":1,"108":1,"109":1,"110":1,"119":1,"234":1,"314":1}}],["rules",{"0":{"100":1,"101":1,"281":1},"2":{"91":1,"92":2,"95":2,"97":2,"99":1,"101":2,"102":1,"105":1,"106":1,"107":1,"114":1,"115":1,"119":1,"265":1,"291":1}}],["runtime",{"0":{"275":1},"2":{"17":1,"114":1,"115":2,"118":1,"154":1,"159":1,"160":1,"162":1,"172":1,"206":1,"262":1,"265":1,"275":1,"290":1,"317":1,"336":1}}],["running",{"2":{"11":1,"35":1,"121":1,"151":1,"158":1,"159":2,"279":1,"319":1,"320":1}}],["run",{"2":{"4":1,"16":1,"17":1,"18":1,"20":1,"150":2,"151":1,"162":1,"163":1,"198":1,"285":1,"307":2,"315":1,"319":1}}],["runs",{"2":{"4":1,"18":1,"117":2,"118":1,"150":1,"151":1,"235":1,"239":1,"263":1,"278":1,"315":1,"317":2,"328":1,"334":1}}],["range",{"2":{"354":1}}],["rand",{"2":{"320":1}}],["raw",{"2":{"270":1,"271":1}}],["raise",{"2":{"16":1}}],["ram",{"2":{"14":1}}],["rag",{"2":{"14":1,"15":1}}],["ratio",{"2":{"118":1,"126":1,"147":1,"210":2}}],["rather",{"2":{"9":1,"120":1,"210":1}}],["rate",{"2":{"6":1,"149":1,"262":1,"290":1}}],["roots",{"2":{"266":1}}],["root",{"2":{"218":1,"266":4}}],["room",{"2":{"39":1}}],["rooms",{"2":{"36":1,"38":1,"40":2,"103":1}}],["rocm",{"2":{"163":1}}],["routine",{"2":{"194":1,"233":1,"242":1}}],["routing",{"2":{"138":1,"255":1,"313":1}}],["routed",{"2":{"346":1,"351":1}}],["routes",{"2":{"253":1}}],["router",{"2":{"14":3,"17":2}}],["route",{"2":{"6":1,"255":1,"256":1,"279":1,"287":1,"290":2}}],["roadmap",{"2":{"40":1}}],["role",{"2":{"9":1,"110":1,"285":1,"291":1}}],["roles",{"2":{"3":1,"231":1,"313":1}}],["reuse",{"2":{"222":1}}],["reusable",{"2":{"8":1,"124":1,"264":1,"277":1}}],["rewriting",{"2":{"210":1}}],["rewrite",{"2":{"144":1}}],["rewrites",{"2":{"5":1,"153":1,"210":1,"214":1,"307":1}}],["requiring",{"2":{"317":1}}],["require",{"2":{"200":1}}],["requirements",{"0":{"162":1,"332":1},"1":{"333":1,"334":1,"335":1},"2":{"326":1,"327":1}}],["requires",{"2":{"100":1,"102":1,"121":1,"163":1,"200":1,"250":1,"319":1,"328":1,"334":1,"335":1,"339":1,"352":1}}],["required",{"2":{"18":1,"38":2,"48":1,"56":1,"62":1,"75":1,"81":2,"120":1,"137":1,"162":1,"176":1,"218":1,"229":1,"310":1,"320":1,"333":1,"344":1,"349":1,"359":1}}],["requested",{"2":{"203":1,"256":1}}],["revoke",{"2":{"200":1}}],["review",{"2":{"64":1,"117":1,"196":1}}],["redirected",{"2":{"200":1}}],["reducing",{"2":{"210":1}}],["reduce",{"2":{"214":1,"314":1}}],["reduced",{"2":{"118":1,"147":1}}],["reduces",{"2":{"5":1,"144":1,"206":1,"307":1}}],["redundant",{"2":{"153":1,"210":1}}],["renaming",{"0":{"260":1}}],["rename",{"2":{"184":2,"257":1,"260":1}}],["rendered",{"2":{"124":1}}],["returns",{"2":{"150":1}}],["retrieves",{"2":{"215":1,"338":1}}],["retrieve",{"2":{"184":1}}],["retrieved",{"2":{"18":1,"206":1,"330":1,"333":1}}],["retrieval",{"0":{"206":1},"2":{"17":1,"206":1,"210":1,"214":1,"224":1,"229":1,"316":1,"317":3,"326":2,"327":1,"328":1,"342":1}}],["rebuild",{"0":{"211":1},"2":{"130":1,"211":3,"326":1,"337":1}}],["referencing",{"2":{"256":1}}],["reference",{"0":{"116":1,"117":1,"118":1,"236":1,"283":1,"323":1},"1":{"284":1,"285":1}}],["refresh",{"2":{"183":1,"193":1,"202":1,"237":1,"310":1}}],["refine",{"0":{"99":1},"2":{"92":1,"115":1,"119":1}}],["reordering",{"0":{"101":1},"2":{"101":1}}],["reorder",{"2":{"99":1}}],["reload",{"2":{"183":1,"237":1}}],["relate",{"0":{"263":1}}],["related",{"0":{"120":1},"2":{"34":1,"161":1,"294":1}}],["relative",{"2":{"262":1}}],["relationships",{"2":{"167":1}}],["relationship",{"0":{"152":1}}],["relevant",{"2":{"147":1,"202":1,"204":1,"206":1}}],["release",{"2":{"58":2,"319":2,"325":1}}],["relying",{"2":{"129":1}}],["relies",{"2":{"34":1,"229":1}}],["regardless",{"2":{"50":1,"71":1,"95":1}}],["registry",{"2":{"321":2,"323":2}}],["registration",{"2":{"33":1}}],["register",{"2":{"35":1,"37":1,"239":1}}],["regular",{"2":{"6":1}}],["resolve",{"2":{"281":1}}],["resolves",{"2":{"266":1}}],["resource",{"0":{"285":1},"2":{"279":4}}],["resources",{"0":{"41":1,"52":1,"84":1},"2":{"115":1,"158":1,"203":1}}],["research",{"2":{"245":1,"265":1}}],["resetting",{"2":{"255":1}}],["resets",{"2":{"171":1,"252":1}}],["reset",{"2":{"28":1,"48":1,"166":1,"287":1}}],["rest",{"2":{"240":1}}],["restoring",{"0":{"166":1}}],["restore",{"0":{"171":1},"2":{"164":1,"166":1,"171":1}}],["restricted",{"2":{"103":1}}],["restrict",{"2":{"100":1,"102":1,"210":1}}],["results",{"2":{"129":1,"234":1,"241":1,"250":2,"263":1,"317":1}}],["resulting",{"2":{"99":1}}],["result",{"2":{"92":1,"119":1,"150":1,"153":1,"192":1,"240":1,"291":1}}],["response",{"2":{"192":1,"250":1}}],["responses",{"2":{"9":1,"26":1,"40":1,"51":1,"68":1,"72":1,"78":1,"83":1,"89":1,"90":1,"116":1,"219":2}}],["respond",{"2":{"36":1,"71":1,"180":1}}],["repository",{"2":{"319":1}}],["reports",{"2":{"162":1,"180":1,"233":1}}],["reporting",{"2":{"116":1}}],["repeatedly",{"2":{"277":1}}],["represent",{"2":{"43":1,"259":1}}],["reproducible",{"2":{"16":1}}],["replace",{"2":{"146":1}}],["replacing",{"2":{"145":1}}],["reply",{"2":{"25":1,"42":1,"77":1,"253":1,"254":1}}],["replies",{"2":{"22":1,"26":1,"33":1,"43":1,"45":1,"46":1,"59":1,"62":1,"72":2,"78":1,"135":2}}],["removing",{"2":{"138":1}}],["removes",{"2":{"261":1,"272":1}}],["remove",{"2":{"62":1,"122":1,"127":1,"143":1,"158":1,"167":1,"184":1,"193":1,"200":1,"209":1,"210":1,"261":1,"273":1,"331":1}}],["remote",{"0":{"199":1},"2":{"114":1,"199":2}}],["remains",{"2":{"17":1}}],["remember",{"2":{"14":1,"19":1,"188":1,"204":1}}],["re",{"2":{"16":1,"211":2,"273":1}}],["recurring",{"2":{"190":1,"233":1,"242":1}}],["recursive",{"2":{"184":1}}],["recipient",{"2":{"179":1}}],["recreating",{"2":{"163":1,"171":1}}],["recreate",{"2":{"161":1}}],["recent",{"2":{"118":1,"285":1,"293":1}}],["receive",{"2":{"40":1,"56":1,"57":2,"59":1,"62":1,"173":1}}],["receives",{"2":{"25":1,"66":1,"77":1,"194":1,"241":1}}],["receiving",{"2":{"35":1,"82":1}}],["records",{"2":{"146":1,"193":1,"253":1}}],["recommended",{"0":{"231":1,"277":1,"319":1},"2":{"62":1,"99":1,"245":1,"313":1,"315":1,"320":1}}],["recognition",{"2":{"50":1,"71":1}}],["recognized",{"2":{"3":1}}],["recalls",{"2":{"5":1}}],["reasoning",{"2":{"114":1,"116":4,"203":1,"224":1,"225":1,"226":4,"296":2}}],["reached",{"2":{"241":1}}],["reach",{"2":{"74":1}}],["reachable",{"2":{"7":1,"11":1,"212":1}}],["reaction",{"2":{"45":1}}],["reactions",{"2":{"33":2,"46":1,"62":2,"135":1}}],["reads",{"2":{"262":1}}],["reading",{"2":{"124":1}}],["ready",{"2":{"33":1,"58":1}}],["read",{"2":{"4":1,"30":1,"42":1,"43":1,"59":1,"62":11,"66":2,"67":1,"178":1,"186":1,"188":1,"219":1,"241":1,"253":1,"262":1,"282":1,"290":1,"305":4,"352":1,"353":1,"354":1,"357":1,"359":1}}],["realized",{"2":{"14":1}}],["reality",{"2":{"13":1}}],["real",{"0":{"244":1},"2":{"3":2,"13":2,"14":4,"19":1,"76":1,"83":1,"129":1,"158":1,"159":1,"162":1,"211":1,"243":1,"250":1,"253":1,"255":1}}],["f",{"2":{"321":2,"324":1}}],["fssl",{"2":{"319":6}}],["fs",{"0":{"305":1},"2":{"285":1,"305":5}}],["flask",{"2":{"317":1}}],["flags",{"2":{"225":1,"226":1}}],["flexible",{"2":{"242":1}}],["flow",{"0":{"35":1,"136":1,"241":1,"246":1,"340":1,"358":1},"1":{"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"247":1,"248":1},"2":{"116":2,"135":2,"140":1,"200":1,"221":1,"223":1,"230":1}}],["flows",{"2":{"10":1}}],["found",{"2":{"266":1}}],["focus",{"2":{"251":1}}],["focused",{"2":{"33":1,"245":1,"277":1}}],["folders",{"2":{"184":1}}],["folder",{"2":{"183":1,"184":1}}],["follow",{"2":{"69":1,"279":1,"288":1}}],["following",{"2":{"33":1,"56":1,"125":1,"247":1,"329":1,"334":1,"339":1,"343":1,"348":1}}],["footprint",{"2":{"144":1,"206":1,"307":1}}],["force",{"2":{"48":1,"231":1,"255":2,"287":2}}],["forcing",{"2":{"14":1}}],["forward",{"2":{"19":1}}],["format",{"2":{"230":1,"323":1,"354":2,"356":1,"357":1,"358":1}}],["formats",{"2":{"186":1}}],["formatting",{"2":{"49":1,"51":1,"68":1}}],["formatted",{"2":{"40":1}}],["forms",{"2":{"123":1,"124":1,"255":1,"281":1,"287":1}}],["form",{"2":{"13":1,"14":1,"102":1,"115":1,"218":1,"221":1,"222":1,"248":2}}],["for",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"3":2,"8":4,"9":3,"10":1,"14":2,"16":1,"17":1,"18":1,"20":1,"22":3,"23":2,"24":1,"32":1,"33":8,"35":1,"37":1,"40":2,"42":1,"43":4,"45":1,"51":2,"56":2,"58":1,"60":1,"66":3,"67":1,"69":2,"72":1,"73":2,"78":1,"83":1,"90":2,"92":1,"95":3,"97":1,"102":1,"103":6,"106":1,"107":1,"109":1,"112":1,"114":2,"115":3,"116":4,"117":1,"118":1,"119":2,"120":2,"122":1,"124":2,"125":1,"129":1,"130":2,"133":1,"135":2,"140":1,"141":1,"142":2,"145":1,"146":1,"147":1,"148":1,"150":1,"151":1,"153":1,"159":2,"160":1,"163":1,"164":1,"165":1,"168":1,"173":1,"176":2,"180":1,"184":1,"189":1,"190":1,"196":1,"198":2,"199":1,"200":1,"201":1,"210":1,"212":1,"213":1,"214":1,"217":1,"219":3,"221":1,"224":2,"225":1,"227":1,"229":2,"231":4,"233":1,"235":3,"237":1,"242":2,"243":1,"245":2,"247":2,"255":1,"259":2,"262":2,"263":2,"266":1,"267":1,"271":1,"272":1,"275":1,"277":1,"278":1,"279":2,"280":2,"281":3,"287":3,"288":1,"290":3,"291":1,"292":1,"294":1,"301":1,"303":1,"307":1,"308":1,"316":3,"317":3,"319":3,"321":1,"325":1,"329":1,"330":1,"337":1,"338":1,"343":1,"344":3,"346":1,"347":1,"348":1,"349":1,"351":1,"352":1}}],["future",{"2":{"146":1,"153":1,"214":1}}],["full",{"2":{"32":1,"40":1,"51":1,"83":1,"90":1,"200":1}}],["fully",{"2":{"16":2,"195":1,"276":1,"339":1}}],["furthermore",{"2":{"20":1}}],["friendly",{"2":{"218":1,"225":1,"247":1}}],["free",{"2":{"352":1,"359":1}}],["freely",{"2":{"18":1}}],["fresh",{"2":{"87":1,"171":1,"252":1,"255":1,"257":1,"278":1,"287":1}}],["frontend",{"2":{"323":1}}],["frontmatter",{"2":{"265":1}}],["frontier",{"2":{"17":1,"20":1}}],["from",{"0":{"149":1,"150":1,"266":1},"2":{"7":1,"10":1,"11":1,"14":1,"35":2,"37":1,"64":1,"67":1,"72":1,"73":1,"74":1,"76":1,"77":1,"87":1,"91":1,"92":2,"94":1,"96":1,"97":1,"100":1,"108":2,"112":1,"116":3,"117":2,"119":1,"125":1,"126":1,"134":1,"137":1,"147":1,"157":1,"160":1,"170":1,"174":1,"175":1,"176":1,"177":1,"181":1,"184":2,"191":2,"196":2,"197":1,"201":1,"202":1,"205":1,"206":1,"207":1,"208":2,"210":1,"211":2,"216":2,"218":1,"222":1,"228":1,"230":2,"245":1,"247":1,"248":1,"251":1,"253":1,"255":1,"256":1,"262":1,"263":1,"264":2,"266":3,"273":1,"274":2,"276":1,"277":1,"307":1,"314":1,"317":1,"319":2,"326":1,"328":1,"330":1,"337":2,"340":2,"344":1,"349":1,"357":2,"358":1}}],["false",{"2":{"296":2,"325":1}}],["fallback",{"2":{"272":2,"273":1}}],["falls",{"2":{"116":1}}],["fail",{"2":{"320":1}}],["failure",{"2":{"151":1}}],["failed",{"2":{"118":1,"151":1,"192":1}}],["favorite",{"2":{"33":1,"132":1}}],["fastest",{"2":{"280":1,"287":1}}],["faster",{"2":{"19":1}}],["fast",{"2":{"14":1,"278":1,"317":1}}],["familiar",{"2":{"13":1,"182":1}}],["factor",{"2":{"13":1,"126":1}}],["facts",{"2":{"5":1}}],["facing",{"2":{"6":1,"7":1,"259":1}}],["few",{"2":{"115":1,"281":1}}],["featuring",{"2":{"68":1}}],["feature",{"0":{"314":1},"2":{"33":1,"153":1,"189":1,"211":1,"225":1,"229":1,"242":1}}],["features",{"0":{"18":1,"26":1,"32":1,"40":1,"46":1,"51":1,"67":1,"72":1,"78":1,"83":1,"90":1,"263":1},"2":{"40":1,"116":1,"153":1,"226":1,"242":1}}],["federated",{"2":{"33":1}}],["feb",{"2":{"21":1}}],["feedback",{"2":{"51":1,"90":1,"158":1}}],["feed",{"2":{"16":1}}],["feels",{"2":{"20":1}}],["feeling",{"2":{"14":1}}],["feel",{"2":{"13":1,"14":2,"254":1}}],["fetch",{"2":{"8":1,"35":1,"87":1,"317":1,"319":1}}],["feishu",{"0":{"53":1,"54":1,"139":1,"256":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1},"2":{"1":1,"7":1,"18":1,"33":1,"53":1,"54":1,"55":1,"57":3,"58":1,"114":1,"135":2,"139":3,"312":1}}],["fixed",{"2":{"242":1}}],["fixes",{"2":{"14":1}}],["fit",{"2":{"135":1,"221":1}}],["fired",{"2":{"235":1}}],["fires",{"2":{"234":1,"241":1,"253":1}}],["firefox",{"2":{"126":1,"130":3,"325":1}}],["first",{"2":{"14":1,"15":1,"19":2,"42":1,"97":2,"101":1,"115":1,"141":1,"236":1,"322":1}}],["field",{"2":{"38":1,"57":1,"70":1,"81":1,"89":1,"116":1,"117":1,"118":1,"120":1,"125":1,"126":1,"138":1,"147":1,"191":1,"198":1,"199":1,"205":1,"218":1,"225":1,"229":2,"235":1,"236":1,"330":1,"344":1,"349":1,"354":1}}],["fields",{"0":{"138":1,"235":1},"2":{"38":1,"75":1,"81":1,"102":1,"137":1,"147":1,"151":1,"176":1,"218":1,"225":1,"236":1,"262":1,"329":1,"343":1,"348":1}}],["finds",{"2":{"206":1,"267":1}}],["find",{"2":{"128":1,"166":1,"193":1,"201":1,"249":1,"336":1,"345":1,"350":1,"355":1}}],["fine",{"2":{"102":1,"119":1}}],["final",{"2":{"35":1}}],["finished",{"2":{"14":1,"151":1}}],["filter",{"2":{"193":1,"209":1,"257":1}}],["filling",{"2":{"124":1}}],["fill",{"2":{"24":1,"38":1,"57":1,"58":1,"65":1,"75":1,"81":1,"112":1,"123":1,"125":1,"129":1,"137":1,"176":1,"201":1,"218":1,"247":1,"270":1,"310":1,"329":1,"343":1,"348":1}}],["fileviewer",{"2":{"185":1}}],["filemanager",{"2":{"182":1}}],["file",{"2":{"8":1,"114":1,"158":1,"170":1,"182":1,"183":1,"184":2,"186":2,"187":2,"201":2,"206":1,"241":1,"265":2,"270":1,"305":1,"320":1,"323":1,"325":1,"327":1,"333":1,"339":1}}],["files",{"0":{"181":1,"184":1,"186":1,"188":1},"1":{"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1},"2":{"4":1,"10":1,"17":1,"18":1,"19":1,"30":1,"32":1,"33":1,"40":1,"51":1,"59":1,"62":4,"66":2,"67":2,"72":2,"114":2,"122":1,"156":1,"162":1,"181":1,"183":1,"184":2,"185":1,"188":2,"285":1}}],["filesystem",{"0":{"302":1},"1":{"303":1,"304":1,"305":1},"2":{"4":1,"114":1,"155":1,"169":1,"170":1,"171":1,"181":2,"186":1,"190":1,"198":1,"305":1}}],["five",{"2":{"6":1,"236":1,"253":1}}],["uuid",{"2":{"296":2}}],["utc",{"2":{"126":1,"236":1,"323":1}}],["url",{"2":{"24":1,"30":2,"35":1,"38":2,"43":1,"44":1,"57":4,"74":1,"75":1,"76":1,"81":1,"112":1,"139":2,"141":2,"142":1,"199":1,"217":1,"218":1,"222":1,"247":1,"322":1,"323":2,"334":2,"335":1,"344":2,"349":1}}],["upstream",{"2":{"216":1,"217":1,"223":1,"225":1}}],["updating",{"2":{"163":1}}],["updates",{"2":{"296":1}}],["updated",{"2":{"172":1,"211":1}}],["update",{"2":{"126":1,"127":1,"143":2,"184":1,"248":1,"271":1,"282":1,"285":1,"296":4,"303":2,"324":1,"331":1}}],["uploaded",{"2":{"62":1,"66":1,"67":1}}],["upload",{"2":{"46":1,"62":1,"184":1}}],["up",{"2":{"18":1,"48":1,"62":1,"115":1,"190":1,"213":1,"268":1,"288":1,"313":1,"317":1,"320":2,"321":1,"324":2,"334":1,"335":1,"360":1}}],["upgradable",{"2":{"17":1}}],["uncomment",{"2":{"321":1}}],["uncomfortable",{"2":{"16":1}}],["unread",{"2":{"239":1,"240":2}}],["unresolvable",{"2":{"162":1}}],["unlike",{"2":{"328":1}}],["unlimited",{"2":{"235":1,"242":1}}],["unless",{"2":{"92":1,"94":1}}],["unsure",{"2":{"103":1,"277":1}}],["until",{"2":{"92":1,"268":1}}],["unique",{"2":{"69":1,"159":1,"215":1}}],["unified",{"0":{"133":1},"2":{"7":1}}],["underlying",{"2":{"317":1}}],["under",{"2":{"15":1,"160":1,"162":1,"216":1,"223":1,"266":2,"357":1}}],["understanding",{"2":{"172":1}}],["understands",{"2":{"72":1}}],["understand",{"2":{"11":1,"147":1,"154":1,"313":1}}],["usually",{"2":{"162":1,"216":1,"268":2}}],["us",{"2":{"126":1,"354":1}}],["using",{"0":{"337":1},"2":{"37":1,"111":1,"132":1,"139":1,"140":1,"141":1,"142":1,"158":1,"205":1,"233":1,"234":1,"240":1,"241":1,"255":1,"291":1,"317":2,"319":1,"333":1,"340":1,"355":1}}],["usage",{"0":{"213":1,"292":1,"346":1,"351":1},"2":{"6":1,"145":1,"149":1,"151":2,"213":1,"227":2,"262":1,"264":1,"265":1,"280":1,"285":2,"290":2,"291":1,"292":5,"293":1,"294":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"303":1,"304":1,"305":1,"307":1}}],["useful",{"2":{"95":2,"103":1,"149":1,"151":1,"164":1,"171":1,"190":1,"210":1,"211":1,"222":1,"233":1,"256":1,"271":1,"276":1,"288":1,"291":1}}],["used",{"2":{"6":1,"116":6,"118":1,"147":1,"149":1,"152":1,"159":1,"191":1,"215":1,"218":1,"224":1,"227":1,"229":1,"262":2,"267":1,"275":2,"290":1,"330":1,"347":1}}],["uses",{"2":{"6":1,"7":1,"22":1,"34":1,"44":1,"61":1,"81":1,"91":1,"116":1,"147":1,"218":1,"221":1,"222":2,"226":1,"227":1,"236":2,"252":1,"253":1,"265":1,"317":1,"328":1,"338":1,"352":1,"359":1}}],["use",{"2":{"4":1,"8":1,"18":1,"19":1,"43":1,"50":1,"58":1,"59":1,"71":1,"74":1,"75":1,"76":1,"95":1,"110":1,"115":3,"119":2,"123":2,"124":1,"127":1,"128":1,"129":1,"153":2,"162":1,"167":1,"180":1,"184":1,"188":1,"194":1,"201":1,"202":2,"203":1,"206":1,"212":1,"214":2,"216":1,"219":1,"220":1,"224":1,"229":1,"242":2,"244":1,"248":1,"255":1,"259":1,"265":2,"271":1,"273":1,"274":1,"277":2,"279":1,"287":2,"290":2,"307":1,"317":2,"319":4,"321":1,"325":2,"327":1,"331":1,"336":1,"346":1,"351":1,"356":1}}],["username",{"2":{"69":2,"176":1,"323":1}}],["username>",{"2":{"37":1}}],["users",{"0":{"106":1,"107":1},"2":{"3":1,"17":1,"23":1,"40":1,"45":2,"47":1,"53":1,"79":1,"82":1,"83":1,"85":1,"88":1,"90":1,"91":1,"95":2,"108":1,"112":1,"120":1,"160":1,"254":1,"282":1,"321":1}}],["user",{"0":{"3":1},"2":{"6":1,"7":1,"14":1,"19":1,"37":3,"38":2,"39":1,"64":1,"95":1,"102":1,"109":1,"110":1,"112":1,"116":1,"126":2,"163":1,"180":1,"203":1,"206":1,"222":1,"250":1,"251":1,"253":2,"259":2,"291":1,"320":1,"323":1,"324":1}}],["ui",{"0":{"10":1,"257":1,"269":1},"1":{"270":1,"271":1,"272":1,"273":1,"274":1},"2":{"1":1,"6":1,"10":1,"24":1,"31":1,"38":1,"43":1,"44":1,"49":1,"50":1,"65":1,"70":1,"71":1,"75":1,"81":1,"86":1,"126":1,"152":1,"160":1,"185":1,"216":1,"225":1,"227":1,"254":1,"255":2,"257":1,"259":1,"274":2,"278":1,"287":2,"309":1,"310":1,"315":1,"316":1,"322":1}}],["sslmode",{"2":{"323":1}}],["sse",{"0":{"199":1},"2":{"158":1,"199":1}}],["snapshotter",{"2":{"323":1}}],["snapshot",{"0":{"165":1,"166":1},"2":{"165":2,"166":1,"167":1}}],["snapshots",{"0":{"164":1,"167":1},"1":{"165":1,"166":1,"167":1},"2":{"114":1,"164":1,"167":1}}],["switches",{"2":{"297":1,"298":1,"299":1,"300":1}}],["switching",{"2":{"211":1,"256":1,"278":1}}],["switch",{"2":{"143":1,"257":1,"285":4,"309":1,"310":1}}],["shipped",{"2":{"326":1}}],["sh",{"2":{"319":12}}],["shut",{"2":{"158":1}}],["shell",{"2":{"121":1}}],["short",{"2":{"265":1,"277":1}}],["shorten",{"2":{"214":1}}],["shorter",{"2":{"145":1}}],["shortcut",{"2":{"92":1}}],["showing",{"2":{"179":1}}],["shows",{"2":{"149":1,"163":1,"212":1,"222":1,"237":1,"259":1,"276":1,"290":1,"291":1,"292":1,"293":1,"294":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1}}],["show",{"2":{"49":1,"62":1,"89":1,"227":1,"263":1,"268":1,"275":1,"279":1,"280":3,"284":1,"285":2,"290":3}}],["shown",{"2":{"48":1,"126":1,"158":1,"225":1,"259":1}}],["should",{"2":{"43":1,"62":1,"71":1,"103":2,"118":1,"123":1,"147":1,"191":1,"194":1,"263":1}}],["shanghai",{"2":{"126":1}}],["shape",{"2":{"116":1}}],["shadowed",{"2":{"10":1,"267":1,"268":1,"275":1,"314":1}}],["share",{"2":{"19":1}}],["shared",{"2":{"1":1,"3":1,"103":1,"263":1}}],["sharing",{"2":{"3":1,"17":1,"19":1,"168":1,"201":1}}],["synthesize",{"2":{"355":1,"357":2,"358":1}}],["synthesized",{"2":{"250":1}}],["synthesis",{"2":{"219":1,"352":1,"356":1,"358":1}}],["syntax",{"2":{"186":1,"236":1}}],["synchronous",{"2":{"150":1,"254":1}}],["sync",{"2":{"38":1}}],["system",{"2":{"7":1,"9":1,"10":1,"13":1,"91":1,"97":1,"112":1,"116":2,"155":1,"194":1,"204":1,"212":1,"253":1,"280":1,"339":1,"357":1}}],["spoken",{"2":{"357":1}}],["sparse",{"0":{"317":1,"328":1,"334":1},"2":{"206":1,"211":1,"316":4,"317":9,"319":1,"320":2,"323":2,"327":4,"328":5,"330":2,"334":5,"339":2}}],["space",{"2":{"163":1}}],["spaces",{"2":{"103":1,"265":1,"279":1}}],["split",{"2":{"19":1,"115":1}}],["speak",{"2":{"263":1}}],["speaks",{"2":{"253":1,"254":1}}],["speaker",{"2":{"14":1}}],["speed",{"2":{"230":1,"354":2,"356":1,"357":1,"358":1}}],["speech",{"0":{"230":1},"2":{"9":2,"116":4,"216":3,"219":4,"224":3,"230":3,"231":1,"232":2,"352":1,"355":1,"357":2,"358":1}}],["spec",{"2":{"162":1}}],["specs",{"2":{"162":1}}],["specify",{"2":{"247":1}}],["specifically",{"2":{"245":1}}],["specification",{"2":{"41":1}}],["specific",{"0":{"108":1},"2":{"91":1,"95":1,"100":5,"102":2,"109":2,"120":1,"130":1,"174":1,"201":1,"208":1,"215":1,"234":1,"242":1,"244":1,"247":1,"251":1,"267":1,"273":1,"279":1,"319":1,"357":1}}],["specified",{"2":{"18":1}}],["special",{"0":{"139":1,"140":1,"141":1,"142":1},"2":{"194":1}}],["specialized",{"2":{"111":1,"113":1}}],["scale",{"2":{"126":1}}],["scans",{"2":{"266":1}}],["scan",{"0":{"87":1},"2":{"85":1,"87":2,"140":1}}],["schema",{"2":{"120":1}}],["schedules",{"0":{"237":1,"238":1},"1":{"239":1,"240":1},"2":{"237":1,"238":1,"240":1}}],["scheduled",{"0":{"190":1,"233":1},"1":{"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1},"2":{"18":1,"114":1,"115":1,"190":1,"233":1,"253":1,"263":1,"285":1,"303":1}}],["schedule",{"0":{"235":1,"242":1,"303":1},"2":{"6":1,"18":1,"114":1,"189":1,"234":2,"235":3,"237":1,"239":4,"240":1,"241":4,"242":2,"253":1,"257":1,"263":1,"279":3,"281":1,"285":1,"303":10}}],["scoping",{"2":{"110":1,"344":2}}],["scoped",{"0":{"109":1},"2":{"252":1,"314":1}}],["scope",{"0":{"102":1},"2":{"61":1,"100":1,"102":2,"109":1,"153":1,"214":1,"291":1}}],["scopes",{"0":{"62":1},"2":{"30":1,"62":2,"66":1}}],["scenarios",{"2":{"33":1,"73":1,"135":1}}],["scratch",{"2":{"211":1}}],["scripts",{"2":{"156":1}}],["script",{"2":{"130":1,"319":2,"321":1}}],["scroll",{"2":{"29":1,"122":1,"129":1}}],["screenshot",{"2":{"129":1}}],["screenshots",{"2":{"123":1,"124":1}}],["screen",{"2":{"14":1,"64":1}}],["slow",{"2":{"319":1}}],["slack",{"0":{"59":1,"60":1},"1":{"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1},"2":{"33":1,"59":1,"60":1,"61":1,"62":2,"63":1,"64":1,"65":1,"66":1,"67":1,"135":2}}],["slash",{"0":{"150":1,"278":1},"1":{"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":1},"2":{"6":1,"10":1,"11":1,"32":1,"110":1,"152":1,"154":2,"255":1,"278":2,"280":1,"281":2,"284":1,"313":1}}],["sludge",{"2":{"14":1}}],["saas",{"2":{"339":2,"341":2,"342":1,"347":1}}],["saving",{"2":{"128":1,"164":1}}],["saves",{"2":{"87":1}}],["saved",{"2":{"75":1}}],["save",{"2":{"24":1,"29":1,"31":1,"35":1,"38":1,"44":1,"48":1,"49":1,"57":2,"65":1,"70":1,"75":1,"81":1,"100":1,"101":1,"128":1,"141":1,"142":1,"143":2,"158":1,"169":1,"186":2,"205":1,"218":1,"223":1,"249":1,"270":1,"310":1,"336":1,"345":1,"350":1,"355":1,"358":1}}],["safely",{"2":{"164":1,"226":1,"274":1}}],["safe",{"2":{"16":1,"75":1}}],["say",{"2":{"14":1}}],["same",{"2":{"3":2,"14":1,"64":1,"76":1,"262":1,"266":1,"267":1,"268":2,"272":1,"274":1}}],["smtp",{"2":{"33":1,"174":1,"176":1}}],["smell",{"2":{"14":1}}],["smoother",{"2":{"14":1}}],["smaller",{"2":{"144":1}}],["small",{"2":{"14":1,"277":1}}],["smarter",{"2":{"13":1}}],["s",{"0":{"115":1},"2":{"13":1,"14":6,"16":1,"20":1,"22":1,"31":1,"32":1,"35":1,"38":3,"39":1,"47":1,"49":1,"57":1,"61":1,"70":1,"79":1,"81":2,"86":1,"91":1,"94":1,"98":1,"112":1,"114":2,"115":1,"116":2,"121":1,"130":1,"131":1,"134":1,"139":1,"143":2,"145":1,"147":2,"152":2,"153":1,"156":1,"157":1,"159":2,"161":1,"164":2,"169":1,"170":1,"171":1,"172":1,"177":1,"178":1,"179":2,"184":2,"185":1,"186":2,"188":1,"192":1,"194":1,"198":1,"200":2,"204":1,"205":1,"206":1,"207":1,"208":2,"211":1,"221":1,"235":1,"236":1,"250":1,"252":1,"253":4,"254":1,"256":1,"262":1,"264":2,"274":1,"281":1,"297":1,"303":1,"308":1,"309":1,"310":1,"319":2,"326":1,"337":1,"340":2,"352":1,"355":1,"358":2,"359":1}}],["silently",{"2":{"319":1}}],["silent",{"2":{"253":1,"254":1,"319":1}}],["single",{"2":{"133":1,"144":1,"206":1}}],["similar",{"2":{"153":1}}],["simultaneously",{"2":{"121":1,"133":1}}],["simple",{"2":{"18":1,"85":1,"265":1}}],["significantly",{"2":{"317":1,"328":1}}],["sign",{"2":{"43":1}}],["sites",{"2":{"126":1}}],["sit",{"2":{"13":1,"14":1}}],["sidebar",{"2":{"28":1,"35":1,"54":1,"112":1,"125":1,"126":1,"175":1,"176":1,"218":1,"245":1,"247":1,"248":1,"257":1,"259":1,"340":1,"358":1}}],["side",{"2":{"10":1,"77":1,"231":1}}],["size",{"2":{"5":1,"123":1,"147":1,"229":1,"314":1}}],["skill",{"0":{"265":1,"267":1,"270":1,"271":1,"272":1,"304":1,"309":1},"1":{"268":1},"2":{"8":1,"10":1,"114":1,"265":7,"266":6,"267":5,"268":4,"270":1,"271":1,"272":3,"273":2,"274":4,"276":3,"285":1,"304":2,"309":2}}],["skills",{"0":{"8":1,"264":1,"266":1,"269":1,"275":1,"276":1},"1":{"265":1,"266":1,"267":1,"268":1,"269":1,"270":2,"271":2,"272":2,"273":2,"274":2,"275":1,"276":1,"277":1},"2":{"6":1,"8":1,"11":1,"18":1,"114":1,"149":1,"188":1,"190":1,"194":1,"234":1,"262":2,"264":2,"266":10,"269":1,"270":1,"271":1,"274":1,"275":4,"276":3,"277":3,"285":1,"290":1,"304":1,"308":1,"309":2,"311":1,"314":3}}],["sudo",{"2":{"319":6,"320":1,"324":1}}],["suffixes",{"2":{"281":1}}],["sun=0",{"2":{"236":1}}],["summary",{"2":{"145":1,"151":3,"192":1,"235":1,"239":1,"262":1,"279":1,"285":1,"292":2,"323":1}}],["summarizing",{"2":{"144":1}}],["summarizes",{"2":{"153":1,"214":1}}],["summarize",{"2":{"118":1,"147":1,"152":1,"235":1,"240":2,"303":1,"307":1}}],["successful",{"2":{"118":1}}],["successfully",{"2":{"71":1,"151":1,"179":1,"192":1}}],["succeeds",{"2":{"88":1}}],["such",{"2":{"6":1,"10":1,"112":1,"114":1,"116":2,"123":1,"126":2,"129":1,"162":1,"210":1,"215":1,"217":2,"218":1,"225":2,"226":1,"229":1,"231":1,"255":1,"265":1,"266":2,"278":1,"279":2,"282":1,"287":1,"296":1}}],["subdirectory",{"2":{"266":1}}],["subsequent",{"2":{"256":1}}],["subscribe",{"0":{"63":1}}],["subscriptions",{"2":{"57":1,"63":1}}],["sub",{"2":{"103":1}}],["subject",{"0":{"95":1},"2":{"95":1,"96":2,"97":1,"100":1,"108":1,"179":2}}],["subjects",{"2":{"94":1,"95":1,"97":1,"106":1,"107":1}}],["submitting",{"2":{"124":1}}],["submit",{"2":{"58":1}}],["subagents",{"2":{"8":1}}],["subagent",{"2":{"6":1,"253":3,"257":1,"263":2}}],["suited",{"2":{"45":1}}],["surface",{"2":{"280":1,"313":1}}],["surfaced",{"2":{"262":1}}],["sure",{"2":{"43":1,"64":1,"76":1,"205":1}}],["survive",{"2":{"13":1}}],["sustainable",{"2":{"19":1}}],["support",{"2":{"19":1,"32":1,"33":2,"40":1,"49":1,"51":2,"67":1,"68":1,"72":1,"83":1,"90":2,"135":2,"162":1,"184":1,"278":1,"281":1}}],["supported",{"0":{"26":1,"32":1,"40":1,"46":1,"51":1,"67":1,"72":1,"78":1,"83":1,"90":1,"134":1,"245":1},"1":{"135":1},"2":{"10":1,"25":1,"68":1,"245":1,"255":3,"287":2,"296":1,"340":1}}],["supports",{"2":{"9":1,"18":1,"22":1,"33":1,"34":1,"53":1,"116":1,"135":1,"168":1,"186":1,"195":1,"200":1,"219":1,"226":1,"317":1,"326":1,"328":1,"339":2,"352":1,"357":1}}],["supermarket",{"0":{"8":1,"276":1,"308":1},"1":{"309":1,"310":1,"311":1},"2":{"8":1,"11":1,"196":1,"264":1,"276":1,"277":1,"308":1,"309":1,"310":1,"311":1,"314":1}}],["serper",{"2":{"245":1}}],["server",{"0":{"30":1},"2":{"29":1,"30":1,"42":1,"174":1,"198":1,"199":3,"200":1,"202":2,"203":2,"236":1,"315":1,"316":2,"323":4}}],["servers",{"2":{"8":1,"27":1,"33":1,"135":1,"176":1,"200":1,"314":1}}],["service",{"0":{"316":1,"317":1},"1":{"317":1},"2":{"174":1,"175":1,"217":1,"241":1,"316":2,"317":1,"319":1,"322":1,"323":1,"327":1,"334":1,"347":1,"357":1}}],["services",{"2":{"17":1,"133":1,"195":1,"316":1,"319":1,"320":1,"322":1}}],["serving",{"2":{"17":1}}],["searxng",{"2":{"245":1,"247":1}}],["searches",{"2":{"215":1}}],["searching",{"0":{"209":1}}],["search",{"0":{"243":1,"245":1,"247":1,"249":1,"299":1},"1":{"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1},"2":{"8":2,"9":1,"15":1,"18":1,"56":1,"69":1,"100":1,"114":2,"115":1,"116":2,"129":1,"146":1,"201":1,"209":1,"229":1,"231":1,"241":1,"243":1,"244":2,"245":6,"247":4,"249":1,"250":3,"257":1,"285":2,"299":4,"316":1,"317":2,"327":2,"328":1,"330":1,"337":1,"338":1,"339":1,"346":1,"351":1}}],["sent",{"2":{"179":3,"199":1,"235":1}}],["sensible",{"2":{"119":1}}],["sensitive",{"2":{"103":1}}],["sends",{"2":{"206":1,"234":1,"239":1}}],["sender",{"2":{"95":1,"97":1}}],["sending",{"2":{"35":1,"190":1,"233":1,"288":1}}],["send",{"2":{"6":1,"25":1,"30":1,"40":1,"50":1,"56":1,"59":1,"62":1,"66":2,"67":1,"69":1,"71":1,"72":2,"77":1,"82":1,"88":1,"139":1,"145":1,"173":1,"178":1,"180":1,"235":1,"240":1,"241":1,"253":1,"254":2,"256":1,"279":1,"281":1}}],["self",{"2":{"42":1,"245":1,"339":2,"341":2,"347":1}}],["selectively",{"2":{"263":1}}],["selection",{"0":{"130":1},"2":{"114":1,"130":1,"319":1}}],["selected",{"0":{"106":1},"2":{"116":2,"137":1,"147":1,"152":1,"218":1,"259":1,"262":1,"276":1,"319":1,"336":1,"356":1}}],["select",{"2":{"30":3,"31":1,"38":1,"49":1,"50":1,"65":1,"70":2,"71":1,"81":1,"86":1,"100":3,"126":1,"127":1,"128":1,"129":1,"137":1,"170":1,"178":1,"184":1,"201":1,"205":1,"208":1,"223":1,"237":1,"248":1,"249":2,"309":1,"310":1,"329":1,"330":1,"331":1,"336":1,"343":1,"344":1,"345":1,"348":1,"349":1,"350":1,"353":1,"355":1,"357":1,"358":2}}],["sees",{"2":{"275":1}}],["seen",{"2":{"100":1}}],["see",{"2":{"35":1,"112":1,"118":2,"131":1,"144":1,"152":1,"154":3,"183":1,"187":1,"206":1,"215":1,"232":2,"254":1,"263":1,"287":1,"307":1,"316":1,"317":1,"346":1,"351":1}}],["security",{"2":{"155":1}}],["securely",{"2":{"28":1,"48":1,"200":1}}],["seconds",{"2":{"38":1}}],["secrets",{"2":{"35":1,"138":1,"310":1}}],["secret",{"2":{"23":1,"24":1,"34":1,"37":1,"54":1,"57":1,"69":1,"74":1,"75":1,"80":1,"81":1,"142":1,"319":2,"320":1,"323":1,"344":1,"349":1}}],["sections",{"2":{"323":1,"334":1}}],["section",{"2":{"21":1,"29":1,"202":1,"323":1,"335":1}}],["semantic",{"2":{"18":1,"229":1,"317":1,"326":1,"327":1,"339":1}}],["setting",{"2":{"120":1,"163":1}}],["settings",{"0":{"29":1,"89":1,"115":1,"120":1,"296":1},"2":{"10":1,"18":1,"34":1,"49":1,"54":1,"57":1,"114":2,"115":2,"116":1,"120":2,"126":1,"141":1,"161":1,"163":1,"211":1,"215":1,"218":1,"230":1,"232":1,"247":1,"248":1,"278":1,"279":2,"285":2,"296":5,"319":1,"330":1,"331":1,"335":1,"336":1,"340":1,"344":1,"349":1,"354":1,"357":2}}],["setups",{"2":{"120":1,"266":1}}],["setup",{"0":{"35":1,"337":1},"2":{"11":1,"24":1,"33":1,"85":1,"119":1,"130":1,"131":1,"142":1,"313":1,"327":1}}],["set",{"2":{"8":1,"18":1,"100":1,"105":1,"106":1,"107":1,"108":1,"109":1,"115":1,"116":1,"178":1,"190":1,"196":1,"210":1,"241":1,"252":1,"275":1,"279":1,"280":1,"282":1,"297":8,"298":2,"299":2,"300":2,"313":1,"320":1,"321":1,"325":1,"360":1}}],["sessions",{"0":{"6":1,"251":1,"258":1,"259":1,"260":1,"261":1,"263":1},"1":{"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":2,"260":2,"261":2,"262":1,"263":1},"2":{"6":6,"11":1,"120":1,"154":1,"156":1,"252":2,"253":1,"255":1,"257":4,"259":2,"261":1,"263":5,"275":1,"287":2,"313":2}}],["session",{"0":{"149":1,"214":1,"253":1,"255":1,"262":1,"286":1},"1":{"254":1,"256":1,"257":1,"287":1,"288":1},"2":{"5":3,"6":2,"10":1,"114":1,"115":1,"116":2,"118":3,"144":2,"146":2,"147":3,"148":1,"149":1,"150":1,"152":3,"153":2,"154":2,"206":2,"210":1,"214":3,"227":2,"251":2,"252":3,"253":4,"254":1,"255":6,"256":3,"257":3,"259":4,"260":1,"261":1,"262":5,"263":2,"275":2,"278":2,"279":1,"285":2,"287":4,"290":4,"307":3,"314":1}}],["separately",{"2":{"216":1}}],["separated",{"2":{"9":1,"161":1}}],["separates",{"2":{"5":1}}],["separate",{"2":{"4":1,"9":1,"116":1,"142":1,"206":1,"228":1,"253":1}}],["separation",{"2":{"3":1,"230":1}}],["stdio",{"0":{"198":1},"2":{"114":1}}],["steps",{"0":{"131":1,"154":1,"232":1,"341":1,"360":1},"2":{"60":1,"174":1}}],["step",{"0":{"23":1,"24":1,"25":1,"28":1,"29":1,"30":1,"31":1,"37":1,"38":1,"39":1,"43":1,"44":1,"45":1,"48":1,"49":1,"50":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"69":1,"70":1,"71":1,"74":1,"75":1,"76":1,"77":1,"80":1,"81":1,"82":1,"86":1,"87":1,"88":1},"2":{"35":1,"115":1}}],["studio",{"2":{"15":1,"19":1}}],["stopping",{"2":{"163":1}}],["stopped",{"2":{"159":1,"165":1}}],["stop",{"0":{"288":1},"2":{"114":1,"158":1,"279":1,"284":2,"324":1}}],["stops",{"2":{"14":1,"288":1}}],["stood",{"2":{"14":1}}],["stories",{"2":{"281":1}}],["storage",{"2":{"14":1,"17":1,"144":1,"213":1,"342":1}}],["story",{"0":{"14":1}}],["store",{"2":{"28":1,"156":1,"337":1}}],["stored",{"2":{"5":1,"18":2,"144":1,"153":2,"200":2,"206":1,"210":2,"213":1,"214":1,"314":1,"333":1,"344":1,"349":1}}],["stores",{"2":{"5":1,"123":1,"217":1,"222":1,"338":1}}],["style",{"2":{"14":1,"26":1,"33":1,"34":2,"45":1,"78":1,"126":1,"135":1,"219":1,"221":1,"254":1,"264":1}}],["strong",{"2":{"135":1}}],["strings",{"2":{"281":1}}],["string",{"2":{"126":1}}],["strict",{"2":{"17":1}}],["streamed",{"2":{"40":1,"83":1}}],["streaming",{"2":{"26":1,"33":1,"40":1,"46":1,"59":1,"68":1,"72":1,"78":1,"83":1,"135":3,"288":1}}],["stream",{"0":{"142":1},"2":{"14":1,"22":1,"24":1,"35":1,"142":1}}],["structured",{"2":{"1":1,"180":1,"204":1,"312":1}}],["still",{"2":{"13":1,"66":1,"145":2,"163":1,"227":1,"288":1}}],["stale",{"2":{"210":1}}],["stable",{"2":{"165":1,"265":1}}],["standardized",{"2":{"196":1}}],["standard",{"2":{"142":1,"198":1,"201":1,"230":1,"236":1,"253":1,"326":1}}],["stats",{"2":{"290":1}}],["statistics",{"0":{"213":1}}],["static",{"2":{"129":1}}],["states",{"0":{"267":1},"1":{"268":1},"2":{"266":1,"267":1,"314":1}}],["state",{"2":{"156":1,"164":1,"165":1,"166":1,"171":1,"267":1}}],["status",{"0":{"149":1,"151":1,"212":1,"262":1,"289":1,"290":1},"1":{"290":1,"291":1,"292":1,"293":1,"294":1},"2":{"6":1,"10":1,"116":1,"143":1,"149":2,"150":1,"151":1,"152":2,"159":1,"179":1,"190":1,"192":1,"193":1,"200":2,"211":1,"212":2,"213":1,"214":1,"227":1,"237":1,"262":2,"275":1,"278":1,"279":3,"285":2,"290":3,"313":1,"324":1}}],["staying",{"2":{"254":1}}],["stay",{"2":{"17":1,"253":1}}],["stays",{"2":{"15":1,"20":2}}],["stakes",{"2":{"14":1}}],["stack",{"2":{"11":1,"17":1,"20":1,"315":1,"316":1}}],["startup",{"2":{"322":2}}],["starting",{"0":{"255":1},"1":{"256":1,"257":1},"2":{"92":1,"119":1,"163":1,"252":1,"320":1}}],["starts",{"2":{"61":1,"64":1,"119":1,"317":1}}],["started",{"2":{"14":2,"151":1,"316":1}}],["start",{"0":{"11":1,"45":1,"82":1,"88":1,"92":1,"99":1,"313":1},"2":{"6":1,"35":1,"39":1,"44":1,"87":2,"92":1,"103":1,"108":1,"112":1,"114":1,"115":1,"158":1,"171":1,"196":1,"211":1,"256":1,"277":1,"319":1,"320":2,"324":1}}],["sogou",{"2":{"245":1}}],["sonnet",{"2":{"225":1}}],["software",{"2":{"156":1,"163":1}}],["solve",{"2":{"153":1}}],["sound",{"2":{"153":1,"356":1}}],["sources",{"2":{"196":1,"266":1,"267":1,"276":1}}],["source",{"0":{"102":1},"2":{"20":1,"100":1,"102":1,"109":1,"267":3,"268":3,"272":1,"273":2,"274":1}}],["social",{"2":{"33":1,"42":1,"45":1}}],["socket",{"0":{"61":1},"2":{"33":1,"61":2,"323":1}}],["some",{"2":{"200":1,"279":1,"316":1}}],["someone",{"2":{"16":1}}],["somewhere",{"2":{"14":2}}],["something",{"2":{"13":1,"14":3}}],["so",{"2":{"3":1,"7":1,"10":1,"14":2,"16":1,"42":1,"61":1,"116":1,"117":1,"118":1,"274":1,"276":1,"279":1,"317":2,"357":1}}],["ps",{"2":{"324":1}}],["p",{"2":{"303":1}}],["pm",{"2":{"236":1}}],["png",{"2":{"187":1}}],["python",{"2":{"317":1}}],["python3",{"2":{"198":1}}],["py",{"2":{"186":1}}],["pdf",{"2":{"129":1}}],["pdfs",{"2":{"124":1}}],["pipeline",{"2":{"326":1}}],["pins",{"2":{"325":1}}],["pin",{"2":{"319":1}}],["pitch",{"2":{"230":1,"354":2,"356":1,"357":1,"358":1}}],["pixel",{"2":{"126":1}}],["pixels",{"2":{"126":2}}],["picture",{"2":{"112":1}}],["pick",{"2":{"99":1,"116":1}}],["plus",{"2":{"106":1}}],["plan",{"2":{"277":1,"317":1}}],["plane",{"2":{"17":1}}],["playback",{"2":{"354":1}}],["playwright",{"2":{"124":1,"316":1}}],["playground",{"2":{"19":1}}],["placed",{"2":{"97":1,"160":1}}],["places",{"2":{"7":1}}],["plainly",{"2":{"14":1}}],["platforms",{"2":{"18":1,"24":1,"31":1,"33":1,"35":1,"38":1,"44":1,"49":1,"57":1,"65":1,"68":1,"70":1,"75":1,"81":1,"86":1,"111":1,"114":1,"132":1,"134":1}}],["platform",{"0":{"76":1,"108":1,"135":1},"2":{"1":1,"23":1,"35":4,"47":1,"48":1,"50":1,"52":1,"53":1,"54":1,"71":1,"74":1,"76":2,"84":1,"87":1,"95":2,"100":1,"135":1,"137":1,"138":2,"141":1,"312":1,"313":1,"314":1,"342":1}}],["phone",{"2":{"87":2}}],["phones",{"2":{"14":1}}],["photo",{"2":{"40":1}}],["pulled",{"2":{"322":1}}],["pulls",{"2":{"319":1}}],["pull",{"2":{"158":1,"324":1}}],["purposes",{"2":{"168":1}}],["purpose",{"2":{"135":1,"224":1,"242":1}}],["public",{"2":{"42":1,"62":1,"66":1,"67":1,"103":1,"352":1,"359":1}}],["published",{"2":{"58":1}}],["publish",{"0":{"58":1},"2":{"23":1,"43":1}}],["push",{"2":{"19":1}}],["port",{"2":{"176":1,"317":1,"323":3}}],["portal",{"2":{"28":1,"30":1,"33":1,"188":1}}],["portable",{"2":{"14":1,"16":1}}],["power",{"2":{"226":1,"227":1}}],["powered",{"2":{"124":1,"245":1}}],["powerful",{"2":{"14":1,"173":1,"245":1}}],["points",{"0":{"322":1},"2":{"221":1}}],["point",{"2":{"92":1}}],["policy",{"2":{"112":1,"119":1}}],["polite",{"2":{"14":1}}],["polling",{"2":{"38":1}}],["postgres",{"2":{"316":1,"319":2,"320":4,"323":1,"325":2}}],["postgresql",{"2":{"315":1,"316":1,"323":1,"325":1}}],["post",{"2":{"37":1,"240":1}}],["positional",{"2":{"279":1}}],["position",{"2":{"14":1}}],["parsing",{"0":{"281":1}}],["parse",{"2":{"278":1}}],["parallel",{"2":{"231":1}}],["parameters",{"2":{"210":1,"247":1}}],["parent",{"2":{"167":1,"183":1}}],["participant",{"2":{"254":1}}],["participate",{"2":{"36":1,"40":1,"59":1,"83":1}}],["part",{"2":{"14":1,"274":1}}],["packaged",{"2":{"169":1}}],["package",{"2":{"156":1}}],["pattern",{"0":{"236":1},"2":{"235":1,"236":2,"237":1,"240":1,"279":1,"303":2}}],["patterns",{"2":{"92":1}}],["paths",{"2":{"159":2,"276":1,"323":1}}],["path",{"2":{"92":1,"183":1,"305":2,"313":1,"323":1,"325":1}}],["pages",{"2":{"123":1}}],["page",{"0":{"113":1},"1":{"114":1},"2":{"48":1,"60":1,"65":1,"70":1,"112":1,"113":1,"115":1,"122":1,"123":1,"124":1,"125":2,"128":1,"129":1,"134":1,"144":1,"151":1,"157":1,"175":1,"176":1,"177":1,"181":1,"191":1,"197":1,"200":1,"206":1,"207":1,"216":1,"218":1,"224":1,"237":1,"245":1,"247":1,"249":1,"329":1,"336":1,"340":1,"343":1,"345":1,"348":1,"350":1,"353":1,"356":1,"357":1,"358":1}}],["passes",{"2":{"147":1}}],["password=your",{"2":{"320":2}}],["password>",{"2":{"37":1}}],["password",{"2":{"37":2,"176":1,"319":2,"320":7,"323":2,"325":3}}],["pasting",{"2":{"277":1}}],["paste",{"2":{"24":1,"31":1,"44":1,"49":1,"57":1,"70":1,"76":1,"139":1}}],["past",{"2":{"13":1}}],["pairs",{"2":{"198":1}}],["paired",{"2":{"15":1}}],["paid",{"2":{"14":1}}],["panels",{"2":{"313":1}}],["panel",{"0":{"149":1,"262":1},"2":{"6":1,"149":2,"152":1,"153":1,"214":1,"262":2,"275":1}}],["pending",{"2":{"118":1,"222":1}}],["percentage",{"2":{"227":1}}],["per",{"2":{"112":1,"116":1,"161":1,"252":1,"314":1}}],["performance",{"2":{"245":1}}],["performing",{"2":{"233":1}}],["perform",{"2":{"111":1,"129":1,"158":1,"188":1,"189":1,"194":1,"203":1}}],["persistence",{"2":{"159":1}}],["persistent",{"2":{"111":1,"122":1,"312":1}}],["persist",{"2":{"101":1}}],["personalized",{"2":{"204":1}}],["personality",{"2":{"111":1,"114":1}}],["personal",{"2":{"7":1,"13":1,"14":1,"33":2,"34":1,"73":1,"85":1,"103":1,"135":3}}],["person",{"2":{"3":1}}],["permission",{"2":{"64":1,"96":1,"291":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"303":1}}],["permissions",{"0":{"56":1,"282":1},"2":{"23":1,"30":1,"56":3,"62":1,"64":1,"178":1,"180":1}}],["permanently",{"2":{"20":1,"122":1,"143":1,"261":1}}],["periodic",{"2":{"6":1,"117":1,"189":1,"190":1,"233":1,"242":2,"253":1}}],["people",{"2":{"3":1,"16":1}}],["practical",{"2":{"265":1}}],["practice",{"2":{"1":1,"124":1,"146":1,"162":1,"254":1}}],["primarily",{"2":{"224":1,"238":1}}],["primary",{"2":{"116":1}}],["prior",{"2":{"145":1}}],["priority",{"0":{"97":1},"2":{"97":2,"101":1}}],["prioritized",{"2":{"91":1}}],["privileged",{"2":{"29":1}}],["privileges",{"2":{"14":1}}],["privacy",{"2":{"13":1,"19":1,"245":2}}],["privately",{"2":{"18":1}}],["private",{"0":{"106":1},"2":{"3":1,"16":1,"17":2,"22":1,"25":1,"26":1,"33":2,"40":1,"53":1,"62":1,"66":1,"67":1,"73":1,"77":1,"78":2,"83":1,"90":1,"92":2,"100":1,"103":2,"108":1,"112":1,"135":2,"156":1,"255":1}}],["pre",{"2":{"317":1}}],["prefix",{"2":{"324":1}}],["prefixed",{"2":{"281":1}}],["prefilled",{"2":{"196":1,"310":1}}],["prefer",{"2":{"277":1}}],["previously",{"2":{"273":1}}],["previous",{"2":{"252":1,"256":1}}],["preview",{"2":{"151":1,"187":2,"356":1}}],["precise",{"2":{"242":1}}],["precedence",{"2":{"97":1,"267":1}}],["prerequisites",{"0":{"205":1,"318":1}}],["pressure",{"2":{"145":1}}],["present",{"2":{"66":1,"334":1,"335":1}}],["presence",{"2":{"29":1}}],["preserved",{"2":{"256":1,"281":1}}],["preserves",{"2":{"145":1}}],["preserve",{"2":{"6":1}}],["presets",{"0":{"92":1,"103":1},"2":{"92":2,"314":1}}],["preset",{"0":{"99":1},"2":{"1":1,"92":2,"99":2,"105":1,"106":1,"107":1,"108":1,"112":1,"115":1,"119":2,"221":1}}],["prepare",{"0":{"43":1,"74":1},"2":{"74":1}}],["project",{"2":{"328":1,"344":2}}],["programmatically",{"2":{"240":1}}],["programming",{"2":{"186":1}}],["progress",{"2":{"14":2,"158":1,"288":1}}],["process",{"0":{"198":1},"2":{"178":1,"192":1,"198":1,"203":1,"211":2,"250":1,"315":1,"316":1}}],["providing",{"2":{"173":1,"204":1}}],["provided",{"2":{"138":1,"140":1,"203":1,"208":1}}],["provides",{"2":{"121":1,"124":1,"151":1,"155":1,"179":1,"182":1,"192":1,"196":1,"257":1,"262":1,"317":2,"328":1,"347":1}}],["provide",{"0":{"160":1},"1":{"161":1,"162":1,"163":1},"2":{"69":1,"75":1,"160":1,"162":1,"165":1,"178":1,"194":1,"215":1,"250":2}}],["provider",{"0":{"175":1,"176":1,"217":1,"218":1,"247":1,"249":1,"326":1,"329":1,"330":1,"336":1,"342":1,"343":1,"344":1,"345":1,"347":1,"348":1,"349":1,"350":1,"353":1},"1":{"176":1,"218":1,"219":1,"327":1,"328":1,"329":1,"330":1,"331":2,"332":1,"333":1,"334":1,"335":1,"336":1,"337":1,"343":1,"344":1,"345":1,"346":1,"348":1,"349":1,"350":1,"351":1},"2":{"9":2,"10":1,"18":1,"115":1,"116":4,"131":1,"144":1,"146":1,"153":1,"174":2,"175":1,"176":3,"178":1,"200":1,"205":5,"206":2,"210":1,"211":1,"212":2,"214":1,"215":3,"217":1,"218":4,"219":2,"220":1,"221":1,"222":2,"223":3,"230":1,"244":1,"245":1,"247":2,"248":3,"249":2,"250":1,"297":3,"298":1,"299":1,"307":1,"317":2,"323":1,"326":2,"329":3,"330":1,"331":2,"335":1,"336":4,"337":1,"338":3,"339":2,"340":5,"341":4,"342":1,"343":3,"344":1,"345":2,"347":1,"348":3,"349":1,"350":2,"353":2,"357":3,"358":2,"359":1,"360":1}}],["providers",{"0":{"9":1,"173":1,"216":1,"220":1,"243":1,"248":1,"331":1,"338":1,"339":1,"357":1,"359":1},"1":{"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"217":1,"218":1,"219":1,"220":1,"221":2,"222":2,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"339":1,"340":1,"341":1,"358":1,"359":1,"360":1},"2":{"5":1,"11":1,"33":2,"115":3,"116":2,"195":1,"205":1,"215":1,"216":5,"219":3,"224":2,"229":1,"230":1,"232":2,"245":1,"278":1,"285":3,"294":2,"313":2,"314":1,"329":1,"339":1,"340":1,"343":1,"348":1,"353":1,"357":1,"358":1}}],["probing",{"2":{"314":1}}],["probe",{"2":{"120":1,"202":1,"310":1}}],["problematic",{"2":{"107":1}}],["problems",{"2":{"5":1,"153":1}}],["proxy",{"2":{"74":2}}],["profiles",{"2":{"334":1}}],["profile",{"2":{"50":1,"71":1,"112":1,"124":1,"130":1,"316":2,"317":5,"320":3,"321":2,"327":2,"334":2,"335":1}}],["protocol",{"2":{"33":1,"36":1,"195":1,"217":2,"218":1}}],["product",{"2":{"20":1,"313":1}}],["prompted",{"2":{"87":1}}],["prompts",{"2":{"69":1,"130":1,"190":1,"319":1}}],["prompt",{"2":{"5":1,"144":1,"194":1,"206":1,"210":1,"227":1,"242":1,"254":1,"264":1,"273":1,"275":1,"307":1,"319":1}}],["bm25",{"2":{"317":1}}],["bing",{"2":{"244":1,"245":1}}],["bindings",{"0":{"173":1,"177":1},"1":{"174":1,"175":1,"176":1,"177":1,"178":2,"179":1,"180":1},"2":{"114":2,"115":1,"285":1,"294":2}}],["binding",{"0":{"178":1},"2":{"50":1,"71":1,"174":1,"178":1}}],["bind",{"0":{"50":1,"71":1},"2":{"3":1,"50":1,"71":2,"338":1}}],["blocked",{"0":{"107":1}}],["block",{"2":{"102":1}}],["blocks",{"2":{"51":1,"72":1,"96":1}}],["blogs",{"0":{"21":1},"2":{"21":1}}],["b",{"2":{"37":1}}],["brave",{"2":{"244":1,"245":1,"247":1}}],["breadcrumb",{"2":{"183":1}}],["breaks",{"2":{"13":1}}],["bridges",{"2":{"133":1}}],["brief",{"2":{"16":1,"235":1}}],["browsing",{"0":{"183":1},"2":{"116":1,"182":1}}],["browses",{"2":{"305":1}}],["browse",{"2":{"114":1,"243":1,"285":1}}],["browser",{"0":{"123":1,"124":1,"125":1,"126":1,"128":1,"130":1,"300":1},"1":{"124":1,"125":1,"126":1,"127":2,"128":1,"129":1,"130":1,"131":1},"2":{"8":1,"30":1,"114":1,"115":1,"116":2,"123":6,"124":4,"125":4,"126":5,"128":3,"129":4,"130":6,"232":1,"285":2,"300":4,"316":3,"317":1,"319":2,"320":3,"321":1,"322":1,"323":2,"325":5}}],["broad",{"0":{"7":1},"2":{"99":1}}],["bundled",{"2":{"221":1}}],["budget",{"2":{"147":1,"225":1}}],["business",{"2":{"33":1}}],["buildkit",{"2":{"315":1}}],["build",{"2":{"14":1,"19":1,"130":3,"317":1,"319":1}}],["building",{"2":{"14":1}}],["buildable",{"2":{"13":1}}],["builtin",{"2":{"329":1}}],["built",{"0":{"280":1,"326":1,"329":1,"330":1},"1":{"327":1,"328":1,"329":1,"330":1,"331":2,"332":1,"333":1,"334":1,"335":1,"336":1,"337":1},"2":{"1":1,"3":1,"8":1,"19":1,"20":1,"33":1,"115":1,"116":1,"129":1,"131":1,"186":1,"205":1,"230":1,"255":1,"278":1,"280":1,"287":1,"308":1,"317":2,"326":2,"339":1,"341":1,"356":1,"358":1}}],["buttons",{"2":{"124":1}}],["button",{"2":{"112":1,"167":1,"200":1,"201":1,"202":1,"248":1,"257":1,"356":1,"358":1}}],["but",{"2":{"13":2,"14":1,"16":1,"66":2,"102":2,"103":1,"145":1,"153":1,"227":1,"256":1,"275":1,"276":1}}],["bypasses",{"2":{"97":1}}],["by",{"2":{"9":1,"10":1,"18":2,"19":1,"33":1,"37":1,"43":1,"56":1,"62":1,"63":1,"94":1,"105":1,"116":1,"124":1,"130":1,"138":1,"144":1,"145":1,"162":1,"179":1,"183":1,"193":1,"201":1,"202":1,"203":3,"209":1,"210":1,"215":1,"218":2,"224":1,"236":1,"253":1,"257":3,"260":1,"262":2,"263":1,"292":2,"320":1}}],["batch",{"2":{"201":1}}],["battery",{"2":{"14":1}}],["bashsudo",{"2":{"320":2,"321":1}}],["bashgit",{"2":{"320":1}}],["bashdocker",{"2":{"317":1,"324":1,"334":1,"335":1}}],["bashbrowser",{"2":{"130":1}}],["bashcurl",{"2":{"37":1,"319":5}}],["basics",{"0":{"217":1},"1":{"218":1,"219":1}}],["basic",{"0":{"340":1,"358":1},"2":{"54":1,"60":1,"61":1,"112":1}}],["base64",{"2":{"320":1}}],["base",{"2":{"14":1,"15":2,"38":1,"159":1,"217":1,"218":1,"247":1,"323":1,"334":2,"335":1,"344":2,"349":1}}],["based",{"0":{"97":1,"220":1,"234":1},"1":{"221":1,"222":1},"2":{"7":1,"114":2,"137":1,"180":1,"200":1,"206":1,"218":1,"316":1,"327":1,"333":1,"339":2}}],["backup",{"2":{"168":1,"201":1}}],["background",{"2":{"147":2,"159":1}}],["backend",{"2":{"116":1,"205":1,"212":1,"215":1,"221":1,"326":1,"338":1,"346":1,"347":1,"351":1}}],["backed",{"2":{"1":1,"160":1,"219":1,"222":1}}],["back",{"2":{"14":1,"67":1,"72":1,"116":1,"145":1,"184":1,"200":1}}],["box",{"2":{"317":1}}],["body",{"2":{"265":1}}],["bocha",{"2":{"245":1}}],["bound",{"2":{"234":1}}],["boundaries",{"2":{"17":1,"19":1}}],["boundary",{"2":{"4":1,"13":1}}],["bold",{"2":{"51":1,"72":1}}],["botname",{"2":{"281":1}}],["bottom",{"2":{"97":2,"122":1}}],["botfather",{"2":{"69":2}}],["both",{"2":{"19":1,"130":1,"242":1,"259":1,"334":1}}],["bot",{"0":{"3":1,"29":1,"30":1,"37":1,"39":1,"48":1,"55":1,"62":1,"63":1,"66":1,"69":1,"80":1,"91":1,"105":1,"106":1,"107":1,"111":1,"112":1,"113":1,"115":1,"122":1,"128":1,"129":1,"132":1,"155":1,"174":1,"177":1,"180":1,"181":1,"188":1,"189":1,"194":1,"196":1,"203":1,"204":1,"215":1,"239":1,"249":1,"250":1,"264":1,"336":1,"345":1,"350":1,"355":1},"1":{"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":2,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"178":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"190":1,"191":1,"192":1,"193":1,"194":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1},"2":{"1":3,"4":1,"6":2,"7":1,"8":1,"10":1,"11":2,"18":3,"19":1,"23":2,"24":1,"25":2,"27":1,"28":2,"30":2,"31":2,"33":1,"35":3,"36":2,"37":1,"38":3,"39":2,"42":1,"43":3,"44":2,"45":1,"47":2,"48":2,"49":1,"50":2,"52":2,"55":2,"57":2,"58":1,"59":1,"60":1,"61":1,"62":2,"63":1,"64":2,"65":2,"66":4,"68":1,"69":7,"70":1,"71":3,"72":4,"75":1,"77":1,"79":1,"80":3,"81":4,"82":2,"84":1,"85":1,"86":1,"88":1,"91":2,"92":1,"94":4,"96":2,"97":1,"98":1,"99":1,"100":1,"103":2,"106":2,"107":1,"108":1,"109":1,"111":1,"112":4,"113":1,"114":3,"115":2,"116":3,"117":1,"119":2,"120":2,"121":1,"122":4,"123":4,"128":2,"129":2,"131":2,"132":1,"133":1,"134":2,"138":1,"140":1,"144":1,"145":1,"146":1,"147":2,"151":1,"153":1,"154":1,"155":2,"156":2,"157":2,"158":1,"159":1,"160":2,"161":1,"164":2,"172":1,"173":1,"174":2,"177":2,"178":5,"179":1,"180":2,"181":2,"183":1,"184":2,"185":1,"186":1,"188":2,"189":1,"190":1,"191":1,"192":2,"194":3,"195":1,"196":2,"197":1,"198":1,"202":1,"203":1,"205":3,"206":1,"207":2,"208":1,"212":1,"213":1,"215":3,"228":1,"232":2,"233":1,"234":2,"237":2,"239":3,"240":1,"243":1,"244":1,"249":1,"250":2,"251":2,"252":4,"253":7,"254":2,"256":3,"259":1,"263":3,"264":2,"265":1,"266":1,"269":1,"275":1,"281":1,"282":1,"285":4,"288":1,"290":1,"291":1,"294":1,"296":2,"297":1,"301":1,"303":1,"304":1,"305":2,"309":2,"310":2,"313":2,"316":1,"336":2,"337":3,"338":2,"340":2,"341":1,"342":1,"345":1,"346":2,"350":1,"351":2,"355":2,"356":1,"357":3,"358":2}}],["bots",{"2":{"1":1,"3":2,"4":2,"8":1,"11":3,"18":6,"22":1,"30":1,"33":3,"40":1,"48":1,"53":1,"103":4,"111":1,"112":1,"124":2,"128":1,"155":1,"196":1,"204":1,"231":1,"240":1,"249":1,"278":1,"312":1,"336":1,"345":1,"347":1,"350":1,"357":1}}],["below",{"2":{"316":1}}],["belief",{"2":{"19":1}}],["begin",{"2":{"82":1,"313":1}}],["been",{"2":{"75":1,"267":1}}],["best",{"2":{"42":1,"45":1,"103":5}}],["before",{"2":{"23":1,"76":1,"87":1,"100":1,"162":1,"205":1,"212":1,"277":1,"278":1,"288":1,"307":1,"320":1,"356":1}}],["better",{"2":{"317":1,"328":1}}],["bet",{"2":{"20":1}}],["between",{"2":{"7":1,"14":1,"138":1,"141":1,"183":1,"199":1,"251":1,"256":1,"257":1,"266":1}}],["become",{"2":{"153":2,"171":1,"210":1,"211":1,"256":1,"268":1,"272":1,"274":1}}],["becomes",{"2":{"14":1,"16":1,"152":1,"244":1,"268":2,"338":1}}],["because",{"2":{"14":1,"227":1,"230":1,"259":1,"266":1}}],["being",{"2":{"14":1,"276":1,"317":1}}],["behind",{"2":{"14":1}}],["behavior",{"0":{"163":1},"2":{"8":1,"11":1,"26":1,"78":1,"110":1,"114":1,"115":1,"116":2,"118":1,"120":1,"123":1,"126":1,"255":1,"264":1,"287":1,"323":1}}],["behaves",{"2":{"1":1,"254":1,"276":1}}],["be",{"2":{"3":1,"7":1,"18":1,"19":1,"66":1,"101":1,"118":1,"121":1,"122":1,"147":1,"152":1,"160":1,"178":1,"191":1,"227":1,"228":1,"241":1,"250":1,"267":2,"319":1,"334":1,"335":1,"347":1}}],["equivalent",{"2":{"279":2}}],["either",{"2":{"264":1,"266":1}}],["error",{"2":{"162":1,"192":1,"212":1}}],["errors",{"2":{"126":1,"193":1}}],["estimated",{"2":{"118":1,"147":2}}],["especially",{"2":{"110":1,"222":1,"256":1,"263":1}}],["efficient",{"2":{"317":1}}],["efforts",{"2":{"226":1}}],["effort",{"2":{"116":2,"226":1,"296":1}}],["effects",{"0":{"96":1}}],["effect",{"0":{"94":1},"2":{"92":5,"94":1,"96":1,"97":1,"99":1,"100":1,"105":1,"106":1,"107":1,"110":1,"119":1,"296":1}}],["effectively",{"2":{"216":1}}],["effective",{"0":{"275":1},"2":{"10":1,"159":1,"163":1,"262":1,"267":2,"268":5,"272":1,"275":2,"314":1}}],["etc",{"0":{"256":1},"2":{"39":1,"162":1,"317":1}}],["elements",{"2":{"123":1}}],["element",{"2":{"37":1,"39":1,"41":1}}],["else",{"2":{"14":1,"16":1}}],["e",{"2":{"37":2,"38":2,"69":3,"95":2,"176":1,"183":1,"186":1,"187":1,"198":2,"199":1,"211":1,"235":3,"241":1,"247":2,"319":1,"325":1,"349":1,"357":2,"358":1}}],["easy",{"2":{"18":1}}],["each",{"2":{"1":2,"4":1,"6":1,"18":3,"19":1,"35":1,"48":1,"94":1,"96":1,"102":1,"106":1,"196":1,"215":1,"242":1,"251":1,"252":1,"259":1,"263":2,"266":1,"267":1,"326":1}}],["evaluated",{"2":{"97":1,"101":1,"236":1,"291":1}}],["evaluation",{"0":{"97":1},"2":{"110":1}}],["even",{"2":{"189":1,"290":1}}],["event",{"2":{"57":1,"63":2,"139":1}}],["events",{"0":{"57":1,"63":1},"2":{"22":1,"43":1,"57":1,"63":1,"66":1,"142":1,"199":1}}],["eventually",{"2":{"14":1}}],["everyday",{"2":{"116":1,"259":1}}],["everyone",{"2":{"100":1,"105":1,"107":1}}],["everything",{"2":{"17":1,"20":1,"92":1,"231":1,"315":1}}],["every",{"2":{"1":1,"10":1,"13":1,"14":1,"16":1,"18":1,"95":1,"103":1,"155":1,"181":1,"192":1,"236":5,"239":1,"240":1}}],["evolves",{"2":{"14":1}}],["economics",{"2":{"14":1}}],["emmamultilingualneural",{"2":{"354":1}}],["embedded",{"2":{"315":1,"316":1}}],["embeddings",{"2":{"206":1,"327":1}}],["embedding",{"0":{"229":1},"2":{"9":1,"116":1,"215":1,"216":1,"222":1,"224":2,"229":3,"230":1,"231":1,"317":4,"327":2,"328":1,"330":2,"335":1,"339":1}}],["embed",{"2":{"30":1}}],["empty",{"2":{"14":1,"81":1,"112":1,"116":1,"227":1,"235":1,"344":1}}],["emails",{"2":{"173":1,"178":2,"179":1,"180":1,"239":1,"240":2}}],["email",{"0":{"173":1,"174":1,"175":1,"177":1,"294":1},"1":{"174":1,"175":1,"176":2,"177":1,"178":2,"179":1,"180":1},"2":{"1":1,"7":1,"8":1,"33":2,"114":2,"174":5,"175":2,"176":3,"177":2,"178":3,"179":5,"180":3,"285":2,"294":4,"312":1,"323":1}}],["editor",{"2":{"182":1,"186":1,"196":1,"270":1}}],["edit",{"0":{"271":1},"2":{"18":1,"114":1,"127":1,"186":1,"209":1,"248":1,"266":1,"271":1,"274":2,"320":1,"331":1,"337":1}}],["editing",{"0":{"185":1},"1":{"186":1,"187":1},"2":{"8":1,"10":1,"158":1,"271":1,"326":1}}],["edge",{"0":{"352":1,"353":1},"1":{"353":1,"354":1,"355":1,"356":1},"2":{"9":1,"19":1,"116":1,"219":3,"230":2,"352":2,"353":2,"354":1,"355":2,"357":2,"358":1,"359":2,"360":1}}],["exchange",{"2":{"254":1}}],["exchanged",{"2":{"200":1}}],["exceptions",{"2":{"220":1}}],["except",{"2":{"92":1,"107":1}}],["existing",{"2":{"163":1,"167":1,"209":1,"257":1,"276":1}}],["exists",{"0":{"145":1},"2":{"274":1}}],["exist",{"2":{"135":1,"158":1,"161":1,"162":1}}],["exa",{"2":{"245":1}}],["exact",{"2":{"43":1,"162":1,"225":1,"227":1,"280":1}}],["examples",{"0":{"104":1,"268":1},"1":{"105":1,"106":1,"107":1,"108":1,"109":1},"2":{"161":1,"217":1,"236":1,"279":1,"280":1,"297":1,"303":1,"305":1}}],["example",{"2":{"43":1,"102":1,"230":1,"281":3,"296":1}}],["extraction",{"2":{"326":1,"338":1,"346":1,"351":1}}],["extracted",{"2":{"170":1,"263":1}}],["extract",{"2":{"37":1,"208":1,"337":1}}],["extending",{"0":{"196":1}}],["extend",{"2":{"11":1,"264":1}}],["external",{"0":{"256":1},"2":{"8":1,"35":1,"95":1,"195":1,"196":1,"206":1,"233":1,"243":1,"317":1,"328":1}}],["executable",{"2":{"198":1}}],["executing",{"2":{"158":1}}],["executions",{"2":{"235":1}}],["execution",{"0":{"241":1},"2":{"1":1,"8":1,"17":1,"114":2,"117":1,"192":1,"237":1,"242":1,"253":1,"293":1}}],["executes",{"2":{"198":1,"234":1,"241":1}}],["execute",{"2":{"18":1,"121":1,"155":1,"156":1,"190":1,"191":1}}],["expiration",{"2":{"323":1}}],["expires",{"2":{"87":1}}],["expression",{"2":{"235":1,"239":1,"242":1}}],["expressions",{"2":{"18":1,"233":1}}],["explain",{"2":{"265":1}}],["explanation",{"2":{"235":1}}],["explicitly",{"2":{"66":1,"94":2,"254":1,"255":1}}],["explicit",{"2":{"17":1,"19":1,"226":1,"287":1}}],["expand",{"2":{"161":1}}],["exposed",{"2":{"162":1,"202":1,"203":1,"224":1}}],["expose",{"2":{"160":1,"223":1,"272":1}}],["exposes",{"2":{"6":1,"116":1,"118":1,"226":1,"262":1}}],["exporting",{"2":{"168":1}}],["export",{"0":{"168":1,"169":1},"1":{"169":1,"170":1,"171":1},"2":{"114":1,"129":1,"169":1,"201":2,"314":1}}],["expect",{"2":{"254":1}}],["expensive",{"2":{"16":1}}],["experienced",{"2":{"19":1}}],["experience",{"2":{"13":1,"182":1}}],["env",{"2":{"198":1,"320":1}}],["environment",{"0":{"325":1},"2":{"1":1,"19":1,"23":1,"116":1,"123":1,"155":1,"157":1,"164":1,"172":1,"198":1,"266":1,"276":1,"319":2}}],["ensure",{"2":{"165":1}}],["ensures",{"2":{"155":1}}],["enabling",{"2":{"133":1,"140":1,"189":1,"243":1}}],["enables",{"2":{"50":1,"71":1,"126":1,"265":1,"273":1}}],["enabled",{"2":{"25":1,"38":1,"39":1,"45":1,"49":2,"66":2,"76":1,"82":1,"88":1,"90":1,"116":1,"117":1,"118":1,"147":2,"178":3,"191":1,"235":1,"237":1,"240":1,"296":3,"316":1}}],["enable",{"0":{"55":1,"61":1,"77":1,"273":1},"2":{"23":1,"24":1,"29":1,"31":1,"35":1,"38":1,"44":1,"49":3,"55":1,"56":1,"61":1,"63":1,"65":1,"70":1,"77":1,"81":1,"89":1,"117":1,"118":1,"138":1,"142":1,"143":2,"147":1,"161":1,"201":1,"273":1,"282":1,"303":2,"317":3,"334":1}}],["en",{"2":{"126":1,"296":2,"354":1}}],["engines",{"0":{"245":1},"2":{"243":1,"245":2,"325":1}}],["engine",{"2":{"116":1,"126":1,"247":2}}],["engineering",{"2":{"18":1}}],["encodes",{"2":{"317":1}}],["encoding",{"2":{"74":1,"75":1,"76":1,"316":1,"317":3,"323":1,"328":1,"334":1}}],["encountered",{"2":{"192":1}}],["encryption",{"2":{"75":1,"76":2,"141":1}}],["encrypted",{"2":{"74":1}}],["endpoints",{"2":{"217":1}}],["endpoint",{"2":{"81":1,"199":1,"218":1,"349":1}}],["ending",{"2":{"69":1}}],["end",{"2":{"23":1}}],["enough",{"2":{"14":1,"145":1}}],["entire",{"2":{"91":1,"95":1,"100":1,"102":1,"113":1}}],["entry",{"2":{"87":1,"259":1,"310":1}}],["entries",{"2":{"5":1,"153":1,"193":1,"209":1,"210":1,"213":1,"214":1,"307":1,"341":1}}],["enterprise",{"2":{"33":3,"53":1,"135":2}}],["enter",{"2":{"13":1,"44":1,"54":1,"161":2,"162":1,"208":1}}],["ok",{"2":{"192":1}}],["okay",{"2":{"14":1}}],["observing",{"2":{"254":1}}],["observation",{"2":{"253":1}}],["observe",{"2":{"129":1,"263":1}}],["obtain",{"2":{"35":1,"37":1}}],["older",{"2":{"144":1,"145":2,"153":1,"193":1,"210":1,"214":1,"266":1,"307":1}}],["old",{"2":{"118":1,"147":1,"193":1,"255":1,"256":1,"268":1,"287":1}}],["opus",{"2":{"354":1}}],["optimized",{"2":{"263":1}}],["options",{"2":{"160":1,"161":1,"296":2,"354":2}}],["option",{"2":{"37":2,"296":1}}],["optionally",{"2":{"100":1,"116":1,"210":1}}],["optional",{"0":{"50":1,"71":1,"89":1},"2":{"34":1,"49":1,"102":1,"112":1,"116":3,"117":1,"118":1,"126":4,"141":1,"160":1,"216":1,"235":1,"242":1,"316":1,"323":1}}],["opt",{"2":{"198":1}}],["openssl",{"2":{"320":1}}],["opensearch",{"2":{"317":2,"328":2,"334":1}}],["opens",{"2":{"310":1}}],["opening",{"2":{"263":1}}],["openviking",{"0":{"347":1,"348":1,"349":1,"350":1},"1":{"348":1,"349":1,"350":1,"351":1},"2":{"205":1,"339":1,"341":1,"347":1,"348":1,"349":2,"350":1,"351":2}}],["open",{"0":{"105":1,"107":1},"2":{"20":1,"23":1,"24":1,"30":1,"39":1,"44":1,"48":1,"52":1,"53":1,"54":1,"60":2,"65":1,"66":1,"69":1,"71":1,"75":1,"84":1,"87":1,"98":1,"99":1,"103":1,"121":1,"123":1,"128":1,"149":2,"161":1,"186":1,"200":1,"205":1,"218":1,"269":1,"309":1,"310":1,"336":1,"340":2,"345":1,"350":1,"355":1,"358":1}}],["openclaw",{"0":{"19":1},"2":{"19":1}}],["openai",{"0":{"221":1},"2":{"9":3,"217":2,"218":1,"219":6,"220":1,"221":1,"297":2,"317":1}}],["operational",{"2":{"212":1}}],["operation",{"2":{"171":1,"210":1,"279":1}}],["operations",{"0":{"10":1,"143":1,"157":1,"182":1,"201":1,"207":1},"1":{"158":1,"183":1,"184":1,"208":1,"209":1},"2":{"158":1,"188":1,"337":1,"346":2,"351":2}}],["operates",{"2":{"155":1,"326":1}}],["operate",{"2":{"11":1,"20":1}}],["oem",{"2":{"14":1}}],["os",{"2":{"14":1}}],["occasional",{"2":{"14":1}}],["outgoing",{"2":{"178":1,"180":1}}],["outbox",{"0":{"179":1},"2":{"114":1,"179":1,"180":1,"285":1,"294":2}}],["outbound",{"2":{"22":1,"26":1,"62":1,"74":1,"78":1}}],["outcome",{"2":{"97":1}}],["outside",{"2":{"33":1,"162":1}}],["output",{"2":{"26":1,"45":1,"46":1,"116":2,"198":1,"225":1,"226":1,"227":1,"228":1,"229":1,"254":1,"282":1,"305":1,"354":1}}],["out",{"2":{"14":1,"145":1,"317":1}}],["outward",{"2":{"6":1}}],["our",{"2":{"13":1,"14":1}}],["overlay",{"2":{"321":1}}],["overlapping",{"2":{"210":1}}],["over",{"2":{"13":1,"172":1,"199":1,"210":1,"354":1}}],["overview",{"0":{"13":1,"33":1,"114":1},"1":{"34":1,"35":1},"2":{"114":1,"313":1,"314":1}}],["oauth2",{"2":{"30":1}}],["oauth",{"0":{"200":1,"220":1},"1":{"221":1,"222":1},"2":{"10":1,"33":1,"62":1,"64":2,"114":1,"200":6,"217":1,"219":2,"221":1,"310":1,"314":1}}],["ongoing",{"2":{"254":1}}],["only",{"2":{"48":1,"92":4,"94":1,"99":1,"100":1,"102":2,"103":5,"106":1,"108":2,"109":1,"112":1,"116":1,"120":1,"129":1,"146":1,"160":1,"210":1,"219":1,"253":3,"254":1,"267":1,"275":2,"282":3,"317":1,"320":1,"327":1,"328":1,"330":1,"333":1}}],["online",{"2":{"20":1}}],["on",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"13":2,"14":1,"16":1,"17":1,"20":2,"23":1,"26":1,"34":1,"35":3,"36":1,"37":1,"42":1,"45":1,"48":1,"69":1,"71":1,"78":1,"87":2,"95":1,"108":1,"113":1,"129":1,"133":1,"135":1,"137":1,"145":1,"162":2,"180":1,"184":1,"191":1,"200":1,"202":1,"206":1,"229":1,"235":1,"247":1,"248":1,"251":1,"255":2,"257":1,"260":1,"263":1,"271":1,"287":1,"315":1,"317":2,"320":1,"324":1,"356":1}}],["once",{"2":{"7":1,"48":1,"58":1,"82":1,"87":1,"113":1,"123":1,"201":1,"202":1,"203":1,"244":1,"274":1,"337":1,"346":1,"351":1}}],["ones",{"2":{"145":1,"266":1}}],["one",{"0":{"319":1},"2":{"7":1,"20":1,"34":1,"68":1,"73":1,"87":1,"115":1,"124":1,"153":2,"161":2,"205":1,"210":1,"214":1,"216":2,"217":2,"231":1,"252":1,"263":1,"267":2,"273":1,"280":2,"281":1,"307":1,"326":1,"338":1,"340":1}}],["often",{"2":{"117":1,"191":1,"254":2}}],["offs",{"2":{"265":1}}],["off",{"0":{"333":1},"2":{"14":1,"191":1,"211":1,"273":1,"327":1,"330":1,"339":1}}],["official",{"0":{"34":1,"41":1,"52":1,"73":1,"74":1,"84":1,"141":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"1":1,"7":2,"22":1,"30":1,"33":2,"34":2,"47":1,"57":1,"69":2,"73":2,"74":1,"75":1,"76":1,"77":1,"135":5,"141":2,"312":1,"319":1}}],["of",{"2":{"5":1,"8":1,"13":2,"14":3,"18":1,"38":1,"40":1,"50":1,"68":1,"71":1,"95":2,"107":1,"115":1,"116":1,"129":1,"144":1,"154":1,"157":1,"159":1,"164":1,"167":1,"172":2,"179":2,"192":2,"194":2,"196":1,"198":2,"199":2,"205":1,"206":1,"212":1,"213":1,"221":1,"231":1,"235":3,"236":3,"239":1,"252":1,"253":2,"256":1,"262":1,"263":2,"267":1,"274":1,"277":2,"279":1,"281":1,"307":1,"316":1,"317":2,"323":1,"326":1,"328":1,"340":1,"342":1}}],["others",{"2":{"263":1,"316":1}}],["other",{"0":{"263":1},"2":{"4":1,"18":1,"108":1,"155":1,"212":1,"242":1,"245":1,"247":1,"251":1,"253":1}}],["orchestrated",{"2":{"315":1}}],["oriented",{"2":{"135":1,"221":1,"242":1,"253":1}}],["ordering",{"2":{"97":1,"314":1}}],["order",{"2":{"97":1,"101":1,"110":1,"266":1}}],["organized",{"2":{"357":1}}],["organize",{"2":{"260":1}}],["organization",{"2":{"23":1,"56":1,"79":1,"344":2}}],["org",{"2":{"37":1,"38":2}}],["or",{"2":{"1":1,"3":2,"6":1,"18":2,"23":1,"25":1,"33":1,"35":1,"37":1,"39":1,"40":1,"42":1,"43":1,"53":1,"66":1,"72":1,"75":1,"80":1,"82":1,"87":1,"91":2,"94":1,"97":1,"99":2,"100":2,"103":1,"105":1,"106":1,"107":1,"108":1,"110":1,"112":2,"117":1,"118":2,"120":1,"124":2,"126":3,"129":2,"130":1,"138":2,"144":1,"147":1,"150":1,"151":3,"153":2,"155":2,"158":1,"159":1,"161":3,"162":1,"163":1,"165":1,"168":1,"171":1,"174":1,"180":1,"184":2,"188":1,"190":1,"191":1,"192":2,"193":1,"194":1,"196":1,"199":1,"201":3,"205":1,"206":1,"209":1,"210":2,"212":1,"214":1,"215":1,"216":2,"217":1,"218":1,"223":1,"225":1,"226":1,"229":1,"230":1,"233":1,"244":1,"251":1,"255":1,"256":2,"257":1,"259":1,"264":1,"265":2,"266":3,"268":1,"273":1,"274":1,"278":1,"279":2,"287":1,"290":1,"291":1,"292":1,"293":1,"296":7,"297":3,"298":1,"299":1,"300":1,"301":1,"304":1,"307":1,"310":1,"311":1,"315":1,"319":1,"320":3,"328":1,"330":1,"337":1,"339":1,"341":1,"347":1}}],["owner",{"2":{"92":1,"94":1,"97":1,"106":1,"215":1,"282":3,"296":1,"297":2,"298":1,"299":1,"300":1,"301":1,"303":5}}],["own",{"2":{"1":3,"4":1,"18":3,"111":1,"116":1,"117":1,"155":1,"178":1,"181":1,"188":1,"196":1,"245":1,"251":1,"252":1,"271":1,"274":1,"339":1}}],["lt",{"2":{"266":1,"280":3,"297":6,"298":1,"299":1,"300":1,"301":2,"303":8,"305":1}}],["learn",{"2":{"313":1}}],["leave",{"2":{"227":1,"235":1}}],["leaving",{"2":{"35":1,"185":1}}],["legacy",{"2":{"266":2,"268":1,"274":1,"276":1,"277":1}}],["levels",{"2":{"226":1}}],["level",{"0":{"284":1},"2":{"61":2,"64":1,"65":1,"95":2,"102":1,"116":1,"210":1,"236":1,"279":1,"280":1,"290":1,"323":1}}],["left",{"2":{"28":1,"54":1,"112":1}}],["less",{"2":{"20":1,"254":1}}],["lets",{"2":{"92":1,"102":1,"129":1,"228":1}}],["let",{"2":{"3":1}}],["lightweight",{"2":{"317":1,"327":1}}],["lighter",{"2":{"19":1,"317":1}}],["libraries",{"2":{"163":1}}],["linux",{"2":{"324":1}}],["line",{"2":{"161":1,"179":1,"198":1,"321":1}}],["link",{"2":{"140":1,"174":1}}],["linked",{"2":{"71":1,"110":1,"222":1,"291":2}}],["links",{"2":{"30":1,"51":1,"72":1,"124":1,"314":1}}],["living",{"2":{"115":1}}],["lived",{"2":{"35":1}}],["live",{"2":{"14":1,"103":1,"266":1,"280":1}}],["listen",{"2":{"323":1}}],["listed",{"2":{"106":1,"267":1}}],["lists",{"2":{"202":1,"259":1,"304":1,"328":1}}],["list",{"2":{"91":1,"107":1,"137":1,"151":1,"162":2,"166":1,"167":1,"183":1,"198":1,"202":1,"209":1,"237":2,"253":1,"279":2,"280":1,"285":1,"297":4,"298":2,"299":2,"300":2,"301":2,"303":3,"304":2,"305":4,"317":1,"330":1,"344":1,"349":1}}],["limit",{"2":{"152":1,"227":1,"235":1,"242":1}}],["limited",{"2":{"87":1}}],["limitations",{"2":{"46":1}}],["lifecycle",{"0":{"158":1},"2":{"113":1,"114":1,"157":1,"172":1}}],["life",{"2":{"14":1}}],["likely",{"2":{"254":1}}],["like",{"0":{"265":1},"2":{"1":1,"6":1,"14":1,"17":1,"18":1,"20":2,"57":1,"124":1,"129":1,"158":1,"174":1,"244":1,"254":3,"276":1}}],["llm",{"2":{"19":1,"116":1,"191":1,"278":1}}],["llms",{"2":{"14":1,"224":1}}],["ll",{"2":{"14":1}}],["launch",{"2":{"158":1}}],["languages",{"2":{"186":1,"317":1,"328":1,"352":1,"354":1,"359":1}}],["language",{"2":{"114":1,"116":2,"235":1,"239":1,"242":1,"296":3,"317":1,"354":1}}],["last",{"2":{"18":1,"259":2,"292":1}}],["layered",{"2":{"280":1}}],["layers",{"2":{"119":1,"357":1}}],["layer",{"2":{"14":1,"15":1}}],["later",{"2":{"92":1,"163":1,"164":1,"274":1}}],["latest",{"2":{"21":1,"183":1,"193":1,"279":1,"290":3,"319":1,"324":1,"325":2}}],["late",{"2":{"14":1}}],["latency",{"2":{"13":1,"145":1}}],["large",{"2":{"5":1,"153":1,"305":1}}],["lark",{"0":{"53":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1},"2":{"1":1,"7":1,"18":1,"33":1,"53":1,"135":1,"312":1}}],["loop",{"2":{"288":1}}],["lookup",{"2":{"317":1}}],["looks",{"0":{"265":1},"2":{"266":1}}],["looked",{"2":{"14":1}}],["locations",{"2":{"266":1}}],["localhost",{"2":{"322":3}}],["locally",{"2":{"317":1,"328":1,"334":1}}],["locale",{"2":{"116":1,"123":1,"126":2}}],["local",{"0":{"198":1},"2":{"15":1,"16":1,"17":1,"19":1,"20":1,"169":1,"170":1,"184":2,"198":1,"255":2,"287":2}}],["losing",{"2":{"252":1,"273":1}}],["lost",{"2":{"122":1}}],["load",{"2":{"193":2}}],["loaded",{"2":{"18":1,"275":1,"285":1}}],["logging",{"2":{"323":1}}],["logs",{"0":{"151":1,"192":1,"193":1},"1":{"193":1},"2":{"114":3,"117":1,"118":1,"193":1,"194":1,"285":2,"293":3,"324":2}}],["log",{"2":{"48":1,"54":1,"80":1,"151":1,"172":1,"179":1,"192":1,"193":1,"323":1}}],["login",{"0":{"140":1},"2":{"7":1,"33":1,"34":1,"35":1,"37":3,"73":1,"87":3,"88":1,"135":2,"322":1}}],["lower",{"2":{"210":1}}],["lowest",{"2":{"97":1}}],["low",{"2":{"14":1,"116":1,"210":1,"226":1,"296":1}}],["longer",{"2":{"14":1,"127":1,"209":1,"256":1,"261":1,"331":1}}],["long",{"0":{"5":1},"2":{"1":2,"5":1,"13":1,"16":1,"20":1,"35":1,"38":1,"131":1,"144":1,"146":1,"153":1,"154":1,"192":1,"204":1,"206":1,"210":1,"214":1,"215":1,"256":1,"288":1,"307":2,"312":1,"314":1,"338":1}}],["tutorial",{"2":{"69":1}}],["turns",{"2":{"144":1,"145":2,"153":1,"273":1,"307":1}}],["turning",{"2":{"14":1}}],["turn",{"2":{"13":1,"18":1,"147":1,"288":1}}],["typical",{"0":{"268":1},"2":{"124":1,"151":1,"217":1,"219":1,"223":1}}],["typing",{"2":{"49":1,"51":1,"89":2,"90":1}}],["typed",{"2":{"276":1}}],["type",{"2":{"37":3,"95":1,"100":3,"102":2,"108":2,"176":1,"198":1,"199":1,"201":1,"206":1,"217":1,"218":3,"219":2,"221":1,"222":1,"224":1,"253":2,"255":1,"256":1,"257":1,"259":2,"266":1,"287":1,"329":1,"343":1,"348":1,"353":1,"357":1,"358":1}}],["types",{"0":{"95":1,"197":1,"219":1,"224":1,"253":1},"1":{"198":1,"199":1,"254":1},"2":{"6":1,"9":1,"51":1,"63":1,"91":1,"219":1,"220":1,"224":1,"253":2,"254":1,"313":1,"340":1}}],["timing",{"2":{"242":1}}],["timezone",{"2":{"112":3,"114":1,"116":4,"123":1,"126":2,"236":2,"323":2}}],["timeout",{"2":{"38":2,"323":1}}],["timestamp",{"2":{"179":1}}],["timestamps",{"2":{"167":1}}],["times",{"2":{"18":1,"235":1}}],["time",{"0":{"14":1,"244":1},"2":{"3":1,"14":3,"83":1,"119":1,"130":1,"151":1,"158":1,"159":1,"172":1,"192":1,"210":1,"211":1,"243":1,"250":1}}],["titles",{"2":{"116":1}}],["title",{"2":{"114":1,"116":1,"259":1,"260":1}}],["tiny",{"2":{"14":1}}],["t",{"2":{"14":6,"16":2,"158":1,"189":1,"317":1}}],["truncated",{"2":{"305":1}}],["true",{"2":{"240":1,"296":3,"325":1}}],["trying",{"2":{"214":2}}],["tree",{"2":{"182":1}}],["treats",{"2":{"281":1}}],["treated",{"2":{"254":1}}],["treat",{"2":{"19":1,"120":1}}],["troubleshooting",{"2":{"180":1,"212":1}}],["triggering",{"2":{"233":1}}],["triggers",{"2":{"118":1,"147":1,"235":1,"241":1,"253":1,"262":1,"307":1}}],["trigger",{"2":{"106":1,"148":1,"153":1,"180":1,"190":1,"191":1,"214":1,"242":1,"263":1,"285":1}}],["triggered",{"2":{"6":1,"154":1,"192":1,"234":1,"253":1,"263":1}}],["translate",{"2":{"239":1}}],["transport",{"2":{"199":1}}],["transfer",{"2":{"184":1}}],["track",{"2":{"263":1}}],["tracked",{"2":{"180":1}}],["tracks",{"2":{"152":1,"172":1}}],["traditional",{"2":{"176":1}}],["trade",{"2":{"14":1,"265":1}}],["trail",{"2":{"151":1}}],["trapped",{"2":{"16":1}}],["travels",{"2":{"14":1}}],["tag",{"2":{"319":1,"325":3}}],["taking",{"2":{"288":1}}],["takes",{"2":{"113":1,"267":1}}],["take",{"2":{"14":1,"97":1,"322":1}}],["tavily",{"2":{"245":1}}],["target",{"2":{"35":1,"51":1,"95":1,"309":1,"310":1}}],["tab",{"0":{"114":1,"116":1,"117":1,"118":1,"121":1},"2":{"31":1,"35":1,"38":1,"49":1,"57":1,"65":1,"70":1,"81":1,"86":1,"91":1,"92":1,"94":1,"98":1,"99":1,"110":1,"114":1,"115":4,"116":1,"117":2,"118":1,"119":2,"121":1,"122":1,"128":1,"129":1,"134":1,"147":1,"151":1,"153":1,"157":1,"159":1,"160":1,"161":1,"163":1,"168":1,"177":1,"179":1,"181":1,"188":1,"191":1,"192":1,"196":1,"197":1,"205":2,"207":1,"210":1,"211":1,"212":1,"213":1,"214":1,"237":1,"249":1,"264":1,"309":2,"310":2,"336":1,"337":1,"338":1,"340":2,"345":1,"350":1,"355":1,"358":1}}],["tabs",{"2":{"10":1,"113":1,"115":1,"121":1,"313":1}}],["talks",{"2":{"216":1}}],["talk",{"2":{"14":1}}],["tasks",{"0":{"233":1},"1":{"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1},"2":{"18":2,"111":1,"114":1,"116":1,"117":1,"159":2,"189":1,"194":1,"203":1,"233":1,"242":1,"256":1,"263":1,"278":1,"285":1,"303":1}}],["task",{"2":{"6":2,"173":1,"191":1,"192":1,"233":1,"235":3,"242":1,"251":1,"253":2,"263":1,"265":1}}],["tts",{"0":{"352":1,"353":1,"357":1},"1":{"353":1,"354":1,"355":1,"356":1,"358":1,"359":1,"360":1},"2":{"8":1,"9":2,"114":1,"115":1,"116":5,"216":1,"219":1,"224":2,"230":2,"231":1,"232":2,"352":1,"353":1,"355":3,"357":7,"358":2,"359":1,"360":1}}],["together",{"2":{"259":1}}],["toggle",{"2":{"143":1,"191":1,"201":1,"319":1}}],["today",{"2":{"235":1,"281":1,"303":1}}],["total",{"2":{"213":1,"235":1,"262":1}}],["toml",{"2":{"186":1,"319":1,"320":4,"321":2,"322":1,"323":1,"325":2,"334":2,"335":2}}],["topics",{"2":{"256":1}}],["topic",{"2":{"251":1,"260":1}}],["top",{"0":{"284":1},"2":{"97":2,"101":1,"107":1,"235":1,"236":1,"279":1,"280":1,"281":1,"303":1}}],["tokens",{"2":{"35":2,"138":1,"262":1,"278":1,"290":1}}],["token",{"0":{"43":1,"62":1},"2":{"28":3,"31":1,"34":1,"37":3,"38":2,"43":5,"44":1,"61":4,"62":1,"64":3,"65":4,"69":3,"70":1,"74":1,"75":1,"76":1,"87":1,"118":1,"141":1,"145":1,"147":1,"151":1,"200":3,"217":1,"218":1,"222":1,"262":1,"285":1,"292":1,"317":1,"323":1,"328":1}}],["to",{"0":{"11":1,"12":1,"19":1,"30":1,"63":1,"64":1,"66":1,"128":1,"152":1,"249":1,"263":1,"336":1,"345":1,"350":1,"355":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"6":1,"13":1,"14":2,"16":2,"18":3,"19":1,"20":1,"23":2,"24":2,"25":1,"27":2,"28":3,"29":1,"30":3,"31":1,"32":1,"33":1,"35":2,"36":3,"38":1,"39":1,"40":1,"42":1,"43":3,"44":2,"45":1,"47":2,"48":2,"49":1,"50":3,"53":1,"54":2,"55":1,"56":1,"57":2,"58":2,"59":2,"60":2,"61":1,"62":1,"64":1,"65":1,"66":3,"68":1,"69":2,"70":1,"71":2,"72":1,"75":1,"79":2,"80":2,"81":1,"82":2,"85":2,"86":1,"87":1,"88":1,"91":2,"96":1,"97":2,"98":1,"100":3,"101":3,"102":2,"103":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":2,"112":1,"113":1,"114":1,"115":2,"116":5,"118":1,"119":1,"121":2,"122":3,"123":3,"125":1,"126":1,"128":2,"130":1,"131":1,"132":2,"133":1,"139":2,"140":1,"142":1,"144":1,"145":2,"147":3,"150":1,"151":1,"152":2,"154":3,"155":1,"158":2,"159":1,"160":4,"161":1,"162":2,"163":1,"164":1,"166":1,"167":2,"169":1,"171":2,"172":1,"173":1,"174":3,"176":1,"178":1,"179":1,"180":3,"183":1,"184":3,"185":1,"186":3,"187":1,"188":2,"189":2,"190":1,"191":1,"192":1,"193":1,"195":2,"196":1,"198":1,"199":1,"200":2,"201":2,"202":2,"203":1,"204":1,"208":1,"210":2,"211":3,"212":1,"213":1,"214":3,"215":1,"216":3,"222":2,"223":1,"224":1,"226":1,"227":1,"228":1,"230":1,"231":2,"232":3,"233":1,"234":3,"235":2,"237":2,"239":2,"240":1,"241":1,"243":3,"244":1,"245":1,"247":2,"249":2,"250":2,"251":1,"252":1,"253":3,"254":3,"255":4,"256":3,"257":1,"260":1,"262":1,"263":1,"269":1,"271":1,"273":1,"274":2,"276":1,"277":1,"278":1,"279":2,"280":1,"281":1,"282":1,"287":4,"288":1,"307":1,"309":1,"310":2,"313":1,"314":1,"315":2,"317":4,"319":1,"320":1,"324":1,"325":5,"328":1,"329":1,"330":1,"336":2,"337":2,"338":1,"342":1,"343":1,"344":1,"345":2,"346":1,"348":1,"350":2,"351":1,"353":1,"354":2,"356":2,"357":1,"358":2,"360":1}}],["took",{"2":{"192":1}}],["toolbar",{"2":{"182":1}}],["toolkit",{"2":{"162":1}}],["tool",{"0":{"202":1},"2":{"8":1,"17":1,"162":1,"195":1,"202":1,"224":1,"225":1,"226":1,"239":1,"244":1,"264":1,"265":1,"288":1,"310":1,"312":1,"314":1}}],["tools",{"0":{"8":1},"2":{"1":1,"4":1,"14":1,"19":1,"111":1,"123":1,"128":1,"129":1,"158":1,"163":1,"188":1,"190":1,"194":1,"196":1,"202":4,"203":2,"226":1,"234":1,"241":1,"265":1}}],["too",{"2":{"5":1,"14":3,"99":2,"153":1,"256":1,"288":1}}],["two",{"2":{"5":1,"34":1,"119":1,"135":1,"148":1,"153":1,"174":1,"214":1,"220":1,"238":1,"254":1,"276":1,"279":1}}],["temporarily",{"2":{"273":1}}],["templates",{"2":{"308":1,"311":1,"314":1}}],["template",{"0":{"310":1},"2":{"8":1,"196":1,"319":1}}],["tech",{"2":{"235":1,"303":1}}],["testing",{"0":{"356":1},"2":{"164":1}}],["test",{"0":{"77":1},"2":{"77":1,"103":1,"273":1,"356":1,"358":2}}],["team",{"2":{"19":1}}],["textarea",{"2":{"208":1}}],["text",{"0":{"186":1},"2":{"14":1,"26":1,"32":1,"40":2,"42":1,"45":1,"46":1,"51":1,"83":1,"90":1,"116":1,"146":1,"150":2,"151":1,"186":1,"209":1,"216":1,"224":1,"254":1,"279":2,"280":1,"281":2,"291":1,"296":1,"297":1,"303":1,"305":1,"317":1,"323":1,"328":1,"357":2}}],["tension",{"2":{"13":1}}],["telegram",{"0":{"68":1,"69":1,"256":1},"1":{"69":1,"70":1,"71":1,"72":1},"2":{"1":1,"7":1,"18":1,"33":1,"68":2,"69":3,"70":1,"71":3,"95":2,"102":1,"108":2,"109":2,"114":1,"133":1,"135":2,"235":1,"240":1,"255":1,"281":1,"287":1,"312":1}}],["terms",{"2":{"231":1}}],["terminal",{"0":{"121":1},"2":{"114":2,"121":2}}],["term",{"0":{"5":1},"2":{"1":1,"5":1,"131":1,"144":1,"146":1,"153":1,"154":1,"204":1,"206":1,"210":1,"214":1,"215":1,"307":1,"314":1,"317":1,"338":1}}],["those",{"2":{"13":1,"216":1,"266":1}}],["threshold",{"2":{"118":2,"147":3}}],["threaded",{"2":{"103":1}}],["thread",{"2":{"62":1,"92":1,"100":3,"102":3,"103":1,"110":1,"119":1,"251":1,"291":1}}],["threads",{"2":{"14":1,"33":1,"59":1,"67":1,"92":1,"254":1,"259":1}}],["three",{"2":{"13":1,"95":1,"224":1,"231":1,"326":1,"339":1,"341":1,"357":1}}],["through",{"2":{"1":1,"5":1,"6":1,"9":1,"18":2,"33":1,"35":1,"47":1,"68":1,"74":1,"113":1,"120":1,"123":1,"160":1,"206":1,"219":1,"221":1,"224":1,"266":1,"342":1,"346":1,"351":1}}],["thing",{"2":{"14":1,"20":1}}],["thinking",{"2":{"242":1}}],["thinks",{"2":{"72":1}}],["think",{"2":{"6":1,"14":1,"190":1,"231":1}}],["this",{"2":{"5":1,"14":2,"21":1,"28":1,"37":2,"42":1,"53":1,"57":1,"60":1,"68":1,"69":1,"73":2,"78":2,"94":1,"95":1,"97":1,"103":1,"110":1,"117":1,"122":2,"125":1,"129":1,"139":2,"144":1,"147":1,"150":1,"152":1,"155":1,"160":2,"162":1,"164":1,"166":1,"171":1,"172":1,"181":1,"190":1,"191":1,"198":1,"199":1,"206":1,"210":2,"211":1,"212":1,"213":1,"218":1,"221":1,"228":1,"230":1,"233":1,"235":1,"237":1,"239":1,"252":1,"253":1,"254":1,"255":1,"256":2,"260":1,"266":1,"267":2,"273":1,"280":1,"288":1,"291":1,"307":2,"320":1,"321":1,"322":1,"329":1,"343":1,"348":1}}],["than",{"2":{"1":1,"9":1,"19":1,"120":1,"152":1,"210":1,"317":2,"328":1}}],["that",{"2":{"1":1,"4":1,"6":1,"13":1,"14":8,"15":1,"20":4,"23":2,"33":1,"34":3,"43":2,"45":1,"66":1,"71":1,"77":1,"94":1,"103":1,"109":1,"111":1,"114":1,"116":2,"118":1,"119":1,"128":1,"133":1,"141":1,"145":3,"147":1,"151":1,"188":1,"190":1,"192":1,"194":1,"200":1,"209":1,"212":1,"215":1,"216":1,"222":1,"227":1,"228":1,"229":1,"230":1,"235":1,"239":1,"244":1,"254":1,"264":1,"267":1,"272":2,"274":1,"275":2,"278":1,"291":1,"309":1,"310":1,"317":1,"336":1,"338":1,"340":1,"342":1,"347":2}}],["these",{"2":{"44":1,"62":1,"63":1,"92":1,"115":2,"153":1,"188":1,"202":1,"203":1,"219":1,"263":1,"266":1,"267":1}}],["their",{"2":{"16":1,"18":2,"101":1,"167":1,"202":1,"237":1}}],["they",{"2":{"16":2,"40":1,"254":1,"259":1,"263":1,"265":1,"266":1,"278":2}}],["then",{"0":{"99":1},"2":{"14":1,"54":1,"116":1,"196":1,"234":1,"269":1,"320":1,"357":1}}],["there",{"2":{"14":1,"212":1}}],["the",{"0":{"12":1,"30":1,"39":1,"64":1,"66":1,"75":1,"76":1,"87":1,"103":1,"115":1,"149":1,"156":1,"239":1,"240":1,"257":1,"269":1,"354":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"270":1,"271":1,"272":1,"273":1,"274":1},"2":{"1":1,"3":2,"5":3,"6":2,"7":2,"8":1,"10":2,"11":1,"13":4,"14":12,"16":1,"17":2,"18":3,"19":3,"20":2,"21":1,"22":2,"23":5,"24":3,"25":4,"28":2,"29":1,"30":3,"31":1,"33":4,"34":3,"35":7,"36":1,"37":4,"38":5,"39":2,"40":1,"43":6,"44":5,"45":2,"48":3,"49":1,"50":2,"53":1,"54":2,"55":1,"56":1,"57":3,"58":3,"60":4,"61":3,"62":2,"63":2,"64":6,"65":2,"66":10,"68":1,"69":3,"70":3,"71":4,"72":4,"73":2,"74":1,"75":6,"76":5,"77":4,"80":2,"81":4,"82":3,"86":1,"87":5,"88":3,"91":1,"92":3,"94":3,"95":1,"96":4,"97":5,"99":4,"100":4,"101":2,"103":2,"106":2,"107":3,"108":1,"109":3,"110":3,"112":8,"114":2,"115":6,"116":20,"117":4,"118":3,"119":5,"120":3,"121":4,"122":5,"123":3,"124":1,"125":4,"126":3,"128":5,"129":4,"130":3,"134":2,"135":2,"137":5,"138":2,"140":3,"141":4,"142":3,"143":3,"144":2,"145":5,"146":4,"147":9,"148":1,"149":4,"150":1,"151":7,"152":7,"153":1,"155":2,"156":3,"157":3,"158":6,"159":8,"160":5,"161":3,"162":11,"163":8,"164":3,"165":2,"166":4,"167":1,"168":1,"169":2,"170":2,"171":4,"172":3,"175":2,"176":4,"177":2,"178":7,"179":7,"180":3,"181":2,"182":1,"183":4,"184":3,"185":3,"186":4,"187":1,"188":3,"189":1,"190":2,"191":9,"192":6,"193":2,"194":4,"195":1,"196":3,"197":2,"198":3,"199":3,"200":8,"201":3,"202":7,"203":6,"205":5,"206":5,"207":2,"208":2,"209":1,"210":4,"211":6,"212":7,"213":3,"214":1,"215":6,"216":2,"217":3,"218":6,"221":3,"222":4,"223":4,"224":1,"225":3,"227":2,"229":2,"230":1,"234":2,"235":10,"236":3,"237":4,"239":4,"240":2,"241":9,"243":1,"245":2,"247":5,"248":5,"249":4,"250":3,"251":1,"252":3,"253":9,"254":8,"255":6,"256":6,"257":2,"259":6,"262":9,"263":5,"264":1,"265":6,"266":4,"267":5,"268":6,"270":3,"271":1,"272":2,"273":1,"274":3,"275":4,"276":2,"278":3,"279":6,"280":4,"281":1,"282":1,"284":1,"285":1,"287":5,"288":4,"290":6,"291":2,"292":1,"293":1,"294":1,"297":1,"298":1,"299":1,"300":1,"301":1,"303":1,"304":1,"305":2,"307":4,"309":5,"310":4,"313":1,"314":1,"315":4,"316":1,"317":11,"319":8,"320":1,"321":3,"323":2,"324":1,"325":3,"326":3,"328":4,"329":2,"330":1,"334":3,"335":2,"336":5,"337":3,"338":1,"339":3,"340":5,"341":1,"342":1,"343":2,"344":1,"345":4,"346":2,"348":2,"349":1,"350":4,"351":2,"353":4,"354":1,"355":3,"356":3,"357":3,"358":7,"360":1}}],["themselves",{"2":{"153":1}}],["them",{"2":{"1":1,"5":1,"115":1,"184":1,"201":2,"206":1,"257":1,"264":3,"276":1,"277":1}}],["wrote",{"2":{"14":1}}],["writes",{"2":{"270":1}}],["write",{"2":{"4":1,"61":1,"62":3,"178":1,"188":1,"262":1,"264":1,"265":1,"282":1,"290":1,"291":2}}],["way",{"2":{"180":1,"196":1,"280":1,"287":1,"315":1}}],["ways",{"2":{"148":1,"238":1,"276":1}}],["warning",{"2":{"122":1}}],["walks",{"2":{"68":1}}],["want",{"2":{"16":2,"20":1,"30":1,"43":1,"60":1,"62":1,"66":1,"103":1,"144":1,"151":1,"160":1,"163":1,"171":1,"210":1,"211":1,"216":1,"221":1,"222":1,"223":1,"255":1,"256":2,"273":1,"274":2,"276":1,"287":1,"288":1,"290":1,"307":1,"310":1}}],["wanted",{"2":{"14":2}}],["wasn",{"2":{"14":1}}],["was",{"2":{"14":1,"179":1,"192":1,"259":1,"291":1}}],["wait",{"2":{"14":1}}],["worse",{"2":{"14":1}}],["world",{"2":{"13":1,"33":1}}],["works",{"0":{"328":1},"2":{"162":1,"255":1,"317":1,"326":1}}],["workspaces",{"0":{"4":1},"2":{"33":1,"312":1}}],["workspace",{"0":{"64":1,"156":1},"2":{"1":1,"4":2,"8":1,"33":1,"60":1,"64":2,"79":1,"82":1,"135":1,"188":1,"319":2,"321":1,"323":1,"344":2}}],["working",{"2":{"162":1,"198":1,"212":1}}],["workflow",{"0":{"277":1},"2":{"99":1,"219":1,"221":1,"314":1}}],["workflows",{"2":{"3":1,"13":1,"33":1,"221":1,"265":1,"326":1}}],["work",{"2":{"6":1,"8":1,"66":1,"103":1,"253":1,"263":1,"278":1,"281":1}}],["width",{"2":{"126":2}}],["will",{"2":{"20":1,"23":1,"39":1,"48":1,"50":1,"57":1,"69":1,"71":1,"76":1,"82":1,"87":1,"97":1,"112":1,"122":1,"139":1,"145":1,"166":1,"200":1,"202":1,"203":1,"205":1,"239":1,"250":2,"256":1,"267":1,"319":1,"320":1,"336":1,"346":1,"351":1}}],["window",{"0":{"152":1,"227":1},"2":{"5":1,"87":1,"116":1,"145":1,"147":1,"152":1,"225":1,"227":2,"251":1,"262":1}}],["within",{"2":{"18":1,"79":1,"100":1,"155":1,"156":1,"183":1,"266":1}}],["without",{"2":{"4":1,"10":1,"14":2,"138":1,"155":1,"171":1,"185":1,"201":1,"205":1,"233":1,"251":1,"252":1,"255":1,"256":1,"273":2,"276":1,"287":1,"314":1,"317":2,"320":1,"327":1}}],["with",{"0":{"99":1,"106":1,"107":1,"188":1,"255":1},"1":{"256":1,"257":1},"2":{"1":1,"4":2,"6":2,"10":2,"13":2,"14":1,"15":1,"17":1,"18":3,"20":1,"27":1,"32":1,"33":4,"37":1,"40":1,"45":1,"47":1,"48":1,"51":1,"53":2,"61":2,"64":1,"66":1,"69":1,"71":1,"79":1,"83":1,"85":1,"90":1,"91":1,"94":1,"96":2,"103":1,"107":1,"108":2,"109":1,"111":1,"115":1,"126":1,"129":1,"130":1,"131":1,"132":1,"140":1,"145":1,"161":1,"167":1,"172":1,"178":1,"182":1,"184":1,"185":1,"189":1,"202":1,"211":1,"212":1,"219":2,"229":1,"236":2,"241":1,"252":1,"253":1,"262":1,"265":1,"267":1,"268":2,"272":1,"274":1,"277":1,"282":2,"310":1,"312":1,"315":1,"316":1,"317":1,"319":2,"320":2,"324":1,"326":3,"328":2,"334":1,"337":1,"339":2,"341":1,"358":1,"360":1}}],["which",{"2":{"50":1,"71":1,"149":1,"206":1,"210":1,"226":1,"234":1,"262":1,"275":1,"328":1}}],["while",{"2":{"5":1,"14":1,"51":1,"89":1,"90":1,"222":1,"317":1,"322":1}}],["whose",{"2":{"97":1,"228":1}}],["who",{"2":{"50":1,"71":1,"91":1,"160":1,"282":1,"321":1}}],["whole",{"2":{"10":1}}],["why",{"0":{"16":1,"145":1},"2":{"14":1,"291":1,"317":1}}],["whether",{"2":{"149":1,"151":1,"159":1,"179":1,"192":1,"213":1,"235":1,"254":1,"291":1}}],["where",{"0":{"11":1,"266":1},"2":{"6":1,"10":1,"11":1,"13":1,"14":1,"19":2,"60":1,"66":1,"99":1,"103":1,"113":1,"162":1,"214":1,"224":1,"257":1,"263":1,"313":1}}],["when",{"2":{"5":1,"14":2,"17":1,"38":1,"76":1,"87":1,"90":1,"92":1,"94":1,"99":1,"100":1,"103":1,"110":3,"116":1,"119":1,"128":1,"129":1,"147":2,"151":3,"153":2,"160":1,"163":1,"171":1,"172":1,"189":1,"192":1,"202":1,"206":1,"210":1,"211":1,"218":2,"221":1,"223":1,"225":1,"227":1,"228":1,"234":1,"235":2,"241":1,"250":1,"252":1,"253":5,"254":2,"256":1,"259":1,"263":1,"265":1,"273":1,"274":1,"279":1,"288":1,"290":1,"291":1,"305":1,"307":1,"317":1,"319":1,"321":1,"344":1,"353":1}}],["what",{"0":{"1":1,"2":1,"15":1,"103":1,"146":1,"265":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"2":{"6":1,"11":1,"13":2,"14":1,"117":1,"214":1,"235":1,"254":1,"263":1,"288":1,"317":1}}],["week",{"2":{"236":1}}],["weixin",{"2":{"34":1}}],["weighted",{"2":{"317":1}}],["weights",{"2":{"317":2,"328":1}}],["weight",{"2":{"14":1}}],["wework",{"0":{"79":1},"1":{"80":1,"81":1,"82":1,"83":1,"84":1},"2":{"33":1,"135":1}}],["were",{"2":{"14":1,"151":1,"172":1,"275":1}}],["we",{"2":{"13":2,"14":2,"17":1,"19":2,"20":2}}],["webm",{"2":{"354":1}}],["webp",{"2":{"187":1}}],["websites",{"2":{"124":1,"129":1}}],["websocket",{"2":{"35":1,"81":2,"82":1}}],["webhook",{"0":{"57":1,"139":1,"141":1},"2":{"7":1,"24":1,"33":1,"34":1,"35":1,"57":2,"73":1,"74":1,"75":1,"76":1,"135":3,"139":2,"141":1,"142":1}}],["web",{"0":{"257":1},"2":{"1":1,"6":1,"7":1,"8":2,"10":1,"24":1,"31":1,"33":1,"38":1,"41":1,"44":1,"49":1,"50":1,"65":1,"70":1,"71":1,"75":1,"81":1,"86":1,"114":1,"116":2,"152":1,"160":1,"185":1,"216":1,"227":1,"241":1,"243":1,"245":1,"254":1,"255":2,"257":1,"259":1,"278":1,"287":2,"309":1,"310":1,"312":1,"315":1,"316":3,"322":1,"323":2}}],["wechatoa",{"2":{"34":1}}],["wechat",{"0":{"34":2,"73":1,"76":1,"85":1,"86":1,"140":1,"141":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1,"86":1,"87":1,"88":1,"89":1,"90":1},"2":{"1":2,"7":4,"33":2,"34":4,"73":2,"74":2,"75":1,"76":3,"85":2,"86":1,"87":2,"88":1,"114":1,"135":7,"140":2,"141":3,"312":2}}],["wecom",{"0":{"79":1,"80":1},"1":{"80":1,"81":1,"82":1,"83":1,"84":1},"2":{"1":1,"7":1,"33":2,"79":2,"80":1,"81":2,"82":2,"84":2,"114":1,"135":2,"312":1}}],["icon",{"2":{"259":1}}],["ignored",{"2":{"275":1}}],["ignore",{"2":{"126":1}}],["irreversible",{"2":{"122":1}}],["io",{"2":{"43":1}}],["idf",{"2":{"317":1}}],["ideas",{"2":{"279":1}}],["identity",{"0":{"50":1,"71":1},"2":{"44":1,"50":2,"71":3,"95":2,"100":2,"106":1,"109":1,"110":1,"267":1,"285":1,"291":2,"305":1}}],["identities",{"2":{"3":1,"91":1,"107":1}}],["identifier",{"2":{"37":1,"81":1,"159":1,"184":1,"225":1}}],["ids",{"2":{"35":1}}],["id",{"2":{"34":1,"37":2,"38":2,"39":1,"54":1,"57":1,"74":1,"75":1,"80":1,"81":1,"100":4,"102":4,"120":1,"126":1,"159":1,"201":1,"209":1,"223":1,"225":1,"240":1,"296":2,"297":2,"344":4,"354":1}}],["if",{"2":{"14":1,"20":1,"32":1,"39":1,"56":1,"62":1,"66":2,"74":2,"75":1,"81":1,"87":1,"97":1,"103":1,"112":1,"115":1,"116":1,"120":1,"131":1,"139":1,"140":1,"141":1,"142":1,"144":1,"158":1,"159":1,"161":2,"162":1,"163":1,"178":3,"214":2,"216":1,"217":1,"222":1,"223":1,"226":1,"227":1,"241":1,"255":1,"267":1,"268":1,"276":1,"277":1,"281":1,"287":1,"290":1,"310":1,"317":1,"320":1,"324":1,"336":1}}],["i",{"2":{"14":7}}],["italic",{"2":{"51":1,"72":1}}],["iterate",{"2":{"19":1}}],["it",{"0":{"145":1,"146":1},"2":{"10":1,"14":9,"19":2,"20":1,"23":1,"25":1,"27":1,"28":2,"30":2,"36":1,"42":1,"47":1,"48":2,"50":1,"59":1,"61":1,"64":1,"66":2,"73":1,"76":1,"79":1,"85":1,"87":1,"120":1,"126":1,"132":1,"133":1,"139":1,"146":2,"156":1,"158":1,"159":1,"160":1,"164":1,"167":1,"180":2,"186":1,"189":2,"194":1,"206":1,"210":1,"214":2,"219":1,"223":1,"226":1,"227":1,"234":2,"235":1,"236":2,"243":1,"244":1,"253":1,"254":1,"260":1,"262":1,"265":2,"270":1,"273":1,"274":2,"276":3,"280":1,"281":1,"287":1,"310":1,"317":4,"320":1,"326":1,"328":1,"330":1,"344":1,"347":1,"349":1,"352":1}}],["itself",{"2":{"146":1,"188":1,"210":1,"215":1,"239":1,"278":1}}],["its",{"2":{"1":3,"4":1,"18":1,"98":1,"111":1,"113":2,"115":1,"116":1,"117":1,"122":1,"126":1,"127":1,"138":1,"155":1,"163":1,"178":1,"180":1,"181":2,"184":1,"188":2,"190":1,"194":2,"196":1,"202":1,"203":1,"215":1,"227":1,"234":1,"241":1,"248":1,"250":1,"251":1,"252":1,"261":1,"263":1,"270":1,"273":1,"313":1,"330":1,"331":1,"336":1,"338":1,"339":1,"342":1,"344":1,"346":1,"349":1,"351":1,"354":1}}],["im",{"2":{"56":2,"57":1,"62":2,"63":1}}],["improve",{"2":{"210":1}}],["importance",{"2":{"317":1,"328":1}}],["important",{"0":{"163":1},"2":{"5":1,"37":1,"48":1,"115":1,"145":1,"224":1,"225":1,"227":1,"267":1,"320":1}}],["imported",{"0":{"276":1},"2":{"266":1,"276":1,"353":1,"358":1}}],["importing",{"0":{"223":1},"2":{"168":1}}],["import",{"0":{"168":1,"170":1},"1":{"169":1,"170":1,"171":1},"2":{"114":1,"170":1,"201":2,"223":2,"314":1}}],["impact",{"2":{"20":1}}],["immediately",{"2":{"143":1,"148":1}}],["immediate",{"0":{"148":1},"1":{"149":1,"150":1},"2":{"10":1,"33":1,"262":1,"285":1,"307":1}}],["images",{"0":{"187":1},"2":{"32":1,"51":1,"62":1,"66":1,"67":1,"72":1,"90":1,"226":2,"266":1,"322":1,"324":1}}],["image",{"0":{"228":1},"2":{"9":3,"114":1,"116":5,"130":1,"158":2,"159":2,"163":1,"187":1,"224":1,"225":1,"226":1,"228":3,"231":2,"232":1,"317":1,"319":3,"323":1,"325":4}}],["injected",{"2":{"265":1}}],["initiated",{"2":{"253":1}}],["initialize",{"2":{"158":1,"322":1}}],["initial",{"2":{"115":1,"119":1}}],["inquiries",{"2":{"180":1}}],["inbox",{"2":{"178":1}}],["inbound",{"2":{"22":1,"42":1,"43":1,"57":1,"63":1,"73":1,"135":1,"139":1,"142":1}}],["inherits",{"2":{"112":1,"116":1}}],["incremented",{"2":{"241":1}}],["increases",{"2":{"145":1}}],["inconsistent",{"2":{"211":1}}],["incoming",{"2":{"66":1,"94":1,"95":1,"178":1,"180":1}}],["including",{"2":{"8":1,"9":1,"122":1,"237":1}}],["included",{"2":{"339":1}}],["includes",{"2":{"10":1,"117":1,"120":1,"172":1,"206":1,"315":1}}],["include",{"2":{"7":1,"124":1,"130":1,"151":1,"203":1,"217":1,"228":1,"262":1,"325":1}}],["input",{"2":{"49":1,"147":1,"198":1,"226":1,"262":1}}],["invocation",{"2":{"263":1}}],["invoked",{"2":{"128":1}}],["involves",{"2":{"174":1}}],["involved",{"2":{"110":1,"151":1}}],["involve",{"2":{"35":1}}],["invalid",{"2":{"126":1}}],["invited",{"2":{"38":1}}],["invites",{"2":{"38":1,"39":1}}],["invite",{"0":{"30":1,"39":1},"2":{"39":1,"66":2}}],["inferred",{"2":{"256":1}}],["inference",{"2":{"17":1,"19":1,"20":1}}],["influences",{"2":{"116":1}}],["inflate",{"2":{"14":1}}],["info",{"2":{"54":1,"112":1,"323":1}}],["information",{"0":{"159":1},"2":{"14":1,"56":1,"60":1,"61":1,"129":1,"154":1,"172":1,"204":1,"213":1,"217":1,"243":1,"250":1,"262":1}}],["infrastructure",{"0":{"332":1},"1":{"333":1,"334":1,"335":1},"2":{"14":1,"16":1,"19":1,"20":1,"326":1,"333":1,"342":1}}],["into",{"2":{"13":1,"14":1,"35":1,"57":1,"70":1,"76":1,"139":1,"141":1,"146":1,"169":1,"170":1,"184":1,"208":1,"223":1,"239":1,"252":1,"253":1,"265":1,"266":1,"268":1,"270":1,"274":1,"275":1,"276":1,"280":1,"317":1,"328":1,"357":1}}],["introduction",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"21":1}}],["integrated",{"2":{"182":1,"185":1}}],["integrating",{"2":{"53":1}}],["integration",{"2":{"7":2,"32":1,"33":7,"34":2,"73":1,"135":3}}],["integrations",{"2":{"1":1,"7":1,"312":1}}],["intended",{"2":{"73":1,"78":1,"103":1,"278":1}}],["intentionally",{"2":{"116":1,"259":1}}],["intent",{"2":{"29":3}}],["intents",{"2":{"29":1}}],["intelligence",{"2":{"14":1}}],["interrupt",{"2":{"288":1}}],["intercepted",{"2":{"278":1}}],["internal",{"2":{"254":1,"266":1}}],["internet",{"2":{"14":1}}],["intervention",{"2":{"233":1}}],["intervene",{"2":{"188":1}}],["interval",{"2":{"117":1,"190":1,"191":1,"242":1,"296":2}}],["interference",{"2":{"251":1}}],["interfering",{"2":{"4":1}}],["interface",{"2":{"18":1,"33":1,"160":1,"193":1}}],["interactive",{"2":{"114":1,"121":1}}],["interactions",{"2":{"42":1,"204":1}}],["interaction",{"0":{"129":1,"180":1,"188":1,"194":1,"203":1,"215":1,"250":1},"2":{"9":1}}],["interact",{"2":{"1":1,"3":1,"27":1,"33":1,"45":1,"47":1,"53":1,"79":1,"85":1,"91":1,"129":1,"132":1,"185":1}}],["inspect",{"2":{"110":2,"123":1,"129":1,"154":1,"285":4}}],["inspection",{"0":{"289":1},"1":{"290":1,"291":1,"292":1,"293":1,"294":1},"2":{"10":1,"275":1,"278":1}}],["instruction",{"2":{"235":1,"242":1,"265":1}}],["instead",{"2":{"115":1,"129":1,"154":1,"221":1,"277":1,"279":1,"281":1,"342":1}}],["install",{"0":{"64":1,"309":1,"310":1,"319":1,"320":1},"1":{"321":1},"2":{"60":1,"64":1,"130":1,"156":1,"264":1,"266":1,"276":1,"277":1,"309":2,"310":1,"314":1,"315":1,"319":3,"321":1,"325":1}}],["installation",{"0":{"315":1},"1":{"316":1,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1},"2":{"8":1,"11":1,"66":1,"313":1}}],["instance",{"2":{"43":3,"44":1,"45":1,"158":1,"159":1,"340":1}}],["instances",{"2":{"42":1,"357":1}}],["instinct",{"2":{"14":1}}],["inside",{"2":{"4":1,"8":1,"121":1,"163":1,"181":1,"198":1,"266":2,"280":1,"285":1,"315":1,"317":1}}],["indices",{"2":{"317":1,"328":1}}],["indicator",{"2":{"212":1}}],["indicators",{"2":{"49":1,"51":1,"89":1,"90":1}}],["individual",{"2":{"3":1,"40":1,"83":1,"90":1,"95":1}}],["indexed",{"2":{"330":1}}],["indexes",{"2":{"211":1}}],["indexing",{"2":{"17":1,"19":1,"206":1,"229":1,"333":1,"342":1}}],["index",{"2":{"17":1,"211":1,"213":2,"327":1}}],["independently",{"2":{"252":1}}],["independent",{"2":{"6":1,"111":1,"196":1,"251":1,"253":1,"263":1}}],["in",{"0":{"75":1,"86":1,"256":1,"257":1,"269":1,"280":1,"326":1,"329":1,"330":1},"1":{"270":1,"271":1,"272":1,"273":1,"274":1,"327":1,"328":1,"329":1,"330":1,"331":2,"332":1,"333":1,"334":1,"335":1,"336":1,"337":1},"2":{"1":2,"3":2,"4":1,"8":1,"14":1,"16":1,"18":3,"19":1,"20":1,"24":2,"25":1,"26":1,"28":1,"30":1,"31":1,"33":1,"35":1,"36":1,"38":3,"40":1,"43":1,"44":1,"45":1,"48":1,"49":1,"50":2,"53":1,"54":2,"55":1,"57":3,"58":2,"59":1,"61":2,"62":5,"63":1,"64":1,"65":2,"66":1,"68":1,"69":1,"70":1,"71":1,"73":1,"75":2,"77":1,"80":1,"81":2,"82":2,"83":2,"86":1,"88":1,"97":1,"102":2,"103":4,"112":2,"115":2,"116":1,"117":1,"120":1,"122":1,"124":1,"125":2,"126":3,"129":1,"131":1,"134":1,"137":1,"139":1,"144":1,"146":1,"147":1,"148":1,"151":1,"152":1,"155":1,"157":1,"159":1,"160":2,"161":1,"162":3,"165":1,"166":1,"175":1,"176":1,"177":1,"180":2,"181":1,"186":2,"187":1,"188":1,"191":2,"196":2,"197":1,"201":1,"203":1,"205":2,"206":1,"207":1,"208":1,"209":1,"210":1,"211":2,"215":1,"218":1,"225":1,"227":1,"230":1,"231":1,"236":1,"238":1,"239":1,"245":1,"247":1,"248":2,"253":1,"254":6,"255":1,"259":1,"262":1,"263":2,"265":1,"266":1,"268":1,"270":2,"271":1,"274":1,"275":1,"276":1,"278":3,"281":1,"282":1,"287":2,"288":1,"290":1,"307":1,"308":1,"309":2,"310":2,"315":1,"316":1,"317":3,"320":1,"321":2,"322":1,"324":1,"325":2,"326":3,"328":1,"329":1,"330":1,"334":1,"335":2,"336":1,"338":1,"339":1,"340":1,"341":1,"343":1,"348":1,"356":1,"357":2,"358":1}}],["issues",{"2":{"212":1,"254":1}}],["issue",{"2":{"192":1,"212":1}}],["isolation",{"0":{"252":1},"2":{"155":1}}],["isolated",{"0":{"156":1},"2":{"1":1,"4":1,"17":1,"18":1,"19":1,"111":1,"155":1,"181":1,"312":1}}],["is",{"0":{"1":1},"2":{"1":1,"3":1,"5":1,"9":1,"10":1,"13":1,"14":3,"15":1,"17":2,"18":2,"20":2,"23":1,"25":1,"34":2,"39":1,"42":1,"43":1,"45":2,"48":1,"58":1,"66":2,"68":1,"71":1,"73":3,"76":1,"78":1,"82":1,"85":1,"87":1,"88":1,"92":5,"97":2,"99":1,"102":1,"103":6,"105":1,"110":4,"111":1,"115":1,"116":1,"117":1,"118":1,"122":1,"123":1,"124":1,"126":1,"129":1,"135":2,"140":1,"144":1,"146":1,"147":1,"149":1,"151":2,"158":1,"160":3,"163":1,"164":1,"165":1,"169":1,"171":1,"188":1,"190":2,"191":1,"200":1,"202":1,"203":1,"206":2,"210":3,"211":1,"212":3,"213":1,"219":1,"221":1,"222":2,"224":1,"227":2,"229":1,"233":1,"234":1,"235":1,"236":1,"241":3,"244":1,"251":1,"253":1,"254":5,"255":1,"256":2,"262":1,"263":1,"265":2,"267":3,"268":1,"271":1,"274":1,"276":1,"279":4,"280":1,"287":2,"288":3,"291":2,"305":2,"307":1,"308":1,"312":1,"315":1,"317":1,"320":2,"323":1,"324":1,"326":1,"336":1,"337":1,"341":1,"342":1,"347":1,"352":1,"353":2,"357":1,"358":1}}],["cp",{"2":{"320":1}}],["cd",{"2":{"320":1}}],["cdi",{"0":{"160":1,"161":1},"1":{"161":1,"162":1,"163":1},"2":{"159":2,"160":2,"161":3,"162":11,"163":3}}],["c",{"2":{"303":1}}],["cwd",{"2":{"198":1}}],["ctk",{"2":{"162":2}}],["certificates",{"2":{"126":1}}],["ceiling",{"2":{"16":1}}],["cni",{"2":{"323":1}}],["cn",{"2":{"126":1,"319":2,"321":3,"325":1}}],["cuda",{"2":{"163":1}}],["custom",{"2":{"54":1,"57":1,"80":1,"81":1,"120":1,"126":1,"199":1,"242":1}}],["curl",{"2":{"319":1}}],["curated",{"2":{"8":1,"196":1}}],["currently",{"2":{"6":1,"33":1,"63":1,"159":2,"214":1,"219":1,"235":1,"259":1,"267":1,"279":1,"290":1,"304":1,"360":1}}],["current",{"2":{"5":1,"7":1,"26":1,"46":1,"62":1,"78":1,"110":1,"129":1,"148":1,"149":1,"150":1,"152":1,"164":1,"172":1,"183":1,"200":1,"212":1,"230":1,"235":1,"241":1,"255":2,"262":2,"275":1,"279":3,"280":1,"284":1,"287":2,"288":3,"290":3,"291":1,"294":1,"297":3,"298":2,"299":2,"300":2,"307":2}}],["c2c",{"2":{"51":1}}],["claude",{"2":{"225":1}}],["class",{"2":{"14":1}}],["clash",{"2":{"14":1}}],["clear",{"2":{"193":1,"265":1,"277":1}}],["cleaning",{"2":{"190":1}}],["clean",{"2":{"171":1,"193":1,"256":1}}],["cleaner",{"2":{"14":1}}],["clone",{"2":{"319":1,"320":1}}],["close",{"2":{"147":1}}],["closer",{"2":{"101":1,"152":1}}],["closed",{"2":{"14":1}}],["cloud",{"2":{"15":1,"16":1,"17":1,"19":1,"20":1,"342":1}}],["clicking",{"2":{"113":1,"124":1,"257":1}}],["click",{"0":{"319":1},"2":{"24":2,"28":2,"31":2,"38":2,"44":2,"48":1,"49":2,"50":1,"54":2,"55":1,"56":1,"57":1,"58":1,"64":1,"65":2,"70":2,"71":1,"75":1,"81":2,"86":1,"87":2,"100":2,"101":1,"112":2,"122":1,"123":1,"125":2,"128":1,"129":1,"137":1,"149":1,"161":1,"165":1,"166":1,"169":1,"170":1,"176":2,"178":2,"184":1,"186":2,"187":1,"200":2,"201":1,"202":1,"205":1,"211":1,"218":1,"223":1,"237":1,"247":1,"249":1,"257":1,"260":1,"270":1,"309":1,"310":1,"329":2,"336":1,"343":2,"345":1,"348":2,"350":1,"353":2,"354":1,"355":1,"358":3}}],["clicks",{"2":{"14":1}}],["client",{"0":{"219":1},"2":{"9":1,"37":4,"39":1,"41":1,"217":1,"218":3,"219":2,"221":1,"222":1,"313":1}}],["circling",{"2":{"13":1}}],["china",{"0":{"321":1},"2":{"319":1,"321":2,"325":1}}],["chromium",{"2":{"126":1,"130":3,"325":1}}],["checking",{"2":{"233":1,"278":1}}],["checks",{"2":{"114":1,"190":1}}],["checked",{"2":{"97":1}}],["check",{"2":{"40":1,"66":2,"178":1,"200":1,"242":1,"263":1,"319":1}}],["cheaply",{"2":{"152":1}}],["cheap",{"2":{"16":1}}],["choices",{"2":{"14":1}}],["choose",{"2":{"11":1,"23":1,"24":1,"34":1,"35":1,"43":1,"44":1,"57":1,"60":1,"69":2,"75":2,"100":1,"105":1,"106":1,"107":1,"176":1,"199":1,"201":1,"223":1,"309":1,"310":1}}],["changing",{"2":{"314":1}}],["changed",{"2":{"211":1}}],["change",{"2":{"101":1,"137":1,"146":1,"161":1,"163":1,"236":1,"256":1,"320":1,"322":1}}],["changes",{"0":{"146":1},"2":{"5":1,"29":1,"146":1,"164":1,"172":1,"183":1,"186":1,"214":1}}],["chance",{"2":{"145":1}}],["channels",{"0":{"33":1,"132":1,"134":1,"256":1},"1":{"34":1,"35":1,"133":1,"134":1,"135":2,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1},"2":{"3":1,"10":2,"11":1,"33":3,"59":1,"62":5,"63":1,"66":2,"67":3,"108":1,"110":1,"111":1,"114":1,"132":1,"133":1,"255":1,"263":1,"314":1}}],["channel",{"0":{"7":1,"22":1,"27":1,"36":1,"42":1,"47":1,"53":1,"59":1,"68":1,"73":1,"75":1,"79":1,"85":1,"86":1,"109":1,"137":1,"174":1},"1":{"23":1,"24":1,"25":1,"26":1,"28":1,"29":1,"30":1,"31":1,"32":1,"37":1,"38":1,"39":1,"40":1,"41":1,"43":1,"44":1,"45":1,"46":1,"48":1,"49":1,"50":1,"51":1,"52":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"69":1,"70":1,"71":1,"72":1,"74":1,"75":1,"76":1,"77":1,"78":1,"80":1,"81":1,"82":1,"83":1,"84":1,"86":1,"87":1,"88":1,"89":1,"90":1},"2":{"1":1,"7":1,"18":1,"24":1,"25":1,"31":1,"35":3,"38":1,"44":1,"45":1,"49":1,"50":1,"51":1,"57":1,"65":1,"66":2,"70":1,"71":1,"75":3,"77":1,"78":1,"81":1,"82":1,"86":1,"88":1,"91":2,"95":4,"100":6,"102":2,"106":1,"107":1,"108":1,"109":4,"114":1,"137":2,"138":1,"140":1,"141":2,"142":1,"143":3,"173":1,"234":1,"235":1,"241":1,"255":3,"278":1,"287":3,"291":2,"312":1,"314":1}}],["chatbot",{"2":{"254":1}}],["chatbox",{"2":{"19":1}}],["chatgpt",{"2":{"219":1,"221":1}}],["chatting",{"0":{"45":1,"82":1,"88":1},"2":{"96":1,"189":1,"253":1}}],["chats",{"2":{"3":1,"22":2,"26":2,"53":1,"78":2,"82":1,"83":1,"103":1,"112":1,"281":1}}],["chat",{"0":{"105":1,"225":1,"254":1},"1":{"226":1,"227":1,"228":1},"2":{"1":1,"6":1,"9":3,"11":2,"18":2,"25":1,"32":1,"33":3,"56":2,"62":1,"71":1,"92":2,"94":2,"96":1,"100":1,"102":1,"107":1,"108":1,"109":1,"111":1,"114":1,"115":1,"116":7,"117":1,"120":1,"132":1,"133":1,"135":1,"150":1,"152":2,"153":1,"180":1,"191":1,"215":1,"216":1,"219":3,"222":1,"224":2,"225":1,"228":2,"230":2,"231":1,"232":1,"252":1,"253":2,"254":2,"255":5,"256":1,"257":2,"259":2,"278":1,"281":1,"282":1,"284":1,"287":6,"291":1,"296":2,"297":1,"313":1,"326":1}}],["caching",{"2":{"262":1}}],["cache",{"2":{"6":1,"149":1,"262":4,"285":1,"290":2}}],["came",{"2":{"262":1,"274":1}}],["calculate",{"2":{"227":1}}],["called",{"2":{"239":1}}],["call",{"2":{"225":1,"226":2,"250":1}}],["callback",{"2":{"24":1,"35":1,"57":1,"75":1,"76":3,"139":1,"141":2,"142":1}}],["calls",{"2":{"17":1,"146":1,"214":1,"235":2,"240":1,"241":2,"242":1}}],["catalog",{"2":{"223":1,"308":1,"314":1}}],["category",{"2":{"14":1}}],["capturing",{"2":{"124":1}}],["captured",{"2":{"166":1}}],["capture",{"2":{"123":1,"164":1}}],["capable",{"2":{"116":1}}],["capability",{"0":{"55":1},"2":{"13":1,"15":1,"17":1,"23":1,"160":2,"245":1}}],["capabilities",{"0":{"196":1},"2":{"8":1,"55":1,"56":1,"114":1,"116":1,"177":1,"231":1,"326":1}}],["carried",{"2":{"146":1}}],["carry",{"2":{"14":1}}],["card",{"2":{"113":1,"271":1}}],["caught",{"2":{"14":1}}],["cases",{"2":{"124":1}}],["case",{"0":{"12":1,"139":1,"140":1,"141":1,"142":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"242":1,"327":1}}],["cannot",{"2":{"66":1,"227":1,"321":1}}],["can",{"0":{"105":1},"2":{"1":1,"3":1,"4":1,"6":2,"7":1,"8":1,"10":1,"11":1,"13":1,"14":5,"18":3,"19":2,"25":1,"33":1,"36":1,"37":2,"40":1,"42":2,"45":1,"48":1,"66":1,"72":1,"77":1,"82":1,"88":1,"91":2,"92":3,"94":2,"95":1,"101":1,"106":1,"107":1,"108":1,"109":1,"111":1,"113":1,"116":2,"117":2,"118":1,"123":2,"128":1,"129":1,"130":1,"133":1,"147":1,"148":1,"152":2,"156":1,"160":1,"161":1,"178":6,"180":1,"181":1,"188":1,"191":1,"194":1,"196":2,"200":1,"202":2,"210":1,"211":1,"223":3,"226":4,"227":1,"234":1,"236":1,"239":1,"240":1,"241":1,"244":1,"250":1,"254":1,"257":1,"263":1,"264":1,"266":1,"267":1,"268":1,"272":1,"274":1,"275":1,"282":1,"319":1,"337":1,"338":1,"347":1,"355":1,"357":2,"358":1}}],["crowd",{"2":{"145":1}}],["cross",{"2":{"50":1,"71":1}}],["cron",{"0":{"234":1,"236":1},"2":{"6":1,"18":1,"114":1,"233":1,"234":1,"235":1,"236":1,"237":1,"239":1,"241":1,"242":1,"253":1,"263":1}}],["credential",{"2":{"81":1}}],["credentials",{"0":{"74":1},"2":{"23":1,"35":1,"44":1,"54":1,"70":1,"80":1,"87":1,"137":1,"138":1,"217":1,"218":1,"247":1,"319":1,"323":1}}],["creating",{"0":{"112":1,"125":1,"165":1,"176":1,"208":1,"218":1,"238":1,"329":1,"343":1,"348":1,"353":1},"1":{"239":1,"240":1},"2":{"99":1,"115":1,"126":1,"159":1,"223":1,"278":1,"330":1,"344":1,"349":1}}],["creation",{"2":{"43":1,"92":1,"119":1,"120":1,"158":1,"163":1,"167":1,"326":1}}],["creates",{"2":{"255":1,"287":1}}],["created",{"2":{"113":1,"115":1,"128":1,"163":1,"178":1,"183":1,"238":1,"249":1,"253":4,"263":2,"268":1,"336":1,"345":1,"350":1,"353":1}}],["create",{"0":{"23":1,"28":1,"37":1,"48":1,"54":1,"60":1,"69":1,"80":1},"2":{"1":1,"3":1,"11":1,"18":1,"23":1,"35":1,"43":1,"48":2,"54":2,"58":1,"60":1,"61":1,"69":1,"80":1,"92":1,"102":1,"112":2,"114":2,"125":1,"141":1,"158":1,"161":1,"165":1,"176":1,"178":1,"183":1,"205":1,"239":2,"240":1,"255":2,"256":1,"257":1,"266":1,"268":1,"279":2,"281":1,"282":1,"303":3,"312":1,"313":1,"320":1,"329":1,"337":1,"340":1,"343":1,"348":1,"353":1,"357":1,"358":1}}],["cohere",{"2":{"317":1}}],["collection",{"2":{"190":1,"330":2}}],["collaborate",{"2":{"18":1}}],["corresponding",{"2":{"263":1}}],["corrupted",{"2":{"171":1}}],["cores=chromium",{"2":{"130":1}}],["cores",{"2":{"130":4,"319":1,"325":1}}],["core",{"0":{"115":1,"130":1},"2":{"19":1,"114":1,"126":1,"130":1,"296":1,"316":3,"319":1,"320":1}}],["counter",{"2":{"241":1}}],["counts",{"2":{"237":1,"262":1}}],["count",{"2":{"151":1,"262":1,"290":1}}],["could",{"2":{"14":1}}],["covers",{"2":{"73":1}}],["coverage",{"0":{"7":1}}],["copies",{"2":{"274":1}}],["copilot",{"0":{"222":1},"2":{"9":1,"217":1,"218":1,"219":2,"220":1,"222":3}}],["copying",{"2":{"35":1}}],["copy",{"2":{"23":1,"28":1,"30":1,"48":1,"50":1,"54":1,"57":1,"61":1,"64":1,"71":1,"76":1,"139":1,"141":1,"268":1,"277":1}}],["coder",{"2":{"265":3,"266":1,"267":1}}],["code",{"0":{"87":1},"2":{"50":2,"51":1,"71":3,"72":1,"85":1,"87":3,"140":2,"155":1,"222":1,"265":1}}],["codex",{"0":{"221":1},"2":{"9":1,"217":1,"219":2,"220":1,"221":2}}],["coding",{"2":{"18":1,"219":1,"221":1,"265":1}}],["costs",{"2":{"317":1,"327":1}}],["cost",{"2":{"14":1,"328":1}}],["combined",{"2":{"319":1}}],["com",{"2":{"161":4,"221":1,"320":1}}],["comes",{"2":{"100":1,"111":1,"116":1}}],["come",{"0":{"266":1},"2":{"64":1,"116":1}}],["commas",{"2":{"161":1}}],["command",{"0":{"279":1,"306":1},"1":{"307":1},"2":{"8":1,"10":1,"69":1,"110":1,"152":1,"198":3,"234":1,"235":1,"240":1,"241":2,"242":1,"253":1,"255":1,"265":1,"278":1,"279":1,"280":3,"281":2,"284":2,"291":3,"303":2,"313":1}}],["commands",{"0":{"150":1,"278":1,"284":1,"286":1,"289":1,"295":1,"302":1,"324":1},"1":{"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":2,"288":2,"289":1,"290":2,"291":2,"292":2,"293":2,"294":2,"295":1,"296":2,"297":2,"298":2,"299":2,"300":2,"301":2,"302":1,"303":2,"304":2,"305":2,"306":1,"307":1},"2":{"4":1,"6":1,"11":1,"18":2,"19":1,"30":1,"32":2,"121":1,"154":1,"155":1,"263":1,"278":2,"279":2,"281":2,"291":1,"313":1}}],["commonly",{"2":{"160":1}}],["common",{"0":{"138":1,"324":1},"2":{"92":1,"161":1,"186":1,"218":1,"236":1,"276":1}}],["communities",{"2":{"135":1}}],["community",{"2":{"27":1,"33":1}}],["communication",{"0":{"133":1},"2":{"116":1,"173":1}}],["communicates",{"2":{"198":1}}],["communicate",{"2":{"36":1}}],["comprehensive",{"2":{"245":1,"250":1}}],["compresses",{"2":{"210":1}}],["compression",{"2":{"210":1}}],["component",{"2":{"182":1}}],["compose",{"2":{"130":1,"178":1,"315":1,"316":1,"317":1,"318":1,"319":2,"320":3,"321":4,"324":6,"334":2,"335":1}}],["complement",{"2":{"242":1}}],["complex",{"2":{"111":1,"164":1}}],["complete",{"2":{"265":1}}],["completes",{"2":{"222":1}}],["completed",{"2":{"151":1,"192":1}}],["completely",{"2":{"62":1}}],["completions",{"2":{"9":1,"219":2}}],["compacted",{"2":{"151":1}}],["compact",{"0":{"307":1},"2":{"114":1,"147":1,"149":1,"150":2,"153":1,"210":1,"214":1,"262":2,"285":1,"307":2,"317":1,"328":1,"337":1}}],["compaction",{"0":{"118":1,"144":1,"147":1,"148":1,"153":2,"210":1,"306":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":2,"150":2,"151":1,"152":1,"153":1,"154":1,"307":1},"2":{"5":3,"10":2,"114":2,"115":2,"116":1,"118":11,"144":1,"145":1,"146":1,"147":8,"148":1,"149":1,"150":1,"151":4,"152":2,"153":4,"154":1,"206":2,"210":3,"214":5,"227":1,"262":1,"285":1,"307":5,"314":2,"326":1}}],["compatibilities",{"0":{"226":1},"2":{"225":1,"228":1}}],["compatibility",{"2":{"116":1,"226":2,"266":3,"274":1,"276":1}}],["compatible",{"2":{"9":2,"217":1,"219":1}}],["compat",{"2":{"75":1}}],["compare",{"0":{"19":1}}],["computer",{"2":{"1":1,"18":1,"156":1,"184":1}}],["convert",{"2":{"328":1}}],["converts",{"2":{"317":1}}],["converse",{"2":{"180":1}}],["conversational",{"0":{"239":1},"2":{"145":1,"287":1}}],["conversation",{"0":{"252":1},"2":{"5":1,"15":1,"18":1,"62":1,"100":4,"102":3,"116":1,"119":1,"144":1,"145":1,"149":1,"153":1,"206":1,"208":2,"214":2,"224":1,"244":1,"251":1,"252":1,"253":3,"254":4,"255":1,"256":1,"259":1,"279":2,"287":1,"288":1,"290":2,"291":1,"307":1}}],["conversations",{"0":{"66":1},"2":{"3":1,"5":1,"6":1,"33":1,"36":1,"40":1,"45":1,"66":1,"78":1,"83":2,"90":1,"92":2,"102":1,"103":1,"202":1,"204":1,"214":1,"231":1,"251":1,"253":1,"254":1,"255":2,"260":1,"263":1,"287":1,"326":1,"337":1,"357":1}}],["convenience",{"2":{"281":1}}],["conf",{"2":{"320":1}}],["confusing",{"2":{"110":1}}],["confirmed",{"2":{"87":1}}],["confirm",{"2":{"25":1,"77":1,"87":1,"99":1,"122":1,"309":1}}],["confidence",{"2":{"19":1}}],["config",{"2":{"10":1,"100":1,"109":1,"201":1,"236":1,"319":1,"320":3,"321":1,"322":1,"323":2,"325":3,"334":1,"335":1}}],["configurable",{"2":{"111":1,"357":1}}],["configurations",{"2":{"114":1,"172":1,"201":1}}],["configuration",{"0":{"22":1,"27":1,"36":1,"42":1,"47":1,"53":1,"59":1,"68":1,"73":1,"79":1,"85":1,"136":1,"191":1,"225":1,"246":1,"295":1,"323":1},"1":{"23":1,"24":1,"25":1,"26":1,"28":1,"29":1,"30":1,"31":1,"32":1,"37":1,"38":1,"39":1,"40":1,"41":1,"43":1,"44":1,"45":1,"46":1,"48":1,"49":1,"50":1,"51":1,"52":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"69":1,"70":1,"71":1,"72":1,"74":1,"75":1,"76":1,"77":1,"78":1,"80":1,"81":1,"82":1,"83":1,"84":1,"86":1,"87":1,"88":1,"89":1,"90":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"226":1,"227":1,"228":1,"247":1,"248":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1},"2":{"1":1,"10":1,"35":1,"76":1,"114":1,"124":1,"127":1,"135":11,"137":1,"138":1,"139":1,"141":1,"143":2,"164":1,"186":1,"200":1,"201":1,"205":1,"212":1,"248":1,"274":1,"294":1,"319":1,"325":1,"336":1,"356":1}}],["configuring",{"0":{"115":1,"126":1,"330":1,"344":1,"349":1,"354":1},"1":{"127":1,"331":1},"2":{"33":1,"115":1,"162":1}}],["configure",{"0":{"24":1,"29":1,"31":1,"38":1,"44":1,"49":1,"56":1,"57":1,"62":1,"65":1,"70":1,"76":1,"81":1,"161":1},"2":{"11":2,"18":1,"35":1,"49":1,"94":1,"98":1,"133":1,"134":1,"138":1,"142":1,"147":1,"174":1,"177":1,"191":1,"196":1,"197":1,"216":1,"219":1,"232":1,"245":1,"313":1,"314":1,"330":1,"340":1,"344":1,"349":1,"354":1,"358":1}}],["configured",{"2":{"9":1,"32":1,"33":1,"117":1,"129":1,"131":1,"141":1,"146":1,"147":1,"158":1,"160":1,"162":1,"205":1,"215":1,"236":1,"244":1,"301":1,"335":1,"355":1}}],["connected",{"2":{"212":1,"234":1,"241":1}}],["connects",{"2":{"66":1,"199":1,"342":1}}],["connect",{"2":{"33":2,"42":1,"82":1,"132":1,"195":1,"243":1,"245":1}}],["connectivity",{"2":{"212":1}}],["connecting",{"2":{"27":1,"36":1,"47":1,"59":1,"68":1,"79":1,"85":1,"140":1,"174":1}}],["connection",{"0":{"142":1,"197":1},"1":{"198":1,"199":1},"2":{"22":1,"24":1,"35":1,"44":1,"114":1,"142":1,"174":1,"198":1,"199":1,"200":2,"201":3,"202":2,"203":1,"217":1,"244":1,"310":2,"323":2}}],["connections",{"0":{"195":1},"1":{"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1},"2":{"8":1,"61":1,"134":1,"175":1,"196":2,"197":1,"201":3,"285":1,"301":1}}],["concept",{"0":{"124":1,"133":1,"156":1,"174":1,"190":1,"196":1,"206":1,"234":1,"244":1,"252":1},"2":{"214":1}}],["concepts",{"0":{"93":1},"1":{"94":1,"95":1,"96":1,"97":1},"2":{"214":1}}],["conceptually",{"2":{"14":1}}],["conclusion",{"0":{"20":1}}],["consists",{"2":{"316":1}}],["consistently",{"2":{"3":1}}],["consume",{"2":{"278":1}}],["console",{"2":{"35":1,"55":1,"57":1,"58":1,"80":1}}],["constraint",{"2":{"14":1}}],["contribute",{"0":{"311":1},"2":{"311":1}}],["controlling",{"2":{"95":1}}],["control",{"0":{"91":1},"1":{"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1},"2":{"10":1,"15":1,"17":1,"91":2,"95":1,"98":1,"119":1,"278":1,"313":1,"314":1}}],["controls",{"2":{"10":1,"119":1,"215":1,"323":1,"330":1}}],["continuing",{"2":{"307":1}}],["continuity",{"2":{"16":1,"20":1,"145":1}}],["continue",{"2":{"20":1,"131":1,"337":1,"360":1}}],["continuously",{"2":{"14":1}}],["contents",{"2":{"170":1}}],["content",{"2":{"14":1,"29":1,"32":1,"37":1,"40":1,"51":1,"83":1,"90":1,"123":1,"124":1,"186":1,"208":1,"209":1,"257":1,"265":1,"271":1,"273":1}}],["contextually",{"2":{"204":1}}],["contexts",{"0":{"123":1,"127":1},"1":{"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1},"2":{"115":1,"125":3,"285":1}}],["context",{"0":{"5":1,"125":1,"126":1,"128":1,"144":1,"152":1,"153":1,"214":1,"227":1,"306":1},"1":{"127":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"307":1},"2":{"5":2,"6":2,"13":2,"14":1,"16":2,"17":1,"18":1,"20":1,"72":1,"100":1,"110":1,"114":1,"115":1,"116":3,"118":5,"123":2,"124":1,"125":2,"126":1,"127":2,"128":3,"129":1,"144":3,"145":2,"146":2,"147":5,"149":1,"150":1,"151":1,"152":2,"153":2,"154":1,"195":2,"203":1,"206":3,"210":1,"214":3,"225":2,"227":4,"234":1,"241":1,"251":1,"252":2,"253":1,"255":2,"256":1,"262":3,"263":1,"285":3,"287":2,"290":1,"291":1,"300":1,"307":3,"314":2}}],["contains",{"2":{"21":1,"116":1,"253":3,"279":1}}],["containerd",{"2":{"159":1,"315":2,"316":1,"323":2}}],["containers",{"2":{"17":1,"18":1,"315":1}}],["containerization",{"2":{"16":1}}],["containerized",{"0":{"4":1,"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"1":1,"15":1,"17":1,"18":1,"19":1,"20":1,"312":1}}],["container",{"0":{"155":1,"159":1,"172":1},"1":{"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1},"2":{"4":1,"18":1,"19":1,"111":1,"114":5,"121":3,"122":1,"155":1,"156":1,"157":1,"158":5,"159":5,"160":4,"161":3,"162":2,"163":6,"164":1,"165":1,"166":1,"168":2,"169":1,"170":1,"171":2,"172":4,"181":1,"184":2,"198":1,"266":1,"285":1,"305":1,"317":3,"323":1,"328":1}}],["contact",{"2":{"13":1}}],["mp3",{"2":{"354":2}}],["mpim",{"2":{"62":2,"63":1}}],["md",{"2":{"186":1,"265":1,"266":3,"271":1,"305":1}}],["m",{"2":{"37":2}}],["my",{"2":{"69":2,"239":1,"240":1,"247":1}}],["mybot",{"2":{"37":1,"38":1}}],["myself",{"2":{"14":1}}],["mirrors",{"2":{"325":1}}],["mirror=true",{"2":{"319":2,"321":1}}],["mirror",{"0":{"321":1},"2":{"319":1,"321":1,"323":1,"325":1}}],["midnight",{"2":{"236":2}}],["migration",{"2":{"168":1}}],["minute",{"2":{"236":1}}],["minutes",{"2":{"117":1,"191":2,"236":1,"242":1,"296":1,"322":1}}],["minimum",{"2":{"56":1,"265":1,"320":1}}],["microsoft",{"2":{"219":1,"352":1,"359":1}}],["mic",{"2":{"14":1}}],["misskey",{"0":{"42":1,"43":1},"1":{"43":1,"44":1,"45":1,"46":1},"2":{"1":1,"7":1,"33":1,"42":3,"43":3,"44":2,"45":2,"114":1,"135":2,"255":1,"312":1}}],["must",{"2":{"74":1,"158":1,"160":1,"162":1,"228":1,"320":1,"325":1,"334":1,"335":1}}],["much",{"2":{"14":1,"146":1,"262":1}}],["multilingual",{"2":{"317":2,"328":1,"334":1}}],["multiple",{"2":{"1":1,"3":1,"9":1,"17":1,"18":1,"110":1,"121":1,"133":1,"156":1,"201":2,"204":1,"250":1,"266":1,"267":1,"316":1,"317":1,"328":1}}],["multi",{"0":{"3":2},"2":{"1":1,"14":1,"18":1,"19":1,"312":1}}],["mcpservers",{"2":{"201":1}}],["mcp",{"0":{"8":1,"195":1,"301":1,"310":1},"1":{"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1},"2":{"8":2,"18":1,"32":1,"114":2,"188":1,"194":1,"195":1,"196":3,"197":2,"199":2,"200":2,"202":1,"203":3,"285":2,"301":4,"308":1,"310":2,"311":1,"314":2}}],["mounts",{"2":{"320":1}}],["morning",{"2":{"235":1,"240":1,"279":1,"281":1,"303":2}}],["more",{"2":{"1":1,"10":1,"14":3,"18":2,"19":1,"20":1,"40":1,"62":1,"124":1,"133":1,"145":1,"152":2,"161":1,"193":1,"210":1,"216":2,"254":1,"317":1}}],["mono",{"2":{"354":3}}],["monologue",{"2":{"254":1}}],["monday",{"2":{"236":1}}],["month",{"2":{"236":3}}],["monitor",{"2":{"188":1,"211":1}}],["monitoring",{"0":{"192":1},"1":{"193":1},"2":{"180":1}}],["monaco",{"2":{"186":1}}],["move",{"2":{"183":1}}],["mobile",{"2":{"14":1,"35":1,"116":1,"123":1,"126":2}}],["moment",{"2":{"14":3}}],["most",{"2":{"14":1,"68":1,"103":1,"115":1,"120":1,"160":1,"206":1,"220":1,"225":1,"231":1,"254":1,"271":1,"279":1,"293":1}}],["modify",{"2":{"156":1,"186":1,"209":1}}],["modules",{"2":{"8":1,"264":1}}],["modes",{"0":{"327":1},"1":{"328":1},"2":{"226":1,"316":1,"317":1,"326":1,"339":1,"341":1}}],["modelcontextprotocol",{"2":{"198":1}}],["model",{"0":{"224":1,"225":1,"231":1,"279":1,"297":1,"354":1},"1":{"226":1,"227":1,"228":1},"2":{"10":1,"11":1,"15":1,"18":1,"34":1,"103":1,"114":1,"116":14,"117":3,"118":2,"120":1,"129":1,"145":2,"146":1,"147":3,"151":2,"152":4,"191":2,"195":1,"214":1,"215":1,"221":1,"223":2,"224":1,"225":3,"226":6,"227":2,"228":4,"231":4,"254":1,"262":1,"267":1,"278":1,"279":2,"280":2,"285":1,"292":2,"296":4,"297":15,"313":3,"317":5,"327":1,"328":2,"330":2,"334":1,"335":1,"353":1,"354":1,"355":2,"356":1,"357":3,"358":3}}],["models",{"0":{"9":1,"216":1,"223":1,"228":1,"229":1,"230":1},"1":{"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1},"2":{"9":5,"11":1,"13":1,"16":1,"114":1,"115":1,"116":3,"216":4,"218":1,"222":1,"223":4,"224":5,"229":2,"230":3,"231":1,"232":1,"285":1,"297":1,"313":1,"317":1,"357":1}}],["mode",{"0":{"6":1,"57":1,"61":1,"328":1,"333":1,"334":1,"335":1},"2":{"33":1,"57":1,"61":2,"75":2,"76":1,"120":1,"135":1,"139":1,"141":1,"206":1,"211":1,"215":1,"253":1,"317":1,"327":1,"328":2,"330":2}}],["macos",{"2":{"320":1}}],["machine",{"2":{"162":2,"169":1,"170":1,"184":1}}],["masked",{"2":{"317":1}}],["marked",{"2":{"282":1}}],["markdown",{"2":{"26":1,"40":1,"45":1,"46":1,"49":2,"51":1,"68":1,"72":1,"114":1,"265":2,"270":1}}],["max",{"2":{"235":1,"240":1,"241":1,"242":1}}],["maximum",{"2":{"225":1}}],["mapped",{"2":{"138":1}}],["mail",{"2":{"180":1}}],["mailgun",{"2":{"33":1,"174":1,"176":1}}],["mainland",{"0":{"321":1},"2":{"319":1,"321":1,"325":1}}],["maintain",{"2":{"156":1,"252":1}}],["maintains",{"2":{"6":1,"24":1,"142":1,"251":1}}],["maintenance",{"2":{"118":1,"210":1,"233":1}}],["main",{"2":{"116":1,"117":1,"152":1,"191":1,"219":1,"224":1,"313":1,"315":1,"316":1}}],["may",{"2":{"23":1,"35":1,"74":1,"206":1,"226":1,"247":1,"253":1,"268":1,"322":1}}],["making",{"2":{"20":2,"272":1}}],["make",{"2":{"16":1,"43":1,"64":1,"76":1,"205":1,"210":1}}],["makes",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"2":{"13":1,"16":1,"215":1,"254":1}}],["matter",{"2":{"119":1}}],["matters",{"2":{"97":1,"230":1,"266":1}}],["mattered",{"2":{"14":1}}],["match",{"2":{"162":1,"320":1,"325":1}}],["matching",{"2":{"66":1,"97":2}}],["matches",{"2":{"34":1,"94":1,"95":1,"97":2,"119":1,"162":1}}],["matrix",{"0":{"36":1,"37":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1},"2":{"1":1,"7":1,"33":2,"36":3,"37":5,"38":5,"39":1,"40":1,"41":1,"114":1,"133":1,"135":2,"312":1}}],["managing",{"0":{"98":1,"127":1,"167":1,"184":1,"193":1,"209":1,"248":1,"258":1,"269":1,"331":1},"1":{"99":1,"100":1,"101":1,"102":1,"259":1,"260":1,"261":1,"270":1,"271":1,"272":1,"273":1,"274":1},"2":{"342":1}}],["manages",{"2":{"216":1,"252":1,"303":1,"338":1}}],["managed",{"2":{"160":1,"216":1,"230":1,"253":1,"266":3,"268":4,"270":1,"271":1,"272":2,"274":3,"276":2,"314":1}}],["managers",{"2":{"156":1}}],["manager",{"2":{"114":1,"187":1}}],["manage",{"2":{"10":1,"113":1,"120":1,"125":1,"131":1,"142":1,"154":1,"157":1,"172":1,"175":1,"178":1,"181":1,"188":1,"207":1,"224":1,"264":1,"276":1,"285":1,"337":1,"340":1,"341":1}}],["management",{"0":{"5":1,"111":1,"155":1,"181":1,"204":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1},"2":{"8":1,"10":2,"18":1,"58":1,"80":2,"114":1,"129":1,"131":1,"144":1,"154":1,"173":1,"232":1,"337":1,"341":1,"346":2,"351":2}}],["manual",{"0":{"320":1},"1":{"321":1},"2":{"87":1,"233":1,"326":1}}],["manually",{"2":{"24":1,"103":1,"130":1,"188":1,"196":1,"202":1,"208":1,"223":1,"276":1,"337":1}}],["manifesto",{"2":{"13":1}}],["many",{"2":{"7":1,"14":1,"151":1,"158":1,"214":1}}],["me",{"2":{"239":1}}],["merge",{"2":{"144":1,"146":1,"210":1}}],["medium",{"2":{"116":1,"226":1,"296":1}}],["media",{"2":{"22":1,"26":1,"40":1,"46":1,"78":1,"90":1}}],["mental",{"0":{"231":1},"2":{"103":1,"267":1}}],["mentions",{"2":{"42":1,"62":2}}],["mention",{"2":{"25":1,"63":1,"281":1}}],["meaning",{"2":{"226":1,"236":1,"267":1,"280":1}}],["mean",{"0":{"103":1}}],["means",{"2":{"1":1,"97":1,"162":1,"254":2,"275":1}}],["metadata",{"2":{"62":1,"151":1}}],["metaphors",{"2":{"14":1}}],["metrics",{"2":{"6":1}}],["message",{"2":{"23":1,"25":2,"29":1,"30":1,"32":1,"33":1,"39":1,"40":1,"50":1,"51":2,"56":1,"57":2,"63":4,"66":1,"72":1,"73":1,"77":2,"78":1,"83":1,"90":1,"94":1,"95":1,"100":1,"135":1,"151":1,"206":1,"241":1,"251":1,"254":1,"256":1,"261":1,"262":1,"281":1,"285":1,"290":1}}],["messages",{"2":{"9":1,"30":1,"33":1,"35":1,"36":1,"40":2,"51":1,"56":1,"59":1,"62":5,"66":3,"67":1,"76":1,"82":2,"83":2,"88":1,"90":2,"108":1,"138":1,"139":1,"145":1,"151":1,"208":1,"219":2,"252":1,"256":1,"262":1,"287":1}}],["messaging",{"0":{"25":1},"2":{"8":1,"23":1,"33":5,"36":1,"85":1,"111":1,"132":1,"133":1,"135":1}}],["mem0",{"0":{"342":1,"343":1,"344":1,"345":1},"1":{"343":1,"344":1,"345":1,"346":1},"2":{"205":1,"339":2,"341":2,"342":3,"343":1,"344":3,"345":1,"346":2}}],["memories",{"0":{"208":1},"2":{"114":1,"144":1,"153":1,"206":2,"207":1,"209":2,"210":4,"211":2,"213":1,"215":2,"263":1,"330":1,"333":1,"337":4,"340":1}}],["memory",{"0":{"5":1,"153":1,"204":1,"206":1,"210":1,"214":1,"298":1,"326":1,"327":1,"336":1,"337":1,"338":1,"342":1,"347":1},"1":{"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"327":1,"328":2,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"336":1,"337":1,"339":1,"340":1,"341":1,"343":1,"344":1,"345":1,"346":1,"348":1,"349":1,"350":1,"351":1},"2":{"1":3,"5":4,"8":1,"9":1,"14":1,"15":1,"17":1,"18":3,"19":1,"20":1,"111":1,"114":3,"115":1,"116":3,"118":1,"122":1,"131":3,"144":3,"146":3,"153":5,"154":2,"194":1,"204":1,"205":6,"206":2,"207":1,"208":3,"209":1,"210":3,"211":2,"212":5,"213":2,"214":5,"215":4,"224":1,"229":1,"231":1,"232":1,"263":1,"285":2,"298":4,"307":4,"312":2,"314":4,"316":2,"317":5,"326":8,"329":2,"330":2,"336":2,"337":5,"338":5,"339":4,"340":3,"341":6,"342":2,"343":2,"345":1,"346":4,"347":3,"348":2,"350":1,"351":4}}],["memoh123",{"2":{"319":1,"325":1}}],["memohai",{"2":{"311":1,"320":1}}],["memohbot",{"2":{"281":1}}],["memoh",{"0":{"0":1,"1":1,"2":1,"12":1,"24":1,"31":1,"38":1,"44":1,"49":1,"65":1,"70":1,"75":1,"81":1,"86":1,"312":1},"1":{"1":1,"2":1,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"313":1,"314":1},"2":{"1":1,"3":1,"5":1,"6":1,"7":2,"9":1,"13":1,"15":1,"16":1,"17":1,"19":2,"20":3,"21":1,"22":1,"24":2,"26":1,"27":1,"31":1,"33":2,"34":1,"35":2,"36":1,"38":1,"42":1,"43":1,"44":2,"45":1,"47":1,"49":1,"50":2,"53":1,"57":2,"59":1,"61":1,"62":1,"65":1,"68":2,"69":2,"70":1,"71":2,"73":1,"75":2,"76":2,"77":2,"79":1,"81":1,"85":1,"86":1,"87":2,"91":1,"92":1,"116":1,"123":1,"130":1,"133":1,"138":1,"139":2,"141":2,"142":1,"147":2,"152":1,"155":1,"160":1,"162":3,"172":1,"173":1,"181":1,"195":1,"198":1,"200":3,"202":1,"204":1,"206":1,"214":1,"216":2,"219":1,"222":1,"223":1,"224":1,"226":1,"227":2,"228":1,"236":1,"243":1,"253":1,"254":1,"265":1,"266":5,"267":1,"268":1,"270":1,"271":1,"274":2,"276":3,"278":1,"280":1,"281":1,"291":1,"307":1,"308":1,"310":1,"312":1,"313":1,"315":1,"316":1,"319":10,"320":2,"321":1,"325":2,"326":2,"338":1,"339":2,"357":1}}],["members",{"2":{"27":1,"29":1}}],["member",{"2":{"1":1,"95":1,"312":1}}],["avoid",{"2":{"265":1}}],["avatar",{"2":{"112":1}}],["available",{"0":{"339":1,"359":1},"2":{"23":1,"116":1,"130":1,"147":1,"151":1,"202":1,"234":1,"263":1,"274":1,"282":1,"304":1,"323":1,"354":1,"360":1}}],["audio",{"2":{"354":3,"357":1}}],["auditing",{"2":{"172":1}}],["audit",{"2":{"151":1,"179":1,"192":1}}],["auth",{"2":{"320":1,"323":1}}],["authenticates",{"2":{"221":1}}],["authentication",{"0":{"200":1},"2":{"81":1,"199":1,"200":2,"218":1,"344":1,"349":1}}],["authorization",{"2":{"200":1,"222":3}}],["authorized",{"2":{"106":1}}],["authorize",{"2":{"30":1,"64":1,"200":1}}],["automate",{"2":{"233":1}}],["automatic",{"0":{"147":1},"2":{"118":1,"147":2,"151":1,"190":1,"326":1}}],["automatically",{"2":{"24":1,"38":1,"39":1,"87":1,"88":1,"200":1,"202":2,"203":1,"215":1,"239":1,"241":1,"250":1,"253":1,"268":1,"321":1,"353":1}}],["automation",{"0":{"234":1,"302":1},"1":{"303":1,"304":1,"305":1},"2":{"8":1,"116":1,"120":1,"124":1,"242":1,"316":1,"320":1}}],["autonomy",{"0":{"190":1}}],["autonomous",{"2":{"6":1,"115":1,"117":2,"189":1,"194":1,"242":1,"253":1,"263":1}}],["auto",{"2":{"38":1,"39":1,"259":1,"319":1,"358":1}}],["affecting",{"2":{"155":1}}],["affects",{"2":{"146":1}}],["after",{"0":{"337":1},"2":{"25":1,"45":1,"66":2,"75":1,"88":1,"92":1,"101":1,"115":2,"119":2,"126":1,"128":1,"131":1,"140":1,"147":1,"163":1,"200":1,"222":1,"223":1,"268":1,"279":1,"322":1,"330":1,"341":1,"344":1,"349":1}}],["abort",{"2":{"279":1}}],["above",{"2":{"97":1}}],["about",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"2":{"21":1,"118":1,"144":1,"151":1,"159":1,"206":1,"313":1}}],["abcdefghijklmnopqrstuvwxyz",{"2":{"69":1}}],["am",{"2":{"235":1,"236":2,"239":1}}],["amd",{"2":{"161":2,"162":2}}],["amp",{"2":{"54":1,"58":1,"62":1,"64":1}}],["ambient",{"2":{"14":1}}],["aware",{"2":{"45":1}}],["aes",{"2":{"34":1,"74":1,"75":1,"76":1,"141":1}}],["adjustment",{"2":{"354":1}}],["adoption",{"2":{"314":1}}],["adopt",{"0":{"274":1},"2":{"268":2,"274":3,"276":1,"277":1}}],["advanced",{"0":{"120":1,"160":1},"1":{"161":1,"162":1,"163":1},"2":{"120":1,"160":2,"161":1,"265":1}}],["admin123",{"2":{"319":1,"322":1}}],["admins",{"2":{"94":1,"106":1}}],["admin",{"2":{"80":1,"92":1,"97":1,"319":3,"320":2,"322":1,"323":2}}],["address",{"2":{"174":1,"178":1,"179":1,"323":2}}],["adding",{"0":{"100":1,"137":1,"178":1,"247":1},"2":{"225":1}}],["additional",{"2":{"247":1,"333":1}}],["addition",{"2":{"61":1}}],["add",{"0":{"66":1,"75":1,"86":1,"270":1},"2":{"24":1,"30":1,"31":1,"35":1,"38":1,"44":1,"49":1,"57":2,"62":3,"63":1,"65":1,"70":1,"75":1,"81":1,"86":1,"92":2,"99":1,"100":1,"103":1,"106":1,"107":1,"108":1,"109":1,"125":1,"137":1,"176":1,"178":1,"201":3,"218":1,"223":2,"247":1,"270":1,"321":1,"329":1,"343":1,"348":1,"353":1,"358":1}}],["adapters",{"2":{"34":1,"135":1,"255":1,"278":1,"287":1}}],["adapter",{"2":{"7":1,"22":1,"42":1,"61":1,"62":1,"63":1,"73":2,"78":1,"255":1,"287":1}}],["a2a",{"2":{"19":1}}],["approaching",{"2":{"227":1}}],["approximate",{"2":{"225":1}}],["appropriate",{"2":{"163":1}}],["approved",{"2":{"58":1}}],["approval",{"2":{"48":1,"58":1}}],["approving",{"2":{"35":1}}],["apps",{"2":{"80":1}}],["appsecret",{"2":{"48":2,"49":1}}],["appears",{"2":{"309":1}}],["appear",{"2":{"72":1,"253":1,"266":1,"276":1}}],["applied",{"2":{"97":2,"163":1}}],["applies",{"2":{"94":1,"100":2}}],["applications",{"2":{"30":1,"132":1}}],["application",{"0":{"28":1},"2":{"28":1,"37":1,"80":1}}],["apply",{"2":{"56":1,"186":1,"230":1}}],["appid",{"2":{"48":1,"49":1}}],["app",{"0":{"23":1,"54":1,"58":1,"60":1,"64":1},"2":{"14":1,"20":1,"23":6,"24":2,"34":2,"35":3,"54":4,"57":3,"58":1,"60":2,"61":2,"62":1,"63":1,"64":3,"65":1,"66":2,"74":2,"75":2,"80":1,"139":1,"142":2,"320":1}}],["apis",{"2":{"17":1,"22":1,"74":1,"216":1}}],["api",{"0":{"240":1},"2":{"9":1,"35":1,"37":1,"60":1,"69":2,"70":1,"87":1,"120":1,"138":1,"176":1,"206":1,"215":1,"217":2,"218":3,"219":3,"220":1,"221":2,"240":2,"244":1,"247":2,"317":3,"322":1,"323":1,"327":1,"328":2,"339":3,"341":1,"342":1,"344":4,"346":1,"347":1,"349":3,"351":1,"352":2,"359":2}}],["aggregator",{"2":{"245":1}}],["aggressive",{"2":{"210":1}}],["aggressively",{"2":{"118":1,"147":1}}],["against",{"2":{"152":1}}],["again",{"2":{"48":1,"66":1,"87":1}}],["agreement",{"2":{"14":1}}],["agent2agent",{"2":{"19":1}}],["agents",{"2":{"13":1,"14":1,"16":1,"266":2}}],["agent",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"1":2,"13":1,"14":1,"19":1,"20":1,"111":1,"126":2,"234":1,"235":1,"241":2,"312":1,"315":1,"316":1}}],["architecture",{"0":{"316":1},"1":{"317":1}}],["archive",{"2":{"169":2,"170":2}}],["arguments",{"2":{"198":2,"279":2}}],["argument",{"2":{"130":1,"281":1}}],["around",{"2":{"14":1}}],["aren",{"2":{"189":1}}],["are",{"2":{"9":1,"11":1,"26":1,"33":1,"40":2,"50":1,"63":1,"71":1,"78":1,"83":1,"92":4,"97":2,"101":1,"103":1,"108":1,"115":1,"128":1,"130":1,"137":1,"138":1,"163":1,"170":1,"180":1,"200":1,"206":1,"209":1,"214":2,"215":1,"216":1,"220":1,"224":1,"225":1,"229":1,"230":1,"238":1,"252":2,"253":2,"254":2,"256":1,"259":1,"263":4,"264":1,"266":2,"275":3,"277":1,"278":2,"279":2,"281":2,"282":3,"291":1,"316":2,"322":1,"330":1,"333":1,"346":1,"351":1}}],["alternative",{"2":{"347":1}}],["along",{"2":{"241":1}}],["aloud",{"2":{"219":1,"352":1,"353":1,"354":1,"357":1,"359":1}}],["alerts",{"2":{"193":1}}],["alert",{"2":{"192":1}}],["aligned",{"2":{"141":1}}],["all",{"2":{"91":1,"92":2,"95":3,"100":1,"103":4,"105":1,"106":1,"107":1,"108":1,"112":1,"122":2,"179":1,"202":1,"211":2,"237":1,"256":1,"259":1,"263":2,"296":1,"297":2,"298":2,"299":2,"300":2,"301":2,"303":2,"315":1,"319":2,"323":1}}],["allowing",{"2":{"132":1,"180":1,"195":1,"251":1}}],["allow",{"2":{"91":1,"92":3,"94":2,"95":1,"96":1,"97":1,"100":1,"102":1,"103":3,"105":2,"106":1,"107":2,"108":1,"109":1,"112":1,"164":1,"233":1,"296":1}}],["allowed",{"2":{"43":1,"92":3,"94":1,"97":1,"105":1,"291":1}}],["allows",{"2":{"27":1,"36":1,"47":1,"53":1,"59":1,"79":1,"85":1,"126":1,"139":1,"155":1,"173":1,"185":1,"189":1,"204":1,"243":1}}],["already",{"2":{"14":1,"162":1,"205":1,"222":1,"223":1,"235":1,"274":1,"282":1,"288":1}}],["always",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"13":1,"14":2,"16":1,"17":1,"20":2,"97":1,"316":1}}],["also",{"2":{"7":1,"9":1,"16":1,"23":1,"62":1,"72":1,"74":1,"75":1,"117":1,"118":1,"120":1,"147":1,"149":1,"152":1,"179":1,"188":1,"200":1,"202":1,"223":1,"226":1,"240":1,"262":1,"275":1,"320":1,"325":1}}],["ascii",{"2":{"265":1}}],["ask",{"2":{"239":1}}],["asia",{"2":{"126":1}}],["assistant",{"2":{"254":1}}],["assignment",{"2":{"357":1}}],["assign",{"2":{"228":1,"232":1,"340":1}}],["assigning",{"0":{"128":1,"249":1,"336":1,"345":1,"350":1,"355":1},"2":{"356":1}}],["assigned",{"2":{"116":1,"123":1,"194":1,"206":1,"215":1,"250":1,"337":1,"341":1,"346":1,"351":1}}],["associated",{"2":{"122":1,"178":1,"262":1}}],["as",{"0":{"174":1},"2":{"6":1,"10":1,"16":1,"17":3,"18":1,"19":2,"20":1,"23":1,"37":1,"40":1,"42":1,"72":1,"112":1,"114":1,"116":2,"120":1,"123":1,"126":2,"129":1,"133":1,"145":1,"152":1,"156":1,"159":1,"162":1,"180":1,"210":1,"215":1,"217":2,"218":1,"219":1,"225":2,"226":2,"229":1,"231":1,"253":1,"254":1,"255":1,"256":1,"265":2,"266":2,"268":1,"276":1,"278":1,"279":2,"281":2,"282":1,"287":1,"296":1,"344":1,"346":1,"347":1,"349":1,"351":1,"353":1}}],["another",{"2":{"173":1,"267":1,"268":1}}],["answer",{"2":{"103":1,"250":1}}],["anything",{"2":{"103":1}}],["anyone",{"0":{"105":1},"2":{"37":1,"92":1,"94":1}}],["any",{"2":{"33":1,"36":1,"37":1,"159":1,"162":1,"194":1,"229":1,"233":1,"234":1,"241":1,"310":1}}],["anchor",{"2":{"14":1}}],["annoying",{"2":{"14":1}}],["anthropic",{"2":{"9":1,"217":1,"219":2}}],["an",{"0":{"12":1,"310":1,"348":1,"349":1,"350":1,"353":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"5":1,"14":3,"17":1,"19":2,"20":3,"35":1,"37":1,"43":1,"61":2,"69":2,"74":1,"91":1,"92":1,"94":1,"95":2,"96":1,"97":1,"99":1,"100":1,"102":1,"108":1,"109":1,"111":1,"116":1,"119":1,"120":1,"151":1,"160":1,"162":1,"163":1,"170":1,"174":1,"179":2,"187":1,"192":1,"202":1,"203":1,"205":1,"206":1,"212":1,"217":1,"227":1,"228":1,"251":1,"254":1,"310":1,"317":2,"328":1,"335":1,"339":1,"347":1}}],["and",{"0":{"3":1,"5":1,"6":1,"8":1,"9":1,"10":1,"43":1,"77":1,"119":1,"151":1,"168":1,"173":1,"179":1,"183":1,"185":1,"192":1,"209":1,"216":1,"276":1,"289":1,"302":1},"1":{"169":1,"170":1,"171":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"186":1,"187":1,"193":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"290":1,"291":1,"292":1,"293":1,"294":1,"303":1,"304":1,"305":1},"2":{"1":3,"3":2,"4":3,"5":1,"6":3,"7":1,"8":5,"9":1,"10":3,"11":3,"13":1,"14":6,"16":4,"17":3,"18":7,"19":6,"20":4,"22":3,"23":1,"24":3,"25":1,"26":2,"27":1,"28":2,"29":1,"30":2,"31":2,"32":1,"33":5,"34":1,"35":2,"36":1,"38":2,"39":1,"40":2,"42":1,"43":1,"44":3,"45":1,"48":2,"49":3,"50":2,"51":3,"54":3,"56":2,"57":3,"58":2,"59":2,"60":2,"62":4,"63":1,"64":2,"65":2,"66":2,"67":4,"68":1,"69":1,"70":2,"71":2,"72":1,"73":1,"75":1,"76":1,"77":1,"78":1,"80":1,"81":2,"82":1,"86":1,"87":1,"90":1,"92":2,"94":1,"100":1,"101":1,"103":3,"106":1,"110":2,"111":2,"114":10,"115":1,"116":5,"119":1,"120":1,"122":3,"123":2,"124":3,"126":1,"127":1,"128":1,"129":1,"133":1,"135":3,"137":2,"138":1,"139":1,"141":3,"142":2,"143":2,"144":1,"149":1,"150":1,"151":1,"155":1,"156":1,"158":1,"159":1,"160":1,"162":1,"163":2,"164":1,"166":1,"167":1,"168":1,"172":1,"173":2,"178":2,"180":1,"182":1,"184":1,"186":2,"188":2,"190":1,"195":1,"196":2,"198":1,"200":1,"201":2,"202":1,"203":1,"204":1,"206":3,"210":1,"212":1,"215":1,"216":1,"217":1,"220":1,"222":3,"224":3,"225":1,"229":1,"230":1,"231":1,"232":2,"234":1,"235":1,"236":2,"237":1,"239":2,"240":1,"241":1,"242":1,"243":1,"245":1,"248":1,"249":2,"250":1,"251":2,"253":3,"254":4,"256":1,"259":1,"263":1,"264":2,"265":3,"266":1,"267":1,"268":1,"274":1,"276":1,"277":1,"278":2,"279":1,"282":1,"285":7,"287":1,"288":1,"291":1,"297":1,"307":1,"308":1,"309":1,"310":1,"312":2,"313":6,"314":5,"315":2,"316":3,"319":4,"320":1,"321":1,"322":1,"323":5,"326":4,"328":1,"330":2,"331":1,"333":1,"334":1,"335":1,"336":1,"337":1,"338":3,"339":1,"340":1,"342":1,"344":1,"345":1,"346":1,"349":1,"350":1,"351":1,"352":1,"356":1,"357":1,"358":3}}],["acl",{"0":{"92":1,"119":1},"2":{"91":1,"92":1,"94":1,"95":1,"97":1,"99":1,"105":1,"106":1,"107":1,"110":2,"112":1,"114":1,"115":2,"119":3,"285":1,"291":2,"296":1,"314":1}}],["actions",{"0":{"158":1},"2":{"129":1,"180":1,"189":1,"233":1,"280":1,"282":3,"290":1,"292":1,"293":1,"294":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"303":1,"304":1,"305":1,"307":1}}],["action",{"2":{"122":2,"129":1,"184":1,"192":1,"210":1,"254":1,"279":4,"280":2,"285":1,"290":1,"292":1,"293":1,"294":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"303":1,"304":1,"305":1,"307":1}}],["activities",{"2":{"194":1}}],["activity",{"2":{"115":1,"117":1,"242":1,"253":2,"259":1,"263":1}}],["activate",{"2":{"35":1,"143":1}}],["active",{"2":{"5":2,"143":1,"144":1,"146":1,"149":1,"152":1,"153":1,"159":1,"172":1,"201":1,"202":1,"203":1,"205":1,"210":1,"214":1,"235":1,"255":1,"256":1,"259":1,"262":1,"267":1,"275":2,"290":2,"298":1,"299":1,"300":1,"307":1,"314":1}}],["actual",{"2":{"34":1,"265":1,"337":1,"340":1}}],["actually",{"0":{"103":1},"2":{"13":1,"14":2,"151":1}}],["act",{"2":{"23":1,"37":1}}],["acts",{"2":{"17":1,"124":1,"133":1,"156":1}}],["accurate",{"2":{"250":1}}],["accumulate",{"2":{"210":1}}],["accumulating",{"2":{"14":1}}],["accepted",{"2":{"281":1}}],["accept",{"2":{"39":1,"226":1}}],["access",{"0":{"91":1,"98":1,"108":1,"109":1,"110":1,"119":1,"291":1,"322":1},"1":{"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":2,"100":2,"101":2,"102":2,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1},"2":{"10":1,"11":1,"18":1,"32":1,"33":1,"35":1,"37":2,"38":2,"40":1,"43":2,"44":1,"56":1,"91":2,"92":2,"94":1,"95":2,"98":2,"99":1,"102":1,"110":2,"112":1,"114":3,"115":1,"119":2,"121":1,"123":1,"160":1,"196":1,"200":1,"221":1,"222":2,"239":1,"285":1,"291":1,"312":1,"314":2,"321":1}}],["accounts",{"2":{"291":1}}],["account",{"0":{"34":1,"37":1,"43":1,"73":1,"74":1,"141":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"1":1,"7":2,"33":2,"34":3,"37":3,"38":1,"42":1,"43":4,"48":2,"50":1,"71":1,"73":2,"74":1,"75":1,"76":1,"77":1,"135":5,"141":2,"222":1,"312":1,"323":1}}],["across",{"2":{"3":1,"5":1,"110":1,"115":1,"156":1,"204":1,"214":1,"255":1,"263":1,"312":1,"352":1,"354":1,"359":1}}],["attached",{"2":{"159":1,"163":2}}],["attachment",{"2":{"33":1,"40":1,"68":1,"135":1}}],["attachments",{"2":{"26":1,"32":1,"46":1,"51":1,"59":1,"67":1,"72":1,"78":1,"90":1}}],["attach",{"2":{"30":1}}],["attempt",{"2":{"13":1}}],["at",{"0":{"275":1},"2":{"3":1,"7":1,"18":1,"56":1,"95":1,"107":1,"119":1,"122":1,"130":1,"179":1,"190":1,"201":1,"221":1,"235":1,"236":4,"239":1,"265":1,"317":1,"320":1}}],["ai",{"2":{"1":2,"9":1,"13":1,"14":2,"15":1,"16":1,"18":1,"20":1,"33":1,"111":1,"219":1,"245":1,"312":1,"315":1,"316":1,"344":1}}],["a",{"0":{"23":1,"28":1,"37":1,"43":1,"48":1,"54":1,"60":1,"69":1,"80":1,"99":1,"112":1,"122":1,"125":1,"126":1,"128":2,"137":1,"165":1,"166":1,"174":1,"176":1,"178":1,"218":1,"247":1,"249":2,"255":1,"265":1,"309":1,"329":1,"330":1,"336":2,"343":1,"344":1,"345":2,"350":1,"355":1},"1":{"127":1,"256":1,"257":1,"331":1},"2":{"1":2,"4":1,"6":1,"7":1,"8":1,"9":1,"11":1,"13":3,"14":11,"15":1,"17":2,"18":1,"19":4,"20":3,"24":1,"25":2,"28":2,"35":4,"37":3,"39":2,"42":3,"43":1,"48":1,"50":1,"54":1,"57":2,"58":1,"60":1,"66":2,"69":3,"71":1,"74":1,"75":1,"77":1,"80":1,"85":1,"87":3,"92":2,"94":2,"95":3,"97":1,"98":1,"100":7,"102":6,"103":1,"109":1,"110":1,"111":1,"112":1,"113":1,"115":2,"116":1,"119":2,"120":1,"122":1,"123":6,"124":2,"125":1,"126":1,"127":2,"129":1,"131":1,"133":2,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":2,"145":2,"147":1,"150":1,"151":2,"152":1,"155":1,"158":1,"160":1,"162":1,"164":1,"165":2,"167":2,"169":1,"171":1,"172":1,"174":5,"180":1,"182":2,"183":1,"184":2,"186":1,"187":1,"190":3,"192":2,"194":3,"196":2,"198":2,"199":1,"200":1,"201":3,"202":1,"205":3,"206":3,"208":1,"217":1,"220":1,"221":2,"222":2,"223":2,"225":1,"226":2,"227":1,"228":2,"232":1,"234":5,"235":3,"239":5,"241":1,"244":4,"247":1,"248":1,"250":3,"251":4,"252":4,"253":7,"254":7,"255":5,"256":3,"257":2,"260":1,"261":1,"262":1,"263":2,"264":1,"265":5,"266":1,"268":4,"269":1,"271":1,"272":2,"273":3,"274":4,"276":2,"277":1,"278":1,"279":5,"281":4,"287":4,"288":2,"291":1,"309":1,"310":1,"312":1,"313":1,"317":3,"319":1,"323":1,"329":1,"330":1,"331":2,"337":1,"338":3,"340":2,"342":1,"343":1,"344":2,"347":3,"348":1,"349":2,"355":1,"356":1,"357":4,"358":2}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/@localSearchIndexroot.Tiqps2K_.js b/assets/chunks/@localSearchIndexroot.Tiqps2K_.js deleted file mode 100644 index 7a820509..00000000 --- a/assets/chunks/@localSearchIndexroot.Tiqps2K_.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":352,"nextId":352,"documentIds":{"0":"/about.html#about-memoh","1":"/about.html#what-is-memoh","2":"/about.html#what-makes-memoh-different","3":"/about.html#multi-bot-and-multi-user","4":"/about.html#containerized-workspaces","5":"/about.html#long-term-memory-and-context-management","6":"/about.html#sessions-and-discuss-mode","7":"/about.html#broad-channel-coverage","8":"/about.html#tools-skills-mcp-and-supermarket","9":"/about.html#providers-and-models","10":"/about.html#operations-and-ui","11":"/about.html#where-to-start","12":"/blogs/2026-02-16.html#introduction-to-memoh-the-case-for-an-always-on-containerized-home-agent","13":"/blogs/2026-02-16.html#overview","14":"/blogs/2026-02-16.html#story-time","15":"/blogs/2026-02-16.html#what","16":"/blogs/2026-02-16.html#why","17":"/blogs/2026-02-16.html#how","18":"/blogs/2026-02-16.html#features","19":"/blogs/2026-02-16.html#compare-to-openclaw","20":"/blogs/2026-02-16.html#conclusion","21":"/blogs/#blogs","22":"/channels/dingtalk.html#dingtalk-channel-configuration","23":"/channels/dingtalk.html#step-1-create-a-dingtalk-app","24":"/channels/dingtalk.html#step-2-configure-memoh","25":"/channels/dingtalk.html#step-3-verify-messaging","26":"/channels/dingtalk.html#features-supported","27":"/channels/discord.html#discord-channel-configuration","28":"/channels/discord.html#step-1-create-a-discord-application","29":"/channels/discord.html#step-2-configure-bot-settings","30":"/channels/discord.html#step-3-invite-the-bot-to-your-server","31":"/channels/discord.html#step-4-configure-memoh","32":"/channels/discord.html#features-supported","33":"/channels/#channels-overview","34":"/channels/#wechat-vs-wechat-official-account","35":"/channels/#general-setup-flow","36":"/channels/feishu.html#feishu-lark-channel-configuration","37":"/channels/feishu.html#step-1-create-a-feishu-app","38":"/channels/feishu.html#step-2-enable-bot-capability","39":"/channels/feishu.html#step-3-configure-permissions","40":"/channels/feishu.html#step-4-configure-events-webhook-mode","41":"/channels/feishu.html#step-5-publish-your-app","42":"/channels/matrix.html#matrix-channel-configuration","43":"/channels/matrix.html#step-1-create-a-matrix-bot-account","44":"/channels/matrix.html#step-2-configure-memoh","45":"/channels/matrix.html#step-3-invite-the-bot","46":"/channels/matrix.html#features-supported","47":"/channels/matrix.html#official-resources","48":"/channels/misskey.html#misskey-channel-configuration","49":"/channels/misskey.html#step-1-prepare-a-misskey-account-and-token","50":"/channels/misskey.html#step-2-configure-memoh","51":"/channels/misskey.html#step-3-start-chatting","52":"/channels/misskey.html#features-supported","53":"/channels/qq.html#qq-channel-configuration","54":"/channels/qq.html#step-1-create-a-qq-bot","55":"/channels/qq.html#step-2-configure-memoh","56":"/channels/qq.html#step-3-bind-your-identity-optional","57":"/channels/qq.html#features-supported","58":"/channels/qq.html#official-resources","59":"/channels/telegram.html#telegram-channel-configuration","60":"/channels/telegram.html#step-1-create-a-telegram-bot","61":"/channels/telegram.html#step-2-configure-memoh","62":"/channels/telegram.html#step-3-bind-your-identity-optional","63":"/channels/telegram.html#features-supported","64":"/channels/wechatoa.html#wechat-official-account-channel-configuration","65":"/channels/wechatoa.html#step-1-prepare-official-account-credentials","66":"/channels/wechatoa.html#step-2-add-the-channel-in-memoh","67":"/channels/wechatoa.html#step-3-configure-the-wechat-platform","68":"/channels/wechatoa.html#step-4-enable-and-test","69":"/channels/wechatoa.html#features-supported","70":"/channels/wecom.html#wecom-wework-channel-configuration","71":"/channels/wecom.html#step-1-create-a-wecom-bot","72":"/channels/wecom.html#step-2-configure-memoh","73":"/channels/wecom.html#step-3-start-chatting","74":"/channels/wecom.html#features-supported","75":"/channels/wecom.html#official-resources","76":"/channels/weixin.html#wechat-channel-configuration","77":"/channels/weixin.html#step-1-add-wechat-channel-in-memoh","78":"/channels/weixin.html#step-2-scan-the-qr-code","79":"/channels/weixin.html#step-3-start-chatting","80":"/channels/weixin.html#optional-settings","81":"/channels/weixin.html#features-supported","82":"/getting-started/access.html#bot-access-control","83":"/getting-started/access.html#quick-start-acl-presets","84":"/getting-started/access.html#concepts","85":"/getting-started/access.html#default-effect","86":"/getting-started/access.html#subject-types","87":"/getting-started/access.html#rule-effects","88":"/getting-started/access.html#priority-based-evaluation","89":"/getting-started/access.html#managing-access","90":"/getting-started/access.html#start-with-a-preset-then-refine","91":"/getting-started/access.html#adding-rules","92":"/getting-started/access.html#reordering-rules","93":"/getting-started/access.html#source-scope","94":"/getting-started/access.html#what-the-presets-actually-mean","95":"/getting-started/access.html#examples","96":"/getting-started/access.html#open-bot-anyone-can-chat","97":"/getting-started/access.html#private-bot-with-selected-users","98":"/getting-started/access.html#open-bot-with-blocked-users","99":"/getting-started/access.html#platform-specific-access","100":"/getting-started/access.html#channel-scoped-access","101":"/getting-started/access.html#debugging-access-decisions","102":"/getting-started/bot.html#bot-management","103":"/getting-started/bot.html#creating-a-bot","104":"/getting-started/bot.html#bot-detail-page","105":"/getting-started/bot.html#tab-overview","106":"/getting-started/bot.html#configuring-the-bot-s-core-settings","107":"/getting-started/bot.html#general-tab-reference","108":"/getting-started/bot.html#heartbeat-tab-reference","109":"/getting-started/bot.html#compaction-tab-reference","110":"/getting-started/bot.html#access-and-acl","111":"/getting-started/bot.html#discuss-related-advanced-settings","112":"/getting-started/bot.html#terminal-tab","113":"/getting-started/bot.html#deleting-a-bot","114":"/getting-started/browser.html#browser-contexts","115":"/getting-started/browser.html#concept-browser-gateway","116":"/getting-started/browser.html#creating-a-browser-context","117":"/getting-started/browser.html#configuring-a-browser-context","118":"/getting-started/browser.html#managing-contexts","119":"/getting-started/browser.html#assigning-a-browser-context-to-a-bot","120":"/getting-started/browser.html#bot-interaction","121":"/getting-started/browser.html#browser-core-selection","122":"/getting-started/browser.html#next-steps","123":"/getting-started/compaction.html#context-compaction","124":"/getting-started/compaction.html#why-it-exists","125":"/getting-started/compaction.html#what-it-changes","126":"/getting-started/compaction.html#automatic-compaction","127":"/getting-started/compaction.html#immediate-compaction","128":"/getting-started/compaction.html#from-the-session-status-panel","129":"/getting-started/compaction.html#from-slash-commands","130":"/getting-started/compaction.html#status-and-logs","131":"/getting-started/compaction.html#relationship-to-context-window","132":"/getting-started/compaction.html#context-compaction-vs-memory-compaction","133":"/getting-started/compaction.html#next-steps","134":"/getting-started/channels.html#bot-channels","135":"/getting-started/channels.html#concept-unified-communication","136":"/getting-started/channels.html#supported-channels","137":"/getting-started/channels.html#platform-guides","138":"/getting-started/channels.html#configuration-flow","139":"/getting-started/channels.html#_1-adding-a-channel","140":"/getting-started/channels.html#_2-common-fields","141":"/getting-started/channels.html#_3-special-case-feishu-webhook","142":"/getting-started/channels.html#_4-special-case-wechat-qr-login","143":"/getting-started/channels.html#_5-special-case-wechat-official-account-webhook","144":"/getting-started/channels.html#_6-special-case-dingtalk-stream-connection","145":"/getting-started/channels.html#operations","146":"/getting-started/container.html#bot-container-management","147":"/getting-started/container.html#concept-the-isolated-workspace","148":"/getting-started/container.html#operations","149":"/getting-started/container.html#lifecycle-actions","150":"/getting-started/container.html#container-information","151":"/getting-started/container.html#advanced-provide-cdi-devices","152":"/getting-started/container.html#configure-cdi-devices","153":"/getting-started/container.html#host-requirements","154":"/getting-started/container.html#important-behavior","155":"/getting-started/container.html#snapshots","156":"/getting-started/container.html#creating-a-snapshot","157":"/getting-started/container.html#restoring-a-snapshot","158":"/getting-started/container.html#managing-snapshots","159":"/getting-started/container.html#data-export-and-import","160":"/getting-started/container.html#export","161":"/getting-started/container.html#import","162":"/getting-started/container.html#restore","163":"/getting-started/container.html#container-versioning","164":"/getting-started/email.html#email-providers-and-bindings","165":"/getting-started/email.html#concept-email-as-a-bot-channel","166":"/getting-started/email.html#email-provider","167":"/getting-started/email.html#creating-a-provider","168":"/getting-started/email.html#bot-email-bindings","169":"/getting-started/email.html#adding-a-binding","170":"/getting-started/email.html#outbox-and-history","171":"/getting-started/email.html#bot-interaction","172":"/getting-started/files.html#bot-files-management","173":"/getting-started/files.html#operations","174":"/getting-started/files.html#browsing-and-navigation","175":"/getting-started/files.html#managing-files","176":"/getting-started/files.html#viewing-and-editing","177":"/getting-started/files.html#text-files","178":"/getting-started/files.html#images","179":"/getting-started/files.html#bot-interaction-with-files","180":"/getting-started/heartbeat.html#bot-heartbeat","181":"/getting-started/heartbeat.html#concept-scheduled-autonomy","182":"/getting-started/heartbeat.html#configuration","183":"/getting-started/heartbeat.html#logs-and-monitoring","184":"/getting-started/heartbeat.html#managing-logs","185":"/getting-started/heartbeat.html#bot-interaction","186":"/getting-started/mcp.html#mcp-connections","187":"/getting-started/mcp.html#concept-extending-bot-capabilities","188":"/getting-started/mcp.html#connection-types","189":"/getting-started/mcp.html#_1-stdio-local-process","190":"/getting-started/mcp.html#_2-remote-http-sse","191":"/getting-started/mcp.html#oauth-authentication","192":"/getting-started/mcp.html#operations","193":"/getting-started/mcp.html#tool-discovery","194":"/getting-started/mcp.html#bot-interaction","195":"/getting-started/provider-and-model.html#providers-and-models","196":"/getting-started/provider-and-model.html#provider-basics","197":"/getting-started/provider-and-model.html#creating-a-provider","198":"/getting-started/provider-and-model.html#client-types","199":"/getting-started/provider-and-model.html#oauth-based-providers","200":"/getting-started/provider-and-model.html#openai-codex","201":"/getting-started/provider-and-model.html#github-copilot","202":"/getting-started/provider-and-model.html#importing-models","203":"/getting-started/provider-and-model.html#model-types","204":"/getting-started/provider-and-model.html#chat-model-configuration","205":"/getting-started/provider-and-model.html#compatibilities","206":"/getting-started/provider-and-model.html#context-window","207":"/getting-started/provider-and-model.html#image-generation-models","208":"/getting-started/provider-and-model.html#embedding-models","209":"/getting-started/provider-and-model.html#speech-models","210":"/getting-started/provider-and-model.html#recommended-mental-model","211":"/getting-started/provider-and-model.html#next-steps","212":"/getting-started/memory.html#bot-memory-management","213":"/getting-started/memory.html#prerequisites","214":"/getting-started/memory.html#concept-memory-retrieval","215":"/getting-started/memory.html#operations","216":"/getting-started/memory.html#_1-creating-memories","217":"/getting-started/memory.html#_2-searching-and-managing","218":"/getting-started/memory.html#memory-compaction","219":"/getting-started/memory.html#rebuild","220":"/getting-started/memory.html#status","221":"/getting-started/memory.html#usage-statistics","222":"/getting-started/memory.html#memory-vs-session-context","223":"/getting-started/memory.html#bot-interaction","224":"/getting-started/schedule.html#scheduled-tasks","225":"/getting-started/schedule.html#concept-cron-based-automation","226":"/getting-started/schedule.html#schedule-fields","227":"/getting-started/schedule.html#cron-pattern-reference","228":"/getting-started/schedule.html#viewing-schedules","229":"/getting-started/schedule.html#creating-schedules","230":"/getting-started/schedule.html#via-the-bot-conversational","231":"/getting-started/schedule.html#via-the-api","232":"/getting-started/schedule.html#execution-flow","233":"/getting-started/schedule.html#schedule-vs-heartbeat","234":"/getting-started/sessions.html#sessions","235":"/getting-started/sessions.html#concept-conversation-isolation","236":"/getting-started/sessions.html#session-types","237":"/getting-started/sessions.html#chat-vs-discuss","238":"/getting-started/sessions.html#starting-a-new-session-with-new","239":"/getting-started/sessions.html#in-external-channels-telegram-discord-feishu-etc","240":"/getting-started/sessions.html#in-the-web-ui","241":"/getting-started/sessions.html#managing-sessions","242":"/getting-started/sessions.html#viewing-sessions","243":"/getting-started/sessions.html#renaming-sessions","244":"/getting-started/sessions.html#deleting-sessions","245":"/getting-started/sessions.html#session-status-panel","246":"/getting-started/sessions.html#how-sessions-relate-to-other-features","247":"/getting-started/search-provider.html#search-providers","248":"/getting-started/search-provider.html#concept-real-time-knowledge","249":"/getting-started/search-provider.html#supported-search-engines","250":"/getting-started/search-provider.html#configuration-flow","251":"/getting-started/search-provider.html#_1-adding-a-search-provider","252":"/getting-started/search-provider.html#_2-managing-providers","253":"/getting-started/search-provider.html#assigning-a-search-provider-to-a-bot","254":"/getting-started/search-provider.html#bot-interaction","255":"/getting-started/skills.html#bot-skills","256":"/getting-started/skills.html#what-a-skill-looks-like","257":"/getting-started/skills.html#where-skills-come-from","258":"/getting-started/skills.html#skill-states","259":"/getting-started/skills.html#typical-examples","260":"/getting-started/skills.html#managing-skills-in-the-ui","261":"/getting-started/skills.html#add-skill","262":"/getting-started/skills.html#edit-skill","263":"/getting-started/skills.html#delete-skill","264":"/getting-started/skills.html#disable-enable","265":"/getting-started/skills.html#adopt","266":"/getting-started/skills.html#effective-skills-at-runtime","267":"/getting-started/skills.html#supermarket-and-imported-skills","268":"/getting-started/skills.html#recommended-workflow","269":"/getting-started/slash-commands.html#slash-commands","270":"/getting-started/slash-commands.html#command-model","271":"/getting-started/slash-commands.html#built-in-help","272":"/getting-started/slash-commands.html#parsing-rules","273":"/getting-started/slash-commands.html#permissions","274":"/getting-started/slash-commands.html#quick-reference","275":"/getting-started/slash-commands.html#top-level-commands","276":"/getting-started/slash-commands.html#resource-groups","277":"/getting-started/slash-commands.html#session-commands","278":"/getting-started/slash-commands.html#new","279":"/getting-started/slash-commands.html#stop","280":"/getting-started/slash-commands.html#status-and-inspection-commands","281":"/getting-started/slash-commands.html#status","282":"/getting-started/slash-commands.html#access","283":"/getting-started/slash-commands.html#usage","284":"/getting-started/slash-commands.html#heartbeat","285":"/getting-started/slash-commands.html#email","286":"/getting-started/slash-commands.html#configuration-commands","287":"/getting-started/slash-commands.html#settings","288":"/getting-started/slash-commands.html#model","289":"/getting-started/slash-commands.html#memory","290":"/getting-started/slash-commands.html#search","291":"/getting-started/slash-commands.html#browser","292":"/getting-started/slash-commands.html#mcp","293":"/getting-started/slash-commands.html#automation-and-filesystem-commands","294":"/getting-started/slash-commands.html#schedule","295":"/getting-started/slash-commands.html#skill","296":"/getting-started/slash-commands.html#fs","297":"/getting-started/slash-commands.html#context-compaction-command","298":"/getting-started/slash-commands.html#compact","299":"/getting-started/supermarket.html#supermarket","300":"/getting-started/supermarket.html#install-a-skill","301":"/getting-started/supermarket.html#install-an-mcp-template","302":"/getting-started/supermarket.html#contribute","303":"/installation/docker.html#docker-installation","304":"/installation/docker.html#service-architecture","305":"/installation/docker.html#sparse-service","306":"/installation/docker.html#prerequisites","307":"/installation/docker.html#one-click-install-recommended","308":"/installation/docker.html#manual-install","309":"/installation/docker.html#china-mainland-mirror","310":"/installation/docker.html#access-points","311":"/installation/docker.html#configuration-reference","312":"/installation/docker.html#common-commands","313":"/installation/docker.html#environment-variables","314":"/memory-providers/builtin.html#built-in-memory-provider","315":"/memory-providers/builtin.html#memory-modes","316":"/memory-providers/builtin.html#how-sparse-mode-works","317":"/memory-providers/builtin.html#creating-a-built-in-provider","318":"/memory-providers/builtin.html#configuring-a-built-in-provider","319":"/memory-providers/builtin.html#managing-providers","320":"/memory-providers/builtin.html#infrastructure-requirements","321":"/memory-providers/builtin.html#off-mode","322":"/memory-providers/builtin.html#sparse-mode","323":"/memory-providers/builtin.html#dense-mode","324":"/memory-providers/builtin.html#assigning-a-memory-provider-to-a-bot","325":"/memory-providers/builtin.html#using-memory-after-setup","326":"/#memoh-documentation","327":"/#start-here","328":"/#feature-guides","329":"/memory-providers/#memory-providers","330":"/memory-providers/#available-providers","331":"/memory-providers/#basic-flow","332":"/memory-providers/#next-steps","333":"/memory-providers/openviking.html#openviking-memory-provider","334":"/memory-providers/openviking.html#creating-an-openviking-provider","335":"/memory-providers/openviking.html#configuring-an-openviking-provider","336":"/memory-providers/openviking.html#assigning-an-openviking-provider-to-a-bot","337":"/memory-providers/openviking.html#usage","338":"/memory-providers/mem0.html#mem0-memory-provider","339":"/memory-providers/mem0.html#creating-a-mem0-provider","340":"/memory-providers/mem0.html#configuring-a-mem0-provider","341":"/memory-providers/mem0.html#assigning-a-mem0-provider-to-a-bot","342":"/memory-providers/mem0.html#usage","343":"/tts-providers/edge.html#edge-tts","344":"/tts-providers/edge.html#creating-an-edge-tts-provider","345":"/tts-providers/edge.html#configuring-the-model","346":"/tts-providers/edge.html#assigning-to-a-bot","347":"/tts-providers/edge.html#testing","348":"/tts-providers/#tts-providers","349":"/tts-providers/#basic-flow","350":"/tts-providers/#available-providers","351":"/tts-providers/#next-steps"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,1],"1":[4,2,71],"2":[4,2,1],"3":[4,5,44],"4":[2,5,32],"5":[6,5,46],"6":[4,5,67],"7":[3,5,49],"8":[5,5,49],"9":[3,5,52],"10":[3,5,61],"11":[3,2,42],"12":[12,1,1],"13":[1,12,74],"14":[2,12,215],"15":[1,12,29],"16":[1,12,54],"17":[1,12,65],"18":[1,12,104],"19":[3,12,83],"20":[1,12,62],"21":[1,1,12],"22":[3,1,24],"23":[6,3,45],"24":[4,3,41],"25":[4,3,25],"26":[2,3,24],"27":[3,1,16],"28":[6,3,28],"29":[5,3,19],"30":[8,3,42],"31":[4,3,23],"32":[2,3,25],"33":[2,1,105],"34":[4,2,41],"35":[3,2,72],"36":[4,1,24],"37":[6,4,34],"38":[5,4,13],"39":[4,4,31],"40":[7,4,56],"41":[5,4,30],"42":[3,1,31],"43":[7,3,74],"44":[4,3,67],"45":[5,3,31],"46":[2,3,49],"47":[2,3,6],"48":[3,1,33],"49":[8,3,50],"50":[4,3,33],"51":[4,3,32],"52":[2,3,13],"53":[3,1,16],"54":[6,3,46],"55":[4,3,37],"56":[7,3,44],"57":[2,3,36],"58":[2,3,6],"59":[3,1,28],"60":[6,3,55],"61":[4,3,30],"62":[7,3,53],"63":[2,3,35],"64":[5,1,31],"65":[6,5,38],"66":[7,5,53],"67":[6,5,38],"68":[5,5,22],"69":[2,5,29],"70":[4,1,17],"71":[6,4,26],"72":[4,4,44],"73":[4,4,27],"74":[2,4,26],"75":[2,4,6],"76":[3,1,24],"77":[7,3,19],"78":[6,3,55],"79":[4,3,20],"80":[2,3,11],"81":[2,3,29],"82":[3,1,35],"83":[4,3,63],"84":[1,3,1],"85":[2,4,43],"86":[2,4,54],"87":[2,4,19],"88":[3,4,56],"89":[2,3,12],"90":[6,4,28],"91":[2,4,60],"92":[2,4,26],"93":[2,4,49],"94":[5,3,63],"95":[1,3,1],"96":[6,4,19],"97":[5,4,30],"98":[5,4,31],"99":[3,4,37],"100":[3,4,27],"101":[3,3,40],"102":[2,1,34],"103":[3,2,55],"104":[3,2,22],"105":[2,4,106],"106":[6,2,79],"107":[3,2,138],"108":[3,2,48],"109":[3,2,57],"110":[3,2,51],"111":[4,2,46],"112":[2,2,25],"113":[3,2,44],"114":[2,1,45],"115":[3,2,45],"116":[4,2,27],"117":[4,2,81],"118":[2,5,15],"119":[6,2,33],"120":[2,2,55],"121":[3,2,47],"122":[2,2,27],"123":[2,1,45],"124":[3,2,52],"125":[3,2,41],"126":[2,2,69],"127":[2,2,13],"128":[5,3,33],"129":[3,3,22],"130":[3,2,68],"131":[4,2,44],"132":[4,2,55],"133":[2,2,24],"134":[2,1,18],"135":[3,2,30],"136":[2,2,14],"137":[2,3,63],"138":[2,2,1],"139":[4,4,24],"140":[3,4,33],"141":[5,4,32],"142":[6,4,21],"143":[7,4,35],"144":[6,4,33],"145":[1,2,20],"146":[3,1,35],"147":[4,3,30],"148":[1,3,16],"149":[2,4,52],"150":[2,3,55],"151":[4,3,53],"152":[3,7,50],"153":[2,7,79],"154":[2,7,54],"155":[1,3,32],"156":[3,4,18],"157":[3,4,17],"158":[2,4,23],"159":[4,3,16],"160":[1,7,21],"161":[1,7,21],"162":[1,7,29],"163":[2,3,37],"164":[4,1,18],"165":[6,4,28],"166":[2,4,13],"167":[3,5,38],"168":[3,4,15],"169":[3,5,41],"170":[3,4,34],"171":[2,4,45],"172":[3,1,24],"173":[1,3,17],"174":[3,4,31],"175":[2,4,42],"176":[3,3,17],"177":[2,6,39],"178":[1,6,20],"179":[4,3,36],"180":[2,1,24],"181":[3,2,38],"182":[1,2,41],"183":[3,2,46],"184":[2,5,29],"185":[2,2,36],"186":[2,1,21],"187":[4,2,43],"188":[2,2,11],"189":[5,4,54],"190":[5,4,36],"191":[2,2,56],"192":[1,2,53],"193":[2,2,51],"194":[2,2,32],"195":[3,1,44],"196":[2,3,40],"197":[3,5,52],"198":[2,5,67],"199":[3,3,18],"200":[2,5,46],"201":[2,5,47],"202":[2,3,38],"203":[2,3,45],"204":[3,3,51],"205":[1,6,48],"206":[2,6,47],"207":[3,6,32],"208":[2,3,37],"209":[2,3,39],"210":[3,3,37],"211":[2,3,21],"212":[3,1,22],"213":[1,3,42],"214":[3,3,67],"215":[1,3,14],"216":[3,4,25],"217":[4,4,25],"218":[2,3,85],"219":[1,3,49],"220":[1,3,40],"221":[2,3,28],"222":[4,3,58],"223":[2,3,48],"224":[2,1,33],"225":[4,2,37],"226":[2,2,77],"227":[3,2,67],"228":[2,2,31],"229":[2,2,8],"230":[5,4,46],"231":[3,4,42],"232":[2,2,48],"233":[3,2,52],"234":[1,1,36],"235":[3,1,43],"236":[2,1,87],"237":[3,3,83],"238":[6,1,69],"239":[8,7,61],"240":[4,7,39],"241":[2,1,1],"242":[2,2,51],"243":[2,2,15],"244":[2,2,15],"245":[3,1,68],"246":[6,1,75],"247":[2,1,23],"248":[4,2,28],"249":[3,2,53],"250":[2,2,1],"251":[5,4,44],"252":[3,4,21],"253":[6,2,22],"254":[2,2,35],"255":[2,1,31],"256":[5,2,74],"257":[4,2,80],"258":[2,2,49],"259":[2,4,43],"260":[5,2,8],"261":[2,6,20],"262":[2,6,25],"263":[2,6,22],"264":[2,6,34],"265":[1,6,50],"266":[4,2,40],"267":[4,2,51],"268":[2,2,38],"269":[2,1,53],"270":[2,2,73],"271":[3,2,45],"272":[2,2,59],"273":[1,2,30],"274":[2,2,1],"275":[3,4,16],"276":[2,4,62],"277":[2,2,1],"278":[2,3,66],"279":[2,3,36],"280":[4,2,1],"281":[2,5,43],"282":[2,5,45],"283":[2,5,16],"284":[2,5,12],"285":[2,5,16],"286":[2,2,1],"287":[2,3,50],"288":[2,3,31],"289":[2,3,20],"290":[2,3,20],"291":[2,3,20],"292":[2,3,23],"293":[4,2,1],"294":[2,5,39],"295":[2,5,13],"296":[2,5,28],"297":[3,2,1],"298":[2,5,52],"299":[1,1,13],"300":[3,1,26],"301":[4,1,45],"302":[1,1,10],"303":[2,1,45],"304":[2,2,62],"305":[2,4,143],"306":[1,2,5],"307":[5,2,112],"308":[2,2,97],"309":[3,4,48],"310":[2,2,37],"311":[2,2,94],"312":[2,2,33],"313":[2,2,58],"314":[4,1,44],"315":[2,4,38],"316":[4,5,58],"317":[5,4,25],"318":[5,4,46],"319":[2,6,15],"320":[2,4,1],"321":[2,6,15],"322":[2,6,44],"323":[2,6,30],"324":[6,4,37],"325":[4,4,38],"326":[2,1,40],"327":[2,2,51],"328":[2,2,56],"329":[2,1,33],"330":[2,2,44],"331":[2,2,31],"332":[2,2,28],"333":[3,1,26],"334":[4,3,25],"335":[4,3,36],"336":[7,3,24],"337":[1,3,28],"338":[3,1,28],"339":[4,3,25],"340":[4,3,44],"341":[6,3,24],"342":[1,3,28],"343":[2,1,26],"344":[5,2,25],"345":[3,2,58],"346":[4,2,24],"347":[1,2,26],"348":[2,1,64],"349":[2,2,48],"350":[2,2,21],"351":[2,2,12]},"averageFieldLength":[3.0284090909090904,3.2102272727272734,38.46306818181817],"storedFields":{"0":{"title":"About Memoh","titles":[]},"1":{"title":"What Is Memoh?","titles":["About Memoh"]},"2":{"title":"What Makes Memoh Different","titles":["About Memoh"]},"3":{"title":"Multi-Bot And Multi-User","titles":["About Memoh","What Makes Memoh Different"]},"4":{"title":"Containerized Workspaces","titles":["About Memoh","What Makes Memoh Different"]},"5":{"title":"Long-Term Memory And Context Management","titles":["About Memoh","What Makes Memoh Different"]},"6":{"title":"Sessions And Discuss Mode","titles":["About Memoh","What Makes Memoh Different"]},"7":{"title":"Broad Channel Coverage","titles":["About Memoh","What Makes Memoh Different"]},"8":{"title":"Tools, Skills, MCP, And Supermarket","titles":["About Memoh","What Makes Memoh Different"]},"9":{"title":"Providers And Models","titles":["About Memoh","What Makes Memoh Different"]},"10":{"title":"Operations And UI","titles":["About Memoh","What Makes Memoh Different"]},"11":{"title":"Where To Start","titles":["About Memoh"]},"12":{"title":"Introduction to Memoh - The Case for an Always-On, Containerized Home Agent","titles":[]},"13":{"title":"Overview","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"14":{"title":"Story Time","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"15":{"title":"What","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"16":{"title":"Why","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"17":{"title":"How","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"18":{"title":"Features","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"19":{"title":"Compare to OpenClaw","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"20":{"title":"Conclusion","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"21":{"title":"Blogs","titles":[]},"22":{"title":"DingTalk Channel Configuration","titles":[]},"23":{"title":"Step 1: Create A DingTalk App","titles":["DingTalk Channel Configuration"]},"24":{"title":"Step 2: Configure Memoh","titles":["DingTalk Channel Configuration"]},"25":{"title":"Step 3: Verify Messaging","titles":["DingTalk Channel Configuration"]},"26":{"title":"Features Supported","titles":["DingTalk Channel Configuration"]},"27":{"title":"Discord Channel Configuration","titles":[]},"28":{"title":"Step 1: Create a Discord Application","titles":["Discord Channel Configuration"]},"29":{"title":"Step 2: Configure Bot Settings","titles":["Discord Channel Configuration"]},"30":{"title":"Step 3: Invite the Bot to Your Server","titles":["Discord Channel Configuration"]},"31":{"title":"Step 4: Configure Memoh","titles":["Discord Channel Configuration"]},"32":{"title":"Features Supported","titles":["Discord Channel Configuration"]},"33":{"title":"Channels Overview","titles":[]},"34":{"title":"WeChat vs WeChat Official Account","titles":["Channels Overview"]},"35":{"title":"General Setup Flow","titles":["Channels Overview"]},"36":{"title":"Feishu (Lark) Channel Configuration","titles":[]},"37":{"title":"Step 1: Create a Feishu App","titles":["Feishu (Lark) Channel Configuration"]},"38":{"title":"Step 2: Enable Bot Capability","titles":["Feishu (Lark) Channel Configuration"]},"39":{"title":"Step 3: Configure Permissions","titles":["Feishu (Lark) Channel Configuration"]},"40":{"title":"Step 4: Configure Events (Webhook Mode)","titles":["Feishu (Lark) Channel Configuration"]},"41":{"title":"Step 5: Publish Your App","titles":["Feishu (Lark) Channel Configuration"]},"42":{"title":"Matrix Channel Configuration","titles":[]},"43":{"title":"Step 1: Create a Matrix Bot Account","titles":["Matrix Channel Configuration"]},"44":{"title":"Step 2: Configure Memoh","titles":["Matrix Channel Configuration"]},"45":{"title":"Step 3: Invite the Bot","titles":["Matrix Channel Configuration"]},"46":{"title":"Features Supported","titles":["Matrix Channel Configuration"]},"47":{"title":"Official Resources","titles":["Matrix Channel Configuration"]},"48":{"title":"Misskey Channel Configuration","titles":[]},"49":{"title":"Step 1: Prepare A Misskey Account And Token","titles":["Misskey Channel Configuration"]},"50":{"title":"Step 2: Configure Memoh","titles":["Misskey Channel Configuration"]},"51":{"title":"Step 3: Start Chatting","titles":["Misskey Channel Configuration"]},"52":{"title":"Features Supported","titles":["Misskey Channel Configuration"]},"53":{"title":"QQ Channel Configuration","titles":[]},"54":{"title":"Step 1: Create a QQ Bot","titles":["QQ Channel Configuration"]},"55":{"title":"Step 2: Configure Memoh","titles":["QQ Channel Configuration"]},"56":{"title":"Step 3: Bind Your Identity (Optional)","titles":["QQ Channel Configuration"]},"57":{"title":"Features Supported","titles":["QQ Channel Configuration"]},"58":{"title":"Official Resources","titles":["QQ Channel Configuration"]},"59":{"title":"Telegram Channel Configuration","titles":[]},"60":{"title":"Step 1: Create a Telegram Bot","titles":["Telegram Channel Configuration"]},"61":{"title":"Step 2: Configure Memoh","titles":["Telegram Channel Configuration"]},"62":{"title":"Step 3: Bind Your Identity (Optional)","titles":["Telegram Channel Configuration"]},"63":{"title":"Features Supported","titles":["Telegram Channel Configuration"]},"64":{"title":"WeChat Official Account Channel Configuration","titles":[]},"65":{"title":"Step 1: Prepare Official Account Credentials","titles":["WeChat Official Account Channel Configuration"]},"66":{"title":"Step 2: Add The Channel In Memoh","titles":["WeChat Official Account Channel Configuration"]},"67":{"title":"Step 3: Configure The WeChat Platform","titles":["WeChat Official Account Channel Configuration"]},"68":{"title":"Step 4: Enable And Test","titles":["WeChat Official Account Channel Configuration"]},"69":{"title":"Features Supported","titles":["WeChat Official Account Channel Configuration"]},"70":{"title":"WeCom (WeWork) Channel Configuration","titles":[]},"71":{"title":"Step 1: Create a WeCom Bot","titles":["WeCom (WeWork) Channel Configuration"]},"72":{"title":"Step 2: Configure Memoh","titles":["WeCom (WeWork) Channel Configuration"]},"73":{"title":"Step 3: Start Chatting","titles":["WeCom (WeWork) Channel Configuration"]},"74":{"title":"Features Supported","titles":["WeCom (WeWork) Channel Configuration"]},"75":{"title":"Official Resources","titles":["WeCom (WeWork) Channel Configuration"]},"76":{"title":"WeChat Channel Configuration","titles":[]},"77":{"title":"Step 1: Add WeChat Channel in Memoh","titles":["WeChat Channel Configuration"]},"78":{"title":"Step 2: Scan the QR Code","titles":["WeChat Channel Configuration"]},"79":{"title":"Step 3: Start Chatting","titles":["WeChat Channel Configuration"]},"80":{"title":"Optional Settings","titles":["WeChat Channel Configuration"]},"81":{"title":"Features Supported","titles":["WeChat Channel Configuration"]},"82":{"title":"Bot Access Control","titles":[]},"83":{"title":"Quick Start: ACL Presets","titles":["Bot Access Control"]},"84":{"title":"Concepts","titles":["Bot Access Control"]},"85":{"title":"Default Effect","titles":["Bot Access Control","Concepts"]},"86":{"title":"Subject Types","titles":["Bot Access Control","Concepts"]},"87":{"title":"Rule Effects","titles":["Bot Access Control","Concepts"]},"88":{"title":"Priority-Based Evaluation","titles":["Bot Access Control","Concepts"]},"89":{"title":"Managing Access","titles":["Bot Access Control"]},"90":{"title":"Start With A Preset, Then Refine","titles":["Bot Access Control","Managing Access"]},"91":{"title":"Adding Rules","titles":["Bot Access Control","Managing Access"]},"92":{"title":"Reordering Rules","titles":["Bot Access Control","Managing Access"]},"93":{"title":"Source Scope","titles":["Bot Access Control","Managing Access"]},"94":{"title":"What The Presets Actually Mean","titles":["Bot Access Control"]},"95":{"title":"Examples","titles":["Bot Access Control"]},"96":{"title":"Open Bot (Anyone Can Chat)","titles":["Bot Access Control","Examples"]},"97":{"title":"Private Bot with Selected Users","titles":["Bot Access Control","Examples"]},"98":{"title":"Open Bot with Blocked Users","titles":["Bot Access Control","Examples"]},"99":{"title":"Platform-Specific Access","titles":["Bot Access Control","Examples"]},"100":{"title":"Channel-Scoped Access","titles":["Bot Access Control","Examples"]},"101":{"title":"Debugging Access Decisions","titles":["Bot Access Control"]},"102":{"title":"Bot Management","titles":[]},"103":{"title":"Creating a Bot","titles":["Bot Management"]},"104":{"title":"Bot Detail Page","titles":["Bot Management"]},"105":{"title":"Tab Overview","titles":["Bot Management","Bot Detail Page"]},"106":{"title":"Configuring the Bot\'s Core Settings","titles":["Bot Management"]},"107":{"title":"General Tab Reference","titles":["Bot Management"]},"108":{"title":"Heartbeat Tab Reference","titles":["Bot Management"]},"109":{"title":"Compaction Tab Reference","titles":["Bot Management"]},"110":{"title":"Access And ACL","titles":["Bot Management"]},"111":{"title":"Discuss-Related Advanced Settings","titles":["Bot Management"]},"112":{"title":"Terminal Tab","titles":["Bot Management"]},"113":{"title":"Deleting a Bot","titles":["Bot Management"]},"114":{"title":"Browser Contexts","titles":[]},"115":{"title":"Concept: Browser Gateway","titles":["Browser Contexts"]},"116":{"title":"Creating a Browser Context","titles":["Browser Contexts"]},"117":{"title":"Configuring a Browser Context","titles":["Browser Contexts"]},"118":{"title":"Managing Contexts","titles":["Browser Contexts","Configuring a Browser Context"]},"119":{"title":"Assigning a Browser Context to a Bot","titles":["Browser Contexts"]},"120":{"title":"Bot Interaction","titles":["Browser Contexts"]},"121":{"title":"Browser Core Selection","titles":["Browser Contexts"]},"122":{"title":"Next Steps","titles":["Browser Contexts"]},"123":{"title":"Context Compaction","titles":[]},"124":{"title":"Why It Exists","titles":["Context Compaction"]},"125":{"title":"What It Changes","titles":["Context Compaction"]},"126":{"title":"Automatic Compaction","titles":["Context Compaction"]},"127":{"title":"Immediate Compaction","titles":["Context Compaction"]},"128":{"title":"From The Session Status Panel","titles":["Context Compaction","Immediate Compaction"]},"129":{"title":"From Slash Commands","titles":["Context Compaction","Immediate Compaction"]},"130":{"title":"Status And Logs","titles":["Context Compaction"]},"131":{"title":"Relationship To context_window","titles":["Context Compaction"]},"132":{"title":"Context Compaction vs Memory Compaction","titles":["Context Compaction"]},"133":{"title":"Next Steps","titles":["Context Compaction"]},"134":{"title":"Bot Channels","titles":[]},"135":{"title":"Concept: Unified Communication","titles":["Bot Channels"]},"136":{"title":"Supported Channels","titles":["Bot Channels"]},"137":{"title":"Platform Guides","titles":["Bot Channels","Supported Channels"]},"138":{"title":"Configuration Flow","titles":["Bot Channels"]},"139":{"title":"1. Adding a Channel","titles":["Bot Channels","Configuration Flow"]},"140":{"title":"2. Common Fields","titles":["Bot Channels","Configuration Flow"]},"141":{"title":"3. Special Case: Feishu Webhook","titles":["Bot Channels","Configuration Flow"]},"142":{"title":"4. Special Case: WeChat QR Login","titles":["Bot Channels","Configuration Flow"]},"143":{"title":"5. Special Case: WeChat Official Account Webhook","titles":["Bot Channels","Configuration Flow"]},"144":{"title":"6. Special Case: DingTalk Stream Connection","titles":["Bot Channels","Configuration Flow"]},"145":{"title":"Operations","titles":["Bot Channels"]},"146":{"title":"Bot Container Management","titles":[]},"147":{"title":"Concept: The Isolated Workspace","titles":["Bot Container Management"]},"148":{"title":"Operations","titles":["Bot Container Management"]},"149":{"title":"Lifecycle Actions","titles":["Bot Container Management","Operations"]},"150":{"title":"Container Information","titles":["Bot Container Management"]},"151":{"title":"Advanced: Provide CDI Devices","titles":["Bot Container Management"]},"152":{"title":"Configure CDI Devices","titles":["Bot Container Management","Advanced: Provide CDI Devices"]},"153":{"title":"Host Requirements","titles":["Bot Container Management","Advanced: Provide CDI Devices"]},"154":{"title":"Important Behavior","titles":["Bot Container Management","Advanced: Provide CDI Devices"]},"155":{"title":"Snapshots","titles":["Bot Container Management"]},"156":{"title":"Creating a Snapshot","titles":["Bot Container Management","Snapshots"]},"157":{"title":"Restoring a Snapshot","titles":["Bot Container Management","Snapshots"]},"158":{"title":"Managing Snapshots","titles":["Bot Container Management","Snapshots"]},"159":{"title":"Data Export and Import","titles":["Bot Container Management"]},"160":{"title":"Export","titles":["Bot Container Management","Data Export and Import"]},"161":{"title":"Import","titles":["Bot Container Management","Data Export and Import"]},"162":{"title":"Restore","titles":["Bot Container Management","Data Export and Import"]},"163":{"title":"Container Versioning","titles":["Bot Container Management"]},"164":{"title":"Email Providers and Bindings","titles":[]},"165":{"title":"Concept: Email as a Bot Channel","titles":["Email Providers and Bindings"]},"166":{"title":"Email Provider","titles":["Email Providers and Bindings"]},"167":{"title":"Creating a Provider","titles":["Email Providers and Bindings","Email Provider"]},"168":{"title":"Bot Email Bindings","titles":["Email Providers and Bindings"]},"169":{"title":"Adding a Binding","titles":["Email Providers and Bindings","Bot Email Bindings"]},"170":{"title":"Outbox and History","titles":["Email Providers and Bindings"]},"171":{"title":"Bot Interaction","titles":["Email Providers and Bindings"]},"172":{"title":"Bot Files Management","titles":[]},"173":{"title":"Operations","titles":["Bot Files Management"]},"174":{"title":"Browsing and Navigation","titles":["Bot Files Management","Operations"]},"175":{"title":"Managing Files","titles":["Bot Files Management","Operations"]},"176":{"title":"Viewing and Editing","titles":["Bot Files Management"]},"177":{"title":"Text Files","titles":["Bot Files Management","Viewing and Editing"]},"178":{"title":"Images","titles":["Bot Files Management","Viewing and Editing"]},"179":{"title":"Bot Interaction with Files","titles":["Bot Files Management"]},"180":{"title":"Bot Heartbeat","titles":[]},"181":{"title":"Concept: Scheduled Autonomy","titles":["Bot Heartbeat"]},"182":{"title":"Configuration","titles":["Bot Heartbeat"]},"183":{"title":"Logs and Monitoring","titles":["Bot Heartbeat"]},"184":{"title":"Managing Logs","titles":["Bot Heartbeat","Logs and Monitoring"]},"185":{"title":"Bot Interaction","titles":["Bot Heartbeat"]},"186":{"title":"MCP Connections","titles":[]},"187":{"title":"Concept: Extending Bot Capabilities","titles":["MCP Connections"]},"188":{"title":"Connection Types","titles":["MCP Connections"]},"189":{"title":"1. Stdio (Local Process)","titles":["MCP Connections","Connection Types"]},"190":{"title":"2. Remote (HTTP/SSE)","titles":["MCP Connections","Connection Types"]},"191":{"title":"OAuth Authentication","titles":["MCP Connections"]},"192":{"title":"Operations","titles":["MCP Connections"]},"193":{"title":"Tool Discovery","titles":["MCP Connections"]},"194":{"title":"Bot Interaction","titles":["MCP Connections"]},"195":{"title":"Providers And Models","titles":[]},"196":{"title":"Provider Basics","titles":["Providers And Models"]},"197":{"title":"Creating A Provider","titles":["Providers And Models","Provider Basics"]},"198":{"title":"Client Types","titles":["Providers And Models","Provider Basics"]},"199":{"title":"OAuth-Based Providers","titles":["Providers And Models"]},"200":{"title":"OpenAI Codex","titles":["Providers And Models","OAuth-Based Providers"]},"201":{"title":"GitHub Copilot","titles":["Providers And Models","OAuth-Based Providers"]},"202":{"title":"Importing Models","titles":["Providers And Models"]},"203":{"title":"Model Types","titles":["Providers And Models"]},"204":{"title":"Chat Model Configuration","titles":["Providers And Models"]},"205":{"title":"Compatibilities","titles":["Providers And Models","Chat Model Configuration"]},"206":{"title":"context_window","titles":["Providers And Models","Chat Model Configuration"]},"207":{"title":"Image Generation Models","titles":["Providers And Models","Chat Model Configuration"]},"208":{"title":"Embedding Models","titles":["Providers And Models"]},"209":{"title":"Speech Models","titles":["Providers And Models"]},"210":{"title":"Recommended Mental Model","titles":["Providers And Models"]},"211":{"title":"Next Steps","titles":["Providers And Models"]},"212":{"title":"Bot Memory Management","titles":[]},"213":{"title":"Prerequisites","titles":["Bot Memory Management"]},"214":{"title":"Concept: Memory Retrieval","titles":["Bot Memory Management"]},"215":{"title":"Operations","titles":["Bot Memory Management"]},"216":{"title":"1. Creating Memories","titles":["Bot Memory Management","Operations"]},"217":{"title":"2. Searching and Managing","titles":["Bot Memory Management","Operations"]},"218":{"title":"Memory Compaction","titles":["Bot Memory Management"]},"219":{"title":"Rebuild","titles":["Bot Memory Management"]},"220":{"title":"Status","titles":["Bot Memory Management"]},"221":{"title":"Usage Statistics","titles":["Bot Memory Management"]},"222":{"title":"Memory vs Session Context","titles":["Bot Memory Management"]},"223":{"title":"Bot Interaction","titles":["Bot Memory Management"]},"224":{"title":"Scheduled Tasks","titles":[]},"225":{"title":"Concept: Cron-Based Automation","titles":["Scheduled Tasks"]},"226":{"title":"Schedule Fields","titles":["Scheduled Tasks"]},"227":{"title":"Cron Pattern Reference","titles":["Scheduled Tasks"]},"228":{"title":"Viewing Schedules","titles":["Scheduled Tasks"]},"229":{"title":"Creating Schedules","titles":["Scheduled Tasks"]},"230":{"title":"Via the Bot (Conversational)","titles":["Scheduled Tasks","Creating Schedules"]},"231":{"title":"Via the API","titles":["Scheduled Tasks","Creating Schedules"]},"232":{"title":"Execution Flow","titles":["Scheduled Tasks"]},"233":{"title":"Schedule vs. Heartbeat","titles":["Scheduled Tasks"]},"234":{"title":"Sessions","titles":[]},"235":{"title":"Concept: Conversation Isolation","titles":["Sessions"]},"236":{"title":"Session Types","titles":["Sessions"]},"237":{"title":"Chat vs Discuss","titles":["Sessions","Session Types"]},"238":{"title":"Starting a New Session with /new","titles":["Sessions"]},"239":{"title":"In External Channels (Telegram, Discord, Feishu, etc.)","titles":["Sessions","Starting a New Session with /new"]},"240":{"title":"In the Web UI","titles":["Sessions","Starting a New Session with /new"]},"241":{"title":"Managing Sessions","titles":["Sessions"]},"242":{"title":"Viewing Sessions","titles":["Sessions","Managing Sessions"]},"243":{"title":"Renaming Sessions","titles":["Sessions","Managing Sessions"]},"244":{"title":"Deleting Sessions","titles":["Sessions","Managing Sessions"]},"245":{"title":"Session Status Panel","titles":["Sessions"]},"246":{"title":"How Sessions Relate to Other Features","titles":["Sessions"]},"247":{"title":"Search Providers","titles":[]},"248":{"title":"Concept: Real-Time Knowledge","titles":["Search Providers"]},"249":{"title":"Supported Search Engines","titles":["Search Providers"]},"250":{"title":"Configuration Flow","titles":["Search Providers"]},"251":{"title":"1. Adding a Search Provider","titles":["Search Providers","Configuration Flow"]},"252":{"title":"2. Managing Providers","titles":["Search Providers","Configuration Flow"]},"253":{"title":"Assigning a Search Provider to a Bot","titles":["Search Providers"]},"254":{"title":"Bot Interaction","titles":["Search Providers"]},"255":{"title":"Bot Skills","titles":[]},"256":{"title":"What A Skill Looks Like","titles":["Bot Skills"]},"257":{"title":"Where Skills Come From","titles":["Bot Skills"]},"258":{"title":"Skill States","titles":["Bot Skills"]},"259":{"title":"Typical Examples","titles":["Bot Skills","Skill States"]},"260":{"title":"Managing Skills In The UI","titles":["Bot Skills"]},"261":{"title":"Add Skill","titles":["Bot Skills","Managing Skills In The UI"]},"262":{"title":"Edit Skill","titles":["Bot Skills","Managing Skills In The UI"]},"263":{"title":"Delete Skill","titles":["Bot Skills","Managing Skills In The UI"]},"264":{"title":"Disable / Enable","titles":["Bot Skills","Managing Skills In The UI"]},"265":{"title":"Adopt","titles":["Bot Skills","Managing Skills In The UI"]},"266":{"title":"Effective Skills At Runtime","titles":["Bot Skills"]},"267":{"title":"Supermarket And Imported Skills","titles":["Bot Skills"]},"268":{"title":"Recommended Workflow","titles":["Bot Skills"]},"269":{"title":"Slash Commands","titles":[]},"270":{"title":"Command Model","titles":["Slash Commands"]},"271":{"title":"Built-in Help","titles":["Slash Commands"]},"272":{"title":"Parsing Rules","titles":["Slash Commands"]},"273":{"title":"Permissions","titles":["Slash Commands"]},"274":{"title":"Quick Reference","titles":["Slash Commands"]},"275":{"title":"Top-Level Commands","titles":["Slash Commands","Quick Reference"]},"276":{"title":"Resource Groups","titles":["Slash Commands","Quick Reference"]},"277":{"title":"Session Commands","titles":["Slash Commands"]},"278":{"title":"/new","titles":["Slash Commands","Session Commands"]},"279":{"title":"/stop","titles":["Slash Commands","Session Commands"]},"280":{"title":"Status And Inspection Commands","titles":["Slash Commands"]},"281":{"title":"/status","titles":["Slash Commands","Status And Inspection Commands"]},"282":{"title":"/access","titles":["Slash Commands","Status And Inspection Commands"]},"283":{"title":"/usage","titles":["Slash Commands","Status And Inspection Commands"]},"284":{"title":"/heartbeat","titles":["Slash Commands","Status And Inspection Commands"]},"285":{"title":"/email","titles":["Slash Commands","Status And Inspection Commands"]},"286":{"title":"Configuration Commands","titles":["Slash Commands"]},"287":{"title":"/settings","titles":["Slash Commands","Configuration Commands"]},"288":{"title":"/model","titles":["Slash Commands","Configuration Commands"]},"289":{"title":"/memory","titles":["Slash Commands","Configuration Commands"]},"290":{"title":"/search","titles":["Slash Commands","Configuration Commands"]},"291":{"title":"/browser","titles":["Slash Commands","Configuration Commands"]},"292":{"title":"/mcp","titles":["Slash Commands","Configuration Commands"]},"293":{"title":"Automation And Filesystem Commands","titles":["Slash Commands"]},"294":{"title":"/schedule","titles":["Slash Commands","Automation And Filesystem Commands"]},"295":{"title":"/skill","titles":["Slash Commands","Automation And Filesystem Commands"]},"296":{"title":"/fs","titles":["Slash Commands","Automation And Filesystem Commands"]},"297":{"title":"Context Compaction Command","titles":["Slash Commands"]},"298":{"title":"/compact","titles":["Slash Commands","Context Compaction Command"]},"299":{"title":"Supermarket","titles":[]},"300":{"title":"Install A Skill","titles":["Supermarket"]},"301":{"title":"Install An MCP Template","titles":["Supermarket"]},"302":{"title":"Contribute","titles":["Supermarket"]},"303":{"title":"Docker Installation","titles":[]},"304":{"title":"Service Architecture","titles":["Docker Installation"]},"305":{"title":"Sparse Service","titles":["Docker Installation","Service Architecture"]},"306":{"title":"Prerequisites","titles":["Docker Installation"]},"307":{"title":"One-Click Install (Recommended)","titles":["Docker Installation"]},"308":{"title":"Manual Install","titles":["Docker Installation"]},"309":{"title":"China Mainland Mirror","titles":["Docker Installation","Manual Install"]},"310":{"title":"Access Points","titles":["Docker Installation"]},"311":{"title":"Configuration Reference","titles":["Docker Installation"]},"312":{"title":"Common Commands","titles":["Docker Installation"]},"313":{"title":"Environment Variables","titles":["Docker Installation"]},"314":{"title":"Built-in Memory Provider","titles":[]},"315":{"title":"Memory Modes","titles":["Built-in Memory Provider"]},"316":{"title":"How Sparse Mode Works","titles":["Built-in Memory Provider","Memory Modes"]},"317":{"title":"Creating a Built-in Provider","titles":["Built-in Memory Provider"]},"318":{"title":"Configuring a Built-in Provider","titles":["Built-in Memory Provider"]},"319":{"title":"Managing Providers","titles":["Built-in Memory Provider","Configuring a Built-in Provider"]},"320":{"title":"Infrastructure Requirements","titles":["Built-in Memory Provider"]},"321":{"title":"Off Mode","titles":["Built-in Memory Provider","Infrastructure Requirements"]},"322":{"title":"Sparse Mode","titles":["Built-in Memory Provider","Infrastructure Requirements"]},"323":{"title":"Dense Mode","titles":["Built-in Memory Provider","Infrastructure Requirements"]},"324":{"title":"Assigning a Memory Provider to a Bot","titles":["Built-in Memory Provider"]},"325":{"title":"Using Memory After Setup","titles":["Built-in Memory Provider"]},"326":{"title":"Memoh Documentation","titles":[]},"327":{"title":"Start Here","titles":["Memoh Documentation"]},"328":{"title":"Feature Guides","titles":["Memoh Documentation"]},"329":{"title":"Memory Providers","titles":[]},"330":{"title":"Available Providers","titles":["Memory Providers"]},"331":{"title":"Basic Flow","titles":["Memory Providers"]},"332":{"title":"Next Steps","titles":["Memory Providers"]},"333":{"title":"OpenViking Memory Provider","titles":[]},"334":{"title":"Creating an OpenViking Provider","titles":["OpenViking Memory Provider"]},"335":{"title":"Configuring an OpenViking Provider","titles":["OpenViking Memory Provider"]},"336":{"title":"Assigning an OpenViking Provider to a Bot","titles":["OpenViking Memory Provider"]},"337":{"title":"Usage","titles":["OpenViking Memory Provider"]},"338":{"title":"Mem0 Memory Provider","titles":[]},"339":{"title":"Creating a Mem0 Provider","titles":["Mem0 Memory Provider"]},"340":{"title":"Configuring a Mem0 Provider","titles":["Mem0 Memory Provider"]},"341":{"title":"Assigning a Mem0 Provider to a Bot","titles":["Mem0 Memory Provider"]},"342":{"title":"Usage","titles":["Mem0 Memory Provider"]},"343":{"title":"Edge TTS","titles":[]},"344":{"title":"Creating an Edge TTS Provider","titles":["Edge TTS"]},"345":{"title":"Configuring the Model","titles":["Edge TTS"]},"346":{"title":"Assigning to a Bot","titles":["Edge TTS"]},"347":{"title":"Testing","titles":["Edge TTS"]},"348":{"title":"TTS Providers","titles":[]},"349":{"title":"Basic Flow","titles":["TTS Providers"]},"350":{"title":"Available Providers","titles":["TTS Providers"]},"351":{"title":"Next Steps","titles":["TTS Providers"]}},"dirtCount":0,"index":[["ˈmemoʊ",{"2":{"326":1}}],["=",{"2":{"309":1,"322":2,"323":1}}],["~",{"2":{"307":2}}],["|",{"2":{"307":6}}],["7",{"2":{"283":1}}],["`",{"2":{"275":2}}],["│",{"2":{"227":15}}],["┌─────────────",{"2":{"227":5}}],["96kbitrate",{"2":{"345":1}}],["9",{"2":{"226":2,"227":2,"270":1,"272":1,"294":1}}],["8088",{"2":{"335":1}}],["8083",{"2":{"310":1}}],["8080",{"2":{"310":1,"311":1}}],["8082",{"2":{"310":1}}],["8085",{"2":{"305":1,"322":1}}],["8",{"2":{"218":1,"227":3,"230":1,"231":1}}],["00",{"2":{"226":1,"227":3}}],["0",{"2":{"218":3,"226":1,"227":9,"231":1,"270":1,"272":1,"294":1,"307":3,"313":1,"345":5}}],["6334",{"2":{"322":1,"323":1}}],["6",{"0":{"144":1},"2":{"204":1,"227":1,"307":3,"313":1}}],["zh",{"2":{"117":1,"287":1}}],["zone",{"2":{"105":1,"113":1}}],["→",{"2":{"88":2,"93":3}}],["企业微信",{"2":{"70":1}}],["创建机器人",{"2":{"54":1}}],["x26",{"2":{"312":2}}],["xhigh",{"2":{"205":1}}],["x3c",{"2":{"43":3}}],["x",{"2":{"43":1}}],["50+",{"2":{"343":1,"345":1,"350":1}}],["59",{"2":{"227":1}}],["5",{"0":{"41":1,"143":1},"2":{"54":1,"218":1,"345":1}}],["48kbitrate",{"2":{"345":1}}],["4o",{"2":{"204":1,"288":2}}],["4",{"0":{"31":1,"40":1,"68":1,"142":1},"2":{"204":1}}],["32",{"2":{"308":1}}],["31",{"2":{"227":1}}],["30",{"2":{"44":1,"182":1,"227":2,"287":1}}],["3",{"0":{"25":1,"30":1,"39":1,"45":1,"51":1,"56":1,"62":1,"67":1,"73":1,"79":1,"141":1},"2":{"218":1,"304":1,"345":1}}],["100",{"2":{"345":1}}],["16bit",{"2":{"345":1}}],["12",{"2":{"227":1}}],["123456789",{"2":{"60":1}}],["1536",{"2":{"208":1}}],["1",{"0":{"23":1,"28":1,"37":1,"43":1,"49":1,"54":1,"60":1,"65":1,"71":1,"77":1,"139":1,"189":1,"216":1,"251":1},"2":{"227":4,"310":1,"345":1}}],["+100",{"2":{"345":1}}],["+",{"2":{"19":1,"259":1,"305":1,"315":2,"345":1}}],["jwt",{"2":{"307":2,"308":1,"311":1}}],["jina",{"2":{"249":1}}],["jpg",{"2":{"178":1}}],["js",{"2":{"177":1}}],["json",{"2":{"43":1,"192":3,"231":1,"311":1}}],["join",{"2":{"27":1,"42":1,"44":2,"45":2,"46":1,"237":1}}],["jobs",{"2":{"19":1}}],["just",{"2":{"14":1,"76":1,"83":1,"171":1,"259":1,"269":1}}],["256",{"2":{"345":1}}],["256+",{"2":{"343":1,"350":1}}],["20",{"2":{"227":1}}],["2026",{"2":{"13":1,"21":1}}],["23",{"2":{"227":1}}],["2",{"0":{"24":1,"29":1,"38":1,"44":1,"50":1,"55":1,"61":1,"66":1,"72":1,"78":1,"140":1,"190":1,"217":1,"252":1},"2":{"310":1,"345":1}}],["24khz",{"2":{"345":3}}],["24",{"2":{"18":1}}],["known",{"2":{"155":1,"272":1}}],["know",{"2":{"56":1,"62":1,"202":1}}],["knowledge",{"0":{"248":1},"2":{"15":1,"122":1,"223":1,"247":1}}],["keyword",{"2":{"305":1,"316":1}}],["keys",{"2":{"140":1,"223":1}}],["key",{"2":{"23":1,"24":1,"65":1,"66":1,"67":1,"78":1,"144":1,"167":1,"189":1,"196":1,"197":1,"199":1,"200":1,"245":1,"251":1,"270":1,"305":1,"311":1,"316":1,"330":1,"335":2,"340":2,"343":1,"350":1}}],["keeps",{"2":{"207":1}}],["keeping",{"2":{"123":1}}],["keep",{"2":{"14":1,"20":2,"43":1,"60":1,"143":1,"184":1,"268":1}}],["kept",{"2":{"13":1}}],["kinds",{"2":{"86":1,"236":1}}],["kind",{"2":{"14":1}}],["yml",{"2":{"308":1,"309":2}}],["yaml",{"2":{"256":2}}],["yandex",{"2":{"249":1}}],["y",{"2":{"189":1,"307":1}}],["yet",{"2":{"106":1,"122":1}}],["yes",{"2":{"44":3,"72":2,"335":1,"340":1}}],["year",{"2":{"13":1,"14":1}}],["yourself",{"2":{"255":1,"338":1}}],["yours",{"2":{"20":1}}],["your",{"0":{"30":1,"41":1,"56":1,"62":1},"2":{"14":1,"15":1,"18":1,"23":3,"24":1,"27":1,"30":1,"31":2,"33":3,"34":1,"35":2,"36":1,"37":1,"39":1,"40":2,"42":2,"43":2,"44":2,"45":1,"49":1,"50":1,"53":1,"54":1,"55":2,"56":3,"59":1,"60":1,"61":2,"62":4,"65":1,"66":1,"70":2,"72":1,"73":1,"76":1,"77":1,"78":2,"82":1,"99":1,"100":1,"106":1,"119":1,"134":2,"136":1,"141":1,"148":1,"160":1,"161":1,"164":1,"165":1,"166":1,"168":1,"175":2,"179":1,"180":1,"186":1,"198":1,"207":1,"213":2,"215":1,"235":1,"247":1,"248":1,"249":2,"251":1,"253":1,"265":1,"271":1,"303":1,"307":1,"308":1,"312":1,"324":1,"336":1,"338":1,"341":1}}],["you",{"2":{"1":1,"6":1,"10":1,"14":5,"17":1,"20":1,"23":1,"24":1,"30":1,"33":1,"43":1,"49":1,"56":2,"59":1,"60":2,"62":2,"65":2,"66":1,"78":1,"82":1,"83":5,"93":1,"94":2,"104":2,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"118":1,"119":1,"122":1,"123":1,"127":1,"128":1,"130":1,"131":1,"134":1,"135":1,"144":1,"152":2,"153":1,"154":1,"155":1,"162":1,"169":1,"172":1,"176":1,"180":2,"186":1,"187":1,"191":2,"193":2,"195":2,"200":1,"201":1,"202":4,"203":1,"206":1,"207":1,"210":1,"218":1,"219":3,"222":2,"224":1,"227":1,"230":1,"231":1,"235":2,"237":1,"238":1,"239":4,"240":1,"244":1,"246":1,"247":1,"251":1,"253":1,"255":2,"256":1,"257":1,"259":4,"262":1,"264":1,"265":3,"267":1,"268":2,"278":1,"279":3,"281":1,"298":1,"301":1,"303":1,"305":2,"308":1,"309":1,"319":1,"324":1,"325":1,"336":1,"341":1,"348":1}}],["v0",{"2":{"307":1,"313":1}}],["v2",{"2":{"306":1}}],["vue",{"2":{"304":1}}],["voice",{"2":{"209":1,"345":3,"347":1,"348":2,"349":1}}],["voices",{"2":{"107":1,"343":1,"345":1,"350":1}}],["volume",{"2":{"167":1}}],["v3",{"2":{"43":1}}],["v1",{"2":{"40":1,"305":1,"316":1,"322":1}}],["view",{"2":{"158":1,"184":1,"191":1,"193":1,"246":1,"276":8,"312":1}}],["viewport",{"2":{"107":1,"114":1,"117":4}}],["viewing",{"0":{"176":1,"228":1,"242":1},"1":{"177":1,"178":1},"2":{"54":1,"269":1}}],["vision",{"2":{"204":1,"205":1}}],["visible",{"2":{"153":1,"237":1,"266":1}}],["visibility",{"2":{"10":1}}],["visual",{"2":{"57":1,"81":1,"107":1,"178":1}}],["via",{"0":{"230":1,"231":1},"2":{"32":1,"33":4,"36":1,"42":1,"43":1,"73":1,"76":1,"93":1,"100":1,"102":1,"147":1,"149":1,"171":2,"189":1,"209":1,"303":1,"304":1,"330":1,"332":1}}],["var",{"2":{"153":1,"308":1}}],["variable",{"2":{"307":1,"313":1}}],["variables",{"0":{"313":1},"2":{"189":1,"307":1}}],["varies",{"2":{"49":1}}],["various",{"2":{"18":1,"102":1,"134":1,"247":1}}],["valuable",{"2":{"131":1}}],["values",{"2":{"121":1,"218":1,"270":1}}],["value",{"2":{"13":1,"189":1,"218":1,"227":1,"270":1}}],["valid",{"2":{"121":1,"153":1,"237":1}}],["validity",{"2":{"78":1}}],["vendor",{"2":{"153":2}}],["very",{"2":{"296":1}}],["version=v0",{"2":{"307":2}}],["versions",{"2":{"163":1,"307":1,"313":1}}],["versioning",{"0":{"163":1},"2":{"155":1}}],["version",{"2":{"41":2,"163":5,"258":1,"271":1,"307":2,"313":1}}],["versioned",{"2":{"17":1}}],["verification",{"2":{"40":1,"154":1,"201":1}}],["verify",{"0":{"25":1},"2":{"67":1,"130":1,"220":1}}],["vectors",{"2":{"214":1,"305":1,"315":1,"316":1,"330":1}}],["vector",{"2":{"9":1,"17":1,"203":1,"208":2,"219":1,"221":1,"304":1,"305":1,"308":1,"311":1,"315":1,"318":1,"322":1}}],["vs",{"0":{"34":1,"132":1,"222":1,"233":1,"237":1},"2":{"11":1,"327":1}}],["null",{"2":{"231":1}}],["number",{"2":{"150":1,"221":1,"226":2,"268":1}}],["npx",{"2":{"189":1}}],["nvidia",{"2":{"152":2,"153":2}}],["navigation",{"0":{"174":1},"2":{"117":1,"120":1,"174":1}}],["navigating",{"2":{"115":1}}],["navigate",{"2":{"71":1,"103":1,"106":1,"113":1,"116":1,"119":1,"167":1,"228":1,"251":1,"253":1,"317":1,"324":1,"334":1,"336":1,"339":1,"341":1,"344":1,"349":1}}],["narrow",{"2":{"90":1}}],["named",{"2":{"256":1,"257":1,"348":1}}],["namespace",{"2":{"311":1}}],["names",{"2":{"152":2,"153":1,"193":1,"268":1}}],["name",{"2":{"28":1,"37":1,"60":2,"103":2,"116":2,"117":2,"153":2,"156":1,"192":1,"197":2,"204":2,"226":2,"228":1,"231":1,"242":1,"251":2,"256":5,"257":2,"258":3,"259":2,"263":2,"265":1,"288":5,"289":1,"290":1,"291":1,"292":2,"294":6,"317":2,"318":1,"334":2,"339":2}}],["natural",{"2":{"13":1,"226":1,"230":1,"233":1}}],["night",{"2":{"14":1}}],["noise",{"2":{"218":1,"222":1}}],["noisy",{"2":{"132":1}}],["nobody",{"2":{"83":1}}],["now",{"2":{"79":1,"109":1,"128":2,"207":1,"245":1,"346":1,"349":1}}],["none",{"2":{"205":1,"276":8,"315":1}}],["non",{"2":{"26":1,"69":1}}],["no",{"2":{"18":1,"44":2,"52":2,"54":1,"72":1,"78":1,"85":1,"88":1,"96":1,"110":1,"118":1,"137":1,"217":1,"239":1,"244":1,"281":1,"305":1,"307":1,"308":1,"315":1,"316":1,"319":1,"321":1,"324":1,"335":1,"340":3,"343":1,"350":1}}],["node",{"2":{"14":1,"17":1}}],["notable",{"2":{"199":1}}],["notifications",{"2":{"181":1}}],["noticed",{"2":{"14":1}}],["notes",{"2":{"69":1,"107":1,"137":1,"249":1}}],["note",{"2":{"26":1,"43":1,"71":1}}],["not",{"2":{"13":1,"14":3,"17":1,"24":1,"69":1,"93":1,"94":1,"106":1,"107":1,"109":1,"122":1,"123":1,"125":1,"144":1,"152":1,"153":1,"154":1,"198":2,"209":2,"210":1,"213":1,"238":1,"258":1,"265":1,"266":1,"269":1,"272":1,"278":1,"303":1,"308":1,"312":1,"324":1}}],["normally",{"2":{"153":1}}],["normal",{"2":{"9":1,"24":1,"107":2,"111":1,"199":1,"200":1,"210":1,"237":2,"238":1,"267":1,"272":1,"278":1}}],["neural",{"2":{"304":1,"305":3,"315":1,"316":1,"322":1,"330":1}}],["nerdctl",{"2":{"303":1}}],["next",{"0":{"122":1,"133":1,"211":1,"332":1,"351":1},"2":{"124":1,"158":1}}],["needing",{"2":{"305":1}}],["needed",{"2":{"78":1,"96":1,"207":1,"217":1}}],["needs",{"2":{"49":1,"124":1,"151":1,"154":1,"196":1}}],["need",{"2":{"17":1,"23":1,"24":1,"60":1,"65":1,"111":1,"125":1,"144":1,"152":1,"210":1,"244":1,"251":1,"279":1,"303":1,"305":1,"333":1}}],["newest",{"2":{"281":1}}],["newer",{"2":{"124":1}}],["news",{"2":{"226":2,"270":1,"272":1,"294":3}}],["newbot",{"2":{"60":1}}],["new",{"0":{"238":2,"278":1},"1":{"239":2,"240":2},"2":{"6":1,"14":1,"28":1,"43":1,"62":1,"71":1,"92":1,"110":1,"174":1,"216":1,"235":1,"238":6,"239":5,"240":1,"270":2,"275":1,"278":4,"302":1}}],["network",{"2":{"4":1,"18":1,"19":1,"190":1}}],["qdrant",{"2":{"304":3,"305":2,"308":2,"309":1,"311":2,"315":3,"318":2,"322":4,"323":5}}],["queries",{"2":{"305":1}}],["question",{"2":{"254":1}}],["questions",{"2":{"13":2}}],["quality",{"2":{"218":1,"305":1,"315":2,"316":1}}],["quarter",{"2":{"13":1}}],["quoted",{"2":{"272":1}}],["quotes",{"2":{"270":1}}],["quot",{"2":{"63":2,"147":2,"171":2,"181":2,"185":4,"222":2,"226":4,"230":2,"233":2,"251":2}}],["quickly",{"2":{"140":1,"174":1,"184":1,"192":2,"220":1,"305":1}}],["quick",{"0":{"83":1,"274":1},"1":{"275":1,"276":1},"2":{"33":1,"103":1}}],["quietly",{"2":{"14":1}}],["qr",{"0":{"78":1,"142":1},"2":{"7":1,"33":1,"34":1,"35":1,"64":1,"76":1,"78":5,"79":1,"137":2,"142":2}}],["qq",{"0":{"53":1,"54":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1},"2":{"1":1,"7":1,"33":1,"53":2,"54":2,"55":1,"56":3,"58":2,"105":1,"137":2,"326":1}}],["duplicates",{"2":{"257":1}}],["duckduckgo",{"2":{"249":1}}],["duration",{"2":{"183":1}}],["durable",{"2":{"5":1,"16":1,"17":1,"20":1}}],["during",{"2":{"108":1,"121":1,"126":1,"149":1,"183":1,"185":2,"193":1,"223":1,"246":1,"248":1,"266":1,"305":1,"314":1}}],["dynamic",{"2":{"139":1}}],["draft",{"2":{"187":1,"301":1}}],["drag",{"2":{"92":1}}],["drivers",{"2":{"153":1}}],["driven",{"2":{"10":1}}],["dropdown",{"2":{"119":1,"253":1,"324":1,"336":1,"341":1,"346":1}}],["dropped",{"2":{"92":1}}],["d",{"2":{"43":1,"305":1,"308":2,"309":1,"312":2,"322":1,"323":1}}],["dms",{"2":{"94":1}}],["dm",{"2":{"33":1,"137":1}}],["daily",{"2":{"226":1,"230":1,"231":1,"270":1,"327":1}}],["date",{"2":{"221":1}}],["data",{"0":{"159":1},"1":{"160":1,"161":1,"162":1},"2":{"105":1,"113":2,"150":2,"159":1,"160":2,"161":1,"162":1,"181":1,"187":1,"189":1,"224":1,"257":5,"285":1,"307":3,"311":1}}],["database",{"2":{"18":1,"105":1,"304":2,"308":1,"311":2,"322":1}}],["danger",{"2":{"105":1,"113":1}}],["days",{"2":{"218":1,"283":1}}],["day",{"2":{"10":1,"16":1,"227":5,"230":1,"325":2,"337":2,"342":2}}],["db",{"2":{"17":1,"308":3}}],["domain",{"2":{"167":1}}],["document",{"2":{"305":1}}],["documentation",{"0":{"326":1},"1":{"327":1,"328":1},"2":{"58":1,"75":1}}],["docs",{"2":{"256":1}}],["docker",{"0":{"303":1},"1":{"304":1,"305":1,"306":1,"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1},"2":{"11":1,"121":1,"150":1,"303":2,"304":1,"305":1,"306":2,"307":6,"308":5,"309":5,"312":6,"313":2,"322":1,"327":1}}],["downloaded",{"2":{"305":1}}],["downloads",{"2":{"267":1}}],["download",{"2":{"175":1}}],["downloadable",{"2":{"160":1}}],["down",{"2":{"29":1,"149":1,"312":1}}],["don",{"2":{"14":2,"16":2,"305":1}}],["doing",{"2":{"14":1}}],["doesn",{"2":{"14":1,"149":1}}],["does",{"2":{"13":1,"125":1,"152":1,"153":1,"154":1,"171":1,"226":1,"272":1,"305":1}}],["do",{"2":{"11":1,"24":1,"43":1,"144":1,"209":1,"210":2,"269":1,"303":1}}],["debug",{"2":{"311":1}}],["debugging",{"0":{"101":1},"2":{"282":1}}],["dedicate",{"2":{"107":1}}],["dedicated",{"2":{"33":1,"108":1,"109":1,"131":1,"146":1,"172":1,"333":1}}],["demos",{"2":{"94":1}}],["determined",{"2":{"121":1}}],["determines",{"2":{"88":1}}],["detail",{"0":{"104":1},"1":{"105":1},"2":{"61":1,"104":1,"106":1,"113":1,"124":1,"130":1,"136":1,"148":1,"168":1,"172":1,"182":1,"188":1,"215":1,"228":1}}],["details",{"2":{"41":1,"193":1,"301":1,"305":1}}],["detailed",{"2":{"35":1,"183":1,"271":1}}],["dense",{"0":{"323":1},"2":{"214":1,"304":1,"305":1,"315":2,"316":1,"318":3,"330":1}}],["density",{"2":{"14":2}}],["denied",{"2":{"85":1,"98":1,"99":1,"282":1}}],["deny",{"2":{"82":1,"83":6,"85":2,"86":1,"87":1,"88":1,"91":1,"94":2,"97":2,"98":1,"99":1,"287":1}}],["definitions",{"2":{"311":1}}],["defined",{"2":{"242":1}}],["defines",{"2":{"226":1}}],["define",{"2":{"82":1,"83":1,"105":1,"107":1,"195":1,"329":1}}],["defaults",{"2":{"238":1,"278":1,"307":2,"318":1,"340":1}}],["default",{"0":{"85":1},"2":{"18":1,"19":1,"44":2,"55":2,"72":1,"83":5,"85":1,"88":1,"90":1,"96":2,"97":1,"98":1,"101":1,"105":1,"110":2,"117":1,"121":1,"182":1,"207":1,"227":1,"236":2,"237":1,"238":4,"270":1,"276":1,"278":4,"287":1,"308":1,"310":1,"311":2,"313":1,"318":1,"330":1,"332":1,"344":1,"345":4,"349":1}}],["desirable",{"2":{"237":1}}],["desired",{"2":{"157":1}}],["designed",{"2":{"10":1,"249":1}}],["described",{"2":{"111":1}}],["descriptions",{"2":{"193":1,"268":1}}],["description",{"2":{"37":1,"44":1,"72":1,"80":1,"86":1,"105":1,"107":1,"108":1,"109":1,"117":1,"126":1,"140":1,"182":1,"189":1,"190":1,"197":1,"204":1,"208":1,"226":2,"231":1,"236":1,"256":2,"275":1,"276":1,"287":1,"304":1,"311":1,"313":1,"318":1,"335":1,"340":1,"345":1,"350":1}}],["decay",{"2":{"218":1}}],["declare",{"2":{"205":1}}],["decisions",{"0":{"101":1}}],["decides",{"2":{"236":1}}],["decide",{"2":{"6":1,"14":1,"128":1,"205":1,"206":1,"237":1}}],["decentralized",{"2":{"33":1,"42":1,"137":1}}],["developer",{"2":{"23":1,"28":1,"30":1,"38":1}}],["devices",{"0":{"151":1,"152":1},"1":{"152":1,"153":1,"154":1},"2":{"150":2,"151":3,"152":1,"153":2,"154":2}}],["device",{"2":{"14":1,"17":1,"19":1,"117":2,"151":1,"152":2,"153":6,"154":1,"198":1,"201":1}}],["deployment",{"2":{"34":1,"65":1,"327":1}}],["deployable",{"2":{"17":1}}],["depending",{"2":{"23":1,"35":1,"99":1,"214":1,"251":1}}],["dependable",{"2":{"16":1}}],["delegates",{"2":{"236":1}}],["delegated",{"2":{"3":1,"6":1,"8":1,"246":1}}],["deletes",{"2":{"292":1}}],["delete",{"0":{"263":1},"2":{"113":1,"118":1,"125":1,"145":1,"149":1,"158":1,"169":1,"175":1,"192":2,"217":1,"240":1,"252":2,"263":1,"268":1,"273":1,"292":2,"294":2,"319":1,"325":1}}],["deleting",{"0":{"113":1,"244":1},"2":{"192":1,"238":1,"244":1,"263":1,"264":1,"278":1}}],["delivered",{"2":{"232":1}}],["deliver",{"2":{"225":1}}],["delivering",{"2":{"67":1}}],["delivery",{"2":{"65":1,"167":1,"170":1}}],["deliberative",{"2":{"6":1}}],["digest",{"2":{"230":1,"231":1}}],["dimensions",{"2":{"208":1}}],["diagnose",{"2":{"130":1}}],["directories",{"2":{"174":1,"175":1,"257":1}}],["directory",{"2":{"162":1,"173":1,"174":1,"189":1,"256":1,"259":1,"261":1,"263":1,"265":1,"267":1,"307":2,"311":1}}],["direct",{"2":{"33":1,"42":1,"45":1,"46":1,"56":1,"57":1,"74":1,"81":1,"94":1,"197":1,"237":3,"278":1}}],["directly",{"2":{"11":1,"73":1,"76":1,"79":1,"112":1,"141":1,"172":1,"178":1,"217":1,"236":1,"257":1,"262":1,"309":1}}],["differ",{"2":{"108":1,"278":1}}],["differs",{"2":{"19":1}}],["different",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"2":{"3":1,"5":1,"34":1,"64":1,"132":1,"135":1,"182":1,"218":1,"222":1,"236":1,"239":1,"298":1,"314":1}}],["did",{"2":{"14":1,"108":1,"246":1}}],["displays",{"2":{"150":1,"221":1}}],["display",{"2":{"60":1,"103":1,"116":1,"117":1,"197":1,"204":1,"226":1,"317":1,"334":1,"339":1}}],["displayed",{"2":{"54":1,"78":1}}],["disable",{"0":{"264":1},"2":{"108":1,"109":1,"126":1,"140":1,"145":1,"192":1,"259":1,"264":1,"268":1,"273":1,"294":3}}],["disabled",{"2":{"10":1,"140":1,"232":1,"258":2,"264":1,"266":1}}],["disappears",{"2":{"14":1}}],["discovered",{"2":{"257":5,"259":1,"263":1,"265":1,"267":2}}],["discovers",{"2":{"193":1,"267":1}}],["discovery",{"0":{"193":1},"2":{"301":1}}],["discover",{"2":{"50":1,"153":1,"191":1,"194":1,"271":1}}],["discord",{"0":{"27":1,"28":1,"239":1},"1":{"28":1,"29":1,"30":1,"31":1,"32":1},"2":{"1":1,"7":1,"27":1,"28":1,"30":1,"31":1,"32":1,"33":1,"86":2,"93":1,"105":1,"135":1,"137":2,"238":1,"278":1,"326":1}}],["discuss",{"0":{"6":1,"111":1,"237":1},"2":{"6":1,"11":1,"111":3,"236":2,"237":3,"238":5,"239":1,"240":1,"242":1,"246":1,"275":1,"278":6,"327":1}}],["distinction",{"2":{"5":1,"203":1}}],["distinguishes",{"2":{"7":1,"203":1,"257":1}}],["distinguish",{"2":{"3":1}}],["dingtalk",{"0":{"22":1,"23":1,"144":1},"1":{"23":1,"24":1,"25":1,"26":1},"2":{"1":1,"7":1,"22":2,"23":2,"24":2,"25":1,"26":1,"33":1,"105":1,"137":2,"144":1,"326":1}}],["guidance",{"2":{"255":1}}],["guides",{"0":{"137":1,"328":1},"2":{"35":1,"328":1}}],["guide",{"2":{"30":1,"40":2,"59":1,"60":1,"64":1,"137":1,"206":1}}],["gpt",{"2":{"204":1,"288":2}}],["gpu=all",{"2":{"152":2}}],["gpu=0",{"2":{"152":2}}],["gpus",{"2":{"151":1}}],["gpu",{"2":{"150":1,"152":3,"153":1}}],["gather",{"2":{"120":1}}],["gateways",{"2":{"33":1}}],["gateway",{"0":{"115":1},"2":{"29":1,"114":1,"115":1,"304":1,"310":1,"311":2}}],["global",{"2":{"86":1,"249":1}}],["g",{"2":{"43":2,"44":2,"60":3,"86":2,"167":1,"174":1,"177":1,"178":1,"189":2,"190":1,"219":1,"226":3,"232":1,"251":2,"307":1,"313":1,"335":1,"348":2,"349":1}}],["gmail",{"2":{"33":1}}],["gt",{"2":{"30":1,"37":1,"38":1,"39":1,"40":1,"41":1,"56":1,"62":1,"71":1,"257":1,"271":3,"288":6,"289":1,"290":1,"291":1,"292":2,"294":8,"296":1}}],["grown",{"2":{"298":1}}],["grows",{"2":{"124":1}}],["grounded",{"2":{"254":1}}],["grouped",{"2":{"235":1}}],["group",{"2":{"22":1,"25":1,"26":1,"33":1,"39":1,"42":1,"46":1,"57":1,"69":1,"73":1,"74":2,"83":3,"91":2,"93":2,"94":3,"101":1,"110":1,"137":1,"237":1,"238":1,"246":1,"270":2,"271":3,"272":1,"276":1,"278":1,"308":1,"312":1}}],["groups",{"0":{"276":1},"2":{"3":1,"18":1,"36":1,"83":1,"270":2}}],["gracefully",{"2":{"149":1}}],["grained",{"2":{"93":1,"110":1}}],["granting",{"2":{"191":1}}],["grants",{"2":{"87":1}}],["grant",{"2":{"23":1}}],["graphical",{"2":{"18":1}}],["grade",{"2":{"15":1}}],["good",{"2":{"137":1,"155":1,"200":1,"305":1,"315":1}}],["google",{"2":{"9":1,"196":1,"198":2,"248":1,"249":1}}],["goal",{"2":{"99":1}}],["go",{"2":{"24":1,"28":2,"30":1,"31":1,"37":2,"38":1,"39":1,"40":2,"41":1,"44":1,"50":1,"54":1,"55":1,"56":1,"61":1,"62":1,"66":1,"72":1,"77":1,"119":1,"253":1,"260":1,"324":1,"336":1,"341":1}}],["got",{"2":{"14":1}}],["git",{"2":{"306":1,"308":1,"313":1}}],["github",{"0":{"201":1},"2":{"9":1,"196":1,"198":2,"199":1,"201":3,"307":1,"308":1}}],["giving",{"2":{"235":1}}],["gives",{"2":{"110":1}}],["give",{"2":{"1":1,"14":1,"19":1,"28":1,"114":1,"256":1}}],["giant",{"2":{"106":1}}],["gemini",{"2":{"196":1,"198":1}}],["generic",{"2":{"165":1,"167":1,"233":1}}],["generator",{"2":{"30":1}}],["generates",{"2":{"66":1,"143":1}}],["generate",{"2":{"28":1,"40":1,"49":1,"56":1,"62":1,"107":1,"141":1,"205":1,"307":1,"308":1}}],["generated",{"2":{"14":1,"30":1,"46":1,"242":1,"307":1}}],["generating",{"2":{"57":1,"80":1,"81":1,"107":1}}],["generation",{"0":{"207":1},"2":{"9":1,"107":4,"203":1,"207":2,"210":1,"270":1,"275":1,"279":1}}],["generative",{"2":{"9":1,"198":1}}],["generally",{"2":{"51":1}}],["general",{"0":{"35":1,"107":1},"2":{"10":1,"105":1,"106":1,"107":1,"113":1,"119":1,"126":1,"213":1,"233":1,"253":1,"324":1,"329":1,"331":1,"336":1,"341":1,"346":1,"349":1}}],["get",{"2":{"11":1,"13":1,"60":1,"78":1,"270":2,"276":1,"287":2,"292":2,"294":2}}],["gets",{"2":{"5":1,"19":1,"131":1}}],["hub",{"2":{"135":1,"309":1}}],["human",{"2":{"14":1}}],["humans",{"2":{"3":1,"18":1}}],["html",{"2":{"120":1}}],["http",{"0":{"190":1},"2":{"65":1,"190":2,"310":3,"311":1,"322":2,"323":1,"335":1}}],["https",{"2":{"43":1,"44":1,"49":1,"117":2,"200":1,"307":6,"308":1,"340":1}}],["h",{"2":{"43":1}}],["hybrid",{"2":{"19":1}}],["here",{"0":{"327":1},"2":{"302":1,"311":1}}],["height",{"2":{"117":2}}],["headers",{"2":{"190":2}}],["headless",{"2":{"114":1}}],["health",{"2":{"105":1}}],["heartbeat",{"0":{"108":1,"180":1,"233":1,"284":1},"1":{"181":1,"182":1,"183":1,"184":1,"185":1},"2":{"6":1,"10":1,"105":2,"106":1,"108":8,"180":1,"181":1,"182":5,"183":4,"184":1,"185":3,"233":2,"236":2,"240":1,"246":3,"276":2,"284":3,"287":6,"288":4}}],["helper",{"2":{"256":1}}],["help",{"0":{"271":1},"2":{"256":1,"271":7,"272":2,"273":1,"275":2}}],["helps",{"2":{"124":1,"128":1,"163":1,"243":1}}],["helpful",{"2":{"101":1}}],["held",{"2":{"19":1}}],["hour",{"2":{"227":1}}],["hours",{"2":{"18":1}}],["host",{"0":{"153":1},"2":{"146":1,"150":1,"151":3,"153":5,"167":1,"303":1,"311":3}}],["hosted",{"2":{"48":1,"249":1,"330":2,"332":2,"333":1}}],["how",{"0":{"17":1,"246":1,"316":1},"2":{"108":1,"109":1,"125":1,"126":2,"130":1,"140":1,"182":1,"183":1,"195":1,"245":1,"278":1,"318":1,"329":1,"347":1}}],["homeserver>",{"2":{"43":1}}],["homeserver",{"2":{"33":1,"42":1,"43":1,"44":2,"137":1}}],["home",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"14":2,"15":1,"19":1,"20":1,"296":2}}],["historical",{"2":{"125":1}}],["history",{"0":{"170":1},"2":{"15":1,"30":1,"132":1,"163":1,"184":1,"216":1,"222":1,"234":1,"235":1,"238":1,"239":1,"244":1,"278":1,"298":1}}],["highlighting",{"2":{"177":1}}],["highly",{"2":{"94":1,"249":1}}],["high",{"2":{"107":1,"167":1,"205":1,"287":1}}],["higher",{"2":{"92":1}}],["highest",{"2":{"88":1,"315":1}}],["hierarchy",{"2":{"93":1}}],["hint",{"2":{"55":1}}],["hide",{"2":{"14":1}}],["hit",{"2":{"6":1,"128":1,"245":1,"281":1}}],["happened",{"2":{"130":1}}],["happening",{"2":{"14":1}}],["have",{"2":{"19":1,"106":1,"122":1,"132":1,"149":1,"187":1,"201":1,"209":1,"213":1,"219":1,"270":1,"279":1,"348":1}}],["having",{"2":{"18":1}}],["half",{"2":{"14":1}}],["hardware",{"2":{"13":1,"14":1}}],["handles",{"2":{"171":1,"309":1,"338":1}}],["hand",{"2":{"10":1}}],["has",{"2":{"1":1,"14":1,"66":1,"78":1,"85":1,"87":1,"91":1,"132":1,"162":1,"172":1,"213":1,"219":1,"222":1,"226":1,"230":1,"239":1,"258":2,"271":1,"281":1,"298":1}}],["right",{"2":{"128":1,"252":1}}],["rich",{"2":{"8":1,"33":1,"57":1}}],["rule",{"0":{"87":1},"2":{"85":2,"87":1,"88":6,"91":2,"94":1,"99":1,"100":1,"101":1,"110":1,"225":1,"328":1}}],["rules",{"0":{"91":1,"92":1,"272":1},"2":{"82":1,"83":2,"86":2,"88":2,"90":1,"92":2,"93":1,"96":1,"97":1,"98":1,"105":1,"106":1,"110":1,"256":1,"282":1}}],["runtime",{"0":{"266":1},"2":{"17":1,"105":1,"106":2,"109":1,"133":1,"150":1,"151":1,"153":1,"163":1,"214":1,"245":1,"256":1,"266":1,"281":1,"305":1,"324":1}}],["running",{"2":{"11":1,"35":1,"112":1,"130":1,"149":1,"150":2,"270":1,"307":1,"308":1}}],["run",{"2":{"4":1,"16":1,"17":1,"18":1,"20":1,"129":2,"130":1,"153":1,"154":1,"189":1,"276":1,"298":2,"303":1,"307":1}}],["runs",{"2":{"4":1,"18":1,"108":2,"109":1,"129":1,"130":1,"226":1,"230":1,"246":1,"269":1,"303":1,"305":2,"316":1,"322":1}}],["range",{"2":{"345":1}}],["rand",{"2":{"308":1}}],["raw",{"2":{"261":1,"262":1}}],["raise",{"2":{"16":1}}],["ram",{"2":{"14":1}}],["rag",{"2":{"14":1,"15":1}}],["ratio",{"2":{"109":1,"117":1,"126":1,"218":2}}],["rather",{"2":{"9":1,"111":1,"218":1}}],["rate",{"2":{"6":1,"128":1,"245":1,"281":1}}],["roots",{"2":{"257":1}}],["root",{"2":{"197":1,"257":4}}],["room",{"2":{"45":1}}],["rooms",{"2":{"42":1,"44":1,"46":2,"94":1}}],["rocm",{"2":{"154":1}}],["routine",{"2":{"185":1,"224":1,"233":1}}],["routing",{"2":{"140":1,"238":1,"327":1}}],["routed",{"2":{"337":1,"342":1}}],["routes",{"2":{"236":1}}],["router",{"2":{"14":3,"17":2}}],["route",{"2":{"6":1,"238":1,"239":1,"270":1,"278":1,"281":2}}],["roadmap",{"2":{"46":1}}],["role",{"2":{"9":1,"101":1,"276":1,"282":1}}],["roles",{"2":{"3":1,"210":1,"327":1}}],["rewriting",{"2":{"218":1}}],["rewrite",{"2":{"123":1}}],["rewrites",{"2":{"5":1,"132":1,"218":1,"222":1,"298":1}}],["reuse",{"2":{"201":1}}],["reusable",{"2":{"8":1,"115":1,"255":1,"268":1}}],["requiring",{"2":{"305":1}}],["require",{"2":{"191":1}}],["requirements",{"0":{"153":1,"320":1},"1":{"321":1,"322":1,"323":1},"2":{"314":1,"315":1}}],["requires",{"2":{"91":1,"93":1,"112":1,"154":1,"191":1,"254":1,"307":1,"316":1,"322":1,"323":1,"330":1,"343":1}}],["required",{"2":{"18":1,"39":1,"44":2,"54":1,"66":1,"72":2,"111":1,"139":1,"153":1,"167":1,"197":1,"208":1,"301":1,"308":1,"321":1,"335":1,"340":1,"350":1}}],["requested",{"2":{"194":1,"239":1}}],["revoke",{"2":{"191":1}}],["review",{"2":{"108":1,"187":1}}],["redirected",{"2":{"191":1}}],["reducing",{"2":{"218":1}}],["reduce",{"2":{"222":1,"328":1}}],["reduced",{"2":{"109":1,"126":1}}],["reduces",{"2":{"5":1,"123":1,"214":1,"298":1}}],["redundant",{"2":{"132":1,"218":1}}],["renaming",{"0":{"243":1}}],["rename",{"2":{"175":2,"240":1,"243":1}}],["rendered",{"2":{"115":1}}],["returns",{"2":{"129":1}}],["retrieves",{"2":{"223":1,"329":1}}],["retrieve",{"2":{"175":1}}],["retrieved",{"2":{"18":1,"214":1,"318":1,"321":1}}],["retrieval",{"0":{"214":1},"2":{"17":1,"203":1,"208":1,"214":1,"218":1,"222":1,"304":1,"305":3,"314":2,"315":1,"316":1,"338":1}}],["rebuild",{"0":{"219":1},"2":{"121":1,"219":3,"314":1,"325":1}}],["referencing",{"2":{"239":1}}],["reference",{"0":{"107":1,"108":1,"109":1,"227":1,"274":1,"311":1},"1":{"275":1,"276":1}}],["refresh",{"2":{"174":1,"184":1,"193":1,"228":1,"301":1}}],["refine",{"0":{"90":1},"2":{"83":1,"106":1,"110":1}}],["reordering",{"0":{"92":1},"2":{"92":1}}],["reorder",{"2":{"90":1}}],["reload",{"2":{"174":1,"228":1}}],["relate",{"0":{"246":1}}],["related",{"0":{"111":1},"2":{"34":1,"152":1,"285":1}}],["relative",{"2":{"245":1}}],["relationships",{"2":{"158":1}}],["relationship",{"0":{"131":1}}],["relevant",{"2":{"126":1,"193":1,"212":1,"214":1}}],["release",{"2":{"41":2,"307":2,"313":1}}],["relying",{"2":{"120":1}}],["relies",{"2":{"34":1,"208":1}}],["regardless",{"2":{"56":1,"62":1,"86":1}}],["registry",{"2":{"309":2,"311":2}}],["registration",{"2":{"33":1}}],["register",{"2":{"35":1,"43":1,"230":1}}],["regular",{"2":{"6":1}}],["resolve",{"2":{"272":1}}],["resolves",{"2":{"257":1}}],["resource",{"0":{"276":1},"2":{"270":4}}],["resources",{"0":{"47":1,"58":1,"75":1},"2":{"106":1,"149":1,"194":1}}],["research",{"2":{"249":1,"256":1}}],["resetting",{"2":{"238":1}}],["resets",{"2":{"162":1,"235":1}}],["reset",{"2":{"28":1,"54":1,"157":1,"278":1}}],["rest",{"2":{"231":1}}],["restoring",{"0":{"157":1}}],["restore",{"0":{"162":1},"2":{"155":1,"157":1,"162":1}}],["restricted",{"2":{"94":1}}],["restrict",{"2":{"91":1,"93":1,"218":1}}],["results",{"2":{"120":1,"225":1,"232":1,"246":1,"254":2,"305":1}}],["resulting",{"2":{"90":1}}],["result",{"2":{"83":1,"110":1,"129":1,"132":1,"183":1,"231":1,"282":1}}],["response",{"2":{"183":1,"254":1}}],["responses",{"2":{"9":1,"26":1,"46":1,"57":1,"59":1,"63":1,"69":1,"74":1,"80":1,"81":1,"107":1,"198":2}}],["respond",{"2":{"42":1,"62":1,"171":1}}],["repository",{"2":{"307":1}}],["reports",{"2":{"153":1,"171":1,"224":1}}],["reporting",{"2":{"107":1}}],["repeatedly",{"2":{"268":1}}],["represent",{"2":{"49":1,"242":1}}],["reproducible",{"2":{"16":1}}],["replace",{"2":{"125":1}}],["replacing",{"2":{"124":1}}],["reply",{"2":{"25":1,"48":1,"68":1,"236":1,"237":1}}],["replies",{"2":{"22":1,"26":1,"33":1,"49":1,"51":1,"52":1,"63":2,"69":1,"137":1}}],["removing",{"2":{"140":1}}],["removes",{"2":{"244":1,"263":1}}],["remove",{"2":{"113":1,"118":1,"145":1,"149":1,"158":1,"175":1,"184":1,"191":1,"217":1,"218":1,"244":1,"264":1,"319":1}}],["remote",{"0":{"190":1},"2":{"105":1,"190":2}}],["remains",{"2":{"17":1}}],["remember",{"2":{"14":1,"19":1,"179":1,"212":1}}],["re",{"2":{"16":1,"219":2,"264":1}}],["recurring",{"2":{"181":1,"224":1,"233":1}}],["recursive",{"2":{"175":1}}],["recipient",{"2":{"170":1}}],["recreating",{"2":{"154":1,"162":1}}],["recreate",{"2":{"152":1}}],["recent",{"2":{"109":1,"276":1,"284":1}}],["receive",{"2":{"39":1,"40":2,"46":1,"164":1}}],["receives",{"2":{"25":1,"68":1,"185":1,"232":1}}],["receiving",{"2":{"35":1,"73":1}}],["records",{"2":{"125":1,"184":1,"236":1}}],["recommended",{"0":{"210":1,"268":1,"307":1},"2":{"90":1,"249":1,"303":1,"308":1,"327":1}}],["recognition",{"2":{"56":1,"62":1}}],["recognized",{"2":{"3":1}}],["recalls",{"2":{"5":1}}],["reasoning",{"2":{"105":1,"107":4,"194":1,"203":1,"204":1,"205":4,"287":2}}],["reached",{"2":{"232":1}}],["reach",{"2":{"65":1}}],["reachable",{"2":{"7":1,"11":1,"220":1}}],["reaction",{"2":{"51":1}}],["reactions",{"2":{"33":1,"52":1,"137":1}}],["reads",{"2":{"245":1}}],["reading",{"2":{"115":1}}],["ready",{"2":{"33":1,"41":1}}],["read",{"2":{"4":1,"30":1,"48":1,"49":1,"169":1,"177":1,"179":1,"198":1,"232":1,"236":1,"245":1,"273":1,"281":1,"296":4,"343":1,"344":1,"345":1,"348":1,"350":1}}],["realized",{"2":{"14":1}}],["reality",{"2":{"13":1}}],["real",{"0":{"248":1},"2":{"3":2,"13":2,"14":4,"19":1,"67":1,"74":1,"120":1,"149":1,"150":1,"153":1,"219":1,"236":1,"238":1,"247":1,"254":1}}],["f",{"2":{"309":2,"312":1}}],["fssl",{"2":{"307":6}}],["fs",{"0":{"296":1},"2":{"276":1,"296":5}}],["flask",{"2":{"305":1}}],["flags",{"2":{"204":1,"205":1}}],["flexible",{"2":{"233":1}}],["flow",{"0":{"35":1,"138":1,"232":1,"250":1,"331":1,"349":1},"1":{"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"251":1,"252":1},"2":{"107":2,"137":2,"142":1,"191":1,"200":1,"202":1,"209":1}}],["flows",{"2":{"10":1}}],["found",{"2":{"257":1}}],["focus",{"2":{"234":1}}],["focused",{"2":{"33":1,"249":1,"268":1}}],["folders",{"2":{"175":1}}],["folder",{"2":{"174":1,"175":1}}],["follow",{"2":{"60":1,"270":1,"279":1}}],["following",{"2":{"33":1,"39":1,"116":1,"251":1,"317":1,"322":1,"330":1,"334":1,"339":1}}],["footprint",{"2":{"123":1,"214":1,"298":1}}],["force",{"2":{"54":1,"210":1,"238":2,"278":2}}],["forcing",{"2":{"14":1}}],["forward",{"2":{"19":1}}],["format",{"2":{"209":1,"311":1,"345":2,"347":1,"348":1,"349":1}}],["formats",{"2":{"177":1}}],["formatting",{"2":{"55":1,"57":1,"59":1}}],["formatted",{"2":{"46":1}}],["forms",{"2":{"114":1,"115":1,"238":1,"272":1,"278":1}}],["form",{"2":{"13":1,"14":1,"93":1,"106":1,"197":1,"200":1,"201":1,"252":2}}],["for",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"3":2,"8":4,"9":3,"10":1,"14":2,"16":1,"17":1,"18":1,"20":1,"22":3,"23":2,"24":1,"32":1,"33":8,"35":1,"39":2,"41":1,"43":1,"46":2,"48":1,"49":4,"51":1,"57":2,"60":2,"63":1,"64":2,"69":1,"74":1,"81":2,"83":1,"86":3,"88":1,"93":1,"94":6,"97":1,"98":1,"100":1,"103":1,"105":2,"106":3,"107":4,"108":1,"109":1,"110":2,"111":2,"113":1,"115":2,"116":1,"120":1,"121":2,"124":1,"125":1,"126":1,"127":1,"129":1,"130":1,"132":1,"135":1,"137":2,"142":1,"143":1,"144":2,"150":2,"151":1,"154":1,"155":1,"156":1,"159":1,"164":1,"167":2,"171":1,"175":1,"180":1,"181":1,"187":1,"189":2,"190":1,"191":1,"192":1,"196":1,"198":3,"200":1,"203":2,"204":1,"206":1,"208":2,"210":4,"218":1,"220":1,"221":1,"222":1,"224":1,"226":3,"228":1,"233":2,"238":1,"242":2,"245":2,"246":2,"247":1,"249":2,"251":2,"257":1,"258":1,"262":1,"263":1,"266":1,"268":1,"269":1,"270":2,"271":2,"272":3,"278":3,"279":1,"281":3,"282":1,"283":1,"285":1,"292":1,"294":1,"298":1,"299":1,"304":3,"305":3,"307":3,"309":1,"313":1,"317":1,"318":1,"325":1,"329":1,"333":1,"334":1,"335":1,"337":1,"339":1,"340":3,"342":1,"343":1}}],["future",{"2":{"125":1,"132":1,"222":1}}],["full",{"2":{"32":1,"46":1,"57":1,"74":1,"81":1,"191":1}}],["fully",{"2":{"16":2,"186":1,"267":1,"330":1}}],["furthermore",{"2":{"20":1}}],["friendly",{"2":{"197":1,"204":1,"251":1}}],["free",{"2":{"343":1,"350":1}}],["freely",{"2":{"18":1}}],["fresh",{"2":{"78":1,"162":1,"235":1,"238":1,"240":1,"269":1,"278":1}}],["frontend",{"2":{"311":1}}],["frontmatter",{"2":{"256":1}}],["frontier",{"2":{"17":1,"20":1}}],["from",{"0":{"128":1,"129":1,"257":1},"2":{"7":1,"10":1,"11":1,"14":1,"35":2,"43":1,"63":1,"64":1,"65":1,"67":1,"68":1,"78":1,"82":1,"83":2,"85":1,"87":1,"88":1,"91":1,"99":2,"103":1,"107":3,"108":2,"110":1,"116":1,"117":1,"126":1,"136":1,"139":1,"148":1,"151":1,"161":1,"165":1,"166":1,"167":1,"168":1,"172":1,"175":2,"182":2,"187":2,"188":1,"192":1,"193":1,"195":2,"197":1,"201":1,"207":1,"209":2,"213":1,"214":1,"215":1,"216":2,"218":1,"219":2,"234":1,"236":1,"238":1,"239":1,"245":1,"246":1,"249":1,"251":1,"252":1,"255":2,"257":3,"264":1,"265":2,"267":1,"268":1,"298":1,"305":1,"307":2,"314":1,"316":1,"318":1,"325":2,"328":1,"331":2,"335":1,"340":1,"348":2,"349":1}}],["false",{"2":{"287":2,"313":1}}],["fallback",{"2":{"263":2,"264":1}}],["falls",{"2":{"107":1}}],["fail",{"2":{"308":1}}],["failure",{"2":{"130":1}}],["failed",{"2":{"109":1,"130":1,"183":1}}],["favorite",{"2":{"33":1,"134":1}}],["fastest",{"2":{"271":1,"278":1}}],["faster",{"2":{"19":1}}],["fast",{"2":{"14":1,"269":1,"305":1}}],["familiar",{"2":{"13":1,"173":1}}],["factor",{"2":{"13":1,"117":1}}],["facts",{"2":{"5":1}}],["facing",{"2":{"6":1,"7":1,"242":1}}],["few",{"2":{"106":1,"272":1}}],["featuring",{"2":{"59":1}}],["feature",{"0":{"328":1},"2":{"33":1,"132":1,"180":1,"204":1,"208":1,"219":1,"233":1}}],["features",{"0":{"18":1,"26":1,"32":1,"46":1,"52":1,"57":1,"63":1,"69":1,"74":1,"81":1,"246":1},"2":{"46":1,"107":1,"132":1,"205":1,"233":1}}],["federated",{"2":{"33":1}}],["feb",{"2":{"21":1}}],["feedback",{"2":{"57":1,"81":1,"149":1}}],["feed",{"2":{"16":1}}],["feels",{"2":{"20":1}}],["feeling",{"2":{"14":1}}],["feel",{"2":{"13":1,"14":2,"237":1}}],["fetch",{"2":{"8":1,"35":1,"78":1,"305":1,"307":1}}],["feishu",{"0":{"36":1,"37":1,"141":1,"239":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1},"2":{"1":1,"7":1,"18":1,"33":1,"36":1,"37":1,"38":1,"40":3,"41":1,"105":1,"137":2,"141":3,"326":1}}],["fixed",{"2":{"233":1}}],["fixes",{"2":{"14":1}}],["fit",{"2":{"137":1,"200":1}}],["fired",{"2":{"226":1}}],["fires",{"2":{"225":1,"232":1,"236":1}}],["firefox",{"2":{"117":1,"121":3,"313":1}}],["first",{"2":{"14":1,"15":1,"19":2,"48":1,"88":2,"92":1,"106":1,"143":1,"227":1,"310":1}}],["fields",{"0":{"140":1,"226":1},"2":{"44":1,"66":1,"72":1,"93":1,"126":1,"130":1,"139":1,"167":1,"197":1,"204":1,"227":1,"245":1,"317":1,"334":1,"339":1}}],["field",{"2":{"40":1,"44":1,"61":1,"72":1,"80":1,"107":1,"108":1,"109":1,"111":1,"116":1,"117":1,"126":1,"140":1,"182":1,"189":1,"190":1,"197":1,"204":1,"208":2,"213":1,"226":1,"227":1,"318":1,"335":1,"340":1,"345":1}}],["finds",{"2":{"214":1,"258":1}}],["find",{"2":{"119":1,"157":1,"184":1,"192":1,"253":1,"324":1,"336":1,"341":1,"346":1}}],["fine",{"2":{"93":1,"110":1}}],["final",{"2":{"35":1}}],["finished",{"2":{"14":1,"130":1}}],["filter",{"2":{"184":1,"217":1,"240":1}}],["filling",{"2":{"115":1}}],["fill",{"2":{"24":1,"40":1,"41":1,"44":1,"66":1,"72":1,"103":1,"114":1,"116":1,"120":1,"139":1,"167":1,"192":1,"197":1,"251":1,"261":1,"301":1,"317":1,"334":1,"339":1}}],["fileviewer",{"2":{"176":1}}],["filemanager",{"2":{"173":1}}],["file",{"2":{"8":1,"105":1,"149":1,"161":1,"173":1,"174":1,"175":2,"177":2,"178":2,"192":2,"214":1,"232":1,"256":2,"261":1,"296":1,"308":1,"311":1,"313":1,"315":1,"321":1,"330":1}}],["files",{"0":{"172":1,"175":1,"177":1,"179":1},"1":{"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1},"2":{"4":1,"10":1,"17":1,"18":1,"19":1,"30":1,"32":1,"46":1,"57":1,"63":2,"105":2,"113":1,"147":1,"153":1,"172":1,"174":1,"175":2,"176":1,"179":2,"276":1}}],["filesystem",{"0":{"293":1},"1":{"294":1,"295":1,"296":1},"2":{"4":1,"105":1,"146":1,"160":1,"161":1,"162":1,"172":2,"177":1,"181":1,"189":1,"296":1}}],["five",{"2":{"6":1,"227":1,"236":1}}],["uuid",{"2":{"287":2}}],["utc",{"2":{"117":1,"227":1,"311":1}}],["url",{"2":{"24":1,"30":2,"35":1,"40":4,"44":2,"49":1,"50":1,"65":1,"66":1,"67":1,"72":1,"103":1,"141":2,"143":2,"144":1,"190":1,"196":1,"197":1,"201":1,"251":1,"310":1,"311":2,"322":2,"323":1,"335":1,"340":2}}],["upstream",{"2":{"195":1,"196":1,"202":1,"204":1}}],["updating",{"2":{"154":1}}],["updates",{"2":{"287":1}}],["updated",{"2":{"163":1,"219":1}}],["update",{"2":{"117":1,"118":1,"145":2,"175":1,"252":1,"262":1,"273":1,"276":1,"287":4,"294":2,"312":1,"319":1}}],["upload",{"2":{"52":1,"175":1}}],["up",{"2":{"18":1,"54":1,"106":1,"181":1,"221":1,"259":1,"279":1,"305":1,"308":2,"309":1,"312":2,"322":1,"323":1,"327":1,"351":1}}],["upgradable",{"2":{"17":1}}],["uncomment",{"2":{"309":1}}],["uncomfortable",{"2":{"16":1}}],["unread",{"2":{"230":1,"231":2}}],["unresolvable",{"2":{"153":1}}],["unlike",{"2":{"316":1}}],["unlimited",{"2":{"226":1,"233":1}}],["unless",{"2":{"83":1,"85":1}}],["unsure",{"2":{"94":1,"268":1}}],["until",{"2":{"83":1,"259":1}}],["unique",{"2":{"60":1,"150":1,"223":1}}],["unified",{"0":{"135":1},"2":{"7":1}}],["underlying",{"2":{"305":1}}],["under",{"2":{"15":1,"151":1,"153":1,"195":1,"202":1,"257":2,"348":1}}],["understanding",{"2":{"163":1}}],["understands",{"2":{"63":1}}],["understand",{"2":{"11":1,"126":1,"133":1,"327":1}}],["usually",{"2":{"153":1,"195":1,"259":2}}],["us",{"2":{"117":1,"345":1}}],["using",{"0":{"325":1},"2":{"43":1,"102":1,"134":1,"141":1,"142":1,"143":1,"144":1,"149":1,"213":1,"224":1,"225":1,"231":1,"232":1,"238":1,"282":1,"305":2,"307":1,"321":1,"331":1,"346":1}}],["usage",{"0":{"221":1,"283":1,"337":1,"342":1},"2":{"6":1,"124":1,"128":1,"130":2,"206":2,"221":1,"245":1,"255":1,"256":1,"271":1,"276":2,"281":2,"282":1,"283":5,"284":1,"285":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"294":1,"295":1,"296":1,"298":1}}],["useful",{"2":{"86":2,"94":1,"128":1,"130":1,"155":1,"162":1,"181":1,"201":1,"218":1,"219":1,"224":1,"239":1,"262":1,"267":1,"279":1,"282":1}}],["used",{"2":{"6":1,"107":6,"109":1,"126":1,"128":1,"131":1,"150":1,"182":1,"197":1,"203":1,"206":1,"208":1,"223":1,"245":2,"258":1,"266":2,"281":1,"318":1,"333":1}}],["uses",{"2":{"6":1,"7":1,"22":1,"34":1,"50":1,"72":1,"82":1,"107":1,"126":1,"197":1,"200":1,"201":2,"205":1,"206":1,"227":2,"235":1,"236":1,"256":1,"305":1,"316":1,"329":1,"343":1,"350":1}}],["use",{"2":{"4":1,"8":1,"18":1,"19":1,"41":1,"49":1,"56":1,"62":1,"65":1,"66":1,"67":1,"86":1,"101":1,"106":3,"110":2,"114":2,"115":1,"118":1,"119":1,"120":1,"132":2,"153":1,"158":1,"171":1,"175":1,"179":1,"185":1,"192":1,"193":2,"194":1,"195":1,"198":1,"199":1,"203":1,"208":1,"214":1,"220":1,"222":2,"233":2,"238":1,"242":1,"248":1,"252":1,"256":2,"262":1,"264":1,"265":1,"268":2,"270":1,"278":2,"281":2,"298":1,"305":2,"307":4,"309":1,"313":2,"315":1,"319":1,"324":1,"337":1,"342":1,"347":1}}],["username",{"2":{"60":2,"167":1,"311":1}}],["username>",{"2":{"43":1}}],["users",{"0":{"97":1,"98":1},"2":{"3":1,"17":1,"23":1,"36":1,"46":1,"51":2,"53":1,"70":1,"73":1,"74":1,"76":1,"79":1,"81":1,"82":1,"86":2,"99":1,"103":1,"111":1,"151":1,"237":1,"273":1,"309":1}}],["user",{"0":{"3":1},"2":{"6":1,"7":1,"14":1,"19":1,"43":3,"44":2,"45":1,"86":1,"93":1,"100":1,"101":1,"103":1,"107":1,"117":2,"154":1,"171":1,"194":1,"201":1,"214":1,"234":1,"236":2,"242":2,"254":1,"282":1,"308":1,"311":1,"312":1}}],["ui",{"0":{"10":1,"240":1,"260":1},"1":{"261":1,"262":1,"263":1,"264":1,"265":1},"2":{"1":1,"6":1,"10":1,"24":1,"31":1,"44":1,"49":1,"50":1,"55":1,"56":1,"61":1,"62":1,"66":1,"72":1,"77":1,"117":1,"131":1,"151":1,"176":1,"195":1,"204":1,"206":1,"237":1,"238":2,"240":1,"242":1,"265":2,"269":1,"278":2,"300":1,"301":1,"303":1,"304":1,"310":1}}],["sslmode",{"2":{"311":1}}],["sse",{"0":{"190":1},"2":{"149":1,"190":1}}],["snapshotter",{"2":{"311":1}}],["snapshot",{"0":{"156":1,"157":1},"2":{"156":2,"157":1,"158":1}}],["snapshots",{"0":{"155":1,"158":1},"1":{"156":1,"157":1,"158":1},"2":{"105":1,"155":1,"158":1}}],["switches",{"2":{"288":1,"289":1,"290":1,"291":1}}],["switching",{"2":{"219":1,"239":1,"269":1}}],["switch",{"2":{"145":1,"240":1,"276":4,"300":1,"301":1}}],["shipped",{"2":{"314":1}}],["sh",{"2":{"307":12}}],["shut",{"2":{"149":1}}],["shell",{"2":{"112":1}}],["short",{"2":{"256":1,"268":1}}],["shorten",{"2":{"222":1}}],["shorter",{"2":{"124":1}}],["shortcut",{"2":{"83":1}}],["showing",{"2":{"170":1}}],["shows",{"2":{"128":1,"154":1,"201":1,"220":1,"228":1,"242":1,"267":1,"281":1,"282":1,"283":1,"284":1,"285":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1}}],["show",{"2":{"55":1,"80":1,"206":1,"246":1,"259":1,"266":1,"270":1,"271":3,"275":1,"276":2,"281":3}}],["shown",{"2":{"54":1,"117":1,"149":1,"204":1,"242":1}}],["should",{"2":{"49":1,"62":1,"94":2,"109":1,"114":1,"126":1,"182":1,"185":1,"246":1}}],["shanghai",{"2":{"117":1}}],["shape",{"2":{"107":1}}],["shadowed",{"2":{"10":1,"258":1,"259":1,"266":1,"328":1}}],["share",{"2":{"19":1}}],["shared",{"2":{"1":1,"3":1,"94":1,"246":1}}],["sharing",{"2":{"3":1,"17":1,"19":1,"159":1,"192":1}}],["synthesize",{"2":{"346":1,"348":2,"349":1}}],["synthesized",{"2":{"254":1}}],["synthesis",{"2":{"198":1,"343":1,"347":1,"349":1}}],["syntax",{"2":{"177":1,"227":1}}],["synchronous",{"2":{"129":1,"237":1}}],["sync",{"2":{"44":1}}],["system",{"2":{"7":1,"9":1,"10":1,"13":1,"82":1,"88":1,"103":1,"107":2,"146":1,"185":1,"212":1,"220":1,"236":1,"271":1,"330":1,"348":1}}],["spoken",{"2":{"348":1}}],["sparse",{"0":{"305":1,"316":1,"322":1},"2":{"214":1,"219":1,"304":4,"305":9,"307":1,"308":2,"311":2,"315":4,"316":5,"318":2,"322":5,"330":2}}],["space",{"2":{"154":1}}],["spaces",{"2":{"94":1,"256":1,"270":1}}],["split",{"2":{"19":1,"106":1}}],["speak",{"2":{"246":1}}],["speaks",{"2":{"236":1,"237":1}}],["speaker",{"2":{"14":1}}],["speed",{"2":{"209":1,"345":2,"347":1,"348":1,"349":1}}],["speech",{"0":{"209":1},"2":{"9":2,"107":4,"195":3,"198":4,"203":3,"209":3,"210":1,"211":2,"343":1,"346":1,"348":2,"349":1}}],["spec",{"2":{"153":1}}],["specs",{"2":{"153":1}}],["specify",{"2":{"251":1}}],["specifically",{"2":{"249":1}}],["specification",{"2":{"47":1}}],["specific",{"0":{"99":1},"2":{"82":1,"86":1,"91":5,"93":2,"100":2,"111":1,"121":1,"165":1,"192":1,"216":1,"223":1,"225":1,"233":1,"234":1,"248":1,"251":1,"258":1,"264":1,"270":1,"307":1,"348":1}}],["specified",{"2":{"18":1}}],["special",{"0":{"141":1,"142":1,"143":1,"144":1},"2":{"185":1}}],["specialized",{"2":{"102":1,"104":1}}],["scale",{"2":{"117":1}}],["scans",{"2":{"257":1}}],["scan",{"0":{"78":1},"2":{"76":1,"78":2,"142":1}}],["schema",{"2":{"111":1}}],["schedules",{"0":{"228":1,"229":1},"1":{"230":1,"231":1},"2":{"228":1,"229":1,"231":1}}],["scheduled",{"0":{"181":1,"224":1},"1":{"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1},"2":{"18":1,"105":1,"106":1,"181":1,"224":1,"236":1,"246":1,"276":1,"294":1}}],["schedule",{"0":{"226":1,"233":1,"294":1},"2":{"6":1,"18":1,"105":1,"180":1,"225":2,"226":3,"228":1,"230":4,"231":1,"232":4,"233":2,"236":1,"240":1,"246":1,"270":3,"272":1,"276":1,"294":10}}],["scoping",{"2":{"101":1,"340":2}}],["scoped",{"0":{"100":1},"2":{"235":1,"328":1}}],["scope",{"0":{"93":1},"2":{"91":1,"93":2,"100":1,"132":1,"222":1,"282":1}}],["scopes",{"2":{"30":1}}],["scenarios",{"2":{"33":1,"64":1,"137":1}}],["scratch",{"2":{"219":1}}],["scripts",{"2":{"147":1}}],["script",{"2":{"121":1,"307":2,"309":1}}],["scroll",{"2":{"29":1,"113":1,"120":1}}],["screenshot",{"2":{"120":1}}],["screenshots",{"2":{"114":1,"115":1}}],["screen",{"2":{"14":1}}],["slow",{"2":{"307":1}}],["sludge",{"2":{"14":1}}],["slash",{"0":{"129":1,"269":1},"1":{"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1},"2":{"6":1,"10":1,"11":1,"32":1,"101":1,"131":1,"133":2,"238":1,"269":2,"271":1,"272":2,"275":1,"327":1}}],["saas",{"2":{"330":2,"332":2,"333":1,"338":1}}],["saving",{"2":{"119":1,"155":1}}],["saves",{"2":{"78":1}}],["saved",{"2":{"66":1}}],["save",{"2":{"24":1,"29":1,"31":1,"35":1,"40":2,"44":1,"50":1,"54":1,"55":1,"61":1,"66":1,"72":1,"91":1,"92":1,"119":1,"143":1,"144":1,"145":2,"149":1,"160":1,"177":2,"197":1,"202":1,"213":1,"253":1,"261":1,"301":1,"324":1,"336":1,"341":1,"346":1,"349":1}}],["safely",{"2":{"155":1,"205":1,"265":1}}],["safe",{"2":{"16":1,"66":1}}],["say",{"2":{"14":1}}],["same",{"2":{"3":2,"14":1,"67":1,"245":1,"257":1,"258":1,"259":2,"263":1,"265":1}}],["smtp",{"2":{"33":1,"165":1,"167":1}}],["smell",{"2":{"14":1}}],["smoother",{"2":{"14":1}}],["smaller",{"2":{"123":1}}],["small",{"2":{"14":1,"268":1}}],["smarter",{"2":{"13":1}}],["s",{"0":{"106":1},"2":{"13":1,"14":6,"16":1,"20":1,"22":1,"31":1,"32":1,"35":1,"40":1,"44":3,"45":1,"53":1,"55":1,"61":1,"70":1,"72":2,"77":1,"82":1,"85":1,"89":1,"103":1,"105":2,"106":1,"107":2,"112":1,"121":1,"122":1,"124":1,"126":2,"131":2,"132":1,"136":1,"141":1,"145":2,"147":1,"148":1,"150":2,"152":1,"155":2,"160":1,"161":1,"162":1,"163":1,"168":1,"169":1,"170":2,"175":2,"176":1,"177":2,"179":1,"183":1,"185":1,"189":1,"191":2,"200":1,"212":1,"213":1,"214":1,"215":1,"216":2,"219":1,"226":1,"227":1,"235":1,"236":4,"237":1,"239":1,"245":1,"254":1,"255":2,"265":1,"272":1,"288":1,"294":1,"299":1,"300":1,"301":1,"307":2,"314":1,"325":1,"331":2,"343":1,"346":1,"349":2,"350":1}}],["silently",{"2":{"307":1}}],["silent",{"2":{"236":1,"237":1,"307":1}}],["single",{"2":{"123":1,"135":1,"214":1}}],["similar",{"2":{"132":1}}],["simultaneously",{"2":{"112":1,"135":1}}],["simple",{"2":{"18":1,"76":1,"256":1}}],["significantly",{"2":{"305":1,"316":1}}],["sign",{"2":{"49":1}}],["sites",{"2":{"117":1}}],["sit",{"2":{"13":1,"14":1}}],["sidebar",{"2":{"28":1,"35":1,"37":1,"103":1,"116":1,"117":1,"166":1,"167":1,"197":1,"240":1,"242":1,"249":1,"251":1,"252":1,"331":1,"349":1}}],["side",{"2":{"10":1,"68":1,"210":1}}],["size",{"2":{"5":1,"114":1,"126":1,"208":1,"328":1}}],["skill",{"0":{"256":1,"258":1,"261":1,"262":1,"263":1,"295":1,"300":1},"1":{"259":1},"2":{"8":1,"10":1,"105":1,"256":7,"257":6,"258":5,"259":4,"261":1,"262":1,"263":3,"264":2,"265":4,"267":3,"276":1,"295":2,"300":2}}],["skills",{"0":{"8":1,"255":1,"257":1,"260":1,"266":1,"267":1},"1":{"256":1,"257":1,"258":1,"259":1,"260":1,"261":2,"262":2,"263":2,"264":2,"265":2,"266":1,"267":1,"268":1},"2":{"6":1,"8":1,"11":1,"18":1,"105":1,"128":1,"179":1,"181":1,"185":1,"225":1,"245":2,"255":2,"257":10,"260":1,"261":1,"262":1,"265":1,"266":4,"267":3,"268":3,"276":1,"281":1,"295":1,"299":1,"300":2,"302":1,"328":3}}],["sudo",{"2":{"307":6,"308":1,"312":1}}],["suffixes",{"2":{"272":1}}],["sun=0",{"2":{"227":1}}],["summary",{"2":{"124":1,"130":3,"183":1,"226":1,"230":1,"245":1,"270":1,"276":1,"283":2,"311":1}}],["summarizing",{"2":{"123":1}}],["summarizes",{"2":{"132":1,"222":1}}],["summarize",{"2":{"109":1,"126":1,"131":1,"226":1,"231":2,"294":1,"298":1}}],["successful",{"2":{"109":1}}],["successfully",{"2":{"62":1,"130":1,"170":1,"183":1}}],["succeeds",{"2":{"79":1}}],["such",{"2":{"6":1,"10":1,"103":1,"105":1,"107":2,"114":1,"117":2,"120":1,"153":1,"196":2,"197":1,"204":2,"205":1,"208":1,"210":1,"218":1,"223":1,"238":1,"256":1,"257":2,"269":1,"270":2,"273":1,"278":1,"287":1}}],["suited",{"2":{"51":1}}],["surface",{"2":{"271":1,"327":1}}],["surfaced",{"2":{"245":1}}],["sure",{"2":{"49":1,"67":1,"213":1}}],["survive",{"2":{"13":1}}],["subdirectory",{"2":{"257":1}}],["subsequent",{"2":{"239":1}}],["subscriptions",{"2":{"40":1}}],["sub",{"2":{"94":1}}],["subject",{"0":{"86":1},"2":{"86":1,"87":2,"88":1,"91":1,"99":1,"170":2}}],["subjects",{"2":{"85":1,"86":1,"88":1,"97":1,"98":1}}],["submitting",{"2":{"115":1}}],["submit",{"2":{"41":1}}],["subagents",{"2":{"8":1}}],["subagent",{"2":{"6":1,"236":3,"240":1,"246":2}}],["sustainable",{"2":{"19":1}}],["support",{"2":{"19":1,"32":1,"33":2,"46":1,"55":1,"57":2,"59":1,"63":1,"74":1,"81":2,"137":2,"153":1,"175":1,"269":1,"272":1}}],["supported",{"0":{"26":1,"32":1,"46":1,"52":1,"57":1,"63":1,"69":1,"74":1,"81":1,"136":1,"249":1},"1":{"137":1},"2":{"10":1,"25":1,"59":1,"238":3,"249":1,"278":2,"287":1,"331":1}}],["supports",{"2":{"9":1,"18":1,"22":1,"33":1,"34":1,"36":1,"107":1,"137":1,"159":1,"177":1,"186":1,"191":1,"198":1,"205":1,"305":1,"314":1,"316":1,"330":2,"343":1,"348":1}}],["supermarket",{"0":{"8":1,"267":1,"299":1},"1":{"300":1,"301":1,"302":1},"2":{"8":1,"11":1,"187":1,"255":1,"267":1,"268":1,"299":1,"300":1,"301":1,"302":1,"328":1}}],["serper",{"2":{"249":1}}],["server",{"0":{"30":1},"2":{"29":1,"30":1,"48":1,"165":1,"189":1,"190":3,"191":1,"193":2,"194":2,"227":1,"303":1,"304":2,"311":4}}],["servers",{"2":{"8":1,"27":1,"33":1,"137":1,"167":1,"191":1,"328":1}}],["service",{"0":{"304":1,"305":1},"1":{"305":1},"2":{"165":1,"166":1,"196":1,"232":1,"304":2,"305":1,"307":1,"310":1,"311":1,"315":1,"322":1,"333":1,"348":1}}],["services",{"2":{"17":1,"135":1,"186":1,"304":1,"307":1,"308":1,"310":1}}],["serving",{"2":{"17":1}}],["searxng",{"2":{"249":1,"251":1}}],["searches",{"2":{"223":1}}],["searching",{"0":{"217":1}}],["search",{"0":{"247":1,"249":1,"251":1,"253":1,"290":1},"1":{"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1},"2":{"8":2,"9":1,"15":1,"18":1,"39":1,"60":1,"91":1,"105":2,"106":1,"107":2,"120":1,"125":1,"192":1,"208":1,"210":1,"217":1,"232":1,"240":1,"247":1,"248":2,"249":6,"251":4,"253":1,"254":3,"276":2,"290":4,"304":1,"305":2,"315":2,"316":1,"318":1,"325":1,"329":1,"330":1,"337":1,"342":1}}],["sent",{"2":{"170":3,"190":1,"226":1}}],["sensible",{"2":{"110":1}}],["sensitive",{"2":{"94":1}}],["sends",{"2":{"214":1,"225":1,"230":1}}],["sender",{"2":{"86":1,"88":1}}],["sending",{"2":{"35":1,"181":1,"224":1,"279":1}}],["send",{"2":{"6":1,"25":1,"30":1,"39":1,"46":1,"56":1,"60":1,"62":1,"63":2,"68":1,"73":1,"79":1,"124":1,"141":1,"164":1,"169":1,"171":1,"226":1,"231":1,"232":1,"236":1,"237":2,"239":1,"270":1,"272":1}}],["self",{"2":{"48":1,"249":1,"330":2,"332":2,"333":1}}],["selectively",{"2":{"246":1}}],["selection",{"0":{"121":1},"2":{"105":1,"121":1,"307":1}}],["selected",{"0":{"97":1},"2":{"107":2,"126":1,"131":1,"139":1,"197":1,"242":1,"245":1,"267":1,"307":1,"324":1,"347":1}}],["select",{"2":{"30":3,"31":1,"44":1,"55":1,"56":1,"61":2,"62":1,"72":1,"77":1,"91":3,"117":1,"118":1,"119":1,"120":1,"139":1,"161":1,"169":1,"175":1,"192":1,"202":1,"213":1,"216":1,"228":1,"252":1,"253":2,"300":1,"301":1,"317":1,"318":1,"319":1,"324":1,"334":1,"335":1,"336":1,"339":1,"340":1,"341":1,"344":1,"346":1,"348":1,"349":2}}],["sees",{"2":{"266":1}}],["seen",{"2":{"91":1}}],["see",{"2":{"35":1,"103":1,"109":2,"122":1,"123":1,"131":1,"133":3,"174":1,"178":1,"211":2,"214":1,"223":1,"237":1,"246":1,"278":1,"298":1,"304":1,"305":1,"337":1,"342":1}}],["security",{"2":{"146":1}}],["securely",{"2":{"28":1,"54":1,"191":1}}],["seconds",{"2":{"44":1}}],["secrets",{"2":{"35":1,"140":1,"301":1}}],["secret",{"2":{"23":1,"24":1,"34":1,"37":1,"40":1,"43":1,"60":1,"65":1,"66":1,"71":1,"72":1,"144":1,"307":2,"308":1,"311":1,"335":1,"340":1}}],["sections",{"2":{"311":1,"322":1}}],["section",{"2":{"21":1,"29":1,"193":1,"311":1,"323":1}}],["semantic",{"2":{"18":1,"208":1,"305":1,"314":1,"315":1,"330":1}}],["setting",{"2":{"111":1,"154":1}}],["settings",{"0":{"29":1,"80":1,"106":1,"111":1,"287":1},"2":{"10":1,"18":1,"34":1,"37":1,"40":1,"55":1,"105":2,"106":2,"107":1,"111":2,"117":1,"143":1,"152":1,"154":1,"197":1,"209":1,"211":1,"219":1,"223":1,"251":1,"252":1,"269":1,"270":2,"276":2,"287":5,"307":1,"318":1,"319":1,"323":1,"324":1,"331":1,"335":1,"340":1,"345":1,"348":2}}],["setups",{"2":{"111":1,"257":1}}],["setup",{"0":{"35":1,"325":1},"2":{"11":1,"24":1,"33":1,"76":1,"110":1,"121":1,"122":1,"144":1,"315":1,"327":1}}],["set",{"2":{"8":1,"18":1,"91":1,"96":1,"97":1,"98":1,"99":1,"100":1,"106":1,"107":1,"169":1,"181":1,"187":1,"218":1,"232":1,"235":1,"266":1,"270":1,"271":1,"273":1,"288":8,"289":2,"290":2,"291":2,"308":1,"309":1,"313":1,"327":1,"351":1}}],["sessions",{"0":{"6":1,"234":1,"241":1,"242":1,"243":1,"244":1,"246":1},"1":{"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":2,"243":2,"244":2,"245":1,"246":1},"2":{"6":6,"11":1,"111":1,"133":1,"147":1,"235":2,"236":1,"238":1,"240":4,"242":2,"244":1,"246":5,"266":1,"278":2,"327":2}}],["session",{"0":{"128":1,"222":1,"236":1,"238":1,"245":1,"277":1},"1":{"237":1,"239":1,"240":1,"278":1,"279":1},"2":{"5":3,"6":2,"10":1,"105":1,"106":1,"107":2,"109":3,"123":2,"125":2,"126":3,"127":1,"128":1,"129":1,"131":3,"132":2,"133":2,"206":2,"214":2,"218":1,"222":3,"234":2,"235":3,"236":4,"237":1,"238":6,"239":3,"240":3,"242":4,"243":1,"244":1,"245":5,"246":2,"266":2,"269":2,"270":1,"276":2,"278":4,"281":4,"298":3,"328":1}}],["separately",{"2":{"195":1}}],["separated",{"2":{"9":1,"152":1}}],["separates",{"2":{"5":1}}],["separate",{"2":{"4":1,"9":1,"107":1,"144":1,"207":1,"214":1,"236":1}}],["separation",{"2":{"3":1,"209":1}}],["stdio",{"0":{"189":1},"2":{"105":1}}],["steps",{"0":{"122":1,"133":1,"211":1,"332":1,"351":1},"2":{"165":1}}],["step",{"0":{"23":1,"24":1,"25":1,"28":1,"29":1,"30":1,"31":1,"37":1,"38":1,"39":1,"40":1,"41":1,"43":1,"44":1,"45":1,"49":1,"50":1,"51":1,"54":1,"55":1,"56":1,"60":1,"61":1,"62":1,"65":1,"66":1,"67":1,"68":1,"71":1,"72":1,"73":1,"77":1,"78":1,"79":1},"2":{"35":1,"106":1}}],["studio",{"2":{"15":1,"19":1}}],["stopping",{"2":{"154":1}}],["stopped",{"2":{"150":1,"156":1}}],["stop",{"0":{"279":1},"2":{"105":1,"149":1,"270":1,"275":2,"312":1}}],["stops",{"2":{"14":1,"279":1}}],["stood",{"2":{"14":1}}],["stories",{"2":{"272":1}}],["storage",{"2":{"14":1,"17":1,"123":1,"221":1,"338":1}}],["story",{"0":{"14":1}}],["store",{"2":{"28":1,"147":1,"325":1}}],["stored",{"2":{"5":1,"18":2,"123":1,"132":2,"191":2,"214":1,"218":2,"221":1,"222":1,"321":1,"328":1,"335":1,"340":1}}],["stores",{"2":{"5":1,"114":1,"196":1,"201":1,"329":1}}],["style",{"2":{"14":1,"26":1,"33":1,"34":2,"51":1,"69":1,"117":1,"137":1,"198":1,"200":1,"237":1,"255":1}}],["strong",{"2":{"137":1}}],["strings",{"2":{"272":1}}],["string",{"2":{"117":1}}],["strict",{"2":{"17":1}}],["streamed",{"2":{"46":1,"74":1}}],["streaming",{"2":{"26":1,"33":1,"46":1,"52":1,"59":1,"63":1,"69":1,"74":1,"137":2,"279":1}}],["stream",{"0":{"144":1},"2":{"14":1,"22":1,"24":1,"35":1,"144":1}}],["structured",{"2":{"1":1,"171":1,"212":1,"326":1}}],["still",{"2":{"13":1,"124":2,"154":1,"206":1,"279":1}}],["stale",{"2":{"218":1}}],["stable",{"2":{"156":1,"256":1}}],["standardized",{"2":{"187":1}}],["standard",{"2":{"144":1,"189":1,"192":1,"209":1,"227":1,"236":1,"314":1}}],["stats",{"2":{"281":1}}],["statistics",{"0":{"221":1}}],["static",{"2":{"120":1}}],["states",{"0":{"258":1},"1":{"259":1},"2":{"257":1,"258":1,"328":1}}],["state",{"2":{"147":1,"155":1,"156":1,"157":1,"162":1,"258":1}}],["status",{"0":{"128":1,"130":1,"220":1,"245":1,"280":1,"281":1},"1":{"281":1,"282":1,"283":1,"284":1,"285":1},"2":{"6":1,"10":1,"107":1,"128":2,"129":1,"130":1,"131":2,"145":1,"150":1,"170":1,"181":1,"183":1,"184":1,"191":2,"206":1,"219":1,"220":2,"221":1,"222":1,"228":1,"245":2,"266":1,"269":1,"270":3,"276":2,"281":3,"312":1,"327":1}}],["staying",{"2":{"237":1}}],["stay",{"2":{"17":1,"236":1}}],["stays",{"2":{"15":1,"20":2}}],["stakes",{"2":{"14":1}}],["stack",{"2":{"11":1,"17":1,"20":1,"303":1,"304":1}}],["startup",{"2":{"310":2}}],["starts",{"2":{"110":1,"305":1}}],["starting",{"0":{"238":1},"1":{"239":1,"240":1},"2":{"83":1,"110":1,"154":1,"235":1,"308":1}}],["started",{"2":{"14":2,"130":1,"304":1}}],["start",{"0":{"11":1,"51":1,"73":1,"79":1,"83":1,"90":1,"327":1},"2":{"6":1,"35":1,"45":1,"50":1,"78":2,"83":1,"94":1,"99":1,"103":1,"105":1,"106":1,"149":1,"162":1,"187":1,"219":1,"239":1,"268":1,"307":1,"308":2,"312":1}}],["socket",{"2":{"311":1}}],["social",{"2":{"33":1,"48":1,"51":1}}],["sogou",{"2":{"249":1}}],["sonnet",{"2":{"204":1}}],["software",{"2":{"147":1,"154":1}}],["solve",{"2":{"132":1}}],["sound",{"2":{"132":1,"347":1}}],["sources",{"2":{"187":1,"257":1,"258":1,"267":1}}],["source",{"0":{"93":1},"2":{"20":1,"91":1,"93":1,"100":1,"258":3,"259":3,"263":1,"264":2,"265":1}}],["some",{"2":{"191":1,"270":1,"304":1}}],["someone",{"2":{"16":1}}],["somewhere",{"2":{"14":2}}],["something",{"2":{"13":1,"14":3}}],["so",{"2":{"3":1,"7":1,"10":1,"14":2,"16":1,"48":1,"107":1,"108":1,"109":1,"265":1,"267":1,"270":1,"305":2,"348":1}}],["ps",{"2":{"312":1}}],["p",{"2":{"294":1}}],["pm",{"2":{"227":1}}],["png",{"2":{"178":1}}],["python",{"2":{"305":1}}],["python3",{"2":{"189":1}}],["py",{"2":{"177":1}}],["pdf",{"2":{"120":1}}],["pdfs",{"2":{"115":1}}],["pipeline",{"2":{"314":1}}],["pins",{"2":{"313":1}}],["pin",{"2":{"307":1}}],["pitch",{"2":{"209":1,"345":2,"347":1,"348":1,"349":1}}],["pixel",{"2":{"117":1}}],["pixels",{"2":{"117":2}}],["picture",{"2":{"103":1}}],["pick",{"2":{"90":1,"107":1}}],["plus",{"2":{"97":1}}],["plan",{"2":{"268":1,"305":1}}],["plane",{"2":{"17":1}}],["playback",{"2":{"345":1}}],["playwright",{"2":{"115":1,"304":1}}],["playground",{"2":{"19":1}}],["placed",{"2":{"88":1,"151":1}}],["places",{"2":{"7":1}}],["plainly",{"2":{"14":1}}],["platforms",{"2":{"18":1,"24":1,"31":1,"33":1,"35":1,"40":1,"44":1,"50":1,"55":1,"59":1,"61":1,"66":1,"72":1,"77":1,"102":1,"105":1,"134":1,"136":1}}],["platform",{"0":{"67":1,"99":1,"137":1},"2":{"1":1,"23":1,"35":4,"36":1,"37":1,"53":1,"54":1,"56":1,"58":1,"62":1,"65":1,"67":2,"75":1,"78":1,"86":2,"91":1,"137":1,"139":1,"140":2,"143":1,"326":1,"327":1,"328":1,"338":1}}],["phone",{"2":{"78":2}}],["phones",{"2":{"14":1}}],["photo",{"2":{"46":1}}],["pulled",{"2":{"310":1}}],["pulls",{"2":{"307":1}}],["pull",{"2":{"149":1,"312":1}}],["purposes",{"2":{"159":1}}],["purpose",{"2":{"137":1,"203":1,"233":1}}],["public",{"2":{"48":1,"94":1,"343":1,"350":1}}],["published",{"2":{"41":1}}],["publish",{"0":{"41":1},"2":{"23":1,"49":1}}],["push",{"2":{"19":1}}],["port",{"2":{"167":1,"305":1,"311":3}}],["portal",{"2":{"28":1,"30":1,"33":1,"179":1}}],["portable",{"2":{"14":1,"16":1}}],["power",{"2":{"205":1,"206":1}}],["powered",{"2":{"115":1,"249":1}}],["powerful",{"2":{"14":1,"164":1,"249":1}}],["points",{"0":{"310":1},"2":{"200":1}}],["point",{"2":{"83":1}}],["policy",{"2":{"103":1,"110":1}}],["polite",{"2":{"14":1}}],["polling",{"2":{"44":1}}],["postgres",{"2":{"304":1,"307":2,"308":4,"311":1,"313":2}}],["postgresql",{"2":{"303":1,"304":1,"311":1,"313":1}}],["post",{"2":{"43":1,"231":1}}],["positional",{"2":{"270":1}}],["position",{"2":{"14":1}}],["parsing",{"0":{"272":1}}],["parse",{"2":{"269":1}}],["parameters",{"2":{"218":1,"251":1}}],["parallel",{"2":{"210":1}}],["parent",{"2":{"158":1,"174":1}}],["participant",{"2":{"237":1}}],["participate",{"2":{"42":1,"46":1,"74":1}}],["part",{"2":{"14":1,"265":1}}],["packaged",{"2":{"160":1}}],["package",{"2":{"147":1}}],["pattern",{"0":{"227":1},"2":{"226":1,"227":2,"228":1,"231":1,"270":1,"294":2}}],["patterns",{"2":{"83":1}}],["paths",{"2":{"150":2,"267":1,"311":1}}],["path",{"2":{"83":1,"174":1,"296":2,"311":1,"313":1,"327":1}}],["pages",{"2":{"114":1}}],["page",{"0":{"104":1},"1":{"105":1},"2":{"54":1,"61":1,"103":1,"104":1,"106":1,"113":1,"114":1,"115":1,"116":2,"119":1,"120":1,"123":1,"130":1,"136":1,"148":1,"166":1,"167":1,"168":1,"172":1,"182":1,"188":1,"191":1,"195":1,"197":1,"203":1,"214":1,"215":1,"228":1,"249":1,"251":1,"253":1,"317":1,"324":1,"331":1,"334":1,"336":1,"339":1,"341":1,"344":1,"347":1,"348":1,"349":1}}],["passes",{"2":{"126":1}}],["password=your",{"2":{"308":2}}],["password>",{"2":{"43":1}}],["password",{"2":{"43":2,"167":1,"307":2,"308":7,"311":2,"313":3}}],["pasting",{"2":{"268":1}}],["paste",{"2":{"24":1,"31":1,"40":1,"50":1,"55":1,"61":1,"67":1,"141":1}}],["past",{"2":{"13":1}}],["pairs",{"2":{"189":1}}],["paired",{"2":{"15":1}}],["paid",{"2":{"14":1}}],["panels",{"2":{"327":1}}],["panel",{"0":{"128":1,"245":1},"2":{"6":1,"128":2,"131":1,"132":1,"222":1,"245":2,"266":1}}],["pending",{"2":{"109":1,"201":1}}],["percentage",{"2":{"206":1}}],["per",{"2":{"103":1,"107":1,"152":1,"235":1,"328":1}}],["performance",{"2":{"249":1}}],["performing",{"2":{"224":1}}],["perform",{"2":{"102":1,"120":1,"149":1,"179":1,"180":1,"185":1,"194":1}}],["persistence",{"2":{"150":1}}],["persistent",{"2":{"102":1,"113":1,"326":1}}],["persist",{"2":{"92":1}}],["personalized",{"2":{"212":1}}],["personality",{"2":{"102":1,"105":1}}],["personal",{"2":{"7":1,"13":1,"14":1,"33":2,"34":1,"64":1,"76":1,"94":1,"137":3}}],["person",{"2":{"3":1}}],["permission",{"2":{"87":1,"282":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"294":1}}],["permissions",{"0":{"39":1,"273":1},"2":{"23":1,"30":1,"39":3,"169":1,"171":1}}],["permanently",{"2":{"20":1,"113":1,"145":1,"244":1}}],["periodic",{"2":{"6":1,"108":1,"180":1,"181":1,"224":1,"233":2,"236":1}}],["people",{"2":{"3":1,"16":1}}],["practical",{"2":{"256":1}}],["practice",{"2":{"1":1,"115":1,"125":1,"153":1,"237":1}}],["primarily",{"2":{"203":1,"229":1}}],["primary",{"2":{"107":1}}],["prior",{"2":{"124":1}}],["priority",{"0":{"88":1},"2":{"88":2,"92":1}}],["prioritized",{"2":{"82":1}}],["privileged",{"2":{"29":1}}],["privileges",{"2":{"14":1}}],["privacy",{"2":{"13":1,"19":1,"249":2}}],["privately",{"2":{"18":1}}],["private",{"0":{"97":1},"2":{"3":1,"16":1,"17":2,"22":1,"25":1,"26":1,"33":2,"36":1,"46":1,"64":1,"68":1,"69":2,"74":1,"81":1,"83":2,"91":1,"94":2,"99":1,"103":1,"137":2,"147":1,"238":1}}],["pre",{"2":{"305":1}}],["prefix",{"2":{"312":1}}],["prefixed",{"2":{"272":1}}],["prefilled",{"2":{"187":1,"301":1}}],["prefer",{"2":{"268":1}}],["previously",{"2":{"264":1}}],["previous",{"2":{"235":1,"239":1}}],["preview",{"2":{"130":1,"178":2,"347":1}}],["precise",{"2":{"233":1}}],["precedence",{"2":{"88":1,"258":1}}],["prerequisites",{"0":{"213":1,"306":1}}],["pressure",{"2":{"124":1}}],["present",{"2":{"322":1,"323":1}}],["presence",{"2":{"29":1}}],["preserved",{"2":{"239":1,"272":1}}],["preserves",{"2":{"124":1}}],["preserve",{"2":{"6":1}}],["presets",{"0":{"83":1,"94":1},"2":{"83":2,"328":1}}],["preset",{"0":{"90":1},"2":{"1":1,"83":2,"90":2,"96":1,"97":1,"98":1,"99":1,"103":1,"106":1,"110":2,"200":1}}],["prepare",{"0":{"49":1,"65":1},"2":{"65":1}}],["project",{"2":{"316":1,"340":2}}],["programmatically",{"2":{"231":1}}],["programming",{"2":{"177":1}}],["progress",{"2":{"14":2,"149":1,"279":1}}],["process",{"0":{"189":1},"2":{"169":1,"183":1,"189":1,"194":1,"219":2,"254":1,"303":1,"304":1}}],["providing",{"2":{"164":1,"212":1}}],["provided",{"2":{"140":1,"142":1,"194":1,"216":1}}],["provides",{"2":{"112":1,"115":1,"130":1,"146":1,"170":1,"173":1,"183":1,"187":1,"240":1,"245":1,"305":2,"316":1,"333":1}}],["provide",{"0":{"151":1},"1":{"152":1,"153":1,"154":1},"2":{"60":1,"66":1,"151":1,"153":1,"156":1,"169":1,"185":1,"223":1,"254":2}}],["provider",{"0":{"166":1,"167":1,"196":1,"197":1,"251":1,"253":1,"314":1,"317":1,"318":1,"324":1,"333":1,"334":1,"335":1,"336":1,"338":1,"339":1,"340":1,"341":1,"344":1},"1":{"167":1,"197":1,"198":1,"315":1,"316":1,"317":1,"318":1,"319":2,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1,"334":1,"335":1,"336":1,"337":1,"339":1,"340":1,"341":1,"342":1},"2":{"9":2,"10":1,"18":1,"106":1,"107":4,"122":1,"123":1,"125":1,"132":1,"165":2,"166":1,"167":3,"169":1,"191":1,"196":1,"197":4,"198":2,"199":1,"200":1,"201":2,"202":3,"209":1,"213":5,"214":2,"218":1,"219":1,"220":2,"222":1,"223":3,"248":1,"249":1,"251":2,"252":3,"253":2,"254":1,"288":3,"289":1,"290":1,"298":1,"305":2,"311":1,"314":2,"317":3,"318":1,"319":2,"323":1,"324":4,"325":1,"329":3,"330":2,"331":5,"332":4,"333":1,"334":3,"335":1,"336":2,"338":1,"339":3,"340":1,"341":2,"344":2,"348":3,"349":2,"350":1,"351":1}}],["providers",{"0":{"9":1,"164":1,"195":1,"199":1,"247":1,"252":1,"319":1,"329":1,"330":1,"348":1,"350":1},"1":{"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"196":1,"197":1,"198":1,"199":1,"200":2,"201":2,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"330":1,"331":1,"332":1,"349":1,"350":1,"351":1},"2":{"5":1,"11":1,"33":2,"106":3,"107":2,"186":1,"195":5,"198":3,"203":2,"208":1,"209":1,"211":2,"213":1,"223":1,"249":1,"269":1,"276":3,"285":2,"317":1,"327":2,"328":1,"330":1,"331":1,"334":1,"339":1,"344":1,"348":1,"349":1}}],["probing",{"2":{"328":1}}],["probe",{"2":{"111":1,"193":1,"301":1}}],["problematic",{"2":{"98":1}}],["problems",{"2":{"5":1,"132":1}}],["proxy",{"2":{"65":2}}],["profiles",{"2":{"322":1}}],["profile",{"2":{"56":1,"62":1,"103":1,"115":1,"121":1,"304":2,"305":5,"308":3,"309":2,"315":2,"322":2,"323":1}}],["protocol",{"2":{"33":1,"42":1,"186":1,"196":2,"197":1}}],["product",{"2":{"20":1,"327":1}}],["prompted",{"2":{"78":1}}],["prompts",{"2":{"60":1,"121":1,"181":1,"307":1}}],["prompt",{"2":{"5":1,"123":1,"185":1,"206":1,"214":1,"218":1,"233":1,"237":1,"255":1,"264":1,"266":1,"298":1,"307":1}}],["bm25",{"2":{"305":1}}],["bing",{"2":{"248":1,"249":1}}],["bindings",{"0":{"164":1,"168":1},"1":{"165":1,"166":1,"167":1,"168":1,"169":2,"170":1,"171":1},"2":{"105":2,"106":1,"276":1,"285":2}}],["binding",{"0":{"169":1},"2":{"56":1,"62":1,"165":1,"169":1}}],["bind",{"0":{"56":1,"62":1},"2":{"3":1,"56":1,"62":2,"329":1}}],["blocked",{"0":{"98":1}}],["block",{"2":{"93":1}}],["blocks",{"2":{"57":1,"63":1,"87":1}}],["blogs",{"0":{"21":1},"2":{"21":1}}],["b",{"2":{"43":1}}],["brave",{"2":{"248":1,"249":1,"251":1}}],["breadcrumb",{"2":{"174":1}}],["breaks",{"2":{"13":1}}],["bridges",{"2":{"135":1}}],["brief",{"2":{"16":1,"226":1}}],["browsing",{"0":{"174":1},"2":{"107":1,"173":1}}],["browses",{"2":{"296":1}}],["browse",{"2":{"105":1,"247":1,"276":1}}],["browser",{"0":{"114":1,"115":1,"116":1,"117":1,"119":1,"121":1,"291":1},"1":{"115":1,"116":1,"117":1,"118":2,"119":1,"120":1,"121":1,"122":1},"2":{"8":1,"30":1,"105":1,"106":1,"107":2,"114":6,"115":4,"116":4,"117":5,"119":3,"120":4,"121":6,"211":1,"276":2,"291":4,"304":3,"305":1,"307":2,"308":3,"309":1,"310":1,"311":2,"313":5}}],["broad",{"0":{"7":1},"2":{"90":1}}],["bundled",{"2":{"200":1}}],["budget",{"2":{"126":1,"204":1}}],["business",{"2":{"33":1}}],["buildkit",{"2":{"303":1}}],["build",{"2":{"14":1,"19":1,"121":3,"305":1,"307":1}}],["building",{"2":{"14":1}}],["buildable",{"2":{"13":1}}],["builtin",{"2":{"317":1}}],["built",{"0":{"271":1,"314":1,"317":1,"318":1},"1":{"315":1,"316":1,"317":1,"318":1,"319":2,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1},"2":{"1":1,"3":1,"8":1,"19":1,"20":1,"33":1,"106":1,"107":1,"120":1,"122":1,"177":1,"209":1,"213":1,"238":1,"269":1,"271":1,"278":1,"299":1,"305":2,"314":2,"330":1,"332":1,"347":1,"349":1}}],["buttons",{"2":{"115":1}}],["button",{"2":{"103":1,"158":1,"191":1,"192":1,"193":1,"240":1,"252":1,"347":1,"349":1}}],["but",{"2":{"13":2,"14":1,"16":1,"93":2,"94":1,"124":1,"132":1,"206":1,"239":1,"266":1,"267":1}}],["bypasses",{"2":{"88":1}}],["by",{"2":{"9":1,"10":1,"18":2,"19":1,"33":1,"39":1,"43":1,"49":1,"85":1,"96":1,"107":1,"115":1,"121":1,"123":1,"124":1,"140":1,"153":1,"170":1,"174":1,"184":1,"192":1,"193":1,"194":3,"197":2,"203":1,"217":1,"218":1,"223":1,"227":1,"236":1,"240":3,"243":1,"245":2,"246":1,"283":2,"308":1}}],["batch",{"2":{"192":1}}],["battery",{"2":{"14":1}}],["bashsudo",{"2":{"308":2,"309":1}}],["bashgit",{"2":{"308":1}}],["bashdocker",{"2":{"305":1,"312":1,"322":1,"323":1}}],["bashbrowser",{"2":{"121":1}}],["bashcurl",{"2":{"43":1,"307":5}}],["basics",{"0":{"196":1},"1":{"197":1,"198":1}}],["basic",{"0":{"331":1,"349":1},"2":{"37":1,"103":1}}],["base64",{"2":{"308":1}}],["base",{"2":{"14":1,"15":2,"44":1,"150":1,"196":1,"197":1,"251":1,"311":1,"322":2,"323":1,"335":1,"340":2}}],["based",{"0":{"88":1,"199":1,"225":1},"1":{"200":1,"201":1},"2":{"7":1,"105":2,"139":1,"171":1,"191":1,"197":1,"214":1,"304":1,"315":1,"321":1,"330":2}}],["backup",{"2":{"159":1,"192":1}}],["background",{"2":{"126":2,"150":1}}],["backend",{"2":{"107":1,"200":1,"213":1,"220":1,"223":1,"314":1,"329":1,"333":1,"337":1,"342":1}}],["backed",{"2":{"1":1,"151":1,"198":1,"201":1}}],["back",{"2":{"14":1,"63":1,"107":1,"124":1,"175":1,"191":1}}],["box",{"2":{"305":1}}],["body",{"2":{"256":1}}],["bocha",{"2":{"249":1}}],["bound",{"2":{"225":1}}],["boundaries",{"2":{"17":1,"19":1}}],["boundary",{"2":{"4":1,"13":1}}],["bold",{"2":{"57":1,"63":1}}],["botname",{"2":{"272":1}}],["bottom",{"2":{"88":2,"113":1}}],["botfather",{"2":{"60":2}}],["both",{"2":{"19":1,"121":1,"233":1,"242":1,"322":1}}],["bot",{"0":{"3":1,"29":1,"30":1,"38":1,"43":1,"45":1,"54":1,"60":1,"71":1,"82":1,"96":1,"97":1,"98":1,"102":1,"103":1,"104":1,"106":1,"113":1,"119":1,"120":1,"134":1,"146":1,"165":1,"168":1,"171":1,"172":1,"179":1,"180":1,"185":1,"187":1,"194":1,"212":1,"223":1,"230":1,"253":1,"254":1,"255":1,"324":1,"336":1,"341":1,"346":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"103":1,"104":1,"105":2,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"169":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"181":1,"182":1,"183":1,"184":1,"185":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1},"2":{"1":3,"4":1,"6":2,"7":1,"8":1,"10":1,"11":2,"18":3,"19":1,"23":2,"24":1,"25":2,"27":1,"28":2,"30":2,"31":2,"33":1,"35":3,"38":2,"40":2,"41":1,"42":2,"43":1,"44":3,"45":2,"48":1,"49":3,"50":2,"51":1,"53":2,"54":2,"55":1,"56":2,"58":2,"59":1,"60":7,"61":1,"62":3,"63":4,"66":1,"68":1,"70":1,"71":3,"72":4,"73":2,"75":1,"76":1,"77":1,"79":1,"82":2,"83":1,"85":4,"87":2,"88":1,"89":1,"90":1,"91":1,"94":2,"97":2,"98":1,"99":1,"100":1,"102":1,"103":4,"104":1,"105":3,"106":2,"107":3,"108":1,"110":2,"111":2,"112":1,"113":4,"114":4,"119":2,"120":2,"122":2,"123":1,"124":1,"125":1,"126":2,"130":1,"132":1,"133":1,"134":1,"135":1,"136":2,"140":1,"142":1,"146":2,"147":2,"148":2,"149":1,"150":1,"151":2,"152":1,"155":2,"163":1,"164":1,"165":2,"168":2,"169":5,"170":1,"171":2,"172":2,"174":1,"175":2,"176":1,"177":1,"179":2,"180":1,"181":1,"182":1,"183":2,"185":3,"186":1,"187":2,"188":1,"189":1,"193":1,"194":1,"207":1,"211":2,"213":3,"214":1,"215":2,"216":1,"220":1,"221":1,"223":3,"224":1,"225":2,"228":2,"230":3,"231":1,"234":2,"235":4,"236":7,"237":2,"239":3,"242":1,"246":3,"247":1,"248":1,"253":1,"254":2,"255":2,"256":1,"257":1,"260":1,"266":1,"272":1,"273":1,"276":4,"279":1,"281":1,"282":1,"285":1,"287":2,"288":1,"292":1,"294":1,"295":1,"296":2,"300":2,"301":2,"304":1,"324":2,"325":3,"327":2,"329":2,"331":2,"332":1,"336":1,"337":2,"338":1,"341":1,"342":2,"346":2,"347":1,"348":3,"349":2}}],["bots",{"2":{"1":1,"3":2,"4":2,"8":1,"11":3,"18":6,"22":1,"30":1,"33":3,"36":1,"46":1,"54":1,"94":4,"102":1,"103":1,"115":2,"119":1,"146":1,"187":1,"210":1,"212":1,"231":1,"253":1,"269":1,"324":1,"326":1,"333":1,"336":1,"341":1,"348":1}}],["below",{"2":{"304":1}}],["belief",{"2":{"19":1}}],["begin",{"2":{"73":1,"327":1}}],["been",{"2":{"66":1,"258":1}}],["best",{"2":{"48":1,"51":1,"94":5}}],["before",{"2":{"23":1,"67":1,"78":1,"91":1,"153":1,"213":1,"220":1,"268":1,"269":1,"279":1,"298":1,"308":1,"347":1}}],["better",{"2":{"305":1,"316":1}}],["bet",{"2":{"20":1}}],["between",{"2":{"7":1,"14":1,"140":1,"143":1,"174":1,"190":1,"234":1,"239":1,"240":1,"257":1}}],["become",{"2":{"132":2,"162":1,"218":1,"219":1,"239":1,"259":1,"263":1,"265":1}}],["becomes",{"2":{"14":1,"16":1,"131":1,"248":1,"259":2,"329":1}}],["because",{"2":{"14":1,"206":1,"209":1,"242":1,"257":1}}],["being",{"2":{"14":1,"267":1,"305":1}}],["behind",{"2":{"14":1}}],["behavior",{"0":{"154":1},"2":{"8":1,"11":1,"26":1,"69":1,"101":1,"105":1,"106":1,"107":2,"109":1,"111":1,"114":1,"117":1,"238":1,"255":1,"278":1,"311":1}}],["behaves",{"2":{"1":1,"237":1,"267":1}}],["be",{"2":{"3":1,"7":1,"18":1,"19":1,"92":1,"109":1,"112":1,"113":1,"126":1,"131":1,"151":1,"169":1,"182":1,"206":1,"207":1,"232":1,"254":1,"258":2,"307":1,"322":1,"323":1,"333":1}}],["equivalent",{"2":{"270":2}}],["either",{"2":{"255":1,"257":1}}],["error",{"2":{"153":1,"183":1,"220":1}}],["errors",{"2":{"117":1,"184":1}}],["estimated",{"2":{"109":1,"126":2}}],["especially",{"2":{"101":1,"201":1,"239":1,"246":1}}],["efficient",{"2":{"305":1}}],["efforts",{"2":{"205":1}}],["effort",{"2":{"107":2,"205":1,"287":1}}],["effects",{"0":{"87":1}}],["effect",{"0":{"85":1},"2":{"83":5,"85":1,"87":1,"88":1,"90":1,"91":1,"96":1,"97":1,"98":1,"101":1,"110":1,"287":1}}],["effectively",{"2":{"195":1}}],["effective",{"0":{"266":1},"2":{"10":1,"150":1,"154":1,"245":1,"258":2,"259":5,"263":1,"266":2,"328":1}}],["etc",{"0":{"239":1},"2":{"45":1,"153":1,"305":1}}],["elements",{"2":{"114":1}}],["element",{"2":{"43":1,"45":1,"47":1}}],["else",{"2":{"14":1,"16":1}}],["e",{"2":{"43":2,"44":2,"60":3,"86":2,"167":1,"174":1,"177":1,"178":1,"189":2,"190":1,"219":1,"226":3,"232":1,"251":2,"307":1,"313":1,"335":1,"348":2,"349":1}}],["easy",{"2":{"18":1}}],["each",{"2":{"1":2,"4":1,"6":1,"18":3,"19":1,"35":1,"54":1,"85":1,"87":1,"93":1,"97":1,"187":1,"223":1,"233":1,"234":1,"235":1,"242":1,"246":2,"257":1,"258":1,"314":1}}],["evaluated",{"2":{"88":1,"92":1,"227":1,"282":1}}],["evaluation",{"0":{"88":1},"2":{"101":1}}],["even",{"2":{"180":1,"281":1}}],["event",{"2":{"40":1,"141":1}}],["events",{"0":{"40":1},"2":{"22":1,"40":1,"49":1,"144":1,"190":1}}],["eventually",{"2":{"14":1}}],["everyday",{"2":{"107":1,"242":1}}],["everyone",{"2":{"91":1,"96":1,"98":1}}],["everything",{"2":{"17":1,"20":1,"83":1,"210":1,"303":1}}],["every",{"2":{"1":1,"10":1,"13":1,"14":1,"16":1,"18":1,"86":1,"94":1,"146":1,"172":1,"183":1,"227":5,"230":1,"231":1}}],["evolves",{"2":{"14":1}}],["economics",{"2":{"14":1}}],["emmamultilingualneural",{"2":{"345":1}}],["embedded",{"2":{"303":1,"304":1}}],["embeddings",{"2":{"214":1,"315":1}}],["embedding",{"0":{"208":1},"2":{"9":1,"107":1,"195":1,"201":1,"203":2,"208":3,"209":1,"210":1,"223":1,"305":4,"315":2,"316":1,"318":2,"323":1,"330":1}}],["embed",{"2":{"30":1}}],["empty",{"2":{"14":1,"72":1,"103":1,"107":1,"206":1,"226":1,"340":1}}],["emails",{"2":{"164":1,"169":2,"170":1,"171":1,"230":1,"231":2}}],["email",{"0":{"164":1,"165":1,"166":1,"168":1,"285":1},"1":{"165":1,"166":1,"167":2,"168":1,"169":2,"170":1,"171":1},"2":{"1":1,"7":1,"8":1,"33":2,"105":2,"165":5,"166":2,"167":3,"168":2,"169":3,"170":5,"171":3,"276":2,"285":4,"311":1,"326":1}}],["editor",{"2":{"173":1,"177":1,"187":1,"261":1}}],["edit",{"0":{"262":1},"2":{"18":1,"105":1,"118":1,"177":1,"217":1,"252":1,"257":1,"262":1,"265":2,"308":1,"319":1,"325":1}}],["editing",{"0":{"176":1},"1":{"177":1,"178":1},"2":{"8":1,"10":1,"149":1,"262":1,"314":1}}],["edge",{"0":{"343":1,"344":1},"1":{"344":1,"345":1,"346":1,"347":1},"2":{"9":1,"19":1,"107":1,"198":3,"209":2,"343":2,"344":2,"345":1,"346":2,"348":2,"349":1,"350":2,"351":1}}],["exchange",{"2":{"237":1}}],["exchanged",{"2":{"191":1}}],["exceptions",{"2":{"199":1}}],["except",{"2":{"83":1,"98":1}}],["existing",{"2":{"154":1,"158":1,"217":1,"240":1,"267":1}}],["exist",{"2":{"137":1,"149":1,"152":1,"153":1}}],["exists",{"0":{"124":1},"2":{"265":1}}],["exa",{"2":{"249":1}}],["exact",{"2":{"49":1,"153":1,"204":1,"206":1,"271":1}}],["examples",{"0":{"95":1,"259":1},"1":{"96":1,"97":1,"98":1,"99":1,"100":1},"2":{"152":1,"196":1,"227":1,"270":1,"271":1,"288":1,"294":1,"296":1}}],["example",{"2":{"49":1,"93":1,"209":1,"272":3,"287":1}}],["extraction",{"2":{"314":1,"329":1,"337":1,"342":1}}],["extracted",{"2":{"161":1,"246":1}}],["extract",{"2":{"43":1,"216":1,"325":1}}],["extending",{"0":{"187":1}}],["extend",{"2":{"11":1,"255":1}}],["external",{"0":{"239":1},"2":{"8":1,"35":1,"86":1,"186":1,"187":1,"214":1,"224":1,"247":1,"305":1,"316":1}}],["executable",{"2":{"189":1}}],["executing",{"2":{"149":1}}],["executions",{"2":{"226":1}}],["execution",{"0":{"232":1},"2":{"1":1,"8":1,"17":1,"105":2,"108":1,"183":1,"228":1,"233":1,"236":1,"284":1}}],["executes",{"2":{"189":1,"225":1,"232":1}}],["execute",{"2":{"18":1,"112":1,"146":1,"147":1,"181":1,"182":1}}],["expiration",{"2":{"311":1}}],["expires",{"2":{"78":1}}],["expression",{"2":{"226":1,"230":1,"233":1}}],["expressions",{"2":{"18":1,"224":1}}],["explain",{"2":{"256":1}}],["explanation",{"2":{"226":1}}],["explicitly",{"2":{"85":2,"237":1,"238":1}}],["explicit",{"2":{"17":1,"19":1,"205":1,"278":1}}],["expand",{"2":{"152":1}}],["exposed",{"2":{"153":1,"193":1,"194":1,"203":1}}],["expose",{"2":{"151":1,"202":1,"263":1}}],["exposes",{"2":{"6":1,"107":1,"109":1,"205":1,"245":1}}],["exporting",{"2":{"159":1}}],["export",{"0":{"159":1,"160":1},"1":{"160":1,"161":1,"162":1},"2":{"105":1,"120":1,"160":1,"192":2,"328":1}}],["expect",{"2":{"237":1}}],["expensive",{"2":{"16":1}}],["experienced",{"2":{"19":1}}],["experience",{"2":{"13":1,"173":1}}],["env",{"2":{"189":1,"308":1}}],["environment",{"0":{"313":1},"2":{"1":1,"19":1,"23":1,"107":1,"114":1,"146":1,"148":1,"155":1,"163":1,"189":1,"257":1,"267":1,"307":2}}],["ensure",{"2":{"156":1}}],["ensures",{"2":{"146":1}}],["enabling",{"2":{"135":1,"142":1,"180":1,"247":1}}],["enables",{"2":{"56":1,"62":1,"117":1,"256":1,"264":1}}],["enabled",{"2":{"25":1,"44":1,"45":1,"51":1,"55":2,"67":1,"73":1,"79":1,"81":1,"107":1,"108":1,"109":1,"126":2,"169":3,"182":1,"226":1,"228":1,"231":1,"287":3,"304":1}}],["enable",{"0":{"38":1,"68":1,"264":1},"2":{"23":1,"24":1,"29":1,"31":1,"35":1,"38":1,"39":1,"44":1,"50":1,"55":3,"61":1,"68":1,"72":1,"80":1,"108":1,"109":1,"126":1,"140":1,"144":1,"145":2,"152":1,"192":1,"264":1,"273":1,"294":2,"305":3,"322":1}}],["en",{"2":{"117":1,"287":2,"345":1}}],["engines",{"0":{"249":1},"2":{"247":1,"249":2,"313":1}}],["engine",{"2":{"107":1,"117":1,"251":2}}],["engineering",{"2":{"18":1}}],["encodes",{"2":{"305":1}}],["encoding",{"2":{"65":1,"66":1,"67":1,"304":1,"305":3,"311":1,"316":1,"322":1}}],["encountered",{"2":{"183":1}}],["encryption",{"2":{"66":1,"67":2,"143":1}}],["encrypted",{"2":{"65":1}}],["endpoints",{"2":{"196":1}}],["endpoint",{"2":{"72":1,"190":1,"197":1,"335":1}}],["ending",{"2":{"60":1}}],["end",{"2":{"23":1}}],["enough",{"2":{"14":1,"124":1}}],["entire",{"2":{"82":1,"86":1,"91":1,"93":1,"104":1}}],["entry",{"2":{"78":1,"242":1,"301":1}}],["entries",{"2":{"5":1,"132":1,"184":1,"217":1,"218":1,"221":1,"222":1,"298":1,"332":1}}],["enterprise",{"2":{"33":3,"36":1,"137":2}}],["enter",{"2":{"13":1,"37":1,"50":1,"152":2,"153":1,"216":1}}],["ok",{"2":{"183":1}}],["okay",{"2":{"14":1}}],["observing",{"2":{"237":1}}],["observation",{"2":{"236":1}}],["observe",{"2":{"120":1,"246":1}}],["obtain",{"2":{"35":1,"43":1}}],["older",{"2":{"123":1,"124":2,"132":1,"184":1,"218":1,"222":1,"257":1,"298":1}}],["old",{"2":{"109":1,"126":1,"184":1,"238":1,"239":1,"259":1,"278":1}}],["opus",{"2":{"345":1}}],["optimized",{"2":{"246":1}}],["options",{"2":{"151":1,"152":1,"287":2,"345":2}}],["option",{"2":{"43":2,"287":1}}],["optionally",{"2":{"91":1,"107":1,"218":1}}],["optional",{"0":{"56":1,"62":1,"80":1},"2":{"34":1,"55":1,"93":1,"103":1,"107":3,"108":1,"109":1,"117":4,"143":1,"151":1,"195":1,"226":1,"233":1,"304":1,"311":1}}],["opt",{"2":{"189":1}}],["openssl",{"2":{"308":1}}],["opensearch",{"2":{"305":2,"316":2,"322":1}}],["opens",{"2":{"301":1}}],["opening",{"2":{"246":1}}],["openviking",{"0":{"333":1,"334":1,"335":1,"336":1},"1":{"334":1,"335":1,"336":1,"337":1},"2":{"213":1,"330":1,"332":1,"333":1,"334":1,"335":2,"336":1,"337":2}}],["open",{"0":{"96":1,"98":1},"2":{"20":1,"23":1,"24":1,"30":1,"36":1,"37":1,"45":1,"50":1,"54":1,"58":1,"60":1,"62":1,"66":1,"75":1,"78":1,"89":1,"90":1,"94":1,"112":1,"114":1,"119":1,"128":2,"152":1,"177":1,"191":1,"197":1,"213":1,"260":1,"300":1,"301":1,"324":1,"331":2,"336":1,"341":1,"346":1,"349":1}}],["openclaw",{"0":{"19":1},"2":{"19":1}}],["openai",{"0":{"200":1},"2":{"9":3,"196":2,"197":1,"198":6,"199":1,"200":1,"288":2,"305":1}}],["operational",{"2":{"220":1}}],["operation",{"2":{"162":1,"218":1,"270":1}}],["operations",{"0":{"10":1,"145":1,"148":1,"173":1,"192":1,"215":1},"1":{"149":1,"174":1,"175":1,"216":1,"217":1},"2":{"149":1,"179":1,"325":1,"337":2,"342":2}}],["operates",{"2":{"146":1,"314":1}}],["operate",{"2":{"11":1,"20":1}}],["oem",{"2":{"14":1}}],["os",{"2":{"14":1}}],["occasional",{"2":{"14":1}}],["outgoing",{"2":{"169":1,"171":1}}],["outbox",{"0":{"170":1},"2":{"105":1,"170":1,"171":1,"276":1,"285":2}}],["outbound",{"2":{"22":1,"26":1,"65":1,"69":1}}],["outcome",{"2":{"88":1}}],["outside",{"2":{"33":1,"153":1}}],["output",{"2":{"26":1,"51":1,"52":1,"107":2,"189":1,"204":1,"205":1,"206":1,"207":1,"208":1,"237":1,"273":1,"296":1,"345":1}}],["out",{"2":{"14":1,"124":1,"305":1}}],["outward",{"2":{"6":1}}],["our",{"2":{"13":1,"14":1}}],["overlay",{"2":{"309":1}}],["overlapping",{"2":{"218":1}}],["over",{"2":{"13":1,"163":1,"190":1,"218":1,"345":1}}],["overview",{"0":{"13":1,"33":1,"105":1},"1":{"34":1,"35":1},"2":{"105":1,"327":1,"328":1}}],["oauth2",{"2":{"30":1}}],["oauth",{"0":{"191":1,"199":1},"1":{"200":1,"201":1},"2":{"10":1,"33":1,"105":1,"191":6,"196":1,"198":2,"200":1,"301":1,"328":1}}],["ongoing",{"2":{"237":1}}],["only",{"2":{"54":1,"83":4,"85":1,"90":1,"91":1,"93":2,"94":5,"97":1,"99":2,"100":1,"103":1,"107":1,"111":1,"120":1,"125":1,"151":1,"198":1,"218":1,"236":3,"237":1,"258":1,"266":2,"273":3,"305":1,"308":1,"315":1,"316":1,"318":1,"321":1}}],["online",{"2":{"20":1}}],["on",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"13":2,"14":1,"16":1,"17":1,"20":2,"23":1,"26":1,"34":1,"35":3,"42":1,"43":1,"48":1,"51":1,"54":1,"60":1,"62":1,"69":1,"78":2,"86":1,"99":1,"104":1,"120":1,"124":1,"135":1,"137":1,"139":1,"153":2,"171":1,"175":1,"182":1,"191":1,"193":1,"208":1,"214":1,"226":1,"234":1,"238":2,"240":1,"243":1,"246":1,"251":1,"252":1,"262":1,"278":1,"303":1,"305":2,"308":1,"312":1,"347":1}}],["once",{"2":{"7":1,"41":1,"54":1,"73":1,"78":1,"104":1,"114":1,"192":1,"193":1,"194":1,"248":1,"265":1,"325":1,"337":1,"342":1}}],["ones",{"2":{"124":1,"257":1}}],["one",{"0":{"307":1},"2":{"7":1,"20":1,"34":1,"59":1,"64":1,"78":1,"106":1,"115":1,"132":2,"152":2,"195":2,"196":2,"210":1,"213":1,"218":1,"222":1,"235":1,"246":1,"258":2,"264":1,"271":2,"272":1,"298":1,"314":1,"329":1,"331":1}}],["often",{"2":{"108":1,"182":1,"237":2}}],["offs",{"2":{"256":1}}],["off",{"0":{"321":1},"2":{"14":1,"182":1,"219":1,"264":1,"315":1,"318":1,"330":1}}],["official",{"0":{"34":1,"47":1,"58":1,"64":1,"65":1,"75":1,"143":1},"1":{"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"1":1,"7":2,"22":1,"30":1,"33":2,"34":2,"40":1,"53":1,"60":2,"64":2,"65":1,"66":1,"67":1,"68":1,"137":5,"143":2,"307":1,"326":1}}],["of",{"2":{"5":1,"8":1,"13":2,"14":3,"18":1,"44":1,"46":1,"56":1,"59":1,"62":1,"86":2,"98":1,"106":1,"107":1,"120":1,"123":1,"133":1,"148":1,"150":1,"155":1,"158":1,"163":2,"170":2,"183":2,"185":2,"187":1,"189":2,"190":2,"200":1,"210":1,"213":1,"214":1,"220":1,"221":1,"226":3,"227":3,"230":1,"235":1,"236":2,"239":1,"245":1,"246":2,"258":1,"265":1,"268":2,"270":1,"272":1,"298":1,"304":1,"305":2,"311":1,"314":1,"316":1,"331":1,"338":1}}],["others",{"2":{"246":1,"304":1}}],["other",{"0":{"246":1},"2":{"4":1,"18":1,"99":1,"146":1,"220":1,"233":1,"234":1,"236":1,"249":1,"251":1}}],["orchestrated",{"2":{"303":1}}],["oriented",{"2":{"137":1,"200":1,"233":1,"236":1}}],["ordering",{"2":{"88":1,"328":1}}],["order",{"2":{"88":1,"92":1,"101":1,"257":1}}],["organized",{"2":{"348":1}}],["organize",{"2":{"243":1}}],["organization",{"2":{"23":1,"39":1,"70":1,"340":2}}],["org",{"2":{"43":1,"44":2}}],["or",{"2":{"1":1,"3":2,"6":1,"18":2,"23":1,"25":1,"33":1,"35":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":1,"63":1,"66":1,"71":1,"73":1,"78":1,"82":2,"85":1,"88":1,"90":2,"91":2,"94":1,"96":1,"97":1,"98":1,"99":1,"101":1,"103":2,"108":1,"109":2,"111":1,"115":2,"117":3,"120":2,"121":1,"123":1,"126":1,"129":1,"130":3,"132":2,"140":2,"146":2,"149":1,"150":1,"152":3,"153":1,"154":1,"156":1,"159":1,"162":1,"165":1,"171":1,"175":2,"179":1,"181":1,"182":1,"183":2,"184":1,"185":1,"187":1,"190":1,"192":3,"195":2,"196":1,"197":1,"202":1,"204":1,"205":1,"208":1,"209":1,"213":1,"214":1,"217":1,"218":2,"220":1,"222":1,"223":1,"224":1,"234":1,"238":1,"239":2,"240":1,"242":1,"248":1,"255":1,"256":2,"257":3,"259":1,"264":1,"265":1,"269":1,"270":2,"278":1,"281":1,"282":1,"283":1,"284":1,"287":7,"288":3,"289":1,"290":1,"291":1,"292":1,"295":1,"298":1,"301":1,"302":1,"303":1,"307":1,"308":3,"316":1,"318":1,"325":1,"330":1,"332":1,"333":1}}],["owner",{"2":{"83":1,"85":1,"88":1,"97":1,"223":1,"273":3,"287":1,"288":2,"289":1,"290":1,"291":1,"292":1,"294":5}}],["own",{"2":{"1":3,"4":1,"18":3,"102":1,"107":1,"108":1,"146":1,"169":1,"172":1,"179":1,"187":1,"234":1,"235":1,"249":1,"262":1,"265":1,"330":1}}],["lt",{"2":{"257":1,"271":3,"288":6,"289":1,"290":1,"291":1,"292":2,"294":8,"296":1}}],["learn",{"2":{"327":1}}],["leave",{"2":{"206":1,"226":1}}],["leaving",{"2":{"35":1,"176":1}}],["legacy",{"2":{"257":2,"259":1,"265":1,"267":1,"268":1}}],["levels",{"2":{"205":1}}],["level",{"0":{"275":1},"2":{"86":2,"93":1,"107":1,"218":1,"227":1,"270":1,"271":1,"281":1,"311":1}}],["left",{"2":{"28":1,"37":1,"103":1}}],["less",{"2":{"20":1,"237":1}}],["lets",{"2":{"83":1,"93":1,"120":1,"207":1}}],["let",{"2":{"3":1}}],["lightweight",{"2":{"305":1,"315":1}}],["lighter",{"2":{"19":1,"305":1}}],["libraries",{"2":{"154":1}}],["linux",{"2":{"312":1}}],["line",{"2":{"152":1,"170":1,"189":1,"309":1}}],["link",{"2":{"142":1,"165":1}}],["linked",{"2":{"62":1,"101":1,"201":1,"282":2}}],["links",{"2":{"30":1,"57":1,"63":1,"115":1,"328":1}}],["living",{"2":{"106":1}}],["lived",{"2":{"35":1}}],["live",{"2":{"14":1,"94":1,"257":1,"271":1}}],["listen",{"2":{"311":1}}],["listed",{"2":{"97":1,"258":1}}],["lists",{"2":{"193":1,"242":1,"295":1,"316":1}}],["list",{"2":{"82":1,"98":1,"130":1,"139":1,"153":2,"157":1,"158":1,"174":1,"189":1,"193":1,"217":1,"228":2,"236":1,"270":2,"271":1,"276":1,"288":4,"289":2,"290":2,"291":2,"292":2,"294":3,"295":2,"296":4,"305":1,"318":1,"335":1,"340":1}}],["limit",{"2":{"131":1,"206":1,"226":1,"233":1}}],["limited",{"2":{"78":1}}],["limitations",{"2":{"52":1}}],["lifecycle",{"0":{"149":1},"2":{"104":1,"105":1,"148":1,"163":1}}],["life",{"2":{"14":1}}],["likely",{"2":{"237":1}}],["like",{"0":{"256":1},"2":{"1":1,"6":1,"14":1,"17":1,"18":1,"20":2,"40":1,"115":1,"120":1,"149":1,"165":1,"237":3,"248":1,"267":1}}],["llm",{"2":{"19":1,"107":1,"182":1,"269":1}}],["llms",{"2":{"14":1,"203":1}}],["ll",{"2":{"14":1}}],["launch",{"2":{"149":1}}],["languages",{"2":{"177":1,"305":1,"316":1,"343":1,"345":1,"350":1}}],["language",{"2":{"105":1,"107":2,"226":1,"230":1,"233":1,"287":3,"305":1,"345":1}}],["last",{"2":{"18":1,"242":2,"283":1}}],["layered",{"2":{"271":1}}],["layers",{"2":{"110":1,"348":1}}],["layer",{"2":{"14":1,"15":1}}],["later",{"2":{"83":1,"154":1,"155":1,"265":1}}],["latest",{"2":{"21":1,"174":1,"184":1,"270":1,"281":3,"307":1,"312":1,"313":2}}],["late",{"2":{"14":1}}],["latency",{"2":{"13":1,"124":1}}],["large",{"2":{"5":1,"132":1,"296":1}}],["lark",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1},"2":{"1":1,"7":1,"18":1,"33":1,"36":1,"137":1,"326":1}}],["loop",{"2":{"279":1}}],["lookup",{"2":{"305":1}}],["looks",{"0":{"256":1},"2":{"257":1}}],["looked",{"2":{"14":1}}],["locations",{"2":{"257":1}}],["localhost",{"2":{"310":3}}],["locally",{"2":{"305":1,"316":1,"322":1}}],["locale",{"2":{"107":1,"114":1,"117":2}}],["local",{"0":{"189":1},"2":{"15":1,"16":1,"17":1,"19":1,"20":1,"160":1,"161":1,"175":2,"189":1,"238":2,"278":2}}],["losing",{"2":{"235":1,"264":1}}],["lost",{"2":{"113":1}}],["load",{"2":{"184":2}}],["loaded",{"2":{"18":1,"266":1,"276":1}}],["logging",{"2":{"311":1}}],["logs",{"0":{"130":1,"183":1,"184":1},"1":{"184":1},"2":{"105":3,"108":1,"109":1,"184":1,"185":1,"276":2,"284":3,"312":2}}],["log",{"2":{"37":1,"54":1,"71":1,"130":1,"163":1,"170":1,"183":1,"184":1,"311":1}}],["login",{"0":{"142":1},"2":{"7":1,"33":1,"34":1,"35":1,"43":3,"64":1,"78":3,"79":1,"137":2,"310":1}}],["lower",{"2":{"218":1}}],["lowest",{"2":{"88":1}}],["low",{"2":{"14":1,"107":1,"205":1,"218":1,"287":1}}],["longer",{"2":{"14":1,"118":1,"217":1,"239":1,"244":1,"319":1}}],["long",{"0":{"5":1},"2":{"1":2,"5":1,"13":1,"16":1,"20":1,"35":1,"44":1,"122":1,"123":1,"125":1,"132":1,"133":1,"183":1,"212":1,"214":1,"218":1,"222":1,"223":1,"239":1,"279":1,"298":2,"326":1,"328":1,"329":1}}],["tutorial",{"2":{"60":1}}],["turns",{"2":{"123":1,"124":2,"132":1,"264":1,"298":1}}],["turning",{"2":{"14":1}}],["turn",{"2":{"13":1,"18":1,"126":1,"279":1}}],["typical",{"0":{"259":1},"2":{"115":1,"130":1,"196":1,"198":1,"202":1}}],["typing",{"2":{"55":1,"57":1,"80":2,"81":1}}],["typed",{"2":{"267":1}}],["type",{"2":{"43":3,"86":1,"91":3,"93":2,"99":2,"167":1,"189":1,"190":1,"192":1,"196":1,"197":3,"198":2,"200":1,"201":1,"203":1,"214":1,"236":2,"238":1,"239":1,"240":1,"242":2,"257":1,"278":1,"317":1,"334":1,"339":1,"344":1,"348":1,"349":1}}],["types",{"0":{"86":1,"188":1,"198":1,"203":1,"236":1},"1":{"189":1,"190":1,"237":1},"2":{"6":1,"9":1,"57":1,"82":1,"198":1,"199":1,"203":1,"236":2,"237":1,"327":1,"331":1}}],["timing",{"2":{"233":1}}],["timezone",{"2":{"103":3,"105":1,"107":4,"114":1,"117":2,"227":2,"311":2}}],["timeout",{"2":{"44":2,"311":1}}],["timestamp",{"2":{"170":1}}],["timestamps",{"2":{"158":1}}],["times",{"2":{"18":1,"226":1}}],["time",{"0":{"14":1,"248":1},"2":{"3":1,"14":3,"74":1,"110":1,"121":1,"130":1,"149":1,"150":1,"163":1,"183":1,"218":1,"219":1,"247":1,"254":1}}],["titles",{"2":{"107":1}}],["title",{"2":{"105":1,"107":1,"242":1,"243":1}}],["tiny",{"2":{"14":1}}],["t",{"2":{"14":6,"16":2,"149":1,"180":1,"305":1}}],["truncated",{"2":{"296":1}}],["true",{"2":{"231":1,"287":3,"313":1}}],["trying",{"2":{"222":2}}],["tree",{"2":{"173":1}}],["treats",{"2":{"272":1}}],["treated",{"2":{"237":1}}],["treat",{"2":{"19":1,"111":1}}],["troubleshooting",{"2":{"171":1,"220":1}}],["triggering",{"2":{"224":1}}],["triggers",{"2":{"109":1,"126":1,"226":1,"232":1,"236":1,"245":1,"298":1}}],["trigger",{"2":{"97":1,"127":1,"132":1,"171":1,"181":1,"182":1,"222":1,"233":1,"246":1,"276":1}}],["triggered",{"2":{"6":1,"133":1,"183":1,"225":1,"236":1,"246":1}}],["translate",{"2":{"230":1}}],["transport",{"2":{"190":1}}],["transfer",{"2":{"175":1}}],["track",{"2":{"246":1}}],["tracked",{"2":{"171":1}}],["tracks",{"2":{"131":1,"163":1}}],["traditional",{"2":{"167":1}}],["trade",{"2":{"14":1,"256":1}}],["trail",{"2":{"130":1}}],["trapped",{"2":{"16":1}}],["travels",{"2":{"14":1}}],["tag",{"2":{"307":1,"313":3}}],["taking",{"2":{"279":1}}],["takes",{"2":{"104":1,"258":1}}],["take",{"2":{"14":1,"88":1,"310":1}}],["tavily",{"2":{"249":1}}],["target",{"2":{"35":1,"57":1,"86":1,"300":1,"301":1}}],["tab",{"0":{"105":1,"107":1,"108":1,"109":1,"112":1},"2":{"31":1,"35":1,"40":1,"44":1,"55":1,"61":1,"72":1,"77":1,"82":1,"83":1,"85":1,"89":1,"90":1,"101":1,"105":1,"106":4,"107":1,"108":2,"109":1,"110":2,"112":1,"113":1,"119":1,"120":1,"126":1,"130":1,"132":1,"136":1,"148":1,"150":1,"151":1,"152":1,"154":1,"159":1,"168":1,"170":1,"172":1,"179":1,"182":1,"183":1,"187":1,"188":1,"213":2,"215":1,"218":1,"219":1,"220":1,"221":1,"222":1,"228":1,"253":1,"255":1,"300":2,"301":2,"324":1,"325":1,"329":1,"331":2,"336":1,"341":1,"346":1,"349":1}}],["tabs",{"2":{"10":1,"104":1,"106":1,"112":1,"327":1}}],["talks",{"2":{"195":1}}],["talk",{"2":{"14":1}}],["tasks",{"0":{"224":1},"1":{"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1},"2":{"18":2,"102":1,"105":1,"107":1,"108":1,"150":2,"180":1,"185":1,"194":1,"224":1,"233":1,"239":1,"246":1,"269":1,"276":1,"294":1}}],["task",{"2":{"6":2,"164":1,"182":1,"183":1,"224":1,"226":3,"233":1,"234":1,"236":2,"246":1,"256":1}}],["tts",{"0":{"343":1,"344":1,"348":1},"1":{"344":1,"345":1,"346":1,"347":1,"349":1,"350":1,"351":1},"2":{"8":1,"9":2,"105":1,"106":1,"107":5,"195":1,"198":1,"203":2,"209":2,"210":1,"211":2,"343":1,"344":1,"346":3,"348":7,"349":2,"350":1,"351":1}}],["together",{"2":{"242":1}}],["toggle",{"2":{"145":1,"182":1,"192":1,"307":1}}],["today",{"2":{"226":1,"272":1,"294":1}}],["total",{"2":{"221":1,"226":1,"245":1}}],["toml",{"2":{"177":1,"307":1,"308":4,"309":2,"310":1,"311":1,"313":2,"322":2,"323":2}}],["topics",{"2":{"239":1}}],["topic",{"2":{"234":1,"243":1}}],["top",{"0":{"275":1},"2":{"88":2,"92":1,"98":1,"226":1,"227":1,"270":1,"271":1,"272":1,"294":1}}],["tokens",{"2":{"35":2,"140":1,"245":1,"269":1,"281":1}}],["token",{"0":{"49":1},"2":{"28":3,"31":1,"34":1,"43":3,"44":2,"49":5,"50":1,"60":3,"61":1,"65":1,"66":1,"67":1,"78":1,"109":1,"124":1,"126":1,"130":1,"143":1,"191":3,"196":1,"197":1,"201":1,"245":1,"276":1,"283":1,"305":1,"311":1,"316":1}}],["to",{"0":{"11":1,"12":1,"19":1,"30":1,"119":1,"131":1,"246":1,"253":1,"324":1,"336":1,"341":1,"346":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"6":1,"13":1,"14":2,"16":2,"18":3,"19":1,"20":1,"23":2,"24":2,"25":1,"27":2,"28":3,"29":1,"30":3,"31":1,"32":1,"33":1,"35":2,"36":1,"37":2,"38":1,"39":1,"40":2,"41":2,"42":3,"44":1,"45":1,"46":1,"48":1,"49":3,"50":2,"51":1,"53":2,"54":2,"55":1,"56":3,"59":1,"60":2,"61":1,"62":2,"63":1,"66":1,"70":2,"71":2,"72":1,"73":2,"76":2,"77":1,"78":1,"79":1,"82":2,"87":1,"88":2,"89":1,"91":3,"92":3,"93":2,"94":2,"96":1,"97":1,"98":1,"99":1,"100":1,"101":2,"103":1,"104":1,"105":1,"106":2,"107":5,"109":1,"110":1,"112":2,"113":3,"114":3,"116":1,"117":1,"119":2,"121":1,"122":1,"123":1,"124":2,"126":3,"129":1,"130":1,"131":2,"133":3,"134":2,"135":1,"141":2,"142":1,"144":1,"146":1,"149":2,"150":1,"151":4,"152":1,"153":2,"154":1,"155":1,"157":1,"158":2,"160":1,"162":2,"163":1,"164":1,"165":3,"167":1,"169":1,"170":1,"171":3,"174":1,"175":3,"176":1,"177":3,"178":1,"179":2,"180":2,"181":1,"182":1,"183":1,"184":1,"186":2,"187":1,"189":1,"190":1,"191":2,"192":2,"193":2,"194":1,"195":3,"201":2,"202":1,"203":1,"205":1,"206":1,"207":1,"209":1,"210":2,"211":3,"212":1,"216":1,"218":2,"219":3,"220":1,"221":1,"222":3,"223":1,"224":1,"225":3,"226":2,"228":2,"230":2,"231":1,"232":1,"234":1,"235":1,"236":3,"237":3,"238":4,"239":3,"240":1,"243":1,"245":1,"246":1,"247":3,"248":1,"249":1,"251":2,"253":2,"254":2,"260":1,"262":1,"264":1,"265":2,"267":1,"268":1,"269":1,"270":2,"271":1,"272":1,"273":1,"278":4,"279":1,"298":1,"300":1,"301":2,"303":2,"305":4,"307":1,"308":1,"312":1,"313":5,"316":1,"317":1,"318":1,"324":2,"325":2,"327":1,"328":1,"329":1,"334":1,"336":2,"337":1,"338":1,"339":1,"340":1,"341":2,"342":1,"344":1,"345":2,"347":2,"348":1,"349":2,"351":1}}],["took",{"2":{"183":1}}],["toolbar",{"2":{"173":1}}],["toolkit",{"2":{"153":1}}],["tool",{"0":{"193":1},"2":{"8":1,"17":1,"153":1,"186":1,"193":1,"203":1,"204":1,"205":1,"230":1,"248":1,"255":1,"256":1,"279":1,"301":1,"326":1,"328":1}}],["tools",{"0":{"8":1},"2":{"1":1,"4":1,"14":1,"19":1,"102":1,"114":1,"119":1,"120":1,"149":1,"154":1,"179":1,"181":1,"185":1,"187":1,"193":4,"194":2,"205":1,"225":1,"232":1,"256":1}}],["too",{"2":{"5":1,"14":3,"90":2,"132":1,"239":1,"279":1}}],["two",{"2":{"5":1,"34":1,"110":1,"127":1,"132":1,"137":1,"165":1,"199":1,"222":1,"229":1,"237":1,"267":1,"270":1}}],["temporarily",{"2":{"264":1}}],["templates",{"2":{"299":1,"302":1,"328":1}}],["template",{"0":{"301":1},"2":{"8":1,"187":1,"307":1}}],["tech",{"2":{"226":1,"294":1}}],["testing",{"0":{"347":1},"2":{"155":1}}],["test",{"0":{"68":1},"2":{"68":1,"94":1,"264":1,"347":1,"349":2}}],["team",{"2":{"19":1}}],["textarea",{"2":{"216":1}}],["text",{"0":{"177":1},"2":{"14":1,"26":1,"32":1,"46":2,"48":1,"51":1,"52":1,"57":1,"74":1,"81":1,"107":1,"125":1,"129":2,"130":1,"177":1,"195":1,"203":1,"217":1,"237":1,"270":2,"271":1,"272":2,"282":1,"287":1,"288":1,"294":1,"296":1,"305":1,"311":1,"316":1,"348":2}}],["tension",{"2":{"13":1}}],["telegram",{"0":{"59":1,"60":1,"239":1},"1":{"60":1,"61":1,"62":1,"63":1},"2":{"1":1,"7":1,"18":1,"33":1,"59":2,"60":3,"61":1,"62":3,"86":2,"93":1,"99":2,"100":2,"105":1,"135":1,"137":2,"226":1,"231":1,"238":1,"272":1,"278":1,"326":1}}],["terms",{"2":{"210":1}}],["terminal",{"0":{"112":1},"2":{"105":2,"112":2}}],["term",{"0":{"5":1},"2":{"1":1,"5":1,"122":1,"123":1,"125":1,"132":1,"133":1,"212":1,"214":1,"218":1,"222":1,"223":1,"298":1,"305":1,"328":1,"329":1}}],["those",{"2":{"13":1,"195":1,"257":1}}],["threshold",{"2":{"109":2,"126":3}}],["threaded",{"2":{"94":1}}],["thread",{"2":{"83":1,"91":3,"93":3,"94":1,"101":1,"110":1,"234":1,"282":1}}],["threads",{"2":{"14":1,"83":1,"237":1,"242":1}}],["three",{"2":{"13":1,"86":1,"203":1,"210":1,"314":1,"330":1,"332":1,"348":1}}],["through",{"2":{"1":1,"5":1,"6":1,"9":1,"18":2,"33":1,"35":1,"53":1,"59":1,"65":1,"104":1,"111":1,"114":1,"151":1,"198":1,"200":1,"203":1,"214":1,"257":1,"337":1,"338":1,"342":1}}],["thing",{"2":{"14":1,"20":1}}],["thinking",{"2":{"233":1}}],["thinks",{"2":{"63":1}}],["think",{"2":{"6":1,"14":1,"181":1,"210":1}}],["this",{"2":{"5":1,"14":2,"21":1,"28":1,"36":1,"40":1,"43":2,"48":1,"59":1,"60":1,"64":2,"69":2,"85":1,"86":1,"88":1,"94":1,"101":1,"108":1,"113":2,"116":1,"120":1,"123":1,"126":1,"129":1,"131":1,"141":2,"146":1,"151":2,"153":1,"155":1,"157":1,"162":1,"163":1,"172":1,"181":1,"182":1,"189":1,"190":1,"197":1,"200":1,"207":1,"209":1,"214":1,"218":2,"219":1,"220":1,"221":1,"224":1,"226":1,"228":1,"230":1,"235":1,"236":1,"237":1,"238":1,"239":2,"243":1,"257":1,"258":2,"264":1,"271":1,"279":1,"282":1,"298":2,"308":1,"309":1,"310":1,"317":1,"334":1,"339":1}}],["than",{"2":{"1":1,"9":1,"19":1,"111":1,"131":1,"218":1,"305":2,"316":1}}],["that",{"2":{"1":1,"4":1,"6":1,"13":1,"14":8,"15":1,"20":4,"23":2,"33":1,"34":3,"49":2,"51":1,"62":1,"68":1,"85":1,"94":1,"100":1,"102":1,"105":1,"107":2,"109":1,"110":1,"119":1,"124":3,"126":1,"130":1,"135":1,"143":1,"179":1,"181":1,"183":1,"185":1,"191":1,"195":1,"201":1,"206":1,"207":1,"208":1,"209":1,"217":1,"220":1,"223":1,"226":1,"230":1,"237":1,"248":1,"255":1,"258":1,"263":2,"265":1,"266":2,"269":1,"282":1,"300":1,"301":1,"305":1,"324":1,"329":1,"331":1,"333":2,"338":1}}],["these",{"2":{"50":1,"83":1,"106":2,"132":1,"179":1,"193":1,"194":1,"198":1,"246":1,"257":1,"258":1}}],["their",{"2":{"16":1,"18":2,"92":1,"158":1,"193":1,"228":1}}],["they",{"2":{"16":2,"46":1,"237":1,"242":1,"246":1,"256":1,"257":1,"269":2}}],["then",{"0":{"90":1},"2":{"14":1,"37":1,"107":1,"187":1,"225":1,"260":1,"308":1,"348":1}}],["there",{"2":{"14":1,"220":1}}],["the",{"0":{"12":1,"30":1,"45":1,"66":1,"67":1,"78":1,"94":1,"106":1,"128":1,"147":1,"230":1,"231":1,"240":1,"260":1,"345":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"261":1,"262":1,"263":1,"264":1,"265":1},"2":{"1":1,"3":2,"5":3,"6":2,"7":2,"8":1,"10":2,"11":1,"13":4,"14":12,"16":1,"17":2,"18":3,"19":3,"20":2,"21":1,"22":2,"23":5,"24":3,"25":4,"28":2,"29":1,"30":3,"31":1,"33":4,"34":3,"35":7,"36":1,"37":2,"38":1,"39":1,"40":3,"41":3,"42":1,"43":4,"44":5,"45":2,"46":1,"49":6,"50":5,"51":2,"54":3,"55":1,"56":2,"59":1,"60":3,"61":3,"62":4,"63":4,"64":2,"65":1,"66":6,"67":5,"68":4,"71":2,"72":4,"73":3,"77":1,"78":5,"79":3,"82":1,"83":3,"85":3,"86":1,"87":4,"88":5,"90":4,"91":4,"92":2,"94":2,"97":2,"98":3,"99":1,"100":3,"101":3,"103":8,"105":2,"106":6,"107":20,"108":4,"109":3,"110":5,"111":3,"112":4,"113":5,"114":3,"115":1,"116":4,"117":3,"119":5,"120":4,"121":3,"123":2,"124":5,"125":4,"126":9,"127":1,"128":4,"129":1,"130":7,"131":7,"132":1,"136":2,"137":2,"139":5,"140":2,"142":3,"143":4,"144":3,"145":3,"146":2,"147":3,"148":3,"149":6,"150":8,"151":5,"152":3,"153":11,"154":8,"155":3,"156":2,"157":4,"158":1,"159":1,"160":2,"161":2,"162":4,"163":3,"166":2,"167":4,"168":2,"169":7,"170":7,"171":3,"172":2,"173":1,"174":4,"175":3,"176":3,"177":4,"178":1,"179":3,"180":1,"181":2,"182":9,"183":6,"184":2,"185":4,"186":1,"187":3,"188":2,"189":3,"190":3,"191":8,"192":3,"193":7,"194":6,"195":2,"196":3,"197":6,"200":3,"201":4,"202":4,"203":1,"204":3,"206":2,"208":2,"209":1,"213":5,"214":5,"215":2,"216":2,"217":1,"218":4,"219":6,"220":7,"221":3,"222":1,"223":6,"225":2,"226":10,"227":3,"228":4,"230":4,"231":2,"232":9,"234":1,"235":3,"236":9,"237":8,"238":6,"239":6,"240":2,"242":6,"245":9,"246":5,"247":1,"249":2,"251":5,"252":5,"253":4,"254":3,"255":1,"256":6,"257":4,"258":5,"259":6,"261":3,"262":1,"263":2,"264":1,"265":3,"266":4,"267":2,"269":3,"270":6,"271":4,"272":1,"273":1,"275":1,"276":1,"278":5,"279":4,"281":6,"282":2,"283":1,"284":1,"285":1,"288":1,"289":1,"290":1,"291":1,"292":1,"294":1,"295":1,"296":2,"298":4,"300":5,"301":4,"303":4,"304":1,"305":11,"307":8,"308":1,"309":3,"311":2,"312":1,"313":3,"314":3,"316":4,"317":2,"318":1,"322":3,"323":2,"324":5,"325":3,"327":1,"328":1,"329":1,"330":3,"331":5,"332":1,"334":2,"335":1,"336":4,"337":2,"338":1,"339":2,"340":1,"341":4,"342":2,"344":4,"345":1,"346":3,"347":3,"348":3,"349":7,"351":1}}],["themselves",{"2":{"132":1}}],["them",{"2":{"1":1,"5":1,"106":1,"175":1,"192":2,"214":1,"240":1,"255":3,"267":1,"268":1}}],["wrote",{"2":{"14":1}}],["writes",{"2":{"261":1}}],["write",{"2":{"4":1,"169":1,"179":1,"245":1,"255":1,"256":1,"273":1,"281":1,"282":2}}],["way",{"2":{"171":1,"187":1,"271":1,"278":1,"303":1}}],["ways",{"2":{"127":1,"229":1,"267":1}}],["warning",{"2":{"113":1}}],["walks",{"2":{"59":1}}],["want",{"2":{"16":2,"20":1,"30":1,"49":1,"94":1,"123":1,"130":1,"151":1,"154":1,"162":1,"195":1,"200":1,"201":1,"202":1,"218":1,"219":1,"238":1,"239":2,"264":1,"265":2,"267":1,"278":1,"279":1,"281":1,"298":1,"301":1}}],["wanted",{"2":{"14":2}}],["wasn",{"2":{"14":1}}],["was",{"2":{"14":1,"170":1,"183":1,"242":1,"282":1}}],["wait",{"2":{"14":1}}],["worse",{"2":{"14":1}}],["world",{"2":{"13":1,"33":1}}],["works",{"0":{"316":1},"2":{"153":1,"238":1,"305":1,"314":1}}],["workspaces",{"0":{"4":1},"2":{"33":1,"326":1}}],["workspace",{"0":{"147":1},"2":{"1":1,"4":2,"8":1,"70":1,"73":1,"137":1,"179":1,"307":2,"309":1,"311":1,"340":2}}],["working",{"2":{"153":1,"189":1,"220":1}}],["workflow",{"0":{"268":1},"2":{"90":1,"198":1,"200":1,"328":1}}],["workflows",{"2":{"3":1,"13":1,"33":1,"200":1,"256":1,"314":1}}],["work",{"2":{"6":1,"8":1,"94":1,"236":1,"246":1,"269":1,"272":1}}],["width",{"2":{"117":2}}],["will",{"2":{"20":1,"23":1,"40":1,"45":1,"54":1,"56":1,"60":1,"62":1,"67":1,"73":1,"78":1,"88":1,"103":1,"113":1,"124":1,"141":1,"157":1,"191":1,"193":1,"194":1,"213":1,"230":1,"239":1,"254":2,"258":1,"307":1,"308":1,"324":1,"337":1,"342":1}}],["window",{"0":{"131":1,"206":1},"2":{"5":1,"78":1,"107":1,"124":1,"126":1,"131":1,"204":1,"206":2,"234":1,"245":1}}],["within",{"2":{"18":1,"70":1,"91":1,"146":1,"147":1,"174":1,"257":1}}],["without",{"2":{"4":1,"10":1,"14":2,"140":1,"146":1,"162":1,"176":1,"192":1,"213":1,"224":1,"234":1,"235":1,"238":1,"239":1,"264":2,"267":1,"278":1,"305":2,"308":1,"315":1,"328":1}}],["with",{"0":{"90":1,"97":1,"98":1,"179":1,"238":1},"1":{"239":1,"240":1},"2":{"1":1,"4":2,"6":2,"10":2,"13":2,"14":1,"15":1,"17":1,"18":3,"20":1,"27":1,"32":1,"33":3,"36":2,"43":1,"46":1,"51":1,"53":1,"54":1,"57":1,"60":1,"62":1,"70":1,"74":1,"76":1,"81":1,"82":1,"85":1,"87":2,"94":1,"98":1,"99":2,"100":1,"102":1,"106":1,"117":1,"120":1,"121":1,"122":1,"124":1,"134":1,"142":1,"152":1,"158":1,"163":1,"169":1,"173":1,"175":1,"176":1,"180":1,"193":1,"198":2,"208":1,"219":1,"220":1,"227":2,"232":1,"235":1,"236":1,"245":1,"256":1,"258":1,"259":2,"263":1,"265":1,"268":1,"273":2,"301":1,"303":1,"304":1,"305":1,"307":2,"308":2,"312":1,"314":3,"316":2,"322":1,"325":1,"326":1,"330":2,"332":1,"349":1,"351":1}}],["which",{"2":{"56":1,"62":1,"128":1,"205":1,"214":1,"218":1,"225":1,"245":1,"266":1,"316":1}}],["while",{"2":{"5":1,"14":1,"57":1,"80":1,"81":1,"201":1,"305":1,"310":1}}],["whose",{"2":{"88":1,"207":1}}],["who",{"2":{"56":1,"62":1,"82":1,"151":1,"273":1,"309":1}}],["whole",{"2":{"10":1}}],["why",{"0":{"16":1,"124":1},"2":{"14":1,"282":1,"305":1}}],["whether",{"2":{"128":1,"130":1,"150":1,"170":1,"183":1,"221":1,"226":1,"237":1,"282":1}}],["where",{"0":{"11":1,"257":1},"2":{"6":1,"10":1,"11":1,"13":1,"14":1,"19":2,"90":1,"94":1,"104":1,"153":1,"203":1,"222":1,"240":1,"246":1,"327":1}}],["when",{"2":{"5":1,"14":2,"17":1,"44":1,"67":1,"78":1,"81":1,"83":1,"85":1,"90":1,"91":1,"94":1,"101":3,"107":1,"110":1,"119":1,"120":1,"126":2,"130":3,"132":2,"151":1,"154":1,"162":1,"163":1,"180":1,"183":1,"193":1,"197":2,"200":1,"202":1,"204":1,"206":1,"207":1,"214":1,"218":1,"219":1,"225":1,"226":2,"232":1,"235":1,"236":5,"237":2,"239":1,"242":1,"246":1,"254":1,"256":1,"264":1,"265":1,"270":1,"279":1,"281":1,"282":1,"296":1,"298":1,"305":1,"307":1,"309":1,"340":1,"344":1}}],["what",{"0":{"1":1,"2":1,"15":1,"94":1,"125":1,"256":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"2":{"6":1,"11":1,"13":2,"14":1,"108":1,"222":1,"226":1,"237":1,"246":1,"279":1,"305":1}}],["week",{"2":{"227":1}}],["weixin",{"2":{"34":1}}],["weighted",{"2":{"305":1}}],["weights",{"2":{"305":2,"316":1}}],["weight",{"2":{"14":1}}],["wework",{"0":{"70":1},"1":{"71":1,"72":1,"73":1,"74":1,"75":1},"2":{"33":1,"137":1}}],["were",{"2":{"14":1,"130":1,"163":1,"266":1}}],["we",{"2":{"13":2,"14":2,"17":1,"19":2,"20":2}}],["webm",{"2":{"345":1}}],["webp",{"2":{"178":1}}],["websites",{"2":{"115":1,"120":1}}],["websocket",{"2":{"35":1,"72":2,"73":1}}],["webhook",{"0":{"40":1,"141":1,"143":1},"2":{"7":1,"24":1,"33":1,"34":1,"35":1,"40":2,"64":1,"65":1,"66":1,"67":1,"137":3,"141":2,"143":1,"144":1}}],["web",{"0":{"240":1},"2":{"1":1,"6":1,"7":1,"8":2,"10":1,"24":1,"31":1,"33":1,"44":1,"47":1,"50":1,"55":1,"56":1,"61":1,"62":1,"66":1,"72":1,"77":1,"105":1,"107":2,"131":1,"151":1,"176":1,"195":1,"206":1,"232":1,"237":1,"238":2,"240":1,"242":1,"247":1,"249":1,"269":1,"278":2,"300":1,"301":1,"303":1,"304":3,"310":1,"311":2,"326":1}}],["wechatoa",{"2":{"34":1}}],["wechat",{"0":{"34":2,"64":1,"67":1,"76":1,"77":1,"142":1,"143":1},"1":{"65":1,"66":1,"67":1,"68":1,"69":1,"77":1,"78":1,"79":1,"80":1,"81":1},"2":{"1":2,"7":4,"33":2,"34":4,"64":2,"65":2,"66":1,"67":3,"76":2,"77":1,"78":2,"79":1,"105":1,"137":7,"142":2,"143":3,"326":2}}],["wecom",{"0":{"70":1,"71":1},"1":{"71":1,"72":1,"73":1,"74":1,"75":1},"2":{"1":1,"7":1,"33":2,"70":2,"71":1,"72":2,"73":2,"75":2,"105":1,"137":2,"326":1}}],["icon",{"2":{"242":1}}],["ignored",{"2":{"266":1}}],["ignore",{"2":{"117":1}}],["irreversible",{"2":{"113":1}}],["io",{"2":{"49":1}}],["idf",{"2":{"305":1}}],["ideas",{"2":{"270":1}}],["identity",{"0":{"56":1,"62":1},"2":{"50":1,"56":2,"62":3,"86":2,"91":2,"97":1,"100":1,"101":1,"258":1,"276":1,"282":2,"296":1}}],["identities",{"2":{"3":1,"82":1,"98":1}}],["identifier",{"2":{"43":1,"72":1,"150":1,"175":1,"204":1}}],["ids",{"2":{"35":1}}],["id",{"2":{"34":1,"37":1,"40":1,"43":2,"44":2,"45":1,"65":1,"66":1,"71":1,"72":1,"91":4,"93":4,"111":1,"117":1,"150":1,"192":1,"202":1,"204":1,"217":1,"231":1,"287":2,"288":2,"340":4,"345":1}}],["if",{"2":{"14":1,"20":1,"32":1,"39":1,"45":1,"65":2,"66":1,"72":1,"78":1,"88":1,"94":1,"103":1,"106":1,"107":1,"111":1,"122":1,"123":1,"141":1,"142":1,"143":1,"144":1,"149":1,"150":1,"152":2,"153":1,"154":1,"169":3,"195":1,"196":1,"201":1,"202":1,"205":1,"206":1,"222":2,"232":1,"238":1,"258":1,"259":1,"267":1,"268":1,"272":1,"278":1,"281":1,"301":1,"305":1,"308":1,"312":1,"324":1}}],["i",{"2":{"14":7}}],["italic",{"2":{"57":1,"63":1}}],["iterate",{"2":{"19":1}}],["it",{"0":{"124":1,"125":1},"2":{"10":1,"14":9,"19":2,"20":1,"23":1,"25":1,"27":1,"28":2,"30":2,"42":1,"48":1,"53":1,"54":2,"56":1,"64":1,"67":1,"70":1,"76":1,"78":1,"111":1,"117":1,"125":2,"134":1,"135":1,"141":1,"147":1,"149":1,"150":1,"151":1,"155":1,"158":1,"171":2,"177":1,"180":2,"185":1,"198":1,"202":1,"205":1,"206":1,"214":1,"218":1,"222":2,"225":2,"226":1,"227":2,"236":1,"237":1,"243":1,"245":1,"247":1,"248":1,"256":2,"261":1,"264":1,"265":2,"267":3,"271":1,"272":1,"278":1,"301":1,"305":4,"308":1,"314":1,"316":1,"318":1,"333":1,"335":1,"340":1,"343":1}}],["itself",{"2":{"125":1,"179":1,"218":1,"223":1,"230":1,"269":1}}],["its",{"2":{"1":3,"4":1,"18":1,"89":1,"102":1,"104":2,"106":1,"107":1,"108":1,"113":1,"117":1,"118":1,"140":1,"146":1,"154":1,"169":1,"171":1,"172":2,"175":1,"179":2,"181":1,"185":2,"187":1,"193":1,"194":1,"206":1,"223":1,"225":1,"232":1,"234":1,"235":1,"244":1,"246":1,"252":1,"254":1,"261":1,"264":1,"318":1,"319":1,"324":1,"327":1,"329":1,"330":1,"335":1,"337":1,"338":1,"340":1,"342":1,"345":1}}],["im",{"2":{"39":2,"40":1}}],["improve",{"2":{"218":1}}],["importance",{"2":{"305":1,"316":1}}],["important",{"0":{"154":1},"2":{"5":1,"43":1,"54":1,"106":1,"124":1,"203":1,"204":1,"206":1,"258":1,"308":1}}],["imported",{"0":{"267":1},"2":{"257":1,"267":1,"344":1,"349":1}}],["importing",{"0":{"202":1},"2":{"159":1}}],["import",{"0":{"159":1,"161":1},"1":{"160":1,"161":1,"162":1},"2":{"105":1,"161":1,"192":2,"202":2,"328":1}}],["impact",{"2":{"20":1}}],["immediately",{"2":{"127":1,"145":1}}],["immediate",{"0":{"127":1},"1":{"128":1,"129":1},"2":{"10":1,"33":1,"245":1,"276":1,"298":1}}],["images",{"0":{"178":1},"2":{"32":1,"57":1,"63":1,"81":1,"205":2,"257":1,"310":1,"312":1}}],["image",{"0":{"207":1},"2":{"9":3,"105":1,"107":5,"121":1,"149":2,"150":2,"154":1,"178":1,"203":1,"204":1,"205":1,"207":3,"210":2,"211":1,"305":1,"307":3,"311":1,"313":4}}],["injected",{"2":{"256":1}}],["initiated",{"2":{"236":1}}],["initialize",{"2":{"149":1,"310":1}}],["initial",{"2":{"106":1,"110":1}}],["inquiries",{"2":{"171":1}}],["inbox",{"2":{"169":1}}],["inbound",{"2":{"22":1,"40":1,"48":1,"49":1,"64":1,"137":1,"141":1,"144":1}}],["inherits",{"2":{"103":1,"107":1}}],["incremented",{"2":{"232":1}}],["increases",{"2":{"124":1}}],["inconsistent",{"2":{"219":1}}],["incoming",{"2":{"85":1,"86":1,"169":1,"171":1}}],["including",{"2":{"8":1,"9":1,"113":1,"228":1}}],["included",{"2":{"330":1}}],["includes",{"2":{"10":1,"108":1,"111":1,"163":1,"214":1,"303":1}}],["include",{"2":{"7":1,"115":1,"121":1,"130":1,"194":1,"196":1,"207":1,"245":1,"313":1}}],["input",{"2":{"55":1,"126":1,"189":1,"205":1,"245":1}}],["invocation",{"2":{"246":1}}],["invoked",{"2":{"119":1}}],["involves",{"2":{"165":1}}],["involved",{"2":{"101":1,"130":1}}],["involve",{"2":{"35":1}}],["invalid",{"2":{"117":1}}],["invited",{"2":{"44":1}}],["invites",{"2":{"44":1,"45":1}}],["invite",{"0":{"30":1,"45":1},"2":{"45":1}}],["inferred",{"2":{"239":1}}],["inference",{"2":{"17":1,"19":1,"20":1}}],["influences",{"2":{"107":1}}],["inflate",{"2":{"14":1}}],["info",{"2":{"37":1,"103":1,"311":1}}],["information",{"0":{"150":1},"2":{"14":1,"39":1,"120":1,"133":1,"163":1,"196":1,"212":1,"221":1,"245":1,"247":1,"254":1}}],["infrastructure",{"0":{"320":1},"1":{"321":1,"322":1,"323":1},"2":{"14":1,"16":1,"19":1,"20":1,"314":1,"321":1,"338":1}}],["into",{"2":{"13":1,"14":1,"35":1,"40":1,"61":1,"67":1,"125":1,"141":1,"143":1,"160":1,"161":1,"175":1,"202":1,"216":1,"230":1,"235":1,"236":1,"256":1,"257":1,"259":1,"261":1,"265":1,"266":1,"267":1,"271":1,"305":1,"316":1,"348":1}}],["introduction",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"21":1}}],["integrated",{"2":{"173":1,"176":1}}],["integrating",{"2":{"36":1}}],["integration",{"2":{"7":2,"32":1,"33":7,"34":2,"64":1,"137":3}}],["integrations",{"2":{"1":1,"7":1,"326":1}}],["intended",{"2":{"64":1,"69":1,"94":1,"269":1}}],["intentionally",{"2":{"107":1,"242":1}}],["intent",{"2":{"29":3}}],["intents",{"2":{"29":1}}],["intelligence",{"2":{"14":1}}],["interrupt",{"2":{"279":1}}],["intercepted",{"2":{"269":1}}],["internal",{"2":{"237":1,"257":1}}],["internet",{"2":{"14":1}}],["intervention",{"2":{"224":1}}],["intervene",{"2":{"179":1}}],["interval",{"2":{"108":1,"181":1,"182":1,"233":1,"287":2}}],["interference",{"2":{"234":1}}],["interfering",{"2":{"4":1}}],["interface",{"2":{"18":1,"33":1,"151":1,"184":1}}],["interactive",{"2":{"105":1,"112":1}}],["interactions",{"2":{"48":1,"212":1}}],["interaction",{"0":{"120":1,"171":1,"179":1,"185":1,"194":1,"223":1,"254":1},"2":{"9":1}}],["interact",{"2":{"1":1,"3":1,"27":1,"33":1,"36":1,"51":1,"53":1,"70":1,"76":1,"82":1,"120":1,"134":1,"176":1}}],["inspect",{"2":{"101":2,"114":1,"120":1,"133":1,"276":4}}],["inspection",{"0":{"280":1},"1":{"281":1,"282":1,"283":1,"284":1,"285":1},"2":{"10":1,"266":1,"269":1}}],["instruction",{"2":{"226":1,"233":1,"256":1}}],["instead",{"2":{"106":1,"120":1,"133":1,"200":1,"268":1,"270":1,"272":1,"338":1}}],["install",{"0":{"300":1,"301":1,"307":1,"308":1},"1":{"309":1},"2":{"121":1,"147":1,"255":1,"257":1,"267":1,"268":1,"300":2,"301":1,"303":1,"307":3,"309":1,"313":1,"328":1}}],["installation",{"0":{"303":1},"1":{"304":1,"305":1,"306":1,"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1},"2":{"8":1,"11":1,"327":1}}],["instance",{"2":{"49":3,"50":1,"51":1,"149":1,"150":1,"331":1}}],["instances",{"2":{"48":1,"348":1}}],["instinct",{"2":{"14":1}}],["inside",{"2":{"4":1,"8":1,"112":1,"154":1,"172":1,"189":1,"257":2,"271":1,"276":1,"303":1,"305":1}}],["indices",{"2":{"305":1,"316":1}}],["indicator",{"2":{"220":1}}],["indicators",{"2":{"55":1,"57":1,"80":1,"81":1}}],["individual",{"2":{"3":1,"46":1,"74":1,"81":1,"86":1}}],["indexed",{"2":{"318":1}}],["indexes",{"2":{"219":1}}],["indexing",{"2":{"17":1,"19":1,"208":1,"214":1,"321":1,"338":1}}],["index",{"2":{"17":1,"219":1,"221":2,"315":1}}],["independently",{"2":{"235":1}}],["independent",{"2":{"6":1,"102":1,"187":1,"234":1,"236":1,"246":1}}],["in",{"0":{"66":1,"77":1,"239":1,"240":1,"260":1,"271":1,"314":1,"317":1,"318":1},"1":{"261":1,"262":1,"263":1,"264":1,"265":1,"315":1,"316":1,"317":1,"318":1,"319":2,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1},"2":{"1":2,"3":2,"4":1,"8":1,"14":1,"16":1,"18":3,"19":1,"20":1,"24":2,"25":1,"26":1,"28":1,"30":1,"31":1,"33":1,"35":1,"36":1,"37":2,"38":1,"40":3,"41":2,"42":1,"44":3,"46":1,"49":1,"50":1,"51":1,"54":1,"55":1,"56":2,"59":1,"60":1,"61":1,"62":1,"64":1,"66":2,"68":1,"71":1,"72":2,"73":2,"74":2,"77":1,"79":1,"88":1,"93":2,"94":4,"103":2,"106":2,"107":1,"108":1,"111":1,"113":1,"115":1,"116":2,"117":3,"120":1,"122":1,"123":1,"125":1,"126":1,"127":1,"130":1,"131":1,"136":1,"139":1,"141":1,"146":1,"148":1,"150":1,"151":2,"152":1,"153":3,"156":1,"157":1,"166":1,"167":1,"168":1,"171":2,"172":1,"177":2,"178":1,"179":1,"182":2,"187":2,"188":1,"192":1,"194":1,"197":1,"204":1,"206":1,"209":1,"210":1,"213":2,"214":1,"215":1,"216":1,"217":1,"218":1,"219":2,"223":1,"227":1,"229":1,"230":1,"236":1,"237":6,"238":1,"242":1,"245":1,"246":2,"249":1,"251":1,"252":2,"256":1,"257":1,"259":1,"261":2,"262":1,"265":1,"266":1,"267":1,"269":3,"272":1,"273":1,"278":2,"279":1,"281":1,"298":1,"299":1,"300":2,"301":2,"303":1,"304":1,"305":3,"308":1,"309":2,"310":1,"312":1,"313":2,"314":3,"316":1,"317":1,"318":1,"322":1,"323":2,"324":1,"329":1,"330":1,"331":1,"332":1,"334":1,"339":1,"347":1,"348":2,"349":1}}],["issues",{"2":{"220":1,"237":1}}],["issue",{"2":{"183":1,"220":1}}],["isolation",{"0":{"235":1},"2":{"146":1}}],["isolated",{"0":{"147":1},"2":{"1":1,"4":1,"17":1,"18":1,"19":1,"102":1,"146":1,"172":1,"326":1}}],["is",{"0":{"1":1},"2":{"1":1,"3":1,"5":1,"9":1,"10":1,"13":1,"14":3,"15":1,"17":2,"18":2,"20":2,"23":1,"25":1,"34":2,"41":1,"45":1,"48":1,"49":1,"51":2,"54":1,"59":1,"62":1,"64":3,"67":1,"69":1,"73":1,"76":1,"78":1,"79":1,"83":5,"88":2,"90":1,"93":1,"94":6,"96":1,"101":4,"102":1,"106":1,"107":1,"108":1,"109":1,"113":1,"114":1,"115":1,"117":1,"120":1,"123":1,"125":1,"126":1,"128":1,"130":2,"137":2,"142":1,"149":1,"151":3,"154":1,"155":1,"156":1,"160":1,"162":1,"179":1,"181":2,"182":1,"191":1,"193":1,"194":1,"198":1,"200":1,"201":2,"203":1,"206":2,"208":1,"214":2,"218":3,"219":1,"220":3,"221":1,"224":1,"225":1,"226":1,"227":1,"232":3,"234":1,"236":1,"237":5,"238":1,"239":2,"245":1,"246":1,"248":1,"256":2,"258":3,"259":1,"262":1,"265":1,"267":1,"270":4,"271":1,"278":2,"279":3,"282":2,"296":2,"298":1,"299":1,"303":1,"305":1,"308":2,"311":1,"312":1,"314":1,"324":1,"325":1,"326":1,"332":1,"333":1,"338":1,"343":1,"344":2,"348":1,"349":1}}],["cp",{"2":{"308":1}}],["cd",{"2":{"308":1}}],["cdi",{"0":{"151":1,"152":1},"1":{"152":1,"153":1,"154":1},"2":{"150":2,"151":2,"152":3,"153":11,"154":3}}],["c",{"2":{"294":1}}],["cwd",{"2":{"189":1}}],["ctk",{"2":{"153":2}}],["certificates",{"2":{"117":1}}],["ceiling",{"2":{"16":1}}],["cni",{"2":{"311":1}}],["cn",{"2":{"117":1,"307":2,"309":3,"313":1}}],["c2c",{"2":{"57":1}}],["cuda",{"2":{"154":1}}],["custom",{"2":{"37":1,"40":1,"71":1,"72":1,"111":1,"117":1,"190":1,"233":1}}],["curl",{"2":{"307":1}}],["curated",{"2":{"8":1,"187":1}}],["currently",{"2":{"6":1,"33":1,"150":2,"198":1,"222":1,"226":1,"242":1,"258":1,"270":1,"281":1,"295":1,"351":1}}],["current",{"2":{"5":1,"7":1,"26":1,"52":1,"69":1,"101":1,"120":1,"127":1,"128":1,"129":1,"131":1,"155":1,"163":1,"174":1,"191":1,"209":1,"220":1,"226":1,"232":1,"238":2,"245":2,"266":1,"270":3,"271":1,"275":1,"278":2,"279":3,"281":3,"282":1,"285":1,"288":3,"289":2,"290":2,"291":2,"298":2}}],["claude",{"2":{"204":1}}],["class",{"2":{"14":1}}],["clash",{"2":{"14":1}}],["clear",{"2":{"184":1,"256":1,"268":1}}],["cleaning",{"2":{"181":1}}],["clean",{"2":{"162":1,"184":1,"239":1}}],["cleaner",{"2":{"14":1}}],["clone",{"2":{"307":1,"308":1}}],["close",{"2":{"126":1}}],["closer",{"2":{"92":1,"131":1}}],["closed",{"2":{"14":1}}],["cloud",{"2":{"15":1,"16":1,"17":1,"19":1,"20":1,"338":1}}],["clicking",{"2":{"104":1,"115":1,"240":1}}],["click",{"0":{"307":1},"2":{"24":2,"28":2,"31":2,"37":2,"38":1,"39":1,"40":1,"41":1,"44":2,"50":2,"54":1,"55":2,"56":1,"61":2,"62":1,"66":1,"72":2,"77":1,"78":2,"91":2,"92":1,"103":2,"113":1,"114":1,"116":2,"119":1,"120":1,"128":1,"139":1,"152":1,"156":1,"157":1,"160":1,"161":1,"167":2,"169":2,"175":1,"177":2,"178":1,"191":2,"192":1,"193":1,"197":1,"202":1,"213":1,"219":1,"228":1,"240":1,"243":1,"251":1,"253":1,"261":1,"300":1,"301":1,"317":2,"324":1,"334":2,"336":1,"339":2,"341":1,"344":2,"345":1,"346":1,"349":3}}],["clicks",{"2":{"14":1}}],["client",{"0":{"198":1},"2":{"9":1,"43":4,"45":1,"47":1,"196":1,"197":3,"198":2,"200":1,"201":1,"327":1}}],["circling",{"2":{"13":1}}],["china",{"0":{"309":1},"2":{"307":1,"309":2,"313":1}}],["chromium",{"2":{"117":1,"121":3,"313":1}}],["checking",{"2":{"224":1,"269":1}}],["checks",{"2":{"105":1,"181":1}}],["checked",{"2":{"88":1}}],["check",{"2":{"46":1,"169":1,"191":1,"233":1,"246":1,"307":1}}],["cheaply",{"2":{"131":1}}],["cheap",{"2":{"16":1}}],["choices",{"2":{"14":1}}],["choose",{"2":{"11":1,"23":1,"24":1,"34":1,"35":1,"40":1,"49":1,"50":1,"60":2,"66":2,"91":1,"96":1,"97":1,"98":1,"167":1,"190":1,"192":1,"202":1,"300":1,"301":1}}],["changing",{"2":{"328":1}}],["changed",{"2":{"219":1}}],["change",{"2":{"92":1,"125":1,"139":1,"152":1,"154":1,"227":1,"239":1,"308":1,"310":1}}],["changes",{"0":{"125":1},"2":{"5":1,"29":1,"125":1,"155":1,"163":1,"174":1,"177":1,"222":1}}],["chance",{"2":{"124":1}}],["channels",{"0":{"33":1,"134":1,"136":1,"239":1},"1":{"34":1,"35":1,"135":1,"136":1,"137":2,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"2":{"3":1,"10":2,"11":1,"33":3,"99":1,"101":1,"102":1,"105":1,"134":1,"135":1,"238":1,"246":1,"328":1}}],["channel",{"0":{"7":1,"22":1,"27":1,"36":1,"42":1,"48":1,"53":1,"59":1,"64":1,"66":1,"70":1,"76":1,"77":1,"100":1,"139":1,"165":1},"1":{"23":1,"24":1,"25":1,"26":1,"28":1,"29":1,"30":1,"31":1,"32":1,"37":1,"38":1,"39":1,"40":1,"41":1,"43":1,"44":1,"45":1,"46":1,"47":1,"49":1,"50":1,"51":1,"52":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"61":1,"62":1,"63":1,"65":1,"66":1,"67":1,"68":1,"69":1,"71":1,"72":1,"73":1,"74":1,"75":1,"77":1,"78":1,"79":1,"80":1,"81":1},"2":{"1":1,"7":1,"18":1,"24":1,"25":1,"31":1,"35":3,"40":1,"44":1,"50":1,"51":1,"55":1,"56":1,"57":1,"61":1,"62":1,"66":3,"68":1,"69":1,"72":1,"73":1,"77":1,"79":1,"82":2,"86":4,"91":6,"93":2,"97":1,"98":1,"99":1,"100":4,"105":1,"139":2,"140":1,"142":1,"143":2,"144":1,"145":3,"164":1,"225":1,"226":1,"232":1,"238":3,"269":1,"278":3,"282":2,"326":1,"328":1}}],["chatbot",{"2":{"237":1}}],["chatbox",{"2":{"19":1}}],["chatgpt",{"2":{"198":1,"200":1}}],["chatting",{"0":{"51":1,"73":1,"79":1},"2":{"87":1,"180":1,"236":1}}],["chats",{"2":{"3":1,"22":2,"26":2,"36":1,"69":2,"73":1,"74":1,"94":1,"103":1,"272":1}}],["chat",{"0":{"96":1,"204":1,"237":1},"1":{"205":1,"206":1,"207":1},"2":{"1":1,"6":1,"9":3,"11":2,"18":2,"25":1,"32":1,"33":3,"39":2,"62":1,"83":2,"85":2,"87":1,"91":1,"93":1,"98":1,"99":1,"100":1,"102":1,"105":1,"106":1,"107":7,"108":1,"111":1,"129":1,"131":2,"132":1,"134":1,"135":1,"137":1,"171":1,"182":1,"195":1,"198":3,"201":1,"203":2,"204":1,"207":2,"209":2,"210":1,"211":1,"223":1,"235":1,"236":2,"237":2,"238":5,"239":1,"240":2,"242":2,"269":1,"272":1,"273":1,"275":1,"278":6,"282":1,"287":2,"288":1,"314":1,"327":1}}],["caching",{"2":{"245":1}}],["cache",{"2":{"6":1,"128":1,"245":4,"276":1,"281":2}}],["came",{"2":{"245":1,"265":1}}],["calculate",{"2":{"206":1}}],["called",{"2":{"230":1}}],["call",{"2":{"204":1,"205":2,"254":1}}],["callback",{"2":{"24":1,"35":1,"40":1,"66":1,"67":3,"141":1,"143":2,"144":1}}],["calls",{"2":{"17":1,"125":1,"222":1,"226":2,"231":1,"232":2,"233":1}}],["catalog",{"2":{"202":1,"299":1,"328":1}}],["category",{"2":{"14":1}}],["capturing",{"2":{"115":1}}],["captured",{"2":{"157":1}}],["capture",{"2":{"114":1,"155":1}}],["capable",{"2":{"107":1}}],["capability",{"0":{"38":1},"2":{"13":1,"15":1,"17":1,"23":1,"151":2,"249":1}}],["capabilities",{"0":{"187":1},"2":{"8":1,"38":1,"39":1,"105":1,"107":1,"168":1,"210":1,"314":1}}],["carried",{"2":{"125":1}}],["carry",{"2":{"14":1}}],["card",{"2":{"104":1,"262":1}}],["caught",{"2":{"14":1}}],["cases",{"2":{"115":1}}],["case",{"0":{"12":1,"141":1,"142":1,"143":1,"144":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"233":1,"315":1}}],["cannot",{"2":{"206":1,"309":1}}],["can",{"0":{"96":1},"2":{"1":1,"3":1,"4":1,"6":2,"7":1,"8":1,"10":1,"11":1,"13":1,"14":5,"18":3,"19":2,"25":1,"33":1,"42":1,"43":2,"46":1,"48":2,"51":1,"54":1,"63":1,"68":1,"73":1,"79":1,"82":2,"83":3,"85":2,"86":1,"92":1,"97":1,"98":1,"99":1,"100":1,"102":1,"104":1,"107":2,"108":2,"109":1,"114":2,"119":1,"120":1,"121":1,"126":1,"127":1,"131":2,"135":1,"147":1,"151":1,"152":1,"169":6,"171":1,"172":1,"179":1,"182":1,"185":1,"187":2,"191":1,"193":2,"202":3,"205":4,"206":1,"218":1,"219":1,"225":1,"227":1,"230":1,"231":1,"232":1,"237":1,"240":1,"246":1,"248":1,"254":1,"255":1,"257":1,"258":1,"259":1,"263":1,"265":1,"266":1,"273":1,"307":1,"325":1,"329":1,"333":1,"346":1,"348":2,"349":1}}],["crowd",{"2":{"124":1}}],["cross",{"2":{"56":1,"62":1}}],["cron",{"0":{"225":1,"227":1},"2":{"6":1,"18":1,"105":1,"224":1,"225":1,"226":1,"227":1,"228":1,"230":1,"232":1,"233":1,"236":1,"246":1}}],["credential",{"2":{"72":1}}],["credentials",{"0":{"65":1},"2":{"23":1,"35":1,"37":1,"50":1,"61":1,"71":1,"78":1,"139":1,"140":1,"196":1,"197":1,"251":1,"307":1,"311":1}}],["creating",{"0":{"103":1,"116":1,"156":1,"167":1,"197":1,"216":1,"229":1,"317":1,"334":1,"339":1,"344":1},"1":{"230":1,"231":1},"2":{"90":1,"106":1,"117":1,"150":1,"202":1,"269":1,"318":1,"335":1,"340":1}}],["creation",{"2":{"49":1,"83":1,"110":1,"111":1,"149":1,"154":1,"158":1,"314":1}}],["creates",{"2":{"238":1,"278":1}}],["created",{"2":{"104":1,"106":1,"119":1,"154":1,"169":1,"174":1,"229":1,"236":4,"246":2,"253":1,"259":1,"324":1,"336":1,"341":1,"344":1}}],["create",{"0":{"23":1,"28":1,"37":1,"43":1,"54":1,"60":1,"71":1},"2":{"1":1,"3":1,"11":1,"18":1,"23":1,"35":1,"37":2,"41":1,"49":1,"54":2,"60":1,"71":1,"83":1,"93":1,"103":2,"105":2,"116":1,"143":1,"149":1,"152":1,"156":1,"167":1,"169":1,"174":1,"213":1,"230":2,"231":1,"238":2,"239":1,"240":1,"257":1,"259":1,"270":2,"272":1,"273":1,"294":3,"308":1,"317":1,"325":1,"326":1,"327":1,"331":1,"334":1,"339":1,"344":1,"348":1,"349":1}}],["cohere",{"2":{"305":1}}],["collection",{"2":{"181":1,"318":2}}],["collaborate",{"2":{"18":1}}],["corresponding",{"2":{"246":1}}],["corrupted",{"2":{"162":1}}],["cores=chromium",{"2":{"121":1}}],["cores",{"2":{"121":4,"307":1,"313":1}}],["core",{"0":{"106":1,"121":1},"2":{"19":1,"105":1,"117":1,"121":1,"287":1,"304":3,"307":1,"308":1}}],["counter",{"2":{"232":1}}],["counts",{"2":{"228":1,"245":1}}],["count",{"2":{"130":1,"245":1,"281":1}}],["could",{"2":{"14":1}}],["covers",{"2":{"64":1}}],["coverage",{"0":{"7":1}}],["copies",{"2":{"265":1}}],["copilot",{"0":{"201":1},"2":{"9":1,"196":1,"197":1,"198":2,"199":1,"201":3}}],["copying",{"2":{"35":1}}],["copy",{"2":{"23":1,"28":1,"30":1,"37":1,"40":1,"54":1,"56":1,"62":1,"67":1,"141":1,"143":1,"259":1,"268":1}}],["coder",{"2":{"256":3,"257":1,"258":1}}],["code",{"0":{"78":1},"2":{"56":2,"57":1,"62":3,"63":1,"76":1,"78":3,"142":2,"146":1,"201":1,"256":1}}],["codex",{"0":{"200":1},"2":{"9":1,"196":1,"198":2,"199":1,"200":2}}],["coding",{"2":{"18":1,"198":1,"200":1,"256":1}}],["costs",{"2":{"305":1,"315":1}}],["cost",{"2":{"14":1,"316":1}}],["combined",{"2":{"307":1}}],["com",{"2":{"152":4,"200":1,"308":1}}],["come",{"0":{"257":1},"2":{"107":1}}],["comes",{"2":{"91":1,"102":1,"107":1}}],["commas",{"2":{"152":1}}],["command",{"0":{"270":1,"297":1},"1":{"298":1},"2":{"8":1,"10":1,"60":1,"101":1,"131":1,"189":3,"225":1,"226":1,"231":1,"232":2,"233":1,"236":1,"238":1,"256":1,"269":1,"270":1,"271":3,"272":2,"275":2,"282":3,"294":2,"327":1}}],["commands",{"0":{"129":1,"269":1,"275":1,"277":1,"280":1,"286":1,"293":1,"312":1},"1":{"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":2,"279":2,"280":1,"281":2,"282":2,"283":2,"284":2,"285":2,"286":1,"287":2,"288":2,"289":2,"290":2,"291":2,"292":2,"293":1,"294":2,"295":2,"296":2,"297":1,"298":1},"2":{"4":1,"6":1,"11":1,"18":2,"19":1,"30":1,"32":2,"112":1,"133":1,"146":1,"246":1,"269":2,"270":2,"272":2,"282":1,"327":1}}],["commonly",{"2":{"151":1}}],["common",{"0":{"140":1,"312":1},"2":{"83":1,"152":1,"177":1,"197":1,"227":1,"267":1}}],["communities",{"2":{"137":1}}],["community",{"2":{"27":1,"33":1}}],["communication",{"0":{"135":1},"2":{"107":1,"164":1}}],["communicates",{"2":{"189":1}}],["communicate",{"2":{"42":1}}],["comprehensive",{"2":{"249":1,"254":1}}],["compresses",{"2":{"218":1}}],["compression",{"2":{"218":1}}],["component",{"2":{"173":1}}],["compose",{"2":{"121":1,"169":1,"303":1,"304":1,"305":1,"306":1,"307":2,"308":3,"309":4,"312":6,"322":2,"323":1}}],["complement",{"2":{"233":1}}],["complete",{"2":{"256":1}}],["completes",{"2":{"201":1}}],["completed",{"2":{"130":1,"183":1}}],["completions",{"2":{"9":1,"198":2}}],["complex",{"2":{"102":1,"155":1}}],["compacted",{"2":{"130":1}}],["compact",{"0":{"298":1},"2":{"105":1,"126":1,"128":1,"129":2,"132":1,"218":1,"222":1,"245":2,"276":1,"298":2,"305":1,"316":1,"325":1}}],["compaction",{"0":{"109":1,"123":1,"126":1,"127":1,"132":2,"218":1,"297":1},"1":{"124":1,"125":1,"126":1,"127":1,"128":2,"129":2,"130":1,"131":1,"132":1,"133":1,"298":1},"2":{"5":3,"10":2,"105":2,"106":2,"107":1,"109":11,"123":1,"124":1,"125":1,"126":8,"127":1,"128":1,"129":1,"130":4,"131":2,"132":4,"133":1,"206":1,"214":2,"218":3,"222":5,"245":1,"276":1,"298":5,"314":1,"328":2}}],["compatibilities",{"0":{"205":1},"2":{"204":1,"207":1}}],["compatibility",{"2":{"107":1,"205":2,"257":3,"265":1,"267":1}}],["compatible",{"2":{"9":2,"196":1,"198":1}}],["compat",{"2":{"66":1}}],["compare",{"0":{"19":1}}],["computer",{"2":{"1":1,"18":1,"147":1,"175":1}}],["convert",{"2":{"316":1}}],["converts",{"2":{"305":1}}],["converse",{"2":{"171":1}}],["conversational",{"0":{"230":1},"2":{"124":1,"278":1}}],["conversation",{"0":{"235":1},"2":{"5":1,"15":1,"18":1,"91":4,"93":3,"107":1,"110":1,"123":1,"124":1,"128":1,"132":1,"203":1,"214":1,"216":2,"222":2,"234":1,"235":1,"236":3,"237":4,"238":1,"239":1,"242":1,"248":1,"270":2,"278":1,"279":1,"281":2,"282":1,"298":1}}],["conversations",{"2":{"3":1,"5":1,"6":1,"33":1,"42":1,"46":1,"51":1,"69":1,"74":2,"81":1,"83":2,"93":1,"94":1,"193":1,"210":1,"212":1,"222":1,"234":1,"236":1,"237":1,"238":2,"243":1,"246":1,"278":1,"314":1,"325":1,"348":1}}],["convenience",{"2":{"272":1}}],["conf",{"2":{"308":1}}],["confusing",{"2":{"101":1}}],["confirmed",{"2":{"78":1}}],["confirm",{"2":{"25":1,"68":1,"78":1,"90":1,"113":1,"300":1}}],["confidence",{"2":{"19":1}}],["config",{"2":{"10":1,"91":1,"100":1,"192":1,"227":1,"307":1,"308":3,"309":1,"310":1,"311":2,"313":3,"322":1,"323":1}}],["configurable",{"2":{"102":1,"348":1}}],["configurations",{"2":{"105":1,"163":1,"192":1}}],["configuration",{"0":{"22":1,"27":1,"36":1,"42":1,"48":1,"53":1,"59":1,"64":1,"70":1,"76":1,"138":1,"182":1,"204":1,"250":1,"286":1,"311":1},"1":{"23":1,"24":1,"25":1,"26":1,"28":1,"29":1,"30":1,"31":1,"32":1,"37":1,"38":1,"39":1,"40":1,"41":1,"43":1,"44":1,"45":1,"46":1,"47":1,"49":1,"50":1,"51":1,"52":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"61":1,"62":1,"63":1,"65":1,"66":1,"67":1,"68":1,"69":1,"71":1,"72":1,"73":1,"74":1,"75":1,"77":1,"78":1,"79":1,"80":1,"81":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"205":1,"206":1,"207":1,"251":1,"252":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1},"2":{"1":1,"10":1,"35":1,"67":1,"105":1,"115":1,"118":1,"137":10,"139":1,"140":1,"141":1,"143":1,"145":2,"155":1,"177":1,"191":1,"192":1,"213":1,"220":1,"252":1,"265":1,"285":1,"307":1,"313":1,"324":1,"347":1}}],["configuring",{"0":{"106":1,"117":1,"318":1,"335":1,"340":1,"345":1},"1":{"118":1,"319":1},"2":{"33":1,"106":1,"153":1}}],["configure",{"0":{"24":1,"29":1,"31":1,"39":1,"40":1,"44":1,"50":1,"55":1,"61":1,"67":1,"72":1,"152":1},"2":{"11":2,"18":1,"35":1,"55":1,"85":1,"89":1,"126":1,"135":1,"136":1,"140":1,"144":1,"165":1,"168":1,"182":1,"187":1,"188":1,"195":1,"198":1,"211":1,"249":1,"318":1,"327":1,"328":1,"331":1,"335":1,"340":1,"345":1,"349":1}}],["configured",{"2":{"9":1,"32":1,"33":1,"108":1,"120":1,"122":1,"125":1,"126":1,"143":1,"149":1,"151":1,"153":1,"213":1,"223":1,"227":1,"248":1,"292":1,"323":1,"346":1}}],["connected",{"2":{"220":1,"225":1,"232":1}}],["connects",{"2":{"190":1,"338":1}}],["connect",{"2":{"33":2,"48":1,"73":1,"134":1,"186":1,"247":1,"249":1}}],["connectivity",{"2":{"220":1}}],["connecting",{"2":{"27":1,"42":1,"53":1,"59":1,"70":1,"76":1,"142":1,"165":1}}],["connection",{"0":{"144":1,"188":1},"1":{"189":1,"190":1},"2":{"22":1,"24":1,"35":1,"50":1,"105":1,"144":1,"165":1,"189":1,"190":1,"191":2,"192":3,"193":2,"194":1,"196":1,"248":1,"301":2,"311":2}}],["connections",{"0":{"186":1},"1":{"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1},"2":{"8":1,"136":1,"166":1,"187":2,"188":1,"192":3,"276":1,"292":1}}],["concept",{"0":{"115":1,"135":1,"147":1,"165":1,"181":1,"187":1,"214":1,"225":1,"235":1,"248":1},"2":{"222":1}}],["concepts",{"0":{"84":1},"1":{"85":1,"86":1,"87":1,"88":1},"2":{"222":1}}],["conceptually",{"2":{"14":1}}],["conclusion",{"0":{"20":1}}],["consists",{"2":{"304":1}}],["consistently",{"2":{"3":1}}],["consume",{"2":{"269":1}}],["console",{"2":{"35":1,"38":1,"40":1,"41":1,"71":1}}],["constraint",{"2":{"14":1}}],["contribute",{"0":{"302":1},"2":{"302":1}}],["controlling",{"2":{"86":1}}],["control",{"0":{"82":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1},"2":{"10":1,"15":1,"17":1,"82":2,"86":1,"89":1,"110":1,"269":1,"327":1,"328":1}}],["controls",{"2":{"10":1,"110":1,"223":1,"311":1,"318":1}}],["continuing",{"2":{"298":1}}],["continuity",{"2":{"16":1,"20":1,"124":1}}],["continue",{"2":{"20":1,"122":1,"325":1,"351":1}}],["continuously",{"2":{"14":1}}],["contents",{"2":{"161":1}}],["content",{"2":{"14":1,"29":1,"32":1,"43":1,"46":1,"57":1,"74":1,"81":1,"114":1,"115":1,"177":1,"216":1,"217":1,"240":1,"256":1,"262":1,"264":1}}],["contextually",{"2":{"212":1}}],["contexts",{"0":{"114":1,"118":1},"1":{"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1},"2":{"106":1,"116":3,"276":1}}],["context",{"0":{"5":1,"116":1,"117":1,"119":1,"123":1,"131":1,"132":1,"206":1,"222":1,"297":1},"1":{"118":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"298":1},"2":{"5":2,"6":2,"13":2,"14":1,"16":2,"17":1,"18":1,"20":1,"63":1,"91":1,"101":1,"105":1,"106":1,"107":3,"109":5,"114":2,"115":1,"116":2,"117":1,"118":2,"119":3,"120":1,"123":3,"124":2,"125":2,"126":5,"128":1,"129":1,"130":1,"131":2,"132":2,"133":1,"186":2,"194":1,"204":2,"206":4,"214":3,"218":1,"222":3,"225":1,"232":1,"234":1,"235":2,"236":1,"238":2,"239":1,"245":3,"246":1,"276":3,"278":2,"281":1,"282":1,"291":1,"298":3,"328":2}}],["contains",{"2":{"21":1,"107":1,"236":3,"270":1}}],["containerd",{"2":{"150":1,"303":2,"304":1,"311":2}}],["containers",{"2":{"17":1,"18":1,"303":1}}],["containerization",{"2":{"16":1}}],["containerized",{"0":{"4":1,"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"1":1,"15":1,"17":1,"18":1,"19":1,"20":1,"326":1}}],["container",{"0":{"146":1,"150":1,"163":1},"1":{"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1},"2":{"4":1,"18":1,"19":1,"102":1,"105":5,"112":3,"113":1,"146":1,"147":1,"148":1,"149":5,"150":5,"151":4,"152":3,"153":2,"154":6,"155":1,"156":1,"157":1,"159":2,"160":1,"161":1,"162":2,"163":4,"172":1,"175":2,"189":1,"257":1,"276":1,"296":1,"305":3,"311":1,"316":1}}],["contact",{"2":{"13":1}}],["mp3",{"2":{"345":2}}],["md",{"2":{"177":1,"256":1,"257":3,"262":1,"296":1}}],["m",{"2":{"43":2}}],["my",{"2":{"60":2,"230":1,"231":1,"251":1}}],["mybot",{"2":{"43":1,"44":1}}],["myself",{"2":{"14":1}}],["mirrors",{"2":{"313":1}}],["mirror=true",{"2":{"307":2,"309":1}}],["mirror",{"0":{"309":1},"2":{"307":1,"309":1,"311":1,"313":1}}],["midnight",{"2":{"227":2}}],["migration",{"2":{"159":1}}],["minute",{"2":{"227":1}}],["minutes",{"2":{"108":1,"182":2,"227":1,"233":1,"287":1,"310":1}}],["minimum",{"2":{"39":1,"256":1,"308":1}}],["microsoft",{"2":{"198":1,"343":1,"350":1}}],["mic",{"2":{"14":1}}],["misskey",{"0":{"48":1,"49":1},"1":{"49":1,"50":1,"51":1,"52":1},"2":{"1":1,"7":1,"33":1,"48":3,"49":3,"50":2,"51":2,"105":1,"137":2,"238":1,"326":1}}],["must",{"2":{"65":1,"149":1,"151":1,"153":1,"207":1,"308":1,"313":1,"322":1,"323":1}}],["much",{"2":{"14":1,"125":1,"245":1}}],["multilingual",{"2":{"305":2,"316":1,"322":1}}],["multiple",{"2":{"1":1,"3":1,"9":1,"17":1,"18":1,"101":1,"112":1,"135":1,"147":1,"192":2,"212":1,"254":1,"257":1,"258":1,"304":1,"305":1,"316":1}}],["multi",{"0":{"3":2},"2":{"1":1,"14":1,"18":1,"19":1,"326":1}}],["mcpservers",{"2":{"192":1}}],["mcp",{"0":{"8":1,"186":1,"292":1,"301":1},"1":{"187":1,"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1},"2":{"8":2,"18":1,"32":1,"105":2,"179":1,"185":1,"186":1,"187":3,"188":2,"190":2,"191":2,"193":1,"194":3,"276":2,"292":4,"299":1,"301":2,"302":1,"328":2}}],["mounts",{"2":{"308":1}}],["morning",{"2":{"226":1,"231":1,"270":1,"272":1,"294":2}}],["more",{"2":{"1":1,"10":1,"14":3,"18":2,"19":1,"20":1,"46":1,"115":1,"124":1,"131":2,"135":1,"152":1,"184":1,"195":2,"218":1,"237":1,"305":1}}],["mono",{"2":{"345":3}}],["monologue",{"2":{"237":1}}],["monday",{"2":{"227":1}}],["month",{"2":{"227":3}}],["monitor",{"2":{"179":1,"219":1}}],["monitoring",{"0":{"183":1},"1":{"184":1},"2":{"171":1}}],["monaco",{"2":{"177":1}}],["move",{"2":{"174":1}}],["mobile",{"2":{"14":1,"35":1,"107":1,"114":1,"117":2}}],["moment",{"2":{"14":3}}],["most",{"2":{"14":1,"59":1,"94":1,"106":1,"111":1,"151":1,"199":1,"204":1,"210":1,"214":1,"237":1,"262":1,"270":1,"284":1}}],["modify",{"2":{"147":1,"177":1,"217":1}}],["modules",{"2":{"8":1,"255":1}}],["modes",{"0":{"315":1},"1":{"316":1},"2":{"205":1,"304":1,"305":1,"314":1,"330":1,"332":1}}],["modelcontextprotocol",{"2":{"189":1}}],["model",{"0":{"203":1,"204":1,"210":1,"270":1,"288":1,"345":1},"1":{"205":1,"206":1,"207":1},"2":{"10":1,"11":1,"15":1,"18":1,"34":1,"94":1,"105":1,"107":14,"108":3,"109":2,"111":1,"120":1,"124":2,"125":1,"126":3,"130":2,"131":4,"182":2,"186":1,"200":1,"202":2,"203":1,"204":3,"205":6,"206":2,"207":4,"210":4,"222":1,"223":1,"237":1,"245":1,"258":1,"269":1,"270":2,"271":2,"276":1,"283":2,"287":4,"288":15,"305":5,"315":1,"316":2,"318":2,"322":1,"323":1,"327":3,"344":1,"345":1,"346":2,"347":1,"348":3,"349":3}}],["models",{"0":{"9":1,"195":1,"202":1,"207":1,"208":1,"209":1},"1":{"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1},"2":{"9":5,"11":1,"13":1,"16":1,"105":1,"106":1,"107":3,"195":4,"197":1,"201":1,"202":4,"203":5,"208":2,"209":3,"210":1,"211":1,"276":1,"288":1,"305":1,"327":1,"348":1}}],["mode",{"0":{"6":1,"40":1,"316":1,"321":1,"322":1,"323":1},"2":{"40":1,"66":2,"67":1,"111":1,"137":1,"141":1,"143":1,"214":1,"219":1,"223":1,"236":1,"305":1,"315":1,"316":2,"318":2}}],["macos",{"2":{"308":1}}],["machine",{"2":{"153":2,"160":1,"161":1,"175":1}}],["masked",{"2":{"305":1}}],["marked",{"2":{"273":1}}],["markdown",{"2":{"26":1,"46":1,"51":1,"52":1,"55":2,"57":1,"59":1,"63":1,"105":1,"256":2,"261":1}}],["max",{"2":{"226":1,"231":1,"232":1,"233":1}}],["maximum",{"2":{"204":1}}],["mapped",{"2":{"140":1}}],["mail",{"2":{"171":1}}],["mailgun",{"2":{"33":1,"165":1,"167":1}}],["mainland",{"0":{"309":1},"2":{"307":1,"309":1,"313":1}}],["maintain",{"2":{"147":1,"235":1}}],["maintains",{"2":{"6":1,"24":1,"144":1,"234":1}}],["maintenance",{"2":{"109":1,"218":1,"224":1}}],["main",{"2":{"107":1,"108":1,"131":1,"182":1,"198":1,"203":1,"303":1,"304":1,"327":1}}],["may",{"2":{"23":1,"35":1,"65":1,"205":1,"214":1,"236":1,"251":1,"259":1,"310":1}}],["making",{"2":{"20":2,"263":1}}],["make",{"2":{"16":1,"49":1,"67":1,"213":1,"218":1}}],["makes",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"2":{"13":1,"16":1,"223":1,"237":1}}],["matter",{"2":{"110":1}}],["matters",{"2":{"88":1,"209":1,"257":1}}],["mattered",{"2":{"14":1}}],["match",{"2":{"153":1,"308":1,"313":1}}],["matching",{"2":{"88":2}}],["matches",{"2":{"34":1,"85":1,"86":1,"88":2,"110":1,"153":1}}],["matrix",{"0":{"42":1,"43":1},"1":{"43":1,"44":1,"45":1,"46":1,"47":1},"2":{"1":1,"7":1,"33":2,"42":3,"43":5,"44":5,"45":1,"46":1,"47":1,"105":1,"135":1,"137":2,"326":1}}],["managing",{"0":{"89":1,"118":1,"158":1,"175":1,"184":1,"217":1,"241":1,"252":1,"260":1,"319":1},"1":{"90":1,"91":1,"92":1,"93":1,"242":1,"243":1,"244":1,"261":1,"262":1,"263":1,"264":1,"265":1},"2":{"338":1}}],["manages",{"2":{"195":1,"235":1,"294":1,"329":1}}],["managed",{"2":{"151":1,"195":1,"209":1,"236":1,"257":3,"259":4,"261":1,"262":1,"263":2,"265":3,"267":2,"328":1}}],["managers",{"2":{"147":1}}],["manager",{"2":{"105":1,"178":1}}],["manage",{"2":{"10":1,"104":1,"111":1,"116":1,"122":1,"133":1,"144":1,"148":1,"163":1,"166":1,"169":1,"172":1,"179":1,"203":1,"215":1,"255":1,"267":1,"276":1,"325":1,"331":1,"332":1}}],["management",{"0":{"5":1,"102":1,"146":1,"172":1,"212":1},"1":{"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1},"2":{"8":1,"10":2,"18":1,"41":1,"71":2,"105":1,"120":1,"122":1,"123":1,"133":1,"164":1,"211":1,"325":1,"332":1,"337":2,"342":2}}],["manual",{"0":{"308":1},"1":{"309":1},"2":{"78":1,"224":1,"314":1}}],["manually",{"2":{"24":1,"94":1,"121":1,"179":1,"187":1,"193":1,"202":1,"216":1,"267":1,"325":1}}],["manifesto",{"2":{"13":1}}],["many",{"2":{"7":1,"14":1,"130":1,"149":1,"222":1}}],["me",{"2":{"230":1}}],["merge",{"2":{"123":1,"125":1,"218":1}}],["medium",{"2":{"107":1,"205":1,"287":1}}],["media",{"2":{"22":1,"26":1,"46":1,"52":1,"69":1,"81":1}}],["mental",{"0":{"210":1},"2":{"94":1,"258":1}}],["mentions",{"2":{"48":1}}],["mention",{"2":{"25":1,"272":1}}],["meaning",{"2":{"205":1,"227":1,"258":1,"271":1}}],["mean",{"0":{"94":1}}],["means",{"2":{"1":1,"88":1,"153":1,"237":2,"266":1}}],["metadata",{"2":{"130":1}}],["metaphors",{"2":{"14":1}}],["metrics",{"2":{"6":1}}],["message",{"2":{"23":1,"25":2,"29":1,"30":1,"32":1,"33":1,"39":1,"40":2,"45":1,"46":1,"56":1,"57":2,"63":1,"64":1,"68":2,"69":1,"74":1,"81":1,"85":1,"86":1,"91":1,"130":1,"137":1,"214":1,"232":1,"234":1,"237":1,"239":1,"244":1,"245":1,"272":1,"276":1,"281":1}}],["messages",{"2":{"9":1,"30":1,"33":1,"35":1,"39":1,"42":1,"46":2,"57":1,"67":1,"73":2,"74":2,"79":1,"81":2,"99":1,"124":1,"130":1,"140":1,"141":1,"198":2,"216":1,"235":1,"239":1,"245":1,"278":1}}],["messaging",{"0":{"25":1},"2":{"8":1,"23":1,"33":4,"42":1,"76":1,"102":1,"134":1,"135":1,"137":1}}],["mem0",{"0":{"338":1,"339":1,"340":1,"341":1},"1":{"339":1,"340":1,"341":1,"342":1},"2":{"213":1,"330":2,"332":2,"338":3,"339":1,"340":3,"341":1,"342":2}}],["memories",{"0":{"216":1},"2":{"105":1,"123":1,"132":1,"214":2,"215":1,"217":2,"218":4,"219":2,"221":1,"223":2,"246":1,"318":1,"321":1,"325":4,"331":1}}],["memory",{"0":{"5":1,"132":1,"212":1,"214":1,"218":1,"222":1,"289":1,"314":1,"315":1,"324":1,"325":1,"329":1,"333":1,"338":1},"1":{"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"315":1,"316":2,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1,"330":1,"331":1,"332":1,"334":1,"335":1,"336":1,"337":1,"339":1,"340":1,"341":1,"342":1},"2":{"1":3,"5":4,"8":1,"9":1,"14":1,"15":1,"17":1,"18":3,"19":1,"20":1,"102":1,"105":3,"106":1,"107":3,"109":1,"113":1,"122":3,"123":3,"125":3,"132":5,"133":2,"185":1,"203":1,"208":1,"210":1,"211":1,"212":1,"213":6,"214":2,"215":1,"216":3,"217":1,"218":3,"219":2,"220":5,"221":2,"222":5,"223":4,"246":1,"276":2,"289":4,"298":4,"304":2,"305":5,"314":8,"317":2,"318":2,"324":2,"325":5,"326":2,"328":4,"329":5,"330":4,"331":3,"332":6,"333":3,"334":2,"336":1,"337":4,"338":2,"339":2,"341":1,"342":4}}],["memoh123",{"2":{"307":1,"313":1}}],["memohai",{"2":{"302":1,"308":1}}],["memohbot",{"2":{"272":1}}],["memoh",{"0":{"0":1,"1":1,"2":1,"12":1,"24":1,"31":1,"44":1,"50":1,"55":1,"61":1,"66":1,"72":1,"77":1,"326":1},"1":{"1":1,"2":1,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"327":1,"328":1},"2":{"1":1,"3":1,"5":1,"6":1,"7":2,"9":1,"13":1,"15":1,"16":1,"17":1,"19":2,"20":3,"21":1,"22":1,"24":2,"26":1,"27":1,"31":1,"33":2,"34":1,"35":2,"36":1,"40":2,"42":1,"44":1,"48":1,"49":1,"50":2,"51":1,"53":1,"55":1,"56":2,"59":2,"60":2,"61":1,"62":2,"64":1,"66":2,"67":2,"68":2,"70":1,"72":1,"76":1,"77":1,"78":2,"82":1,"83":1,"107":1,"114":1,"121":1,"126":2,"131":1,"135":1,"140":1,"141":2,"143":2,"144":1,"146":1,"151":1,"153":3,"163":1,"164":1,"172":1,"186":1,"189":1,"191":3,"193":1,"195":2,"198":1,"201":1,"202":1,"203":1,"205":1,"206":2,"207":1,"212":1,"214":1,"222":1,"227":1,"236":1,"237":1,"247":1,"256":1,"257":5,"258":1,"259":1,"261":1,"262":1,"265":2,"267":3,"269":1,"271":1,"272":1,"282":1,"298":1,"299":1,"301":1,"303":1,"304":1,"307":10,"308":2,"309":1,"313":2,"314":2,"326":1,"327":1,"329":1,"330":2,"348":1}}],["members",{"2":{"27":1,"29":1}}],["member",{"2":{"1":1,"86":1,"326":1}}],["avoid",{"2":{"256":1}}],["avatar",{"2":{"103":1}}],["available",{"0":{"330":1,"350":1},"2":{"23":1,"107":1,"121":1,"126":1,"130":1,"193":1,"225":1,"246":1,"265":1,"273":1,"295":1,"311":1,"345":1,"351":1}}],["audio",{"2":{"345":3,"348":1}}],["auditing",{"2":{"163":1}}],["audit",{"2":{"130":1,"170":1,"183":1}}],["auth",{"2":{"308":1,"311":1}}],["authenticates",{"2":{"200":1}}],["authentication",{"0":{"191":1},"2":{"72":1,"190":1,"191":2,"197":1,"335":1,"340":1}}],["authorization",{"2":{"191":1,"201":3}}],["authorized",{"2":{"97":1}}],["authorize",{"2":{"30":1,"191":1}}],["automate",{"2":{"224":1}}],["automatic",{"0":{"126":1},"2":{"109":1,"126":2,"130":1,"181":1,"314":1}}],["automatically",{"2":{"24":1,"44":1,"45":1,"78":1,"79":1,"191":1,"193":2,"194":1,"223":1,"230":1,"232":1,"236":1,"254":1,"259":1,"309":1,"344":1}}],["automation",{"0":{"225":1,"293":1},"1":{"294":1,"295":1,"296":1},"2":{"8":1,"107":1,"111":1,"115":1,"233":1,"304":1,"308":1}}],["autonomy",{"0":{"181":1}}],["autonomous",{"2":{"6":1,"106":1,"108":2,"180":1,"185":1,"233":1,"236":1,"246":1}}],["auto",{"2":{"44":1,"45":1,"242":1,"307":1,"349":1}}],["affecting",{"2":{"146":1}}],["affects",{"2":{"125":1}}],["after",{"0":{"325":1},"2":{"25":1,"51":1,"66":1,"79":1,"83":1,"92":1,"106":2,"110":2,"117":1,"119":1,"122":1,"126":1,"142":1,"154":1,"191":1,"201":1,"202":1,"259":1,"270":1,"310":1,"318":1,"332":1,"335":1,"340":1}}],["abort",{"2":{"270":1}}],["above",{"2":{"88":1}}],["about",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"2":{"21":1,"109":1,"123":1,"130":1,"150":1,"214":1,"327":1}}],["abcdefghijklmnopqrstuvwxyz",{"2":{"60":1}}],["aware",{"2":{"51":1}}],["am",{"2":{"226":1,"227":2,"230":1}}],["amd",{"2":{"152":2,"153":2}}],["amp",{"2":{"37":1,"41":1}}],["ambient",{"2":{"14":1}}],["aes",{"2":{"34":1,"65":1,"66":1,"67":1,"143":1}}],["adjustment",{"2":{"345":1}}],["adoption",{"2":{"328":1}}],["adopt",{"0":{"265":1},"2":{"259":2,"265":3,"267":1,"268":1}}],["advanced",{"0":{"111":1,"151":1},"1":{"152":1,"153":1,"154":1},"2":{"111":1,"151":2,"152":1,"256":1}}],["admin123",{"2":{"307":1,"310":1}}],["admins",{"2":{"85":1,"97":1}}],["admin",{"2":{"71":1,"83":1,"88":1,"307":3,"308":2,"310":1,"311":2}}],["additional",{"2":{"251":1,"321":1}}],["adding",{"0":{"91":1,"139":1,"169":1,"251":1},"2":{"204":1}}],["address",{"2":{"165":1,"169":1,"170":1,"311":2}}],["add",{"0":{"66":1,"77":1,"261":1},"2":{"24":1,"30":1,"31":1,"35":1,"40":2,"44":1,"50":1,"55":1,"61":1,"66":1,"72":1,"77":1,"83":2,"90":1,"91":1,"94":1,"97":1,"98":1,"99":1,"100":1,"116":1,"139":1,"167":1,"169":1,"192":3,"197":1,"202":2,"251":1,"261":1,"309":1,"317":1,"334":1,"339":1,"344":1,"349":1}}],["adapters",{"2":{"34":1,"137":1,"238":1,"269":1,"278":1}}],["adapter",{"2":{"7":1,"22":1,"48":1,"64":2,"69":1,"238":1,"278":1}}],["a2a",{"2":{"19":1}}],["approaching",{"2":{"206":1}}],["approximate",{"2":{"204":1}}],["appropriate",{"2":{"154":1}}],["approved",{"2":{"41":1}}],["approval",{"2":{"41":1,"54":1}}],["approving",{"2":{"35":1}}],["apps",{"2":{"71":1}}],["appsecret",{"2":{"54":2,"55":1}}],["appears",{"2":{"300":1}}],["appear",{"2":{"63":1,"236":1,"257":1,"267":1}}],["appid",{"2":{"54":1,"55":1}}],["applied",{"2":{"88":2,"154":1}}],["applies",{"2":{"85":1,"91":2}}],["applications",{"2":{"30":1,"134":1}}],["application",{"0":{"28":1},"2":{"28":1,"43":1,"71":1}}],["apply",{"2":{"39":1,"177":1,"209":1}}],["app",{"0":{"23":1,"37":1,"41":1},"2":{"14":1,"20":1,"23":6,"24":2,"34":2,"35":3,"37":4,"40":3,"41":1,"65":2,"66":2,"71":1,"141":1,"144":2,"308":1}}],["apis",{"2":{"17":1,"22":1,"65":1,"195":1}}],["api",{"0":{"231":1},"2":{"9":1,"35":1,"43":1,"60":2,"61":1,"78":1,"111":1,"140":1,"167":1,"196":2,"197":3,"198":3,"199":1,"200":2,"214":1,"223":1,"231":2,"248":1,"251":2,"305":3,"310":1,"311":1,"315":1,"316":2,"330":3,"332":1,"333":1,"335":3,"337":1,"338":1,"340":4,"342":1,"343":2,"350":2}}],["aggregator",{"2":{"249":1}}],["aggressive",{"2":{"218":1}}],["aggressively",{"2":{"109":1,"126":1}}],["against",{"2":{"131":1}}],["again",{"2":{"54":1,"78":1}}],["agreement",{"2":{"14":1}}],["agent2agent",{"2":{"19":1}}],["agents",{"2":{"13":1,"14":1,"16":1,"257":2}}],["agent",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"1":2,"13":1,"14":1,"19":1,"20":1,"102":1,"117":2,"225":1,"226":1,"232":2,"303":1,"304":1,"326":1}}],["architecture",{"0":{"304":1},"1":{"305":1}}],["archive",{"2":{"160":2,"161":2}}],["arguments",{"2":{"189":2,"270":2}}],["argument",{"2":{"121":1,"272":1}}],["around",{"2":{"14":1}}],["aren",{"2":{"180":1}}],["are",{"2":{"9":1,"11":1,"26":1,"33":1,"46":2,"56":1,"62":1,"69":1,"74":1,"83":4,"88":2,"92":1,"94":1,"99":1,"106":1,"119":1,"121":1,"139":1,"140":1,"154":1,"161":1,"171":1,"191":1,"195":1,"199":1,"203":1,"204":1,"208":1,"209":1,"214":1,"217":1,"222":2,"223":1,"229":1,"235":2,"236":2,"237":2,"239":1,"242":1,"246":4,"255":1,"257":2,"266":3,"268":1,"269":2,"270":2,"272":2,"273":3,"282":1,"304":2,"310":1,"318":1,"321":1,"337":1,"342":1}}],["alternative",{"2":{"333":1}}],["along",{"2":{"232":1}}],["aloud",{"2":{"198":1,"343":1,"344":1,"345":1,"348":1,"350":1}}],["alerts",{"2":{"184":1}}],["alert",{"2":{"183":1}}],["aligned",{"2":{"143":1}}],["all",{"2":{"82":1,"83":2,"86":3,"91":1,"94":4,"96":1,"97":1,"98":1,"99":1,"103":1,"113":2,"170":1,"193":1,"219":2,"228":1,"239":1,"242":1,"246":2,"287":1,"288":2,"289":2,"290":2,"291":2,"292":2,"294":2,"303":1,"307":2,"311":1}}],["allowing",{"2":{"134":1,"171":1,"186":1,"234":1}}],["allow",{"2":{"82":1,"83":3,"85":2,"86":1,"87":1,"88":1,"91":1,"93":1,"94":3,"96":2,"97":1,"98":2,"99":1,"100":1,"103":1,"155":1,"224":1,"287":1}}],["allowed",{"2":{"49":1,"83":3,"85":1,"88":1,"96":1,"282":1}}],["allows",{"2":{"27":1,"36":1,"42":1,"53":1,"70":1,"76":1,"117":1,"141":1,"146":1,"164":1,"176":1,"180":1,"212":1,"247":1}}],["already",{"2":{"14":1,"153":1,"201":1,"202":1,"213":1,"226":1,"265":1,"273":1,"279":1}}],["always",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"13":1,"14":2,"16":1,"17":1,"20":2,"88":1,"304":1}}],["also",{"2":{"7":1,"9":1,"16":1,"23":1,"63":1,"65":1,"66":1,"108":1,"109":1,"111":1,"126":1,"128":1,"131":1,"170":1,"179":1,"191":1,"193":1,"202":1,"205":1,"231":1,"245":1,"266":1,"308":1,"313":1}}],["ascii",{"2":{"256":1}}],["ask",{"2":{"230":1}}],["asia",{"2":{"117":1}}],["assistant",{"2":{"237":1}}],["assignment",{"2":{"348":1}}],["assign",{"2":{"207":1,"211":1,"331":1}}],["assigning",{"0":{"119":1,"253":1,"324":1,"336":1,"341":1,"346":1},"2":{"347":1}}],["assigned",{"2":{"107":1,"114":1,"185":1,"214":1,"223":1,"254":1,"325":1,"332":1,"337":1,"342":1}}],["associated",{"2":{"113":1,"169":1,"245":1}}],["as",{"0":{"165":1},"2":{"6":1,"10":1,"16":1,"17":3,"18":1,"19":2,"20":1,"23":1,"43":1,"46":1,"48":1,"63":1,"103":1,"105":1,"107":2,"111":1,"114":1,"117":2,"120":1,"124":1,"131":1,"135":1,"147":1,"150":1,"153":1,"171":1,"196":2,"197":1,"198":1,"204":2,"205":2,"208":1,"210":1,"218":1,"223":1,"236":1,"237":1,"238":1,"239":1,"256":2,"257":2,"259":1,"267":1,"269":1,"270":2,"272":2,"273":1,"278":1,"287":1,"333":1,"335":1,"337":1,"340":1,"342":1,"344":1}}],["another",{"2":{"164":1,"258":1,"259":1}}],["answer",{"2":{"94":1,"254":1}}],["anything",{"2":{"94":1}}],["anyone",{"0":{"96":1},"2":{"43":1,"83":1,"85":1}}],["any",{"2":{"33":1,"42":1,"43":1,"150":1,"153":1,"185":1,"208":1,"224":1,"225":1,"232":1,"301":1}}],["anchor",{"2":{"14":1}}],["annoying",{"2":{"14":1}}],["anthropic",{"2":{"9":1,"196":1,"198":2}}],["an",{"0":{"12":1,"301":1,"334":1,"335":1,"336":1,"344":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"5":1,"14":3,"17":1,"19":2,"20":3,"35":1,"43":1,"49":1,"60":2,"65":1,"82":1,"83":1,"85":1,"86":2,"87":1,"88":1,"90":1,"91":1,"93":1,"99":1,"100":1,"102":1,"107":1,"110":1,"111":1,"130":1,"151":1,"153":1,"154":1,"161":1,"165":1,"170":2,"178":1,"183":1,"193":1,"194":1,"196":1,"206":1,"207":1,"213":1,"214":1,"220":1,"234":1,"237":1,"301":1,"305":2,"316":1,"323":1,"330":1,"333":1}}],["and",{"0":{"3":1,"5":1,"6":1,"8":1,"9":1,"10":1,"49":1,"68":1,"110":1,"130":1,"159":1,"164":1,"170":1,"174":1,"176":1,"183":1,"195":1,"217":1,"267":1,"280":1,"293":1},"1":{"160":1,"161":1,"162":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"177":1,"178":1,"184":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"281":1,"282":1,"283":1,"284":1,"285":1,"294":1,"295":1,"296":1},"2":{"1":3,"3":2,"4":3,"5":1,"6":3,"7":1,"8":5,"9":1,"10":3,"11":3,"13":1,"14":6,"16":4,"17":3,"18":7,"19":6,"20":4,"22":3,"23":1,"24":3,"25":1,"26":2,"27":1,"28":2,"29":1,"30":2,"31":2,"32":1,"33":4,"34":1,"35":2,"37":3,"39":2,"40":3,"41":2,"42":1,"44":2,"45":1,"46":2,"48":1,"49":1,"50":3,"51":1,"54":2,"55":3,"56":2,"57":3,"59":1,"60":1,"61":2,"62":2,"63":1,"64":1,"66":1,"67":1,"68":1,"69":1,"71":1,"72":2,"73":1,"77":1,"78":1,"81":1,"83":2,"85":1,"91":1,"92":1,"94":3,"97":1,"101":2,"102":2,"105":10,"106":1,"107":5,"110":1,"111":1,"113":3,"114":2,"115":3,"117":1,"118":1,"119":1,"120":1,"123":1,"128":1,"129":1,"130":1,"135":1,"137":3,"139":2,"140":1,"141":1,"143":3,"144":2,"145":2,"146":1,"147":1,"149":1,"150":1,"151":1,"153":1,"154":2,"155":1,"157":1,"158":1,"159":1,"163":1,"164":2,"169":2,"171":1,"173":1,"175":1,"177":2,"179":2,"181":1,"186":1,"187":2,"189":1,"191":1,"192":2,"193":1,"194":1,"195":1,"196":1,"199":1,"201":3,"203":3,"204":1,"208":1,"209":1,"210":1,"211":2,"212":1,"214":3,"218":1,"220":1,"223":1,"225":1,"226":1,"227":2,"228":1,"230":2,"231":1,"232":1,"233":1,"234":2,"236":3,"237":4,"239":1,"242":1,"246":1,"247":1,"249":1,"252":1,"253":2,"254":1,"255":2,"256":3,"257":1,"258":1,"259":1,"265":1,"267":1,"268":1,"269":2,"270":1,"273":1,"276":7,"278":1,"279":1,"282":1,"288":1,"298":1,"299":1,"300":1,"301":1,"303":2,"304":3,"307":4,"308":1,"309":1,"310":1,"311":5,"314":4,"316":1,"318":2,"319":1,"321":1,"322":1,"323":1,"324":1,"325":1,"326":2,"327":6,"328":5,"329":3,"330":1,"331":1,"335":1,"336":1,"337":1,"338":1,"340":1,"341":1,"342":1,"343":1,"347":1,"348":1,"349":3}}],["acl",{"0":{"83":1,"110":1},"2":{"82":1,"83":1,"85":1,"86":1,"88":1,"90":1,"96":1,"97":1,"98":1,"101":2,"103":1,"105":1,"106":2,"110":3,"276":1,"282":2,"287":1,"328":1}}],["actions",{"0":{"149":1},"2":{"120":1,"171":1,"180":1,"224":1,"271":1,"273":3,"281":1,"283":1,"284":1,"285":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"294":1,"295":1,"296":1,"298":1}}],["action",{"2":{"113":2,"120":1,"175":1,"183":1,"218":1,"237":1,"270":4,"271":2,"276":1,"281":1,"283":1,"284":1,"285":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"294":1,"295":1,"296":1,"298":1}}],["activities",{"2":{"185":1}}],["activity",{"2":{"106":1,"108":1,"233":1,"236":2,"242":1,"246":1}}],["activate",{"2":{"35":1,"145":1}}],["active",{"2":{"5":2,"123":1,"125":1,"128":1,"131":1,"132":1,"145":1,"150":1,"163":1,"192":1,"193":1,"194":1,"213":1,"218":1,"222":1,"226":1,"238":1,"239":1,"242":1,"245":1,"258":1,"266":2,"281":2,"289":1,"290":1,"291":1,"298":1,"328":1}}],["actual",{"2":{"34":1,"256":1,"325":1,"331":1}}],["actually",{"0":{"94":1},"2":{"13":1,"14":2,"130":1}}],["act",{"2":{"23":1,"43":1}}],["acts",{"2":{"17":1,"115":1,"135":1,"147":1}}],["accurate",{"2":{"254":1}}],["accumulate",{"2":{"218":1}}],["accumulating",{"2":{"14":1}}],["accepted",{"2":{"272":1}}],["accept",{"2":{"45":1,"205":1}}],["access",{"0":{"82":1,"89":1,"99":1,"100":1,"101":1,"110":1,"282":1,"310":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":2,"91":2,"92":2,"93":2,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1},"2":{"10":1,"11":1,"18":1,"32":1,"33":1,"35":1,"39":1,"43":2,"44":2,"46":1,"49":2,"50":1,"82":2,"83":2,"85":1,"86":2,"89":2,"90":1,"93":1,"101":2,"103":1,"105":3,"106":1,"110":2,"112":1,"114":1,"151":1,"187":1,"191":1,"200":1,"201":2,"230":1,"276":1,"282":1,"309":1,"326":1,"328":2}}],["accounts",{"2":{"282":1}}],["account",{"0":{"34":1,"43":1,"49":1,"64":1,"65":1,"143":1},"1":{"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"1":1,"7":2,"33":2,"34":3,"43":3,"44":1,"48":1,"49":4,"54":2,"56":1,"62":1,"64":2,"65":1,"66":1,"67":1,"68":1,"137":5,"143":2,"201":1,"311":1,"326":1}}],["across",{"2":{"3":1,"5":1,"101":1,"106":1,"147":1,"212":1,"222":1,"238":1,"246":1,"326":1,"343":1,"345":1,"350":1}}],["attached",{"2":{"150":1,"154":2}}],["attachment",{"2":{"33":1,"46":1,"59":1,"137":1}}],["attachments",{"2":{"26":1,"32":1,"52":1,"57":1,"63":1,"69":1,"81":1}}],["attach",{"2":{"30":1}}],["attempt",{"2":{"13":1}}],["at",{"0":{"266":1},"2":{"3":1,"7":1,"18":1,"39":1,"86":1,"98":1,"110":1,"113":1,"121":1,"170":1,"181":1,"192":1,"200":1,"226":1,"227":4,"230":1,"256":1,"305":1,"308":1}}],["ai",{"2":{"1":2,"9":1,"13":1,"14":2,"15":1,"16":1,"18":1,"20":1,"33":1,"102":1,"198":1,"249":1,"303":1,"304":1,"326":1,"340":1}}],["a",{"0":{"23":1,"28":1,"37":1,"43":1,"49":1,"54":1,"60":1,"71":1,"90":1,"103":1,"113":1,"116":1,"117":1,"119":2,"139":1,"156":1,"157":1,"165":1,"167":1,"169":1,"197":1,"238":1,"251":1,"253":2,"256":1,"300":1,"317":1,"318":1,"324":2,"336":1,"339":1,"340":1,"341":2,"346":1},"1":{"118":1,"239":1,"240":1,"319":1},"2":{"1":2,"4":1,"6":1,"7":1,"8":1,"9":1,"11":1,"13":3,"14":11,"15":1,"17":2,"18":1,"19":4,"20":3,"24":1,"25":2,"28":2,"35":4,"37":1,"40":2,"41":1,"43":3,"45":2,"48":3,"49":1,"54":1,"56":1,"60":3,"62":1,"65":1,"66":1,"68":1,"71":1,"76":1,"78":3,"83":2,"85":2,"86":3,"88":1,"89":1,"91":7,"93":6,"94":1,"100":1,"101":1,"102":1,"103":1,"104":1,"106":2,"107":1,"110":2,"111":1,"113":1,"114":6,"115":2,"116":1,"117":1,"118":2,"120":1,"122":1,"123":2,"124":2,"126":1,"129":1,"130":2,"131":1,"135":2,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"149":1,"151":1,"153":1,"155":1,"156":2,"158":2,"160":1,"162":1,"163":1,"165":5,"171":1,"173":2,"174":1,"175":2,"177":1,"178":1,"181":3,"183":2,"185":3,"187":2,"189":2,"190":1,"191":1,"192":3,"193":1,"196":1,"199":1,"200":2,"201":2,"202":2,"204":1,"205":2,"206":1,"207":2,"211":1,"213":3,"214":3,"216":1,"225":5,"226":3,"230":5,"232":1,"234":4,"235":4,"236":7,"237":7,"238":5,"239":3,"240":2,"243":1,"244":1,"245":1,"246":2,"248":4,"251":1,"252":1,"254":3,"255":1,"256":5,"257":1,"259":4,"260":1,"262":1,"263":2,"264":3,"265":4,"267":2,"268":1,"269":1,"270":5,"272":4,"278":4,"279":2,"282":1,"300":1,"301":1,"305":3,"307":1,"311":1,"317":1,"318":1,"319":2,"325":1,"326":1,"327":1,"329":3,"331":2,"333":3,"334":1,"335":2,"338":1,"339":1,"340":2,"346":1,"347":1,"348":4,"349":2}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/VPLocalSearchBox.CpjIPF0W.js b/assets/chunks/VPLocalSearchBox.ppjlRfVe.js similarity index 99% rename from assets/chunks/VPLocalSearchBox.CpjIPF0W.js rename to assets/chunks/VPLocalSearchBox.ppjlRfVe.js index 58af3e65..95483ab0 100644 --- a/assets/chunks/VPLocalSearchBox.CpjIPF0W.js +++ b/assets/chunks/VPLocalSearchBox.ppjlRfVe.js @@ -1,4 +1,4 @@ -var At=Object.defineProperty;var Ct=(a,e,t)=>e in a?At(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Me=(a,e,t)=>Ct(a,typeof e!="symbol"?e+"":e,t);import{V as nt,q as Be,ah as Mt,h as be,ai as rt,aj as Lt,ak as Dt,al as Pt,G as ce,d as zt,am as it,p as he,an as Vt,ao as jt,s as $t,ap as Bt,v as Le,P as ve,O as _e,aq as Wt,ar as Kt,W as Jt,R as qt,$ as Ut,o as q,b as Ht,j as T,a0 as Gt,k as P,as as Qt,at as Yt,au as Zt,c as Q,n as st,e as xe,B as at,F as ot,a as pe,t as me,av as Xt,aw as lt,ax as en,a5 as tn,aa as nn,ay as rn,_ as sn}from"./framework.DXGyWiRo.js";import{u as an,c as on}from"./theme.D3TMuosU.js";const ln={root:()=>nt(()=>import("./@localSearchIndexroot.Tiqps2K_.js"),[]),zh:()=>nt(()=>import("./@localSearchIndexzh.CpylHZY7.js"),[])};/*! +var At=Object.defineProperty;var Ct=(a,e,t)=>e in a?At(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Me=(a,e,t)=>Ct(a,typeof e!="symbol"?e+"":e,t);import{V as nt,q as Be,ah as Mt,h as be,ai as rt,aj as Lt,ak as Dt,al as Pt,G as ce,d as zt,am as it,p as he,an as Vt,ao as jt,s as $t,ap as Bt,v as Le,P as ve,O as _e,aq as Wt,ar as Kt,W as Jt,R as qt,$ as Ut,o as q,b as Ht,j as T,a0 as Gt,k as P,as as Qt,at as Yt,au as Zt,c as Q,n as st,e as xe,B as at,F as ot,a as pe,t as me,av as Xt,aw as lt,ax as en,a5 as tn,aa as nn,ay as rn,_ as sn}from"./framework.DXGyWiRo.js";import{u as an,c as on}from"./theme.PItBixWd.js";const ln={root:()=>nt(()=>import("./@localSearchIndexroot.CEeliA4L.js"),[]),zh:()=>nt(()=>import("./@localSearchIndexzh.CpylHZY7.js"),[])};/*! * tabbable 6.4.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var bt=["input:not([inert]):not([inert] *)","select:not([inert]):not([inert] *)","textarea:not([inert]):not([inert] *)","a[href]:not([inert]):not([inert] *)","button:not([inert]):not([inert] *)","[tabindex]:not(slot):not([inert]):not([inert] *)","audio[controls]:not([inert]):not([inert] *)","video[controls]:not([inert]):not([inert] *)",'[contenteditable]:not([contenteditable="false"]):not([inert]):not([inert] *)',"details>summary:first-of-type:not([inert]):not([inert] *)","details:not([inert]):not([inert] *)"],ke=bt.join(","),yt=typeof Element>"u",ae=yt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!yt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Fe=function(e,t){var n;t===void 0&&(t=!0);var r=e==null||(n=e.getAttribute)===null||n===void 0?void 0:n.call(e,"inert"),s=r===""||r==="true",i=s||t&&e&&(typeof e.closest=="function"?e.closest("[inert]"):Fe(e.parentNode));return i},cn=function(e){var t,n=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return n===""||n==="true"},wt=function(e,t,n){if(Fe(e))return[];var r=Array.prototype.slice.apply(e.querySelectorAll(ke));return t&&ae.call(e,ke)&&r.unshift(e),r=r.filter(n),r},Re=function(e,t,n){for(var r=[],s=Array.from(e);s.length;){var i=s.shift();if(!Fe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=Re(l,!0,n);n.flatten?r.push.apply(r,c):r.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,ke);h&&n.filter(i)&&(t||!e.includes(i))&&r.push(i);var m=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),p=!Fe(m,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(m&&p){var b=Re(m===!0?i.children:m.children,!0,n);n.flatten?r.push.apply(r,b):r.push({scopeParent:i,candidates:b})}else s.unshift.apply(s,i.children)}}return r},St=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||cn(e))&&!St(e)?0:e.tabIndex},un=function(e,t){var n=se(e);return n<0&&t&&!St(e)?0:n},dn=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},_t=function(e){return e.tagName==="INPUT"},fn=function(e){return _t(e)&&e.type==="hidden"},hn=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(n){return n.tagName==="SUMMARY"});return t},vn=function(e,t){for(var n=0;nsummary:first-of-type"),o=i?e.parentElement:e;if(ae.call(o,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="full-native"||n==="legacy-full"){if(typeof r=="function"){for(var l=e;e;){var c=e.parentElement,h=Ne(e);if(c&&!c.shadowRoot&&r(c)===!0)return ct(e);e.assignedSlot?e=e.assignedSlot:!c&&h!==e.ownerDocument?e=h.host:e=c}e=l}if(bn(e))return!e.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return ct(e);return!1},wn=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var n=0;n=0)},xt=function(e){var t=[],n=[];return e.forEach(function(r,s){var i=!!r.scopeParent,o=i?r.scopeParent:r,l=un(o,i),c=i?xt(r.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):n.push({documentOrder:s,tabIndex:l,item:r,isScope:i,content:c})}),n.sort(dn).reduce(function(r,s){return s.isScope?r.push.apply(r,s.content):r.push(s.content),r},[]).concat(t)},_n=function(e,t){t=t||{};var n;return t.getShadowRoot?n=Re([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:Sn}):n=wt(e,t.includeContainer,We.bind(null,t)),xt(n)},xn=function(e,t){t=t||{};var n;return t.getShadowRoot?n=Re([e],t.includeContainer,{filter:Oe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):n=wt(e,t.includeContainer,Oe.bind(null,t)),n},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,ke)===!1?!1:We(t,e)},Tn=bt.concat("iframe:not([inert]):not([inert] *)").join(","),De=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Tn)===!1?!1:Oe(t,e)};/*! diff --git a/assets/chunks/theme.D3TMuosU.js b/assets/chunks/theme.PItBixWd.js similarity index 99% rename from assets/chunks/theme.D3TMuosU.js rename to assets/chunks/theme.PItBixWd.js index b9ba25bd..b0a4bd62 100644 --- a/assets/chunks/theme.D3TMuosU.js +++ b/assets/chunks/theme.PItBixWd.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.CpjIPF0W.js","assets/chunks/framework.DXGyWiRo.js"])))=>i.map(i=>d[i]); -import{d as p,c as u,r as c,n as N,o as s,a as j,t as M,b as _,w as h,T as ue,e as m,_ as g,u as Ce,i as He,f as Be,g as de,h as y,j as d,k as i,l as z,m as se,p as S,q as F,s as X,v as U,x as ve,y as fe,z as Ee,A as Fe,F as x,B as A,C as W,D as Y,E as k,G as $e,H as B,I as ye,J as Q,K as G,L as Z,M as De,N as Pe,O as ie,P as Le,Q as Ve,R as ee,S as Oe,U as Ge,V as Ue,W as Se,X as Te,Y as je,Z as ze,$ as We,a0 as Ke,a1 as qe}from"./framework.DXGyWiRo.js";const Re=p({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(e){return(t,n)=>(s(),u("span",{class:N(["VPBadge",e.type])},[c(t.$slots,"default",{},()=>[j(M(e.text),1)])],2))}}),Je={key:0,class:"VPBackdrop"},Xe=p({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(s(),_(ue,{name:"fade"},{default:h(()=>[e.show?(s(),u("div",Je)):m("",!0)]),_:1}))}}),Ye=g(Xe,[["__scopeId","data-v-e7a48126"]]),L=Ce;function Qe(e,t){let n,a=!1;return()=>{n&&clearTimeout(n),a?n=setTimeout(e,t):(e(),(a=!0)&&setTimeout(()=>a=!1,t))}}function re(e){return e.startsWith("/")?e:`/${e}`}function he(e){const{pathname:t,search:n,hash:a,protocol:o}=new URL(e,"http://a.com");if(He(e)||e.startsWith("#")||!o.startsWith("http")||!Be(t))return e;const{site:r}=L(),l=t.endsWith("/")||t.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${n}${a}`);return de(l)}function q({correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:a,theme:o,hash:r}=L(),l=y(()=>{var f,$;return{label:(f=t.value.locales[n.value])==null?void 0:f.label,link:(($=t.value.locales[n.value])==null?void 0:$.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:y(()=>Object.entries(t.value.locales).flatMap(([f,$])=>l.value.label===$.label?[]:{text:$.label,link:Ze($.link||(f==="root"?"/":`/${f}/`),o.value.i18nRouting!==!1&&e,a.value.relativePath.slice(l.value.link.length-1),!t.value.cleanUrls)+r.value})),currentLang:l}}function Ze(e,t,n,a){return t?e.replace(/\/$/,"")+re(n.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,a?".html":"")):e}const et={class:"NotFound"},tt={class:"code"},nt={class:"title"},at={class:"quote"},ot={class:"action"},st=["href","aria-label"],it=p({__name:"NotFound",setup(e){const{theme:t}=L(),{currentLang:n}=q();return(a,o)=>{var r,l,v,f,$;return s(),u("div",et,[d("p",tt,M(((r=i(t).notFound)==null?void 0:r.code)??"404"),1),d("h1",nt,M(((l=i(t).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),o[0]||(o[0]=d("div",{class:"divider"},null,-1)),d("blockquote",at,M(((v=i(t).notFound)==null?void 0:v.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",ot,[d("a",{class:"link",href:i(de)(i(n).link),"aria-label":((f=i(t).notFound)==null?void 0:f.linkLabel)??"go to home"},M((($=i(t).notFound)==null?void 0:$.linkText)??"Take me home"),9,st)])])}}}),rt=g(it,[["__scopeId","data-v-98bc8507"]]);function Ne(e,t){if(Array.isArray(e))return R(e);if(e==null)return[];t=re(t);const n=Object.keys(e).sort((o,r)=>r.split("/").length-o.split("/").length).find(o=>t.startsWith(re(o))),a=n?e[n]:[];return Array.isArray(a)?R(a):R(a.items,a.base)}function lt(e){const t=[];let n=0;for(const a in e){const o=e[a];if(o.items){n=t.push(o);continue}t[n]||t.push({items:[]}),t[n].items.push(o)}return t}function ct(e){const t=[];function n(a){for(const o of a)o.text&&o.link&&t.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&n(o.items)}return n(e),t}function le(e,t){return Array.isArray(t)?t.some(n=>le(e,n)):z(e,t.link)?!0:t.items?le(e,t.items):!1}function R(e,t){return[...e].map(n=>{const a={...n},o=a.base||t;return o&&a.link&&(a.link=o+a.link),a.items&&(a.items=R(a.items,o)),a})}function D(){const{frontmatter:e,page:t,theme:n}=L(),a=se("(min-width: 960px)"),o=S(!1),r=y(()=>{const w=n.value.sidebar,C=t.value.relativePath;return w?Ne(w,C):[]}),l=S(r.value);F(r,(w,C)=>{JSON.stringify(w)!==JSON.stringify(C)&&(l.value=r.value)});const v=y(()=>e.value.sidebar!==!1&&l.value.length>0&&e.value.layout!=="home"),f=y(()=>$?e.value.aside==null?n.value.aside==="left":e.value.aside==="left":!1),$=y(()=>e.value.layout==="home"?!1:e.value.aside!=null?!!e.value.aside:n.value.aside!==!1),V=y(()=>v.value&&a.value),b=y(()=>v.value?lt(l.value):[]);function P(){o.value=!0}function T(){o.value=!1}function I(){o.value?T():P()}return{isOpen:o,sidebar:l,sidebarGroups:b,hasSidebar:v,hasAside:$,leftAside:f,isSidebarEnabled:V,open:P,close:T,toggle:I}}function ut(e,t){let n;X(()=>{n=e.value?document.activeElement:void 0}),U(()=>{window.addEventListener("keyup",a)}),ve(()=>{window.removeEventListener("keyup",a)});function a(o){o.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function dt(e){const{page:t,hash:n}=L(),a=S(!1),o=y(()=>e.value.collapsed!=null),r=y(()=>!!e.value.link),l=S(!1),v=()=>{l.value=z(t.value.relativePath,e.value.link)};F([t,e,n],v),U(v);const f=y(()=>l.value?!0:e.value.items?le(t.value.relativePath,e.value.items):!1),$=y(()=>!!(e.value.items&&e.value.items.length));X(()=>{a.value=!!(o.value&&e.value.collapsed)}),fe(()=>{(l.value||f.value)&&(a.value=!1)});function V(){o.value&&(a.value=!a.value)}return{collapsed:a,collapsible:o,isLink:r,isActiveLink:l,hasActiveLink:f,hasChildren:$,toggle:V}}function vt(){const{hasSidebar:e}=D(),t=se("(min-width: 960px)"),n=se("(min-width: 1280px)");return{isAsideEnabled:y(()=>!n.value&&!t.value?!1:e.value?n.value:t.value)}}const ft=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,ce=[];function Me(e){return typeof e.outline=="object"&&!Array.isArray(e.outline)&&e.outline.label||e.outlineTitle||"On this page"}function me(e){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const a=Number(n.tagName[1]);return{element:n,title:ht(n),link:"#"+n.id,level:a}});return mt(t,e)}function ht(e){let t="";for(const n of e.childNodes)if(n.nodeType===1){if(ft.test(n.className))continue;t+=n.textContent}else n.nodeType===3&&(t+=n.textContent);return t.trim()}function mt(e,t){if(t===!1)return[];const n=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[a,o]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;return _t(e,a,o)}function pt(e,t){const{isAsideEnabled:n}=vt(),a=Qe(r,100);let o=null;U(()=>{requestAnimationFrame(r),window.addEventListener("scroll",a)}),Ee(()=>{l(location.hash)}),ve(()=>{window.removeEventListener("scroll",a)});function r(){if(!n.value)return;const v=window.scrollY,f=window.innerHeight,$=document.body.offsetHeight,V=Math.abs(v+f-$)<1,b=ce.map(({element:T,link:I})=>({link:I,top:kt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,I)=>T.top-I.top);if(!b.length){l(null);return}if(v<1){l(null);return}if(V){l(b[b.length-1].link);return}let P=null;for(const{link:T,top:I}of b){if(I>v+Fe()+4)break;P=T}l(P)}function l(v){o&&o.classList.remove("active"),v==null?o=null:o=e.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const f=o;f?(f.classList.add("active"),t.value.style.top=f.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function kt(e){let t=0;for(;e!==document.body;){if(e===null)return NaN;t+=e.offsetTop,e=e.offsetParent}return t}function _t(e,t,n){ce.length=0;const a=[],o=[];return e.forEach(r=>{const l={...r,children:[]};let v=o[o.length-1];for(;v&&v.level>=l.level;)o.pop(),v=o[o.length-1];if(l.element.classList.contains("ignore-header")||v&&"shouldIgnore"in v){o.push({level:l.level,shouldIgnore:!0});return}l.level>n||l.level{const o=W("VPDocOutlineItem",!0);return s(),u("ul",{class:N(["VPDocOutlineItem",e.root?"root":"nested"])},[(s(!0),u(x,null,A(e.headers,({children:r,link:l,title:v})=>(s(),u("li",null,[d("a",{class:"outline-link",href:l,onClick:t,title:v},M(v),9,bt),r!=null&&r.length?(s(),_(o,{key:0,headers:r},null,8,["headers"])):m("",!0)]))),256))],2)}}}),xe=g(gt,[["__scopeId","data-v-ba57d2ed"]]),$t={class:"content"},yt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Pt=p({__name:"VPDocAsideOutline",setup(e){const{frontmatter:t,theme:n}=L(),a=$e([]);Y(()=>{a.value=me(t.value.outline??n.value.outline)});const o=S(),r=S();return pt(o,r),(l,v)=>(s(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":a.value.length>0}]),ref_key:"container",ref:o},[d("div",$t,[d("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),d("div",yt,M(i(Me)(i(n))),1),k(xe,{headers:a.value,root:!0},null,8,["headers"])])],2))}}),Lt=g(Pt,[["__scopeId","data-v-116d4a1f"]]),Vt={class:"VPDocAsideCarbonAds"},St=p({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(e){const t=()=>null;return(n,a)=>(s(),u("div",Vt,[k(i(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),Tt={class:"VPDocAside"},Nt=p({__name:"VPDocAside",setup(e){const{theme:t}=L();return(n,a)=>(s(),u("div",Tt,[c(n.$slots,"aside-top",{},void 0,!0),c(n.$slots,"aside-outline-before",{},void 0,!0),k(Lt),c(n.$slots,"aside-outline-after",{},void 0,!0),a[0]||(a[0]=d("div",{class:"spacer"},null,-1)),c(n.$slots,"aside-ads-before",{},void 0,!0),i(t).carbonAds?(s(),_(St,{key:0,"carbon-ads":i(t).carbonAds},null,8,["carbon-ads"])):m("",!0),c(n.$slots,"aside-ads-after",{},void 0,!0),c(n.$slots,"aside-bottom",{},void 0,!0)]))}}),Mt=g(Nt,[["__scopeId","data-v-8cfe0409"]]);function xt(){const{theme:e,page:t}=L();return y(()=>{const{text:n="Edit this page",pattern:a=""}=e.value.editLink||{};let o;return typeof a=="function"?o=a(t.value):o=a.replace(/:path/g,t.value.filePath),{url:o,text:n}})}function It(){const{page:e,theme:t,frontmatter:n}=L();return y(()=>{var $,V,b,P,T,I,w,C;const a=Ne(t.value.sidebar,e.value.relativePath),o=ct(a),r=wt(o,H=>H.link.replace(/[?#].*$/,"")),l=r.findIndex(H=>z(e.value.relativePath,H.link)),v=(($=t.value.docFooter)==null?void 0:$.prev)===!1&&!n.value.prev||n.value.prev===!1,f=((V=t.value.docFooter)==null?void 0:V.next)===!1&&!n.value.next||n.value.next===!1;return{prev:v?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??((b=r[l-1])==null?void 0:b.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((T=r[l-1])==null?void 0:T.link)},next:f?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??((I=r[l+1])==null?void 0:I.docFooterText)??((w=r[l+1])==null?void 0:w.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??((C=r[l+1])==null?void 0:C.link)}}})}function wt(e,t){const n=new Set;return e.filter(a=>{const o=t(a);return n.has(o)?!1:n.add(o)})}const E=p({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(e){const t=e,n=y(()=>t.tag??(t.href?"a":"span")),a=y(()=>t.href&&ye.test(t.href)||t.target==="_blank");return(o,r)=>(s(),_(B(n.value),{class:N(["VPLink",{link:e.href,"vp-external-link-icon":a.value,"no-icon":e.noIcon}]),href:e.href?i(he)(e.href):void 0,target:e.target??(a.value?"_blank":void 0),rel:e.rel??(a.value?"noreferrer":void 0)},{default:h(()=>[c(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),At={class:"VPLastUpdated"},Ct=["datetime"],Ht=p({__name:"VPDocFooterLastUpdated",setup(e){const{theme:t,page:n,lang:a}=L(),o=y(()=>new Date(n.value.lastUpdated)),r=y(()=>o.value.toISOString()),l=S("");return U(()=>{X(()=>{var v,f,$;l.value=new Intl.DateTimeFormat((f=(v=t.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&f.forceLocale?a.value:void 0,(($=t.value.lastUpdated)==null?void 0:$.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(v,f)=>{var $;return s(),u("p",At,[j(M((($=i(t).lastUpdated)==null?void 0:$.text)||i(t).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:r.value},M(l.value),9,Ct)])}}}),Bt=g(Ht,[["__scopeId","data-v-1cbf3ee4"]]),Et={key:0,class:"VPDocFooter"},Ft={key:0,class:"edit-info"},Dt={key:0,class:"edit-link"},Ot={key:1,class:"last-updated"},Gt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Ut={class:"pager"},jt=["innerHTML"],zt=["innerHTML"],Wt={class:"pager"},Kt=["innerHTML"],qt=["innerHTML"],Rt=p({__name:"VPDocFooter",setup(e){const{theme:t,page:n,frontmatter:a}=L(),o=xt(),r=It(),l=y(()=>t.value.editLink&&a.value.editLink!==!1),v=y(()=>n.value.lastUpdated),f=y(()=>l.value||v.value||r.value.prev||r.value.next);return($,V)=>{var b,P,T,I;return f.value?(s(),u("footer",Et,[c($.$slots,"doc-footer-before",{},void 0,!0),l.value||v.value?(s(),u("div",Ft,[l.value?(s(),u("div",Dt,[k(E,{class:"edit-link-button",href:i(o).url,"no-icon":!0},{default:h(()=>[V[0]||(V[0]=d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+M(i(o).text),1)]),_:1},8,["href"])])):m("",!0),v.value?(s(),u("div",Ot,[k(Bt)])):m("",!0)])):m("",!0),(b=i(r).prev)!=null&&b.link||(P=i(r).next)!=null&&P.link?(s(),u("nav",Gt,[V[1]||(V[1]=d("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),d("div",Ut,[(T=i(r).prev)!=null&&T.link?(s(),_(E,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:h(()=>{var w;return[d("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.prev)||"Previous page"},null,8,jt),d("span",{class:"title",innerHTML:i(r).prev.text},null,8,zt)]}),_:1},8,["href"])):m("",!0)]),d("div",Wt,[(I=i(r).next)!=null&&I.link?(s(),_(E,{key:0,class:"pager-link next",href:i(r).next.link},{default:h(()=>{var w;return[d("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.next)||"Next page"},null,8,Kt),d("span",{class:"title",innerHTML:i(r).next.text},null,8,qt)]}),_:1},8,["href"])):m("",!0)])])):m("",!0)])):m("",!0)}}}),Jt=g(Rt,[["__scopeId","data-v-64297f89"]]),Xt={class:"container"},Yt={class:"aside-container"},Qt={class:"aside-content"},Zt={class:"content"},en={class:"content-container"},tn={class:"main"},nn=p({__name:"VPDoc",setup(e){const{theme:t}=L(),n=Q(),{hasSidebar:a,hasAside:o,leftAside:r}=D(),l=y(()=>n.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,f)=>{const $=W("Content");return s(),u("div",{class:N(["VPDoc",{"has-sidebar":i(a),"has-aside":i(o)}])},[c(v.$slots,"doc-top",{},void 0,!0),d("div",Xt,[i(o)?(s(),u("div",{key:0,class:N(["aside",{"left-aside":i(r)}])},[f[0]||(f[0]=d("div",{class:"aside-curtain"},null,-1)),d("div",Yt,[d("div",Qt,[k(Mt,null,{"aside-top":h(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):m("",!0),d("div",Zt,[d("div",en,[c(v.$slots,"doc-before",{},void 0,!0),d("main",tn,[k($,{class:N(["vp-doc",[l.value,i(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(Jt,null,{"doc-footer-before":h(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(v.$slots,"doc-after",{},void 0,!0)])])]),c(v.$slots,"doc-bottom",{},void 0,!0)],2)}}}),an=g(nn,[["__scopeId","data-v-888acc39"]]),on=p({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(e){const t=e,n=y(()=>t.href&&ye.test(t.href)),a=y(()=>t.tag||(t.href?"a":"button"));return(o,r)=>(s(),_(B(a.value),{class:N(["VPButton",[e.size,e.theme]]),href:e.href?i(he)(e.href):void 0,target:t.target??(n.value?"_blank":void 0),rel:t.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[j(M(e.text),1)]),_:1},8,["class","href","target","rel"]))}}),sn=g(on,[["__scopeId","data-v-6cd5edd1"]]),rn=["src","alt"],ln=p({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(e){return(t,n)=>{const a=W("VPImage",!0);return e.image?(s(),u(x,{key:0},[typeof e.image=="string"||"src"in e.image?(s(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?t.$attrs:{...e.image,...t.$attrs},{src:i(de)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,rn)):(s(),u(x,{key:1},[k(a,G({class:"dark",image:e.image.dark,alt:e.image.alt},t.$attrs),null,16,["image","alt"]),k(a,G({class:"light",image:e.image.light,alt:e.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):m("",!0)}}}),J=g(ln,[["__scopeId","data-v-21b99582"]]),cn={class:"container"},un={class:"main"},dn={class:"heading"},vn=["innerHTML"],fn=["innerHTML"],hn=["innerHTML"],mn={key:0,class:"actions"},pn={key:0,class:"image"},kn={class:"image-container"},_n=p({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(e){const t=Z("hero-image-slot-exists");return(n,a)=>(s(),u("div",{class:N(["VPHero",{"has-image":e.image||i(t)}])},[d("div",cn,[d("div",un,[c(n.$slots,"home-hero-info-before",{},void 0,!0),c(n.$slots,"home-hero-info",{},()=>[d("h1",dn,[e.name?(s(),u("span",{key:0,innerHTML:e.name,class:"name clip"},null,8,vn)):m("",!0),e.text?(s(),u("span",{key:1,innerHTML:e.text,class:"text"},null,8,fn)):m("",!0)]),e.tagline?(s(),u("p",{key:0,innerHTML:e.tagline,class:"tagline"},null,8,hn)):m("",!0)],!0),c(n.$slots,"home-hero-info-after",{},void 0,!0),e.actions?(s(),u("div",mn,[(s(!0),u(x,null,A(e.actions,o=>(s(),u("div",{key:o.link,class:"action"},[k(sn,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):m("",!0),c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),e.image||i(t)?(s(),u("div",pn,[d("div",kn,[a[0]||(a[0]=d("div",{class:"image-bg"},null,-1)),c(n.$slots,"home-hero-image",{},()=>[e.image?(s(),_(J,{key:0,class:"image-src",image:e.image},null,8,["image"])):m("",!0)],!0)])])):m("",!0)])],2))}}),bn=g(_n,[["__scopeId","data-v-86f5077c"]]),gn=p({__name:"VPHomeHero",setup(e){const{frontmatter:t}=L();return(n,a)=>i(t).hero?(s(),_(bn,{key:0,class:"VPHomeHero",name:i(t).hero.name,text:i(t).hero.text,tagline:i(t).hero.tagline,image:i(t).hero.image,actions:i(t).hero.actions},{"home-hero-info-before":h(()=>[c(n.$slots,"home-hero-info-before")]),"home-hero-info":h(()=>[c(n.$slots,"home-hero-info")]),"home-hero-info-after":h(()=>[c(n.$slots,"home-hero-info-after")]),"home-hero-actions-after":h(()=>[c(n.$slots,"home-hero-actions-after")]),"home-hero-image":h(()=>[c(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):m("",!0)}}),$n={class:"box"},yn={key:0,class:"icon"},Pn=["innerHTML"],Ln=["innerHTML"],Vn=["innerHTML"],Sn={key:4,class:"link-text"},Tn={class:"link-text-value"},Nn=p({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(e){return(t,n)=>(s(),_(E,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[d("article",$n,[typeof e.icon=="object"&&e.icon.wrap?(s(),u("div",yn,[k(J,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(s(),_(J,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(s(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Pn)):m("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Ln),e.details?(s(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Vn)):m("",!0),e.linkText?(s(),u("div",Sn,[d("p",Tn,[j(M(e.linkText)+" ",1),n[0]||(n[0]=d("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):m("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Mn=g(Nn,[["__scopeId","data-v-43c03651"]]),xn={key:0,class:"VPFeatures"},In={class:"container"},wn={class:"items"},An=p({__name:"VPFeatures",props:{features:{}},setup(e){const t=e,n=y(()=>{const a=t.features.length;if(a){if(a===2)return"grid-2";if(a===3)return"grid-3";if(a%3===0)return"grid-6";if(a>3)return"grid-4"}else return});return(a,o)=>e.features?(s(),u("div",xn,[d("div",In,[d("div",wn,[(s(!0),u(x,null,A(e.features,r=>(s(),u("div",{key:r.title,class:N(["item",[n.value]])},[k(Mn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):m("",!0)}}),Cn=g(An,[["__scopeId","data-v-f8bfa93d"]]),Hn=p({__name:"VPHomeFeatures",setup(e){const{frontmatter:t}=L();return(n,a)=>i(t).features?(s(),_(Cn,{key:0,class:"VPHomeFeatures",features:i(t).features},null,8,["features"])):m("",!0)}}),Bn=p({__name:"VPHomeContent",setup(e){const{width:t}=De({initialWidth:0,includeScrollbar:!1});return(n,a)=>(s(),u("div",{class:"vp-doc container",style:Pe(i(t)?{"--vp-offset":`calc(50% - ${i(t)/2}px)`}:{})},[c(n.$slots,"default",{},void 0,!0)],4))}}),En=g(Bn,[["__scopeId","data-v-0611f689"]]),Fn=p({__name:"VPHome",setup(e){const{frontmatter:t,theme:n}=L();return(a,o)=>{const r=W("Content");return s(),u("div",{class:N(["VPHome",{"external-link-icon-enabled":i(n).externalLinkIcon}])},[c(a.$slots,"home-hero-before",{},void 0,!0),k(gn,null,{"home-hero-info-before":h(()=>[c(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(a.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(a.$slots,"home-hero-after",{},void 0,!0),c(a.$slots,"home-features-before",{},void 0,!0),k(Hn),c(a.$slots,"home-features-after",{},void 0,!0),i(t).markdownStyles!==!1?(s(),_(En,{key:0},{default:h(()=>[k(r)]),_:1})):(s(),_(r,{key:1}))],2)}}}),Dn=g(Fn,[["__scopeId","data-v-d7a0f279"]]),On={},Gn={class:"VPPage"};function Un(e,t){const n=W("Content");return s(),u("div",Gn,[c(e.$slots,"page-top"),k(n),c(e.$slots,"page-bottom")])}const jn=g(On,[["render",Un]]),zn=p({__name:"VPContent",setup(e){const{page:t,frontmatter:n}=L(),{hasSidebar:a}=D();return(o,r)=>(s(),u("div",{class:N(["VPContent",{"has-sidebar":i(a),"is-home":i(n).layout==="home"}]),id:"VPContent"},[i(t).isNotFound?c(o.$slots,"not-found",{key:0},()=>[k(rt)],!0):i(n).layout==="page"?(s(),_(jn,{key:1},{"page-top":h(()=>[c(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(n).layout==="home"?(s(),_(Dn,{key:2},{"home-hero-before":h(()=>[c(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(n).layout&&i(n).layout!=="doc"?(s(),_(B(i(n).layout),{key:3})):(s(),_(an,{key:4},{"doc-top":h(()=>[c(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[c(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[c(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[c(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[c(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Wn=g(zn,[["__scopeId","data-v-6c992f05"]]),Kn={class:"container"},qn=["innerHTML"],Rn=["innerHTML"],Jn=p({__name:"VPFooter",setup(e){const{theme:t,frontmatter:n}=L(),{hasSidebar:a}=D();return(o,r)=>i(t).footer&&i(n).footer!==!1?(s(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":i(a)}])},[d("div",Kn,[i(t).footer.message?(s(),u("p",{key:0,class:"message",innerHTML:i(t).footer.message},null,8,qn)):m("",!0),i(t).footer.copyright?(s(),u("p",{key:1,class:"copyright",innerHTML:i(t).footer.copyright},null,8,Rn)):m("",!0)])],2)):m("",!0)}}),Xn=g(Jn,[["__scopeId","data-v-137d0c52"]]);function Yn(){const{theme:e,frontmatter:t}=L(),n=$e([]),a=y(()=>n.value.length>0);return Y(()=>{n.value=me(t.value.outline??e.value.outline)}),{headers:n,hasLocalNav:a}}const Qn={class:"menu-text"},Zn={class:"header"},ea={class:"outline"},ta=p({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(e){const t=e,{theme:n}=L(),a=S(!1),o=S(0),r=S(),l=S();function v(b){var P;(P=r.value)!=null&&P.contains(b.target)||(a.value=!1)}F(a,b=>{if(b){document.addEventListener("click",v);return}document.removeEventListener("click",v)}),ie("Escape",()=>{a.value=!1}),Y(()=>{a.value=!1});function f(){a.value=!a.value,o.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function $(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Le(()=>{a.value=!1}))}function V(){a.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(s(),u("div",{class:"VPLocalNavOutlineDropdown",style:Pe({"--vp-vh":o.value+"px"}),ref_key:"main",ref:r},[e.headers.length>0?(s(),u("button",{key:0,onClick:f,class:N({open:a.value})},[d("span",Qn,M(i(Me)(i(n))),1),P[0]||(P[0]=d("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(s(),u("button",{key:1,onClick:V},M(i(n).returnToTopLabel||"Return to top"),1)),k(ue,{name:"flyout"},{default:h(()=>[a.value?(s(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:$},[d("div",Zn,[d("a",{class:"top-link",href:"#",onClick:V},M(i(n).returnToTopLabel||"Return to top"),1)]),d("div",ea,[k(xe,{headers:e.headers},null,8,["headers"])])],512)):m("",!0)]),_:1})],4))}}),na=g(ta,[["__scopeId","data-v-d1ffc3c0"]]),aa={class:"container"},oa=["aria-expanded"],sa={class:"menu-text"},ia=p({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(e){const{theme:t,frontmatter:n}=L(),{hasSidebar:a}=D(),{headers:o}=Yn(),{y:r}=Ve(),l=S(0);U(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Y(()=>{o.value=me(n.value.outline??t.value.outline)});const v=y(()=>o.value.length===0),f=y(()=>v.value&&!a.value),$=y(()=>({VPLocalNav:!0,"has-sidebar":a.value,empty:v.value,fixed:f.value}));return(V,b)=>i(n).layout!=="home"&&(!f.value||i(r)>=l.value)?(s(),u("div",{key:0,class:N($.value)},[d("div",aa,[i(a)?(s(),u("button",{key:0,class:"menu","aria-expanded":e.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>V.$emit("open-menu"))},[b[1]||(b[1]=d("span",{class:"vpi-align-left menu-icon"},null,-1)),d("span",sa,M(i(t).sidebarMenuLabel||"Menu"),1)],8,oa)):m("",!0),k(na,{headers:i(o),navHeight:l.value},null,8,["headers","navHeight"])])],2)):m("",!0)}}),ra=g(ia,[["__scopeId","data-v-b2c93339"]]);function la(){const e=S(!1);function t(){e.value=!0,window.addEventListener("resize",o)}function n(){e.value=!1,window.removeEventListener("resize",o)}function a(){e.value?n():t()}function o(){window.outerWidth>=768&&n()}const r=Q();return F(()=>r.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:a}}const ca={},ua={class:"VPSwitch",type:"button",role:"switch"},da={class:"check"},va={key:0,class:"icon"};function fa(e,t){return s(),u("button",ua,[d("span",da,[e.$slots.default?(s(),u("span",va,[c(e.$slots,"default",{},void 0,!0)])):m("",!0)])])}const ha=g(ca,[["render",fa],["__scopeId","data-v-65cb479b"]]),ma=p({__name:"VPSwitchAppearance",setup(e){const{isDark:t,theme:n}=L(),a=Z("toggle-appearance",()=>{t.value=!t.value}),o=S("");return fe(()=>{o.value=t.value?n.value.lightModeSwitchTitle||"Switch to light theme":n.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(s(),_(ha,{title:o.value,class:"VPSwitchAppearance","aria-checked":i(t),onClick:i(a)},{default:h(()=>[...l[0]||(l[0]=[d("span",{class:"vpi-sun sun"},null,-1),d("span",{class:"vpi-moon moon"},null,-1)])]),_:1},8,["title","aria-checked","onClick"]))}}),pe=g(ma,[["__scopeId","data-v-95390f3d"]]),pa={key:0,class:"VPNavBarAppearance"},ka=p({__name:"VPNavBarAppearance",setup(e){const{site:t}=L();return(n,a)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",pa,[k(pe)])):m("",!0)}}),_a=g(ka,[["__scopeId","data-v-c2b7fe22"]]),ke=S();let Ie=!1,oe=0;function ba(e){const t=S(!1);if(ee){!Ie&&ga(),oe++;const n=F(ke,a=>{var o,r,l;a===e.el.value||(o=e.el.value)!=null&&o.contains(a)?(t.value=!0,(r=e.onFocus)==null||r.call(e)):(t.value=!1,(l=e.onBlur)==null||l.call(e))});ve(()=>{n(),oe--,oe||$a()})}return Oe(t)}function ga(){document.addEventListener("focusin",we),Ie=!0,ke.value=document.activeElement}function $a(){document.removeEventListener("focusin",we)}function we(){ke.value=document.activeElement}const ya={class:"VPMenuLink"},Pa=["innerHTML"],La=p({__name:"VPMenuLink",props:{item:{}},setup(e){const{page:t}=L();return(n,a)=>(s(),u("div",ya,[k(E,{class:N({active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,Pa)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),te=g(La,[["__scopeId","data-v-859c4b5e"]]),Va={class:"VPMenuGroup"},Sa={key:0,class:"title"},Ta=p({__name:"VPMenuGroup",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",Va,[e.text?(s(),u("p",Sa,M(e.text),1)):m("",!0),(s(!0),u(x,null,A(e.items,a=>(s(),u(x,null,["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):m("",!0)],64))),256))]))}}),Na=g(Ta,[["__scopeId","data-v-fddbce6f"]]),Ma={class:"VPMenu"},xa={key:0,class:"items"},Ia=p({__name:"VPMenu",props:{items:{}},setup(e){return(t,n)=>(s(),u("div",Ma,[e.items?(s(),u("div",xa,[(s(!0),u(x,null,A(e.items,a=>(s(),u(x,{key:JSON.stringify(a)},["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):"component"in a?(s(),_(B(a.component),G({key:1,ref_for:!0},a.props),null,16)):(s(),_(Na,{key:2,text:a.text,items:a.items},null,8,["text","items"]))],64))),128))])):m("",!0),c(t.$slots,"default",{},void 0,!0)]))}}),wa=g(Ia,[["__scopeId","data-v-b1338896"]]),Aa=["aria-expanded","aria-label"],Ca={key:0,class:"text"},Ha=["innerHTML"],Ba={key:1,class:"vpi-more-horizontal icon"},Ea={class:"menu"},Fa=p({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(e){const t=S(!1),n=S();ba({el:n,onBlur:a});function a(){t.value=!1}return(o,r)=>(s(),u("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=l=>t.value=!0),onMouseleave:r[2]||(r[2]=l=>t.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":e.label,onClick:r[0]||(r[0]=l=>t.value=!t.value)},[e.button||e.icon?(s(),u("span",Ca,[e.icon?(s(),u("span",{key:0,class:N([e.icon,"option-icon"])},null,2)):m("",!0),e.button?(s(),u("span",{key:1,innerHTML:e.button},null,8,Ha)):m("",!0),r[3]||(r[3]=d("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(s(),u("span",Ba))],8,Aa),d("div",Ea,[k(wa,{items:e.items},{default:h(()=>[c(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),_e=g(Fa,[["__scopeId","data-v-c9799874"]]),Da=["href","aria-label","innerHTML"],Oa=p({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(e){const t=e,n=S();U(async()=>{var r;await Le();const o=(r=n.value)==null?void 0:r.children[0];o instanceof HTMLElement&&o.className.startsWith("vpi-social-")&&(getComputedStyle(o).maskImage||getComputedStyle(o).webkitMaskImage)==="none"&&o.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${t.icon}.svg')`)});const a=y(()=>typeof t.icon=="object"?t.icon.svg:``);return(o,r)=>(s(),u("a",{ref_key:"el",ref:n,class:"VPSocialLink no-icon",href:e.link,"aria-label":e.ariaLabel??(typeof e.icon=="string"?e.icon:""),target:"_blank",rel:"noopener",innerHTML:a.value},null,8,Da))}}),Ga=g(Oa,[["__scopeId","data-v-9d5b176c"]]),Ua={class:"VPSocialLinks"},ja=p({__name:"VPSocialLinks",props:{links:{}},setup(e){return(t,n)=>(s(),u("div",Ua,[(s(!0),u(x,null,A(e.links,({link:a,icon:o,ariaLabel:r})=>(s(),_(Ga,{key:a,icon:o,link:a,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=g(ja,[["__scopeId","data-v-ce44a42a"]]),za={key:0,class:"group translations"},Wa={class:"trans-title"},Ka={key:1,class:"group"},qa={class:"item appearance"},Ra={class:"label"},Ja={class:"appearance-action"},Xa={key:2,class:"group"},Ya={class:"item social-links"},Qa=p({__name:"VPNavBarExtra",setup(e){const{site:t,theme:n}=L(),{localeLinks:a,currentLang:o}=q({correspondingLink:!0}),r=y(()=>a.value.length&&o.value.label||t.value.appearance||n.value.socialLinks);return(l,v)=>r.value?(s(),_(_e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[i(a).length&&i(o).label?(s(),u("div",za,[d("p",Wa,M(i(o).label),1),(s(!0),u(x,null,A(i(a),f=>(s(),_(te,{key:f.link,item:f},null,8,["item"]))),128))])):m("",!0),i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",Ka,[d("div",qa,[d("p",Ra,M(i(n).darkModeSwitchLabel||"Appearance"),1),d("div",Ja,[k(pe)])])])):m("",!0),i(n).socialLinks?(s(),u("div",Xa,[d("div",Ya,[k(be,{class:"social-links-list",links:i(n).socialLinks},null,8,["links"])])])):m("",!0)]),_:1})):m("",!0)}}),Za=g(Qa,[["__scopeId","data-v-563e76b4"]]),eo=["aria-expanded"],to=p({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>(s(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=a=>t.$emit("click"))},[...n[1]||(n[1]=[d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)])],10,eo))}}),no=g(to,[["__scopeId","data-v-96eb4489"]]),ao=["innerHTML"],oo=p({__name:"VPNavBarMenuLink",props:{item:{}},setup(e){const{page:t}=L();return(n,a)=>(s(),_(E,{class:N({VPNavBarMenuLink:!0,active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,tabindex:"0"},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,ao)]),_:1},8,["class","href","target","rel","no-icon"]))}}),so=g(oo,[["__scopeId","data-v-e59bbbee"]]),io=p({__name:"VPNavBarMenuGroup",props:{item:{}},setup(e){const t=e,{page:n}=L(),a=r=>"component"in r?!1:"link"in r?z(n.value.relativePath,r.link,!!t.item.activeMatch):r.items.some(a),o=y(()=>a(t.item));return(r,l)=>(s(),_(_e,{class:N({VPNavBarMenuGroup:!0,active:i(z)(i(n).relativePath,e.item.activeMatch,!!e.item.activeMatch)||o.value}),button:e.item.text,items:e.item.items},null,8,["class","button","items"]))}}),ro={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},lo=p({__name:"VPNavBarMenu",setup(e){const{theme:t}=L();return(n,a)=>i(t).nav?(s(),u("nav",ro,[a[0]||(a[0]=d("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(s(!0),u(x,null,A(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(so,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(B(o.component),G({key:1,ref_for:!0},o.props),null,16)):(s(),_(io,{key:2,item:o},null,8,["item"]))],64))),128))])):m("",!0)}}),co=g(lo,[["__scopeId","data-v-a23194af"]]);function uo(e){const{localeIndex:t,theme:n}=L();function a(o){var I,w,C;const r=o.split("."),l=(I=n.value.search)==null?void 0:I.options,v=l&&typeof l=="object",f=v&&((C=(w=l.locales)==null?void 0:w[t.value])==null?void 0:C.translations)||null,$=v&&l.translations||null;let V=f,b=$,P=e;const T=r.pop();for(const H of r){let O=null;const K=P==null?void 0:P[H];K&&(O=P=K);const ne=b==null?void 0:b[H];ne&&(O=b=ne);const ae=V==null?void 0:V[H];ae&&(O=V=ae),K||(P=O),ne||(b=O),ae||(V=O)}return(V==null?void 0:V[T])??(b==null?void 0:b[T])??(P==null?void 0:P[T])??""}return a}const vo=["aria-label"],fo={class:"DocSearch-Button-Container"},ho={class:"DocSearch-Button-Placeholder"},ge=p({__name:"VPNavBarSearchButton",setup(e){const n=uo({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(a,o)=>(s(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(n)("button.buttonAriaLabel")},[d("span",fo,[o[0]||(o[0]=d("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),d("span",ho,M(i(n)("button.buttonText")),1)]),o[1]||(o[1]=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,vo))}}),mo={class:"VPNavBarSearch"},po={id:"local-search"},ko={key:1,id:"docsearch"},_o=p({__name:"VPNavBarSearch",setup(e){const t=Ge(()=>Ue(()=>import("./VPLocalSearchBox.CpjIPF0W.js"),__vite__mapDeps([0,1]))),n=()=>null,{theme:a}=L(),o=S(!1),r=S(!1);U(()=>{});function l(){o.value||(o.value=!0,setTimeout(v,16))}function v(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function f(b){const P=b.target,T=P.tagName;return P.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const $=S(!1);ie("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),$.value=!0)}),ie("/",b=>{f(b)||(b.preventDefault(),$.value=!0)});const V="local";return(b,P)=>{var T;return s(),u("div",mo,[i(V)==="local"?(s(),u(x,{key:0},[$.value?(s(),_(i(t),{key:0,onClose:P[0]||(P[0]=I=>$.value=!1)})):m("",!0),d("div",po,[k(ge,{onClick:P[1]||(P[1]=I=>$.value=!0)})])],64)):i(V)==="algolia"?(s(),u(x,{key:1},[o.value?(s(),_(i(n),{key:0,algolia:((T=i(a).search)==null?void 0:T.options)??i(a).algolia,onVnodeBeforeMount:P[2]||(P[2]=I=>r.value=!0)},null,8,["algolia"])):m("",!0),r.value?m("",!0):(s(),u("div",ko,[k(ge,{onClick:l})]))],64)):m("",!0)])}}}),bo=p({__name:"VPNavBarSocialLinks",setup(e){const{theme:t}=L();return(n,a)=>i(t).socialLinks?(s(),_(be,{key:0,class:"VPNavBarSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),go=g(bo,[["__scopeId","data-v-5bf14e4d"]]),$o=["href","rel","target"],yo=["innerHTML"],Po={key:2},Lo=p({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=L(),{hasSidebar:a}=D(),{currentLang:o}=q(),r=y(()=>{var f;return typeof n.value.logoLink=="string"?n.value.logoLink:(f=n.value.logoLink)==null?void 0:f.link}),l=y(()=>{var f;return typeof n.value.logoLink=="string"||(f=n.value.logoLink)==null?void 0:f.rel}),v=y(()=>{var f;return typeof n.value.logoLink=="string"||(f=n.value.logoLink)==null?void 0:f.target});return(f,$)=>(s(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":i(a)}])},[d("a",{class:"title",href:r.value??i(he)(i(o).link),rel:l.value,target:v.value},[c(f.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(s(),_(J,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):m("",!0),i(n).siteTitle?(s(),u("span",{key:1,innerHTML:i(n).siteTitle},null,8,yo)):i(n).siteTitle===void 0?(s(),u("span",Po,M(i(t).title),1)):m("",!0),c(f.$slots,"nav-bar-title-after",{},void 0,!0)],8,$o)],2))}}),Vo=g(Lo,[["__scopeId","data-v-66d4ae12"]]),So={class:"items"},To={class:"title"},No=p({__name:"VPNavBarTranslations",setup(e){const{theme:t}=L(),{localeLinks:n,currentLang:a}=q({correspondingLink:!0});return(o,r)=>i(n).length&&i(a).label?(s(),_(_e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(t).langMenuLabel||"Change language"},{default:h(()=>[d("div",So,[d("p",To,M(i(a).label),1),(s(!0),u(x,null,A(i(n),l=>(s(),_(te,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):m("",!0)}}),Mo=g(No,[["__scopeId","data-v-2d4849be"]]),xo={class:"wrapper"},Io={class:"container"},wo={class:"title"},Ao={class:"content"},Co={class:"content-body"},Ho=p({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(e){const t=e,{y:n}=Ve(),{hasSidebar:a}=D(),{frontmatter:o}=L(),r=S({});return fe(()=>{r.value={"has-sidebar":a.value,home:o.value.layout==="home",top:n.value===0,"screen-open":t.isScreenOpen}}),(l,v)=>(s(),u("div",{class:N(["VPNavBar",r.value])},[d("div",xo,[d("div",Io,[d("div",wo,[k(Vo,null,{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",Ao,[d("div",Co,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(_o,{class:"search"}),k(co,{class:"menu"}),k(Mo,{class:"translations"}),k(_a,{class:"appearance"}),k(go,{class:"social-links"}),k(Za,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(no,{class:"hamburger",active:e.isScreenOpen,onClick:v[0]||(v[0]=f=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),v[1]||(v[1]=d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1))],2))}}),Bo=g(Ho,[["__scopeId","data-v-8d1ffe88"]]),Eo={key:0,class:"VPNavScreenAppearance"},Fo={class:"text"},Do=p({__name:"VPNavScreenAppearance",setup(e){const{site:t,theme:n}=L();return(a,o)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",Eo,[d("p",Fo,M(i(n).darkModeSwitchLabel||"Appearance"),1),k(pe)])):m("",!0)}}),Oo=g(Do,[["__scopeId","data-v-a5de2fe4"]]),Go=["innerHTML"],Uo=p({__name:"VPNavScreenMenuLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,Go)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),jo=g(Uo,[["__scopeId","data-v-f6216396"]]),zo=["innerHTML"],Wo=p({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuGroupLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,zo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Ae=g(Wo,[["__scopeId","data-v-989ed20f"]]),Ko={class:"VPNavScreenMenuGroupSection"},qo={key:0,class:"title"},Ro=p({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",Ko,[e.text?(s(),u("p",qo,M(e.text),1)):m("",!0),(s(!0),u(x,null,A(e.items,a=>(s(),_(Ae,{key:a.text,item:a},null,8,["item"]))),128))]))}}),Jo=g(Ro,[["__scopeId","data-v-652dbd88"]]),Xo=["aria-controls","aria-expanded"],Yo=["innerHTML"],Qo=["id"],Zo={key:0,class:"item"},es={key:1,class:"item"},ts={key:2,class:"group"},ns=p({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(e){const t=e,n=S(!1),a=y(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function o(){n.value=!n.value}return(r,l)=>(s(),u("div",{class:N(["VPNavScreenMenuGroup",{open:n.value}])},[d("button",{class:"button","aria-controls":a.value,"aria-expanded":n.value,onClick:o},[d("span",{class:"button-text",innerHTML:e.text},null,8,Yo),l[0]||(l[0]=d("span",{class:"vpi-plus button-icon"},null,-1))],8,Xo),d("div",{id:a.value,class:"items"},[(s(!0),u(x,null,A(e.items,v=>(s(),u(x,{key:JSON.stringify(v)},["link"in v?(s(),u("div",Zo,[k(Ae,{item:v},null,8,["item"])])):"component"in v?(s(),u("div",es,[(s(),_(B(v.component),G({ref_for:!0},v.props,{"screen-menu":""}),null,16))])):(s(),u("div",ts,[k(Jo,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,Qo)],2))}}),as=g(ns,[["__scopeId","data-v-a6f357af"]]),os={key:0,class:"VPNavScreenMenu"},ss=p({__name:"VPNavScreenMenu",setup(e){const{theme:t}=L();return(n,a)=>i(t).nav?(s(),u("nav",os,[(s(!0),u(x,null,A(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(jo,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(B(o.component),G({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(s(),_(as,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):m("",!0)}}),is=p({__name:"VPNavScreenSocialLinks",setup(e){const{theme:t}=L();return(n,a)=>i(t).socialLinks?(s(),_(be,{key:0,class:"VPNavScreenSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),rs={class:"list"},ls=p({__name:"VPNavScreenTranslations",setup(e){const{localeLinks:t,currentLang:n}=q({correspondingLink:!0}),a=S(!1);function o(){a.value=!a.value}return(r,l)=>i(t).length&&i(n).label?(s(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:a.value}])},[d("button",{class:"title",onClick:o},[l[0]||(l[0]=d("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+M(i(n).label)+" ",1),l[1]||(l[1]=d("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),d("ul",rs,[(s(!0),u(x,null,A(i(t),v=>(s(),u("li",{key:v.link,class:"item"},[k(E,{class:"link",href:v.link},{default:h(()=>[j(M(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):m("",!0)}}),cs=g(ls,[["__scopeId","data-v-16655210"]]),us={class:"container"},ds=p({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e){const t=S(null),n=Se(ee?document.body:null);return(a,o)=>(s(),_(ue,{name:"fade",onEnter:o[0]||(o[0]=r=>n.value=!0),onAfterLeave:o[1]||(o[1]=r=>n.value=!1)},{default:h(()=>[e.open?(s(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[d("div",us,[c(a.$slots,"nav-screen-content-before",{},void 0,!0),k(ss,{class:"menu"}),k(cs,{class:"translations"}),k(Oo,{class:"appearance"}),k(is,{class:"social-links"}),c(a.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):m("",!0)]),_:3}))}}),vs=g(ds,[["__scopeId","data-v-c2555c5e"]]),fs={key:0,class:"VPNav"},hs=p({__name:"VPNav",setup(e){const{isScreenOpen:t,closeScreen:n,toggleScreen:a}=la(),{frontmatter:o}=L(),r=y(()=>o.value.navbar!==!1);return Te("close-screen",n),X(()=>{ee&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,v)=>r.value?(s(),u("header",fs,[k(Bo,{"is-screen-open":i(t),onToggleScreen:i(a)},{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(vs,{open:i(t)},{"nav-screen-content-before":h(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):m("",!0)}}),ms=g(hs,[["__scopeId","data-v-908bdb68"]]),ps=["role","tabindex"],ks={key:1,class:"items"},_s=p({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(e){const t=e,{collapsed:n,collapsible:a,isLink:o,isActiveLink:r,hasActiveLink:l,hasChildren:v,toggle:f}=dt(y(()=>t.item)),$=y(()=>v.value?"section":"div"),V=y(()=>o.value?"a":"div"),b=y(()=>v.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),P=y(()=>o.value?void 0:"button"),T=y(()=>[[`level-${t.depth}`],{collapsible:a.value},{collapsed:n.value},{"is-link":o.value},{"is-active":r.value},{"has-active":l.value}]);function I(C){"key"in C&&C.key!=="Enter"||!t.item.link&&f()}function w(){t.item.link&&f()}return(C,H)=>{const O=W("VPSidebarItem",!0);return s(),_(B($.value),{class:N(["VPSidebarItem",T.value])},{default:h(()=>[e.item.text?(s(),u("div",G({key:0,class:"item",role:P.value},je(e.item.items?{click:I,keydown:I}:{},!0),{tabindex:e.item.items&&0}),[H[1]||(H[1]=d("div",{class:"indicator"},null,-1)),e.item.link?(s(),_(E,{key:0,tag:V.value,class:"link",href:e.item.link,rel:e.item.rel,target:e.item.target},{default:h(()=>[(s(),_(B(b.value),{class:"text",innerHTML:e.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),_(B(b.value),{key:1,class:"text",innerHTML:e.item.text},null,8,["innerHTML"])),e.item.collapsed!=null&&e.item.items&&e.item.items.length?(s(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:w,onKeydown:ze(w,["enter"]),tabindex:"0"},[...H[0]||(H[0]=[d("span",{class:"vpi-chevron-right caret-icon"},null,-1)])],32)):m("",!0)],16,ps)):m("",!0),e.item.items&&e.item.items.length?(s(),u("div",ks,[e.depth<5?(s(!0),u(x,{key:0},A(e.item.items,K=>(s(),_(O,{key:K.text,item:K,depth:e.depth+1},null,8,["item","depth"]))),128)):m("",!0)])):m("",!0)]),_:1},8,["class"])}}}),bs=g(_s,[["__scopeId","data-v-31549b30"]]),gs=p({__name:"VPSidebarGroup",props:{items:{}},setup(e){const t=S(!0);let n=null;return U(()=>{n=setTimeout(()=>{n=null,t.value=!1},300)}),We(()=>{n!=null&&(clearTimeout(n),n=null)}),(a,o)=>(s(!0),u(x,null,A(e.items,r=>(s(),u("div",{key:r.text,class:N(["group",{"no-transition":t.value}])},[k(bs,{item:r,depth:0},null,8,["item"])],2))),128))}}),$s=g(gs,[["__scopeId","data-v-5df780f0"]]),ys={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ps=p({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e){const{sidebarGroups:t,hasSidebar:n}=D(),a=e,o=S(null),r=Se(ee?document.body:null);F([a,o],()=>{var v;a.open?(r.value=!0,(v=o.value)==null||v.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=S(0);return F(t,()=>{l.value+=1},{deep:!0}),(v,f)=>i(n)?(s(),u("aside",{key:0,class:N(["VPSidebar",{open:e.open}]),ref_key:"navEl",ref:o,onClick:f[0]||(f[0]=Ke(()=>{},["stop"]))},[f[2]||(f[2]=d("div",{class:"curtain"},null,-1)),d("nav",ys,[f[1]||(f[1]=d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(v.$slots,"sidebar-nav-before",{},void 0,!0),(s(),_($s,{items:i(t),key:l.value},null,8,["items"])),c(v.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):m("",!0)}}),Ls=g(Ps,[["__scopeId","data-v-59945d5d"]]),Vs=p({__name:"VPSkipLink",setup(e){const{theme:t}=L(),n=Q(),a=S();F(()=>n.path,()=>a.value.focus());function o({target:r}){const l=document.getElementById(decodeURIComponent(r.hash).slice(1));if(l){const v=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",v)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",v),l.focus(),window.scrollTo(0,0)}}return(r,l)=>(s(),u(x,null,[d("span",{ref_key:"backToTop",ref:a,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o},M(i(t).skipToContentLabel||"Skip to content"),1)],64))}}),Ss=g(Vs,[["__scopeId","data-v-d63408fd"]]),Ts=p({__name:"Layout",setup(e){const{isOpen:t,open:n,close:a}=D(),o=Q();F(()=>o.path,a),ut(t,a);const{frontmatter:r}=L(),l=qe(),v=y(()=>!!l["home-hero-image"]);return Te("hero-image-slot-exists",v),(f,$)=>{const V=W("Content");return i(r).layout!==!1?(s(),u("div",{key:0,class:N(["Layout",i(r).pageClass])},[c(f.$slots,"layout-top",{},void 0,!0),k(Ss),k(Ye,{class:"backdrop",show:i(t),onClick:i(a)},null,8,["show","onClick"]),k(ms,null,{"nav-bar-title-before":h(()=>[c(f.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(f.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(f.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(f.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[c(f.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(f.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(ra,{open:i(t),onOpenMenu:i(n)},null,8,["open","onOpenMenu"]),k(Ls,{open:i(t)},{"sidebar-nav-before":h(()=>[c(f.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[c(f.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(Wn,null,{"page-top":h(()=>[c(f.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(f.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[c(f.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[c(f.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(f.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(f.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(f.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(f.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(f.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(f.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(f.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(f.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[c(f.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(f.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(f.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[c(f.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(f.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[c(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(Xn),c(f.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),_(V,{key:1}))}}}),Ns=g(Ts,[["__scopeId","data-v-ba7c87da"]]),xs={Layout:Ns,enhanceApp:({app:e})=>{e.component("Badge",Re)}};export{uo as c,xs as t,L as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.ppjlRfVe.js","assets/chunks/framework.DXGyWiRo.js"])))=>i.map(i=>d[i]); +import{d as p,c as u,r as c,n as N,o as s,a as j,t as M,b as _,w as h,T as ue,e as m,_ as g,u as Ce,i as He,f as Be,g as de,h as y,j as d,k as i,l as z,m as se,p as S,q as F,s as X,v as U,x as ve,y as fe,z as Ee,A as Fe,F as x,B as A,C as W,D as Y,E as k,G as $e,H as B,I as ye,J as Q,K as G,L as Z,M as De,N as Pe,O as ie,P as Le,Q as Ve,R as ee,S as Oe,U as Ge,V as Ue,W as Se,X as Te,Y as je,Z as ze,$ as We,a0 as Ke,a1 as qe}from"./framework.DXGyWiRo.js";const Re=p({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(e){return(t,n)=>(s(),u("span",{class:N(["VPBadge",e.type])},[c(t.$slots,"default",{},()=>[j(M(e.text),1)])],2))}}),Je={key:0,class:"VPBackdrop"},Xe=p({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(s(),_(ue,{name:"fade"},{default:h(()=>[e.show?(s(),u("div",Je)):m("",!0)]),_:1}))}}),Ye=g(Xe,[["__scopeId","data-v-e7a48126"]]),L=Ce;function Qe(e,t){let n,a=!1;return()=>{n&&clearTimeout(n),a?n=setTimeout(e,t):(e(),(a=!0)&&setTimeout(()=>a=!1,t))}}function re(e){return e.startsWith("/")?e:`/${e}`}function he(e){const{pathname:t,search:n,hash:a,protocol:o}=new URL(e,"http://a.com");if(He(e)||e.startsWith("#")||!o.startsWith("http")||!Be(t))return e;const{site:r}=L(),l=t.endsWith("/")||t.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${n}${a}`);return de(l)}function q({correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:a,theme:o,hash:r}=L(),l=y(()=>{var f,$;return{label:(f=t.value.locales[n.value])==null?void 0:f.label,link:(($=t.value.locales[n.value])==null?void 0:$.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:y(()=>Object.entries(t.value.locales).flatMap(([f,$])=>l.value.label===$.label?[]:{text:$.label,link:Ze($.link||(f==="root"?"/":`/${f}/`),o.value.i18nRouting!==!1&&e,a.value.relativePath.slice(l.value.link.length-1),!t.value.cleanUrls)+r.value})),currentLang:l}}function Ze(e,t,n,a){return t?e.replace(/\/$/,"")+re(n.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,a?".html":"")):e}const et={class:"NotFound"},tt={class:"code"},nt={class:"title"},at={class:"quote"},ot={class:"action"},st=["href","aria-label"],it=p({__name:"NotFound",setup(e){const{theme:t}=L(),{currentLang:n}=q();return(a,o)=>{var r,l,v,f,$;return s(),u("div",et,[d("p",tt,M(((r=i(t).notFound)==null?void 0:r.code)??"404"),1),d("h1",nt,M(((l=i(t).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),o[0]||(o[0]=d("div",{class:"divider"},null,-1)),d("blockquote",at,M(((v=i(t).notFound)==null?void 0:v.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",ot,[d("a",{class:"link",href:i(de)(i(n).link),"aria-label":((f=i(t).notFound)==null?void 0:f.linkLabel)??"go to home"},M((($=i(t).notFound)==null?void 0:$.linkText)??"Take me home"),9,st)])])}}}),rt=g(it,[["__scopeId","data-v-98bc8507"]]);function Ne(e,t){if(Array.isArray(e))return R(e);if(e==null)return[];t=re(t);const n=Object.keys(e).sort((o,r)=>r.split("/").length-o.split("/").length).find(o=>t.startsWith(re(o))),a=n?e[n]:[];return Array.isArray(a)?R(a):R(a.items,a.base)}function lt(e){const t=[];let n=0;for(const a in e){const o=e[a];if(o.items){n=t.push(o);continue}t[n]||t.push({items:[]}),t[n].items.push(o)}return t}function ct(e){const t=[];function n(a){for(const o of a)o.text&&o.link&&t.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&n(o.items)}return n(e),t}function le(e,t){return Array.isArray(t)?t.some(n=>le(e,n)):z(e,t.link)?!0:t.items?le(e,t.items):!1}function R(e,t){return[...e].map(n=>{const a={...n},o=a.base||t;return o&&a.link&&(a.link=o+a.link),a.items&&(a.items=R(a.items,o)),a})}function D(){const{frontmatter:e,page:t,theme:n}=L(),a=se("(min-width: 960px)"),o=S(!1),r=y(()=>{const w=n.value.sidebar,C=t.value.relativePath;return w?Ne(w,C):[]}),l=S(r.value);F(r,(w,C)=>{JSON.stringify(w)!==JSON.stringify(C)&&(l.value=r.value)});const v=y(()=>e.value.sidebar!==!1&&l.value.length>0&&e.value.layout!=="home"),f=y(()=>$?e.value.aside==null?n.value.aside==="left":e.value.aside==="left":!1),$=y(()=>e.value.layout==="home"?!1:e.value.aside!=null?!!e.value.aside:n.value.aside!==!1),V=y(()=>v.value&&a.value),b=y(()=>v.value?lt(l.value):[]);function P(){o.value=!0}function T(){o.value=!1}function I(){o.value?T():P()}return{isOpen:o,sidebar:l,sidebarGroups:b,hasSidebar:v,hasAside:$,leftAside:f,isSidebarEnabled:V,open:P,close:T,toggle:I}}function ut(e,t){let n;X(()=>{n=e.value?document.activeElement:void 0}),U(()=>{window.addEventListener("keyup",a)}),ve(()=>{window.removeEventListener("keyup",a)});function a(o){o.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function dt(e){const{page:t,hash:n}=L(),a=S(!1),o=y(()=>e.value.collapsed!=null),r=y(()=>!!e.value.link),l=S(!1),v=()=>{l.value=z(t.value.relativePath,e.value.link)};F([t,e,n],v),U(v);const f=y(()=>l.value?!0:e.value.items?le(t.value.relativePath,e.value.items):!1),$=y(()=>!!(e.value.items&&e.value.items.length));X(()=>{a.value=!!(o.value&&e.value.collapsed)}),fe(()=>{(l.value||f.value)&&(a.value=!1)});function V(){o.value&&(a.value=!a.value)}return{collapsed:a,collapsible:o,isLink:r,isActiveLink:l,hasActiveLink:f,hasChildren:$,toggle:V}}function vt(){const{hasSidebar:e}=D(),t=se("(min-width: 960px)"),n=se("(min-width: 1280px)");return{isAsideEnabled:y(()=>!n.value&&!t.value?!1:e.value?n.value:t.value)}}const ft=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,ce=[];function Me(e){return typeof e.outline=="object"&&!Array.isArray(e.outline)&&e.outline.label||e.outlineTitle||"On this page"}function me(e){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const a=Number(n.tagName[1]);return{element:n,title:ht(n),link:"#"+n.id,level:a}});return mt(t,e)}function ht(e){let t="";for(const n of e.childNodes)if(n.nodeType===1){if(ft.test(n.className))continue;t+=n.textContent}else n.nodeType===3&&(t+=n.textContent);return t.trim()}function mt(e,t){if(t===!1)return[];const n=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[a,o]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;return _t(e,a,o)}function pt(e,t){const{isAsideEnabled:n}=vt(),a=Qe(r,100);let o=null;U(()=>{requestAnimationFrame(r),window.addEventListener("scroll",a)}),Ee(()=>{l(location.hash)}),ve(()=>{window.removeEventListener("scroll",a)});function r(){if(!n.value)return;const v=window.scrollY,f=window.innerHeight,$=document.body.offsetHeight,V=Math.abs(v+f-$)<1,b=ce.map(({element:T,link:I})=>({link:I,top:kt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,I)=>T.top-I.top);if(!b.length){l(null);return}if(v<1){l(null);return}if(V){l(b[b.length-1].link);return}let P=null;for(const{link:T,top:I}of b){if(I>v+Fe()+4)break;P=T}l(P)}function l(v){o&&o.classList.remove("active"),v==null?o=null:o=e.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const f=o;f?(f.classList.add("active"),t.value.style.top=f.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function kt(e){let t=0;for(;e!==document.body;){if(e===null)return NaN;t+=e.offsetTop,e=e.offsetParent}return t}function _t(e,t,n){ce.length=0;const a=[],o=[];return e.forEach(r=>{const l={...r,children:[]};let v=o[o.length-1];for(;v&&v.level>=l.level;)o.pop(),v=o[o.length-1];if(l.element.classList.contains("ignore-header")||v&&"shouldIgnore"in v){o.push({level:l.level,shouldIgnore:!0});return}l.level>n||l.level{const o=W("VPDocOutlineItem",!0);return s(),u("ul",{class:N(["VPDocOutlineItem",e.root?"root":"nested"])},[(s(!0),u(x,null,A(e.headers,({children:r,link:l,title:v})=>(s(),u("li",null,[d("a",{class:"outline-link",href:l,onClick:t,title:v},M(v),9,bt),r!=null&&r.length?(s(),_(o,{key:0,headers:r},null,8,["headers"])):m("",!0)]))),256))],2)}}}),xe=g(gt,[["__scopeId","data-v-ba57d2ed"]]),$t={class:"content"},yt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Pt=p({__name:"VPDocAsideOutline",setup(e){const{frontmatter:t,theme:n}=L(),a=$e([]);Y(()=>{a.value=me(t.value.outline??n.value.outline)});const o=S(),r=S();return pt(o,r),(l,v)=>(s(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":a.value.length>0}]),ref_key:"container",ref:o},[d("div",$t,[d("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),d("div",yt,M(i(Me)(i(n))),1),k(xe,{headers:a.value,root:!0},null,8,["headers"])])],2))}}),Lt=g(Pt,[["__scopeId","data-v-116d4a1f"]]),Vt={class:"VPDocAsideCarbonAds"},St=p({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(e){const t=()=>null;return(n,a)=>(s(),u("div",Vt,[k(i(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),Tt={class:"VPDocAside"},Nt=p({__name:"VPDocAside",setup(e){const{theme:t}=L();return(n,a)=>(s(),u("div",Tt,[c(n.$slots,"aside-top",{},void 0,!0),c(n.$slots,"aside-outline-before",{},void 0,!0),k(Lt),c(n.$slots,"aside-outline-after",{},void 0,!0),a[0]||(a[0]=d("div",{class:"spacer"},null,-1)),c(n.$slots,"aside-ads-before",{},void 0,!0),i(t).carbonAds?(s(),_(St,{key:0,"carbon-ads":i(t).carbonAds},null,8,["carbon-ads"])):m("",!0),c(n.$slots,"aside-ads-after",{},void 0,!0),c(n.$slots,"aside-bottom",{},void 0,!0)]))}}),Mt=g(Nt,[["__scopeId","data-v-8cfe0409"]]);function xt(){const{theme:e,page:t}=L();return y(()=>{const{text:n="Edit this page",pattern:a=""}=e.value.editLink||{};let o;return typeof a=="function"?o=a(t.value):o=a.replace(/:path/g,t.value.filePath),{url:o,text:n}})}function It(){const{page:e,theme:t,frontmatter:n}=L();return y(()=>{var $,V,b,P,T,I,w,C;const a=Ne(t.value.sidebar,e.value.relativePath),o=ct(a),r=wt(o,H=>H.link.replace(/[?#].*$/,"")),l=r.findIndex(H=>z(e.value.relativePath,H.link)),v=(($=t.value.docFooter)==null?void 0:$.prev)===!1&&!n.value.prev||n.value.prev===!1,f=((V=t.value.docFooter)==null?void 0:V.next)===!1&&!n.value.next||n.value.next===!1;return{prev:v?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??((b=r[l-1])==null?void 0:b.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((T=r[l-1])==null?void 0:T.link)},next:f?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??((I=r[l+1])==null?void 0:I.docFooterText)??((w=r[l+1])==null?void 0:w.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??((C=r[l+1])==null?void 0:C.link)}}})}function wt(e,t){const n=new Set;return e.filter(a=>{const o=t(a);return n.has(o)?!1:n.add(o)})}const E=p({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(e){const t=e,n=y(()=>t.tag??(t.href?"a":"span")),a=y(()=>t.href&&ye.test(t.href)||t.target==="_blank");return(o,r)=>(s(),_(B(n.value),{class:N(["VPLink",{link:e.href,"vp-external-link-icon":a.value,"no-icon":e.noIcon}]),href:e.href?i(he)(e.href):void 0,target:e.target??(a.value?"_blank":void 0),rel:e.rel??(a.value?"noreferrer":void 0)},{default:h(()=>[c(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),At={class:"VPLastUpdated"},Ct=["datetime"],Ht=p({__name:"VPDocFooterLastUpdated",setup(e){const{theme:t,page:n,lang:a}=L(),o=y(()=>new Date(n.value.lastUpdated)),r=y(()=>o.value.toISOString()),l=S("");return U(()=>{X(()=>{var v,f,$;l.value=new Intl.DateTimeFormat((f=(v=t.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&f.forceLocale?a.value:void 0,(($=t.value.lastUpdated)==null?void 0:$.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(v,f)=>{var $;return s(),u("p",At,[j(M((($=i(t).lastUpdated)==null?void 0:$.text)||i(t).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:r.value},M(l.value),9,Ct)])}}}),Bt=g(Ht,[["__scopeId","data-v-1cbf3ee4"]]),Et={key:0,class:"VPDocFooter"},Ft={key:0,class:"edit-info"},Dt={key:0,class:"edit-link"},Ot={key:1,class:"last-updated"},Gt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Ut={class:"pager"},jt=["innerHTML"],zt=["innerHTML"],Wt={class:"pager"},Kt=["innerHTML"],qt=["innerHTML"],Rt=p({__name:"VPDocFooter",setup(e){const{theme:t,page:n,frontmatter:a}=L(),o=xt(),r=It(),l=y(()=>t.value.editLink&&a.value.editLink!==!1),v=y(()=>n.value.lastUpdated),f=y(()=>l.value||v.value||r.value.prev||r.value.next);return($,V)=>{var b,P,T,I;return f.value?(s(),u("footer",Et,[c($.$slots,"doc-footer-before",{},void 0,!0),l.value||v.value?(s(),u("div",Ft,[l.value?(s(),u("div",Dt,[k(E,{class:"edit-link-button",href:i(o).url,"no-icon":!0},{default:h(()=>[V[0]||(V[0]=d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+M(i(o).text),1)]),_:1},8,["href"])])):m("",!0),v.value?(s(),u("div",Ot,[k(Bt)])):m("",!0)])):m("",!0),(b=i(r).prev)!=null&&b.link||(P=i(r).next)!=null&&P.link?(s(),u("nav",Gt,[V[1]||(V[1]=d("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),d("div",Ut,[(T=i(r).prev)!=null&&T.link?(s(),_(E,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:h(()=>{var w;return[d("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.prev)||"Previous page"},null,8,jt),d("span",{class:"title",innerHTML:i(r).prev.text},null,8,zt)]}),_:1},8,["href"])):m("",!0)]),d("div",Wt,[(I=i(r).next)!=null&&I.link?(s(),_(E,{key:0,class:"pager-link next",href:i(r).next.link},{default:h(()=>{var w;return[d("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.next)||"Next page"},null,8,Kt),d("span",{class:"title",innerHTML:i(r).next.text},null,8,qt)]}),_:1},8,["href"])):m("",!0)])])):m("",!0)])):m("",!0)}}}),Jt=g(Rt,[["__scopeId","data-v-64297f89"]]),Xt={class:"container"},Yt={class:"aside-container"},Qt={class:"aside-content"},Zt={class:"content"},en={class:"content-container"},tn={class:"main"},nn=p({__name:"VPDoc",setup(e){const{theme:t}=L(),n=Q(),{hasSidebar:a,hasAside:o,leftAside:r}=D(),l=y(()=>n.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,f)=>{const $=W("Content");return s(),u("div",{class:N(["VPDoc",{"has-sidebar":i(a),"has-aside":i(o)}])},[c(v.$slots,"doc-top",{},void 0,!0),d("div",Xt,[i(o)?(s(),u("div",{key:0,class:N(["aside",{"left-aside":i(r)}])},[f[0]||(f[0]=d("div",{class:"aside-curtain"},null,-1)),d("div",Yt,[d("div",Qt,[k(Mt,null,{"aside-top":h(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):m("",!0),d("div",Zt,[d("div",en,[c(v.$slots,"doc-before",{},void 0,!0),d("main",tn,[k($,{class:N(["vp-doc",[l.value,i(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(Jt,null,{"doc-footer-before":h(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(v.$slots,"doc-after",{},void 0,!0)])])]),c(v.$slots,"doc-bottom",{},void 0,!0)],2)}}}),an=g(nn,[["__scopeId","data-v-888acc39"]]),on=p({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(e){const t=e,n=y(()=>t.href&&ye.test(t.href)),a=y(()=>t.tag||(t.href?"a":"button"));return(o,r)=>(s(),_(B(a.value),{class:N(["VPButton",[e.size,e.theme]]),href:e.href?i(he)(e.href):void 0,target:t.target??(n.value?"_blank":void 0),rel:t.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[j(M(e.text),1)]),_:1},8,["class","href","target","rel"]))}}),sn=g(on,[["__scopeId","data-v-6cd5edd1"]]),rn=["src","alt"],ln=p({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(e){return(t,n)=>{const a=W("VPImage",!0);return e.image?(s(),u(x,{key:0},[typeof e.image=="string"||"src"in e.image?(s(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?t.$attrs:{...e.image,...t.$attrs},{src:i(de)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,rn)):(s(),u(x,{key:1},[k(a,G({class:"dark",image:e.image.dark,alt:e.image.alt},t.$attrs),null,16,["image","alt"]),k(a,G({class:"light",image:e.image.light,alt:e.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):m("",!0)}}}),J=g(ln,[["__scopeId","data-v-21b99582"]]),cn={class:"container"},un={class:"main"},dn={class:"heading"},vn=["innerHTML"],fn=["innerHTML"],hn=["innerHTML"],mn={key:0,class:"actions"},pn={key:0,class:"image"},kn={class:"image-container"},_n=p({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(e){const t=Z("hero-image-slot-exists");return(n,a)=>(s(),u("div",{class:N(["VPHero",{"has-image":e.image||i(t)}])},[d("div",cn,[d("div",un,[c(n.$slots,"home-hero-info-before",{},void 0,!0),c(n.$slots,"home-hero-info",{},()=>[d("h1",dn,[e.name?(s(),u("span",{key:0,innerHTML:e.name,class:"name clip"},null,8,vn)):m("",!0),e.text?(s(),u("span",{key:1,innerHTML:e.text,class:"text"},null,8,fn)):m("",!0)]),e.tagline?(s(),u("p",{key:0,innerHTML:e.tagline,class:"tagline"},null,8,hn)):m("",!0)],!0),c(n.$slots,"home-hero-info-after",{},void 0,!0),e.actions?(s(),u("div",mn,[(s(!0),u(x,null,A(e.actions,o=>(s(),u("div",{key:o.link,class:"action"},[k(sn,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):m("",!0),c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),e.image||i(t)?(s(),u("div",pn,[d("div",kn,[a[0]||(a[0]=d("div",{class:"image-bg"},null,-1)),c(n.$slots,"home-hero-image",{},()=>[e.image?(s(),_(J,{key:0,class:"image-src",image:e.image},null,8,["image"])):m("",!0)],!0)])])):m("",!0)])],2))}}),bn=g(_n,[["__scopeId","data-v-86f5077c"]]),gn=p({__name:"VPHomeHero",setup(e){const{frontmatter:t}=L();return(n,a)=>i(t).hero?(s(),_(bn,{key:0,class:"VPHomeHero",name:i(t).hero.name,text:i(t).hero.text,tagline:i(t).hero.tagline,image:i(t).hero.image,actions:i(t).hero.actions},{"home-hero-info-before":h(()=>[c(n.$slots,"home-hero-info-before")]),"home-hero-info":h(()=>[c(n.$slots,"home-hero-info")]),"home-hero-info-after":h(()=>[c(n.$slots,"home-hero-info-after")]),"home-hero-actions-after":h(()=>[c(n.$slots,"home-hero-actions-after")]),"home-hero-image":h(()=>[c(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):m("",!0)}}),$n={class:"box"},yn={key:0,class:"icon"},Pn=["innerHTML"],Ln=["innerHTML"],Vn=["innerHTML"],Sn={key:4,class:"link-text"},Tn={class:"link-text-value"},Nn=p({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(e){return(t,n)=>(s(),_(E,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[d("article",$n,[typeof e.icon=="object"&&e.icon.wrap?(s(),u("div",yn,[k(J,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(s(),_(J,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(s(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Pn)):m("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Ln),e.details?(s(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Vn)):m("",!0),e.linkText?(s(),u("div",Sn,[d("p",Tn,[j(M(e.linkText)+" ",1),n[0]||(n[0]=d("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):m("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Mn=g(Nn,[["__scopeId","data-v-43c03651"]]),xn={key:0,class:"VPFeatures"},In={class:"container"},wn={class:"items"},An=p({__name:"VPFeatures",props:{features:{}},setup(e){const t=e,n=y(()=>{const a=t.features.length;if(a){if(a===2)return"grid-2";if(a===3)return"grid-3";if(a%3===0)return"grid-6";if(a>3)return"grid-4"}else return});return(a,o)=>e.features?(s(),u("div",xn,[d("div",In,[d("div",wn,[(s(!0),u(x,null,A(e.features,r=>(s(),u("div",{key:r.title,class:N(["item",[n.value]])},[k(Mn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):m("",!0)}}),Cn=g(An,[["__scopeId","data-v-f8bfa93d"]]),Hn=p({__name:"VPHomeFeatures",setup(e){const{frontmatter:t}=L();return(n,a)=>i(t).features?(s(),_(Cn,{key:0,class:"VPHomeFeatures",features:i(t).features},null,8,["features"])):m("",!0)}}),Bn=p({__name:"VPHomeContent",setup(e){const{width:t}=De({initialWidth:0,includeScrollbar:!1});return(n,a)=>(s(),u("div",{class:"vp-doc container",style:Pe(i(t)?{"--vp-offset":`calc(50% - ${i(t)/2}px)`}:{})},[c(n.$slots,"default",{},void 0,!0)],4))}}),En=g(Bn,[["__scopeId","data-v-0611f689"]]),Fn=p({__name:"VPHome",setup(e){const{frontmatter:t,theme:n}=L();return(a,o)=>{const r=W("Content");return s(),u("div",{class:N(["VPHome",{"external-link-icon-enabled":i(n).externalLinkIcon}])},[c(a.$slots,"home-hero-before",{},void 0,!0),k(gn,null,{"home-hero-info-before":h(()=>[c(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(a.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(a.$slots,"home-hero-after",{},void 0,!0),c(a.$slots,"home-features-before",{},void 0,!0),k(Hn),c(a.$slots,"home-features-after",{},void 0,!0),i(t).markdownStyles!==!1?(s(),_(En,{key:0},{default:h(()=>[k(r)]),_:1})):(s(),_(r,{key:1}))],2)}}}),Dn=g(Fn,[["__scopeId","data-v-d7a0f279"]]),On={},Gn={class:"VPPage"};function Un(e,t){const n=W("Content");return s(),u("div",Gn,[c(e.$slots,"page-top"),k(n),c(e.$slots,"page-bottom")])}const jn=g(On,[["render",Un]]),zn=p({__name:"VPContent",setup(e){const{page:t,frontmatter:n}=L(),{hasSidebar:a}=D();return(o,r)=>(s(),u("div",{class:N(["VPContent",{"has-sidebar":i(a),"is-home":i(n).layout==="home"}]),id:"VPContent"},[i(t).isNotFound?c(o.$slots,"not-found",{key:0},()=>[k(rt)],!0):i(n).layout==="page"?(s(),_(jn,{key:1},{"page-top":h(()=>[c(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(n).layout==="home"?(s(),_(Dn,{key:2},{"home-hero-before":h(()=>[c(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(n).layout&&i(n).layout!=="doc"?(s(),_(B(i(n).layout),{key:3})):(s(),_(an,{key:4},{"doc-top":h(()=>[c(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[c(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[c(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[c(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[c(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Wn=g(zn,[["__scopeId","data-v-6c992f05"]]),Kn={class:"container"},qn=["innerHTML"],Rn=["innerHTML"],Jn=p({__name:"VPFooter",setup(e){const{theme:t,frontmatter:n}=L(),{hasSidebar:a}=D();return(o,r)=>i(t).footer&&i(n).footer!==!1?(s(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":i(a)}])},[d("div",Kn,[i(t).footer.message?(s(),u("p",{key:0,class:"message",innerHTML:i(t).footer.message},null,8,qn)):m("",!0),i(t).footer.copyright?(s(),u("p",{key:1,class:"copyright",innerHTML:i(t).footer.copyright},null,8,Rn)):m("",!0)])],2)):m("",!0)}}),Xn=g(Jn,[["__scopeId","data-v-137d0c52"]]);function Yn(){const{theme:e,frontmatter:t}=L(),n=$e([]),a=y(()=>n.value.length>0);return Y(()=>{n.value=me(t.value.outline??e.value.outline)}),{headers:n,hasLocalNav:a}}const Qn={class:"menu-text"},Zn={class:"header"},ea={class:"outline"},ta=p({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(e){const t=e,{theme:n}=L(),a=S(!1),o=S(0),r=S(),l=S();function v(b){var P;(P=r.value)!=null&&P.contains(b.target)||(a.value=!1)}F(a,b=>{if(b){document.addEventListener("click",v);return}document.removeEventListener("click",v)}),ie("Escape",()=>{a.value=!1}),Y(()=>{a.value=!1});function f(){a.value=!a.value,o.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function $(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Le(()=>{a.value=!1}))}function V(){a.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(s(),u("div",{class:"VPLocalNavOutlineDropdown",style:Pe({"--vp-vh":o.value+"px"}),ref_key:"main",ref:r},[e.headers.length>0?(s(),u("button",{key:0,onClick:f,class:N({open:a.value})},[d("span",Qn,M(i(Me)(i(n))),1),P[0]||(P[0]=d("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(s(),u("button",{key:1,onClick:V},M(i(n).returnToTopLabel||"Return to top"),1)),k(ue,{name:"flyout"},{default:h(()=>[a.value?(s(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:$},[d("div",Zn,[d("a",{class:"top-link",href:"#",onClick:V},M(i(n).returnToTopLabel||"Return to top"),1)]),d("div",ea,[k(xe,{headers:e.headers},null,8,["headers"])])],512)):m("",!0)]),_:1})],4))}}),na=g(ta,[["__scopeId","data-v-d1ffc3c0"]]),aa={class:"container"},oa=["aria-expanded"],sa={class:"menu-text"},ia=p({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(e){const{theme:t,frontmatter:n}=L(),{hasSidebar:a}=D(),{headers:o}=Yn(),{y:r}=Ve(),l=S(0);U(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Y(()=>{o.value=me(n.value.outline??t.value.outline)});const v=y(()=>o.value.length===0),f=y(()=>v.value&&!a.value),$=y(()=>({VPLocalNav:!0,"has-sidebar":a.value,empty:v.value,fixed:f.value}));return(V,b)=>i(n).layout!=="home"&&(!f.value||i(r)>=l.value)?(s(),u("div",{key:0,class:N($.value)},[d("div",aa,[i(a)?(s(),u("button",{key:0,class:"menu","aria-expanded":e.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>V.$emit("open-menu"))},[b[1]||(b[1]=d("span",{class:"vpi-align-left menu-icon"},null,-1)),d("span",sa,M(i(t).sidebarMenuLabel||"Menu"),1)],8,oa)):m("",!0),k(na,{headers:i(o),navHeight:l.value},null,8,["headers","navHeight"])])],2)):m("",!0)}}),ra=g(ia,[["__scopeId","data-v-b2c93339"]]);function la(){const e=S(!1);function t(){e.value=!0,window.addEventListener("resize",o)}function n(){e.value=!1,window.removeEventListener("resize",o)}function a(){e.value?n():t()}function o(){window.outerWidth>=768&&n()}const r=Q();return F(()=>r.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:a}}const ca={},ua={class:"VPSwitch",type:"button",role:"switch"},da={class:"check"},va={key:0,class:"icon"};function fa(e,t){return s(),u("button",ua,[d("span",da,[e.$slots.default?(s(),u("span",va,[c(e.$slots,"default",{},void 0,!0)])):m("",!0)])])}const ha=g(ca,[["render",fa],["__scopeId","data-v-65cb479b"]]),ma=p({__name:"VPSwitchAppearance",setup(e){const{isDark:t,theme:n}=L(),a=Z("toggle-appearance",()=>{t.value=!t.value}),o=S("");return fe(()=>{o.value=t.value?n.value.lightModeSwitchTitle||"Switch to light theme":n.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(s(),_(ha,{title:o.value,class:"VPSwitchAppearance","aria-checked":i(t),onClick:i(a)},{default:h(()=>[...l[0]||(l[0]=[d("span",{class:"vpi-sun sun"},null,-1),d("span",{class:"vpi-moon moon"},null,-1)])]),_:1},8,["title","aria-checked","onClick"]))}}),pe=g(ma,[["__scopeId","data-v-95390f3d"]]),pa={key:0,class:"VPNavBarAppearance"},ka=p({__name:"VPNavBarAppearance",setup(e){const{site:t}=L();return(n,a)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",pa,[k(pe)])):m("",!0)}}),_a=g(ka,[["__scopeId","data-v-c2b7fe22"]]),ke=S();let Ie=!1,oe=0;function ba(e){const t=S(!1);if(ee){!Ie&&ga(),oe++;const n=F(ke,a=>{var o,r,l;a===e.el.value||(o=e.el.value)!=null&&o.contains(a)?(t.value=!0,(r=e.onFocus)==null||r.call(e)):(t.value=!1,(l=e.onBlur)==null||l.call(e))});ve(()=>{n(),oe--,oe||$a()})}return Oe(t)}function ga(){document.addEventListener("focusin",we),Ie=!0,ke.value=document.activeElement}function $a(){document.removeEventListener("focusin",we)}function we(){ke.value=document.activeElement}const ya={class:"VPMenuLink"},Pa=["innerHTML"],La=p({__name:"VPMenuLink",props:{item:{}},setup(e){const{page:t}=L();return(n,a)=>(s(),u("div",ya,[k(E,{class:N({active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,Pa)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),te=g(La,[["__scopeId","data-v-859c4b5e"]]),Va={class:"VPMenuGroup"},Sa={key:0,class:"title"},Ta=p({__name:"VPMenuGroup",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",Va,[e.text?(s(),u("p",Sa,M(e.text),1)):m("",!0),(s(!0),u(x,null,A(e.items,a=>(s(),u(x,null,["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):m("",!0)],64))),256))]))}}),Na=g(Ta,[["__scopeId","data-v-fddbce6f"]]),Ma={class:"VPMenu"},xa={key:0,class:"items"},Ia=p({__name:"VPMenu",props:{items:{}},setup(e){return(t,n)=>(s(),u("div",Ma,[e.items?(s(),u("div",xa,[(s(!0),u(x,null,A(e.items,a=>(s(),u(x,{key:JSON.stringify(a)},["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):"component"in a?(s(),_(B(a.component),G({key:1,ref_for:!0},a.props),null,16)):(s(),_(Na,{key:2,text:a.text,items:a.items},null,8,["text","items"]))],64))),128))])):m("",!0),c(t.$slots,"default",{},void 0,!0)]))}}),wa=g(Ia,[["__scopeId","data-v-b1338896"]]),Aa=["aria-expanded","aria-label"],Ca={key:0,class:"text"},Ha=["innerHTML"],Ba={key:1,class:"vpi-more-horizontal icon"},Ea={class:"menu"},Fa=p({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(e){const t=S(!1),n=S();ba({el:n,onBlur:a});function a(){t.value=!1}return(o,r)=>(s(),u("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=l=>t.value=!0),onMouseleave:r[2]||(r[2]=l=>t.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":e.label,onClick:r[0]||(r[0]=l=>t.value=!t.value)},[e.button||e.icon?(s(),u("span",Ca,[e.icon?(s(),u("span",{key:0,class:N([e.icon,"option-icon"])},null,2)):m("",!0),e.button?(s(),u("span",{key:1,innerHTML:e.button},null,8,Ha)):m("",!0),r[3]||(r[3]=d("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(s(),u("span",Ba))],8,Aa),d("div",Ea,[k(wa,{items:e.items},{default:h(()=>[c(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),_e=g(Fa,[["__scopeId","data-v-c9799874"]]),Da=["href","aria-label","innerHTML"],Oa=p({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(e){const t=e,n=S();U(async()=>{var r;await Le();const o=(r=n.value)==null?void 0:r.children[0];o instanceof HTMLElement&&o.className.startsWith("vpi-social-")&&(getComputedStyle(o).maskImage||getComputedStyle(o).webkitMaskImage)==="none"&&o.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${t.icon}.svg')`)});const a=y(()=>typeof t.icon=="object"?t.icon.svg:``);return(o,r)=>(s(),u("a",{ref_key:"el",ref:n,class:"VPSocialLink no-icon",href:e.link,"aria-label":e.ariaLabel??(typeof e.icon=="string"?e.icon:""),target:"_blank",rel:"noopener",innerHTML:a.value},null,8,Da))}}),Ga=g(Oa,[["__scopeId","data-v-9d5b176c"]]),Ua={class:"VPSocialLinks"},ja=p({__name:"VPSocialLinks",props:{links:{}},setup(e){return(t,n)=>(s(),u("div",Ua,[(s(!0),u(x,null,A(e.links,({link:a,icon:o,ariaLabel:r})=>(s(),_(Ga,{key:a,icon:o,link:a,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=g(ja,[["__scopeId","data-v-ce44a42a"]]),za={key:0,class:"group translations"},Wa={class:"trans-title"},Ka={key:1,class:"group"},qa={class:"item appearance"},Ra={class:"label"},Ja={class:"appearance-action"},Xa={key:2,class:"group"},Ya={class:"item social-links"},Qa=p({__name:"VPNavBarExtra",setup(e){const{site:t,theme:n}=L(),{localeLinks:a,currentLang:o}=q({correspondingLink:!0}),r=y(()=>a.value.length&&o.value.label||t.value.appearance||n.value.socialLinks);return(l,v)=>r.value?(s(),_(_e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[i(a).length&&i(o).label?(s(),u("div",za,[d("p",Wa,M(i(o).label),1),(s(!0),u(x,null,A(i(a),f=>(s(),_(te,{key:f.link,item:f},null,8,["item"]))),128))])):m("",!0),i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",Ka,[d("div",qa,[d("p",Ra,M(i(n).darkModeSwitchLabel||"Appearance"),1),d("div",Ja,[k(pe)])])])):m("",!0),i(n).socialLinks?(s(),u("div",Xa,[d("div",Ya,[k(be,{class:"social-links-list",links:i(n).socialLinks},null,8,["links"])])])):m("",!0)]),_:1})):m("",!0)}}),Za=g(Qa,[["__scopeId","data-v-563e76b4"]]),eo=["aria-expanded"],to=p({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>(s(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=a=>t.$emit("click"))},[...n[1]||(n[1]=[d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)])],10,eo))}}),no=g(to,[["__scopeId","data-v-96eb4489"]]),ao=["innerHTML"],oo=p({__name:"VPNavBarMenuLink",props:{item:{}},setup(e){const{page:t}=L();return(n,a)=>(s(),_(E,{class:N({VPNavBarMenuLink:!0,active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,tabindex:"0"},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,ao)]),_:1},8,["class","href","target","rel","no-icon"]))}}),so=g(oo,[["__scopeId","data-v-e59bbbee"]]),io=p({__name:"VPNavBarMenuGroup",props:{item:{}},setup(e){const t=e,{page:n}=L(),a=r=>"component"in r?!1:"link"in r?z(n.value.relativePath,r.link,!!t.item.activeMatch):r.items.some(a),o=y(()=>a(t.item));return(r,l)=>(s(),_(_e,{class:N({VPNavBarMenuGroup:!0,active:i(z)(i(n).relativePath,e.item.activeMatch,!!e.item.activeMatch)||o.value}),button:e.item.text,items:e.item.items},null,8,["class","button","items"]))}}),ro={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},lo=p({__name:"VPNavBarMenu",setup(e){const{theme:t}=L();return(n,a)=>i(t).nav?(s(),u("nav",ro,[a[0]||(a[0]=d("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(s(!0),u(x,null,A(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(so,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(B(o.component),G({key:1,ref_for:!0},o.props),null,16)):(s(),_(io,{key:2,item:o},null,8,["item"]))],64))),128))])):m("",!0)}}),co=g(lo,[["__scopeId","data-v-a23194af"]]);function uo(e){const{localeIndex:t,theme:n}=L();function a(o){var I,w,C;const r=o.split("."),l=(I=n.value.search)==null?void 0:I.options,v=l&&typeof l=="object",f=v&&((C=(w=l.locales)==null?void 0:w[t.value])==null?void 0:C.translations)||null,$=v&&l.translations||null;let V=f,b=$,P=e;const T=r.pop();for(const H of r){let O=null;const K=P==null?void 0:P[H];K&&(O=P=K);const ne=b==null?void 0:b[H];ne&&(O=b=ne);const ae=V==null?void 0:V[H];ae&&(O=V=ae),K||(P=O),ne||(b=O),ae||(V=O)}return(V==null?void 0:V[T])??(b==null?void 0:b[T])??(P==null?void 0:P[T])??""}return a}const vo=["aria-label"],fo={class:"DocSearch-Button-Container"},ho={class:"DocSearch-Button-Placeholder"},ge=p({__name:"VPNavBarSearchButton",setup(e){const n=uo({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(a,o)=>(s(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(n)("button.buttonAriaLabel")},[d("span",fo,[o[0]||(o[0]=d("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),d("span",ho,M(i(n)("button.buttonText")),1)]),o[1]||(o[1]=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,vo))}}),mo={class:"VPNavBarSearch"},po={id:"local-search"},ko={key:1,id:"docsearch"},_o=p({__name:"VPNavBarSearch",setup(e){const t=Ge(()=>Ue(()=>import("./VPLocalSearchBox.ppjlRfVe.js"),__vite__mapDeps([0,1]))),n=()=>null,{theme:a}=L(),o=S(!1),r=S(!1);U(()=>{});function l(){o.value||(o.value=!0,setTimeout(v,16))}function v(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function f(b){const P=b.target,T=P.tagName;return P.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const $=S(!1);ie("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),$.value=!0)}),ie("/",b=>{f(b)||(b.preventDefault(),$.value=!0)});const V="local";return(b,P)=>{var T;return s(),u("div",mo,[i(V)==="local"?(s(),u(x,{key:0},[$.value?(s(),_(i(t),{key:0,onClose:P[0]||(P[0]=I=>$.value=!1)})):m("",!0),d("div",po,[k(ge,{onClick:P[1]||(P[1]=I=>$.value=!0)})])],64)):i(V)==="algolia"?(s(),u(x,{key:1},[o.value?(s(),_(i(n),{key:0,algolia:((T=i(a).search)==null?void 0:T.options)??i(a).algolia,onVnodeBeforeMount:P[2]||(P[2]=I=>r.value=!0)},null,8,["algolia"])):m("",!0),r.value?m("",!0):(s(),u("div",ko,[k(ge,{onClick:l})]))],64)):m("",!0)])}}}),bo=p({__name:"VPNavBarSocialLinks",setup(e){const{theme:t}=L();return(n,a)=>i(t).socialLinks?(s(),_(be,{key:0,class:"VPNavBarSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),go=g(bo,[["__scopeId","data-v-5bf14e4d"]]),$o=["href","rel","target"],yo=["innerHTML"],Po={key:2},Lo=p({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=L(),{hasSidebar:a}=D(),{currentLang:o}=q(),r=y(()=>{var f;return typeof n.value.logoLink=="string"?n.value.logoLink:(f=n.value.logoLink)==null?void 0:f.link}),l=y(()=>{var f;return typeof n.value.logoLink=="string"||(f=n.value.logoLink)==null?void 0:f.rel}),v=y(()=>{var f;return typeof n.value.logoLink=="string"||(f=n.value.logoLink)==null?void 0:f.target});return(f,$)=>(s(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":i(a)}])},[d("a",{class:"title",href:r.value??i(he)(i(o).link),rel:l.value,target:v.value},[c(f.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(s(),_(J,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):m("",!0),i(n).siteTitle?(s(),u("span",{key:1,innerHTML:i(n).siteTitle},null,8,yo)):i(n).siteTitle===void 0?(s(),u("span",Po,M(i(t).title),1)):m("",!0),c(f.$slots,"nav-bar-title-after",{},void 0,!0)],8,$o)],2))}}),Vo=g(Lo,[["__scopeId","data-v-66d4ae12"]]),So={class:"items"},To={class:"title"},No=p({__name:"VPNavBarTranslations",setup(e){const{theme:t}=L(),{localeLinks:n,currentLang:a}=q({correspondingLink:!0});return(o,r)=>i(n).length&&i(a).label?(s(),_(_e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(t).langMenuLabel||"Change language"},{default:h(()=>[d("div",So,[d("p",To,M(i(a).label),1),(s(!0),u(x,null,A(i(n),l=>(s(),_(te,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):m("",!0)}}),Mo=g(No,[["__scopeId","data-v-2d4849be"]]),xo={class:"wrapper"},Io={class:"container"},wo={class:"title"},Ao={class:"content"},Co={class:"content-body"},Ho=p({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(e){const t=e,{y:n}=Ve(),{hasSidebar:a}=D(),{frontmatter:o}=L(),r=S({});return fe(()=>{r.value={"has-sidebar":a.value,home:o.value.layout==="home",top:n.value===0,"screen-open":t.isScreenOpen}}),(l,v)=>(s(),u("div",{class:N(["VPNavBar",r.value])},[d("div",xo,[d("div",Io,[d("div",wo,[k(Vo,null,{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",Ao,[d("div",Co,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(_o,{class:"search"}),k(co,{class:"menu"}),k(Mo,{class:"translations"}),k(_a,{class:"appearance"}),k(go,{class:"social-links"}),k(Za,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(no,{class:"hamburger",active:e.isScreenOpen,onClick:v[0]||(v[0]=f=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),v[1]||(v[1]=d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1))],2))}}),Bo=g(Ho,[["__scopeId","data-v-8d1ffe88"]]),Eo={key:0,class:"VPNavScreenAppearance"},Fo={class:"text"},Do=p({__name:"VPNavScreenAppearance",setup(e){const{site:t,theme:n}=L();return(a,o)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",Eo,[d("p",Fo,M(i(n).darkModeSwitchLabel||"Appearance"),1),k(pe)])):m("",!0)}}),Oo=g(Do,[["__scopeId","data-v-a5de2fe4"]]),Go=["innerHTML"],Uo=p({__name:"VPNavScreenMenuLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,Go)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),jo=g(Uo,[["__scopeId","data-v-f6216396"]]),zo=["innerHTML"],Wo=p({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuGroupLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,zo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Ae=g(Wo,[["__scopeId","data-v-989ed20f"]]),Ko={class:"VPNavScreenMenuGroupSection"},qo={key:0,class:"title"},Ro=p({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",Ko,[e.text?(s(),u("p",qo,M(e.text),1)):m("",!0),(s(!0),u(x,null,A(e.items,a=>(s(),_(Ae,{key:a.text,item:a},null,8,["item"]))),128))]))}}),Jo=g(Ro,[["__scopeId","data-v-652dbd88"]]),Xo=["aria-controls","aria-expanded"],Yo=["innerHTML"],Qo=["id"],Zo={key:0,class:"item"},es={key:1,class:"item"},ts={key:2,class:"group"},ns=p({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(e){const t=e,n=S(!1),a=y(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function o(){n.value=!n.value}return(r,l)=>(s(),u("div",{class:N(["VPNavScreenMenuGroup",{open:n.value}])},[d("button",{class:"button","aria-controls":a.value,"aria-expanded":n.value,onClick:o},[d("span",{class:"button-text",innerHTML:e.text},null,8,Yo),l[0]||(l[0]=d("span",{class:"vpi-plus button-icon"},null,-1))],8,Xo),d("div",{id:a.value,class:"items"},[(s(!0),u(x,null,A(e.items,v=>(s(),u(x,{key:JSON.stringify(v)},["link"in v?(s(),u("div",Zo,[k(Ae,{item:v},null,8,["item"])])):"component"in v?(s(),u("div",es,[(s(),_(B(v.component),G({ref_for:!0},v.props,{"screen-menu":""}),null,16))])):(s(),u("div",ts,[k(Jo,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,Qo)],2))}}),as=g(ns,[["__scopeId","data-v-a6f357af"]]),os={key:0,class:"VPNavScreenMenu"},ss=p({__name:"VPNavScreenMenu",setup(e){const{theme:t}=L();return(n,a)=>i(t).nav?(s(),u("nav",os,[(s(!0),u(x,null,A(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(jo,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(B(o.component),G({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(s(),_(as,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):m("",!0)}}),is=p({__name:"VPNavScreenSocialLinks",setup(e){const{theme:t}=L();return(n,a)=>i(t).socialLinks?(s(),_(be,{key:0,class:"VPNavScreenSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),rs={class:"list"},ls=p({__name:"VPNavScreenTranslations",setup(e){const{localeLinks:t,currentLang:n}=q({correspondingLink:!0}),a=S(!1);function o(){a.value=!a.value}return(r,l)=>i(t).length&&i(n).label?(s(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:a.value}])},[d("button",{class:"title",onClick:o},[l[0]||(l[0]=d("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+M(i(n).label)+" ",1),l[1]||(l[1]=d("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),d("ul",rs,[(s(!0),u(x,null,A(i(t),v=>(s(),u("li",{key:v.link,class:"item"},[k(E,{class:"link",href:v.link},{default:h(()=>[j(M(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):m("",!0)}}),cs=g(ls,[["__scopeId","data-v-16655210"]]),us={class:"container"},ds=p({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e){const t=S(null),n=Se(ee?document.body:null);return(a,o)=>(s(),_(ue,{name:"fade",onEnter:o[0]||(o[0]=r=>n.value=!0),onAfterLeave:o[1]||(o[1]=r=>n.value=!1)},{default:h(()=>[e.open?(s(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[d("div",us,[c(a.$slots,"nav-screen-content-before",{},void 0,!0),k(ss,{class:"menu"}),k(cs,{class:"translations"}),k(Oo,{class:"appearance"}),k(is,{class:"social-links"}),c(a.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):m("",!0)]),_:3}))}}),vs=g(ds,[["__scopeId","data-v-c2555c5e"]]),fs={key:0,class:"VPNav"},hs=p({__name:"VPNav",setup(e){const{isScreenOpen:t,closeScreen:n,toggleScreen:a}=la(),{frontmatter:o}=L(),r=y(()=>o.value.navbar!==!1);return Te("close-screen",n),X(()=>{ee&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,v)=>r.value?(s(),u("header",fs,[k(Bo,{"is-screen-open":i(t),onToggleScreen:i(a)},{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(vs,{open:i(t)},{"nav-screen-content-before":h(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):m("",!0)}}),ms=g(hs,[["__scopeId","data-v-908bdb68"]]),ps=["role","tabindex"],ks={key:1,class:"items"},_s=p({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(e){const t=e,{collapsed:n,collapsible:a,isLink:o,isActiveLink:r,hasActiveLink:l,hasChildren:v,toggle:f}=dt(y(()=>t.item)),$=y(()=>v.value?"section":"div"),V=y(()=>o.value?"a":"div"),b=y(()=>v.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),P=y(()=>o.value?void 0:"button"),T=y(()=>[[`level-${t.depth}`],{collapsible:a.value},{collapsed:n.value},{"is-link":o.value},{"is-active":r.value},{"has-active":l.value}]);function I(C){"key"in C&&C.key!=="Enter"||!t.item.link&&f()}function w(){t.item.link&&f()}return(C,H)=>{const O=W("VPSidebarItem",!0);return s(),_(B($.value),{class:N(["VPSidebarItem",T.value])},{default:h(()=>[e.item.text?(s(),u("div",G({key:0,class:"item",role:P.value},je(e.item.items?{click:I,keydown:I}:{},!0),{tabindex:e.item.items&&0}),[H[1]||(H[1]=d("div",{class:"indicator"},null,-1)),e.item.link?(s(),_(E,{key:0,tag:V.value,class:"link",href:e.item.link,rel:e.item.rel,target:e.item.target},{default:h(()=>[(s(),_(B(b.value),{class:"text",innerHTML:e.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),_(B(b.value),{key:1,class:"text",innerHTML:e.item.text},null,8,["innerHTML"])),e.item.collapsed!=null&&e.item.items&&e.item.items.length?(s(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:w,onKeydown:ze(w,["enter"]),tabindex:"0"},[...H[0]||(H[0]=[d("span",{class:"vpi-chevron-right caret-icon"},null,-1)])],32)):m("",!0)],16,ps)):m("",!0),e.item.items&&e.item.items.length?(s(),u("div",ks,[e.depth<5?(s(!0),u(x,{key:0},A(e.item.items,K=>(s(),_(O,{key:K.text,item:K,depth:e.depth+1},null,8,["item","depth"]))),128)):m("",!0)])):m("",!0)]),_:1},8,["class"])}}}),bs=g(_s,[["__scopeId","data-v-31549b30"]]),gs=p({__name:"VPSidebarGroup",props:{items:{}},setup(e){const t=S(!0);let n=null;return U(()=>{n=setTimeout(()=>{n=null,t.value=!1},300)}),We(()=>{n!=null&&(clearTimeout(n),n=null)}),(a,o)=>(s(!0),u(x,null,A(e.items,r=>(s(),u("div",{key:r.text,class:N(["group",{"no-transition":t.value}])},[k(bs,{item:r,depth:0},null,8,["item"])],2))),128))}}),$s=g(gs,[["__scopeId","data-v-5df780f0"]]),ys={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ps=p({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e){const{sidebarGroups:t,hasSidebar:n}=D(),a=e,o=S(null),r=Se(ee?document.body:null);F([a,o],()=>{var v;a.open?(r.value=!0,(v=o.value)==null||v.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=S(0);return F(t,()=>{l.value+=1},{deep:!0}),(v,f)=>i(n)?(s(),u("aside",{key:0,class:N(["VPSidebar",{open:e.open}]),ref_key:"navEl",ref:o,onClick:f[0]||(f[0]=Ke(()=>{},["stop"]))},[f[2]||(f[2]=d("div",{class:"curtain"},null,-1)),d("nav",ys,[f[1]||(f[1]=d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(v.$slots,"sidebar-nav-before",{},void 0,!0),(s(),_($s,{items:i(t),key:l.value},null,8,["items"])),c(v.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):m("",!0)}}),Ls=g(Ps,[["__scopeId","data-v-59945d5d"]]),Vs=p({__name:"VPSkipLink",setup(e){const{theme:t}=L(),n=Q(),a=S();F(()=>n.path,()=>a.value.focus());function o({target:r}){const l=document.getElementById(decodeURIComponent(r.hash).slice(1));if(l){const v=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",v)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",v),l.focus(),window.scrollTo(0,0)}}return(r,l)=>(s(),u(x,null,[d("span",{ref_key:"backToTop",ref:a,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o},M(i(t).skipToContentLabel||"Skip to content"),1)],64))}}),Ss=g(Vs,[["__scopeId","data-v-d63408fd"]]),Ts=p({__name:"Layout",setup(e){const{isOpen:t,open:n,close:a}=D(),o=Q();F(()=>o.path,a),ut(t,a);const{frontmatter:r}=L(),l=qe(),v=y(()=>!!l["home-hero-image"]);return Te("hero-image-slot-exists",v),(f,$)=>{const V=W("Content");return i(r).layout!==!1?(s(),u("div",{key:0,class:N(["Layout",i(r).pageClass])},[c(f.$slots,"layout-top",{},void 0,!0),k(Ss),k(Ye,{class:"backdrop",show:i(t),onClick:i(a)},null,8,["show","onClick"]),k(ms,null,{"nav-bar-title-before":h(()=>[c(f.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(f.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(f.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(f.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[c(f.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(f.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(ra,{open:i(t),onOpenMenu:i(n)},null,8,["open","onOpenMenu"]),k(Ls,{open:i(t)},{"sidebar-nav-before":h(()=>[c(f.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[c(f.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(Wn,null,{"page-top":h(()=>[c(f.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(f.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[c(f.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[c(f.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(f.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(f.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(f.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(f.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(f.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(f.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(f.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(f.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[c(f.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(f.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(f.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[c(f.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(f.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[c(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(Xn),c(f.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),_(V,{key:1}))}}}),Ns=g(Ts,[["__scopeId","data-v-ba7c87da"]]),xs={Layout:Ns,enhanceApp:({app:e})=>{e.component("Badge",Re)}};export{uo as c,xs as t,L as u}; diff --git a/assets/getting-started_channels.md.CIKhbgq7.js b/assets/getting-started_channels.md.CIKhbgq7.js new file mode 100644 index 00000000..00699a0b --- /dev/null +++ b/assets/getting-started_channels.md.CIKhbgq7.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as n,ag as o}from"./chunks/framework.DXGyWiRo.js";const u=JSON.parse('{"title":"Bot Channels","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/channels.md","filePath":"getting-started/channels.md","lastUpdated":1776579425000}'),i={name:"getting-started/channels.md"};function r(l,t,s,d,h,c){return a(),n("div",null,[...t[0]||(t[0]=[o('

Bot Channels

Channels connect your Bot to various messaging platforms, allowing you to interact with it using your favorite chat applications.

Concept: Unified Communication

Memoh acts as a hub that bridges different messaging services. You can configure multiple channels for a single bot, enabling it to chat on Telegram, Discord, Matrix, and more simultaneously.


Supported Channels

Configure your bot's connections from the Platforms tab in the Bot Detail page.

Platform Guides

PlatformGuideNotes
TelegramTelegram ConfigurationStrong attachment and streaming support
Feishu (Lark)Feishu ConfigurationSupports webhook-style inbound mode
DiscordDiscord ConfigurationGood fit for communities and servers
QQQQ ConfigurationPersonal DM oriented
MatrixMatrix ConfigurationDecentralized homeserver support
MisskeyMisskey ConfigurationReplies and reactions, no streaming
DingTalkDingTalk ConfigurationEnterprise private/group chat
WeCom (WeWork)WeCom ConfigurationEnterprise workspace integration
WeChatWeChat ConfigurationPersonal QR login flow
WeChat Official AccountWeChat Official Account ConfigurationOfficial account webhook flow
SlackSlack ConfigurationReplies, no streaming

Two WeChat adapters exist on purpose:

  • WeChat is the QR-login personal messaging integration.
  • WeChat Official Account is the official account / webhook integration for private-message scenarios.

Configuration Flow

1. Adding a Channel

  1. Click Add Channel.
  2. Select the platform from the list.
  3. Fill in the required credentials and configuration. The fields are dynamic and change based on the selected channel.

2. Common Fields

FieldDescription
CredentialsAPI tokens, secrets, or bot keys provided by the platform.
DisabledQuickly enable or disable a channel without removing its configuration.
RoutingConfigure how messages are mapped between the platform and Memoh.

3. Special Case: Feishu Webhook

If using Feishu in webhook inbound mode:

  1. Memoh will generate a Webhook Callback URL.
  2. Copy this URL and paste it into your Feishu App's event configuration.
  3. This allows Feishu to send messages directly to Memoh.

4. Special Case: WeChat QR Login

If using WeChat:

  1. After enabling the channel, a QR code flow is provided for connecting.
  2. Scan the QR code with WeChat to link the bot.

5. Special Case: WeChat Official Account Webhook

If using WeChat Official Account:

  1. Create and save the channel first.
  2. Memoh generates a Webhook Callback URL for that channel.
  3. Copy the callback URL into the WeChat Official Account platform configuration.
  4. Keep the configured Token, Encryption Mode, and optional AES settings aligned between Memoh and WeChat.

6. Special Case: DingTalk Stream Connection

If using DingTalk:

  1. Configure App Key and App Secret.
  2. Save and enable the channel.
  3. Memoh maintains the stream connection for inbound events; you do not need to manage a separate webhook callback URL for the standard setup.

Operations

  • Save: Update the configuration.
  • Save and Enable: Update and immediately activate the channel.
  • Enable/Disable Toggle: Switch the channel's active status.
  • Delete: Permanently remove a channel's configuration.
',32)])])}const f=e(i,[["render",r]]);export{u as __pageData,f as default}; diff --git a/assets/getting-started_channels.md.DtCQrK76.lean.js b/assets/getting-started_channels.md.CIKhbgq7.lean.js similarity index 86% rename from assets/getting-started_channels.md.DtCQrK76.lean.js rename to assets/getting-started_channels.md.CIKhbgq7.lean.js index d67b6b88..bc37860b 100644 --- a/assets/getting-started_channels.md.DtCQrK76.lean.js +++ b/assets/getting-started_channels.md.CIKhbgq7.lean.js @@ -1 +1 @@ -import{_ as e,o as a,c as n,ag as o}from"./chunks/framework.DXGyWiRo.js";const u=JSON.parse('{"title":"Bot Channels","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/channels.md","filePath":"getting-started/channels.md","lastUpdated":1776332711000}'),i={name:"getting-started/channels.md"};function r(l,t,s,d,h,c){return a(),n("div",null,[...t[0]||(t[0]=[o("",32)])])}const f=e(i,[["render",r]]);export{u as __pageData,f as default}; +import{_ as e,o as a,c as n,ag as o}from"./chunks/framework.DXGyWiRo.js";const u=JSON.parse('{"title":"Bot Channels","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/channels.md","filePath":"getting-started/channels.md","lastUpdated":1776579425000}'),i={name:"getting-started/channels.md"};function r(l,t,s,d,h,c){return a(),n("div",null,[...t[0]||(t[0]=[o("",32)])])}const f=e(i,[["render",r]]);export{u as __pageData,f as default}; diff --git a/assets/getting-started_channels.md.DtCQrK76.js b/assets/getting-started_channels.md.DtCQrK76.js deleted file mode 100644 index 7f074b9a..00000000 --- a/assets/getting-started_channels.md.DtCQrK76.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,o as a,c as n,ag as o}from"./chunks/framework.DXGyWiRo.js";const u=JSON.parse('{"title":"Bot Channels","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/channels.md","filePath":"getting-started/channels.md","lastUpdated":1776332711000}'),i={name:"getting-started/channels.md"};function r(l,t,s,d,h,c){return a(),n("div",null,[...t[0]||(t[0]=[o('

Bot Channels

Channels connect your Bot to various messaging platforms, allowing you to interact with it using your favorite chat applications.

Concept: Unified Communication

Memoh acts as a hub that bridges different messaging services. You can configure multiple channels for a single bot, enabling it to chat on Telegram, Discord, Matrix, and more simultaneously.


Supported Channels

Configure your bot's connections from the Platforms tab in the Bot Detail page.

Platform Guides

PlatformGuideNotes
TelegramTelegram ConfigurationStrong attachment and streaming support
Feishu (Lark)Feishu ConfigurationSupports webhook-style inbound mode
DiscordDiscord ConfigurationGood fit for communities and servers
QQQQ ConfigurationPersonal DM oriented
MatrixMatrix ConfigurationDecentralized homeserver support
MisskeyMisskey ConfigurationReplies and reactions, no streaming
DingTalkDingTalk ConfigurationEnterprise private/group chat
WeCom (WeWork)WeCom ConfigurationEnterprise workspace integration
WeChatWeChat ConfigurationPersonal QR login flow
WeChat Official AccountWeChat Official Account ConfigurationOfficial account webhook flow

Two WeChat adapters exist on purpose:

  • WeChat is the QR-login personal messaging integration.
  • WeChat Official Account is the official account / webhook integration for private-message scenarios.

Configuration Flow

1. Adding a Channel

  1. Click Add Channel.
  2. Select the platform from the list.
  3. Fill in the required credentials and configuration. The fields are dynamic and change based on the selected channel.

2. Common Fields

FieldDescription
CredentialsAPI tokens, secrets, or bot keys provided by the platform.
DisabledQuickly enable or disable a channel without removing its configuration.
RoutingConfigure how messages are mapped between the platform and Memoh.

3. Special Case: Feishu Webhook

If using Feishu in webhook inbound mode:

  1. Memoh will generate a Webhook Callback URL.
  2. Copy this URL and paste it into your Feishu App's event configuration.
  3. This allows Feishu to send messages directly to Memoh.

4. Special Case: WeChat QR Login

If using WeChat:

  1. After enabling the channel, a QR code flow is provided for connecting.
  2. Scan the QR code with WeChat to link the bot.

5. Special Case: WeChat Official Account Webhook

If using WeChat Official Account:

  1. Create and save the channel first.
  2. Memoh generates a Webhook Callback URL for that channel.
  3. Copy the callback URL into the WeChat Official Account platform configuration.
  4. Keep the configured Token, Encryption Mode, and optional AES settings aligned between Memoh and WeChat.

6. Special Case: DingTalk Stream Connection

If using DingTalk:

  1. Configure App Key and App Secret.
  2. Save and enable the channel.
  3. Memoh maintains the stream connection for inbound events; you do not need to manage a separate webhook callback URL for the standard setup.

Operations

  • Save: Update the configuration.
  • Save and Enable: Update and immediately activate the channel.
  • Enable/Disable Toggle: Switch the channel's active status.
  • Delete: Permanently remove a channel's configuration.
',32)])])}const f=e(i,[["render",r]]);export{u as __pageData,f as default}; diff --git a/blogs/2026-02-16.html b/blogs/2026-02-16.html index d949994c..c188ce80 100644 --- a/blogs/2026-02-16.html +++ b/blogs/2026-02-16.html @@ -9,9 +9,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

Introduction to Memoh - The Case for an Always-On, Containerized Home Agent

Overview

We enter 2026 with a familiar tension: models get smarter every quarter, but the “agent experience” still breaks on context, latency, privacy, and real-world workflows. Over the past year, we kept circling three questions:

  • Where does the capability boundary of agents actually sit?
  • What’s the real value of long context?
  • What hardware form factor makes “always-on, personal AI” feel natural?

Memoh is our attempt to turn those questions into something buildable—not a manifesto, but a system that can survive contact with reality.

Story Time

Time travels fast. Somewhere between “I’ll remember this” and “wait, why did we decide that?”, a year disappears.

That’s the annoying part of building: most progress doesn’t feel like progress while it’s happening. It’s just a stream of small choices, half-finished threads, late-night fixes, and the occasional moment that actually clicks. The kind of moment where you sit back and think: okay—this is real.

Around the same time, I noticed something else: the internet started to feel smoother—and worse.

Text got cleaner, longer, more polite, more… empty. You could smell when something was generated: low information density, too many metaphors, too much agreement, not enough stakes.

I caught myself doing it too.

So I started forcing a constraint: say it plainly. Keep the density. Don’t inflate. Don’t hide behind style. If something mattered, anchor it to a real moment, a real trade-off, a real cost paid.

Because the thing LLMs can’t give you is not “intelligence.” It’s weight. The feeling that a human actually stood somewhere in time and wrote from that position.

That’s when I realized what I wanted wasn’t “an AI that can talk.” I wanted an AI that can live with you—quietly, continuously, accumulating context without turning your life into content sludge.

Phones were our first instinct—it's personal, powerful, always there. But mobile OS is closed: without OEM privileges you can build an app, not ambient infrastructure.

So we looked for the always-on node every home already has: the router (conceptually). Then the economics clash—router-class hardware can’t carry memory, RAG, tools, and multi-user agents. The device evolves: more RAM/storage, a screen, mic/speaker, tiny battery for take out, portable form.

Eventually it stops being a router. It becomes a new category: a home agent base layer.

What

Memoh is a containerized home/studio AI base layer: cloud-grade model capability paired with local-first memory (knowledge base, RAG/search, conversation history) that stays under your control.

Why

Long-context models raise the ceiling for agents—but they also make “fully local” expensive and “fully cloud” uncomfortable. People don’t want to re-brief AI every day, and they don’t want their durable context trapped in someone else’s feed. Containerization makes Memoh portable, reproducible, and safe to run as always-on infrastructure—so continuity becomes cheap, private, and dependable.

How

We run Memoh as a containerized stack: isolated services for storage (files/DB/vector index), retrieval, tool/runtime execution, and the control plane. Inference calls cloud APIs when you need frontier capability; durable memory and indexing stay local. The device acts as an always-on node (router-like, not a router) serving multiple users with strict boundaries: sharing is explicit, private context remains private, and everything is deployable/upgradable as versioned containers.

Features

  • Multi-bot Management: Create multiple bots; humans and bots, or bots with each other, can chat privately, in groups, or collaborate.

    Multi-bot Management

  • Containerized: Each bot runs in its own isolated container. Bots can freely execute commands, edit files, and access the network within their containers—like having their own computer.

    Containerized

  • Memory Engineering: Every chat is stored in the database, with the last 24 hours of context loaded by default. Each conversation turn is stored as memory and can be retrieved by bots through semantic search.

    Memory Engineering

  • Various Platforms: Supports Telegram, Lark (Feishu), and more.

  • Simple and Easy to Use: Configure bots and settings for Provider, Model, Memory, Channel, MCP, and Skills through a graphical interface—no coding required to set up your own AI bot.

  • Scheduled Tasks: Schedule tasks with cron expressions to run commands at specified times.

  • More...

Compare to OpenClaw

We share a core belief: both Memoh and OpenClaw treat the agent as more than a chatbox—we give the LLM a playground: a real environment where it can remember, use tools, and iterate.

Where Memoh differs:

  • Lighter and Faster: built as home/studio infrastructure, can be held in the edge device
  • Containerized by default: each bot gets an isolated container (files/commands/network/jobs)
  • Hybrid split: cloud inference, local-first memory + indexing
  • Multi-user first: explicit sharing and privacy boundaries, support a2a (Agent2Agent)
  • Sustainable: have an experienced team and confidence to push forward and build it

Conclusion

Memoh is built for one thing: always-on continuity—an AI that stays online, and a memory that stays yours.

We keep frontier inference in the cloud, keep durable context local, and run everything as a containerized, always-on stack. If you want an agent that feels less like an app and more like home infrastructure, that’s the bet Memoh is making.

Furthermore, we will continue to operate and permanently open-source Memoh, making it a product with long impact.

Published under AGPLv3

- + \ No newline at end of file diff --git a/blogs/index.html b/blogs/index.html index 202fe488..07a2b012 100644 --- a/blogs/index.html +++ b/blogs/index.html @@ -9,9 +9,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

Blogs

This section contains the latest blogs about Memoh.

Published under AGPLv3

- + \ No newline at end of file diff --git a/channels/dingtalk.html b/channels/dingtalk.html index cd735972..8022e0fc 100644 --- a/channels/dingtalk.html +++ b/channels/dingtalk.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

DingTalk Channel Configuration

Memoh supports DingTalk bots for private chats and group chats. The adapter uses DingTalk's stream connection for inbound events and the official APIs for outbound replies and media.

Step 1: Create A DingTalk App

  1. Open the DingTalk developer platform for your organization.
  2. Create or choose the app that will act as your bot.
  3. Enable the bot / messaging capability for that app.
  4. Copy the app credentials:
    • App Key
    • App Secret

Depending on your DingTalk environment, you may also need to grant message permissions and publish the app before it is available to end users.

Step 2: Configure Memoh

  1. Open your bot in the Memoh Web UI.
  2. Go to Platforms.
  3. Click Add Channel and choose DingTalk.
  4. Fill in App Key and App Secret.
  5. Click Save and Enable.

Memoh maintains the DingTalk stream connection automatically. For the normal setup, you do not need to manually paste a webhook callback URL.

Step 3: Verify Messaging

After the channel is enabled:

  1. Send a private message to the DingTalk bot, or mention it in a supported group chat.
  2. Confirm the bot receives the message and can reply.

Features Supported

  • Private chats
  • Group chats
  • Text and Markdown-style output
  • Replies
  • Attachments and media

Current behavior note:

  • Outbound responses are non-streaming on DingTalk in Memoh.

Published under AGPLv3

- +
Skip to content

DingTalk Channel Configuration

Memoh supports DingTalk bots for private chats and group chats. The adapter uses DingTalk's stream connection for inbound events and the official APIs for outbound replies and media.

Step 1: Create A DingTalk App

  1. Open the DingTalk developer platform for your organization.
  2. Create or choose the app that will act as your bot.
  3. Enable the bot / messaging capability for that app.
  4. Copy the app credentials:
    • App Key
    • App Secret

Depending on your DingTalk environment, you may also need to grant message permissions and publish the app before it is available to end users.

Step 2: Configure Memoh

  1. Open your bot in the Memoh Web UI.
  2. Go to Platforms.
  3. Click Add Channel and choose DingTalk.
  4. Fill in App Key and App Secret.
  5. Click Save and Enable.

Memoh maintains the DingTalk stream connection automatically. For the normal setup, you do not need to manually paste a webhook callback URL.

Step 3: Verify Messaging

After the channel is enabled:

  1. Send a private message to the DingTalk bot, or mention it in a supported group chat.
  2. Confirm the bot receives the message and can reply.

Features Supported

  • Private chats
  • Group chats
  • Text and Markdown-style output
  • Replies
  • Attachments and media

Current behavior note:

  • Outbound responses are non-streaming on DingTalk in Memoh.

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/discord.html b/channels/discord.html index 2cc4751a..836cc9ca 100644 --- a/channels/discord.html +++ b/channels/discord.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Discord Channel Configuration

Connecting your Memoh Bot to Discord allows it to join servers and interact with community members.

Step 1: Create a Discord Application

  1. Go to the Discord Developer Portal.
  2. Click New Application and give it a name.
  3. In the left sidebar, go to Bot.
  4. Click Reset Token to generate a Bot Token. Copy this token and store it securely.

Step 2: Configure Bot Settings

  1. Scroll down to the Privileged Gateway Intents section.
  2. Enable Message Content Intent, Server Members Intent and Presence Intent.
  3. Save changes.

Step 3: Invite the Bot to Your Server

  1. Go to OAuth2 > URL Generator.
  2. Select scopes: bot, applications.commands.
  3. Select permissions: Send Messages, Read Message History, Embed Links, Attach Files.
  4. Copy the generated URL and open it in your browser.
  5. Select the server you want to add the bot to and authorize it.

Official Guide: Discord Developer Portal - Bots

Step 4: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select Discord.
  3. Paste your Bot Token.
  4. Click Save and Enable.

Features Supported

  • Message Content: Full access to chat text.
  • Attachments: Support for images and files.
  • Commands: Integration with Discord's slash commands (if configured via MCP).

Published under AGPLv3

- +
Skip to content

Discord Channel Configuration

Connecting your Memoh Bot to Discord allows it to join servers and interact with community members.

Step 1: Create a Discord Application

  1. Go to the Discord Developer Portal.
  2. Click New Application and give it a name.
  3. In the left sidebar, go to Bot.
  4. Click Reset Token to generate a Bot Token. Copy this token and store it securely.

Step 2: Configure Bot Settings

  1. Scroll down to the Privileged Gateway Intents section.
  2. Enable Message Content Intent, Server Members Intent and Presence Intent.
  3. Save changes.

Step 3: Invite the Bot to Your Server

  1. Go to OAuth2 > URL Generator.
  2. Select scopes: bot, applications.commands.
  3. Select permissions: Send Messages, Read Message History, Embed Links, Attach Files.
  4. Copy the generated URL and open it in your browser.
  5. Select the server you want to add the bot to and authorize it.

Official Guide: Discord Developer Portal - Bots

Step 4: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select Discord.
  3. Paste your Bot Token.
  4. Click Save and Enable.

Features Supported

  • Message Content: Full access to chat text.
  • Attachments: Support for images and files.
  • Commands: Integration with Discord's slash commands (if configured via MCP).

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/feishu.html b/channels/feishu.html index 46992115..15634470 100644 --- a/channels/feishu.html +++ b/channels/feishu.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Feishu (Lark) Channel Configuration

Memoh supports integrating with Feishu (Lark) via the Open Platform. This allows your enterprise bots to interact with users in groups or private chats.

Step 1: Create a Feishu App

  1. Go to the Feishu Open Platform and log in.
  2. Click Create Custom App.
  3. Enter a name and description, then click Create.
  4. In the left sidebar, go to App Settings > Credentials & Basic Info.
  5. Copy your App ID and App Secret.

Step 2: Enable Bot Capability

  1. In the Feishu Developer Console, go to Capabilities > Bot.
  2. Click Enable Bot.

Step 3: Configure Permissions

  1. Go to Capabilities > Permissions.
  2. Search for and enable the following permissions (at minimum):
    • im:message (Receive and send messages)
    • im:chat (Access group chat information)
  3. Click Apply for Permissions if required by your organization.

Step 4: Configure Events (Webhook Mode)

  1. In Memoh, go to your Bot's Platforms tab and add a Feishu channel.
  2. Choose Inbound Mode: webhook.
  3. Fill in your App ID and App Secret.
  4. Click Save. Memoh will generate a Webhook Callback URL.
  5. Copy this URL.
  6. In the Feishu Console, go to App Settings > Event Subscriptions.
  7. Paste the URL into the Verification URL field and save.
  8. Add events like Receive Message (im.message.receive_v1).

Official Guide: Feishu Custom Bot Guide

Step 5: Publish Your App

  1. In the Feishu Console, go to App Release > Version Management & Release.
  2. Click Create a Version, fill in the details, and submit for approval.
  3. Once approved and published, the bot is ready to use.

Published under AGPLv3

- +
Skip to content

Feishu (Lark) Channel Configuration

Memoh supports integrating with Feishu (Lark) via the Open Platform. This allows your enterprise bots to interact with users in groups or private chats.

Step 1: Create a Feishu App

  1. Go to the Feishu Open Platform and log in.
  2. Click Create Custom App.
  3. Enter a name and description, then click Create.
  4. In the left sidebar, go to App Settings > Credentials & Basic Info.
  5. Copy your App ID and App Secret.

Step 2: Enable Bot Capability

  1. In the Feishu Developer Console, go to Capabilities > Bot.
  2. Click Enable Bot.

Step 3: Configure Permissions

  1. Go to Capabilities > Permissions.
  2. Search for and enable the following permissions (at minimum):
    • im:message (Receive and send messages)
    • im:chat (Access group chat information)
  3. Click Apply for Permissions if required by your organization.

Step 4: Configure Events (Webhook Mode)

  1. In Memoh, go to your Bot's Platforms tab and add a Feishu channel.
  2. Choose Inbound Mode: webhook.
  3. Fill in your App ID and App Secret.
  4. Click Save. Memoh will generate a Webhook Callback URL.
  5. Copy this URL.
  6. In the Feishu Console, go to App Settings > Event Subscriptions.
  7. Paste the URL into the Verification URL field and save.
  8. Add events like Receive Message (im.message.receive_v1).

Official Guide: Feishu Custom Bot Guide

Step 5: Publish Your App

  1. In the Feishu Console, go to App Release > Version Management & Release.
  2. Click Create a Version, fill in the details, and submit for approval.
  3. Once approved and published, the bot is ready to use.

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/index.html b/channels/index.html index a43d8dbe..9b07930b 100644 --- a/channels/index.html +++ b/channels/index.html @@ -9,18 +9,18 @@ - + - + - + -
Skip to content

Channels Overview

Channels are the gateways that connect your Memoh Bots to the outside world. By configuring channels, you can interact with your bots via your favorite messaging platforms.

Memoh currently supports the following channels:

  • Telegram: Feature-rich integration with streaming and attachment support.
  • Feishu (Lark): Enterprise-ready integration for business workflows.
  • Discord: Community-focused integration for servers and direct messages.
  • QQ: Quick setup for personal DM bots via the dedicated AI bot registration portal.
  • Matrix: Decentralized messaging protocol support for any Matrix homeserver.
  • Misskey: Federated social/chat style integration with replies and reactions.
  • DingTalk: Enterprise chat integration for private and group conversations.
  • WeCom (WeWork): Enterprise messaging integration for WeCom workspaces.
  • WeChat: Personal messaging via QR login.
  • WeChat Official Account: Official account webhook integration for private message scenarios.
  • Email: Connect via SMTP providers, Mailgun, or Gmail OAuth (configured through Email Providers).
  • Web: Built-in chat interface for immediate access.

WeChat vs WeChat Official Account

Memoh supports two different WeChat-related adapters:

  • WeChat (weixin) is the personal-account style integration that relies on QR login.
  • WeChat Official Account (wechatoa) is the official-account / webhook style integration that uses App ID, App Secret, Token, and optional AES settings.

Choose the one that matches your actual WeChat deployment model.

General Setup Flow

  1. Create an external app/bot: Register your bot on the target platform.
  2. Obtain credentials: Fetch API tokens, App IDs, app secrets, or access tokens.
  3. Configure in Memoh: Add the channel from your bot's Platforms tab.
  4. Save and enable: Activate the channel to start receiving and sending messages.

Depending on the platform, the final step may involve:

  • copying a webhook callback URL into the platform console
  • approving a QR login on mobile
  • leaving a long-lived stream/WebSocket connection running through Memoh

Choose a channel from the sidebar to see detailed configuration guides for each platform.

Published under AGPLv3

- +
Skip to content

Channels Overview

Channels are the gateways that connect your Memoh Bots to the outside world. By configuring channels, you can interact with your bots via your favorite messaging platforms.

Memoh currently supports the following channels:

  • Slack: Workspace messaging with Socket Mode, threads, files, and reactions.
  • Telegram: Feature-rich integration with streaming and attachment support.
  • Feishu (Lark): Enterprise-ready integration for business workflows.
  • Discord: Community-focused integration for servers and direct messages.
  • QQ: Quick setup for personal DM bots via the dedicated AI bot registration portal.
  • Matrix: Decentralized messaging protocol support for any Matrix homeserver.
  • Misskey: Federated social/chat style integration with replies and reactions.
  • DingTalk: Enterprise chat integration for private and group conversations.
  • WeCom (WeWork): Enterprise messaging integration for WeCom workspaces.
  • WeChat: Personal messaging via QR login.
  • WeChat Official Account: Official account webhook integration for private message scenarios.
  • Email: Connect via SMTP providers, Mailgun, or Gmail OAuth (configured through Email Providers).
  • Web: Built-in chat interface for immediate access.

WeChat vs WeChat Official Account

Memoh supports two different WeChat-related adapters:

  • WeChat (weixin) is the personal-account style integration that relies on QR login.
  • WeChat Official Account (wechatoa) is the official-account / webhook style integration that uses App ID, App Secret, Token, and optional AES settings.

Choose the one that matches your actual WeChat deployment model.

General Setup Flow

  1. Create an external app/bot: Register your bot on the target platform.
  2. Obtain credentials: Fetch API tokens, App IDs, app secrets, or access tokens.
  3. Configure in Memoh: Add the channel from your bot's Platforms tab.
  4. Save and enable: Activate the channel to start receiving and sending messages.

Depending on the platform, the final step may involve:

  • copying a webhook callback URL into the platform console
  • approving a QR login on mobile
  • leaving a long-lived stream/WebSocket connection running through Memoh

Choose a channel from the sidebar to see detailed configuration guides for each platform.

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/matrix.html b/channels/matrix.html index d35d68c2..d5689938 100644 --- a/channels/matrix.html +++ b/channels/matrix.html @@ -9,9 +9,9 @@ - + - + @@ -19,7 +19,7 @@ -
Skip to content

Matrix Channel Configuration

Connecting your Memoh Bot to Matrix allows it to communicate via the decentralized Matrix messaging protocol. Your bot can join rooms, respond to direct messages, and participate in group conversations on any Matrix homeserver.

Step 1: Create a Matrix Bot Account

  1. Register a new account on your Matrix homeserver (e.g., via Element or any Matrix client).
  2. Note the User ID (e.g., @mybot:matrix.org).
  3. Obtain an Access Token for the account. You can do this by:
  • Option A: Using the Matrix Client Login API
bash
curl -X POST "https://<homeserver>/_matrix/client/v3/login" \
+    
Skip to content

Matrix Channel Configuration

Connecting your Memoh Bot to Matrix allows it to communicate via the decentralized Matrix messaging protocol. Your bot can join rooms, respond to direct messages, and participate in group conversations on any Matrix homeserver.

Step 1: Create a Matrix Bot Account

  1. Register a new account on your Matrix homeserver (e.g., via Element or any Matrix client).
  2. Note the User ID (e.g., @mybot:matrix.org).
  3. Obtain an Access Token for the account. You can do this by:
  • Option A: Using the Matrix Client Login API
bash
curl -X POST "https://<homeserver>/_matrix/client/v3/login" \
   -H "Content-Type: application/json" \
   -d '{
     "type": "m.login.password",
@@ -29,7 +29,7 @@
     },
     "password": "<password>"
   }'
  • Option B: Extract from a client

Important: Keep the access token secret. Anyone with this token can act as your bot account.

Step 2: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select Matrix.
  3. Fill in the required fields:
FieldRequiredDescription
Homeserver URLYesThe base URL of your Matrix homeserver (e.g., https://matrix.org).
Access TokenYesThe bot account's access token.
User IDYesThe bot's Matrix user ID (e.g., @mybot:matrix.org).
Sync TimeoutNoLong-polling timeout in seconds (default: 30).
Auto Join InvitesNoAutomatically join rooms when invited (default: enabled).
  1. Click Save and Enable.

Step 3: Invite the Bot

  1. Open your Matrix client (Element, etc.).
  2. Invite the bot's user ID to a room, or start a direct message.
  3. If Auto Join Invites is enabled, the bot will automatically accept and join.

Features Supported

  • Message Content: Full access to text messages.
  • Rooms: Join and participate in group rooms.
  • Direct Messages: Private conversations with individual users.
  • Streaming: Responses are streamed as they are generated.
  • Markdown: Support for formatted text.
  • Media/Attachment: Bots can receive and send files or photo.
  • Check the roadmap for more features of Matrix.

Official Resources

Published under AGPLv3

- + \ No newline at end of file diff --git a/channels/misskey.html b/channels/misskey.html index 2555c70e..3cf22eed 100644 --- a/channels/misskey.html +++ b/channels/misskey.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Misskey Channel Configuration

Memoh can connect a bot to a Misskey server so it can read inbound mentions and reply as a Misskey account. This adapter is best for text-first social interactions on self-hosted or public Misskey instances.

Step 1: Prepare A Misskey Account And Token

  1. Sign in to the Misskey instance you want to use.
  2. Create or choose the account that should represent your bot.
  3. Generate an Access Token for that account.

Memoh needs:

  • Instance URL: for example https://misskey.io
  • Access Token: a token for the bot account

The exact token-creation UI varies by Misskey instance. Make sure the token is allowed to read inbound events for the bot account and publish replies.

Step 2: Configure Memoh

  1. Open your bot in the Memoh Web UI.
  2. Go to Platforms.
  3. Click Add Channel and choose Misskey.
  4. Enter the Instance URL.
  5. Paste the Access Token.
  6. Click Save and Enable.

Memoh uses these credentials to discover the bot identity and start the Misskey connection.

Step 3: Start Chatting

After the channel is enabled, users can interact with the bot on that Misskey instance.

Misskey in Memoh is generally best suited for:

  • replies to users
  • text and Markdown-style output
  • reaction-aware social conversations

Features Supported

  • Text
  • Markdown
  • Replies
  • Reactions

Current limitations:

  • No attachments / media upload
  • No streaming output

Published under AGPLv3

- +
Skip to content

Misskey Channel Configuration

Memoh can connect a bot to a Misskey server so it can read inbound mentions and reply as a Misskey account. This adapter is best for text-first social interactions on self-hosted or public Misskey instances.

Step 1: Prepare A Misskey Account And Token

  1. Sign in to the Misskey instance you want to use.
  2. Create or choose the account that should represent your bot.
  3. Generate an Access Token for that account.

Memoh needs:

  • Instance URL: for example https://misskey.io
  • Access Token: a token for the bot account

The exact token-creation UI varies by Misskey instance. Make sure the token is allowed to read inbound events for the bot account and publish replies.

Step 2: Configure Memoh

  1. Open your bot in the Memoh Web UI.
  2. Go to Platforms.
  3. Click Add Channel and choose Misskey.
  4. Enter the Instance URL.
  5. Paste the Access Token.
  6. Click Save and Enable.

Memoh uses these credentials to discover the bot identity and start the Misskey connection.

Step 3: Start Chatting

After the channel is enabled, users can interact with the bot on that Misskey instance.

Misskey in Memoh is generally best suited for:

  • replies to users
  • text and Markdown-style output
  • reaction-aware social conversations

Features Supported

  • Text
  • Markdown
  • Replies
  • Reactions

Current limitations:

  • No attachments / media upload
  • No streaming output

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/qq.html b/channels/qq.html index b24348a7..0e8bfe7f 100644 --- a/channels/qq.html +++ b/channels/qq.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

QQ Channel Configuration

Connecting your Memoh Bot to QQ allows it to interact with users through QQ's official Bot platform.

Step 1: Create a QQ Bot

  1. Go to the QQ Bot Open Platform and log in with your QQ account.
  2. Click Create Bot (创建机器人) - no approval required. Each account can create up to 5 bots.
  3. Copy the AppID and AppSecret displayed on the page.

Important: AppSecret is only shown once. Save it securely - viewing it again will force a reset.

Step 2: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select QQ.
  3. Paste your AppID and AppSecret.
  4. Configure optional settings:
    • Markdown Support: Enable Markdown formatting (default: enabled).
    • Enable Input Hint: Show typing indicators (default: enabled).
  5. Click Save and Enable.

Step 3: Bind Your Identity (Optional)

Binding your QQ identity to your Memoh account enables cross-platform identity recognition — the bot will know who you are regardless of which channel you use.

  1. In Memoh Web UI, go to Profile > Bind Code.
  2. Select QQ and click Generate.
  3. Copy the code and send it to your bot in a QQ direct message.

Features Supported

  • Message Content: Full support for text messages.
  • Markdown: Rich formatting with bold, italic, code blocks, and links.
  • Attachments: Support for images and files.
  • Typing Indicators: Visual feedback while generating responses.
  • Target Types: C2C (direct message), group, and channel.

Official Resources

Published under AGPLv3

- +
Skip to content

QQ Channel Configuration

Connecting your Memoh Bot to QQ allows it to interact with users through QQ's official Bot platform.

Step 1: Create a QQ Bot

  1. Go to the QQ Bot Open Platform and log in with your QQ account.
  2. Click Create Bot (创建机器人) - no approval required. Each account can create up to 5 bots.
  3. Copy the AppID and AppSecret displayed on the page.

Important: AppSecret is only shown once. Save it securely - viewing it again will force a reset.

Step 2: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select QQ.
  3. Paste your AppID and AppSecret.
  4. Configure optional settings:
    • Markdown Support: Enable Markdown formatting (default: enabled).
    • Enable Input Hint: Show typing indicators (default: enabled).
  5. Click Save and Enable.

Step 3: Bind Your Identity (Optional)

Binding your QQ identity to your Memoh account enables cross-platform identity recognition — the bot will know who you are regardless of which channel you use.

  1. In Memoh Web UI, go to Profile > Bind Code.
  2. Select QQ and click Generate.
  3. Copy the code and send it to your bot in a QQ direct message.

Features Supported

  • Message Content: Full support for text messages.
  • Markdown: Rich formatting with bold, italic, code blocks, and links.
  • Attachments: Support for images and files.
  • Typing Indicators: Visual feedback while generating responses.
  • Target Types: C2C (direct message), group, and channel.

Official Resources

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/slack.html b/channels/slack.html new file mode 100644 index 00000000..3a8dcb93 --- /dev/null +++ b/channels/slack.html @@ -0,0 +1,26 @@ + + + + + + Slack Channel Configuration | Memoh Documentation + + + + + + + + + + + + + + + +
Skip to content

Slack Channel Configuration

Connecting your Memoh Bot to Slack allows it to receive direct messages, participate in channels and threads, read attachments, send files, and use streaming replies.

Step 1: Create a Slack App

  1. Go to the Slack API dashboard and create a new app.
  2. Choose the workspace where you want to install the bot.
  3. Open Basic Information and keep this app page open for the next steps.

Step 2: Enable Socket Mode

Memoh's Slack adapter uses Socket Mode, so you need an app-level token in addition to the bot token.

  1. In Basic Information, enable Socket Mode.
  2. Create an App-Level Token with the connections:write scope.
  3. Copy the generated token. It starts with xapp-.

Step 3: Configure Bot Token Scopes

In OAuth & Permissions, add the bot token scopes required by the current Slack adapter:

  • app_mentions:read - receive bot mentions in channels
  • channels:history - read messages in public channels
  • groups:history - read messages in private channels
  • im:history - read direct messages
  • mpim:history - read group direct messages
  • chat:write - send replies and thread messages
  • files:read - read uploaded files and images
  • files:write - upload outbound files
  • reactions:write - add and remove reactions

You should also add these recommended scopes if you want Slack conversation names and metadata to show up more completely in Memoh:

  • channels:read
  • groups:read
  • im:read
  • mpim:read

Step 4: Subscribe to Bot Events

In Event Subscriptions, enable bot events and add:

  • app_mention
  • message.channels
  • message.groups
  • message.im
  • message.mpim

These are the inbound event types currently handled by the Slack adapter.

Step 5: Install the App to Your Workspace

  1. In OAuth & Permissions, click Install to Workspace.
  2. Review the permission screen.
  3. Authorize the app.
  4. Copy the Bot User OAuth Token. It starts with xoxb-.

Make sure the xoxb-... bot token and the xapp-... app-level token come from the same Slack app and workspace.

Step 6: Configure Memoh

  1. Open your Bot detail page in the Memoh Web UI.
  2. Go to the Platforms tab.
  3. Click Add Channel and select Slack.
  4. Fill in:
    • Bot Token: your xoxb-... token
    • App-Level Token: your xapp-... token
  5. Click Save and Enable.

Step 7: Add the Bot to Conversations

After the channel is enabled, the Slack app still needs to be present in the conversations where you want it to work.

  • For direct messages: open a DM with the app and send a message.
  • For public channels: invite the bot to the channel.
  • For private channels: invite the bot explicitly after installation.

If the bot can send messages but cannot read uploaded images or files, check that files:read is enabled. If it connects but receives no incoming messages, check the bot events and the matching history scopes again.

Features Supported

  • Direct Messages and Channels: Support for DMs, public channels, private channels, and threads.
  • Attachments: Read uploaded images and files from Slack, and send files back.

Published under AGPLv3

+ + + + \ No newline at end of file diff --git a/channels/telegram.html b/channels/telegram.html index a9b7dde3..85525813 100644 --- a/channels/telegram.html +++ b/channels/telegram.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Telegram Channel Configuration

This guide walks you through connecting your Memoh Bot to Telegram. Telegram is one of the most supported platforms in Memoh, featuring streaming responses, Markdown formatting, and attachment support.

Step 1: Create a Telegram Bot

You need to create a bot on Telegram to get an API token.

  1. Open Telegram and search for the official @BotFather bot.
  2. Send the /newbot command.
  3. Follow the prompts:
    • Name: Choose a display name for your bot (e.g., My Memoh Bot).
    • Username: Choose a unique username ending in bot (e.g., my_memoh_bot).
  4. BotFather will provide you with an API Token (e.g., 123456789:ABCdefGHIjklMNOpqrsTUVwxyz). Keep this token secret.

Official Guide: Telegram Bot Tutorial

Step 2: Configure Memoh

  1. Go to your Bot's Detail Page in the Memoh Web UI.
  2. Select the Platforms tab.
  3. Click Add Channel and select Telegram.
  4. Paste your API Token into the credentials field.
  5. Click Save and Enable.

Step 3: Bind Your Identity (Optional)

Binding your Telegram identity to your Memoh account enables cross-platform identity recognition — the bot will know who you are regardless of which channel you use.

  1. In Memoh Web UI, go to Profile > Bind Code.
  2. Select Telegram and click Generate.
  3. Copy the code.
  4. Open a chat with your new bot on Telegram and send the bind code.
  5. The bot should respond that your identity is successfully linked.

Features Supported

  • Streaming: Responses appear as the bot "thinks."
  • Markdown: Support for bold, italic, code blocks, and links.
  • Attachments: Send images or files to the bot; the bot can also send files back.
  • Replies: The bot understands context from message replies.

Published under AGPLv3

- +
Skip to content

Telegram Channel Configuration

This guide walks you through connecting your Memoh Bot to Telegram. Telegram is one of the most supported platforms in Memoh, featuring streaming responses, Markdown formatting, and attachment support.

Step 1: Create a Telegram Bot

You need to create a bot on Telegram to get an API token.

  1. Open Telegram and search for the official @BotFather bot.
  2. Send the /newbot command.
  3. Follow the prompts:
    • Name: Choose a display name for your bot (e.g., My Memoh Bot).
    • Username: Choose a unique username ending in bot (e.g., my_memoh_bot).
  4. BotFather will provide you with an API Token (e.g., 123456789:ABCdefGHIjklMNOpqrsTUVwxyz). Keep this token secret.

Official Guide: Telegram Bot Tutorial

Step 2: Configure Memoh

  1. Go to your Bot's Detail Page in the Memoh Web UI.
  2. Select the Platforms tab.
  3. Click Add Channel and select Telegram.
  4. Paste your API Token into the credentials field.
  5. Click Save and Enable.

Step 3: Bind Your Identity (Optional)

Binding your Telegram identity to your Memoh account enables cross-platform identity recognition — the bot will know who you are regardless of which channel you use.

  1. In Memoh Web UI, go to Profile > Bind Code.
  2. Select Telegram and click Generate.
  3. Copy the code.
  4. Open a chat with your new bot on Telegram and send the bind code.
  5. The bot should respond that your identity is successfully linked.

Features Supported

  • Streaming: Responses appear as the bot "thinks."
  • Markdown: Support for bold, italic, code blocks, and links.
  • Attachments: Send images or files to the bot; the bot can also send files back.
  • Replies: The bot understands context from message replies.

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/wechatoa.html b/channels/wechatoa.html index 96075f48..f1083f4d 100644 --- a/channels/wechatoa.html +++ b/channels/wechatoa.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

WeChat Official Account Channel Configuration

This guide covers the WeChat Official Account adapter in Memoh. It is different from the personal WeChat QR-login adapter: this one is for official-account webhook integration and is intended for inbound private-message scenarios.

Step 1: Prepare Official Account Credentials

From the WeChat Official Account platform, prepare:

  • App ID
  • App Secret
  • Token

You may also need:

  • Encoding AES Key if you use encrypted webhook delivery
  • an outbound HTTP Proxy URL if your deployment must reach WeChat APIs through a proxy

Step 2: Add The Channel In Memoh

  1. Open your bot in the Memoh Web UI.
  2. Go to Platforms.
  3. Click Add Channel and choose WeChat Official Account.
  4. Fill in the required fields:
    • App ID
    • App Secret
    • Token
  5. Choose the Encryption Mode.
  6. If you use safe or compat mode, also provide the Encoding AES Key.
  7. Save the channel.

Memoh generates a Webhook Callback URL after the channel has been saved.

Step 3: Configure The WeChat Platform

  1. Copy the Webhook Callback URL from Memoh.
  2. Paste it into the WeChat Official Account platform callback configuration.
  3. Make sure the WeChat platform and Memoh use the same:
    • Token
    • Encryption Mode
    • Encoding AES Key when encryption is enabled

WeChat will verify the callback before delivering real messages.

Step 4: Enable And Test

  1. Enable the channel in Memoh.
  2. Send a test private message from the official account side.
  3. Confirm that Memoh receives the message and the bot can reply.

Features Supported

  • Private chats
  • Replies
  • Attachments and media

Current behavior notes:

  • This adapter is intended for private-message conversations, not group-style chats.
  • Outbound responses are non-streaming on this channel.

Published under AGPLv3

- +
Skip to content

WeChat Official Account Channel Configuration

This guide covers the WeChat Official Account adapter in Memoh. It is different from the personal WeChat QR-login adapter: this one is for official-account webhook integration and is intended for inbound private-message scenarios.

Step 1: Prepare Official Account Credentials

From the WeChat Official Account platform, prepare:

  • App ID
  • App Secret
  • Token

You may also need:

  • Encoding AES Key if you use encrypted webhook delivery
  • an outbound HTTP Proxy URL if your deployment must reach WeChat APIs through a proxy

Step 2: Add The Channel In Memoh

  1. Open your bot in the Memoh Web UI.
  2. Go to Platforms.
  3. Click Add Channel and choose WeChat Official Account.
  4. Fill in the required fields:
    • App ID
    • App Secret
    • Token
  5. Choose the Encryption Mode.
  6. If you use safe or compat mode, also provide the Encoding AES Key.
  7. Save the channel.

Memoh generates a Webhook Callback URL after the channel has been saved.

Step 3: Configure The WeChat Platform

  1. Copy the Webhook Callback URL from Memoh.
  2. Paste it into the WeChat Official Account platform callback configuration.
  3. Make sure the WeChat platform and Memoh use the same:
    • Token
    • Encryption Mode
    • Encoding AES Key when encryption is enabled

WeChat will verify the callback before delivering real messages.

Step 4: Enable And Test

  1. Enable the channel in Memoh.
  2. Send a test private message from the official account side.
  3. Confirm that Memoh receives the message and the bot can reply.

Features Supported

  • Private chats
  • Replies
  • Attachments and media

Current behavior notes:

  • This adapter is intended for private-message conversations, not group-style chats.
  • Outbound responses are non-streaming on this channel.

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/wecom.html b/channels/wecom.html index 1e954d12..81f5acc9 100644 --- a/channels/wecom.html +++ b/channels/wecom.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

WeCom (WeWork) Channel Configuration

Connecting your Memoh Bot to WeCom (企业微信) allows it to interact with users within your organization's WeCom workspace.

Step 1: Create a WeCom Bot

  1. Log in to the WeCom Admin Console.
  2. Navigate to App Management > Custom Apps or Bot Management.
  3. Create a new bot application.
  4. Note the Bot ID and Secret credentials.

Step 2: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select WeCom.
  3. Fill in the required fields:
FieldRequiredDescription
Bot IDYesThe WeCom bot identifier.
SecretYesThe bot's authentication credential.
WebSocket URLNoCustom WebSocket endpoint (uses default if empty).
  1. Click Save and Enable.

Step 3: Start Chatting

Once the channel is enabled, the bot will connect to WeCom via WebSocket and begin receiving messages. Users in your WeCom workspace can send messages to the bot directly or in group chats.

Features Supported

  • Message Content: Full support for text messages.
  • Direct Messages: Private conversations with individual users.
  • Group Chats: Participate in group conversations.
  • Streaming: Responses are streamed in real-time.

Official Resources

Published under AGPLv3

- +
Skip to content

WeCom (WeWork) Channel Configuration

Connecting your Memoh Bot to WeCom (企业微信) allows it to interact with users within your organization's WeCom workspace.

Step 1: Create a WeCom Bot

  1. Log in to the WeCom Admin Console.
  2. Navigate to App Management > Custom Apps or Bot Management.
  3. Create a new bot application.
  4. Note the Bot ID and Secret credentials.

Step 2: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select WeCom.
  3. Fill in the required fields:
FieldRequiredDescription
Bot IDYesThe WeCom bot identifier.
SecretYesThe bot's authentication credential.
WebSocket URLNoCustom WebSocket endpoint (uses default if empty).
  1. Click Save and Enable.

Step 3: Start Chatting

Once the channel is enabled, the bot will connect to WeCom via WebSocket and begin receiving messages. Users in your WeCom workspace can send messages to the bot directly or in group chats.

Features Supported

  • Message Content: Full support for text messages.
  • Direct Messages: Private conversations with individual users.
  • Group Chats: Participate in group conversations.
  • Streaming: Responses are streamed in real-time.

Official Resources

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/weixin.html b/channels/weixin.html index dd1a3506..1fa2c763 100644 --- a/channels/weixin.html +++ b/channels/weixin.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

WeChat Channel Configuration

Connecting your Memoh Bot to WeChat allows it to interact with users directly via WeChat personal messaging. Setup is simple — just scan a QR code.

Step 1: Add WeChat Channel in Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select WeChat.

Step 2: Scan the QR Code

  1. Click Start QR Login. Memoh will fetch a QR code from the WeChat platform.
  2. Open WeChat on your phone and scan the displayed QR code.
  3. Confirm the login on your phone when prompted.
  4. Once confirmed, Memoh automatically saves the credentials — no manual token or API key entry is needed.

The QR code has a limited validity window. If it expires before you scan, click Start QR Login again to get a fresh one.

Step 3: Start Chatting

After the QR login succeeds, the channel is automatically enabled. Users can now send messages to the bot directly in WeChat.

Optional Settings

FieldDescription
Enable TypingShow typing indicators while generating responses.

Features Supported

  • Message Content: Full support for text messages.
  • Direct Messages: Private conversations with individual users.
  • Attachments: Support for images and media.
  • Typing Indicators: Visual feedback while generating responses (when enabled).

Published under AGPLv3

- +
Skip to content

WeChat Channel Configuration

Connecting your Memoh Bot to WeChat allows it to interact with users directly via WeChat personal messaging. Setup is simple — just scan a QR code.

Step 1: Add WeChat Channel in Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select WeChat.

Step 2: Scan the QR Code

  1. Click Start QR Login. Memoh will fetch a QR code from the WeChat platform.
  2. Open WeChat on your phone and scan the displayed QR code.
  3. Confirm the login on your phone when prompted.
  4. Once confirmed, Memoh automatically saves the credentials — no manual token or API key entry is needed.

The QR code has a limited validity window. If it expires before you scan, click Start QR Login again to get a fresh one.

Step 3: Start Chatting

After the QR login succeeds, the channel is automatically enabled. Users can now send messages to the bot directly in WeChat.

Optional Settings

FieldDescription
Enable TypingShow typing indicators while generating responses.

Features Supported

  • Message Content: Full support for text messages.
  • Direct Messages: Private conversations with individual users.
  • Attachments: Support for images and media.
  • Typing Indicators: Visual feedback while generating responses (when enabled).

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/access.html b/getting-started/access.html index 42ec30b4..cf9d1463 100644 --- a/getting-started/access.html +++ b/getting-started/access.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Bot Access Control

Memoh uses an ACL (Access Control List) system to control who can interact with your bot. You can define prioritized rules to allow or deny specific users, channel identities, or entire channel types — all from the bot's Access tab.


Quick Start: ACL Presets

When you create a bot, Memoh lets you start from an ACL preset. Presets are just a shortcut for common access patterns.

PresetResult
allow_allDefault effect is allow; anyone can chat unless you add deny rules later
private_onlyDefault effect is deny; private conversations are allowed
group_onlyDefault effect is deny; group conversations are allowed
group_and_thread_onlyDefault effect is deny; groups and threads are allowed
deny_allDefault effect is deny; nobody except the owner/admin path can chat until you add allow rules

These presets only define the starting point. After creation, you can refine everything from the Access tab.


Concepts

Default Effect

Each bot has a default effect (allow or deny) that applies when no ACL rule matches an incoming message. Configure this from the bot's Access tab.

  • Allow: Anyone can chat with the bot unless explicitly denied by a rule.
  • Deny: Only the bot owner, admins, and explicitly allowed subjects can chat.

Subject Types

ACL rules can target three kinds of subjects:

SubjectDescription
AllMatches every incoming message regardless of sender. Use this for global allow/deny rules.
Channel IdentityA specific identity on an external channel (e.g., a Telegram user, a Discord member). Useful for controlling access at the individual level.
Channel TypeAn entire channel platform (e.g., all Telegram users, all Discord users). Useful for platform-level access control.

Rule Effects

Each rule has an effect:

  • Allow — Grants the subject permission to chat with the bot.
  • Deny — Blocks the subject from chatting with the bot.

Priority-Based Evaluation

Rules are evaluated in priority order (top to bottom). The first matching rule determines the outcome:

  1. Bot owner or system admin → Always allowed (bypasses ACL).
  2. Rules are checked from highest priority (top) to lowest (bottom).
  3. The first rule whose subject matches the sender is applied.
  4. If no rule matches → the default effect is applied.

This means rule ordering matters. A deny rule placed above an allow rule will take precedence for matching subjects.


Managing Access

Open a bot's Access tab to configure its access control.

Start With A Preset, Then Refine

Recommended workflow:

  1. Pick an ACL preset when creating the bot.
  2. Open the Access tab.
  3. Confirm the resulting Default Effect.
  4. Add or reorder rules only where the preset is too broad or too narrow.

Adding Rules

  1. Click Add Rule.
  2. Select a subject type:
    • All: Applies to everyone.
    • Channel Identity: Search and select a specific channel identity the bot has seen before.
    • Channel Type: Select an entire channel platform.
  3. Choose the effect: allow or deny.
  4. Optionally set source scope to restrict the rule to a specific context:
    • Channel: Only applies when the message comes from a specific channel config.
    • Conversation Type: private, group, or thread.
    • Conversation ID: A specific chat/group ID.
    • Thread ID: A specific thread within a conversation (requires Conversation ID).
  5. Click Save.

Reordering Rules

Rules can be drag-and-dropped to change their priority. Higher rules (closer to the top) are evaluated first. After reordering, click Save to persist the new order.

Source Scope

Source scope lets you create fine-grained rules. For example:

  • Allow a user to chat only via Telegram, but not Discord.
  • Block an entire channel type only in group conversations.
  • Restrict access to a specific thread in a specific group.

Scope fields form a hierarchy: Channel → Conversation Type → Conversation ID → Thread ID. Each level is optional, but a Thread ID requires a Conversation ID.


What The Presets Actually Mean

This is the most useful mental model:

  • allow_all is best for open bots and public demos.
  • private_only is best when the bot should only answer in direct chats.
  • group_only is best for bots intended to live only in shared rooms.
  • group_and_thread_only is best for bots that should work in group spaces and threaded sub-conversations, but not in private DMs.
  • deny_all is best for highly restricted bots where you want to add every allow rule manually.

If you are unsure, start with allow_all for a personal test bot or deny_all for anything sensitive.


Examples

Open Bot (Anyone Can Chat)

  1. Choose preset allow_all, or set ACL Default Effect to allow.
  2. No rules needed — everyone is allowed by default.

Private Bot with Selected Users

  1. Choose preset deny_all, or set ACL Default Effect to deny.
  2. Add allow rules for each authorized channel identity.
  3. Only listed subjects (plus the bot owner and admins) can trigger the bot.

Open Bot with Blocked Users

  1. Choose preset allow_all, or set ACL Default Effect to allow.
  2. Add deny rules for problematic channel identities at the top of the list.
  3. Everyone except denied subjects can chat with the bot.

Platform-Specific Access

  1. Start from preset deny_all or private_only, depending on your goal.
  2. Add an allow rule with subject type Channel Type set to telegram.
  3. Only Telegram users can chat with the bot — messages from other channels are denied.

Channel-Scoped Access

  1. Add an allow rule for a specific channel identity.
  2. Set the Source Scope channel to your Telegram channel config.
  3. The user can only chat with the bot via that specific Telegram channel.

Debugging Access Decisions

When ACL behavior is confusing, use:

  • the Access tab to inspect rule order and default effect
  • the /access slash command to inspect the current identity, role, and ACL evaluation context

This is especially helpful when a user is linked across multiple channels or when group/thread scoping is involved.

Published under AGPLv3

- +
Skip to content

Bot Access Control

Memoh uses an ACL (Access Control List) system to control who can interact with your bot. You can define prioritized rules to allow or deny specific users, channel identities, or entire channel types — all from the bot's Access tab.


Quick Start: ACL Presets

When you create a bot, Memoh lets you start from an ACL preset. Presets are just a shortcut for common access patterns.

PresetResult
allow_allDefault effect is allow; anyone can chat unless you add deny rules later
private_onlyDefault effect is deny; private conversations are allowed
group_onlyDefault effect is deny; group conversations are allowed
group_and_thread_onlyDefault effect is deny; groups and threads are allowed
deny_allDefault effect is deny; nobody except the owner/admin path can chat until you add allow rules

These presets only define the starting point. After creation, you can refine everything from the Access tab.


Concepts

Default Effect

Each bot has a default effect (allow or deny) that applies when no ACL rule matches an incoming message. Configure this from the bot's Access tab.

  • Allow: Anyone can chat with the bot unless explicitly denied by a rule.
  • Deny: Only the bot owner, admins, and explicitly allowed subjects can chat.

Subject Types

ACL rules can target three kinds of subjects:

SubjectDescription
AllMatches every incoming message regardless of sender. Use this for global allow/deny rules.
Channel IdentityA specific identity on an external channel (e.g., a Telegram user, a Discord member). Useful for controlling access at the individual level.
Channel TypeAn entire channel platform (e.g., all Telegram users, all Discord users). Useful for platform-level access control.

Rule Effects

Each rule has an effect:

  • Allow — Grants the subject permission to chat with the bot.
  • Deny — Blocks the subject from chatting with the bot.

Priority-Based Evaluation

Rules are evaluated in priority order (top to bottom). The first matching rule determines the outcome:

  1. Bot owner or system admin → Always allowed (bypasses ACL).
  2. Rules are checked from highest priority (top) to lowest (bottom).
  3. The first rule whose subject matches the sender is applied.
  4. If no rule matches → the default effect is applied.

This means rule ordering matters. A deny rule placed above an allow rule will take precedence for matching subjects.


Managing Access

Open a bot's Access tab to configure its access control.

Start With A Preset, Then Refine

Recommended workflow:

  1. Pick an ACL preset when creating the bot.
  2. Open the Access tab.
  3. Confirm the resulting Default Effect.
  4. Add or reorder rules only where the preset is too broad or too narrow.

Adding Rules

  1. Click Add Rule.
  2. Select a subject type:
    • All: Applies to everyone.
    • Channel Identity: Search and select a specific channel identity the bot has seen before.
    • Channel Type: Select an entire channel platform.
  3. Choose the effect: allow or deny.
  4. Optionally set source scope to restrict the rule to a specific context:
    • Channel: Only applies when the message comes from a specific channel config.
    • Conversation Type: private, group, or thread.
    • Conversation ID: A specific chat/group ID.
    • Thread ID: A specific thread within a conversation (requires Conversation ID).
  5. Click Save.

Reordering Rules

Rules can be drag-and-dropped to change their priority. Higher rules (closer to the top) are evaluated first. After reordering, click Save to persist the new order.

Source Scope

Source scope lets you create fine-grained rules. For example:

  • Allow a user to chat only via Telegram, but not Discord.
  • Block an entire channel type only in group conversations.
  • Restrict access to a specific thread in a specific group.

Scope fields form a hierarchy: Channel → Conversation Type → Conversation ID → Thread ID. Each level is optional, but a Thread ID requires a Conversation ID.


What The Presets Actually Mean

This is the most useful mental model:

  • allow_all is best for open bots and public demos.
  • private_only is best when the bot should only answer in direct chats.
  • group_only is best for bots intended to live only in shared rooms.
  • group_and_thread_only is best for bots that should work in group spaces and threaded sub-conversations, but not in private DMs.
  • deny_all is best for highly restricted bots where you want to add every allow rule manually.

If you are unsure, start with allow_all for a personal test bot or deny_all for anything sensitive.


Examples

Open Bot (Anyone Can Chat)

  1. Choose preset allow_all, or set ACL Default Effect to allow.
  2. No rules needed — everyone is allowed by default.

Private Bot with Selected Users

  1. Choose preset deny_all, or set ACL Default Effect to deny.
  2. Add allow rules for each authorized channel identity.
  3. Only listed subjects (plus the bot owner and admins) can trigger the bot.

Open Bot with Blocked Users

  1. Choose preset allow_all, or set ACL Default Effect to allow.
  2. Add deny rules for problematic channel identities at the top of the list.
  3. Everyone except denied subjects can chat with the bot.

Platform-Specific Access

  1. Start from preset deny_all or private_only, depending on your goal.
  2. Add an allow rule with subject type Channel Type set to telegram.
  3. Only Telegram users can chat with the bot — messages from other channels are denied.

Channel-Scoped Access

  1. Add an allow rule for a specific channel identity.
  2. Set the Source Scope channel to your Telegram channel config.
  3. The user can only chat with the bot via that specific Telegram channel.

Debugging Access Decisions

When ACL behavior is confusing, use:

  • the Access tab to inspect rule order and default effect
  • the /access slash command to inspect the current identity, role, and ACL evaluation context

This is especially helpful when a user is linked across multiple channels or when group/thread scoping is involved.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/bot.html b/getting-started/bot.html index e6b35b1e..4db07f8d 100644 --- a/getting-started/bot.html +++ b/getting-started/bot.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Bot Management

A Bot is an independent AI agent that comes with its own isolated container, persistent memory, and configurable personality. Bots can chat via various messaging platforms (Channels) and perform complex tasks using specialized tools.

Creating a Bot

  1. Navigate to the Bots page from the sidebar.
  2. Click the Create Bot button.
  3. Fill in the basic info:
    • Display Name: The name users will see in chats.
    • Avatar: A URL for the bot's profile picture.
    • Timezone: Optional per-bot timezone. If left empty, the bot inherits the user or system timezone.
    • ACL Preset: Quick-start access policy such as allow_all or private_only.
  4. Click Create.

Bot Detail Page

Once created, clicking on a bot card takes you to its Detail Page, where you can manage its entire lifecycle through specialized tabs.

Tab Overview

TabDescription
OverviewHealth checks for container, database, channels, and memory.
GeneralCore runtime settings: chat/title/image models, memory/search/browser/TTS bindings, timezone, language, reasoning, and danger zone.
ContainerContainer lifecycle (create/start/stop), snapshots, data export/import.
MemoryBrowse, search, create, edit, and compact memories.
PlatformsChannel configurations such as Telegram, Discord, Feishu, QQ, Matrix, WeCom, WeChat, Misskey, DingTalk, and Web.
AccessACL rules and default access behavior.
EmailEmail bindings and outbox.
TerminalInteractive terminal access to the bot's container.
FilesFile manager for the bot's container filesystem.
MCPMCP connection management (Stdio, Remote, OAuth).
HeartbeatHeartbeat configuration, model selection, and execution logs.
CompactionSession context compaction settings and logs.
ScheduleCron-based scheduled tasks and execution logs.
SkillsMarkdown-based skill files that define bot personality and capabilities.

Configuring the Bot's Core Settings

After creating a bot, the most important step is configuring its runtime settings. These settings are split across a few tabs instead of living in one giant form.

  1. Navigate to your bot's Detail Page.
  2. Start with the General tab for chat/runtime bindings.
  3. Use the Heartbeat tab for scheduled autonomous activity.
  4. Use the Compaction tab for session context compaction behavior.
  5. Use the Access tab to refine ACL rules after the initial ACL preset.

If you have not created these resources yet, set them up first:


General Tab Reference

The General tab contains the settings that shape everyday conversation behavior.

FieldDescription
Chat ModelThe main LLM used for generating chat responses.
Title ModelOptional model used to generate session titles.
Image Generation ModelOptional model used by image-generation features. Pick a chat model that supports image-output.
Memory ProviderThe memory backend assigned to the bot. The built-in provider can optionally define its own memory and embedding models.
Search ProviderThe search engine used for web browsing capabilities.
TTS ModelOptional speech model used for text-to-speech output. Speech models come from the TTS Providers flow, not the normal chat provider flow.
Browser ContextThe browser environment used for web automation, such as viewport, locale, and mobile behavior.
TimezonePer-bot timezone. If empty, Memoh inherits the user timezone and then falls back to the system timezone.
LanguageThe bot's primary communication language.
Reasoning EnabledAvailable when the selected chat model exposes reasoning compatibility.
Reasoning EffortSet the level of reasoning effort (low, medium, high).

Notes:

  • The Image Generation Model is intentionally separate from the normal chat model so you can dedicate an image-capable model only to visual generation tasks.
  • The TTS Model comes from the TTS Providers system and uses speech models such as Edge TTS voices.
  • The selected chat model's context_window influences session status reporting and Context Compaction.

Heartbeat Tab Reference

Heartbeat is configured from its own tab.

FieldDescription
Heartbeat EnabledEnable or disable periodic autonomous activity.
Heartbeat IntervalHow often the heartbeat runs, in minutes.
Heartbeat ModelOptional dedicated model for heartbeat tasks. This can differ from the main chat model.

The Heartbeat tab also includes heartbeat execution logs, so you can review what the bot did during autonomous runs.


Compaction Tab Reference

Compaction is now about session context compaction, not memory maintenance.

FieldDescription
Compaction EnabledEnable or disable automatic context compaction.
Compaction ThresholdEstimated token threshold that triggers compaction.
Compaction RatioHow aggressively the session context should be reduced.
Compaction ModelOptional dedicated model used to summarize old session context.

The Compaction tab also exposes compaction logs so you can see recent successful, pending, or failed runs.

For the runtime behavior, see Context Compaction.


Access And ACL

At creation time, the bot starts from an ACL preset. After that, use the Access tab for fine-grained control.

Two layers matter:

  • ACL Preset gives you a sensible starting policy for a new bot.
  • ACL Default Effect controls the default result when no rule matches.

Use the Access tab to refine conversation, group, and thread rules after the initial setup.


Most users only need the chat and discuss behavior described in Sessions.

If you manage bot settings through the API or custom automation, the settings schema also includes discuss_probe_model_id for discuss-mode specific setups. Treat it as an advanced setting rather than a required field for normal bot creation.


Terminal Tab

The Terminal tab provides interactive shell access to the bot's container:

  • Open multiple terminal tabs simultaneously.
  • Execute commands directly inside the container.
  • Requires the container to be running.

Deleting a Bot

To permanently remove a bot and all its associated data (including container files and memory):

  1. Navigate to the General tab in the Bot Detail page.
  2. Scroll to the Danger Zone at the bottom.
  3. Click Delete Bot and confirm the action.

Warning: This action is irreversible. All persistent data for this bot will be lost.

Published under AGPLv3

- +
Skip to content

Bot Management

A Bot is an independent AI agent that comes with its own isolated container, persistent memory, and configurable personality. Bots can chat via various messaging platforms (Channels) and perform complex tasks using specialized tools.

Creating a Bot

  1. Navigate to the Bots page from the sidebar.
  2. Click the Create Bot button.
  3. Fill in the basic info:
    • Display Name: The name users will see in chats.
    • Avatar: A URL for the bot's profile picture.
    • Timezone: Optional per-bot timezone. If left empty, the bot inherits the user or system timezone.
    • ACL Preset: Quick-start access policy such as allow_all or private_only.
  4. Click Create.

Bot Detail Page

Once created, clicking on a bot card takes you to its Detail Page, where you can manage its entire lifecycle through specialized tabs.

Tab Overview

TabDescription
OverviewHealth checks for container, database, channels, and memory.
GeneralCore runtime settings: chat/title/image models, memory/search/browser/TTS bindings, timezone, language, reasoning, and danger zone.
ContainerContainer lifecycle (create/start/stop), snapshots, data export/import.
MemoryBrowse, search, create, edit, and compact memories.
PlatformsChannel configurations such as Telegram, Discord, Feishu, QQ, Matrix, WeCom, WeChat, Misskey, DingTalk, and Web.
AccessACL rules and default access behavior.
EmailEmail bindings and outbox.
TerminalInteractive terminal access to the bot's container.
FilesFile manager for the bot's container filesystem.
MCPMCP connection management (Stdio, Remote, OAuth).
HeartbeatHeartbeat configuration, model selection, and execution logs.
CompactionSession context compaction settings and logs.
ScheduleCron-based scheduled tasks and execution logs.
SkillsMarkdown-based skill files that define bot personality and capabilities.

Configuring the Bot's Core Settings

After creating a bot, the most important step is configuring its runtime settings. These settings are split across a few tabs instead of living in one giant form.

  1. Navigate to your bot's Detail Page.
  2. Start with the General tab for chat/runtime bindings.
  3. Use the Heartbeat tab for scheduled autonomous activity.
  4. Use the Compaction tab for session context compaction behavior.
  5. Use the Access tab to refine ACL rules after the initial ACL preset.

If you have not created these resources yet, set them up first:


General Tab Reference

The General tab contains the settings that shape everyday conversation behavior.

FieldDescription
Chat ModelThe main LLM used for generating chat responses.
Title ModelOptional model used to generate session titles.
Image Generation ModelOptional model used by image-generation features. Pick a chat model that supports image-output.
Memory ProviderThe memory backend assigned to the bot. The built-in provider can optionally define its own memory and embedding models.
Search ProviderThe search engine used for web browsing capabilities.
TTS ModelOptional speech model used for text-to-speech output. Speech models come from the TTS Providers flow, not the normal chat provider flow.
Browser ContextThe browser environment used for web automation, such as viewport, locale, and mobile behavior.
TimezonePer-bot timezone. If empty, Memoh inherits the user timezone and then falls back to the system timezone.
LanguageThe bot's primary communication language.
Reasoning EnabledAvailable when the selected chat model exposes reasoning compatibility.
Reasoning EffortSet the level of reasoning effort (low, medium, high).

Notes:

  • The Image Generation Model is intentionally separate from the normal chat model so you can dedicate an image-capable model only to visual generation tasks.
  • The TTS Model comes from the TTS Providers system and uses speech models such as Edge TTS voices.
  • The selected chat model's context_window influences session status reporting and Context Compaction.

Heartbeat Tab Reference

Heartbeat is configured from its own tab.

FieldDescription
Heartbeat EnabledEnable or disable periodic autonomous activity.
Heartbeat IntervalHow often the heartbeat runs, in minutes.
Heartbeat ModelOptional dedicated model for heartbeat tasks. This can differ from the main chat model.

The Heartbeat tab also includes heartbeat execution logs, so you can review what the bot did during autonomous runs.


Compaction Tab Reference

Compaction is now about session context compaction, not memory maintenance.

FieldDescription
Compaction EnabledEnable or disable automatic context compaction.
Compaction ThresholdEstimated token threshold that triggers compaction.
Compaction RatioHow aggressively the session context should be reduced.
Compaction ModelOptional dedicated model used to summarize old session context.

The Compaction tab also exposes compaction logs so you can see recent successful, pending, or failed runs.

For the runtime behavior, see Context Compaction.


Access And ACL

At creation time, the bot starts from an ACL preset. After that, use the Access tab for fine-grained control.

Two layers matter:

  • ACL Preset gives you a sensible starting policy for a new bot.
  • ACL Default Effect controls the default result when no rule matches.

Use the Access tab to refine conversation, group, and thread rules after the initial setup.


Most users only need the chat and discuss behavior described in Sessions.

If you manage bot settings through the API or custom automation, the settings schema also includes discuss_probe_model_id for discuss-mode specific setups. Treat it as an advanced setting rather than a required field for normal bot creation.


Terminal Tab

The Terminal tab provides interactive shell access to the bot's container:

  • Open multiple terminal tabs simultaneously.
  • Execute commands directly inside the container.
  • Requires the container to be running.

Deleting a Bot

To permanently remove a bot and all its associated data (including container files and memory):

  1. Navigate to the General tab in the Bot Detail page.
  2. Scroll to the Danger Zone at the bottom.
  3. Click Delete Bot and confirm the action.

Warning: This action is irreversible. All persistent data for this bot will be lost.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/browser.html b/getting-started/browser.html index 730145d1..9ec164d3 100644 --- a/getting-started/browser.html +++ b/getting-started/browser.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Browser Contexts

Memoh can give a bot access to a headless browser through the Browser Gateway. A Browser Context stores the browser environment a bot should use, such as viewport size, locale, timezone, and mobile behavior.

Once a browser context is assigned to a bot, the bot can use browser tools to open pages, click elements, fill forms, capture screenshots, and inspect page content.


Concept: Browser Gateway

The Browser Gateway is powered by Playwright and provides browser automation for bots. In practice, a browser context acts like a reusable browser profile configuration for one or more bots.

Typical use cases include:

  • Navigating websites
  • Clicking buttons and links
  • Filling and submitting forms
  • Reading rendered page content
  • Capturing screenshots or PDFs

Creating a Browser Context

Manage contexts from the Browser Contexts page in the sidebar.

  1. Navigate to the Browser Contexts page.
  2. Click Add Browser Context.
  3. Fill in the following field:
    • Name: A display name for this browser context.
  4. Click Create.

Configuring a Browser Context

After creating a context, select it from the sidebar and update its settings.

FieldDescription
NameThe display name shown in the UI.
CoreBrowser engine: chromium (default) or firefox.
Viewport WidthBrowser viewport width in pixels.
Viewport HeightBrowser viewport height in pixels.
User AgentOptional custom browser user agent string.
Device Scale FactorOptional device pixel ratio.
LocaleOptional locale such as en-US or zh-CN.
Timezone IDOptional timezone such as UTC or Asia/Shanghai.
Is MobileEnables mobile-style browser behavior.
Ignore HTTPS ErrorsAllows navigation to sites with invalid HTTPS certificates.

Managing Contexts

  • Edit: Select a context and update its configuration.
  • Delete: Remove a context you no longer use.

Assigning a Browser Context to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Browser Context dropdown.
  4. Select the context you created.
  5. Click Save.

After saving, the bot can use that browser context when browser tools are invoked.


Bot Interaction

When a browser context is configured, the bot can use built-in browser tools such as:

  • browser_action: perform actions like navigation, click, fill, select, scroll, tab management, screenshot, or PDF export
  • browser_observe: inspect the current page and gather information for the model

This lets the bot interact with real websites instead of relying only on static HTML or search results.


Browser Core Selection

Memoh's browser image can include Chromium, Firefox, or both. The available cores are determined at build time by the BROWSER_CORES build argument.

The install script prompts for browser core selection during setup. To rebuild manually with specific cores:

bash
BROWSER_CORES=chromium docker compose --profile browser build browser

Valid values for BROWSER_CORES: chromium, firefox, chromium,firefox (default).


Next Steps

Published under AGPLv3

- +
Skip to content

Browser Contexts

Memoh can give a bot access to a headless browser through the Browser Gateway. A Browser Context stores the browser environment a bot should use, such as viewport size, locale, timezone, and mobile behavior.

Once a browser context is assigned to a bot, the bot can use browser tools to open pages, click elements, fill forms, capture screenshots, and inspect page content.


Concept: Browser Gateway

The Browser Gateway is powered by Playwright and provides browser automation for bots. In practice, a browser context acts like a reusable browser profile configuration for one or more bots.

Typical use cases include:

  • Navigating websites
  • Clicking buttons and links
  • Filling and submitting forms
  • Reading rendered page content
  • Capturing screenshots or PDFs

Creating a Browser Context

Manage contexts from the Browser Contexts page in the sidebar.

  1. Navigate to the Browser Contexts page.
  2. Click Add Browser Context.
  3. Fill in the following field:
    • Name: A display name for this browser context.
  4. Click Create.

Configuring a Browser Context

After creating a context, select it from the sidebar and update its settings.

FieldDescription
NameThe display name shown in the UI.
CoreBrowser engine: chromium (default) or firefox.
Viewport WidthBrowser viewport width in pixels.
Viewport HeightBrowser viewport height in pixels.
User AgentOptional custom browser user agent string.
Device Scale FactorOptional device pixel ratio.
LocaleOptional locale such as en-US or zh-CN.
Timezone IDOptional timezone such as UTC or Asia/Shanghai.
Is MobileEnables mobile-style browser behavior.
Ignore HTTPS ErrorsAllows navigation to sites with invalid HTTPS certificates.

Managing Contexts

  • Edit: Select a context and update its configuration.
  • Delete: Remove a context you no longer use.

Assigning a Browser Context to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Browser Context dropdown.
  4. Select the context you created.
  5. Click Save.

After saving, the bot can use that browser context when browser tools are invoked.


Bot Interaction

When a browser context is configured, the bot can use built-in browser tools such as:

  • browser_action: perform actions like navigation, click, fill, select, scroll, tab management, screenshot, or PDF export
  • browser_observe: inspect the current page and gather information for the model

This lets the bot interact with real websites instead of relying only on static HTML or search results.


Browser Core Selection

Memoh's browser image can include Chromium, Firefox, or both. The available cores are determined at build time by the BROWSER_CORES build argument.

The install script prompts for browser core selection during setup. To rebuild manually with specific cores:

bash
BROWSER_CORES=chromium docker compose --profile browser build browser

Valid values for BROWSER_CORES: chromium, firefox, chromium,firefox (default).


Next Steps

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/channels.html b/getting-started/channels.html index fb3931d3..6969b591 100644 --- a/getting-started/channels.html +++ b/getting-started/channels.html @@ -9,18 +9,18 @@ - + - + - + -
Skip to content

Bot Channels

Channels connect your Bot to various messaging platforms, allowing you to interact with it using your favorite chat applications.

Concept: Unified Communication

Memoh acts as a hub that bridges different messaging services. You can configure multiple channels for a single bot, enabling it to chat on Telegram, Discord, Matrix, and more simultaneously.


Supported Channels

Configure your bot's connections from the Platforms tab in the Bot Detail page.

Platform Guides

PlatformGuideNotes
TelegramTelegram ConfigurationStrong attachment and streaming support
Feishu (Lark)Feishu ConfigurationSupports webhook-style inbound mode
DiscordDiscord ConfigurationGood fit for communities and servers
QQQQ ConfigurationPersonal DM oriented
MatrixMatrix ConfigurationDecentralized homeserver support
MisskeyMisskey ConfigurationReplies and reactions, no streaming
DingTalkDingTalk ConfigurationEnterprise private/group chat
WeCom (WeWork)WeCom ConfigurationEnterprise workspace integration
WeChatWeChat ConfigurationPersonal QR login flow
WeChat Official AccountWeChat Official Account ConfigurationOfficial account webhook flow

Two WeChat adapters exist on purpose:

  • WeChat is the QR-login personal messaging integration.
  • WeChat Official Account is the official account / webhook integration for private-message scenarios.

Configuration Flow

1. Adding a Channel

  1. Click Add Channel.
  2. Select the platform from the list.
  3. Fill in the required credentials and configuration. The fields are dynamic and change based on the selected channel.

2. Common Fields

FieldDescription
CredentialsAPI tokens, secrets, or bot keys provided by the platform.
DisabledQuickly enable or disable a channel without removing its configuration.
RoutingConfigure how messages are mapped between the platform and Memoh.

3. Special Case: Feishu Webhook

If using Feishu in webhook inbound mode:

  1. Memoh will generate a Webhook Callback URL.
  2. Copy this URL and paste it into your Feishu App's event configuration.
  3. This allows Feishu to send messages directly to Memoh.

4. Special Case: WeChat QR Login

If using WeChat:

  1. After enabling the channel, a QR code flow is provided for connecting.
  2. Scan the QR code with WeChat to link the bot.

5. Special Case: WeChat Official Account Webhook

If using WeChat Official Account:

  1. Create and save the channel first.
  2. Memoh generates a Webhook Callback URL for that channel.
  3. Copy the callback URL into the WeChat Official Account platform configuration.
  4. Keep the configured Token, Encryption Mode, and optional AES settings aligned between Memoh and WeChat.

6. Special Case: DingTalk Stream Connection

If using DingTalk:

  1. Configure App Key and App Secret.
  2. Save and enable the channel.
  3. Memoh maintains the stream connection for inbound events; you do not need to manage a separate webhook callback URL for the standard setup.

Operations

  • Save: Update the configuration.
  • Save and Enable: Update and immediately activate the channel.
  • Enable/Disable Toggle: Switch the channel's active status.
  • Delete: Permanently remove a channel's configuration.

Published under AGPLv3

- +
Skip to content

Bot Channels

Channels connect your Bot to various messaging platforms, allowing you to interact with it using your favorite chat applications.

Concept: Unified Communication

Memoh acts as a hub that bridges different messaging services. You can configure multiple channels for a single bot, enabling it to chat on Telegram, Discord, Matrix, and more simultaneously.


Supported Channels

Configure your bot's connections from the Platforms tab in the Bot Detail page.

Platform Guides

PlatformGuideNotes
TelegramTelegram ConfigurationStrong attachment and streaming support
Feishu (Lark)Feishu ConfigurationSupports webhook-style inbound mode
DiscordDiscord ConfigurationGood fit for communities and servers
QQQQ ConfigurationPersonal DM oriented
MatrixMatrix ConfigurationDecentralized homeserver support
MisskeyMisskey ConfigurationReplies and reactions, no streaming
DingTalkDingTalk ConfigurationEnterprise private/group chat
WeCom (WeWork)WeCom ConfigurationEnterprise workspace integration
WeChatWeChat ConfigurationPersonal QR login flow
WeChat Official AccountWeChat Official Account ConfigurationOfficial account webhook flow
SlackSlack ConfigurationReplies, no streaming

Two WeChat adapters exist on purpose:

  • WeChat is the QR-login personal messaging integration.
  • WeChat Official Account is the official account / webhook integration for private-message scenarios.

Configuration Flow

1. Adding a Channel

  1. Click Add Channel.
  2. Select the platform from the list.
  3. Fill in the required credentials and configuration. The fields are dynamic and change based on the selected channel.

2. Common Fields

FieldDescription
CredentialsAPI tokens, secrets, or bot keys provided by the platform.
DisabledQuickly enable or disable a channel without removing its configuration.
RoutingConfigure how messages are mapped between the platform and Memoh.

3. Special Case: Feishu Webhook

If using Feishu in webhook inbound mode:

  1. Memoh will generate a Webhook Callback URL.
  2. Copy this URL and paste it into your Feishu App's event configuration.
  3. This allows Feishu to send messages directly to Memoh.

4. Special Case: WeChat QR Login

If using WeChat:

  1. After enabling the channel, a QR code flow is provided for connecting.
  2. Scan the QR code with WeChat to link the bot.

5. Special Case: WeChat Official Account Webhook

If using WeChat Official Account:

  1. Create and save the channel first.
  2. Memoh generates a Webhook Callback URL for that channel.
  3. Copy the callback URL into the WeChat Official Account platform configuration.
  4. Keep the configured Token, Encryption Mode, and optional AES settings aligned between Memoh and WeChat.

6. Special Case: DingTalk Stream Connection

If using DingTalk:

  1. Configure App Key and App Secret.
  2. Save and enable the channel.
  3. Memoh maintains the stream connection for inbound events; you do not need to manage a separate webhook callback URL for the standard setup.

Operations

  • Save: Update the configuration.
  • Save and Enable: Update and immediately activate the channel.
  • Enable/Disable Toggle: Switch the channel's active status.
  • Delete: Permanently remove a channel's configuration.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/compaction.html b/getting-started/compaction.html index 5f63c5ef..ed5e8281 100644 --- a/getting-started/compaction.html +++ b/getting-started/compaction.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Context Compaction

Context Compaction reduces the prompt footprint of a single conversation session by summarizing older turns and keeping the active context smaller.

This page is about session context, not long-term memory storage. If you want to merge or rewrite stored memories in a memory provider, see Bot Memory Management.


Why It Exists

As a conversation grows, the bot needs to send more prior messages back to the model. That increases:

  • token usage
  • latency
  • pressure on the model's context window
  • the chance that older but still important turns will crowd out newer ones

Context compaction helps by replacing older conversational detail with a shorter summary that still preserves enough continuity for the next turns.


What It Changes

Context compaction affects the active session context only.

It does not:

  • delete the bot itself
  • change the configured memory provider
  • merge long-term memory records
  • replace the need for memory search

In practice, it changes how much historical session text is carried into future model calls.


Automatic Compaction

Configure automatic context compaction from the bot's General tab.

Relevant fields:

FieldDescription
Compaction EnabledEnable or disable automatic context compaction for this bot.
Compaction ThresholdEstimated token threshold that triggers background compaction.
Compaction RatioHow aggressively the session should be reduced during compaction.
Compaction ModelThe model used to summarize old session context.

When enabled, Memoh can compact context in the background after a turn when the estimated input size passes the configured threshold.

Memoh also uses the selected model's context_window to understand how close the session is to the available budget.


Immediate Compaction

You can trigger compaction immediately for the current session in two ways:

From The Session Status Panel

  1. Open the active conversation.
  2. Open the session status panel.
  3. Click Compact Now.

The status panel also shows the current context usage, cache hit rate, and used skills, which helps you decide whether compaction is useful right now.

From Slash Commands

Run:

text
/compact

or:

text
/compact run

This runs synchronous context compaction for the current session and returns a status result to chat.


Status And Logs

The Compaction tab in the bot detail page provides an audit trail for context compaction runs.

Typical fields include:

  • Status — whether the compaction finished successfully or failed
  • Summary — the compacted summary text or a summary preview
  • Message Count — how many messages were involved
  • Started / Completed Time — when the run happened
  • Model / Usage — metadata about the model and token usage when available

The log list is useful when you want to verify that automatic compaction is actually running or diagnose a failure.


Relationship To context_window

Memoh tracks the current session against the selected chat model's context_window.

You can see this in:

  • the Web UI session status panel
  • the /status slash command

Compaction becomes more valuable as the active session gets closer to the model's context limit. A dedicated compaction model can also be used to summarize more cheaply than the main chat model.


Context Compaction vs Memory Compaction

These two features sound similar but solve different problems:

FeatureScopeTriggerResult
Context CompactionOne active sessionSession panel or /compactSummarizes older chat history for future turns
Memory CompactionLong-term memory providerMemory tabRewrites stored memory entries

Use Context Compaction when one conversation has become too large.

Use Memory Compaction when the bot's stored memories themselves have become noisy or redundant.


Next Steps

Published under AGPLv3

- +
Skip to content

Context Compaction

Context Compaction reduces the prompt footprint of a single conversation session by summarizing older turns and keeping the active context smaller.

This page is about session context, not long-term memory storage. If you want to merge or rewrite stored memories in a memory provider, see Bot Memory Management.


Why It Exists

As a conversation grows, the bot needs to send more prior messages back to the model. That increases:

  • token usage
  • latency
  • pressure on the model's context window
  • the chance that older but still important turns will crowd out newer ones

Context compaction helps by replacing older conversational detail with a shorter summary that still preserves enough continuity for the next turns.


What It Changes

Context compaction affects the active session context only.

It does not:

  • delete the bot itself
  • change the configured memory provider
  • merge long-term memory records
  • replace the need for memory search

In practice, it changes how much historical session text is carried into future model calls.


Automatic Compaction

Configure automatic context compaction from the bot's General tab.

Relevant fields:

FieldDescription
Compaction EnabledEnable or disable automatic context compaction for this bot.
Compaction ThresholdEstimated token threshold that triggers background compaction.
Compaction RatioHow aggressively the session should be reduced during compaction.
Compaction ModelThe model used to summarize old session context.

When enabled, Memoh can compact context in the background after a turn when the estimated input size passes the configured threshold.

Memoh also uses the selected model's context_window to understand how close the session is to the available budget.


Immediate Compaction

You can trigger compaction immediately for the current session in two ways:

From The Session Status Panel

  1. Open the active conversation.
  2. Open the session status panel.
  3. Click Compact Now.

The status panel also shows the current context usage, cache hit rate, and used skills, which helps you decide whether compaction is useful right now.

From Slash Commands

Run:

text
/compact

or:

text
/compact run

This runs synchronous context compaction for the current session and returns a status result to chat.


Status And Logs

The Compaction tab in the bot detail page provides an audit trail for context compaction runs.

Typical fields include:

  • Status — whether the compaction finished successfully or failed
  • Summary — the compacted summary text or a summary preview
  • Message Count — how many messages were involved
  • Started / Completed Time — when the run happened
  • Model / Usage — metadata about the model and token usage when available

The log list is useful when you want to verify that automatic compaction is actually running or diagnose a failure.


Relationship To context_window

Memoh tracks the current session against the selected chat model's context_window.

You can see this in:

  • the Web UI session status panel
  • the /status slash command

Compaction becomes more valuable as the active session gets closer to the model's context limit. A dedicated compaction model can also be used to summarize more cheaply than the main chat model.


Context Compaction vs Memory Compaction

These two features sound similar but solve different problems:

FeatureScopeTriggerResult
Context CompactionOne active sessionSession panel or /compactSummarizes older chat history for future turns
Memory CompactionLong-term memory providerMemory tabRewrites stored memory entries

Use Context Compaction when one conversation has become too large.

Use Memory Compaction when the bot's stored memories themselves have become noisy or redundant.


Next Steps

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/container.html b/getting-started/container.html index 0c4b0f02..9e25bfd3 100644 --- a/getting-started/container.html +++ b/getting-started/container.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Bot Container Management

Every Bot in Memoh operates within its own isolated container environment. This isolation ensures security, provides a dedicated filesystem, and allows the bot to execute code or commands without affecting other bots or the host system.

Concept: The Isolated Workspace

The container acts as the bot's private "computer." Within it, the bot can:

  • Store and modify files
  • Install software via package managers
  • Execute scripts
  • Maintain state across multiple sessions

Operations

Manage the lifecycle of your bot's environment from the Container tab in the Bot Detail page.

Lifecycle Actions

  • Create: Initialize the container if it doesn't exist (using the configured image). Progress is shown via real-time SSE feedback during image pull and creation.
  • Start: Launch the container. The bot must have a running container to perform many operations like file editing or executing tools.
  • Stop: Gracefully shut down the container to save resources.
  • Delete: Remove the container instance.

Container Information

The Container tab displays real-time data about the bot's runtime:

  • Container ID: Unique identifier for the instance.
  • Status: Whether it's currently running, stopped, or creating.
  • Image: The Docker/Containerd image used as the base.
  • Paths: Host and container paths for data persistence.
  • Tasks: Number of active background tasks running in the container.
  • CDI Devices: The effective GPU CDI devices currently attached to the container, if any.

Advanced: Provide CDI Devices

Memoh can provide host devices to a bot container through CDI (Container Device Interface). This is an advanced capability for users who want to expose host-managed devices, most commonly GPUs, to the container runtime.

In the Web UI, this capability is placed under Advanced options in the Container tab. It is optional and only needs to be configured when the bot must access CDI-backed devices from the host.

Configure CDI Devices

  1. Open the Bot's Container tab.
  2. Click Create if the container does not exist, or recreate the container if you need to change GPU settings.
  3. Expand Advanced options.
  4. Enable GPU.
  5. Enter one or more CDI device names in CDI devices.

You can enter CDI device names one per line or separated with commas. Common GPU-related examples:

  • nvidia.com/gpu=0
  • nvidia.com/gpu=all
  • amd.com/gpu=0
  • amd.com/gpu=all

Host Requirements

Before configuring CDI devices in Memoh, the host machine must already provide working device drivers, vendor toolkit support where required, and valid CDI specs. In practice, this usually means:

  • the host GPU works normally outside the container
  • CDI spec files exist under /etc/cdi or /var/run/cdi
  • the device name you enter in Memoh matches a real CDI device on the host

To discover the exact CDI device names exposed by the host, use the vendor tool on the host machine:

  • NVIDIA: nvidia-ctk cdi list
  • AMD: amd-ctk cdi list

If Memoh reports an error such as unresolvable CDI devices, the configured device name does not match any CDI device visible to the container runtime.

Important Behavior

  • CDI device settings are applied when the container is created. Updating the setting later requires recreating the container.
  • Stopping and starting an existing container does not change its attached CDI devices.
  • The container image still needs the appropriate user-space libraries and tools if you want to run CUDA or ROCm software inside the container.
  • After creation, the Container tab shows the effective attached CDI devices for verification.

Snapshots

Snapshots allow you to capture the current state of the bot's container and restore it later. This is useful for:

  • Saving a known good configuration
  • Versioning the bot's environment
  • Testing complex changes safely

Creating a Snapshot

  1. Ensure the container is stopped or in a stable state.
  2. Click Create Snapshot.
  3. Provide a name for the snapshot.

Restoring a Snapshot

  • Find the desired snapshot in the list and click Restore. This will reset the container to the captured state.

Managing Snapshots

  • View a list of existing snapshots with their creation timestamps and parent relationships.
  • Use the Delete button next to a snapshot to remove it.

Data Export and Import

The Container tab supports exporting and importing container data for backup, migration, or sharing purposes.

Export

  1. Click Export Data.
  2. The container's filesystem data is packaged into a downloadable archive.
  3. Save the archive to your local machine.

Import

  1. Click Import Data.
  2. Select an archive file from your local machine.
  3. The archive contents are extracted into the container's filesystem.

Restore

The Restore operation resets the container's data directory to a clean state. This is useful when the filesystem has become corrupted or you want to start fresh without recreating the container.


Container Versioning

Memoh tracks container versions to manage the lifecycle of the bot's runtime environment. Version information includes:

  • Current Version: The active container version.
  • Version History: A log of container version changes over time.

This helps with auditing and understanding when container configurations were updated.

Published under AGPLv3

- +
Skip to content

Bot Container Management

Every Bot in Memoh operates within its own isolated container environment. This isolation ensures security, provides a dedicated filesystem, and allows the bot to execute code or commands without affecting other bots or the host system.

Concept: The Isolated Workspace

The container acts as the bot's private "computer." Within it, the bot can:

  • Store and modify files
  • Install software via package managers
  • Execute scripts
  • Maintain state across multiple sessions

Operations

Manage the lifecycle of your bot's environment from the Container tab in the Bot Detail page.

Lifecycle Actions

  • Create: Initialize the container if it doesn't exist (using the configured image). Progress is shown via real-time SSE feedback during image pull and creation.
  • Start: Launch the container. The bot must have a running container to perform many operations like file editing or executing tools.
  • Stop: Gracefully shut down the container to save resources.
  • Delete: Remove the container instance.

Container Information

The Container tab displays real-time data about the bot's runtime:

  • Container ID: Unique identifier for the instance.
  • Status: Whether it's currently running, stopped, or creating.
  • Image: The Docker/Containerd image used as the base.
  • Paths: Host and container paths for data persistence.
  • Tasks: Number of active background tasks running in the container.
  • CDI Devices: The effective GPU CDI devices currently attached to the container, if any.

Advanced: Provide CDI Devices

Memoh can provide host devices to a bot container through CDI (Container Device Interface). This is an advanced capability for users who want to expose host-managed devices, most commonly GPUs, to the container runtime.

In the Web UI, this capability is placed under Advanced options in the Container tab. It is optional and only needs to be configured when the bot must access CDI-backed devices from the host.

Configure CDI Devices

  1. Open the Bot's Container tab.
  2. Click Create if the container does not exist, or recreate the container if you need to change GPU settings.
  3. Expand Advanced options.
  4. Enable GPU.
  5. Enter one or more CDI device names in CDI devices.

You can enter CDI device names one per line or separated with commas. Common GPU-related examples:

  • nvidia.com/gpu=0
  • nvidia.com/gpu=all
  • amd.com/gpu=0
  • amd.com/gpu=all

Host Requirements

Before configuring CDI devices in Memoh, the host machine must already provide working device drivers, vendor toolkit support where required, and valid CDI specs. In practice, this usually means:

  • the host GPU works normally outside the container
  • CDI spec files exist under /etc/cdi or /var/run/cdi
  • the device name you enter in Memoh matches a real CDI device on the host

To discover the exact CDI device names exposed by the host, use the vendor tool on the host machine:

  • NVIDIA: nvidia-ctk cdi list
  • AMD: amd-ctk cdi list

If Memoh reports an error such as unresolvable CDI devices, the configured device name does not match any CDI device visible to the container runtime.

Important Behavior

  • CDI device settings are applied when the container is created. Updating the setting later requires recreating the container.
  • Stopping and starting an existing container does not change its attached CDI devices.
  • The container image still needs the appropriate user-space libraries and tools if you want to run CUDA or ROCm software inside the container.
  • After creation, the Container tab shows the effective attached CDI devices for verification.

Snapshots

Snapshots allow you to capture the current state of the bot's container and restore it later. This is useful for:

  • Saving a known good configuration
  • Versioning the bot's environment
  • Testing complex changes safely

Creating a Snapshot

  1. Ensure the container is stopped or in a stable state.
  2. Click Create Snapshot.
  3. Provide a name for the snapshot.

Restoring a Snapshot

  • Find the desired snapshot in the list and click Restore. This will reset the container to the captured state.

Managing Snapshots

  • View a list of existing snapshots with their creation timestamps and parent relationships.
  • Use the Delete button next to a snapshot to remove it.

Data Export and Import

The Container tab supports exporting and importing container data for backup, migration, or sharing purposes.

Export

  1. Click Export Data.
  2. The container's filesystem data is packaged into a downloadable archive.
  3. Save the archive to your local machine.

Import

  1. Click Import Data.
  2. Select an archive file from your local machine.
  3. The archive contents are extracted into the container's filesystem.

Restore

The Restore operation resets the container's data directory to a clean state. This is useful when the filesystem has become corrupted or you want to start fresh without recreating the container.


Container Versioning

Memoh tracks container versions to manage the lifecycle of the bot's runtime environment. Version information includes:

  • Current Version: The active container version.
  • Version History: A log of container version changes over time.

This helps with auditing and understanding when container configurations were updated.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/email.html b/getting-started/email.html index 34c4e939..42eb7388 100644 --- a/getting-started/email.html +++ b/getting-started/email.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Email Providers and Bindings

Memoh allows your Bot to send and receive emails, providing another powerful channel for communication and task management.

Concept: Email as a Bot Channel

Connecting email to your Bot involves two steps:

  1. Email Provider: Configure a connection to an email service (like Mailgun or a generic SMTP server).
  2. Email Binding: Link a specific email address from a provider to a Bot.

Email Provider

Manage your email service connections from the Email Provider page in the sidebar.

Creating a Provider

  1. Navigate to the Email Provider page from the sidebar.
  2. Click Add Email Provider.
  3. Choose the provider type:
    • Mailgun: For high-volume delivery.
    • Generic SMTP: For traditional email servers.
  4. Fill in the required fields (e.g., domain, api_key, host, port, username, password).
  5. Click Create.

Bot Email Bindings

Configure your bot's email capabilities from the Email tab in the Bot Detail page.

Adding a Binding

  1. Click Add Binding.
  2. Select the Email Provider you created.
  3. Provide the Email Address to be associated with the bot.
  4. Set the bot's permissions:
    • Can Read: If enabled, the bot can check and process incoming emails.
    • Can Write: If enabled, the bot can compose and send outgoing emails.
    • Can Delete: If enabled, the bot can manage its own email inbox.
  5. Click Create.

Outbox and History

The Email tab also provides an Outbox showing an audit log of all emails sent by the bot:

  • To: The recipient's email address.
  • Subject: The email's subject line.
  • Status: Whether the email was sent successfully.
  • Sent At: The timestamp of the email delivery.

Bot Interaction

  • The bot can use its email permissions to send reports, respond to user inquiries, or trigger actions based on incoming mail.
  • Outgoing emails are tracked in the outbox for monitoring and troubleshooting.
  • The bot handles email in a structured way, allowing it to "converse" via email just as it does via chat.

Published under AGPLv3

- +
Skip to content

Email Providers and Bindings

Memoh allows your Bot to send and receive emails, providing another powerful channel for communication and task management.

Concept: Email as a Bot Channel

Connecting email to your Bot involves two steps:

  1. Email Provider: Configure a connection to an email service (like Mailgun or a generic SMTP server).
  2. Email Binding: Link a specific email address from a provider to a Bot.

Email Provider

Manage your email service connections from the Email Provider page in the sidebar.

Creating a Provider

  1. Navigate to the Email Provider page from the sidebar.
  2. Click Add Email Provider.
  3. Choose the provider type:
    • Mailgun: For high-volume delivery.
    • Generic SMTP: For traditional email servers.
  4. Fill in the required fields (e.g., domain, api_key, host, port, username, password).
  5. Click Create.

Bot Email Bindings

Configure your bot's email capabilities from the Email tab in the Bot Detail page.

Adding a Binding

  1. Click Add Binding.
  2. Select the Email Provider you created.
  3. Provide the Email Address to be associated with the bot.
  4. Set the bot's permissions:
    • Can Read: If enabled, the bot can check and process incoming emails.
    • Can Write: If enabled, the bot can compose and send outgoing emails.
    • Can Delete: If enabled, the bot can manage its own email inbox.
  5. Click Create.

Outbox and History

The Email tab also provides an Outbox showing an audit log of all emails sent by the bot:

  • To: The recipient's email address.
  • Subject: The email's subject line.
  • Status: Whether the email was sent successfully.
  • Sent At: The timestamp of the email delivery.

Bot Interaction

  • The bot can use its email permissions to send reports, respond to user inquiries, or trigger actions based on incoming mail.
  • Outgoing emails are tracked in the outbox for monitoring and troubleshooting.
  • The bot handles email in a structured way, allowing it to "converse" via email just as it does via chat.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/files.html b/getting-started/files.html index 10959b09..31ffac44 100644 --- a/getting-started/files.html +++ b/getting-started/files.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Bot Files Management

Every Memoh Bot has its own dedicated filesystem inside its isolated container. You can manage this filesystem directly from the Files tab in the Bot Detail page.


Operations

The FileManager component provides a familiar file-browsing experience with a toolbar, directory tree, and integrated editor.

Browsing and Navigation

  • Breadcrumb Navigation: Quickly move between parent directories.
  • Refresh: Reload the file list to see the latest changes (e.g., files created by the bot).
  • New Folder: Create a directory within the current path.

Managing Files

  • Upload: Select files from your local computer to transfer them into the bot's container.
  • Rename: Click on a file or folder and use the rename action to update its identifier.
  • Delete: Remove files or folders (with recursive support for directories).
  • Download: Retrieve a file from the bot's container back to your local machine.

Viewing and Editing

The integrated FileViewer allows you to interact with the bot's files without leaving the web UI.

Text Files

  • Read/Edit: Click a text file (e.g., .md, .js, .py, .toml) to open it in the built-in Monaco Editor.
  • Syntax Highlighting: Supports common programming languages and configuration formats.
  • Save: Modify the file's content and click Save to apply the changes to the bot's filesystem.

Images

  • Preview: Click an image file (e.g., .png, .jpg, .webp) to see a visual preview directly in the file manager.

Bot Interaction with Files

Remember that the bot itself can also perform these operations:

  • Use its Skills or MCP tools to read, write, and manage its own files.
  • The Files tab is your portal to monitor and manually intervene in the bot's workspace.

Published under AGPLv3

- +
Skip to content

Bot Files Management

Every Memoh Bot has its own dedicated filesystem inside its isolated container. You can manage this filesystem directly from the Files tab in the Bot Detail page.


Operations

The FileManager component provides a familiar file-browsing experience with a toolbar, directory tree, and integrated editor.

Browsing and Navigation

  • Breadcrumb Navigation: Quickly move between parent directories.
  • Refresh: Reload the file list to see the latest changes (e.g., files created by the bot).
  • New Folder: Create a directory within the current path.

Managing Files

  • Upload: Select files from your local computer to transfer them into the bot's container.
  • Rename: Click on a file or folder and use the rename action to update its identifier.
  • Delete: Remove files or folders (with recursive support for directories).
  • Download: Retrieve a file from the bot's container back to your local machine.

Viewing and Editing

The integrated FileViewer allows you to interact with the bot's files without leaving the web UI.

Text Files

  • Read/Edit: Click a text file (e.g., .md, .js, .py, .toml) to open it in the built-in Monaco Editor.
  • Syntax Highlighting: Supports common programming languages and configuration formats.
  • Save: Modify the file's content and click Save to apply the changes to the bot's filesystem.

Images

  • Preview: Click an image file (e.g., .png, .jpg, .webp) to see a visual preview directly in the file manager.

Bot Interaction with Files

Remember that the bot itself can also perform these operations:

  • Use its Skills or MCP tools to read, write, and manage its own files.
  • The Files tab is your portal to monitor and manually intervene in the bot's workspace.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/heartbeat.html b/getting-started/heartbeat.html index 21626621..83367bd0 100644 --- a/getting-started/heartbeat.html +++ b/getting-started/heartbeat.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Bot Heartbeat

The Heartbeat feature allows you to schedule periodic tasks for your Bot, enabling it to perform autonomous actions even when you aren't chatting with it.

Concept: Scheduled Autonomy

A Heartbeat is a recurring trigger that prompts the bot to "think" and execute its skills or tools at a set interval. This is useful for:

  • Periodic status checks
  • Automatic data collection
  • Cleaning up the filesystem
  • Sending scheduled notifications

Configuration

Configure the heartbeat from the Heartbeat tab in the Bot Detail page.

FieldDescription
EnabledToggle the heartbeat on or off.
IntervalHow often (in minutes) the heartbeat should trigger. The default is 30 minutes.
ModelThe LLM used to execute the heartbeat task. This can be different from the main chat model.

Logs and Monitoring

The Heartbeat tab provides a detailed audit log of every execution:

  • Status: Whether the heartbeat completed successfully (ok), encountered an issue (alert), or failed (error).
  • Time: When the heartbeat was triggered.
  • Duration: How long the bot took to process the task.
  • Result: A summary of the bot's action or response during that heartbeat.

Managing Logs

  • Filter by Status: Quickly find errors or alerts.
  • Refresh: Load the latest log entries.
  • Clear Logs: Remove old heartbeat records to keep the interface clean.
  • Load More: View older history.

Bot Interaction

  • During a heartbeat, the bot receives a special system prompt that it should perform its "routine" tasks.
  • The bot can use any of its assigned Skills or MCP tools during a heartbeat.
  • Heartbeat logs provide the "memory" of the bot's autonomous activities.

Published under AGPLv3

- +
Skip to content

Bot Heartbeat

The Heartbeat feature allows you to schedule periodic tasks for your Bot, enabling it to perform autonomous actions even when you aren't chatting with it.

Concept: Scheduled Autonomy

A Heartbeat is a recurring trigger that prompts the bot to "think" and execute its skills or tools at a set interval. This is useful for:

  • Periodic status checks
  • Automatic data collection
  • Cleaning up the filesystem
  • Sending scheduled notifications

Configuration

Configure the heartbeat from the Heartbeat tab in the Bot Detail page.

FieldDescription
EnabledToggle the heartbeat on or off.
IntervalHow often (in minutes) the heartbeat should trigger. The default is 30 minutes.
ModelThe LLM used to execute the heartbeat task. This can be different from the main chat model.

Logs and Monitoring

The Heartbeat tab provides a detailed audit log of every execution:

  • Status: Whether the heartbeat completed successfully (ok), encountered an issue (alert), or failed (error).
  • Time: When the heartbeat was triggered.
  • Duration: How long the bot took to process the task.
  • Result: A summary of the bot's action or response during that heartbeat.

Managing Logs

  • Filter by Status: Quickly find errors or alerts.
  • Refresh: Load the latest log entries.
  • Clear Logs: Remove old heartbeat records to keep the interface clean.
  • Load More: View older history.

Bot Interaction

  • During a heartbeat, the bot receives a special system prompt that it should perform its "routine" tasks.
  • The bot can use any of its assigned Skills or MCP tools during a heartbeat.
  • Heartbeat logs provide the "memory" of the bot's autonomous activities.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/mcp.html b/getting-started/mcp.html index a31c38ee..cba39f6d 100644 --- a/getting-started/mcp.html +++ b/getting-started/mcp.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

MCP Connections

Memoh fully supports the Model Context Protocol (MCP), allowing you to connect your Bot to external tool services and context providers.

Concept: Extending Bot Capabilities

MCP provides a standardized way for bots to access external data sources and tools. Each Bot can have its own independent set of MCP connections.

You can configure connections manually from the MCP tab, or start from a curated template in Supermarket and then review the prefilled draft in the bot editor.


Connection Types

Configure MCP connections from the MCP tab in the Bot Detail page.

1. Stdio (Local Process)

This type of connection executes a local command inside the bot's container and communicates via standard input/output.

FieldDescription
CommandThe executable to run (e.g., npx, python3).
ArgumentsA list of command-line arguments (e.g., -y, @modelcontextprotocol/server-filesystem, /opt/memoh/data).
EnvKey-value pairs for environment variables.
CWDWorking directory for the process.

2. Remote (HTTP/SSE)

This type of connection connects to a remote MCP server over the network.

FieldDescription
URLThe endpoint of the remote MCP server.
HeadersCustom HTTP headers (e.g., for authentication).
TransportChoose between http or sse (Server-Sent Events).

OAuth Authentication

Some MCP servers require OAuth-based authentication. Memoh supports the full MCP OAuth flow:

  1. Click the OAuth button on a connection that requires authentication.
  2. Memoh will discover the server's OAuth configuration automatically.
  3. Click Authorize to open the provider's authorization page.
  4. After granting access, you are redirected back to Memoh.
  5. The token is exchanged and stored securely for the connection.

You can also:

  • Check status — View the current OAuth token status.
  • Revoke — Remove the stored OAuth token.

Operations

  • Add Connection: Click Add, choose the type, and fill in the configuration.
  • Import JSON: Use the Import button to quickly add multiple connections from a standard mcpServers JSON config file.
  • Export: Export connection configurations to a JSON file for backup or sharing.
  • Toggle Active: Enable or disable specific connections without deleting them.
  • Search: Quickly find a connection by name or ID.
  • Batch Delete: Select multiple connections and delete them at once.

Tool Discovery

Once an MCP connection is active, Memoh automatically discovers the tools exposed by the server. You can:

  1. Click on a connection to view its details.
  2. The Tools section lists all available tools with their names and descriptions.
  3. The bot will use these tools automatically during conversations when relevant.

You can also use the Probe button to manually refresh the tool list from the server.


Bot Interaction

Once an MCP connection is active, the bot will automatically:

  • Discover the tools and resources exposed by the MCP server.
  • Use these tools to perform tasks requested by the user.
  • Include the context provided by the MCP server in its reasoning process.

Published under AGPLv3

- +
Skip to content

MCP Connections

Memoh fully supports the Model Context Protocol (MCP), allowing you to connect your Bot to external tool services and context providers.

Concept: Extending Bot Capabilities

MCP provides a standardized way for bots to access external data sources and tools. Each Bot can have its own independent set of MCP connections.

You can configure connections manually from the MCP tab, or start from a curated template in Supermarket and then review the prefilled draft in the bot editor.


Connection Types

Configure MCP connections from the MCP tab in the Bot Detail page.

1. Stdio (Local Process)

This type of connection executes a local command inside the bot's container and communicates via standard input/output.

FieldDescription
CommandThe executable to run (e.g., npx, python3).
ArgumentsA list of command-line arguments (e.g., -y, @modelcontextprotocol/server-filesystem, /opt/memoh/data).
EnvKey-value pairs for environment variables.
CWDWorking directory for the process.

2. Remote (HTTP/SSE)

This type of connection connects to a remote MCP server over the network.

FieldDescription
URLThe endpoint of the remote MCP server.
HeadersCustom HTTP headers (e.g., for authentication).
TransportChoose between http or sse (Server-Sent Events).

OAuth Authentication

Some MCP servers require OAuth-based authentication. Memoh supports the full MCP OAuth flow:

  1. Click the OAuth button on a connection that requires authentication.
  2. Memoh will discover the server's OAuth configuration automatically.
  3. Click Authorize to open the provider's authorization page.
  4. After granting access, you are redirected back to Memoh.
  5. The token is exchanged and stored securely for the connection.

You can also:

  • Check status — View the current OAuth token status.
  • Revoke — Remove the stored OAuth token.

Operations

  • Add Connection: Click Add, choose the type, and fill in the configuration.
  • Import JSON: Use the Import button to quickly add multiple connections from a standard mcpServers JSON config file.
  • Export: Export connection configurations to a JSON file for backup or sharing.
  • Toggle Active: Enable or disable specific connections without deleting them.
  • Search: Quickly find a connection by name or ID.
  • Batch Delete: Select multiple connections and delete them at once.

Tool Discovery

Once an MCP connection is active, Memoh automatically discovers the tools exposed by the server. You can:

  1. Click on a connection to view its details.
  2. The Tools section lists all available tools with their names and descriptions.
  3. The bot will use these tools automatically during conversations when relevant.

You can also use the Probe button to manually refresh the tool list from the server.


Bot Interaction

Once an MCP connection is active, the bot will automatically:

  • Discover the tools and resources exposed by the MCP server.
  • Use these tools to perform tasks requested by the user.
  • Include the context provided by the MCP server in its reasoning process.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/memory.html b/getting-started/memory.html index 659a896b..758a5edd 100644 --- a/getting-started/memory.html +++ b/getting-started/memory.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Bot Memory Management

Memoh's structured long-term memory system allows bots to remember information across multiple conversations, providing contextually relevant and personalized interactions.

Prerequisites

Before using the Memory tab, make sure your bot already has a Memory Provider configured.

  1. Create a provider from one of the Memory Providers (Built-in, Mem0, or OpenViking).
  2. Open your bot's General tab.
  3. Select the provider in the Memory Provider field.
  4. Click Save.

Without a memory provider, the bot will not have an active memory backend configuration.


Concept: Memory Retrieval

Memories are stored and retrieved through the assigned memory provider. Depending on the provider type and mode, retrieval may use file-based indexing, sparse vectors, dense embeddings, or an external API. When a user sends a message, Memoh finds the most relevant memories and includes them in the bot's runtime context.

This page is about long-term memory. It is separate from session context compaction, which reduces the prompt footprint of a single conversation session. See Context Compaction.


Operations

Manage your bot's memories from the Memory tab in the Bot Detail page.

1. Creating Memories

  • New Memory: Manually enter a memory's content in the provided textarea.
  • From Conversation: Select specific messages from the bot's conversation history to extract into memory.

2. Searching and Managing

  • Search: Filter memories by ID or text content.
  • Edit: Modify existing memory entries directly in the list.
  • Delete: Remove memories that are no longer needed.

Memory Compaction

Over time, long-term memories can accumulate and become redundant. The Compact action in the Memory tab rewrites the stored memory set itself.

This operation is provider-level memory maintenance. It is useful when you want to:

  • merge overlapping memories
  • remove stale or low-value entries
  • improve retrieval quality by reducing noise

Parameters:

  • Ratio — Compression ratio such as 0.8, 0.5, or 0.3. Lower values make compaction more aggressive.
  • Decay Days — Optionally restrict compaction to older memories only.

This is different from Context Compaction, which compresses the active prompt for one session rather than rewriting stored memories.


Rebuild

The Rebuild feature re-indexes all memories from scratch. This is useful when:

  • You have changed the memory provider's mode (e.g., switching from off to sparse).
  • The vector index has become inconsistent.
  • You want to re-process all memories with updated settings.

Click Rebuild in the Memory tab to start the process. You can monitor the rebuild status in real-time.


Status

The Memory tab shows the current status of the memory provider for this bot:

  • Connected — The memory backend is reachable and operational.
  • Error — There is an issue with the memory provider configuration or connectivity.

Use the status indicator to quickly verify that the memory system is working before troubleshooting other issues.


Usage Statistics

The Memory tab displays storage usage information:

  • Total Memories — The number of memory entries stored for this bot.
  • Index Status — Whether the vector index is up-to-date.

Memory vs Session Context

Memoh has two different "compaction" concepts:

ConceptScopeWhere to trigger itWhat it changes
Memory CompactionLong-term memory providerMemory tabRewrites stored memory entries
Context CompactionOne conversation sessionSession status panel or /compactSummarizes older session context for future model calls

If you are trying to reduce retrieval noise across many conversations, use Memory Compaction.

If you are trying to shorten the currently active conversation history, use Context Compaction.


Bot Interaction

  • The bot automatically searches and retrieves memories during chat.
  • The assigned Memory Provider controls the memory backend used by the bot.
  • Provider-specific settings (such as memory mode, embedding model, or API keys) are configured in the provider itself — see Memory Providers.
  • Memories provide the long-term knowledge that makes each bot unique to its owner.

Published under AGPLv3

- +
Skip to content

Bot Memory Management

Memoh's structured long-term memory system allows bots to remember information across multiple conversations, providing contextually relevant and personalized interactions.

Prerequisites

Before using the Memory tab, make sure your bot already has a Memory Provider configured.

  1. Create a provider from one of the Memory Providers (Built-in, Mem0, or OpenViking).
  2. Open your bot's General tab.
  3. Select the provider in the Memory Provider field.
  4. Click Save.

Without a memory provider, the bot will not have an active memory backend configuration.


Concept: Memory Retrieval

Memories are stored and retrieved through the assigned memory provider. Depending on the provider type and mode, retrieval may use file-based indexing, sparse vectors, dense embeddings, or an external API. When a user sends a message, Memoh finds the most relevant memories and includes them in the bot's runtime context.

This page is about long-term memory. It is separate from session context compaction, which reduces the prompt footprint of a single conversation session. See Context Compaction.


Operations

Manage your bot's memories from the Memory tab in the Bot Detail page.

1. Creating Memories

  • New Memory: Manually enter a memory's content in the provided textarea.
  • From Conversation: Select specific messages from the bot's conversation history to extract into memory.

2. Searching and Managing

  • Search: Filter memories by ID or text content.
  • Edit: Modify existing memory entries directly in the list.
  • Delete: Remove memories that are no longer needed.

Memory Compaction

Over time, long-term memories can accumulate and become redundant. The Compact action in the Memory tab rewrites the stored memory set itself.

This operation is provider-level memory maintenance. It is useful when you want to:

  • merge overlapping memories
  • remove stale or low-value entries
  • improve retrieval quality by reducing noise

Parameters:

  • Ratio — Compression ratio such as 0.8, 0.5, or 0.3. Lower values make compaction more aggressive.
  • Decay Days — Optionally restrict compaction to older memories only.

This is different from Context Compaction, which compresses the active prompt for one session rather than rewriting stored memories.


Rebuild

The Rebuild feature re-indexes all memories from scratch. This is useful when:

  • You have changed the memory provider's mode (e.g., switching from off to sparse).
  • The vector index has become inconsistent.
  • You want to re-process all memories with updated settings.

Click Rebuild in the Memory tab to start the process. You can monitor the rebuild status in real-time.


Status

The Memory tab shows the current status of the memory provider for this bot:

  • Connected — The memory backend is reachable and operational.
  • Error — There is an issue with the memory provider configuration or connectivity.

Use the status indicator to quickly verify that the memory system is working before troubleshooting other issues.


Usage Statistics

The Memory tab displays storage usage information:

  • Total Memories — The number of memory entries stored for this bot.
  • Index Status — Whether the vector index is up-to-date.

Memory vs Session Context

Memoh has two different "compaction" concepts:

ConceptScopeWhere to trigger itWhat it changes
Memory CompactionLong-term memory providerMemory tabRewrites stored memory entries
Context CompactionOne conversation sessionSession status panel or /compactSummarizes older session context for future model calls

If you are trying to reduce retrieval noise across many conversations, use Memory Compaction.

If you are trying to shorten the currently active conversation history, use Context Compaction.


Bot Interaction

  • The bot automatically searches and retrieves memories during chat.
  • The assigned Memory Provider controls the memory backend used by the bot.
  • Provider-specific settings (such as memory mode, embedding model, or API keys) are configured in the provider itself — see Memory Providers.
  • Memories provide the long-term knowledge that makes each bot unique to its owner.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/provider-and-model.html b/getting-started/provider-and-model.html index c0ba4dcb..780f6434 100644 --- a/getting-started/provider-and-model.html +++ b/getting-started/provider-and-model.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Providers And Models

To use Memoh effectively, you usually configure:

  • one or more providers that define how Memoh talks to upstream APIs
  • one or more models under those providers
  • optional speech providers if you want text-to-speech

The Web UI manages chat and embedding providers/models from the Models page. Speech models are managed separately from TTS Providers.


Provider Basics

A provider stores connection information for one upstream service, such as:

  • the API protocol (client_type)
  • the base URL if the protocol needs one
  • credentials such as an API key or OAuth token

Typical examples include OpenAI-compatible endpoints, Anthropic, Google Gemini, OpenAI Codex, and GitHub Copilot.

Creating A Provider

  1. Open the Models page from the settings sidebar.
  2. Click Add Provider.
  3. Fill in the provider form.
  4. Save the provider.

Common fields:

FieldDescription
NameFriendly display name, such as OpenAI or Copilot.
Client TypeAPI protocol used by this provider.
Base URLRoot API endpoint, when required by the selected client type.
API KeyToken-based authentication, when the client type uses direct credentials.

Client Types

Memoh currently supports these client types:

Client TypeTypical Use
openai-responsesOpenAI Responses API style providers
openai-completionsOpenAI Chat Completions compatible providers
anthropic-messagesAnthropic Messages API
google-generative-aiGoogle Gemini API
openai-codexOpenAI Codex / ChatGPT-backed coding workflow with OAuth
github-copilotGitHub Copilot with device OAuth
edge-speechSpeech-only provider type for Microsoft Edge Read Aloud

edge-speech is for speech synthesis, not for chat. Configure it through TTS Providers, not as your main chat provider.


OAuth-Based Providers

Most provider types use a normal API key. Two notable exceptions are openai-codex and github-copilot.

OpenAI Codex

  • Uses the openai-codex client type
  • Authenticates through the provider form's OAuth flow instead of a normal API key workflow
  • The bundled preset points at https://chatgpt.com/backend-api

This is a good fit when you want Codex-style model access for coding-oriented workflows.

GitHub Copilot

  • Uses the github-copilot client type
  • Uses device authorization
  • The provider form shows a verification URL and a user code while authorization is pending
  • After authorization completes, the provider stores the linked GitHub account token

GitHub Copilot is especially useful if you already have access to Copilot-backed chat and embedding models and want to reuse that access from Memoh.


Importing Models

After creating a provider, you can import or add models under it.

Typical flow:

  1. Select the provider.
  2. Click Import Models if the provider can expose a model catalog.
  3. Choose the models you want to save into Memoh.

You can also add models manually when you already know the upstream model ID.


Model Types

Memoh distinguishes three model types:

TypePurpose
chatMain LLMs for conversation, tool use, reasoning, and image generation
embeddingVector models for memory and retrieval
speechText-to-speech models used by TTS providers

Important distinction:

  • The Models page is primarily where you manage chat and embedding models.
  • speech models are exposed through TTS Providers.

Chat Model Configuration

When adding a chat model, the most important fields are:

FieldDescription
Model IDExact upstream identifier, such as gpt-4o or claude-sonnet-4.6.
NameFriendly display name shown in the UI.
CompatibilitiesFeature flags such as vision, tool-call, image-output, and reasoning.
Context WindowApproximate maximum context budget for the model.

Compatibilities

Memoh uses compatibility flags to decide which features a model can safely power:

CompatibilityMeaning
visionModel can accept images as input
tool-callModel can call tools
image-outputModel can generate images
reasoningModel exposes explicit reasoning modes / effort levels

If a model supports reasoning, it may also declare reasoning_efforts such as none, low, medium, high, or xhigh.

context_window

context_window is important because Memoh uses it to:

  • calculate session context usage in the Web UI
  • power /status output
  • decide when a session is approaching its prompt limit
  • guide Context Compaction

If you leave context_window empty, the model can still be used, but Memoh cannot show an exact usage percentage for that model.

Image Generation Models

Memoh now lets you assign an Image Generation Model to a bot. This model must be a chat model whose compatibilities include image-output.

That keeps image generation separate from your default chat model when needed.


Embedding Models

Embedding models are used for semantic indexing and retrieval.

The required field is:

FieldDescription
DimensionsVector size for the embedding output, such as 1536.

Use embedding models with memory providers or any feature that relies on vector search.


Speech Models

Speech models are managed from TTS Providers, not from the standard chat provider flow.

Current built-in example:

  • Edge TTS via edge-speech

This separation matters because speech models have voice, format, speed, and pitch settings that do not apply to chat or embedding models.


For most bots, think in terms of three parallel model roles:

  • Chat model for normal conversations
  • Embedding model for memory search
  • Speech / image models for side capabilities such as TTS and image generation

You do not need to force one model to do everything.


Next Steps

  • To assign chat, image, browser, memory, and TTS settings to a bot, see Bot Management.
  • To configure speech providers and speech models, see TTS Providers.

Published under AGPLv3

- +
Skip to content

Providers And Models

To use Memoh effectively, you usually configure:

  • one or more providers that define how Memoh talks to upstream APIs
  • one or more models under those providers
  • optional speech providers if you want text-to-speech

The Web UI manages chat and embedding providers/models from the Models page. Speech models are managed separately from TTS Providers.


Provider Basics

A provider stores connection information for one upstream service, such as:

  • the API protocol (client_type)
  • the base URL if the protocol needs one
  • credentials such as an API key or OAuth token

Typical examples include OpenAI-compatible endpoints, Anthropic, Google Gemini, OpenAI Codex, and GitHub Copilot.

Creating A Provider

  1. Open the Models page from the settings sidebar.
  2. Click Add Provider.
  3. Fill in the provider form.
  4. Save the provider.

Common fields:

FieldDescription
NameFriendly display name, such as OpenAI or Copilot.
Client TypeAPI protocol used by this provider.
Base URLRoot API endpoint, when required by the selected client type.
API KeyToken-based authentication, when the client type uses direct credentials.

Client Types

Memoh currently supports these client types:

Client TypeTypical Use
openai-responsesOpenAI Responses API style providers
openai-completionsOpenAI Chat Completions compatible providers
anthropic-messagesAnthropic Messages API
google-generative-aiGoogle Gemini API
openai-codexOpenAI Codex / ChatGPT-backed coding workflow with OAuth
github-copilotGitHub Copilot with device OAuth
edge-speechSpeech-only provider type for Microsoft Edge Read Aloud

edge-speech is for speech synthesis, not for chat. Configure it through TTS Providers, not as your main chat provider.


OAuth-Based Providers

Most provider types use a normal API key. Two notable exceptions are openai-codex and github-copilot.

OpenAI Codex

  • Uses the openai-codex client type
  • Authenticates through the provider form's OAuth flow instead of a normal API key workflow
  • The bundled preset points at https://chatgpt.com/backend-api

This is a good fit when you want Codex-style model access for coding-oriented workflows.

GitHub Copilot

  • Uses the github-copilot client type
  • Uses device authorization
  • The provider form shows a verification URL and a user code while authorization is pending
  • After authorization completes, the provider stores the linked GitHub account token

GitHub Copilot is especially useful if you already have access to Copilot-backed chat and embedding models and want to reuse that access from Memoh.


Importing Models

After creating a provider, you can import or add models under it.

Typical flow:

  1. Select the provider.
  2. Click Import Models if the provider can expose a model catalog.
  3. Choose the models you want to save into Memoh.

You can also add models manually when you already know the upstream model ID.


Model Types

Memoh distinguishes three model types:

TypePurpose
chatMain LLMs for conversation, tool use, reasoning, and image generation
embeddingVector models for memory and retrieval
speechText-to-speech models used by TTS providers

Important distinction:

  • The Models page is primarily where you manage chat and embedding models.
  • speech models are exposed through TTS Providers.

Chat Model Configuration

When adding a chat model, the most important fields are:

FieldDescription
Model IDExact upstream identifier, such as gpt-4o or claude-sonnet-4.6.
NameFriendly display name shown in the UI.
CompatibilitiesFeature flags such as vision, tool-call, image-output, and reasoning.
Context WindowApproximate maximum context budget for the model.

Compatibilities

Memoh uses compatibility flags to decide which features a model can safely power:

CompatibilityMeaning
visionModel can accept images as input
tool-callModel can call tools
image-outputModel can generate images
reasoningModel exposes explicit reasoning modes / effort levels

If a model supports reasoning, it may also declare reasoning_efforts such as none, low, medium, high, or xhigh.

context_window

context_window is important because Memoh uses it to:

  • calculate session context usage in the Web UI
  • power /status output
  • decide when a session is approaching its prompt limit
  • guide Context Compaction

If you leave context_window empty, the model can still be used, but Memoh cannot show an exact usage percentage for that model.

Image Generation Models

Memoh now lets you assign an Image Generation Model to a bot. This model must be a chat model whose compatibilities include image-output.

That keeps image generation separate from your default chat model when needed.


Embedding Models

Embedding models are used for semantic indexing and retrieval.

The required field is:

FieldDescription
DimensionsVector size for the embedding output, such as 1536.

Use embedding models with memory providers or any feature that relies on vector search.


Speech Models

Speech models are managed from TTS Providers, not from the standard chat provider flow.

Current built-in example:

  • Edge TTS via edge-speech

This separation matters because speech models have voice, format, speed, and pitch settings that do not apply to chat or embedding models.


For most bots, think in terms of three parallel model roles:

  • Chat model for normal conversations
  • Embedding model for memory search
  • Speech / image models for side capabilities such as TTS and image generation

You do not need to force one model to do everything.


Next Steps

  • To assign chat, image, browser, memory, and TTS settings to a bot, see Bot Management.
  • To configure speech providers and speech models, see TTS Providers.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/schedule.html b/getting-started/schedule.html index 380c8f20..b775ddd5 100644 --- a/getting-started/schedule.html +++ b/getting-started/schedule.html @@ -9,9 +9,9 @@ - + - + @@ -19,7 +19,7 @@ -
Skip to content

Scheduled Tasks

Scheduled Tasks allow you to automate recurring bot actions using cron expressions. This is useful for sending periodic reports, checking external data, performing maintenance, or triggering any routine task without manual intervention.

Concept: Cron-Based Automation

A Schedule is a cron-triggered rule bound to a specific bot. When a schedule fires, it sends a command to the agent, which executes it using its available tools, skills, and context. The bot can then deliver results to any connected channel.


Schedule Fields

FieldDescription
NameA display name for the task (e.g., "Morning News Summary").
DescriptionA brief explanation of what the task does.
PatternA cron expression that defines when the task runs (e.g., 0 9 * * * for daily at 9:00 AM).
CommandThe natural-language instruction sent to the agent when the schedule triggers (e.g., "Summarize today's top tech news and send it to the Telegram channel").
EnabledWhether the schedule is currently active.
Max CallsOptional limit on the total number of executions. Leave empty for unlimited.
Current CallsThe number of times this schedule has already fired.

Cron Pattern Reference

The pattern field uses standard cron syntax with five fields. It is evaluated in the server's configured timezone. By default, Memoh uses UTC, and you can change it with the top-level timezone config value.

┌───────────── minute (0–59)
+    
Skip to content

Scheduled Tasks

Scheduled Tasks allow you to automate recurring bot actions using cron expressions. This is useful for sending periodic reports, checking external data, performing maintenance, or triggering any routine task without manual intervention.

Concept: Cron-Based Automation

A Schedule is a cron-triggered rule bound to a specific bot. When a schedule fires, it sends a command to the agent, which executes it using its available tools, skills, and context. The bot can then deliver results to any connected channel.


Schedule Fields

FieldDescription
NameA display name for the task (e.g., "Morning News Summary").
DescriptionA brief explanation of what the task does.
PatternA cron expression that defines when the task runs (e.g., 0 9 * * * for daily at 9:00 AM).
CommandThe natural-language instruction sent to the agent when the schedule triggers (e.g., "Summarize today's top tech news and send it to the Telegram channel").
EnabledWhether the schedule is currently active.
Max CallsOptional limit on the total number of executions. Leave empty for unlimited.
Current CallsThe number of times this schedule has already fired.

Cron Pattern Reference

The pattern field uses standard cron syntax with five fields. It is evaluated in the server's configured timezone. By default, Memoh uses UTC, and you can change it with the top-level timezone config value.

┌───────────── minute (0–59)
 │ ┌───────────── hour (0–23)
 │ │ ┌───────────── day of month (1–31)
 │ │ │ ┌───────────── month (1–12)
@@ -33,7 +33,7 @@
   "enabled": true,
   "max_calls": null
 }

Execution Flow

When a schedule fires:

  1. The cron service triggers the schedule.
  2. The current_calls counter is incremented.
  3. If max_calls is set and reached, the schedule is automatically disabled.
  4. The agent receives the command along with the schedule context.
  5. The agent executes the command using its tools (e.g., web search, file read, send message).
  6. Results can be delivered to any connected channel.

Schedule vs. Heartbeat

FeatureScheduleHeartbeat
TriggerCron expression (flexible timing)Fixed interval (minutes)
CommandCustom natural-language instructionGeneric "routine check" prompt
Max CallsOptional execution limitUnlimited
Use CaseSpecific recurring tasksPeriodic autonomous thinking

Both features complement each other: use Heartbeat for general-purpose periodic activity and Schedule for precise, task-oriented automation.

Published under AGPLv3

- + \ No newline at end of file diff --git a/getting-started/search-provider.html b/getting-started/search-provider.html index a41df527..3933ba78 100644 --- a/getting-started/search-provider.html +++ b/getting-started/search-provider.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Search Providers

Memoh allows you to connect your Bot to various search engines, enabling it to browse the web for real-time information and external knowledge.

Concept: Real-Time Knowledge

A Search Provider is a connection to a specific search API (like Brave, Google, or Bing). Once configured, it becomes a tool that your Bot can use during conversation.


Supported Search Engines

Configure your search engines from the Search Provider page in the sidebar.

Supported EnginesNotes
BraveHighly recommended for privacy and performance.
BingPowerful global search capability.
GoogleComprehensive web search.
TavilyDesigned specifically for AI-powered research.
SearxNGConnect to your own self-hosted search aggregator.
DuckDuckGoPrivacy-focused search.
Other ProvidersSogou, Serper, Jina, Exa, Bocha, Yandex.

Configuration Flow

1. Adding a Search Provider

  1. Navigate to the Search Provider page from the sidebar.
  2. Click Add Search Provider.
  3. Fill in the following:
    • Name: A friendly name (e.g., "My Brave Search").
    • API Key: Your credentials for the specific search engine API.
    • Other Parameters: Depending on the engine, you may need to specify additional settings (e.g., base_url for SearxNG).

2. Managing Providers

  • Edit: Select a provider from the sidebar and update its configuration in the form on the right.
  • Delete: Use the Delete Provider button in the provider settings form.

Assigning a Search Provider to a Bot

  1. Navigate to the Bots page and select your bot.
  2. Go to the General tab.
  3. Find the Search Provider dropdown and select the provider you created.
  4. Click Save.

Bot Interaction

  • When a user's question requires real-time information, the bot will automatically call its assigned Search Provider.
  • The bot will process the search results to provide a grounded and accurate response.
  • Multiple search results can be synthesized to provide a comprehensive answer.

Published under AGPLv3

- +
Skip to content

Search Providers

Memoh allows you to connect your Bot to various search engines, enabling it to browse the web for real-time information and external knowledge.

Concept: Real-Time Knowledge

A Search Provider is a connection to a specific search API (like Brave, Google, or Bing). Once configured, it becomes a tool that your Bot can use during conversation.


Supported Search Engines

Configure your search engines from the Search Provider page in the sidebar.

Supported EnginesNotes
BraveHighly recommended for privacy and performance.
BingPowerful global search capability.
GoogleComprehensive web search.
TavilyDesigned specifically for AI-powered research.
SearxNGConnect to your own self-hosted search aggregator.
DuckDuckGoPrivacy-focused search.
Other ProvidersSogou, Serper, Jina, Exa, Bocha, Yandex.

Configuration Flow

1. Adding a Search Provider

  1. Navigate to the Search Provider page from the sidebar.
  2. Click Add Search Provider.
  3. Fill in the following:
    • Name: A friendly name (e.g., "My Brave Search").
    • API Key: Your credentials for the specific search engine API.
    • Other Parameters: Depending on the engine, you may need to specify additional settings (e.g., base_url for SearxNG).

2. Managing Providers

  • Edit: Select a provider from the sidebar and update its configuration in the form on the right.
  • Delete: Use the Delete Provider button in the provider settings form.

Assigning a Search Provider to a Bot

  1. Navigate to the Bots page and select your bot.
  2. Go to the General tab.
  3. Find the Search Provider dropdown and select the provider you created.
  4. Click Save.

Bot Interaction

  • When a user's question requires real-time information, the bot will automatically call its assigned Search Provider.
  • The bot will process the search results to provide a grounded and accurate response.
  • Multiple search results can be synthesized to provide a comprehensive answer.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/sessions.html b/getting-started/sessions.html index 7d19a90a..dd7da397 100644 --- a/getting-started/sessions.html +++ b/getting-started/sessions.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Sessions

A Session is an independent conversation thread between a user and a bot. Each session maintains its own context window and message history, allowing the bot to focus on a specific topic or task without interference from other conversations.


Concept: Conversation Isolation

When you chat with a bot, your messages are grouped into a session. The bot uses the session's history to maintain context. Starting a new session resets this context, giving you a fresh conversation without losing the previous one.

Sessions are scoped per bot — each bot manages its own set of sessions independently.


Session Types

Memoh uses five session types to separate different kinds of bot activity:

TypeDescription
ChatStandard user-initiated conversations. This is the default session type when chatting with a bot.
DiscussObservation-oriented conversation mode. The bot may stay silent by default and only speaks when it decides to send a real reply into the conversation.
HeartbeatAutomatically created when a bot's heartbeat triggers. Contains the bot's periodic autonomous activity.
ScheduleCreated when a scheduled task fires. Contains the bot's execution of a cron-triggered command.
SubagentCreated when the bot delegates a task to a subagent. Contains the subagent's independent work context.

Only Chat and Discuss sessions are directly created from user conversation routes. The other session types are system-managed and appear as read-only records in the session list.

Chat vs Discuss

chat and discuss are the two session types you are most likely to see in normal conversation threads.

Chat means:

  • the conversation behaves like a normal direct assistant exchange
  • users expect a visible reply when they send a prompt
  • this is the default in the Web UI and in direct-message style conversations

Discuss means:

  • the bot is observing an ongoing conversation, often in a group
  • the model's direct text output is treated as internal monologue
  • the bot only speaks to the conversation when it explicitly issues a send action
  • staying silent is valid and often desirable

In practice, discuss is what makes Memoh feel less like a synchronous chatbot and more like a participant that can decide whether to join in.


Starting a New Session with /new

The /new slash command creates a fresh session on the current conversation route, resetting the active session context without deleting old history.

Supported forms:

  • /new — create a new session using the default session type for the current context
  • /new chat — force a normal chat session
  • /new discuss — force a discuss session

Default routing behavior:

  • Web UI local chat defaults to chat
  • private conversations default to chat
  • group conversations on channel adapters default to discuss

/new discuss is not supported from the built-in Web UI local channel. Use a real channel adapter such as Telegram, Discord, or Misskey if you want to explicitly create discuss sessions.

This works across supported channels:

In External Channels (Telegram, Discord, Feishu, etc.)

Send /new, /new chat, or /new discuss as a message to the bot. The bot will:

  1. Create a new session of the requested or inferred type.
  2. Route all subsequent messages from you to this new session.
  3. The previous session's history is preserved but no longer active.

This is especially useful when:

  • You want to change topics without the bot referencing old context.
  • The conversation has become too long and you want a clean start.
  • You are switching between different tasks.

In the Web UI

The Web UI provides a session sidebar where you can:

  • Click the New Session button to create a fresh chat session.
  • Switch between existing sessions by clicking on them.
  • Search sessions by content.
  • Filter sessions by type (chat, discuss, heartbeat, schedule, subagent).
  • Rename or delete sessions.

Managing Sessions

Viewing Sessions

In the Web UI, the session sidebar lists all sessions for the currently selected bot. Each entry shows:

  • Title — The session name (auto-generated or user-defined).
  • Type — The session type icon.
  • Last Activity — When the session was last active.

For everyday chat use, chat and discuss sessions are intentionally shown together because they both represent user-facing conversation threads.

Renaming Sessions

Click on a session title to rename it. This helps organize conversations by topic.

Deleting Sessions

Remove sessions you no longer need. Deleting a session removes its message history permanently.


Session Status Panel

The session status panel provides a compact runtime summary for the active session. It is the same information surfaced by /status.

Key fields include:

  • Messages — total message count in the session
  • Context Usage — current used tokens relative to the selected model's context_window
  • Cache Hit Rate — how much of the input came from cache reads
  • Cache Read / Cache Write — token counts associated with caching
  • Skills — effective skills used by the session

The panel also exposes Compact Now, which triggers immediate Context Compaction for the current session.


How Sessions Relate to Other Features

  • Discuss sessions are optimized for channels where the bot should observe and selectively speak, especially in group conversations.
  • Heartbeat sessions are created on each heartbeat trigger. You can view what the bot did during its autonomous activity by opening the corresponding heartbeat session.
  • Schedule sessions are created when a scheduled task runs. Check these to see the results of cron-triggered commands.
  • Subagent sessions track delegated tasks. They show the independent work context of each subagent invocation.
  • Memory is shared across all sessions for a bot — memories extracted from one session are available in all others.

Published under AGPLv3

- +
Skip to content

Sessions

A Session is an independent conversation thread between a user and a bot. Each session maintains its own context window and message history, allowing the bot to focus on a specific topic or task without interference from other conversations.


Concept: Conversation Isolation

When you chat with a bot, your messages are grouped into a session. The bot uses the session's history to maintain context. Starting a new session resets this context, giving you a fresh conversation without losing the previous one.

Sessions are scoped per bot — each bot manages its own set of sessions independently.


Session Types

Memoh uses five session types to separate different kinds of bot activity:

TypeDescription
ChatStandard user-initiated conversations. This is the default session type when chatting with a bot.
DiscussObservation-oriented conversation mode. The bot may stay silent by default and only speaks when it decides to send a real reply into the conversation.
HeartbeatAutomatically created when a bot's heartbeat triggers. Contains the bot's periodic autonomous activity.
ScheduleCreated when a scheduled task fires. Contains the bot's execution of a cron-triggered command.
SubagentCreated when the bot delegates a task to a subagent. Contains the subagent's independent work context.

Only Chat and Discuss sessions are directly created from user conversation routes. The other session types are system-managed and appear as read-only records in the session list.

Chat vs Discuss

chat and discuss are the two session types you are most likely to see in normal conversation threads.

Chat means:

  • the conversation behaves like a normal direct assistant exchange
  • users expect a visible reply when they send a prompt
  • this is the default in the Web UI and in direct-message style conversations

Discuss means:

  • the bot is observing an ongoing conversation, often in a group
  • the model's direct text output is treated as internal monologue
  • the bot only speaks to the conversation when it explicitly issues a send action
  • staying silent is valid and often desirable

In practice, discuss is what makes Memoh feel less like a synchronous chatbot and more like a participant that can decide whether to join in.


Starting a New Session with /new

The /new slash command creates a fresh session on the current conversation route, resetting the active session context without deleting old history.

Supported forms:

  • /new — create a new session using the default session type for the current context
  • /new chat — force a normal chat session
  • /new discuss — force a discuss session

Default routing behavior:

  • Web UI local chat defaults to chat
  • private conversations default to chat
  • group conversations on channel adapters default to discuss

/new discuss is not supported from the built-in Web UI local channel. Use a real channel adapter such as Telegram, Discord, or Misskey if you want to explicitly create discuss sessions.

This works across supported channels:

In External Channels (Telegram, Discord, Feishu, etc.)

Send /new, /new chat, or /new discuss as a message to the bot. The bot will:

  1. Create a new session of the requested or inferred type.
  2. Route all subsequent messages from you to this new session.
  3. The previous session's history is preserved but no longer active.

This is especially useful when:

  • You want to change topics without the bot referencing old context.
  • The conversation has become too long and you want a clean start.
  • You are switching between different tasks.

In the Web UI

The Web UI provides a session sidebar where you can:

  • Click the New Session button to create a fresh chat session.
  • Switch between existing sessions by clicking on them.
  • Search sessions by content.
  • Filter sessions by type (chat, discuss, heartbeat, schedule, subagent).
  • Rename or delete sessions.

Managing Sessions

Viewing Sessions

In the Web UI, the session sidebar lists all sessions for the currently selected bot. Each entry shows:

  • Title — The session name (auto-generated or user-defined).
  • Type — The session type icon.
  • Last Activity — When the session was last active.

For everyday chat use, chat and discuss sessions are intentionally shown together because they both represent user-facing conversation threads.

Renaming Sessions

Click on a session title to rename it. This helps organize conversations by topic.

Deleting Sessions

Remove sessions you no longer need. Deleting a session removes its message history permanently.


Session Status Panel

The session status panel provides a compact runtime summary for the active session. It is the same information surfaced by /status.

Key fields include:

  • Messages — total message count in the session
  • Context Usage — current used tokens relative to the selected model's context_window
  • Cache Hit Rate — how much of the input came from cache reads
  • Cache Read / Cache Write — token counts associated with caching
  • Skills — effective skills used by the session

The panel also exposes Compact Now, which triggers immediate Context Compaction for the current session.


How Sessions Relate to Other Features

  • Discuss sessions are optimized for channels where the bot should observe and selectively speak, especially in group conversations.
  • Heartbeat sessions are created on each heartbeat trigger. You can view what the bot did during its autonomous activity by opening the corresponding heartbeat session.
  • Schedule sessions are created when a scheduled task runs. Check these to see the results of cron-triggered commands.
  • Subagent sessions track delegated tasks. They show the independent work context of each subagent invocation.
  • Memory is shared across all sessions for a bot — memories extracted from one session are available in all others.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/skills.html b/getting-started/skills.html index b2c7296c..82d211f4 100644 --- a/getting-started/skills.html +++ b/getting-started/skills.html @@ -9,9 +9,9 @@ - + - + @@ -19,7 +19,7 @@ -
Skip to content

Bot Skills

Skills are reusable prompt modules that extend a bot's behavior, style, and tool-usage guidance. You manage them from the bot's Skills tab, and you can either write them yourself or install them from Supermarket.


What A Skill Looks Like

A skill is a Markdown file named SKILL.md with YAML frontmatter. At minimum, give it a stable name and a short description.

yaml
---
+    
Skip to content

Bot Skills

Skills are reusable prompt modules that extend a bot's behavior, style, and tool-usage guidance. You manage them from the bot's Skills tab, and you can either write them yourself or install them from Supermarket.


What A Skill Looks Like

A skill is a Markdown file named SKILL.md with YAML frontmatter. At minimum, give it a stable name and a short description.

yaml
---
 name: coder-skill
 description: Enables advanced coding workflows and tool usage.
 ---
@@ -27,7 +27,7 @@
 # Coder Skill
 
 You write clear code, explain trade-offs, and use file or command tools when they help complete the task.

Practical rules:

  • Use a simple ASCII skill name such as coder-skill, research, or docs-helper.
  • Avoid spaces in the name; Memoh uses it as the skill directory name.
  • The Markdown body is the actual instruction content injected into the bot runtime.

Where Skills Come From

Memoh distinguishes between managed skills and discovered skills:

  • Managed skills are the ones you create, edit, or install through Memoh. They live under /data/skills/<name>/SKILL.md.
  • Discovered skills are found from compatibility locations inside the bot environment, such as legacy skill directories from imported images or older setups.

Memoh scans these container-internal roots in order:

TypeRoot
Managed/data/skills/
Legacy discovered/data/.skills/
Compatibility discovered/data/.agents/skills/
Compatibility discovered/root/.agents/skills/

Within each root, Memoh looks for SKILL.md either directly under the root or inside a named subdirectory such as /data/skills/coder-skill/SKILL.md.

This matters because the same skill name can appear from multiple sources. Memoh resolves those duplicates into states.


Skill States

Each listed skill source has one of these states:

StateMeaning
effectiveThis is the version currently active for that skill name
shadowedAnother source with the same skill name takes precedence
disabledThis specific source has been disabled and will not be used

The important mental model is: the skill name is the identity. If Memoh finds multiple coder-skill sources, only one can be effective.

Typical Examples

  • A skill you just created in Memoh is usually managed + effective.
  • A legacy skill can show up as effective until you create or adopt a managed skill with the same name.
  • After you adopt a discovered skill into the managed directory, the managed copy becomes effective and the old source usually becomes shadowed.
  • If you disable the effective source, another source with the same name may become effective automatically.

Managing Skills In The UI

Open a bot, then go to Skills.

Add Skill

  1. Click Add Skill.
  2. Fill in the raw Markdown in the editor.
  3. Save it.

Memoh writes the file into its managed skills directory.

Edit Skill

  • Use Edit on a card to update the raw SKILL.md content.
  • Editing is most useful for managed skills you own directly in Memoh.

Delete Skill

  • Delete removes the managed skill directory for that skill name.
  • Deleting a managed skill can expose a discovered fallback source with the same name, making that fallback become effective.

Disable / Enable

  • Disable turns off one specific skill source without deleting it.
  • Enable re-enables a previously disabled source.

Use this when you want to test a fallback or temporarily remove a skill from the prompt without losing its content.

Adopt

Adopt copies a discovered skill into Memoh's managed skills directory so you can own and edit it from the UI.

Use adopt when:

  • a skill came from a legacy or compatibility source
  • you want that skill to become part of your Memoh-managed configuration
  • you want to edit it safely in the UI later

Adopt is not available once a managed skill with the same name already exists.


Effective Skills At Runtime

Only effective skills are loaded into the bot runtime.

That means:

  • shadowed skills are visible for inspection, but not used
  • disabled skills are ignored
  • the active prompt only sees the current effective set

In active sessions, the Session Status Panel can also show which skills were used during that session.


Supermarket And Imported Skills

Two common ways skills appear without being typed manually:

  • Supermarket install: Memoh downloads the selected skill into the managed skills directory, so it behaves like a normal managed skill.
  • Imported / legacy environment: Memoh discovers existing skills from compatibility paths and shows them as discovered sources.

If a discovered skill is useful but you want to fully manage it in Memoh, adopt it.


  1. Start with a small number of focused skills.
  2. Prefer clear names and short descriptions.
  3. Use Disable before Delete if you are unsure.
  4. Use Adopt for legacy skills you plan to keep.
  5. Install reusable skills from Supermarket instead of copy-pasting them repeatedly.

Published under AGPLv3

- + \ No newline at end of file diff --git a/getting-started/slash-commands.html b/getting-started/slash-commands.html index 3685cd23..7bc9b7b6 100644 --- a/getting-started/slash-commands.html +++ b/getting-started/slash-commands.html @@ -9,9 +9,9 @@ - + - + @@ -19,7 +19,7 @@ -
Skip to content

Slash Commands

Memoh bots support slash commands that are intercepted before the LLM runs. They are intended for fast inspection and control tasks such as viewing settings, switching providers, checking session status, or creating a fresh session.

Slash commands work in channel adapters and in the built-in Web UI chat. They do not consume model tokens just to parse the command itself.


Command Model

Most commands follow a resource-group pattern:

text
/resource [action] [arguments...]

Examples:

text
/schedule list
+    
Skip to content

Slash Commands

Memoh bots support slash commands that are intercepted before the LLM runs. They are intended for fast inspection and control tasks such as viewing settings, switching providers, checking session status, or creating a fresh session.

Slash commands work in channel adapters and in the built-in Web UI chat. They do not consume model tokens just to parse the command itself.


Command Model

Most commands follow a resource-group pattern:

text
/resource [action] [arguments...]

Examples:

text
/schedule list
 /model current
 /schedule create morning-news "0 9 * * *" "Send a daily summary"

Key ideas:

  • resource is the command group, such as schedule, model, or status.
  • action is the specific operation, such as list, get, set, or latest.
  • arguments are positional values after the action. Use quotes when a value contains spaces.
  • Some groups have a default action, so /settings is equivalent to /settings get, and /status is equivalent to /status show.

Two commands are top-level instead of resource groups:

  • /new — create a new session for the current conversation route
  • /stop — abort the currently running generation for the current conversation

Built-in Help

The slash system has layered help built into it:

CommandMeaning
/helpShow the top-level command list
/help <group>Show actions inside one group
/help <group> <action>Show detailed usage for one action

Examples:

text
/help
 /help model
@@ -32,7 +32,7 @@
 /schedule disable morning-news

/skill

Lists the currently available bot skills.

Actions:

ActionUsage
list/skill or /skill list

/fs

Browses the bot container filesystem.

Actions:

ActionUsage
list/fs list [path]
read/fs read <path>

Examples:

text
/fs list /
 /fs list /home
 /fs read /home/bot/IDENTITY.md

Read output is truncated when the file is very large.


Context Compaction Command

/compact

Triggers immediate session context compaction for the current session. This is different from memory compaction:

  • context compaction reduces the active prompt/history footprint of one session
  • memory compaction rewrites long-term memory entries in the memory provider

Actions:

ActionUsage
run/compact or /compact run

Use this when the current conversation has grown long and you want Memoh to summarize older turns before continuing. See Context Compaction.

Published under AGPLv3

- + \ No newline at end of file diff --git a/getting-started/supermarket.html b/getting-started/supermarket.html index f299bb0b..e7515d84 100644 --- a/getting-started/supermarket.html +++ b/getting-started/supermarket.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Supermarket

Supermarket is Memoh's built-in catalog for skills and MCP templates.


Install A Skill

  1. Open Supermarket in the Web UI.
  2. Switch to the Skills tab.
  3. Choose a skill and click Install.
  4. Select the target bot.
  5. Confirm the install.
  6. The skill appears in that bot's Skills tab.

Install An MCP Template

  1. Open Supermarket in the Web UI.
  2. Switch to the MCP tab.
  3. Choose an entry and click Install.
  4. Select the target bot.
  5. Memoh opens that bot's MCP tab with a prefilled draft connection.
  6. Fill in any required secrets or OAuth details.
  7. Save the connection.
  8. Probe it if you want to refresh tool discovery.

Contribute

Contribute new skills or MCP templates here:

Published under AGPLv3

- +
Skip to content

Supermarket

Supermarket is Memoh's built-in catalog for skills and MCP templates.


Install A Skill

  1. Open Supermarket in the Web UI.
  2. Switch to the Skills tab.
  3. Choose a skill and click Install.
  4. Select the target bot.
  5. Confirm the install.
  6. The skill appears in that bot's Skills tab.

Install An MCP Template

  1. Open Supermarket in the Web UI.
  2. Switch to the MCP tab.
  3. Choose an entry and click Install.
  4. Select the target bot.
  5. Memoh opens that bot's MCP tab with a prefilled draft connection.
  6. Fill in any required secrets or OAuth details.
  7. Save the connection.
  8. Probe it if you want to refresh tool discovery.

Contribute

Contribute new skills or MCP templates here:

Published under AGPLv3

+ \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 7d58e664..cdde782d 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"about.md":"CYQE4Bs3","blogs_2026-02-16.md":"D7X_K9ac","blogs_index.md":"CzVqJnkf","channels_dingtalk.md":"BPw_YVBj","channels_discord.md":"CgnXVcxj","channels_feishu.md":"7xzXC8PR","channels_index.md":"DqjHtBeW","channels_matrix.md":"C5lym8OS","channels_misskey.md":"BjR2GOoQ","channels_qq.md":"BiHC52Zm","channels_telegram.md":"WGR_O6_O","channels_wechatoa.md":"d_VUeGe9","channels_wecom.md":"D7yBtNrz","channels_weixin.md":"Ckccg7Ew","getting-started_access.md":"BY1pTTRI","getting-started_bot.md":"CTc86MCg","getting-started_browser.md":"Cjpk7h3a","getting-started_channels.md":"DtCQrK76","getting-started_compaction.md":"B6zFV5na","getting-started_container.md":"Do_YGEZB","getting-started_email.md":"DLrAWkek","getting-started_files.md":"CbhHSLX5","getting-started_heartbeat.md":"lBwT6Ivl","getting-started_mcp.md":"Lc9xd9cr","getting-started_memory.md":"WVVdvmGu","getting-started_provider-and-model.md":"CLGduNUC","getting-started_schedule.md":"7R1TStAB","getting-started_search-provider.md":"DDV1py8V","getting-started_sessions.md":"BGHqYtAd","getting-started_skills.md":"CcJKfEue","getting-started_slash-commands.md":"B9pb8gxb","getting-started_supermarket.md":"BOx8ZRcm","index.md":"DtN_VGK2","installation_docker.md":"DxE7r3rU","memory-providers_builtin.md":"DlYtNI3G","memory-providers_index.md":"D5MvHNPW","memory-providers_mem0.md":"C5B6D9ME","memory-providers_openviking.md":"N-8WyFZa","tts-providers_edge.md":"DPjdtaQf","tts-providers_index.md":"Cgc87EeS","zh_concepts_identity-and-binding.md":"6tGYa9d_","zh_concepts_index.md":"_zNPjKkD","zh_index.md":"C-Pz2AC7","zh_style_terminology.md":"CzqhSoQX"} +{"about.md":"CYQE4Bs3","blogs_2026-02-16.md":"D7X_K9ac","blogs_index.md":"CzVqJnkf","channels_dingtalk.md":"BPw_YVBj","channels_discord.md":"CgnXVcxj","channels_feishu.md":"7xzXC8PR","channels_index.md":"BYBYUJgL","channels_matrix.md":"C5lym8OS","channels_misskey.md":"BjR2GOoQ","channels_qq.md":"BiHC52Zm","channels_slack.md":"DYyx2j2i","channels_telegram.md":"WGR_O6_O","channels_wechatoa.md":"d_VUeGe9","channels_wecom.md":"D7yBtNrz","channels_weixin.md":"Ckccg7Ew","getting-started_access.md":"BY1pTTRI","getting-started_bot.md":"CTc86MCg","getting-started_browser.md":"Cjpk7h3a","getting-started_channels.md":"CIKhbgq7","getting-started_compaction.md":"B6zFV5na","getting-started_container.md":"Do_YGEZB","getting-started_email.md":"DLrAWkek","getting-started_files.md":"CbhHSLX5","getting-started_heartbeat.md":"lBwT6Ivl","getting-started_mcp.md":"Lc9xd9cr","getting-started_memory.md":"WVVdvmGu","getting-started_provider-and-model.md":"CLGduNUC","getting-started_schedule.md":"7R1TStAB","getting-started_search-provider.md":"DDV1py8V","getting-started_sessions.md":"BGHqYtAd","getting-started_skills.md":"CcJKfEue","getting-started_slash-commands.md":"B9pb8gxb","getting-started_supermarket.md":"BOx8ZRcm","index.md":"DtN_VGK2","installation_docker.md":"DxE7r3rU","memory-providers_builtin.md":"DlYtNI3G","memory-providers_index.md":"D5MvHNPW","memory-providers_mem0.md":"C5B6D9ME","memory-providers_openviking.md":"N-8WyFZa","tts-providers_edge.md":"DPjdtaQf","tts-providers_index.md":"Cgc87EeS","zh_concepts_identity-and-binding.md":"6tGYa9d_","zh_concepts_index.md":"_zNPjKkD","zh_index.md":"C-Pz2AC7","zh_style_terminology.md":"CzqhSoQX"} diff --git a/index.html b/index.html index ecd803fc..a72d412a 100644 --- a/index.html +++ b/index.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Memoh Documentation

Memoh(/ˈmemoʊ/) is a multi-member, structured long-memory, containerized AI agent platform. Create bots with isolated workspaces, persistent memory, tool access, and channel integrations across Telegram, Discord, Lark (Feishu), QQ, Matrix, Misskey, DingTalk, WeCom, WeChat, WeChat Official Account, Email, and Web.

Start Here

Feature Guides

  • Channels — Platform overview and links to per-channel guides.
  • Access Control — ACL presets, rule ordering, and scoped access.
  • Skills — Managed skills, effective/shadowed states, and adoption workflow.
  • Supermarket — Install skills and MCP templates from the catalog.
  • MCP — Configure tool servers, OAuth, probing, import/export.
  • Memory — Long-term memory providers and memory compaction.
  • Context Compaction — Reduce active session context size without changing stored memory.

Published under AGPLv3

- +
Skip to content

Memoh Documentation

Memoh(/ˈmemoʊ/) is a multi-member, structured long-memory, containerized AI agent platform. Create bots with isolated workspaces, persistent memory, tool access, and channel integrations across Telegram, Discord, Lark (Feishu), QQ, Matrix, Misskey, DingTalk, WeCom, WeChat, WeChat Official Account, Email, and Web.

Start Here

Feature Guides

  • Channels — Platform overview and links to per-channel guides.
  • Access Control — ACL presets, rule ordering, and scoped access.
  • Skills — Managed skills, effective/shadowed states, and adoption workflow.
  • Supermarket — Install skills and MCP templates from the catalog.
  • MCP — Configure tool servers, OAuth, probing, import/export.
  • Memory — Long-term memory providers and memory compaction.
  • Context Compaction — Reduce active session context size without changing stored memory.

Published under AGPLv3

+ \ No newline at end of file diff --git a/installation/docker.html b/installation/docker.html index 2d85ee36..459c2053 100644 --- a/installation/docker.html +++ b/installation/docker.html @@ -9,9 +9,9 @@ - + - + @@ -19,7 +19,7 @@ -
Skip to content

Docker Installation

Docker is the recommended way to run Memoh. The stack includes PostgreSQL, the main server (with embedded Containerd and in-process AI agent), and the web UI — all orchestrated via Docker Compose. You do not need to install containerd, nerdctl, or buildkit on your host; everything runs inside containers.

Service Architecture

The Docker Compose stack consists of multiple services. Some are always started, others are optional and enabled via --profile:

ServiceProfileDescription
server(core)Main Memoh server with embedded Containerd and in-process AI agent
web(core)Web UI (Vue 3)
postgres(core)PostgreSQL database
qdrantqdrantQdrant vector database for memory search (sparse and dense modes)
browserbrowserPlaywright-based browser gateway for bot web automation
sparsesparseNeural sparse encoding service for memory retrieval (see below)

Sparse Service

The sparse container provides neural sparse vector encoding for memory retrieval. It runs a lightweight Python (Flask) service on port 8085 that uses the opensearch-neural-sparse-encoding-multilingual-v1 model from OpenSearch.

What it does:

  • Converts document text into sparse vectors (a compact list of token indices + importance weights) using a masked language model
  • Encodes queries using IDF-weighted term lookup for fast, efficient retrieval
  • Works with Qdrant to enable semantic memory search without requiring an external embedding API

Why use it:

  • No embedding API costs — The model runs locally inside the container, so you don't need an OpenAI/Cohere/etc. embedding API key
  • Multilingual — The underlying model supports multiple languages out of the box
  • Good retrieval quality — Neural sparse encoding provides significantly better results than keyword-only search (BM25), while being lighter than dense embedding models

When to enable it:

Enable the sparse profile (--profile sparse) if you plan to use the built-in memory provider in sparse mode. The model is pre-downloaded during the Docker image build, so the container starts quickly without needing to fetch weights at runtime.

bash
docker compose --profile qdrant --profile sparse --profile browser up -d

For more details on memory modes, see Built-in Memory Provider.

Prerequisites

Run the official install script (requires Docker and Docker Compose):

bash
curl -fsSL https://memoh.sh | sudo sh

The script will:

  1. Check for Docker and Docker Compose
  2. Prompt for configuration (workspace, data directory, admin credentials, JWT secret, Postgres password, sparse service toggle, browser core selection)
  3. Fetch the latest release tag from GitHub and clone the repository
  4. Generate config.toml from the Docker template with your settings
  5. Pin Docker image versions to the release
  6. Build the browser image with selected cores and start all services

Silent install (use all defaults, no prompts):

bash
curl -fsSL https://memoh.sh | sudo sh -s -- -y

Defaults when running silently:

  • Workspace: ~/memoh
  • Data directory: ~/memoh/data
  • Admin: admin / admin123
  • JWT secret: auto-generated
  • Postgres password: memoh123

Install a specific version:

bash
curl -fsSL https://memoh.sh | sudo sh -s -- --version v0.6.0

Or using the environment variable:

bash
curl -fsSL https://memoh.sh | sudo MEMOH_VERSION=v0.6.0 sh

Use China mainland mirror (for slow image pulls):

bash
curl -fsSL https://memoh.sh | sudo USE_CN_MIRROR=true sh

Environment variables can be combined, e.g. curl -fsSL https://memoh.sh | sudo MEMOH_VERSION=v0.6.0 USE_CN_MIRROR=true sh

Manual Install

bash
git clone https://github.com/memohai/Memoh.git
+    
Skip to content

Docker Installation

Docker is the recommended way to run Memoh. The stack includes PostgreSQL, the main server (with embedded Containerd and in-process AI agent), and the web UI — all orchestrated via Docker Compose. You do not need to install containerd, nerdctl, or buildkit on your host; everything runs inside containers.

Service Architecture

The Docker Compose stack consists of multiple services. Some are always started, others are optional and enabled via --profile:

ServiceProfileDescription
server(core)Main Memoh server with embedded Containerd and in-process AI agent
web(core)Web UI (Vue 3)
postgres(core)PostgreSQL database
qdrantqdrantQdrant vector database for memory search (sparse and dense modes)
browserbrowserPlaywright-based browser gateway for bot web automation
sparsesparseNeural sparse encoding service for memory retrieval (see below)

Sparse Service

The sparse container provides neural sparse vector encoding for memory retrieval. It runs a lightweight Python (Flask) service on port 8085 that uses the opensearch-neural-sparse-encoding-multilingual-v1 model from OpenSearch.

What it does:

  • Converts document text into sparse vectors (a compact list of token indices + importance weights) using a masked language model
  • Encodes queries using IDF-weighted term lookup for fast, efficient retrieval
  • Works with Qdrant to enable semantic memory search without requiring an external embedding API

Why use it:

  • No embedding API costs — The model runs locally inside the container, so you don't need an OpenAI/Cohere/etc. embedding API key
  • Multilingual — The underlying model supports multiple languages out of the box
  • Good retrieval quality — Neural sparse encoding provides significantly better results than keyword-only search (BM25), while being lighter than dense embedding models

When to enable it:

Enable the sparse profile (--profile sparse) if you plan to use the built-in memory provider in sparse mode. The model is pre-downloaded during the Docker image build, so the container starts quickly without needing to fetch weights at runtime.

bash
docker compose --profile qdrant --profile sparse --profile browser up -d

For more details on memory modes, see Built-in Memory Provider.

Prerequisites

Run the official install script (requires Docker and Docker Compose):

bash
curl -fsSL https://memoh.sh | sudo sh

The script will:

  1. Check for Docker and Docker Compose
  2. Prompt for configuration (workspace, data directory, admin credentials, JWT secret, Postgres password, sparse service toggle, browser core selection)
  3. Fetch the latest release tag from GitHub and clone the repository
  4. Generate config.toml from the Docker template with your settings
  5. Pin Docker image versions to the release
  6. Build the browser image with selected cores and start all services

Silent install (use all defaults, no prompts):

bash
curl -fsSL https://memoh.sh | sudo sh -s -- -y

Defaults when running silently:

  • Workspace: ~/memoh
  • Data directory: ~/memoh/data
  • Admin: admin / admin123
  • JWT secret: auto-generated
  • Postgres password: memoh123

Install a specific version:

bash
curl -fsSL https://memoh.sh | sudo sh -s -- --version v0.6.0

Or using the environment variable:

bash
curl -fsSL https://memoh.sh | sudo MEMOH_VERSION=v0.6.0 sh

Use China mainland mirror (for slow image pulls):

bash
curl -fsSL https://memoh.sh | sudo USE_CN_MIRROR=true sh

Environment variables can be combined, e.g. curl -fsSL https://memoh.sh | sudo MEMOH_VERSION=v0.6.0 USE_CN_MIRROR=true sh

Manual Install

bash
git clone https://github.com/memohai/Memoh.git
 cd Memoh
 cp conf/app.docker.toml config.toml

Edit config.toml — at minimum change:

  • admin.password — Admin password
  • auth.jwt_secret — Generate with openssl rand -base64 32
  • postgres.password — Database password (also set POSTGRES_PASSWORD env var to match)

Then start (recommended — with Qdrant, Browser, and Sparse):

bash
sudo POSTGRES_PASSWORD=your-db-password docker compose --profile qdrant --profile browser --profile sparse up -d

Or start core services only (no vector DB or browser automation):

bash
sudo POSTGRES_PASSWORD=your-db-password docker compose up -d

On macOS or if your user is in the docker group, sudo is not required.

Important: docker-compose.yml mounts ./config.toml by default. You must create this file before starting — running without it will fail.

China Mainland Mirror

For users in mainland China who cannot access Docker Hub directly, uncomment the registry line in config.toml:

toml
[workspace]
 registry = "memoh.cn"

And add the China mirror compose overlay:

bash
sudo docker compose -f docker-compose.yml -f docker/docker-compose.cn.yml \
@@ -28,7 +28,7 @@
 docker compose logs -f         # View logs
 docker compose ps              # Status
 docker compose pull && docker compose up -d  # Update to latest images

Environment Variables

VariableDefaultDescription
POSTGRES_PASSWORDmemoh123PostgreSQL password (must match postgres.password in config.toml)
MEMOH_CONFIG./config.tomlPath to the configuration file
MEMOH_VERSION(latest release)Git tag to install (e.g. v0.6.0). Also pins Docker image versions.
USE_CN_MIRRORfalseSet to true to use China mainland image mirrors
BROWSER_CORESchromium,firefoxBrowser engines to include in the browser image
BROWSER_TAGlatestDocker tag for the browser image

Published under AGPLv3

- + \ No newline at end of file diff --git a/memory-providers/builtin.html b/memory-providers/builtin.html index 1f268fd8..306aa7b8 100644 --- a/memory-providers/builtin.html +++ b/memory-providers/builtin.html @@ -9,9 +9,9 @@ - + - + @@ -19,13 +19,13 @@ -
Skip to content

Built-in Memory Provider

The built-in memory provider is the standard memory backend shipped with Memoh. It works with Memoh's memory pipeline and supports:

  • Automatic memory extraction from conversations
  • Semantic memory retrieval during chat
  • Manual memory creation and editing
  • Memory compaction and rebuild workflows

The built-in provider operates in one of three memory modes, each with different infrastructure requirements and retrieval capabilities.


Memory Modes

ModeIndexRequirementsUse Case
OffFile-based onlyNoneLightweight setup, no vector search
SparseNeural sparse vectorsSparse service + Qdrant (--profile sparse)Good retrieval quality without embedding API costs
DenseDense embeddingsEmbedding model + Qdrant (--profile qdrant)Highest-quality semantic search

How Sparse Mode Works

Sparse mode uses the opensearch-neural-sparse-encoding-multilingual-v1 model (from the OpenSearch project) to convert text into sparse vectors — compact lists of token indices with importance weights. Unlike dense mode, which requires an external embedding API, the sparse model runs locally in the sparse container with no API key or cost. It supports multiple languages and provides significantly better retrieval quality than keyword-only search.


Creating a Built-in Provider

  1. Navigate to the Memory Providers page.
  2. Click Add Memory Provider.
  3. Fill in the following fields:
    • Name: A display name for this provider.
    • Provider Type: Select builtin.
  4. Click Create.

Configuring a Built-in Provider

After creating a provider, select it from the list and configure its settings.

FieldDescription
Memory Modeoff (default), sparse, or dense. Controls how memories are indexed and retrieved.
Embedding ModelEmbedding model for dense vector search. Only used in dense mode.
Qdrant CollectionQdrant collection name. Defaults to memory_sparse.

Managing Providers

  • Edit: Select a provider and update its settings.
  • Delete: Remove a provider you no longer use.

Infrastructure Requirements

Off Mode

No additional infrastructure required. Memories are stored and retrieved using file-based indexing only.

Sparse Mode

Requires the sparse service (runs the opensearch-neural-sparse-encoding-multilingual-v1 model locally) and Qdrant vector database. Enable both with Docker Compose profiles:

bash
docker compose --profile qdrant --profile sparse up -d

The following sections must be present in config.toml:

toml
[qdrant]
+    
Skip to content

Built-in Memory Provider

The built-in memory provider is the standard memory backend shipped with Memoh. It works with Memoh's memory pipeline and supports:

  • Automatic memory extraction from conversations
  • Semantic memory retrieval during chat
  • Manual memory creation and editing
  • Memory compaction and rebuild workflows

The built-in provider operates in one of three memory modes, each with different infrastructure requirements and retrieval capabilities.


Memory Modes

ModeIndexRequirementsUse Case
OffFile-based onlyNoneLightweight setup, no vector search
SparseNeural sparse vectorsSparse service + Qdrant (--profile sparse)Good retrieval quality without embedding API costs
DenseDense embeddingsEmbedding model + Qdrant (--profile qdrant)Highest-quality semantic search

How Sparse Mode Works

Sparse mode uses the opensearch-neural-sparse-encoding-multilingual-v1 model (from the OpenSearch project) to convert text into sparse vectors — compact lists of token indices with importance weights. Unlike dense mode, which requires an external embedding API, the sparse model runs locally in the sparse container with no API key or cost. It supports multiple languages and provides significantly better retrieval quality than keyword-only search.


Creating a Built-in Provider

  1. Navigate to the Memory Providers page.
  2. Click Add Memory Provider.
  3. Fill in the following fields:
    • Name: A display name for this provider.
    • Provider Type: Select builtin.
  4. Click Create.

Configuring a Built-in Provider

After creating a provider, select it from the list and configure its settings.

FieldDescription
Memory Modeoff (default), sparse, or dense. Controls how memories are indexed and retrieved.
Embedding ModelEmbedding model for dense vector search. Only used in dense mode.
Qdrant CollectionQdrant collection name. Defaults to memory_sparse.

Managing Providers

  • Edit: Select a provider and update its settings.
  • Delete: Remove a provider you no longer use.

Infrastructure Requirements

Off Mode

No additional infrastructure required. Memories are stored and retrieved using file-based indexing only.

Sparse Mode

Requires the sparse service (runs the opensearch-neural-sparse-encoding-multilingual-v1 model locally) and Qdrant vector database. Enable both with Docker Compose profiles:

bash
docker compose --profile qdrant --profile sparse up -d

The following sections must be present in config.toml:

toml
[qdrant]
 base_url = "http://qdrant:6334"
 
 [sparse]
 base_url = "http://sparse:8085"

Dense Mode

Requires an embedding model (configured in the provider settings) and Qdrant:

bash
docker compose --profile qdrant up -d

The Qdrant section must be present in config.toml:

toml
[qdrant]
 base_url = "http://qdrant:6334"

Assigning a Memory Provider to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Memory Provider dropdown.
  4. Select the provider you created.
  5. Click Save.

If no memory provider is selected, the bot will not use that provider configuration in its runtime settings.


Using Memory After Setup

Once a memory provider is assigned to the bot, you can manage actual memories from the bot's Memory tab:

  • Create memories manually
  • Extract memories from conversations
  • Search, edit, and delete memories
  • Compact or rebuild the memory store

For day-to-day memory operations, continue with Bot Memory Management.

Published under AGPLv3

- + \ No newline at end of file diff --git a/memory-providers/index.html b/memory-providers/index.html index 3d182baf..bb1b3dcc 100644 --- a/memory-providers/index.html +++ b/memory-providers/index.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Memory Providers

Memoh uses a Memory Provider to define how a bot stores, retrieves, and manages long-term memory. A bot can bind one memory provider in its General tab, and that provider becomes the backend for memory extraction and memory search.

Available Providers

Memoh supports the following memory providers:

  • Built-in: The default memory system included with Memoh. Supports three modes — off (file-based), sparse (neural sparse vectors), and dense (embedding-based semantic search). Fully self-hosted.
  • Mem0: SaaS memory provider via the Mem0 API. Requires an API key.
  • OpenViking: Self-hosted or SaaS memory provider with its own API.

Basic Flow

  1. Open the Memory Providers page from the sidebar.
  2. Create a provider instance using one of the supported provider types.
  3. Configure the provider settings.
  4. Open a bot's General tab and assign that provider in Memory Provider.
  5. Manage actual memories from the bot's Memory tab.

Next Steps

Published under AGPLv3

- +
Skip to content

Memory Providers

Memoh uses a Memory Provider to define how a bot stores, retrieves, and manages long-term memory. A bot can bind one memory provider in its General tab, and that provider becomes the backend for memory extraction and memory search.

Available Providers

Memoh supports the following memory providers:

  • Built-in: The default memory system included with Memoh. Supports three modes — off (file-based), sparse (neural sparse vectors), and dense (embedding-based semantic search). Fully self-hosted.
  • Mem0: SaaS memory provider via the Mem0 API. Requires an API key.
  • OpenViking: Self-hosted or SaaS memory provider with its own API.

Basic Flow

  1. Open the Memory Providers page from the sidebar.
  2. Create a provider instance using one of the supported provider types.
  3. Configure the provider settings.
  4. Open a bot's General tab and assign that provider in Memory Provider.
  5. Manage actual memories from the bot's Memory tab.

Next Steps

Published under AGPLv3

+ \ No newline at end of file diff --git a/memory-providers/mem0.html b/memory-providers/mem0.html index d824370a..7897640f 100644 --- a/memory-providers/mem0.html +++ b/memory-providers/mem0.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Mem0 Memory Provider

Mem0 is a SaaS memory provider that connects your bot to the Mem0 platform. Instead of managing memory infrastructure yourself, Mem0 handles storage, retrieval, and indexing through its cloud API.


Creating a Mem0 Provider

  1. Navigate to the Memory Providers page.
  2. Click Add Memory Provider.
  3. Fill in the following fields:
    • Name: A display name for this provider.
    • Provider Type: Select mem0.
  4. Click Create.

Configuring a Mem0 Provider

After creating a provider, select it from the list and configure its settings.

FieldRequiredDescription
Base URLNoMem0 API base URL. Defaults to https://api.mem0.ai when empty.
API KeyYesAPI key for Mem0 authentication (stored as a secret).
Organization IDNoOrganization ID for workspace scoping.
Project IDNoProject ID for workspace scoping.

Assigning a Mem0 Provider to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Memory Provider dropdown.
  4. Select the Mem0 provider you created.
  5. Click Save.

Usage

Once assigned, the bot will use Mem0 as its memory backend. Memory extraction, search, and management operations are routed through the Mem0 API.

For day-to-day memory operations, see Bot Memory Management.

Published under AGPLv3

- +
Skip to content

Mem0 Memory Provider

Mem0 is a SaaS memory provider that connects your bot to the Mem0 platform. Instead of managing memory infrastructure yourself, Mem0 handles storage, retrieval, and indexing through its cloud API.


Creating a Mem0 Provider

  1. Navigate to the Memory Providers page.
  2. Click Add Memory Provider.
  3. Fill in the following fields:
    • Name: A display name for this provider.
    • Provider Type: Select mem0.
  4. Click Create.

Configuring a Mem0 Provider

After creating a provider, select it from the list and configure its settings.

FieldRequiredDescription
Base URLNoMem0 API base URL. Defaults to https://api.mem0.ai when empty.
API KeyYesAPI key for Mem0 authentication (stored as a secret).
Organization IDNoOrganization ID for workspace scoping.
Project IDNoProject ID for workspace scoping.

Assigning a Mem0 Provider to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Memory Provider dropdown.
  4. Select the Mem0 provider you created.
  5. Click Save.

Usage

Once assigned, the bot will use Mem0 as its memory backend. Memory extraction, search, and management operations are routed through the Mem0 API.

For day-to-day memory operations, see Bot Memory Management.

Published under AGPLv3

+ \ No newline at end of file diff --git a/memory-providers/openviking.html b/memory-providers/openviking.html index 087b4eb7..4da856cf 100644 --- a/memory-providers/openviking.html +++ b/memory-providers/openviking.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

OpenViking Memory Provider

OpenViking is a memory provider that can be self-hosted or used as a SaaS service. It provides an alternative memory backend for bots that need a dedicated memory API.


Creating an OpenViking Provider

  1. Navigate to the Memory Providers page.
  2. Click Add Memory Provider.
  3. Fill in the following fields:
    • Name: A display name for this provider.
    • Provider Type: Select openviking.
  4. Click Create.

Configuring an OpenViking Provider

After creating a provider, select it from the list and configure its settings.

FieldRequiredDescription
Base URLYesOpenViking API endpoint (e.g. http://openviking:8088).
API KeyNoAPI key for authentication (stored as a secret).

Assigning an OpenViking Provider to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Memory Provider dropdown.
  4. Select the OpenViking provider you created.
  5. Click Save.

Usage

Once assigned, the bot will use OpenViking as its memory backend. Memory extraction, search, and management operations are routed through the OpenViking API.

For day-to-day memory operations, see Bot Memory Management.

Published under AGPLv3

- +
Skip to content

OpenViking Memory Provider

OpenViking is a memory provider that can be self-hosted or used as a SaaS service. It provides an alternative memory backend for bots that need a dedicated memory API.


Creating an OpenViking Provider

  1. Navigate to the Memory Providers page.
  2. Click Add Memory Provider.
  3. Fill in the following fields:
    • Name: A display name for this provider.
    • Provider Type: Select openviking.
  4. Click Create.

Configuring an OpenViking Provider

After creating a provider, select it from the list and configure its settings.

FieldRequiredDescription
Base URLYesOpenViking API endpoint (e.g. http://openviking:8088).
API KeyNoAPI key for authentication (stored as a secret).

Assigning an OpenViking Provider to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Memory Provider dropdown.
  4. Select the OpenViking provider you created.
  5. Click Save.

Usage

Once assigned, the bot will use OpenViking as its memory backend. Memory extraction, search, and management operations are routed through the OpenViking API.

For day-to-day memory operations, see Bot Memory Management.

Published under AGPLv3

+ \ No newline at end of file diff --git a/tts-providers/edge.html b/tts-providers/edge.html index 7796c53a..40bc1858 100644 --- a/tts-providers/edge.html +++ b/tts-providers/edge.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Edge TTS

Edge TTS uses Microsoft Edge's public read-aloud API for speech synthesis. It is free, requires no API key, and supports 256+ voices across 50+ languages.


Creating an Edge TTS Provider

  1. Navigate to the TTS Providers page.
  2. Click Add.
  3. Select edge as the provider type.
  4. Click Create.

The default model edge-read-aloud is automatically imported when the provider is created.


Configuring the Model

Click the edge-read-aloud model to configure its settings.

FieldDescription
VoiceLanguage + voice ID. Default: en-US-EmmaMultilingualNeural. Over 256 voices available across 50+ languages.
FormatAudio output format. Options: audio-24khz-48kbitrate-mono-mp3 (default), audio-24khz-96kbitrate-mono-mp3, webm-24khz-16bit-mono-opus.
SpeedPlayback speed. Options: 0.5, 1.0 (default), 2.0, 3.0.
PitchVoice pitch adjustment. Range: -100 to +100, default 0.

Assigning to a Bot

  1. Open a bot's General tab.
  2. Find the TTS Model dropdown.
  3. Select the configured Edge TTS model.
  4. Click Save.

The bot can now synthesize speech using Edge TTS.


Testing

Use the built-in synthesis test button on the model configuration page to preview how the selected voice, format, speed, and pitch sound before assigning to a bot.

Published under AGPLv3

- +
Skip to content

Edge TTS

Edge TTS uses Microsoft Edge's public read-aloud API for speech synthesis. It is free, requires no API key, and supports 256+ voices across 50+ languages.


Creating an Edge TTS Provider

  1. Navigate to the TTS Providers page.
  2. Click Add.
  3. Select edge as the provider type.
  4. Click Create.

The default model edge-read-aloud is automatically imported when the provider is created.


Configuring the Model

Click the edge-read-aloud model to configure its settings.

FieldDescription
VoiceLanguage + voice ID. Default: en-US-EmmaMultilingualNeural. Over 256 voices available across 50+ languages.
FormatAudio output format. Options: audio-24khz-48kbitrate-mono-mp3 (default), audio-24khz-96kbitrate-mono-mp3, webm-24khz-16bit-mono-opus.
SpeedPlayback speed. Options: 0.5, 1.0 (default), 2.0, 3.0.
PitchVoice pitch adjustment. Range: -100 to +100, default 0.

Assigning to a Bot

  1. Open a bot's General tab.
  2. Find the TTS Model dropdown.
  3. Select the configured Edge TTS model.
  4. Click Save.

The bot can now synthesize speech using Edge TTS.


Testing

Use the built-in synthesis test button on the model configuration page to preview how the selected voice, format, speed, and pitch sound before assigning to a bot.

Published under AGPLv3

+ \ No newline at end of file diff --git a/tts-providers/index.html b/tts-providers/index.html index 5f326e6d..d20e9619 100644 --- a/tts-providers/index.html +++ b/tts-providers/index.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

TTS Providers

Memoh supports Text-to-Speech (TTS) so bots can synthesize spoken audio from text. The TTS system is organized into three layers:

  • TTS Provider: A service type (e.g. Edge TTS). You create named provider instances from the TTS Providers page.
  • TTS Model: A specific voice/model under a provider (e.g. edge-read-aloud). Models have configurable voice, format, speed, and pitch settings.
  • Bot Assignment: In Bot Settings, select a TTS Model. The bot can then synthesize speech in conversations.

Basic Flow

  1. Navigate to the TTS Providers page from the sidebar.
  2. Click Add and select a provider type (e.g. edge).
  3. Click Create — the provider's default model is auto-imported.
  4. Click the model to configure voice, format, speed, and pitch.
  5. Test synthesis with the built-in test button.
  6. Open a bot's General tab and select the TTS Model.
  7. Save — the bot can now synthesize speech.

Available Providers

ProviderDescription
Edge TTSFree, uses Microsoft Edge's public read-aloud API. 256+ voices across 50+ languages. No API key required.

Next Steps

  • To set up the currently available provider, continue with Edge TTS.

Published under AGPLv3

- +
Skip to content

TTS Providers

Memoh supports Text-to-Speech (TTS) so bots can synthesize spoken audio from text. The TTS system is organized into three layers:

  • TTS Provider: A service type (e.g. Edge TTS). You create named provider instances from the TTS Providers page.
  • TTS Model: A specific voice/model under a provider (e.g. edge-read-aloud). Models have configurable voice, format, speed, and pitch settings.
  • Bot Assignment: In Bot Settings, select a TTS Model. The bot can then synthesize speech in conversations.

Basic Flow

  1. Navigate to the TTS Providers page from the sidebar.
  2. Click Add and select a provider type (e.g. edge).
  3. Click Create — the provider's default model is auto-imported.
  4. Click the model to configure voice, format, speed, and pitch.
  5. Test synthesis with the built-in test button.
  6. Open a bot's General tab and select the TTS Model.
  7. Save — the bot can now synthesize speech.

Available Providers

ProviderDescription
Edge TTSFree, uses Microsoft Edge's public read-aloud API. 256+ voices across 50+ languages. No API key required.

Next Steps

  • To set up the currently available provider, continue with Edge TTS.

Published under AGPLv3

+ \ No newline at end of file diff --git a/zh/concepts/identity-and-binding.html b/zh/concepts/identity-and-binding.html index 7e341b7a..fc585b3f 100644 --- a/zh/concepts/identity-and-binding.html +++ b/zh/concepts/identity-and-binding.html @@ -9,9 +9,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

账号模型与绑定

账号模型

Memoh 将平台账号与系统账号视为两类不同实体:

  • 平台账号(ChannelIdentity 是用户在外部接入平台上的账号(例如飞书账号),不是 Memoh 内部账号。
  • 系统账号(User 是 Memoh 系统内账号。

平台账号在初始阶段可以不绑定系统账号。
bind 的职责是完成这两类账号的关联。

接入平台与 Bot

  • 接入平台(channel 是入站消息来源。
  • Bot 是系统内的授权与资源边界。

Bot 由系统账号管理,入站消息由平台账号产生。

为什么账号绑定是账号作用域

账号绑定的目标是建立账号归属关系,而不是直接发放 bot 资源权限:

  • 它只负责平台账号与系统账号的绑定;
  • 不把账号绑定与成员管理语义耦合在一起;
  • 让 bot 访问控制保持独立、可演进。

账号绑定流程(当前共识)

  1. 用户以自己的系统账号申请 bind code;
  2. 平台账号在支持的接入平台会话中发送 code;
  3. 系统校验 code,完成平台账号到系统账号的绑定;
  4. bot 成员与授权由独立流程处理。

Bot 类型语义

  • Public bot:支持成员协作语义。
  • Personal bot:语义上应为单 owner,不应依赖成员机制。

注:本文档记录的是产品语义与共识方向。
部分运行时细节仍可能处于收敛阶段。

Published under AGPLv3

- + \ No newline at end of file diff --git a/zh/concepts/index.html b/zh/concepts/index.html index c99b8f2c..2cb280f0 100644 --- a/zh/concepts/index.html +++ b/zh/concepts/index.html @@ -9,9 +9,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

核心概念

本章节用于定义 Memoh 的核心账号与访问概念。

概念图

  • 系统账号(User:Memoh 系统内账号。
  • 平台账号(ChannelIdentity:用户在外部接入平台上的账号,不是 Memoh 系统内账号(例如用户的飞书账号)。
  • Bot:由系统账号管理的资源与访问边界。
  • 账号绑定(bind:把平台账号关联到系统账号的过程。

为什么重要

Memoh 需要同时处理外部接入平台消息与系统内权限控制。
因此我们明确区分平台账号与系统账号,并将 bot 授权与账号绑定解耦。

术语说明:文档中的“平台账号”统一指用户在对应平台上的真实账号(如飞书账号),不指本项目内部账号。

本章内容

Published under AGPLv3

- + \ No newline at end of file diff --git a/zh/index.html b/zh/index.html index 183af9f0..37f2b157 100644 --- a/zh/index.html +++ b/zh/index.html @@ -9,9 +9,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

Memoh 中文入口

Memoh 是一个多成员、长记忆、容器化的 AI Agent 平台。当前中文站点同时包含:

  • 已翻译的中文概念文档
  • 指向英文主文档的常用功能入口

如果你是第一次接触 Memoh,建议先看英文主文档里的功能指南;如果你正在理解账号语义、绑定关系和访问控制,再看下面的中文概念页。

常用功能入口

中文概念文档

面向文档维护者

当前中文维护范围

当前中文内容优先覆盖账号语义与访问控制相关的概念:

  • 区分系统账号与平台账号
  • 解释为什么账号绑定是账号作用域
  • 说明账号绑定与 bot 访问控制之间的关系

说明:“平台账号”指用户在外部平台上的真实账号,例如飞书账号,而不是 Memoh 系统账号。

Published under AGPLv3

- + \ No newline at end of file diff --git a/zh/style/terminology.html b/zh/style/terminology.html index 5c739419..e078b300 100644 --- a/zh/style/terminology.html +++ b/zh/style/terminology.html @@ -9,9 +9,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

术语规范

适用对象:文档编写者与维护者。 本页用于统一写作语义,不是面向最终用户的功能说明。

规范术语

  • 系统账号(User:Memoh 系统内账号。
  • 平台账号(ChannelIdentity:用户在外部接入平台上的账号,不是 Memoh 内账号。
  • 接入平台(channel:承载入站消息的外部平台。
  • 账号绑定(bind:把平台账号关联到系统账号的过程。
  • 绑定码(Bind Code):用于账号绑定的一次性代码。
  • Bot:由系统账号管理的资源与授权边界。

推荐写法

  • 面向产品语义时,优先写 “平台账号”,不要直接写 actor。
  • 描述业务行为时,优先写 “接入平台”,不要直接写 channel。
  • 首次出现保留技术别名,后续可只用中文术语:
    • 平台账号(ChannelIdentity
    • 系统账号(User
    • 账号绑定(bind

禁用或不推荐写法

  • 在概念文档中直接使用 actor(除非明确引用代码符号)。
  • 使用含糊表述如 “平台用户”(未区分系统账号与平台账号)。
  • 写出“平台账号是 Memoh 内部账号”这类错误语义。

示例

  • 正确:“平台账号是用户在飞书上的账号,不是 Memoh 系统账号。”
  • 正确:“账号绑定用于把平台账号关联到系统账号。”
  • 错误:“Actor 是 Memoh 里的用户。”

自检清单

  • 是否明确区分了系统账号与平台账号?
  • 叙述中是否将 channel 表述为接入平台?
  • 是否仅在首处保留技术别名?

Published under AGPLv3

- + \ No newline at end of file