foliko 1.1.4 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  2. package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  3. package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  4. package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  5. package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
  6. package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  7. package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  8. package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  9. package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  10. package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  11. package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  12. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  13. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  14. package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  15. package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  16. package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  17. package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  18. package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  19. package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  20. package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  21. package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  22. package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  23. package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  24. package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  25. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  26. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  27. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  28. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
  29. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
  30. package/.agent/ARCHITECTURE.md +288 -0
  31. package/.agent/agents/ambient-agent.md +57 -0
  32. package/.agent/agents/debugger.md +55 -0
  33. package/.agent/agents/email-assistant.md +49 -0
  34. package/.agent/agents/file-manager.md +42 -0
  35. package/.agent/agents/python-developer.md +60 -0
  36. package/.agent/agents/scheduler.md +59 -0
  37. package/.agent/agents/web-developer.md +45 -0
  38. package/.agent/data/default.json +412 -3
  39. package/.agent/data/plugins-state.json +173 -174
  40. package/.agent/data/puppeteer-sessions/undefined.json +6 -0
  41. package/.agent/data/weixin-media/2026-04-08/img_1775618677512.jpg +0 -0
  42. package/.agent/data/weixin-media/2026-04-08/img_1775619073340.jpg +0 -0
  43. package/.agent/data/weixin-media/2026-04-08/img_1775619097536.jpg +0 -0
  44. package/.agent/data/weixin-media/2026-04-08/img_1775619209388.jpg +0 -0
  45. package/.agent/mcp_config_updated.json +12 -0
  46. package/.agent/memory/feedback/mnrdq5ps-ekch6c.md +9 -0
  47. package/.agent/memory/feedback/mnrdvj5i-ca3dkd.md +9 -0
  48. package/.agent/memory/feedback/mnre365e-7s4zax.md +9 -0
  49. package/.agent/memory/feedback/mnre36jn-nkfgmp.md +9 -0
  50. package/.agent/memory/feedback/mnre3805-kjiq6h.md +9 -0
  51. package/.agent/memory/feedback/test-1775733060827.md +6 -0
  52. package/.agent/memory/project/mnqx54u5-loqtoe.md +9 -0
  53. package/.agent/memory/project/mnqx84cv-mx6dmd.md +9 -0
  54. package/.agent/memory/reference/mnre3cww-penbo1.md +9 -0
  55. package/.agent/plugins/poster-plugin/fonts/NotoColorEmoji-Regular.ttf +0 -0
  56. package/.agent/plugins/poster-plugin/fonts/Symbola_hint.ttf +0 -0
  57. package/.agent/plugins/poster-plugin/src/index.js +30 -29
  58. package/.agent/plugins/puppeteer-plugin/README.md +147 -0
  59. package/.agent/plugins/puppeteer-plugin/index.js +1418 -0
  60. package/.agent/plugins/puppeteer-plugin/package.json +9 -0
  61. package/.agent/plugins.json +5 -11
  62. package/.agent/rules/GEMINI.md +273 -0
  63. package/.agent/rules/allow-rule.md +77 -0
  64. package/.agent/rules/log-rule.md +83 -0
  65. package/.agent/rules/security-rule.md +93 -0
  66. package/.agent/scripts/auto_preview.py +148 -0
  67. package/.agent/scripts/checklist.py +217 -0
  68. package/.agent/scripts/session_manager.py +120 -0
  69. package/.agent/scripts/verify_all.py +327 -0
  70. package/.agent/sessions/cli_default.json +636 -1833
  71. package/.agent/sessions/weixin_o9cq80zgZqKPA2-s59PN43GdDy1w@im.wechat.json +11097 -0
  72. package/.agent/skills/api-patterns/SKILL.md +81 -0
  73. package/.agent/skills/api-patterns/api-style.md +42 -0
  74. package/.agent/skills/api-patterns/auth.md +24 -0
  75. package/.agent/skills/api-patterns/documentation.md +26 -0
  76. package/.agent/skills/api-patterns/graphql.md +41 -0
  77. package/.agent/skills/api-patterns/rate-limiting.md +31 -0
  78. package/.agent/skills/api-patterns/response.md +37 -0
  79. package/.agent/skills/api-patterns/rest.md +40 -0
  80. package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  81. package/.agent/skills/api-patterns/security-testing.md +122 -0
  82. package/.agent/skills/api-patterns/trpc.md +41 -0
  83. package/.agent/skills/api-patterns/versioning.md +22 -0
  84. package/.agent/skills/app-builder/SKILL.md +75 -0
  85. package/.agent/skills/app-builder/agent-coordination.md +71 -0
  86. package/.agent/skills/app-builder/feature-building.md +53 -0
  87. package/.agent/skills/app-builder/project-detection.md +34 -0
  88. package/.agent/skills/app-builder/scaffolding.md +118 -0
  89. package/.agent/skills/app-builder/tech-stack.md +40 -0
  90. package/.agent/skills/app-builder/templates/SKILL.md +39 -0
  91. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  92. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  93. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  94. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  95. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  96. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  97. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  98. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  99. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  100. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  101. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  102. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  103. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  104. package/.agent/skills/architecture/SKILL.md +55 -0
  105. package/.agent/skills/architecture/context-discovery.md +43 -0
  106. package/.agent/skills/architecture/examples.md +94 -0
  107. package/.agent/skills/architecture/pattern-selection.md +68 -0
  108. package/.agent/skills/architecture/patterns-reference.md +50 -0
  109. package/.agent/skills/architecture/trade-off-analysis.md +77 -0
  110. package/.agent/skills/clean-code/SKILL.md +201 -0
  111. package/.agent/skills/doc.md +177 -0
  112. package/.agent/skills/frontend-design/SKILL.md +418 -0
  113. package/.agent/skills/frontend-design/animation-guide.md +331 -0
  114. package/.agent/skills/frontend-design/color-system.md +311 -0
  115. package/.agent/skills/frontend-design/decision-trees.md +418 -0
  116. package/.agent/skills/frontend-design/motion-graphics.md +306 -0
  117. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  118. package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  119. package/.agent/skills/frontend-design/typography-system.md +345 -0
  120. package/.agent/skills/frontend-design/ux-psychology.md +1116 -0
  121. package/.agent/skills/frontend-design/visual-effects.md +383 -0
  122. package/.agent/skills/i18n-localization/SKILL.md +154 -0
  123. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  124. package/.agent/skills/mcp-builder/SKILL.md +176 -0
  125. package/.agent/skills/poster-design/SKILL.md +385 -0
  126. package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
  127. package/.agent/workflows/brainstorm.md +113 -0
  128. package/.agent/workflows/create.md +59 -0
  129. package/.agent/workflows/debug.md +103 -0
  130. package/.agent/workflows/deploy.md +176 -0
  131. package/.agent/workflows/enhance.md +63 -0
  132. package/.agent/workflows/orchestrate.md +237 -0
  133. package/.agent/workflows/plan.md +89 -0
  134. package/.agent/workflows/preview.md +81 -0
  135. package/.agent/workflows/simple-test.md +42 -0
  136. package/.agent/workflows/status.md +86 -0
  137. package/.agent/workflows/structured-orchestrate.md +180 -0
  138. package/.agent/workflows/test.md +144 -0
  139. package/.agent/workflows/ui-ux-pro-max.md +296 -0
  140. package/.claude/settings.local.json +8 -1
  141. package/.env.example +56 -56
  142. package/37ua31lq.png +0 -0
  143. package/4ru0h1yo.png +0 -0
  144. package/55c90rsx.png +0 -0
  145. package/README.md +441 -441
  146. package/cli/src/commands/chat.js +69 -1
  147. package/cli/src/index.js +11 -2
  148. package/gud2mnws.png +0 -0
  149. package/output/poster_business.png.png +0 -0
  150. package/output/poster_business_product.png.png +0 -0
  151. package/output/poster_cyberpunk_neon.png.png +0 -0
  152. package/output/poster_festival.png.png +0 -0
  153. package/output/poster_foliko_personal.png.png +0 -0
  154. package/output/poster_french_romance.png.png +0 -0
  155. package/output/poster_guochao_landscape.png.png +0 -0
  156. package/output/poster_japanese_zen.png.png +0 -0
  157. package/output/poster_kawaii.png.png +0 -0
  158. package/output/poster_kawaii_hello.png.png +0 -0
  159. package/output/poster_luxury_gradient.png.png +0 -0
  160. package/output/poster_magazine_vogue.png.png +0 -0
  161. package/output/poster_minimal.png.png +0 -0
  162. package/output/poster_minimal_bw.png.png +0 -0
  163. package/output/poster_minimal_geometry.png.png +0 -0
  164. package/output/poster_pop_art.png.png +0 -0
  165. package/output/poster_sakura.png.png +0 -0
  166. package/output/poster_tech.png.png +0 -0
  167. package/output/poster_trendy.png.png +0 -0
  168. package/output/poster_vintage.png.png +0 -0
  169. package/output/poster_vintage_coffee.png.png +0 -0
  170. package/package.json +1 -1
  171. package/plugins/extension-executor-plugin.js +27 -1
  172. package/plugins/memory-plugin.js +197 -32
  173. package/skills/find-skills/AGENTS.md +162 -162
  174. package/skills/find-skills/SKILL.md +133 -133
  175. package/src/core/agent-chat.js +203 -112
  176. package/undefined.png +0 -0
  177. package/undefined.svg +1 -0
  178. package/xrrdyfr8.png +0 -0
  179. package/y9bfri9m.png +0 -0
  180. package/.agent/agents/code-assistant.json +0 -14
  181. package/.agent/agents/email-assistant.json +0 -14
  182. package/.agent/agents/file-assistant.json +0 -15
  183. package/.agent/agents/system-assistant.json +0 -15
  184. package/.agent/agents/web-assistant.json +0 -12
  185. package/.agent/data/ambient/goals.json +0 -50
  186. package/.agent/data/ambient/memories.json +0 -7
  187. package/.agent/data/scheduler/tasks.json +0 -1
  188. package/.agent/memory/core.md +0 -1
  189. package/.agent/memory/project/mnn93ogy-ypjn27.md +0 -9
  190. package/.agent/memory/project/mnn98fqy-5nhc1u.md +0 -25
  191. package/.agent/memory/reference/mnq3oenw-46haj6.md +0 -63
  192. package/.agent/memory/reference/mnq5qxm2-mjoooh.md +0 -116
  193. package/.agent/memory/user/mnm67t9m-x8rekk.md +0 -9
  194. package/.agent/memory/user/mnn5mmqh-w6aktx.md +0 -11
  195. package/.agent/memory/user/mnnbfhhn-dk1bd1.md +0 -22
  196. package/.agent/package.json +0 -8
  197. package/.agent/plugins/__pycache__/file_writer.cpython-312.pyc +0 -0
  198. package/.agent/plugins/daytona/README.md +0 -89
  199. package/.agent/plugins/daytona/index.js +0 -377
  200. package/.agent/plugins/daytona/package.json +0 -12
  201. package/.agent/plugins/marknative/README.md +0 -134
  202. package/.agent/plugins/marknative/fonts/SegoeUI Emoji.ttf +0 -0
  203. package/.agent/plugins/marknative/index.js +0 -256
  204. package/.agent/plugins/marknative/package.json +0 -12
  205. package/.agent/plugins/marknative/update-readme.js +0 -134
  206. package/.agent/plugins/poster-plugin/emojis/rocket.png +0 -1
  207. package/.agent/plugins/poster-plugin/yarn.lock +0 -1007
  208. package/.agent/plugins/system-info/index.js +0 -387
  209. package/.agent/plugins/system-info/package.json +0 -4
  210. package/.agent/plugins/system-info/test.js +0 -40
  211. package/.agent/python-scripts/test_sample.py +0 -24
  212. package/.agent/skills/agent-browser/SKILL.md +0 -311
  213. package/.agent/skills/agent-browser/TEST_PLAN.md +0 -200
  214. package/.agent/skills/sysinfo/SKILL.md +0 -38
  215. package/.agent/skills/sysinfo/system-info.sh +0 -130
  216. package/.agent/skills/workflow/SKILL.md +0 -324
  217. package/.agent/weixin.json +0 -6
  218. package/.agent/workflows/email-digest.json +0 -50
  219. package/.agent/workflows/file-backup.json +0 -21
  220. package/.agent/workflows/get-ip-notify.json +0 -32
  221. package/.agent/workflows/news-aggregator.json +0 -93
  222. package/.agent/workflows/news-dashboard-v2.json +0 -94
  223. package/.agent/workflows/notification-batch.json +0 -32
  224. package/output/emoji-segoe-test-v2.png +0 -0
  225. package/output/emoji-segoe-test.png +0 -0
  226. package/output/emoji-test.png +0 -0
  227. package/output/emoji-windows-test.png +0 -0
  228. package/output/foliko-emoji-poster.png +0 -0
  229. package/output/foliko-muji-poster-final.png +0 -0
  230. package/output/foliko-muji-poster-v2.png +0 -0
  231. package/output/foliko-muji-poster.png +0 -0
  232. package/output/foliko-share.png +0 -0
  233. package/output/progress-circle-test.png +0 -0
  234. package/output/vb-agent-poster.png +0 -0
