开发者指南:Gemini Enterprise 与 A2UI 集成

TL;DR · AI 摘要
A2UI 是一种开放协议,使 AI 代理能安全、声明式地返回结构化 UI 组件(如日期选择器、地图),而非纯文本;通过与 Gemini Enterprise 集成,可在聊天界面原生渲染富交互界面,且支持跨框架(Lit/Flutter/Angular)与传输协议(A2A/SSE/WebSocket)。
核心要点
- A2UI 使用 JSON 描述 UI 组件树与数据模型,避免 HTML/JS 注入风险,组件仅从预批准目录渲染。
- 在 A2A 协议中,A2UI 以 MIME 类型 application/json+a2ui 的 DataPart 形式传输,支持流式增量生成。
- 参考实现基于 Google Agent Development Kit(ADK)+ Gemini + A2UI,源码开源于 GitHub,含 2 分钟演示视频。
结构提纲
按章节快速跳转。
传统代理返回纯文本或 Markdown,无法支持日期选择器、地图等富 UI,造成多轮对话冗余与用户体验下降。
A2UI 是声明式 JSON 协议, 将 UI 表示为组件树与数据模型分离的结构,确保安全、可流式传输且框架无关。
A2UI 属于四层架构中的‘Cargo’层,独立于应用体验层(CopilotKit)、渲染层(Flutter/Lit)和传输层(A2A)。
通过 A2A 协议将 A2UI payload 嵌入 DataPart,使 GE 聊天界面原生渲染交互式组件,同时兼容自定义前端。
使用 Google ADK 构建餐厅查找代理,完整源码托管于 GitHub,附带 2 分钟演示视频验证端到端流程。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- A2UI:代理驱动的声明式 UI 协议
- 核心价值
- 安全:非执行式 JSON,禁用任意代码注入
- 高效:流式增量渲染,减少多轮对话
- 通用:跨框架(Lit/Flutter/Angular)兼容
- 技术构成
- 组件树:Card/Button/ChoicePicker/Image 等
- 数据模型:绑定组件状态的值对象
- 传输载体:A2A DataPart (MIME: application/json+a2ui)
- 集成场景
- Gemini Enterprise 内置聊天界面原生渲染
- 自定义前端(如 Lit + ADK 构建的餐厅查找器)
- 企业级私有部署(通过 AG-UI 或 CopilotKit)
金句 / Highlights
值得收藏与分享的关键句。
A2UI payload 是数据而非可执行代码,客户端仅渲染预批准组件目录中的元素,从根本上防止 XSS 和凭证窃取。
A2UI 消息是扁平化的 JSON 列表,支持 LLM 增量生成与客户端流式渲染,显著降低用户等待感知延迟。
同一 A2UI payload 可在 Lit Web、Flutter 移动端与原生 Android/iOS 中一致渲染,体现其真正的框架无关性。
translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translated translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation]) translation translation translation translation translation translation translation]) translation translation translation translation translation translation translation translation]) translation translation translation translation translation translation translation]) translation translation translation translation translation translation]) translation translation translation translation translation translation]) translation translation translation translation translation translation translation translation translation]) translation translation translation translation translation translation]) translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation
translated translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation translation