@@ -171,7 +171,14 @@
171
171
  "Bash(node -e \"const mp = require\\('./plugins/memory-plugin'\\); console.log\\('MemoryPlugin:', mp.name\\)\" 2>&1)",
172
172
  "Bash(node -c D:/Code/vb-agent/src/utils/index.js && echo \"Syntax OK\")",
173
173
  "Bash(cd \"D:/Code/vb-agent\" && node -c src/core/agent-chat.js 2>&1)",
174
- "WebFetch(domain:ai-sdk.google.com)"
174
+ "WebFetch(domain:ai-sdk.google.com)",
175
+ "Bash(cd D:/code/vb-agent && node test-multi-round.js 2>&1)",
176
+ "Bash(cd D:/code/vb-agent && node cli/bin/foliko.js chat --help 2>&1 | head -30)",
177
+ "Bash(cd D:/code/vb-agent && rm -f .agent/sessions/cli_default.json && node cli/bin/foliko.js chat -c \"你好|你好吗\" 2>&1 | head -80)",
178
+ "Bash(cd D:/code/vb-agent && rm -f .agent/sessions/cli_default.json && node cli/bin/foliko.js chat -c \"用 poster 插件制作一张招聘海报,标题是高级前端工程师,要求3年以上经验,薪资30K-50K|获取今天的科技新闻|用 bash 执行 echo '测试完成' \" 2>&1)",
179
+ "Bash(cd D:/code/vb-agent && node --check src/core/agent-chat.js && echo \"Syntax OK\")",
180
+ "Bash(cd D:/code/vb-agent && rm -f .agent/sessions/cli_default.json && node cli/bin/foliko.js chat -c \"用 poster 插件制作一张简单的海报,标题是测试海报1|获取今天的科技新闻|用 bash 执行 echo '第1轮完成'\" 2>&1)",
181
+ "Bash(cd D:/code/vb-agent && node check_orphaned.js)"
175
182
  ]
176
183
  }
177
184
  }
package/.env.example CHANGED
@@ -1,56 +1,56 @@
1
- # ========== AI Configuration ==========
2
- # 最大输出 tokens(影响 AI 回复长度)
3
- MAX_OUTPUT_TOKENS=8192
4
- # AI Provider: minimax, deepseek, openai, anthropic 等
5
- FOLIKO_PROVIDER=minimax
6
-
7
- # AI Model(如果未设置,使用 provider 默认值)
8
- # MiniMax: MiniMax-M2.7
9
- # DeepSeek: deepseek-chat, deepseek-coder 等
10
- FOLIKO_MODEL=MiniMax-M2.7
11
-
12
- # API Base URL(如果未设置,使用 provider 默认值)
13
- # MiniMax: https://api.minimaxi.com/v1
14
- # DeepSeek: https://api.deepseek.com/v1
15
- FOLIKO_BASE_URL=https://api.minimaxi.com/v1
16
-
17
- # API Key(通用,如果未设置则尝试 provider 专用 key)
18
- FOLIKO_API_KEY=sk-your-api-key
19
-
20
- # Provider 专用 API Key(可选,如果 FOLIKO_API_KEY 未设置则使用这些)
21
- DEEPSEEK_API_KEY=sk-your-deepseek-api-key
22
- MINIMAX_API_KEY=sk-your-minimax-api-key
23
-
24
- # ========== Email Configuration ==========
25
- # SMTP Settings (for sending emails)
26
- SMTP_HOST=smtp.gmail.com
27
- SMTP_PORT=587
28
- SMTP_SECURE=false
29
- SMTP_USER=your-email@gmail.com
30
- SMTP_PASS=your-app-password
31
-
32
- # IMAP Settings (for reading emails)
33
- IMAP_HOST=imap.gmail.com
34
- IMAP_PORT=993
35
- IMAP_USER=your-email@gmail.com
36
- IMAP_PASS=your-app-password
37
-
38
- # Default sender email address
39
- FROM_EMAIL=your-email@gmail.com
40
-
41
- # ========== Telegram Bot (optional) ==========
42
- TELEGRAM_BOT_TOKEN=your-telegram-bot-token
43
-
44
- # ========== Feishu Bot (optional) ==========
45
- FEISHU_APP_ID=cli_xxxxxxxxxxx
46
- FEISHU_APP_SECRET=app_secret
47
-
48
- # ========== Web Server (optional) ==========
49
- # Web 服务端口,默认 8088
50
- WEB_PORT=3000
51
-
52
- # Web 服务主机,默认 127.0.0.1
53
- WEB_HOST=127.0.0.1
54
-
55
- # 公网访问的 base URL(用于生成 webhook URL 等),不设置则使用 host:port,最好部署在docker中可以暴露自定义域名
56
- WEB_BASE_URL=https://your-domain.com
1
+ # ========== AI Configuration ==========
2
+ # 最大输出 tokens(影响 AI 回复长度)
3
+ MAX_OUTPUT_TOKENS=8192
4
+ # AI Provider: minimax, deepseek, openai, anthropic 等
5
+ FOLIKO_PROVIDER=minimax
6
+
7
+ # AI Model(如果未设置,使用 provider 默认值)
8
+ # MiniMax: MiniMax-M2.7
9
+ # DeepSeek: deepseek-chat, deepseek-coder 等
10
+ FOLIKO_MODEL=MiniMax-M2.7
11
+
12
+ # API Base URL(如果未设置,使用 provider 默认值)
13
+ # MiniMax: https://api.minimaxi.com/v1
14
+ # DeepSeek: https://api.deepseek.com/v1
15
+ FOLIKO_BASE_URL=https://api.minimaxi.com/v1
16
+
17
+ # API Key(通用,如果未设置则尝试 provider 专用 key)
18
+ FOLIKO_API_KEY=sk-your-api-key
19
+
20
+ # Provider 专用 API Key(可选,如果 FOLIKO_API_KEY 未设置则使用这些)
21
+ DEEPSEEK_API_KEY=sk-your-deepseek-api-key
22
+ MINIMAX_API_KEY=sk-your-minimax-api-key
23
+
24
+ # ========== Email Configuration ==========
25
+ # SMTP Settings (for sending emails)
26
+ SMTP_HOST=smtp.gmail.com
27
+ SMTP_PORT=587
28
+ SMTP_SECURE=false
29
+ SMTP_USER=your-email@gmail.com
30
+ SMTP_PASS=your-app-password
31
+
32
+ # IMAP Settings (for reading emails)
33
+ IMAP_HOST=imap.gmail.com
34
+ IMAP_PORT=993
35
+ IMAP_USER=your-email@gmail.com
36
+ IMAP_PASS=your-app-password
37
+
38
+ # Default sender email address
39
+ FROM_EMAIL=your-email@gmail.com
40
+
41
+ # ========== Telegram Bot (optional) ==========
42
+ TELEGRAM_BOT_TOKEN=your-telegram-bot-token
43
+
44
+ # ========== Feishu Bot (optional) ==========
45
+ FEISHU_APP_ID=cli_xxxxxxxxxxx
46
+ FEISHU_APP_SECRET=app_secret
47
+
48
+ # ========== Web Server (optional) ==========
49
+ # Web 服务端口,默认 8088
50
+ WEB_PORT=3000
51
+
52
+ # Web 服务主机,默认 127.0.0.1
53
+ WEB_HOST=127.0.0.1
54
+
55
+ # 公网访问的 base URL(用于生成 webhook URL 等),不设置则使用 host:port,最好部署在docker中可以暴露自定义域名
56
+ WEB_BASE_URL=https://your-domain.com
package/37ua31lq.png ADDED
Binary file
package/4ru0h1yo.png ADDED
Binary file
package/55c90rsx.png ADDED
Binary file